Python開発の必須アイテム!requirements.txtの「なぜ?」と「どう使う?」を徹底解説
こんにちは。ゆうせいです。
あなたがPythonで開発を始めると、プロジェクトのフォルダの中に requirements.txt というファイルを見かけることがよくあるはずです。
「ただのテキストファイルみたいだけど、これって一体何のためにあるの?」
「先輩が『これ使って環境作っといて』って言ってたけど、どういう意味…?」
そんな疑問を持つ新人エンジニアのあなた!今日はこの requirements.txt が、Python開発においてどれほど重要で、どれほど便利なファイルなのかを、一緒に学んでいきましょう。
そもそも「requirements.txt」って何?
この requirements.txt(リクワイアメンツ・テキストと読みます)、一体何者なのでしょうか。
すごく簡単に言うと、「このPythonプロジェクトを動かすために必要なライブラリ(パッケージ)とそのバージョンを、一覧にして書き出したファイル」です。
料理の「レシピ」で例えてみよう!
ピンと来ないかもしれませんね。では、料理の「レシピ」を想像してみてください。
美味しいカレーを作るためのレシピには、
- 玉ねぎ:1個
- じゃがいも:2個
- お肉:200g
- カレールー:1箱のように、必要な「材料」と「分量」が書いてありますよね。
requirements.txt は、まさにこのレシピと同じ役割を果たします。
ファイルの中身は、例えばこんな感じです。
requests==2.28.1
pandas==1.5.3
numpy==1.23.5
これは、
requestsというライブラリの2.28.1バージョンpandasというライブラリの1.5.3バージョン- numpy というライブラリの 1.23.5 バージョンが、このプロジェクトには必要ですよ!という「材料リスト」なんです。
このレシピ(requirements.txt)さえあれば、誰が作っても、どこで作っても(例えば、あなたのPCでも、先輩のPCでも、サーバーの上でも)、同じ材料(ライブラリ)を同じ分量(バージョン)で揃えて、同じ料理(プロジェクト)を正しく作れる(動かせる)ようになるわけです。
なぜ「requirements.txt」が必要なの?(メリット)
では、なぜこんな「レシピ」がわざわざ必要なのでしょうか。それには、チーム開発をスムーズに進めるための、とても大切な理由があります。
1. 誰でも同じ環境をすぐに作れる!(環境再現性)
これが最大のメリットです!
あなたが自分のPCで、たくさんのライブラリをインストールして、試行錯誤しながらやっと動くプログラムを完成させたとします。
「できました!」と先輩に報告したら、「じゃあ、僕のPCでも動かせるように準備して」と言われました。
さあ、どうしますか?
「えーっと、確か pandas を入れて、requests も入れて…。あれ?バージョンは何だったっけ…?」
もし requirements.txt がなかったら、どのライブラリをどのバージョンで入れたか、記憶をたどるしかありません。これでは時間がかかりますし、入れ忘れやバージョンの間違いが必ず起こります。
でも、requirements.txt があれば大丈夫!
このファイルを先輩に渡して、たった1つのコマンドを実行してもらうだけで、あなたのPCと全く同じライブラリ環境を、先輩のPC上に一瞬で再現できるのです。
2. プロジェクトの「中身」が一目でわかる
新しいプロジェクトに参加したとき、まず requirements.txt を見れば、「なるほど、このプロジェクトはデータ分析のために pandas を使っていて、Webアクセスに requests を使っているんだな」というように、プロジェクトの技術的な特徴がすぐに把握できます。
3. 本番環境へのリリースが確実になる
あなたが開発したWebアプリケーションを、いよいよ世界中の人が使えるようにサーバー(本番環境)に公開するときも requirements.txt は大活躍します。
サーバー上でこのファイルを使って環境構築すれば、開発したPCと寸分違わぬ環境が作れるため、「自分のPCでは動いたのに、サーバーだとエラーになる!」といった悲劇的なトラブルを未然に防ぐことができます。
どうやって使うの?
使い方は驚くほど簡単です。主に2つの操作しかありません。
1. ファイルを作る(現在の環境を書き出す)
あなたのプロジェクトで必要なライブラリをインストールし終えたら、ターミナル(コマンドプロンプト)で以下のコマンドを実行します。
pip freeze > requirements.txt
pip freezeというのは、「今この環境にインストールされているライブラリを、バージョン付きで全部表示しろ!」という命令です。>(大なり記号)は、「表示された内容を、requirements.txtという名前のファイルに書き出して保存しろ!」という意味です。(これは「リダイレクト」と呼ばれる機能ですね)
これだけで、自動的に requirements.txt ファイルが作られます。簡単でしょう?
2. ファイルからインストールする(環境を再現する)
プロジェクトを新しく別のPCで動かすときや、他の人が作ったプロジェクトを自分のPCで動かすときは、requirements.txt があるフォルダで、以下のコマンドを実行します。
pip install -r requirements.txt
pip installはおなじみ、インストールする命令です。-rというオプションは、「ファイル(requirements.txt)を読んで、そこに書いてあるリスト通りにインストールしてね!」という意味です。
このコマンド一発で、ファイルに記載されている全てのライブラリが、指定されたバージョンで一気にインストールされます。本当に便利ですね!
使うときの注意点(落とし穴)
とっても便利な requirements.txt ですが、一つだけ知っておくべき「落とし穴」があります。
それは、先ほどの pip freeze コマンドの性質です。
pip freeze は賢くないので、「今いる環境の すべて のライブラリ」を書き出してしまいます。
どういうことかというと…
例えば、あなたがPC全体で使うために、勉強用に入れたライブラリAや、別のプロジェクトBで使ったライブラリCまで、全部 requirements.txt に書き出してしまうのです。
その結果、カレーのレシピ(プロジェクトA)に、お菓子作りの材料(プロジェクトB)や、日曜大工の道具(勉強用)までごちゃ混ぜに書かれてしまうような、汚れたレシピができてしまいます。
これでは、本当に必要なライブラリが何なのか分からなくなってしまいますよね。
解決策:「仮想環境」とセットで使おう!
この問題を華麗に解決してくれるのが、「仮想環境(virtual environment)」という仕組みです。
仮想環境とは?
専門用語が出てきましたが、難しくありません。
仮想環境とは、「プロジェクトごとに、独立した専用のPython実行環境を作る仕組み」です。
例えるなら、プロジェクト専用の「道具箱」を用意するイメージです。
- Aプロジェクト(カレー作り)を始めるときは、まず「A用の道具箱」を作ります。
- その道具箱の中にだけ、カレーに必要なスパイス(ライブラリ)を入れます。
- Bプロジェクト(お菓子作り)を始めるときは、別に「B用の道具箱」を作ります。
- そこには小麦粉や砂糖(ライブラリ)だけを入れます。
こうすれば、Aの道具箱とBの道具箱の中身が混ざることはありませんよね?
PC本体の環境(いわば「物置」)も汚れません。
仮想環境 + requirements.txt = 最強!
このプロジェクト専用の道具箱(仮想環境)の中で作業をすれば、
pip freeze > requirements.txtを実行したとき、その道具箱の中に入っている、本当にそのプロジェクトで必要なライブラリだけが書き出された、クリーンな「レシピ」が完成します!
今後の学習の指針
requirements.txt の重要性と、仮想環境とセットで使うべき理由、伝わりましたか?
新人エンジニアのあなたがまずマスターすべきことは、以下の2ステップです。
- 必ずプロジェクトごとに「仮想環境」を作ること。
- 作業が終わったら「requirements.txt」を作って保存すること。
この2つを徹底するだけで、あなたの開発効率は格段に上がり、チームメンバーからの信頼も得られます。
Pythonには venv という機能が標準で備わっており、簡単に仮想環境を作れます。
「Python venv 使い方」などで検索して、ぜひ今日から実践してみてください。
- 仮想環境を作るコマンド(例:
python -m venv myenv) - 仮想環境に入る(有効化する)コマンド(例:
source myenv/bin/activate※Mac/Linuxの場合)
これらを調べて、自分のものにしてください。
この習慣が、あなたを「デキる」エンジニアへと成長させてくれるはずです。応援しています!