はじめに
このドキュメントでは、プロジェクトのディレクトリ構成と各ファイル・フォルダの役割について説明します。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
プロジェクトを理解しやすくし、スムーズに開発を進めるためのガイドラインとして活用してください。
書こうと思ったきっかけ
このプロジェクトにはさまざまなディレクトリとファイルが含まれており、それぞれの役割を明確にすることで、新しく参加する開発者やチーム内のメンバーがより簡単にコードベースを理解できるようにするためです。
実際のリポジトリ
ディレクトリ / ファイルの概要
1. CI/CD 関連
.github/workflows/
GitHub Actions の設定ファイルを管理するディレクトリ。CI/CD(継続的インテグレーション・デリバリー)の設定を記述し、テストやデプロイの自動化を行う。
2. 認証・データベース関連
auth/
認証関連のロジックを管理。ユーザーのログイン・ログアウト処理や JWT(JSON Web Token)の管理などが含まれる。
db/
データベースの操作に関する処理を管理。DB接続やクエリ実行のヘルパー関数を実装する。
migrate/
データベースのマイグレーションスクリプトを格納。スキーマの変更や初期データの投入などを行う。
model/
データベースのモデル定義を格納。各テーブルの構造を Go の Struct で定義し、ORM(Object-Relational Mapping)として利用する。
repository/
データベースアクセスのリポジトリパターンを実装。DBとのやり取りを統一し、コードの可読性を向上させる。
3. API・ルーティング関連
handler/
API のエンドポイント処理を実装。各ルートのリクエストを受け取り、データの取得・加工・レスポンスを返す。
router/
ルーティング設定を管理。エンドポイントごとに適切な handler
を紐づける。
4. 設定・構成ファイル
.air.toml
air
のホットリロード設定ファイル。開発時にコードの変更を検知し、自動でサーバーをリロードするために使用。
.gitignore
Git の無視ファイルリスト。不要なファイル(node_modules
、env
ファイル、ログファイルなど)を Git 管理から除外するために使用。
Dockerfile.dev
開発環境用の Dockerfile。開発時に必要な依存関係を含めたコンテナイメージを作成する。
Dockerfile.prod
本番環境用の Dockerfile。軽量でセキュアな本番用コンテナイメージを作成する。
docker-compose.yml
Docker のコンテナ構成を定義するファイル。複数のサービス(アプリ、DB、キャッシュなど)を一括で管理できる。
Makefile
make
コマンドを使用してビルド・実行を自動化する設定。make run
などのコマンドで簡単に開発環境を構築可能。
5. Go 言語関連
go.mod
Go モジュール管理ファイル。プロジェクトの依存関係を管理し、適切なバージョンのパッケージを使用できるようにする。
go.sum
Go の依存関係をロックするファイル。プロジェクトの再現性を確保するために使用。
server.go
アプリケーションのメインエントリーポイント。サーバーの起動、ルーティングの設定、ミドルウェアの設定などを実装。
6. その他
phpmyadmin/sessions/
phpMyAdmin のセッション管理を行うディレクトリ(詳細不明)。
skill-typing-back/
作成したアプリケーションのディレクトリ。バックエンドのロジックや設定を含む可能性がある。
README.md
プロジェクトの概要、セットアップ手順、使用方法を記載。新しくプロジェクトに参加する開発者向けの情報を提供。
まとめ
このプロジェクトは、Go 言語を使用した Web アプリケーション であり、Docker を活用したコンテナ環境 を構築し、GitHub Actions で CI/CD を実現 する構成になっています。
-
バックエンド開発 →
auth/
,handler/
,repository/
,server.go
-
データベース関連 →
db/
,migrate/
,model/
-
設定・CI/CD →
.github/workflows/
,.air.toml
,Dockerfile.prod
,docker-compose.yml
-
開発環境 →
Dockerfile.dev
,Makefile
この構成を理解することで、プロジェクトに貢献しやすくなります。
本ドキュメントを参考にしながら、各ファイルの役割を把握し、効率的に開発を進めてください。