Dockerで株価分析環境を構築する手順

準備・環境構築

なぜ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間での環境統一に積極的に活用しましょう。

タイトルとURLをコピーしました