現在作者によるメンテナンス対象の言語は Ruby, Go, Python の3つのみです。 Node.js(TypeScript), Crystal, Scala は参考実装が残っていますが、OSやミドルウェアのバージョンアップによる外部環境の変化によって現在は動かない状況です。 メンテナンス外の言語の参考実装の修正や、新規言語での参考実装追加は歓迎です。
メンテナンス外の言語の修正や新規言語の追加時に変更すべき箇所は以下となります。 すべての箇所への対応が難しい場合には部分的な変更でも歓迎です。
admin/ami/scripts/base.sh
: 言語処理系のインストール処理を追加admin/ami/webapp.sh
: WebAppの実行に必要なライブラリのインストール処理を追加admin/.bashrc
: 必要に応じて環境変数を追加doc/*
: アプリケーションの起動方法を追記docker/app/<lang>
: 言語処理系のインストールとWebAppの実行に必要なライブラリのインストール処理を記述webapp/<lanb>
: アプリケーションの参考実装を追加Makefile
: サポート言語を列挙している部分に追記run.sh
: アプリケーションの起動方法を追記
以下、参考実装を追加する際に気をつけて頂きたい点です。
- アプリケーションがリクエストを受け取ってからレスポンスを返すまでの処理/ロジックは変更しない
- 各言語の習慣に寄せるために既存の参考実装とコードの見通しが変わってしまうことは問題ない
- 各言語の習慣に寄せたために(その変更前と比べて)初期スコアが1.5倍以上に変化してしまう場合はその変更は取り込まず、既存の参考実装に寄せる
このレポジトリが管理するものが増えてきたので、なにがどこにあるか書いておきます。
.
├── admin # 出題側のリソース
│ ├── ami # PackerでAMIの作成 (手動)
│ ├── benchmarker # ベンチマーカーの実装
├── contest # コンテストのイベント実施用のリソース
│ ├── scoreboard # コンテスト用スコアボードの実装. Terraformから参照されてS3にアップロードされる
│ └── terraform # コンテスト用のインフラリソース準備
├── doc # 参加者向けのドキュメント
├── docker # ローカルでISHOCONに取り組む & CIで使う用のDocker Image
│ ├── app
│ └── benchmarker
└── webapp # 競技のアプリケーション実装