Skip to content

StrawberryFields

https://gitlab.com/acefed/strawberryfields-express
https://gitlab.com/acefed/strawberryfields-fastify

https://gitlab.com/acefed/strawberryfields-flask
https://gitlab.com/acefed/strawberryfields-fastapi

https://gitlab.com/acefed/strawberryfields-lumen
https://gitlab.com/acefed/strawberryfields-laravel

https://gitlab.com/acefed/strawberryfields-sinatra
https://gitlab.com/acefed/strawberryfields-rails

https://gitlab.com/acefed/strawberryfields-gin
https://gitlab.com/acefed/strawberryfields-django

https://zenn.dev/tkithrta/articles/78b203b30f689f

プログラミング言語、ランタイム、パッケージマネージャーは以下のリポジトリを参考にしています。

gitpod-io/workspace-images
GoogleCloudPlatform/buildpacks
cloudevents/spec
kamranahmedse/developer-roadmap

以下のパッケージは将来のバージョン用に予約されています。

  • JavaScript

HTML js-yaml pg redis bull

  • Python

Django Template Jinja2 pyyaml psycopg2 redis celery

  • PHP

Laravel Blade symfony/yaml predis/predis

  • Ruby

eRuby pg redis sidekiq

  • Go

template yaml jackc/pgx go-redis/redis RichardKnop/machinery

  • Java

org.thymeleaf/thymeleaf com.google.code.gson/gson com.fasterxml.jackson/jackson-bom org.yaml/snakeyaml org.postgresql/postgresql redis.clients/jedis
io.lettuce/lettuce-core

  • Kotlin

org.thymeleaf/thymeleaf

  • Scala

com.typesafe.play/sbt-twirl

  • C#

Razor

  • Rust

tera

Environment

  • env.sh.example
#!/bin/bash

od -vAn -tx1 -w32 -N32 /dev/urandom | tr -d ' ' >> secret.txt
echo "SECRET=$(tail -n1 secret.txt)" > .env
ssh-keygen -b 4096 -m PEM -t rsa -N '' -f id_rsa
echo "PRIVATE_KEY=\"$(cat id_rsa | sed -z 's/\n/\\n/g')\"" >> .env
  • env SECRET
$ od -vAn -tx1 -w32 -N32 /dev/urandom | tr -d ' ' > secret.txt
> powershell $x = ''; foreach($i in 1..64) { $x += (get-random -maximum 16).ToString('x') }; echo $x > secret.txt

.envファイルの使用を推奨します。.envファイルを使用しない場合は以下のコマンドをお試しください。

$ export SECRET="$(cat secret.txt)"
> powershell
> $env:SECRET="$(type secret.txt)"
> set /p SECRET= < secret.txt
  • env PRIVATE_KEY
$ ssh-keygen -b 4096 -m PEM -t rsa -N '' -f id_rsa
> ssh-keygen -b 4096 -m PEM -t rsa -N "" -f id_rsa

.envファイルの使用を推奨します。.envファイルを使用しない場合は以下のコマンドをお試しください。

$ export PRIVATE_KEY="$(cat id_rsa)"
> powershell
> $env:PRIVATE_KEY="$(type id_rsa)"
> set /p PRIVATE_KEY= < id_rsa

StrawberryFields Express

Node.js 16 or Node.js 14
npm 8.1
Yarn 1.22

$ node -v
$ npm -v
$ yarn -v
  • init command
$ npm i
  • local command
  • dev command
  • prod command
$ npm start

StrawberryFields Fastify

Node.js 16 or Node.js 14
npm 8.1
Yarn 1.22

$ node -v
$ npm -v
$ yarn -v
  • init command
$ npm i
  • local command
  • dev command
  • prod command
$ npm start

StrawberryFields Flask

Python 3.8 or Python 3.10
pip 20.0.2
Pipenv 2022.1.8

$ python -V
$ pip -V
$ pipenv --version
  • init command
$ pip install -r requirements.txt
  • local command
$ gunicorn app:app -b 127.0.0.1:8080
$ flask run -h 127.0.0.1 -p 8080
  • dev command
$ gunicorn app:app -b 0:8080
$ flask run -h 0.0.0.0 -p 8080
  • prod command
$ gunicorn app:app

StrawberryFields FastAPI

