【Python講座 第6回】外部ライブラリ活用(pip)完全攻略。初心者がVPSで学ぶ「巨人の肩」に乗る方法

「車輪の再発明」はやめよう。世界中の天才が助けてくれる。

こんにちは!「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. 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を使用します。

【課題】

  1. Open-Meteo APIのエンドポイント: https://api.open-meteo.com/v1/forecast
  2. 東京の緯度経度: latitude=35.6895, longitude=139.6917
  3. パラメータ: current_weather=true
  4. 上記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」

VPSランキングを見る

Pythonスキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント