traPのゲームランチャーtraP Collectionのサーバーサイドです。
- Go (最新のもの)
- Docker
- Task
- タスクランナー
- Atlas
- DBマイグレーション用のツール
- マイグレーションの詳細は migration.md を参照してください。
- golangci-lint
- 静的解析用のツール
必要なものをインストールしたら、次に以下のコマンドを実行すると、Goの依存関係がインストールされ、コードが生成されます。
task
src/service/mock
ディレクトリなどにファイルが生成されていればよいです。
まず、traQ BOT Consoleに従い、
traQのOAuthクライアントを作成します。リダイレクト先URLはhttp://localhost:8080/callback
、スコープは「読み取り」、に設定してください。
次に、docker/dev/.env
ファイルに以下のように書きます。
CLIENT_ID={{traQのClientのClientID}}
CLIENT_SECRET={{traQのClientのClientSecret}}
最後に以下のコマンドを実行することで開発環境がポート3000番で起動します。 また、管理画面のWeb UIをhttp://localhost:8080 で、Adminerをhttp://localhost:8081 で開けるようになります。
task dev
以下のコマンドを実行することでDBのデータを削除できます。
task clean:db
GitHub Actionsで走っているのと同様のテストを以下のコマンドで実行できます。 ログの停止からtestのログが流れ始めるまで20秒程度時間が空く点に注意してください。 DB に関わるテストは、Dockerが必要です。
task test
task test
では全てのテストが実行されます。開発中に関数ごとのテストを実行したい場合は、コマンドでテスト対象の関数を指定して実行することもできますが、エディタの機能を使うとよいです。
例えば VSCode では、エディタのテスト関数の上にある「run test」ボタンやコマンドパレットなどから実行できます。
golangci-lint を使ってコードを静的解析し、良くないコードが無いかをチェックすることができます。
古いコードではgolangci-lintのルールに従っていないものもありますが、それらを直す必要はありません。
新しいコードを書くときは、golangci-lintのルールに従うようにしてください。
main
ブランチとの差分(自分が書いたコード)の中に良くないコードが無いかを以下のコマンドでチェックできます。
task lint
GitHub Actionsでもgolangci-lintが実行されています。こちらもmainブランチとの差分に良くないコードが無いかをチェックしていますが、CIのログ出力には全てのエラーが出力されるため、注意してください。PRに含まれる部分だけ修正すればよいです。
以下のコマンドでDBスキーマのドキュメント(docs/db_schema
)を再生成できます。
task tbls
docs/migration.mdを参照してください。
OpenAPI を使っています。APIスキーマは、 docs/openapi/v2.yaml に書かれており、このファイルを元に src/handler/v2/openapi 以下にコードが生成されます。 また、OpenAPI スキーマのドキュメントは traP API ドキュメント で参照できます。
アプリの中で出てくる概念(game, editionなど)の定義やディレクトリ構成の説明は、部内のwikiの他、.github/copilot-instructions.md にも書かれています。
DeepWiki というサービスでAIによって生成されたドキュメントを閲覧し、AIに質問することもできます(https://deepwiki.com/traPtitech/trap-collection-server)。ただし、このドキュメントは最新のものを参照しているとは限らないので注意してください。