Python 3.8 or Python 3.10
pip 20.0.2
Pipenv 2022.1.8

$ python -V
$ pip -V
$ pipenv --version
  • init command
$ pip install -r requirements.txt
  • local command
$ uvicorn app:app --host 127.0.0.1 --port 8080
  • dev command
$ uvicorn app:app --host 0.0.0.0 --port 8080
  • prod command
$ uvicorn app:app

StrawberryFields Lumen

PHP 7.4 or PHP 8.1
Composer 2.2

$ php -v
$ composer -V
  • init command
$ composer i
$ php -r 'file_exists(".env") || copy(".env.example", ".env");'
  • local command
$ php -S 127.0.0.1:8080 -t public public/index.php
  • dev command
$ php -S 0.0.0.0:8080 -t public public/index.php
  • prod command
$ vendor/bin/heroku-php-nginx public

以下のコマンドはすでに実行済みのため必要ありません。

$ composer create-project laravel/lumen strawberryfields_lumen
$ composer require guzzlehttp/guzzle

以下のファイル作成およびコード編集を行っています。

.gitlab-ci.yml
.gitpod.yml
LICENSE
Procfile
app/Http/Controllers/Followers.php
app/Http/Controllers/Following.php
app/Http/Controllers/Home.php
app/Http/Controllers/Inbox.php
app/Http/Controllers/Outbox.php
app/Http/Controllers/SSecret.php
app/Http/Controllers/UName.php
app/Http/Controllers/Webfinger.php
public/public/as.png
public/public/au.png
public/public/favicon.ico
public/public/favicon.png
public/public/logo.png

すでに作成されている以下のファイルのコード編集を行っています。

.env.example
.gitignore
README.md
composer.json
app/Exceptions/Handler.php
app/Http/Controllers/Controller.php
bootstrap/app.php
public/index.php
routes/web.php

また.env.exampleの環境変数を

APP_ENV=local
APP_DEBUG=true

から

APP_ENV=production
APP_DEBUG=false

へ変更しています。

Commits Lumen

  • 7790b596 Goでサーバー起動を行えるコミットです。
  • 0520b114 composer create-project laravel/lumenを行った後、シークレットファイルの削除を行ったコミットです。Goでサーバー起動を行えますがLumenのサーバー起動時にエラーが発生します。
  • cdf3aa13 Goを削除したのち設定ファイルの編集とシークレットファイルの自動生成コマンドを追加したコミットです。Lumenでサーバー起動を行えます。
  • ac8761e4 以降composer require guzzlehttp/guzzleを行った後、StrawberryFields Lumenの開発を行っています。

StrawberryFields Laravel

PHP 7.4 or PHP 8.1
Composer 2.2

$ php -v
$ composer -V
  • init command
$ composer i
$ php -r 'file_exists(".env") || copy(".env.example", ".env");'
$ php artisan key:generate --ansi
  • local command
$ php artisan serve --host 127.0.0.1 --port 8080
  • dev command
$ php artisan serve --host 0.0.0.0 --port 8080
  • prod command
$ vendor/bin/heroku-php-nginx public

以下のコマンドはすでに実行済みのため必要ありません。

$ composer create-project laravel/laravel strawberryfields_laravel
$ php artisan make:controller Home
$ php artisan make:controller UName
$ php artisan make:controller Inbox
$ php artisan make:controller Outbox
$ php artisan make:controller Following
$ php artisan make:controller Followers
$ php artisan make:controller SSecret
$ php artisan make:controller Webfinger

以下のファイル作成およびコード編集を行っています。

.gitlab-ci.yml
.gitpod.yml
LICENSE
Procfile
resources/views/errors/400.blade.php
resources/views/errors/404.blade.php
resources/views/errors/405.blade.php
resources/views/errors/500.blade.php
public/public/as.png
public/public/au.png
public/public/favicon.ico
public/public/favicon.png
public/public/logo.png

すでに作成されている以下のファイルのコード編集を行っています。

.env.example
.gitignore
README.md
composer.json
app/Http/Controllers/Controller.php
app/Http/Controllers/Followers.php
app/Http/Controllers/Following.php
app/Http/Controllers/Home.php
app/Http/Controllers/Inbox.php
app/Http/Controllers/Outbox.php
app/Http/Controllers/SSecret.php
app/Http/Controllers/UName.php
app/Http/Controllers/Webfinger.php
app/Http/Middleware/TrustProxies.php
app/Http/Middleware/VerifyCsrfToken.php
routes/web.php

また.env.exampleの環境変数を

APP_ENV=local
APP_DEBUG=true

から

APP_ENV=production
APP_DEBUG=false

へ変更しています。

Commits Laravel

  • 0fc4f7f1 Goでサーバー起動を行えるコミットです。
  • 69269f0f composer create-project laravel/laravelを行った後、シークレットファイルの削除を行ったコミットです。Goでサーバー起動を行えますがLaravelのサーバー起動時にエラーが発生します。
  • b35af2b1 Goを削除したのち設定ファイルの編集とシークレットファイルの自動生成コマンドを追加したコミットです。Laravelでサーバー起動を行えます。
  • 5c45181f 以降StrawberryFields Laravelの開発を行っています。

StrawberryFields Sinatra

Ruby 2.7 or Ruby 3.0
gem 3.1
Bundler 2.3

$ ruby -v
$ gem -v
$ bundle -v
  • init command
$ bundle install
  • local command
$ bundle exec rackup config.ru -o 127.0.0.1 -p 8080
  • dev command
$ bundle exec rackup config.ru -o 0.0.0.0 -p 8080
  • prod command
$ bundle exec rackup config.ru

StrawberryFields Rails

Ruby 2.7 or Ruby 3.0
gem 3.1
Bundler 2.3

$ ruby -v
$ gem -v
$ bundle -v
  • init command
$ bundle install
$ export SECRET_KEY_BASE="$(bundle exec rake secret)"
  • local command
$ RAILS_ENV=production rails s -b 127.0.0.1 -p 8080
  • dev command
$ RAILS_ENV=production rails s -b 0.0.0.0 -p 8080
  • prod command
$ bundle exec puma -C config/puma.rb

以下のコマンドはすでに実行済みのため必要ありません。

$ gem install rails dotenv-rails http
$ rails new strawberryfields_rails --minimal
$ rails g controller Home
$ rails g controller UName
$ rails g controller Inbox
$ rails g controller Outbox
$ rails g controller Following
$ rails g controller Followers
$ rails g controller SSecret
$ rails g controller Webfinger

以下のファイル作成およびコード編集を行っています。

.env.example
.gitlab-ci.yml
.gitpod.yml
LICENSE
Procfile
public/400.html
public/405.html
public/public/as.png
public/public/au.png
public/public/favicon.ico
public/public/favicon.png
public/public/logo.png

すでに作成されている以下のファイルのコード編集を行っています。

.gitignore
Gemfile
README.md
app/controllers/application_controller.rb
app/controllers/followers_controller.rb
app/controllers/following_controller.rb
app/controllers/home_controller.rb
app/controllers/inbox_controller.rb
app/controllers/outbox_controller.rb
app/controllers/s_secret_controller.rb
app/controllers/u_name_controller.rb
app/controllers/webfinger_controller.rb
config/application.rb
config/puma.rb
config/routes.rb
config/environments/development.rb

またconfig/puma.rbの変数を

port ENV.fetch('PORT') { 3000 }
environment ENV.fetch('RAILS_ENV') { 'development' }

から

port ENV.fetch('PORT') { 8080 }
environment ENV.fetch('RAILS_ENV') { 'production' }

へ変更しています。

Commits Rails

  • 057c68e0 Goでサーバー起動を行えるコミットです。
  • d27f6831 gem install railsrails new strawberryfields_rails --minimalを行った後、シークレットファイルの削除を行ったコミットです。Goでサーバー起動を行えますがRailsのサーバー起動時にエラーが発生します。
  • 0829e225 Goを削除したのちgem install dotenv-railsを行った後、設定ファイルの編集とシークレットファイルの自動生成コマンドを追加したコミットです。Railsでサーバー起動を行えます。
  • e181f049 以降gem install httpを行った後、StrawberryFields Railsの開発を行っています。

StrawberryFields Gin

Go 1.18 or Go 1.16

$ go version
  • init command
$ go mod vendor && go clean -modcache
  • local command
  • dev command
$ go run main.go
$ go build && ./strawberryfields-gin
  • prod command
