「車輪の再発明」はやめよう。世界中の天才が助けてくれる。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回(第5回)は、関数とモジュールを使って、自分のコードを部品化する方法を学びました。
これで、自分自身が書いたコードを再利用することはできるようになりました。
しかし、世界はもっと広いです。
Pythonが世界中で最も人気のある言語の一つである理由は、「世界中のエンジニアが作った便利な部品(ライブラリ)が無数に公開されており、誰でも無料で使えるから」です。
- 「Webサイトのデータを集めたい」→ requests
- 「Excelファイルを操作したい」→ pandas, openpyxl
- 「AIで画像認識をしたい」→ tensorflow, pytorch
- 「Webアプリを作りたい」→ django, flask
これらをイチから自分で作ろうとすると何年もかかりますが、ライブラリを使えば「たった数行」で実現できます。
これをエンジニアの世界では「巨人の肩に乗る」と表現します。
第6回となる今回は、Pythonのパッケージ管理ツール pip を使いこなし、プロの開発現場と同じレベルの環境管理術をマスターしましょう。
先生、VPSにログインしました!
「pip(ピップ)」ってコマンド、ネットの記事でよく見かけます。
でも、「インストールして終わり」じゃないんですか?
バージョンがどうとか、環境が壊れるとか聞いて、ちょっと怖いです…。
その「怖い」という感覚は正しいわ、コウ君。
適当にインストールし続けると、ライブラリ同士が喧嘩して動かなくなる「依存関係地獄」に陥るの。
だからこそ、第1回で作った「仮想環境(venv)」が重要なのよ。
今回は、安全なインストールの方法と、チーム開発で絶対に守るべき「構成管理」のルールを教えるわね!
本記事では、Python初心者にとって最適な勉強方法である「実機(VPS)でのコーディング」を通して、ライブラリの導入から環境管理までを完全にマスターします。
🚀 【全8回】Python VPSマスターコース カリキュラム
- 【第1回】環境構築とHello World:AlmaLinux 9でPythonを動かす
- 【第2回】変数とデータ型:コンピュータにおける「データ」の扱い方
- 【第3回】条件分岐(if文):プログラムに「判断」させる
- 【第4回】繰り返し処理(for/while):コンピュータの得意技「ループ」
- 【第5回】関数とモジュール:コードを部品化して再利用する
- 【第6回】外部ライブラリの活用(pip)(今回):便利な道具をインターネットから入手する
- 【第7回】ファイル操作とWebアクセス:ログ保存とデータ収集
- 【第8回】自動化システム構築:定期実行(Cron)でボットを作成する
目次
1. PyPIとpipの仕組みを知ろう
まず、私たちがこれから使うツールがどういう仕組みなのか理解しましょう。
PyPI (Python Package Index)
世界中のPythonエンジニアが作ったライブラリ(パッケージ)が登録されている、巨大な倉庫です。
誰でもここから自由にソフトウェアをダウンロードできます。
pip (Pip Installs Packages)
PyPIという倉庫から、欲しいパッケージを探してきて、自分のパソコン(VPS)にインストールしてくれる「管理官」のようなコマンドツールです。
Python 3.4以降には標準で付属しています。
💡 仮想環境(venv)の重要性・再確認
pipはデフォルトでは「OS全体」にインストールしようとします。
しかし、AlmaLinuxのシステム自体もPythonを使っているため、うかつにバージョンを変えるとOSが壊れる可能性があります。
必ず source .venv/bin/activate で仮想環境に入ってから pip を使いましょう。
2. 実践:Requestsライブラリを使ってみよう
それでは、VPS(AlmaLinux 9)に接続して、実際にライブラリを導入してみましょう。
今回は、WebサイトやAPIにアクセスするためのド定番ライブラリ requests を使います。
(Python標準の urllib よりも圧倒的に使いやすいため、実務ではこちらが標準です)
2-1. 仮想環境の有効化(必須!)
作業用ユーザー(python_user)でログインし、必ず仮想環境に入ります。
cd ~/python_study source .venv/bin/activate # プロンプトの先頭に (.venv) があることを絶対確認!
2-2. ライブラリのインストール
以下のコマンドを実行します。
pip install requests
インストールされたか確認します。
pip list
リストの中に requests と、それが依存する urllib3 などが表示されれば成功です。
2-3. Webアクセスプログラムの作成
vi web_access.py を作成し、Googleのトップページにアクセスしてステータスコードを表示するコードを書きます。
import requests # インストールしたライブラリを読み込む
url = "https://www.google.com/"
print(f"アクセス中: {url}")
# GETリクエストを送る
response = requests.get(url)
# 結果を表示
print(f"ステータスコード: {response.status_code}")
print(f"文字コード: {response.encoding}")
print("-" * 20)
# HTMLの中身を少しだけ表示(最初の100文字)
print(response.text[:100])
2-4. 実行
python web_access.py
実行結果例:
アクセス中: https://www.google.com/ ステータスコード: 200 文字コード: ISO-8859-1 -------------------- <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content...
たった数行で、インターネット上のサーバーと通信ができました!ステータスコード: 200 は「成功」を意味します。
3. JSONデータの扱いと辞書型
Web API(アプリケーション・プログラミング・インターフェース)を使うと、HTMLではなくJSON(ジェイソン)というデータ形式で情報を取得できます。
Pythonでは、JSONを「辞書型(Dictionary)」として扱います。
3-1. 辞書型(dict)とは?
キー(Key)と値(Value)のペアでデータを管理する型です。
user = {
"name": "コウ君",
"level": 5,
"skills": ["Python", "Linux"]
}
print(user["name"]) # コウ君
3-2. 実践:APIからJSONを取得する
テスト用のAPIサービス httpbin.org を使って、JSONデータを取得してみましょう。vi api_test.py を作成します。
import requests
# テスト用API (自分のIPアドレスなどを返してくれる)
url = "https://httpbin.org/get"
# カスタムヘッダーを送ってみる
headers = {"User-Agent": "MyPythonBot/1.0"}
response = requests.get(url, headers=headers)
# レスポンスをJSONとして解析(辞書型に変換)
data = response.json()
# 辞書型なのでキーで取り出せる
print("--- 取得データ ---")
print(f"送信元IP: {data['origin']}")
print(f"User-Agent: {data['headers']['User-Agent']}")
print(f"URL: {data['url']}")
実行結果:
--- 取得データ --- 送信元IP: 203.0.113.1 (あなたのVPSのIP) User-Agent: MyPythonBot/1.0 URL: https://httpbin.org/get
このように、Web上のデータをまるで自分のプログラム内の変数のように扱えるのが、requests とPythonの強力な点です。
4. プロの常識:requirements.txtによる環境管理
さて、ここからがプロのノウハウです。
あなたが作ったこのプログラムを、別のサーバーや、同僚のPCでも動かしたいとします。
その時、「requests を入れておいてね」と口頭で伝えるのはナンセンスです。
4-1. 現在の環境を書き出す (freeze)
インストールされているライブラリの一覧をファイルに保存します。
pip freeze > requirements.txt
cat requirements.txt で中身を見てみましょう。
certifi==2024.2.2 charset-normalizer==3.3.2 idna==3.6 requests==2.31.0 urllib3==2.2.1
ライブラリ名とバージョンが記録されています。これが「設計図」になります。
4-2. 設計図から環境を再現する (install -r)
別の環境(例えば新しいVPS)でこのファイルを使えば、コマンド一発で同じ環境を再現できます。
pip install -r requirements.txt
Gitなどでコードを共有する際は、必ずこの requirements.txt を同梱するのがエンジニアのルールです。
5. セキュリティ対策:環境変数(.env)の利用
APIを使うようになると、「APIキー」や「パスワード」といった機密情報を扱う機会が増えます。
これらをコードの中に直接書く(ハードコーディング)のは絶対にNGです。
コードをSNSやGitHubに上げた瞬間に流出してしまいます。
プロは「環境変数」を使ってこれらを隠します。
5-1. python-dotenvの導入
環境変数を .env ファイルから読み込むためのライブラリを入れます。
pip install python-dotenv
5-2. .envファイルの作成
パスワードなどを記述するファイルです。vi .env を作成します。
API_KEY=secret_password_12345 DB_HOST=localhost
注意: 本来、この .env ファイルはGitの管理対象外(.gitignore)に設定し、他人には渡さないファイルです。
5-3. コードから読み込む
vi env_test.py を作成します。
import os
from dotenv import load_dotenv
# .envファイルをロード
load_dotenv()
# 環境変数を取得
api_key = os.getenv("API_KEY")
if api_key:
print(f"APIキーを読み込みました: {api_key}")
else:
print("APIキーが見つかりません")
実行すると、コード内にパスワードを書かずに、外部ファイルから値を読み込めていることが分かります。
これがセキュアな開発の基本です。
6. 演習問題:外部APIから天気情報を取得
今回の総仕上げとして、実際の天気予報APIを使って、東京の現在の天気を取得してみましょう。
登録不要で使える Open-Meteo APIを使用します。
【課題】
- Open-Meteo APIのエンドポイント:
https://api.open-meteo.com/v1/forecast - 東京の緯度経度:
latitude=35.6895,longitude=139.6917 - パラメータ:
current_weather=true - 上記URLにリクエストを送り、現在の気温(
temperature)を表示する。
解答例 (weather.py)
import requests
# APIのエンドポイントとパラメータ
url = "https://api.open-meteo.com/v1/forecast"
params = {
"latitude": 35.6895,
"longitude": 139.6917,
"current_weather": "true"
}
try:
# パラメータ付きでGETリクエスト
response = requests.get(url, params=params)
response.raise_for_status() # エラーがあればここで例外を発生させる
data = response.json()
current = data["current_weather"]
temp = current["temperature"]
wind = current["windspeed"]
print(f"--- 東京の天気 ---")
print(f"気温: {temp} ℃")
print(f"風速: {wind} km/h")
except requests.exceptions.RequestException as e:
print(f"エラーが発生しました: {e}")
実行結果例:
--- 東京の天気 --- 気温: 18.5 ℃ 風速: 12.0 km/h
VPSからインターネット経由でリアルタイムの情報を取得できました!
これを前回の「関数」にしたり、今後の「定期実行」と組み合わせれば、「毎朝天気をLINEに通知するボット」などが作れるようになります。
まとめ:無限の拡張性を手に入れた
お疲れ様でした! 第6回では、Pythonの世界を無限に広げる「外部ライブラリ」の活用法を学びました。
今回の達成項目:
- PyPIとpipの仕組みを理解した。
requestsライブラリを使ってWebサイトやAPIにアクセスした。- JSONデータを辞書型として扱えるようになった。
requirements.txtを使って環境を保存・再現する方法を知った。python-dotenvを使ってパスワードを隠蔽するセキュアな実装を学んだ。
次回は、集めたデータをファイルに保存したり、ログを残したりするための「ファイル操作」を学びます。
データをプログラムの中だけで終わらせず、サーバー上に記録として残すための重要な技術です。
次回、【第7回】ファイル操作とWebアクセス:ログ保存とデータ収集 でお会いしましょう!
▼ Pythonを学ぶならVPSで ▼
AlmaLinuxが使える
「おすすめVPS」
Pythonスキルを活かす
「ITエンジニア転職」


コメント