なぜDockerを使うのか?
Dockerを使うと「どの環境でも同じ結果が出る」分析環境を作れます。チームで共有する際や、複数のPCで同じ環境を再現したいときに非常に便利です。
- ✅ 環境の再現性が高い
- ✅ ライブラリのバージョン管理が容易
- ✅ 本番環境と開発環境を揃えられる
- ✅ 複数プロジェクトの環境を分離できる
Dockerのインストール
Docker Desktopの公式サイトからOSに合ったバージョンをインストールしてください。
# インストール確認
docker --version
docker-compose --version
プロジェクト構成
stock-analysis/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── notebooks/
└── analysis.ipynb
Dockerfileの作成
FROM python:3.11-slim
WORKDIR /app
# 必要なシステムパッケージをインストール
RUN apt-get update && apt-get install -y gcc g++ && rm -rf /var/lib/apt/lists/*
# Pythonライブラリをインストール
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# ポート8888(Jupyter用)を公開
EXPOSE 8888
# Jupyter Notebookを起動
CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token=''"]
requirements.txtの作成
yfinance==0.2.38
pandas==2.1.4
numpy==1.26.3
matplotlib==3.8.2
seaborn==0.13.1
scikit-learn==1.4.0
jupyter==1.0.0
jupyterlab==4.0.10
plotly==5.18.0
ta==0.11.0
requests==2.31.0
docker-compose.ymlの作成
version: '3.8'
services:
stock-analysis:
build: .
container_name: stock-analysis-notebook
ports:
- "8888:8888"
volumes:
- ./notebooks:/app/notebooks
- ./data:/app/data
environment:
- PYTHONUNBUFFERED=1
restart: unless-stopped
コンテナの起動
# イメージをビルドして起動
docker-compose up --build
# バックグラウンドで起動する場合
docker-compose up -d --build
# ログの確認
docker-compose logs -f
起動後、ブラウザで http://localhost:8888 を開くとJupyter Notebookが使えます。
基本的な操作コマンド
# コンテナの状態確認
docker-compose ps
# コンテナを停止
docker-compose stop
# コンテナを削除
docker-compose down
# コンテナ内でbashを実行
docker-compose exec stock-analysis bash
# ライブラリを追加インストール(コンテナ内)
docker-compose exec stock-analysis pip install japanize-matplotlib
Jupyter Notebookで株価分析
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
# トヨタ自動車の株価データ取得
ticker = yf.Ticker("7203.T")
df = ticker.history(period="1y")
# 終値のグラフ
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['Close'])
plt.title("トヨタ自動車 株価推移(1年)")
plt.xlabel("日付")
plt.ylabel("株価(円)")
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('/app/notebooks/toyota_stock.png', dpi=100)
plt.show()
print(df.tail())
データの永続化
docker-compose.ymlでvolumesを設定しているため、./notebooksフォルダに保存したファイルはコンテナを削除しても残ります。
本番環境への移行
# 本番用Dockerfile(Jupyter不要の場合)
FROM python:3.11-slim
WORKDIR /app
RUN apt-get update && apt-get install -y gcc && rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]
まとめ
Dockerを使った株価分析環境の構築は、最初は少し手間ですが一度作ってしまえば誰でも同じ環境で分析できます。チームプロジェクトや複数PC間での環境統一に積極的に活用しましょう。