$ bin/strawberryfields-gin

StrawberryFields Django

Python 3.8 or Python 3.10
pip 20.0.2
Pipenv 2022.1.8

$ python -V
$ pip -V
$ pipenv --version
  • init command
$ pip install -r requirements.txt
$ python manage.py migrate
$ export SECRET_KEY="$(python -c \"from django.core.management import utils; print(utils.get_random_secret_key())\")"
  • local command
$ python manage.py runserver 127.0.0.1:8080 --insecure
  • dev command
$ python manage.py runserver 0:8080 --insecure
  • prod command
$ gunicorn strawberryfields_django.wsgi

以下のコマンドはすでに実行済みのため必要ありません。

$ pip install Django gunicorn python-dotenv cryptography requests
$ django-admin startproject strawberryfields_django
$ python manage.py startapp app

以下のファイル作成およびコード編集を行っています。

.gitignore
.gitlab-ci.yml
.gitpod.yml
.env.example
LICENSE
Procfile
README.md
requirements.txt
runtime.txt
secret.py

すでに作成されている以下のファイルのコード編集を行っています。

app/views.py
strawberryfields_django/settings.py
strawberryfields_django/urls.py

またstrawberryfields_django/settings.pyの変数を

DEBUG = True

から

DEBUG = False

へ変更しています。

Commits Django

  • 4d500aca Goでサーバー起動を行えるコミットです。
  • 64fdb014 最初にpip install Django gunicornを行った後、django-admin startproject strawberryfields_djangopython manage.py startapp appを行い、シークレットファイルの削除を行ったコミットです。Goでサーバー起動を行えますがDjangoのサーバー起動時にエラーが発生します。
  • 1d7374c1 Goを削除したのちpip install python-dotenvを行った後、設定ファイルの編集とシークレットファイルの自動生成コマンドを追加したコミットです。Djangoでサーバー起動を行えます。
  • bfc1da52 以降pip install cryptography requestsを行った後、StrawberryFields Djangoの開発を行っています。

StrawberryFields Spark

[RC]

Java 11 or Java 17
Maven 3.8

$ java --version
$ mvn -v

com.sparkjava/spark-core

StrawberryFields Spring

[RC]

Java 11 or Java 17
Gradle 7.4

$ java --version
$ gradle -v

org.springframework.boot/spring-boot-dependencies

StrawberryFields Ktor

[Beta]

Kotlin 1.6 or Kotlin 1.5
Gradle 7.4

$ 

StrawberryFields Play

[Beta]

Scala 3.1 or Scala 2.13
sbt 1.6

$ 

StrawberryFields .NET

[Alpha]

C# 10 or C# 5
NuGet 6.0

$ 

StrawberryFields Actix

[Alpha]

Rust 1.56
Cargo 1.56

$ 

License

StrawberryFieldsはMIT Licenseです。
原文: opensource.org
日本語参考訳: licenses.opensource.jp

以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。
上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。

StrawberryFields Expressのライセンス記載例は以下のとおりです。

StrawberryFields Express: https://gitlab.com/acefed/strawberryfields-express (MIT License)
StrawberryFields Express: https://gitlab.com/acefed/strawberryfields-express
Copyright (c) 2020 Acefed
MIT License: https://opensource.org/licenses/MIT
[![StrawberryFields Express: https://gitlab.com/acefed/strawberryfields-express (MIT License)](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAgMAAAAOFJJnAAAACVBMVEUAAAD/gMAAgEDtU8VDAAAAAXRSTlMAQObYZgAAAGVJREFUGNNNy7ENwDAIRNFLkRG8DyNQ4H0yikuLKcMRnxQkxCs+qLlmDXELo24Qk1DiTIRBGJODq6FkKgklocQrEYa+5x+ZaITguT+YgFyNEBz5NEwAEkQIDuyGCbWLCMFrH8IOXpXKN9kG+N1kAAAAAElFTkSuQmCC)](https://gitlab.com/acefed/strawberryfields-express)

このような記載例の場合、

StrawberryFields Express: https://gitlab.com/acefed/strawberryfields-express

の代わりに、

StrawberryFields: https://acefed.gitlab.io/strawberryfields

を使用することができます。

https://gitlab.com/acefed
https://acefed.gitlab.io/
https://tkithrta.gitlab.io/