GitHub Actions入門。Pythonコードのテストから公開までを自動化しよう
プログラミングを始めたばかりの頃、自分の書いたコードが正しく動くか確認するのはドキドキする作業ですよね!
「手元のパソコンでは動いたのに、サーバーに持っていくと動かない」という経験、エンジニアなら誰もが一度は通る道です。
こうした不安を解消し、私たちの代わりにコードのチェックを自動で行ってくれる魔法のようなツールがあります。 それがGitHub Actionsです。
今回は、Python初学者が知っておくべき「自動化の基本」から、実際にコードをテストして公開するまでの流れを丁寧に解説します。 エンジニア歴10年の私が、現場で「これだけは外せない」と感じている自動化の真髄をお伝えしましょう。
自動化(CI/CD)とは何だろう?¶
GitHub Actionsを学ぶ前に、まず知っておきたいのがCI/CDという言葉です。 これは「継続的インテグレーション(Continuous Integration)」と「継続的デリバリー(Continuous Delivery)」の略称です。
難しく聞こえるかもしれませんが、要するに「コードを書いたら自動でテストし、自動でユーザーに届ける仕組み」のことだと考えてください。 人間が手動で行うとミスが起きやすい作業を、ロボット(GitHub Actions)に任せてしまうわけです。
自動化が整っていると、バグを早い段階で見つけることができ、安心して開発を進められるようになります。 【関連記事】:バグを出す前に例外を予見する!不測の事態に強いエンジニアの思考プロセスとは?
GitHub Actionsが選ばれる理由¶
世界には多くの自動化ツールがありますが、なぜ今GitHub Actionsが最も注目されているのでしょうか。 最大の理由は、私たちが普段コードを管理しているGitHubという場所から離れずに設定が完結する点にあります。
新しくサーバーを契約したり、複雑な外部ツールを連携させたりする手間がほとんどありません。 リポジトリの中に設定ファイルを一つ置くだけで、その瞬間からあなたの専属アシスタントが働き始めます。
また、世界中のエンジニアが作った「Actions(部品)」を組み合わせて、パズルのように機能を拡張できるのも魅力です。 それでは、GitHub Actionsを構成する基本的な用語を整理しておきましょう。
| 用語 | 意味 | イメージ |
|---|---|---|
| ワークフロー (Workflow) | 自動化プロセス全体の流れ | 料理のレシピ全体 |
| イベント (Event) | 実行されるきっかけ(Pushなど) | 「注文が入った」という合図 |
| ジョブ (Job) | 実行されるひとまとまりの作業単位 | 「前菜を作る」「メインを作る」 |
| ステップ (Step) | ジョブの中にある個別の手順 | 「野菜を切る」「炒める」 |
| アクション (Action) | 再利用可能な具体的なコマンド | 「自動野菜切り機」のような道具 |
これらの要素をYAML(ヤムル)という形式のファイルに記述することで、自動化の指示書を作成していきます。 最初は少し戸惑うかもしれませんが、書き方のルールを覚えれば非常にシンプルですよ。
最初のワークフローを作ってみよう¶
まずは、最も簡単な「Hello World」を表示するワークフローを作成してみましょう。 GitHub上の自分のリポジトリを開き、フォルダ構成を整えるところからスタートします。
GitHub Actionsの設定ファイルは、必ずリポジトリのルート(一番上の階層)にある .github/workflows/ というフォルダの中に配置します。
ここに、例えば hello.yml という名前でファイルを作成してみてください。
name: Hello GitHub Actions
# いつ実行するか(イベント)
on: [push]
# 何をするか(ジョブ)
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- name: Greet
run: echo "こんにちは!GitHub Actionsの世界へようこそ。"
このファイルをGitHubにプッシュ(保存)すると、自動的に「Actions」タブで処理が走り出します。 ブラウザ上で緑色のチェックマークが付くのを確認できたら、あなたの自動化デビューは成功です。
Pythonコードのテストを自動化する¶
挨拶ができるようになったら、次は本番。 Pythonコードが正しく動くか、pytestなどのテストツールを自動で実行させてみましょう。
手動でテストを走らせるのを忘れて、バグを含んだまま公開してしまうミスは、自動化で100%防げます。 以下のサンプルは、Python 3.10の環境を構築し、ライブラリをインストールしてテストを実行する設定です。
name: Python Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
# GitHubからコードを取得する
- uses: actions/checkout@v4
# Pythonの環境をセットアップする
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
# 必要なライブラリをインストールする
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
# テストを実行する
- name: Run tests
run: |
pytest
このように、GitHub Actionsでは仮想のパソコン(ubuntu-latest)を借りて、そこでコードを動かします。 どんな環境でも同じようにテストが通ることを保証できるのが、この仕組みの素晴らしいところです。
【関連記事】:100行のコードが10行に?Pythonic(パイソンらしい)な書き方への第一歩
綺麗なコードを保つための自動チェック¶
テストだけでなく、コードの見た目(スタイル)をチェックする作業も自動化に最適です。 RuffやBlackといったツールを使えば、書き方のルールが守られているかを瞬時に判定できます。
コードレビューで「ここのスペースが足りない」といった細かい指摘をする必要がなくなるため、チーム開発が非常にスムーズになります。 一人で開発している場合でも、常に整ったコードを維持できるのは気持ちが良いものです。
先ほどのテストのワークフローに、一行追加するだけでリンター(静的解析ツール)の実行が可能になります。 常に高品質なコードを目指すことは、エンジニアとしての信頼に直結します。
パッケージの公開までを自動化しよう¶
テストが通り、コードが綺麗であることが確認できたら、いよいよ「公開」のステップです。 自分で作ったPythonパッケージをPyPI(Python Package Index)に公開する作業も、GitHub Actionsにお任せできます。
GitHubのリポジトリに「タグ」を付けたときだけ、自動でビルドしてアップロードする設定を作ってみましょう。 これにより、コマンドの打ち間違いで古いバージョンを公開してしまうような事故がなくなります。
# 一部抜粋:公開用のステップ
- name: Build and publish
if: startsWith(github.ref, 'refs/tags/')
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
run: |
python setup.py sdist bdist_wheel
pip install twine
twine upload dist/*
ここで重要なのが、${{ secrets.PYPI_API_TOKEN }} という記述です。
パスワードなどの機密情報は、GitHubの設定画面(Secrets)に保存し、コードからは直接見えないようにするのが鉄則です。
エンジニア歴10年の私が伝えたい「自動化の落とし穴」¶
ここまでGitHub Actionsの魅力を語ってきましたが、長年エンジニアを続けてきた私から一つアドバイスがあります。 それは、「自動化を複雑にしすぎないこと」です。
自動化はあくまで手段であって、目的ではありません。 設定ファイルが1000行を超え、誰も内容を理解できないようなワークフローを作ってしまうと、それ自体がメンテナンスの負担になります。
まずは「テストが通るかどうか」だけを確認するシンプルなものから始めてください。 必要に応じて少しずつ機能を追加していくのが、挫折せずに使いこなすコツです。
また、実行時間が長くなりすぎないように配慮することも重要です。 「コードを1行変えるたびにテストに1時間かかる」ような環境では、開発のスピードが落ちて本末転倒ですよね。
賢いエンジニアは、キャッシュ(Cache)機能などを活用して、いかに効率よく自動化を回すかにこだわります。 道具に使われるのではなく、道具を賢く使いこなす視点を常に持ち続けてください。
まとめ:自動化はあなたを自由にする¶
GitHub Actionsを導入することは、24時間365日働いてくれる優秀なパートナーを雇うようなものです。 一度設定してしまえば、あなたは「本当に価値のあるコードを書くこと」だけに集中できるようになります。
.github/workflows/にYAMLファイルを作成する。on: pushで、コードを送るたびに自動実行させる。- テスト、リンター、公開のステップを順に整えていく。
このサイクルを回すことで、あなたの開発効率は飛躍的に向上します。 最初は小さなエラーが出るかもしれませんが、それを乗り越えた先には「自動化による圧倒的な安心感」が待っています。
プログラミングの世界には「面倒なことは機械にやらせろ」という格言があります。 GitHub Actionsという強力な武器を手に、より高度な開発ステージへと挑戦していきましょう!
ここまでお読みいただきありがとうございました。