こんにちは!データサイエンスやPythonのコーディング、毎日楽しんでいますか?
「研究や仕事で、Spyderを使って素晴らしいデータ分析スクリプトが書けた。でも、これを手動で動かすだけでなく、もっとスマートに、安全に管理したい……」
そんな風に思ったことはありませんか?
今回は、科学計算やデータ分析の強力な味方である統合開発環境「Spyder」と、モダンな開発の必須インフラである「GitHub Actions」を組み合わせて、「コードをプッシュするだけで、自動でテストが走る(CI/CD)仕組み」を作る方法を解説します。
「CI/CDなんて、Webエンジニアがやる難しいことでは?」と思うかもしれませんが、実はデータサイエンスの現場でも絶大な効果を発揮します。これをマスターすれば、うっかりミスによるエラーに怯える必要がなくなります。一緒に一歩ずつ、優しく紐解いていきましょう!
—
1. なぜSpyderユーザーにCI/CD(GitHub Actions)が必要なのか?
私たちが普段使っているSpyderは、変数の値がリアルタイムで見える「変数エクスプローラー」や、対話的にコードを実行できる「IPythonコンソール」を備えており、データ分析の prototyping(試作)において最強のIDEです。
しかし、Spyderでの開発には、こんな「あるある」な悩みも潜んでいます。
- 「手元の環境では動いたのに、別のPCや本番サーバーに移したら動かない……」
- 「コードを修正したら、別の機能が知らぬ間に壊れていた……」
- 「毎回手動でテストスクリプトを実行するのが面倒になってきた……」
ここで登場するのが GitHub Actions です。
GitHubにコードを「プッシュ(保存)」した瞬間に、クラウド上のまっさらな仮想環境で自動的にあなたのコードを動かし、「エラーが起きないか」「意図した通りに計算ができるか」をチェック(CI:継続的インテグレーション)してくれます。
つまり、「あなたの代わりに、ロボットが24時間体制でコードの品質を守ってくれる」ようになるのです。これを手に入れたあなたの開発スピードは、劇的に加速しますよ。
—
2. 全体像の把握:SpyderプロジェクトとGitHubの連携フロー
今回のゴールは、以下のシンプルなパイプライン(自動化の流れ)を構築することです。
1. Spyderでコードを書く:ローカルのSpyder環境で、分析スクリプトとテストコードを書く。
2. Gitでバージョン管理・プッシュ:コードをGitHubのリポジトリへアップロードする。
3. GitHub Actionsが自動起動:GitHub側が検知し、クラウド上でPython環境を構築、テストを実行する。
それでは、具体的なセットアップに入りましょう!
—
3. ステップ1:Spyderでのプロジェクト作成と環境の整理
まずは、Spyderで綺麗なプロジェクト構造を作ることから始めます。ここがしっかりしていると、CI環境への移行が驚くほどスムーズになります。
1-1. Spyderで新規プロジェクトを作成する
1. Spyderのメニューから `Projects` > `New Project…` を選択します。
2. 「Existing directory」または「New directory」を選び、プロジェクト名(例:`my_data_project`)をつけます。
1-2. 今回の検証用ファイルを作成する
プロジェクトフォルダの中に、以下の2つのファイルを作成してください。
- `analyzer.py` (データ分析を行うメインの関数)
- `test_analyzer.py` (自動テスト用のコード)
それぞれのコードの中身は、以下のように記述してみましょう。
`analyzer.py`(分析ロジック)
analyzer.py
与えられた数値リストの平均値を計算するシンプルな関数
def calculate_average(data):
# データが空の場合はエラーを防ぐために0を返す仕様にする
if not data:
return 0
return sum(data) / len(data)
if __name__ == “__main__”:
# ローカルで直接実行したときの動作確認
sample_data = [10, 20, 30, 40, 50]
print(f”平均値: {calculate_average(sample_data)}”)
`test_analyzer.py`(テストコード:pytestを使用)
test_analyzer.py
from analyzer import calculate_average
正常系のテスト:通常の数値リストで正しく平均が計算できるか
def test_calculate_average_normal():
data = [2, 4, 6, 8]
assert calculate_average(data) == 5.0
境界値のテスト:空のリストを渡したときに安全に0が返るか
def test_calculate_average_empty():
data = []
assert calculate_average(data) == 0
Spyderの下部にある「IPythonコンソール」で `pytest` と打ち込んで、ローカル環境でもテストが通ることを確認しておきましょう(※事前に `pip install pytest` が必要です)。
—
4. ステップ2:依存関係の書き出し(再現性の確保)
「手元のPCでは動いたのに!」を防ぐために、使用しているライブラリのバージョンを固定します。Spyderのターミナル(またはお使いの端末)で以下のコマンドを実行し、`requirements.txt` を生成します。
pip freeze > requirements.txt
生成された `requirements.txt` には、以下のように現在の環境のライブラリが記録されます(例)。
pytest==7.4.3
numpy==1.26.2
その他、インストールされているパッケージが並びます
—
5. ステップ3:GitHub Actionsのワークフロー設定
ここが今回の核心部です!GitHubが「どのような手順でテストを実行するか」を指示するレシピファイルを作成します。
プロジェクトのルートディレクトリ(一番上の階層)に、以下のフォルダ構造を作成してください。
> `.github/workflows/ci.yml`
この `ci.yml` というファイルが、GitHub Actionsの頭脳になります。以下のコードをそのまま貼り付けてみてください。
`.github/workflows/ci.yml`
ワークフローの名称(GitHubのActionsタブに表示されます)
name: Data Project CI
どのようなトリガー(きっかけ)でこの自動化を走らせるか
on:
push:
branches: [ “main”, “master” ] # mainまたはmasterブランチにプッシュされた時
pull_request:
branches: [ “main”, “master” ] # プルリクエストが作成された時
実際に実行するジョブ(作業内容)の定義
jobs:
build-and-test:
# 実行環境として最新のUbuntu(Linux)を指定
runs-on: ubuntu-latest
steps:
# 1. GitHub上のリポジトリのコードを、仮想環境上にチェックアウト(ダウンロード)する
- name: Checkout repository
uses: actions/checkout@v4
# 2. Pythonの実行環境をセットアップする(バージョン3.10を指定)
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ‘3.10’
# キャッシュを利用して依存関係のインストールを高速化
cache: ‘pip’
# 3. 必要なライブラリ(dependencies)をインストールする
- name: Install dependencies
run: |
python -m pip install –upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
# テストツールであるpytestを確実にインストール
pip install pytest
# 4. pytestを実行して、テストコードを走らせる
- name: Run unit tests with pytest
run: |
pytest
—
6. ステップ4:GitHubへプッシュして魔法の瞬間を体験する
さあ、すべての準備が整いました。作成したファイルをGitHubのリポジトリにプッシュしましょう。
以下のコマンドをターミナルで実行します(あらかじめGitHub側でリモートリポジトリを作成し、紐づけておいてください)。
変更ファイルをステージング
git add .
コミットメッセージを添えて記録
git commit -m “feat: Add analyzer, tests, and GitHub Actions CI pipeline”
GitHubへ送信
git push origin main
動作確認:GitHubの画面を見てみよう!
1. ブラウザでご自身のGitHubリポジトリを開きます。
2. 上部タブにある 「Actions」 をクリックしてください。
3. 画面に 「Data Project CI」 というワークフローが走っている(あるいは完了している)のが見えますか?
もしすべてが成功していれば、緑色のチェックマーク(`✔`)がつき、「Build-and-test」のジョブが成功しているはずです。
万が一コードにバグがあってテストが失敗すると、ここが赤く点灯し、どのテストケースでエラーが起きたのか詳細にログが表示されます。これにより、バグを抱えたコードが誤ってプロジェクトに混入するのを完璧に防ぐことができるのです。
—
まとめ:あなたの開発環境は、次のステージへ
お疲れ様でした!
今回は、Spyderでのデータ分析開発と、GitHub Actionsを組み合わせたCI/CDパイプラインの構築法を解説しました。
- Spyderで直感的にコードとテストを書き、
- `requirements.txt`で環境の再現性を担保し、
- GitHub Actionsでプッシュするたびに自動で品質チェックを行う。
このサイクルを一度作ってしまえば、日々のコーディングの安心感が段違いになります。「動くかな?」とハラハラしながらコードを実行する時代はもう終わりです。
これをマスターしたあなたなら、より複雑で大規模なデータ分析プロジェクトにも、自信を持って挑めるはずです。毎日のコーディングを、もっとスマートに、もっと楽しくしていきましょう!