テクノロジー

.gitignoreファイルについて【備忘録】

.gitignoreとは

1.不要なファイルをGitの管理対象から除外

# 例:
/node_modules     # 依存パッケージ(数百MB以上になることも)
/.next           # ビルドファイル
.DS_Store        # システムファイル

2.セキュリティの保護

# 機密情報を含むファイル
.env.local
.env
*.pem           # 証明書ファイル

3.主な目的

  • リポジトリサイズの肥大化防止
  • 機密情報の流出防止
  • チーム開発での不要なコンフリクト※防止
  • ビルド生成物の重複管理防止

4.除外すべきファイルの例

  • 一時ファイル(*.log, *.tmp)
  • IDE設定(.vscode/, .idea/)
  • キャッシュ(.cache/)
  • 個人設定ファイル
  • ビルド成果物

5.メリット

  • Gitリポジトリの軽量化
  • プッシュ/クローン時間の短縮
  • セキュリティリスクの低減
  • 開発環境の整理

公式URL

https://docs.github.com/ja/get-started/getting-started-with-git/ignoring-files

local env filesについて

.env # すべての.env.*.localファイルをカバー
.env*.local #基本的な開発環境
.env.development.local #開発環境特有の設定が必要な場合
.env.test.local #本番環境特有の設定が必要な場合
.env.production.local #テスト環境特有の設定が必要な場合

このブログサイトを例に出すと、

  • microCMSを使用している
  • Cloudflare Pagesでホスティング
  • 個人開発

この場合、.env.localだけで十分。他の環境変数ファイルは、以下のような特別なニーズがある場合のみ作成する

  • 開発環境と本番環境でAPIエンドポイントを分ける
  • テスト用の別環境を用意する
  • 環境ごとの異なる設定が必要
  • 将来的にチーム開発に移行する可能性がある

注意点

  • 必要に応じて.env.exampleを作成して、環境変数の例を共有する

    作成する理由:セキュリティ対策、チーム開発時他の開発者が必要な環境変数を理解できる、新しいメンバーの開発環境のセットアップを容易にする

.env.localと.env.exampleの違い

  • .env.local: 実際の環境変数と秘密鍵を含む(非公開)
  • .env.example: 環境変数の「形式」のみを示す(公開可能)

.env.exampleの使い方

# 新しい開発者が行う手順
 cp .env.example .env.local # .env.exampleをコピー
# その後、.env.localに実際の値を設定

※コンフリクト

  • コンフリクト(Conflict)とは、同じファイルの同じ部分が複数の開発者によって異なる変更をされたときに発生する衝突やGitが自動的にマージ(統合)できない状態のこと
コンフリクトが発生する例
// 開発者Aの変更
function greeting() {
return "こんにちは";
}

// 開発者Bの変更(同じ箇所)
function greeting() {
return "Hello";
}

コンフリクトが発生しやすい状況

  • 複数人が同じファイルを同時に編集
  • ブランチの統合時(マージ時)
  • プル(pull)時に自分の変更と他人の変更が競合

防止方法

  • 定期的にgit pullで最新コードを取得
  • 機能ごとに別ブランチで作業
  • チーム内でファイル編集の担当を分ける
  • コミュニケーションを密にとる

解決方法

  • コンフリクトマーカー(<<<<<<<, =======, >>>>>>>)を確認
  • 両方の変更を確認し、最終的にどうするか決める
  • マーカーを削除し、正しいコードに修正
  • 変更をコミット

これらの知識は、特にチーム開発時に重要になる