
GitHub Actionsは、ソフトウェア開発の進化の触媒
現代のソフトウェア開発は、ある課題を抱えている。あまりに多くのツールやソフトウェアが世の中にあふれていることだ。コンピューターの登場以来、それらの数は指数関数的に増加してきた。その結果、私たちが構築すべき開発ワークフローは複雑になりすぎてしまったのだ。
「その課題を解決するために、GitHub Actionsを開発しました。私たちは、ソフトウェア開発におけるワークフローは各ツールやフローがモジュール化されており、コンポーネントの自由な組み替えや再利用が可能であるべきだと考えています」
GitHub Actionsを使用すれば、ワークフローのコードをActionと呼ばれるコンテナに格納し、それらを相互に連結させて実行させることが可能だ。世界の誰かが作ったActionを再利用することも、自分が作ったActionを世界中に公開することもできる。ワークフローにフックできるイベントとして、check_runやdeployment、releaseなど26種類が用意されている。
「GitHub Actionsは、コンテナ技術をベースにしてWorkflow as Codeを目指すものです。私たちはこの機能を、ソフトウェア開発の新たな進化の触媒になるものだと信じています」
GitHub Actionsの概要説明の後、池田氏は動画によるデモを交えて機能の解説を行った。題材は、開発者にはおなじみの「Hello World」を表示するActionとワークフローである。手順は以下の5ステップに分かれている。
- Actionを格納するリポジトリを作成
- ActionをDockerfileとして定義
- エントリーポイントとなるシェルスクリプトを定義
- 定義したActionを呼び出すワークフローを定義
- 実行
「まずはリポジトリを用意します。まだワークフローファイルも存在しない状態なので、この中に自分で作ったActionを格納していきます。Hello World ActionをDockerfileとして定義しましょう」

Dockerfileには、さまざまなメタ情報を設定可能だ。Actionの名前やディスクリプション、リポジトリのURIやホームページのURI、メンテナ情報のほか、画面に表示される際のアイコンや色なども指定できる。
さらに、Dockerfile内に「ADD」という設定を記載することで、リポジトリ内のシェルスクリプトを追加できる。また「ENTRYPOINT」という設定を行うことで、そのシェルスクリプトをエントリーポイントとして定義可能だ。Actionの用意ができたら、次はワークフロー作成を行う。
池田氏は、GitHubの画面上から操作を行うことで、「Hello World」のワークフローが簡単に作れること、そして、編集した各ファイルのレビューやmasterブランチへの取りこみもPull Requestをベースにして行えるため、GitHubに慣れた開発者には非常にわかりやすい開発フローになることを解説した。
詳細情報として、現状のGitHub Actionsが持つ仕様や制限について以下のとおり言及された。
- ワークフローの実行時間は最大で58分
- ワークフロー1つにつきアクションは100個まで呼び出し可能
- 1ファイル内に複数ワークフローを定義可能だが、並列実行されるのは1リポジトリあたり2つまで
- アクションは他のワークフローをトリガーできない
- APIコールは1リポジトリあたりトータルで1時間1000回まで
- プロダクションのSecretを格納しないこと(ベータ版のうちはログにそのまま出力されてしまう)
- ActionはDockerfileなのでDockerでできることはたいていできるが、制限あり
現在ベータ版のため、今後変わっていく可能性は大いにあるという。
今後、ワークフローはより自由になっていく
セッション後半では、GitHub Actionsを使ってマネージドKubernetesサービスのAmazon EKSへサービスをデプロイするデモが実施された。デモで用いられたワークフローは、GitHub Actionsのリポジトリ内にサンプルとして公開されているもの。挙動は以下のとおりだ。
featureブランチの場合
- Docker buildして対象サイトのDockerイメージを作成
- 作ったイメージをTagづけ
- イメージをDockerレジストリ(ECR)にプッシュ、登録(プッシュの前にECRへログインしておく)
Masterブランチの場合
featureブランチの挙動に加えて、以下のとおり。
- k8sのConfigをアップデート(aws eks update-kubeconfigする)
- k8sのクレデンシャルを設定
- ECRに格納されているイメージを、EKSへデプロイ
- デプロイされたことの確認
- ExposeされたIPアドレスをリスト

このワークフローにおいて、開発者がActionを自作する必要はない。すでに有用なActionがいくつも公開されているため、それらを組み合わせるだけでデプロイが実現できる。Actionや各種設定の解説をしながら、Amazon EKSへのデプロイが非常に容易に行えることを池田氏は示していった。
「今回のデモを見ていただければわかるように、Actionを作るのも、使用するのもとても簡単です。基本的には、既存のツールやオペレーションをコンテナ化するだけ。きれいにモジュール化すれば、再利用もききやすくなります」
すでにGitHub Actionsのリポジトリ上には、業務で活用できるようなActionがいくつもある。例えば、GCPやAWS、Azure、Heroku、Zeit、npmなどのクラウドサービスを操作できるActionが用意されている。また、Actionを開発・実行するのに役立つ各種ライブラリもそろっている状態だ。
最後に、池田氏は本セッションをこう総括した。
「今後、ワークフローはより自由になっていきます。ワークフローはモジュール化されて、オープンソースとしてみんなでブラッシュアップしていくものになるでしょう。みなさんと一緒に、ソフトウェア開発の世界に新しい1ページを作りたいと思っています」
お問い合わせ
GitHub