【概要】GitHub Actionsとは?
GitHub Actionsとは、GitHub上でCI/CD機能を使用できるサービスのことで、ビルドやテストを簡単に自動化させることができる画期的な手法です。
これまでは、ベータ版として公開されていたGitHub Actionsですが、2019年11月のGitHub Universe 2019で、正式版になったことが発表されています。
設定ファイル内の処理をコード化し、GitHub Marketplaceという場で世界中の人々と共有できるので、常にブラッシュアップしていくことが可能。
開発者の負担や、コードミスなどの削減にも繋がる便利なサービスにも関わらず、publicリポジトリであれば無料で利用できるという点から、すでに多くの開発者から注目されています。
CI/CDとは
GitHub Actionsを理解する上で必要な用語を解説します。
まずは、GitHub Actionsの要とも言える「CI/CD」について。
CI/CDとは、CIとCDの作業を合わせて行われるシステムのことで、ビルド、テスト、デプロイを自動化することができます。
ビルドやテストを自動化するのはCIで、テストされたコードのマージや本番環境向けのビルドの作成はCDで自動的に行うという仕組み。
それぞれの用語については、以下で解説します。
CI(Continuous Integration)
IT用語におけるCIは、日本語で「継続的インテグレーション」と呼ばれています。
ソフトウェア開発における品質管理を短期間で行う手法のことで、実際には、頻繁に繰り返しビルドを実行するといった作業を行っています。
開発効率化や問題の早期発見などが可能になることがメリットですが、開発サイクルを短期間で回すため、コストが高くついてしまうのが難点。
そのため、CIを導入する場合には、多くの作業を自動化してくれる「CIツール」が採用されています。
「Circle CI」や「Jenkins」などのツールが有名どころです。
CD(Continuous Delivery・Continuous Deployment)
CDは、日本語で「継続的デリバリー」や「継続的デプロイメント」などと呼ばれています。
継続的デリバリーとは、開発者によるコード変更に対して、バグがないか自動的にテストし、実稼働環境へのリリース準備が実行される手法のこと。
それに対し、断続的デプロイメントとは、断続的デリバリーのプロセスをさらに延長して、自動的に本番環境にリリースした後、顧客が使用できるようにするというものです。
厳密にはどちらも異なる手法すが、同じ意味として使用されてることもあるようです。
GitHub Actionsの理解に必要な用語について
Github Actionを使用する上で必要な用語を以下にまとめていきます。
Workflow(ワークフロー)
Workflow(ワークフロー)とは、実行する処理とその処理を実行する条件を定義したもので、1つまたは複数のJobから構成されています。
Jobには、build、test、deployなどがあり、ワークフロー内では、「Action(アクション)」や任意のコマンドを実行することで、あらかじめ定義されている処理を呼び出すことが可能。
YAMLファイルという形式で設計されています。
Action(アクション)
Action(アクション)とは、あらかじめ定義されている処理のことで、自分で作ったり、Githubコミュニティで共有されているものを使うこともできます。
指定したリポジトリからソースコードをチェックアウトしてくれる処理や、Node.jsやRubyなどの環境のセットアップなど、すでにGithubからは、様々なアクションが提供されています。
GitHub Actionsの活用方法
![【概要】GitHub Actionsとは?](https://at-dx.net/wp-content/themes/the-thor/img/dummy.gif)
実際に、GitHub Actionsでどのようなことができるのか、主な活用方法を紹介します。
様々なことを自動化
「actions/setup-python」や「actions/setup-java」などのアクションを利用することで、各言語環境のセットアップを自動化することができます。
バージョンを範囲で指定すると、最新で有効なバージョンンを自動設定してくれるので、自信でインストールする手間が省けます。
対応言語は、Python、Java、Nodejsなど多数。
他にも、一定期間放置されたIssueをCloseすることができる「Close Stale Issues」というアクションも利用できます。
GitHub Actionsの事例紹介
すでに、自社のサービスや商品開発にGitHub Actionsを導入している企業も多く存在しています。
Flicの事例
![Flicの事例](https://at-dx.net/wp-content/themes/the-thor/img/dummy.gif)
出典:https://flic.io/shop/flic2-starter-kit
Flicは、様々な機能と連携できるIoTボタンを手掛ける会社。
自宅の電気や、スマートフォンなどと連携することが可能で、音楽をかけたり、電気を全てつける・消すなどの動作をボタン一つで行うことができるようになります。
このIotボタンを押すことがトリガーとなり、ワークフローが走る仕組みにGitHub Actionsが活用されています。
Twilioの事例
![Twilioの事例](https://at-dx.net/wp-content/themes/the-thor/img/dummy.gif)
アメリカのカリフォルニア州サンフランシスコに本社を構えるTwilio。
クラウドコミュニケーションプラットフォームサービス企業で、自社のWebサービスAPIを使って、電話やテキストメッセージの送受信を可能にするサービスを提供しています。
Twilioは、このサービスとGitHub Actionsを連携させたワークフローを作成。
Twilio経由でGitHub Actionsで上がったIssueを通知し、そのメッセージに返信するとGitHub Actions側にレスポンスが届くという仕組みを構築しています。
楽天グループ株式会社の事例
「楽天市場」や「楽天銀行」などで有名な楽天グループ株式会社。
フリマアプリのラクマでは、定期的な監査の基準も考慮した、インフラの追加や変更の増加に伴う管理メンバーを拡大したい、という問題を抱えていました。
そこで、GitHub Actionsを使用したGitOpsの仕組みを導入。
このシステムの導入により、プルリクエストベースで安全なリリースが行えることに成功しています。
GitHub Actionsを利用する3つのメリット
メリット1:利用料金が安い
CircleCIの利用料金は1ユーザー$15とコストがかかります。
しかし、GitHub Actionsは、publicリポジトリでは無料、privateリポジトリでは従量制で利用可能。
privateリポジトリでも、一定の無料枠があるので、開発コストを大幅に抑えることができます。
メリット2:再利用可能な処理を利用を利用できる(Action)
Actionを使用することで、CIのスクリプトを自分で書く必要がなくなります。
また、自分で作成して使い回すことも可能ですが、すでにGithubが提供しているActionをそののまま使用することや、カスタマイズすることもできます。
作業の時間短縮や、コードミスなどの削減にも繋がります。
メリット3:GitHub 内でシームレスに使える
Githubと統合性を高めることで、サービス初心者でも簡単に利用できるようになっています。
設定ファイルを追加するだけでCIが自動的に実行されるため、面倒な初期設定も不要。
Github内の画面に「Action」タブが現れ、操作できるため、使用方法について理解しやすい設計になっているのもポイントです。
【まとめ】GitHub Actionsの未来
ソフトウェア開発者の負担軽減や、業務効率化に繋がる様々な機能を持ち合わせているGitHub Actions。
プロジェクト管理や、バグのトラッキング、CI/CDまで全ての作業を行うことが可能なので、ソフトウェア開発だけでなく、様々な業務におけるツールとして、今後さらにニーズが高まっていくことでしょう。
参考資料
-GitHub
https://github.co.jp/features/actions
https://docs.github.com/ja/actions
https://resources.github.com/webcasts/jp-github-infocus-devops/
-CodeZine
https://codezine.jp/article/detail/11207
-DevelopersIO
https://dev.classmethod.jp/articles/latest-current-using-actions/
-Qiita
https://qiita.com/bigwheel/items/2ab7deb237122db2fb8d
https://qiita.com/Yuuki557/items/5ea3d46b8f6251805c4e
-fortee
https://fortee.jp/phperkaigi-2020/proposal/f4a44588-487c-412a-bcf4-a9d709bca67c
-aws
https://aws.amazon.com/jp/devops/continuous-delivery/
-さくらのナレッジ