GitHub Actions入門。Pythonコードのテストから公開までを自動化しよう

公開日: 2026-04-28

プログラミングを始めたばかりの頃、自分の書いたコードが正しく動くか確認するのはドキドキする作業ですよね!

「手元のパソコンでは動いたのに、サーバーに持っていくと動かない」という経験、エンジニアなら誰もが一度は通る道です。

こうした不安を解消し、私たちの代わりにコードのチェックを自動で行ってくれる魔法のようなツールがあります。 それが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(パイソンらしい)な書き方への第一歩

綺麗なコードを保つための自動チェック

テストだけでなく、コードの見た目(スタイル)をチェックする作業も自動化に最適です。 RuffBlackといったツールを使えば、書き方のルールが守られているかを瞬時に判定できます。

コードレビューで「ここのスペースが足りない」といった細かい指摘をする必要がなくなるため、チーム開発が非常にスムーズになります。 一人で開発している場合でも、常に整ったコードを維持できるのは気持ちが良いものです。

先ほどのテストのワークフローに、一行追加するだけでリンター(静的解析ツール)の実行が可能になります。 常に高品質なコードを目指すことは、エンジニアとしての信頼に直結します。

パッケージの公開までを自動化しよう

テストが通り、コードが綺麗であることが確認できたら、いよいよ「公開」のステップです。 自分で作った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日働いてくれる優秀なパートナーを雇うようなものです。 一度設定してしまえば、あなたは「本当に価値のあるコードを書くこと」だけに集中できるようになります。

  1. .github/workflows/ にYAMLファイルを作成する。
  2. on: push で、コードを送るたびに自動実行させる。
  3. テスト、リンター、公開のステップを順に整えていく。

このサイクルを回すことで、あなたの開発効率は飛躍的に向上します。 最初は小さなエラーが出るかもしれませんが、それを乗り越えた先には「自動化による圧倒的な安心感」が待っています。

プログラミングの世界には「面倒なことは機械にやらせろ」という格言があります。 GitHub Actionsという強力な武器を手に、より高度な開発ステージへと挑戦していきましょう!

ここまでお読みいただきありがとうございました。

Pythonの基礎から応用まで学べる
Python WebAcademy

Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。
また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。

Pythonの学習を始める