Flaskの.gitignoreはどうすればいいのか?
2024年10月11日
こんにちは!
今回の記事では、Flaskの.gitignoreはどのようにすればいいのかについて解説します。
.gitignoreとは、Gitで追跡する必要のないファイルやディレクトリを指定します。
これにより、不要なファイルをリポジトリに含めることを防ぎ、プロジェクトのクリーンな管理を保ちます。
Flaskでgit管理をする方はぜひ参考にしてください。また、環境やアプリケーションの性質によっては、.gitignoreの内容は変わるので、ご自身の環境に合ったファイルを作りましょう!
.gitignoreとは?
まずは、.gitignoreについて解説します。
.gitignoreの概要
.gitignore は、Gitのバージョン管理システムで特定のファイルやディレクトリを無視するための設定ファイルです。
リポジトリのルートディレクトリや、必要に応じてサブディレクトリに .gitignore ファイルを作成し、その中に無視したいファイルやフォルダのパターンを記述します。
たとえば、以下のような .gitignore ファイルを作成すると、.log 拡張子のファイルや venv/ というディレクトリを無視するように設定できます。
# ログファイルを無視
*.log
# 仮想環境のディレクトリを無視
venv/
.gitignoreの書き方
.gitignoreはGit管理を無視したいファイル名を記述します。例えば、hoge.txtファイルを無視したい場合は以下のように記述します。
hoge.txt
ディレクトリ名を指定すると、ディレクトリ全体とその中に含まれるすべてのファイル・サブディレクトリを無視します。以下の例では、logsというディレクトリとその中のすべてのファイルが無視されます。ディレクトリ名の後に / を付けることで、ディレクトリと認識されます。
logs/
拡張子を指定すると、その拡張子を持つすべてのファイルを無視できます。*は任意の文字列を表す記号です。
*.log
どの階層に存在していても特定の名前を持つディレクトリを無視する場合は、**
を使用します。
**/node_modules/
.gitignoreは上記のように記述します。
Flaskのディレクトリ構造
Flaskプロジェクトのディレクトリ構造は、アプリケーションの規模や目的によって異なりますが、一般的なFkaskの構造の例を以下に示します。
Flaskのディレクトリ構造の例
Flaskのディレクトリ構造の例はこちらです。
my_flask_app/
├── .gitignore # Git無視リスト
├── .env # 環境変数ファイル
├── requirements.txt # 依存パッケージリスト
├── config.py # 設定ファイル
├── run.py # アプリケーションのエントリーポイント
├── app/ # アプリケーションのメインディレクトリ
│ ├── __init__.py # アプリケーションの初期化ファイル
│ ├── routes.py # ルーティング定義ファイル
│ ├── models.py # データベースモデル定義ファイル
│ ├── templates/ # HTMLテンプレートを格納するディレクトリ
│ ├── static/ # 静的ファイル(CSS, JavaScript, 画像など)
│ ├── forms.py # フォーム定義
│ ├── extensions.py # 拡張機能の設定
│ └── blueprints/ # サブモジュール(Blueprint)ディレクトリ
│ └── auth.py # 認証用Blueprint
├── instance/ # アプリケーションの設定・データベース用ディレクトリ
│ └── sample.db # sqliteのデータファイル
└── venv/ # 仮想環境ディレクトリ(通常は.gitignoreに追加)
ディレクトリやファイルの解説
次に上記のディレクトリやファイルの役割を説明します。
ディレクトリ / ファイル | 役割 |
---|---|
my_flask_app/ | プロジェクト全体を含むルートディレクトリ。 |
.gitignore | Gitで無視するファイルやディレクトリを指定する設定ファイル。 |
.env | 環境変数(APIキー、データベース接続情報など)を定義するファイル。 |
requirements.txt | Flaskやその依存パッケージを定義するファイル。 |
config.py | アプリケーションの設定ファイル。 |
run.py | アプリケーションのエントリーポイント(起動スクリプト)。 |
app/ | アプリケーション全体のソースコードを含むメインディレクトリ。 |
app/init.py | Flaskアプリケーションの初期化処理を行う |
app/routes.py | URLルーティングと各ルートの処理を定義する。 |
app/models.py | データベースのモデル(テーブル定義)を記述するファイル。 |
app/templates/ | HTMLテンプレートファイルを格納するディレクトリ。 |
app/static/ | 静的ファイル(CSS, JavaScript, 画像など)を格納するディレクトリ。 |
app/forms.py | フォームの定義を行うファイル。 |
app/extensions.py | Flaskの拡張機能(例: Flask-Login, Flask-Mail)を設定するファイル。 |
app/blueprints/ | 複数のモジュール(Blueprint)を格納するディレクトリ。 |
instance/ | 環境固有の設定やローカルデータベースを格納するディレクトリ。 |
venv/ | 仮想環境のディレクトリ。Pythonの依存パッケージ(Flaskなど)をインストールする場所。 |
.gitignoreで設定する必要があるディレクトリ、ファイル
.gitignoreを設定する理由は、リポジトリ管理を効率化し、機密情報や不要なファイルを含めないようにするためです。次に紹介するディレクトリやファイルは.gitignoreに設定することをお勧めします。
instance/ディレクトリ
instance/ には環境固有の設定ファイルやデータベースファイルが含まれます。
これらは開発環境や実行環境ごとに異なるため、他の開発者に影響を与えないようにGit管理から除外します。
開発用の設定が本番環境に流用されると、セキュリティリスクや設定の不整合が発生する可能性があるからです。
.envファイル
.env
ファイルにはデータベース接続情報、APIキー、セッションキーなどの機密情報が含まれます。
これをリポジトリに含めると、誤って公開した場合に機密情報の流出につながる可能性があります。
venv/ディレクトリ
仮想環境ディレクトリには、Pythonの依存パッケージや実行環境の情報が格納されます。
これらは開発者ごとに異なる環境設定(OSの違い、Pythonのバージョンの違いなど)が存在するため、リポジトリに含めると互換性の問題が発生しやすくなります。
キャッシュや一時ファイル
キャッシュや一時ファイルは、pycache/, .DS_Store, Thumbs.dbといったファイルです。
これらのファイルは、PythonやOSによって自動生成されるキャッシュファイルです。ソースコードや設定とは関係がなく、Gitによる追跡は必要はありません。
.gitignoreのサンプル
ここで、.gitignoreのサンプルを公開します。ご自身の環境に合わせて追加、編集してください。
# Pythonのキャッシュや一時ファイル
__pycache__/
*.py[cod]
*.pyo
# 環境変数設定ファイル
.env
*.env
# 開発用の仮想環境
venv/
env/
# IDEやエディタの設定ファイル
.vscode/
.idea/
# データベースファイル
*.db
*.sqlite3
instance/
migrations/
# ログファイル
*.log
# OS固有の隠しファイル
.DS_Store
Thumbs.db
#テスト系
.pytest_cache/
.coverage
htmlcov/
まとめ
今回の記事では、Flaskプロジェクトでの .gitignore の設定方法について解説しました。
.gitignore とは、Gitで追跡する必要がないファイルやディレクトリを指定し、不要なファイルをリポジトリに含めないための設定ファイルです。Flaskプロジェクトでは、環境変数ファイル(.env)、仮想環境ディレクトリ(venv/)、キャッシュファイル(pycache/)、データベースファイル(instance/)などを .gitignore に含めることが推奨されます。
これにより、機密情報の流出や環境の不整合を防ぎ、プロジェクトの管理を効率化します。
今回の記事を参考に、Flaskのコードを適切に管理しましょう。
ここまでお読みいただきありがとうございました。
Pythonの基礎から応用まで学べる
Python WebAcademy
Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。
無料で試すインフラの学習はInfraAcademy
おすすめの記事