Skip to content

traPtitech/trap-collection-server

Repository files navigation

trap-collection-server

codecov OpenAPI(v1) OpenAPI(v2) go report Ask DeepWiki

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 で、Adminerhttp://localhost:8081 で開けるようになります。

task dev

DBのデータ削除

以下のコマンドを実行することでDBのデータを削除できます。

task clean:db

テストの実行

GitHub Actionsで走っているのと同様のテストを以下のコマンドで実行できます。 ログの停止からtestのログが流れ始めるまで20秒程度時間が空く点に注意してください。 DB に関わるテストは、Dockerが必要です。

task test

task testでは全てのテストが実行されます。開発中に関数ごとのテストを実行したい場合は、コマンドでテスト対象の関数を指定して実行することもできますが、エディタの機能を使うとよいです。 例えば VSCode では、エディタのテスト関数の上にある「run test」ボタンやコマンドパレットなどから実行できます。

lint の実行

golangci-lint を使ってコードを静的解析し、良くないコードが無いかをチェックすることができます。 古いコードではgolangci-lintのルールに従っていないものもありますが、それらを直す必要はありません。 新しいコードを書くときは、golangci-lintのルールに従うようにしてください。 mainブランチとの差分(自分が書いたコード)の中に良くないコードが無いかを以下のコマンドでチェックできます。

task lint

GitHub Actionsでもgolangci-lintが実行されています。こちらもmainブランチとの差分に良くないコードが無いかをチェックしていますが、CIのログ出力には全てのエラーが出力されるため、注意してください。PRに含まれる部分だけ修正すればよいです。

DBスキーマの再生成

以下のコマンドでDBスキーマのドキュメント(docs/db_schema)を再生成できます。

task tbls

マイグレーションについて

docs/migration.mdを参照してください。

API スキーマについて

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)。ただし、このドキュメントは最新のものを参照しているとは限らないので注意してください。

About

内製ゲーム管理システム traP Collection サーバーアプリケーション

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 12

Languages