GitHub Actionsとは?基本の使い方やできること、活用例をまとめて解説

自社運営を行うときに専用サーバーを導入してシステムを構築、そこまで行うと運用コストもかかり、運用開始後もシステム運用のために知識を持っている人材が必要になります。これを極力コスト、人材の両面で削減してくれるのがGitHub Actionsです。

GitHub Actionsとはどういうもので、導入してどのようなメリットがあるのかを具体的に解説します。

監修者 野田ゆうじ

プログラマー(PG)経験 3年 システムエンジニア(SE)経験 8年 プロジェクトマネージャー(PM)経験 7年 過去の開発システム ・ロケット飛行安全システム ・魚雷発射評価シミュレーションシステム ・船舶電話システム ・NHK番組管理システム ・IBM生産管理システム(データベース設計) ・学習塾管理システムパッケージソフト開発 ・6軸アームロボット開発 ・露光装置監視システム その他多数システム開発にかかわってきました。 39歳で独立して、アフィリエイトシステム開発と運営を3年ほど行い、 ライター業務を始めて現在に至ります。

\エキスパートが回答!/
この記事に関する質問はこちら
記事に関するご質問以外にも、システム開発の依頼やAIの導入相談なども受け付けております。

    会社名必須
    必須
    必須
    Eメール必須
    電話番号必須
    ご依頼内容必須

    GitHub Actionsとは

    Github Actionsとは

    GitHub Actionsは、GitHubリポジトリ内で自動化されたワークフローを作成し、継続的インテグレーション(CI)や継続的デリバリー(CD)を実現するツールです。GitHubリポジトリに設定された条件や処理に基づき、コードのビルド、テスト、デプロイを自動で行います。これにより、開発者は手動での作業を大幅に削減し、効率的にソフトウェア開発を進められます。

    GitHub Actionsの設定は、YAML形式のファイルで定義され、特定のイベント(例えばプッシュやプルリクエスト)がトリガーとなってアクションが実行されます。これにより、開発プロセスが自動化され、エラーのリスクが低減し、開発速度が向上します。GitHub Actionsは、さまざまな自動化タスクをサポートしており、リポジトリ内でのコードの管理やデプロイ作業をスムーズに行うための強力なツールです。

    ここでは、GitHub Actionsの具体的な仕組みやメリットなどを解説していきます。

    GitHub Actionsの仕組み

    Github Actionsの仕組み

    Github Actionsは、大きく分けてAction(アクション)、Workflow(ワークフロー)、Runner(ランナー)、Job(ジョブ)の4つに分類されています。それぞれの機能について下記に記述します。

    項目 機能
    Action
    (アクション)
    ・ワークフロー(Workflow)
    ・ジョブ(Job)
    ・アクション(Action)
    ・イベント(Event)・シェルスクリプト、Dockerコンテナ、JavaScript
    Workflow
    (ワークフロー)
    ・ジョブやアクションを自動化するために設定するファイル

    ・.github/workflows フォルダ内に格納

    ・ファイル形式はYAML形式

    Runner
    (ランナー)
    ・ランナーは、GitHub Actionsのアクションを実行するための実行環境

    ・GitHubが提供するホスティングランナーや、自分で設定するセルフホステッドランナーを使用可能

    ・Linux、Windows、macOSなどの環境で動作

    Job
    (ジョブ)
    ・Linux、Windows、macOSなどのOS環境で実行

    ・ワークフロー内で並列または順次処理

    ・jobs.<job_id>.needsを使って、他のジョブとの依存関係を定義

    ・適切な実行順序の設定

    関連記事
    Githubは日本語化できる?英語が不安な人向けに用語や使い方を簡単解説
    Githubは日本語化できる?英語が不安な人向けに用語や使い方を簡単解説

    GitHub Actionsの導入手順と使い方

    Github Actionsの導入手順と使い方

    ここまで、GitHub Actionsの機能やメリットなどを解説してきました。GitHub Actionsは、どのように導入してするのかを具体的に解説します。

    GitHubリポジトリにディレクトリを作成する

    GitHubリポジトリにディレクトリを作成することで、関連するファイルをグループ化し、プロジェクト構造を整理できるのです。また、ディレクトリを作成することで、ファイルの種類別に分類することもできます。リポジトリのルートや他のディレクトリと分けられます。ディレクトリを作成することで、GitHubが自動的にワークフローを検出し、実行できるようになります。

    ワークフローを作成・保存する

    .github/workflows ディレクトリを作成することで、GitHub Actionsを活用して継続的インテグレーション(CI)や継続的デリバリー(CD)のプロセスを効果的に管理できます。このディレクトリ内に配置されたYAML形式の設定ファイルによって、コードのプッシュやプルリクエストなどのイベントに応じて、自動的にビルドやテストが実行されるよう設定できます。

    また、GitHubのイベントをトリガーとして、さまざまなアクションを自動的に実行でき、プロジェクトのビルドからデプロイまでをスムーズに進められます。さらに、複数のジョブを独立して実行できるため、各タスクを効率的に分担し、並行処理が可能になります。これにより、開発プロセスの効率化と品質向上が実現できます。

    GitHub Actionsを活用することで、ワークフローが作れます。ここでは、GitHub Actionsを使って作成できるワークフローを3つ紹介します。

    CI(継続的インテグレーション)ワークフロー

    コードが main ブランチにプッシュされたときやプルリクエストが作成されたときに、ビルドとテストを自動実行します。

    yaml

    コードをコピーする

    # .github/workflows/ci.ymlname: CI Workflow

    on:

    push:

    branches:

    – main

    pull_request:

    branches:

    – main

    jobs:

    build-and-test:

    runs-on: ubuntu-latest

    steps:

    – name: Checkout code

    uses: actions/checkout@v3

    – name: Set up Node.js

    uses: actions/setup-node@v3

    with:

    node-version: ’16’

    – name: Install dependencies

    run: npm install

    – name: Run tests

    run: npm test

    CD(継続的デリバリー)ワークフロー

    コードが main ブランチにマージされたときに、自動デプロイを行います。

    # .github/workflows/deploy.yml

    name: Deploy to Production

     

    on:

    push:

    branches:

    – main

    jobs:

    deploy:

    runs-on: ubuntu-latest

    steps:

    – name: Checkout code

    uses: actions/checkout@v3

    – name: Deploy to server

    uses: some/deploy-action@v1

    with:

    server: ${{ secrets.SERVER_URL }}

    token: ${{ secrets.SERVER_TOKEN }}

    コードスタイルチェックとリント

    コードがプッシュされたときに自動でコードのスタイルチェックやリントを実行します。

    # .github/workflows/lint.yml

    name: Lint Code

    on:

    push:

    branches:

    – main

    pull_request:

    branches:

    – main

    jobs:

    lint:

    runs-on: ubuntu-latest

    steps:

    – name: Checkout code

    uses: actions/checkout@v3

    – name: Set up Python

    uses: actions/setup-python@v3

    with:

    python-version: ‘3.8’

    – name: Install dependencies

    run: |

    python -m pip install –upgrade pip

    pip install flake8

    – name: Run linter

    run: flake8 .

    関連記事
    【初心者向け】GitHubの危険性とは?セキュリティ対策や情報漏洩についてわかりやすく解説!
    【初心者向け】GitHubの危険性とは?セキュリティ対策や情報漏洩についてわかりやすく解説!

    GitHub Actionsを使うメリット

    Github Actionsを使うメリット

    それでは、GitHub Actionsを使うメリットには何があるのでしょうか?GitHub Actionsを使うメリットには以下の3つが考えられます。

    • GitHubと連携して使用できる
    • サーバーの準備がいらない
    • 拡張性に優れる

    GitHubと連携して使用できる

    GitHub Actionsを利用することで、外部ツールやサービスに頼ることなく、GitHubリポジトリ内で直接CI/CDパイプラインの設定とセットアップができます。

    プッシュ、プルリクエスト、イシュートラッキングなど、GitHub内のさまざまなイベントをトリガーとしてワークフローを自動実行できるため、開発の効率が大幅に向上します。アクションの実行状況やログ、結果はすべてGitHubのユーザーインターフェースで確認でき、視覚的に進捗状況を把握できます。

    開発者はコードの変更やその結果をリアルタイムで確認し、迅速にフィードバックを得ることができるため、フィードバックループが短縮され、開発スピードが向上します。

    セキュリティ面においてもGitHub Actionsは強力です。リポジトリのセキュリティ設定やアクセス権限と連動して、アクションの管理・実行を一元的にコントロールできるため、セキュリティリスクを最小限に抑えつつ、効率的な開発運用が可能です。

    サーバーの準備がいらない

    GitHub Actionsを使用すれば、専用のサーバーは必要sりません。GitHubはホスティングランナーを提供しており、これを利用することで仮想サーバー環境を構築し、サーバーの運用なしでCI/CDパイプラインを実行可能です。

    この方法で、サーバーの設置や管理に関連するコストや労力を大幅に削減できます。

    ホスティングランナーを使用することで、サーバーの保守・メンテナンスも不要です。GitHubのインフラがすべての作業をサポートし、運用やアップデートの負担を軽減するため、開発者はサーバー管理にかかる無駄なコストや労力から解放されます。

    これにより、より効率的に開発作業を進められ、リソースを最大限に活用できます。

    拡張性に優れる

    GitHub Actionsは、その拡張性において非常に優れた機能を提供します。JavaScriptやDockerコンテナを用いてカスタムアクションを作成できるため、自分の特定のニーズに応じた処理を自動化が可能です。

    この柔軟性により、さまざまなタスクを効率的に自動化できるのです。GitHub Actionsは、YAML形式の設定ファイルを使用して複雑なワークフローを自由に設計できます。ジョブやステップの依存関係を細かく設定し、並行処理や条件付き実行など、多様な要件に対応できます。

    セルフホステッドランナーを活用すれば、特定のソフトウェアやハードウェア環境でもアクションを実行できるため、ニーズに合わせたカスタマイズが可能です。GitHubのAPIやWebhooksと統合すると、外部サービスやツールとの連携が簡単に行えます。

    この連携で、より高度な自動化やカスタムなインテグレーションが実現でき、開発プロセスをさらに強化できます。

    GitHub Actionsを他ツールと連携してみる

    Github Actionsの活用例

    ここまで、GitHub Actionsの特徴やできることなどを解説してきました。ここでは、GitHub Actionsを他のツールと連携する方法を紹介します。

    • Slackアプリ設定から通知用アプリの作成
    • ワークスペースにアプリをインストール
    • Webhook URLをGitHubに設定する

    Slackアプリ設定から通知用アプリの作成

    アプリを追加するには、まずワークスペースを選択し、次にYAMLファイルをApp Manifestに設定します。最後に、incoming-webhookを使ってSlackに通知を送信します。これにより、GitHub Actionsでの通知がSlackチャンネルに届くようになります。

    ワークスペースにアプリをインストール

    ワークスペースにアプリをインストール

    ワークスペースにアプリをインストールするには、「その他」にマウスポインターを重ね、 「自動化」を選択します。「App」をクリックします。

    インストールしたいアプリを検索して「追加」を選択すると、Slack App ディレクトリに自動的に移動します。「Slack に追加」を選択して完了です。

    Webhook URLをGitHubに設定する

    GitHubのリポジトリの画面でSettingsタブをクリックすると、左のリストメニューにWebhooksという項目があるので選択します。

    Webhook

    Add webhook」を押下することで、Webhookを作成できます。

    Payload URLはWebhookのPOSTリクエストを受け取るURLです。

    Content typeはPOSTリクエストのContent typeです。

    通常のキー1=値1&キー2=値2のフォーム形式かJSONのデータを受け取るかの指定ができます。

    GitHub Actionsの主なActionコマンド

    Github Actionsの主なActionコマンド

    GitHub ActionsにはたくさんのActionコマンドがあります。ここでは、Actionコマンドの代表的なものを解説します。

    Action名 概要
    Run シェルコマンドやスクリプトを実行するときに使う
    Uses GitHub Actionsを呼び出すときに使う
    With uses コマンドを使ったときに使用するパラメータを定義する
    Env 環境変数を定義するもの
    Jobs ワークフロー内で実行するジョブを定義する
    Steps ジョブ内で使うコマンドやアクションを指定する
    runs-on ジョブの実行環境を定義する(使用するOSの種類を定義)
    On トリガーするイベントを定義するときに使うコード
    Needs 実行順序を考えて、他のジョブが完了するまで待機するために使う
    If 条件付きでステップやジョブを実行を分岐させるときに使う
    Defaults ジョブなどのデフォルト設定を行う
    continue-on-error エラーになってもそのまま実行するようにする
    timeout-minutes ジョブ実行の制限時間の設定
    steps.with ステップ内でアクションに対してパラメーターを渡す
    Outputs ジョブから辻のジョブへ値を渡すときに使う
    Secrets GitHub Secretsから機密情報を取得する

    GitHub Actionsを使う上での注意点

    Github Actionsを使う上での注意点

    GitHub Actionsを実際に使うときには、いくつか注意点があります。プランごとに使える時間や容量が変わります。また、利用には制限される機能があるので注意してください。注意点を具体的に解説します。

    プランによって使える時間・容量が異なる

    GitHub Actionsを利用するとき、プランが複数あります。プランごとに費用や利用容量などが変わっているので、その点をしっかり把握してからプランを選定しましょう。

    自社の運用に合ったプランを選ぶことが重要になります。

    プラン名 プランの費用 利用可能時間 ストレージ容量
    Free 無料 月2,000分 500Mb
    team 1ユーザー1年間44$ 月3,000分 2Gb
    Enterprise 1ユーザー1年間231$ 月50,000分 50Gb

    プランを選ぶときは、各プランの制約などを理解してから利用してください。

    利用には制限がある

    GitHub Actionsを使用する際には、以下の制限を遵守する必要があります。まず、GitHub Actionsは、コンテンツ配信ネットワーク(CDN)やサーバーレスアプリケーションの一部として使用することはできません。

    また、クリプトマイニングやその他の悪意ある行為に利用することも厳しく禁止されています。加えて、サービス、デバイス、データ、アカウント、ネットワークの中断や取得、不正使用に利用することも禁止されています。

    さらに、GitHub Actionsの製品やサービスを商業目的で利用することも認められていません。これらのガイドラインを守ることで、GitHub Actionsの安全で公平な利用が確保されます。

    まとめ:GitHub Actionsの特徴やメリットを理解して開発に役立てよう

    Github Actionsの特徴やメリットを理解して開発に役立てよう

    ここまでGitHub Actions特徴やメリットについて詳しく説明してきましたが、これにより自社にどのような利益がもたらされるかが明確になったかと思います。自社の開発プロセスの効率化や品質向上に大いに役立つことでしょう。その一方で、AI技術の導入においてもサポートが必要な場合があります。

    株式会社Jiteraは、豊富な専門知識を持ち、AIを活用したシステム開発やAI導入支援を行っております。もしAIに関する質問やプロジェクトのご相談があれば、ぜひ株式会社Jiteraへご連絡ください。自社の利益拡大に向けて、私たちが全力でサポートいたします。

    株式会社Jitera

     

     

    例:開発手順、ツール、プロンプト

    メルマガ登録

    社内で話題になった「生成AIに関するニュース」をどこよりも早くお届けします。