Pythonバイブコーディング講座 — Part 4
requirements.txt で環境を残す
Part 3 までで「自分のPC」では解析が動くようになりました。次に大事なのは、その環境を第三者(共著者・査読者・将来の自分)が再現できる形で残すことです。Pythonでは requirements.txt という1つのテキストファイルに、使ったライブラリとそのバージョンを書き出しておくのが標準的なやり方です。このパートでは、その作り方と再現側の手順を解説します。
Part 1 で説明したとおり、Pythonコードは 「Pythonバージョン × ライブラリのバージョン群」の組み合わせが揃って初めて動きます。あなたの環境で pandas 2.2.0 を使って書いたコードは、pandas 1.5.0 しか持たない相手の環境では動かない可能性があります。
requirements.txt は、あなたが使ったライブラリとそのバージョンを1行ずつ書き出したテキストファイルです。このファイルがあれば、受け取った相手は 1コマンドで全く同じバージョンのライブラリ群をインストール できます。
pandas==2.2.0
openpyxl==3.1.2
matplotlib==3.8.2
numpy==1.26.3
seaborn==0.13.1
Part 2 で作った仮想環境(.venv)に入っている状態(アクティベート済みの状態)で、ターミナルからコマンドを実行します。
VSCodeでターミナルを開いて(上部メニュー「ターミナル → 新しいターミナル」)、次のいずれかを実行:
・Windows(PowerShell):.venv\Scripts\Activate.ps1
・Windows(Command Prompt):.venv\Scripts\activate.bat
・Mac / Linux:source .venv/bin/activate
プロンプトの先頭に (.venv) が付いていれば、仮想環境に入っている状態です。
仮想環境に入ったら、次のコマンドを実行します。
pip freeze > requirements.txt
コマンドが正常に終わると、フォルダの直下に requirements.txt というファイルが新たにできます。中身を開くと、現在の仮想環境にインストールされている全ライブラリとバージョンが一覧で書かれているはずです。
my_first_analysis/
├── .venv/
├── analysis.ipynb
├── sample_data.xlsx
├── results/
└── requirements.txt # ← 新しくできた
解析を進めて新しいライブラリをインストールしたら、requirements.txt も更新が必要です。最後にもう1回 pip freeze > requirements.txt を実行する習慣をつけましょう。
共著者や査読者があなたの解析を再現するには、あなたが渡したフォルダ一式と、その中の手順説明があれば十分です。まずは何を渡せばよいかを整理しましょう。
my_first_analysis/
├── data/ # 生データ(公開可能なもの)
├── analysis.ipynb # 解析スクリプト
├── results/ # 出力された図表(あれば参考に同梱)
├── requirements.txt # Step 2 で作成
└── README.md # 手順書(次のStep 4で作成)
※ .venv/ フォルダは 含めません。受け取った相手が自分のPCで再生成する。
渡し方は、フォルダをZIPにまとめてメールで送る・クラウドストレージで共有する・Part 5 で扱う GitHub や Zenodo で公開するなど、いずれの方法でも構いません。
フォルダを受け取った人は、まず README.md に書かれている Python バージョンを確認します。次に、自分のPCに同じバージョンの Python が入っているかをチェックします。
python --version(Windowsで複数バージョンが共存している場合は py --list)。入っていなければ python.org/downloads から該当バージョンをインストール。# Windows で Python 3.12 を使う場合
py -3.12 -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# Mac / Linux で Python 3.12 を使う場合
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
最初の行で README.md に書いてあるバージョンを指定して仮想環境を作成 します。バージョン指定をしないと、PCに入っている既定のPythonが使われてしまいます。その結果、想定と違う挙動になることがあります。最後の pip install -r requirements.txt で、ライブラリを記載されたバージョンでまとめてインストールします。
これで相手は、あなたが analysis.ipynb を実行したのと同じ環境を手元に再現できます。コードを実行すれば、同じ図表・同じ統計量が得られます。これが 再現性 です。
フォルダにはぜひ README.md という説明ファイルを置いておきましょう。第三者が最初に読むファイルとして、次のような内容を書いておくとフレンドリーです。
# 〇〇研究の解析パッケージ
## 環境構築
```
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
```
## 実行
VSCode で `analysis.ipynb` を開き、上から順にセルを実行してください。
結果は `results/` フォルダに保存されます。
## Pythonバージョン
Python 3.12 で動作確認しています。
README.md は、VSCodeやメモ帳で普通のテキストファイルとして作成・保存できます。
上の例で # や ``` といった記号を使っているのは Markdown(マークダウン)記法 という書式ルールです。テキストに少し記号を添えるだけで、見出し・コードブロック・リストなどの装飾が表現できる「軽量な書式」です。GitHub・Zenodo・Notion・Slack など多くのサービスがMarkdownに対応しており、README.md ファイルは GitHub上で自動的に整形表示されます。
書き方の詳細は補足記事 「Markdown記法の超入門」 にまとめています。最低限、#(見出し)と ```(コード囲い)の2つだけ覚えれば十分です。
requirements.txt は強力ですが、いくつか注意すべき点があります。
requirements.txt はライブラリのみを記録し、Python自体のバージョンは含みません。README.md に「Python 3.12 で動作確認」のように明記しましょう。
pip freeze は依存関係のすべてを書き出すので、行数が膨大になることがあります。気になる場合は、自分が直接 import したライブラリだけをLLMに教えてもらって整理するのも手です。
とはいえ、まずは pip freeze で出力したものをそのまま使えば十分です。完璧を目指さず、「とりあえずrequirements.txtがある」状態をまず作りましょう。
フォルダをGitHubなどで共有する際、.venv フォルダは共有から除外するのが標準です。受け取り側で再生成すべきものであり、サイズも大きいためです。除外するためには、フォルダの直下に .gitignore という名前のファイルを作ります。次の内容を書いておきます。
.venv/
__pycache__/
*.pyc
.ipynb_checkpoints/
これでGitHubにアップロードする際に、これらのファイル・フォルダは自動で除外されます。Part 5 で詳しく扱います。
pip freeze > requirements.txt で環境を書き出せるpip install -r requirements.txt で再現できる最後のPart 5では、ここまで作ったフォルダ一式をZenodoやGitHubで公開し、論文Appendixからリンクを貼って研究の再現性を担保する方法を紹介します。