GitHub Actionsとは
ソフトウェア開発プラットフォームのGitHubには、バージョン管理システムとしてのGit以外にも様々な機能が提供されています。そんな数ある機能の1つに「GitHub Actions」があります。まずは、同機能の概要を説明します。
GitHubとは
そもそもGitHubとはどういったサービスなのでしょうか。GitHubはGitHub,Incが提供するソフトウェア開発プラットフォームであり、2018年にマイクロソフト社によって同社の傘下に加わりました。
より古くから存在するバージョン管理システムのGitを活用したシステムが特徴です。このGitでは、ソフトウェアのソースコードをリポジトリと呼ばれる格納場所に保管し、複数人で共有することで多人数でのソフトウェア開発をスムーズなものにしています。
オンライン上のリポジトリに対して、各開発者はローカルにリポジトリを持っており、各人のローカルでの編集内容が上手くオンライン上に反映されるよう工夫がされています。
オンライン上へ自分の編集内容を反映するための要求手続きは「プッシュ」と呼ばれ、それを受け入れて反映する手続きを「プル」と呼びます。
また、オンライン上のリポジトリのあるタイミングでソースコードを分けたい時は、「ブランチ」と呼ばれるシステムを使ってソースコードを分けることもできます。
【参考】:GitHub
GitHub Actionsでは何ができる?
上述したGiHubが提供する機能の1つにGitHub Actionsがあります。同機能はGitHubで行う手続きや処理を条件に応じて自動実行する機能です。
例えば、ソフトウェア開発の担当レベルの作業は、要求された設計をソースコードに反映し、オンラインのリポジトリにプッシュするまでです。一方、管理者レベルでは、複数人からのプッシュを確認し、どの程度プッシュがされたらバージョンを上げるかなどの管理作業を行うことが主です。
こうした管理作業は、少人数や小規模の開発では取るに足りませんが、大人数になれば作業量も増え、時間を取られることも多くなります。そんな時に本機能を活用すれば、今まで行っていた管理作業を条件付けして自動化することができ、開発効率を上げることができるでしょう。
自動化できることは管理作業だけでなく、コンパイルやテスト、デプロイにも及び、管理業務以外と自動化による作業工数の削減が大きく期待できます。
【参考】:GitHub Actions
料金体系と無料枠について
GitHub Actionsはどのようなユーザが使用でき、料金体系はどのようになっているのでしょうか。
GitHub Actionsは無料登録ユーザでも使用することができますが、もちろん無料枠として制限がされています。有料アカウントでも完全無料にはならず、同機能を使って生成した成果物を保存するストレージ容量と同機能で実行した自動処理の所要時間によって決まります。
公式サイトによれば、無料アカウントでは500MBと毎月2000分が無料枠として設定されています。1つ上のProアカウントでは1GBと毎月3000分が無料枠です。無料枠をオーバーした場合、1GBあたり0.008米ドル、1分あたり最低0.008米ドルが課金されます。
感覚としては、同機能でリリースやビルド作業を行う分には無料枠で十分ですが、大規模なテストを自動実行させる場合には、回数によっては容量や時間の無料枠を使いきる可能性があります。
【参考】:GitHub Actionsの料金体系
ベースとなるCI/CDとは
GitHub Actionsで提供されている手続きの自動実行は、一般的には「CI/CD」と呼ばれています。
CIは「Continuous Integration」の略語であり、「継続的インテグレーション」とも呼ばれます。これは、ソフトウェア開発において担当レベルの変更を、共有ソースコードに自動かつ高い頻度で統合するという意味です。
一方のCDは、「Continuous Delivery & Deploy」の略で、「継続的デリバリー及びデプロイ」と呼ばれています。こちらは、ソースコードの統合後のリリース作業と、製品へのソフトウェアの展開の自動化の意味です。
ソフトウェアの複雑化や人手不足が進む中で、品質を保ったまま開発フローを自動化する手法として本手法は注目が集まっています。
GitHub Actionsの使い方
GitHub Actionsの概要を説明してきましたが、実際にはどのようにして使えばいいのでしょうか。ここでは基本的な使用方法を解説していきます。
構成されるコンポーネント
まずは、GitHub Actionsの機能を構成するコンポーネントを紹介します。主に下記の5つから構成されています。
▪ワークフロー ワークフローは自動化したいプロセスそのものを表しています。同機能ではYAMLファイルで定義されており、リポジトリ内に直接作成します。
▪イベント イベントはワークフロー内のプロセスを実行するためのトリガーを表します。ユーザはワークフロー内でこのイベントを定義することで、状況に応じて自動的に処理を実施することが可能です。
▪ジョブ ジョブはワークフローの中で実施させたい処理そのものを表します。ジョブはワークフロー内で複数定義でき、並列で実行される形です。
▪アクション アクションはジョブの中で実行する処理の中で、あらかじめ定義されているカスタムアプリケーションです。GitHub Actions独自のものであり、レポジトリとして公開されているものを使用していく形であり、サードパーティが作成したアクションも多数存在します。
▪ランナー ランナーはわかりづらいですが、ワークフローを実行するサーバを表しています。基本的にはGitHub側が用意したサーバを使用することになりますが、OSはLinuxからWindowsまで様々です。
ワークフローファイルの作成
GitHub Actionsを実際に使用するためには、まず使用したいレポジトリにワークフローファイルを作成することがスタートです。このワークフローファイルは同機能ではYAMLと呼ばれています。
YAMLファイルは必ず.github/workflows以下に作成する必要がありますが、逆に言えばこのディレクトリに作成してしまえば、自動的に使用することができます。このYAMLファイルは複数作成することも可能であり、分けられていても基本的には並列で実行されます。
ワークフロー内の定義
ワークフローファイルを作成したら、次はその内容を定義していきます。記述は同機能独自のものなのでよく公式ドキュメントを見ていく必要があります。
まずはワークフローの名称を定義します。
name: test_workflow
続いて、ワークフローを実行するイベントも定義しましょう。簡単な例ではプッシュがされた時などが挙げられます。
on: push
そしてワークフローの中ではジョブが最上位の単位であり、その中に実施させたい処理を記載します。
jobs:
test_job:
並列で複数の処理を行いたい場合には、複数ジョブを定義することもできます。
ワークフローを実行するランナーを指定することも必要です。多くの場合ではLinuxを選択することが多いでしょう。
runs-on:ubuntu-latest
以降はstepsを使って個々の処理を記述していきます。stepsの中はrunを使って実行したいコマンドなどを記述します。
steps:
-run:(実行したいコマンドなど)
GitHub Actionsを導入するメリット
GitHub Actionsの詳細が分かってきましたが、実際に導入することでどのようなメリットがあるのでしょうか。ここでは、CI/CDとしてのメリットとGitHubとしてのメリットの両方を紹介します。
管理者による手作業が減り、開発効率が上がる
CI/CDとしてのメリットの1つとして、前半で述べたように開発管理者が行なっていた作業を自動化できることが挙げられます。
ソフトウェアの構造が複雑になればなるほどバグも増え、修正に伴うソースコードのマージとリリース作業も増えていきます。1回1回の作業自体は短くても回数が増えれば、合わせた作業時間も無視できなくなるでしょう。
GitHub ActionsなどのCI/CDでは、リリースやデプロイの作業を自分たちの手法に合わせて自動化することが可能です。したがって、どのような言語や開発環境でも柔軟に対応できるでしょう。
統合によるバグやコンフリクトの早期発見につながる
特にCIの部分で重要なことが、共有リポジトリへの統合が頻繁に行われることです。大規模なソフトウェア開発では、各担当が自身のローカルで設計やバグ修正を行い、テスト完了後に統合する流れが一般的です。
ここで複数の担当者がソースコードの同じ箇所を変更してしまうと、統合時に不整合が起きることがあります。これは競合と呼ばれ、解消するためには、整合が取れるよう追加変更が必要です。
こうした競合は統合の時間間隔が空けば空くほど広がっていき、収拾がつかなくなることもあります。加えて、一見すると競合がない状態に見えても動作時にバグが新たに発生する場合もあります。
こうした見えない統合後のバグも、大規模開発において直面する大きな問題の1つです。GitHub Actionsが提供するCIを活用すれば、条件を指定しての自動統合を行うことができ、管理者や担当者の手を煩わせることなく統合を高い頻度で行えます。
加えて、あらかじめ指定したテストも自動実行でき、不具合の抽出まで自動化可能です。GitHub Actionsは、少ない工数で品質を担保するために最適なツールと言えるでしょう。
GitHubと併用しながら使用できる
GitHub Actionsならではのメリットとして、やはりGitHubの提供するサービスの1つである点は見逃せません。
GitHubは世界中で数えきれない人数が使用しているバージョン管理ツールであり、読者の中には既に使用している方もいるでしょう。GitHub Actionsは同サービスを使用していれば誰でも使用可能であり、管理しているレポジトリにワークフローを追加するだけなので導入も非常に簡単です。
こうした導入障壁の低さは、他のCI/CDツールよりある意味で優れた点と言えます。さらにGitHubのユーザ数を活かし、ワークフローで実行する処理のテンプレートが多く公開されている点もポイントです。
GitHub Actionsをより詳しく学ぶためには
GitHub Actionsの使い方やメリットを紹介してきましたが、実際に使ってみるにあたって、例を見ながら進めることがベストです。ここでは、公式サイト内で参考になるワークフロー例を紹介します。
公式サイトのクイックスタート
まず参考にしたいのは、公式サイトのクイックスタートです。ここでは、本記事で述べた使用方法と基本的には同じ内容ながら、サンプルコードやスクリーンショット付きで手順が詳しく記載されています。実際に使いながら手順を学びたい方におすすめできるでしょう。
最後の方では次の段階として、応用的に使うための手順が記載されたリンクがまとめられています。さらに深く学ぶためにぜひとも活用しましょう。
公式サイトの応用サンプル
公式サイトでは、クイックスタート以外に応用的な機能を活用したサンプルワークフローも公開されています。
ここで紹介されているサンプルでは、コードを自動チェックするワークフローが含まれています。途中から機能追加された手動実行機能についても方法が紹介されているので、参考にしながら自分でもトライしてみるとよいでしょう。
残念ながら文章の多くは英語のまま翻訳されていませんが、サンプルコードなどは活用できるでしょう。
【参考】:GitHub Actionsの例
GitHub Actionsを使いこなして開発効率アップ
本記事で紹介したように、GitHub ActionsはCI/CDを実現するためのGitHubが提供するサービスの1つです。国内で働き手が不足している中、ITエンジニア業界もその例に漏れず人手不足は深刻な問題です。CI/CDを実現し、品質を落とさずに工数を削減することを目指さなければ今後苦境に立たされるでしょう。
GitHub ActionsはGitHubのサービスの一部でもあり、GitHubユーザであれば気軽に始めることができます。ソフトウェア開発を進める中で、管理作業やテスト作業に時間を取られていると感じているならば、本記事や公式のドキュメントを参考に試してみてはどうでしょうか。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから