ニュース

GitHub、「GitHub Universe」での発表内容を解説 開発プロセス全体の生産性を引き上げる多数の新機能を提供

開発者の活動をまとめた年次レポート「The State of the Octoverse 2021」の紹介も

 GitHubが10月28日(米国時間)に開催した年次イベント「GitHub Universe」での発表内容について、日本でメディア向けに解説する記者説明会が12月1日に開催された。11月16日にGitHubが発表した、GitHub上のソフトウェア開発者の活動をまとめた年次レポート「The State of the Octoverse 2021」についても紹介された。

 この記事では記者説明会の内容を中心に、同日に開催された、GitHub Universeでの発表内容を一般向けに解説するイベント「Best of GitHub Universe」の内容を一部まじえてレポートする。

GitHub リジョナルディレクター 山銅章太氏
GitHub シニアソリューションズエンジニア 田中裕一氏

IT企業以外の業種での採用も進む

 まずGitHub リジョナルディレクターの山銅章太氏が、The State of the Octoverse 2021の内容を中心にGitHubの現状を紹介した。

 まずGitHubの現状として、7300万人以上のユーザーと、何千ものオープンソースコミュニティがGitHub上にあり、Fortune 100企業の84%が利用しているという数字を山銅氏は挙げた。「開発者の声を元にしたサービス開発が成長の元になっている」という。

 日本市場については170万人のユーザーがあり、売上が昨年比40%成長したと山銅氏は報告した。氏はさらに、GitHub Enterprise(GitHubをオンプレミスやクラウドの専用サーバーで実行する製品)のユーザー企業の例を紹介。「かつてはインターネットサービスを開発する企業が中心だったが、ここ2~3年はライフラインや製造業、金融、医療など、多くの分野の企業に採用いただいている。同様に、SIや受託開発の企業にも利用されるようになった」と市場の変化を語った。

GitHubの現状
GitHubの日本市場の動向
日本のGitHub Enterpriseユーザー企業の例

自動化や再利用で生産性はどれだけ向上?

 続いてThe State of the Octoverse 2021の報告からの紹介だ。グローバルでユーザー数が昨年から28%増加した一方、日本では30%増加した。ユーザー数増加はブラジルやインドが最も多かったが、それに次ぐぐらいだという。

 GitHub上のプログラミング言語の順位としては、JavaScriptが不動の1位で、機械学習などで人気のあるPythonが、この3年ほど2位を守っている。続いて、Javaが3位、ここ数年伸びているTypeScriptが4位となった。

The State of the Octoverseより:ユーザー数
The State of the Octoverseより:GitHub上のプログラミング言語

 そのほか今回は、開発者の生産性がThe State of the Octoverseで初めて数値化された。着目点は、自動化、コードの再利用、ドキュメンテーションだ。

 自動化については、GitHub Actionsで自動化することで、マージするプルリクエストが36%増加し、マージにかかる時間が33%減少したという数字が挙げられた。また、コードレビュー担当者が1人増えると17%生産性が下がり、品質と生産性のバランスとしてはレビュー担当者は3名にとどめることを推奨すると報告された。

 コードの再利用については、再利用で向上する生産性は87%と報告。具体例としては、オープンソースを活用し、そのぶん差別化要素に時間をかけることが挙げられた。そして「インナーソースなど社内で活用する共通コードは社内で再利用することが求められている。そのために会社のプラットフォームを統一することが必要とされている」と、山銅氏は述べた。

 最後にドキュメンテーションについては、ドキュメンテーション整備により50%の生産性向上があったと報告した。

自動化による生産性向上
レビュー担当者が1人増えるごとに下がる生産性
コードの再利用で向上する生産性
ドキュメンテーションによる生産性向上

DiscussionsにActions連携やラベル分類が追加

 続いて、GitHub Universeでの発表のハイライトを、GitHub シニアソリューションズエンジニアの田中裕一氏が解説した。

 田中氏は最初に、GitHubはもはやコードやIssueをホストする場というだけではなく、アイデアから製品化まで完全に統合されたプラットフォームへと変遷したと述べた。そのうえで、今回のGitHub Universeでも、そうした幅広い開発プロセス全体において仕事の生産性を底上げする発表がなされたと説明した。

開発プロセス全体で新発表

 まずは、アイデア出し段階を支援するGitHub Discussionsだ。ソフトウェアの機能のアイデアなどに関してフィードバックや議論をする掲示板機能で、2020年にリリースされた。

 Discussionsについて今回発表されたのは3つ。1つめは、GitHub Actionsとの連携で、例えばDiscussionへの投稿に対して、自動返信や、Slackへの通知などが考えられるという。

 2つめは、ラベルによる分類だ。たくさんの議論が立ったときに、ラベルによってカテゴライズして整理できるようになった。

 3つめとしては、GitHub Mobileからも使えるようになった。

 そのほか、近日公開予定の機能としては、投票機能や、どういう人が投稿しているかのアクティビティがわかるコミュニティインサイト機能を田中氏は紹介した。

GitHub Discussionの機能強化。画像は投票機能(近日公開予定)の例

Issues/Projectsのテーブルビュー機能や子Issue化機能

 同じくアイデア段階で、より開発寄りにあるのが、チケット管理などの機能を持つGitHub Issues/Projectsだ。今回は、このIssues/Projectsが大きく機能強化された。

Issues/Projectsの機能強化

 最初に紹介された機能強化が、タスクをIssueに変換する機能だ。Issueの中でやるべきタスクを、チェックボックスを使ったチェックリストにすることがよくある。ただし、後から独立したIssueにしたほうがよかったということもあるという。

 そこで、チェックリストの項目に表示される「Convert to issue」ボタンをクリックすると、元のIssueと親子関係のあるIssueが立てられる。新しい子Issueをクローズすると、親Issueのチェックリストにも反映される。

チェックリストから「Convert to issue」ボタンをクリック
子Issueが作られる
新しい子Issueをクローズすると親Issueのチェックリストにも反映される

 プロジェクト内のIssueやプルリクエストの進捗を、カードを並べた形式で一覧できるようにするのが、GitHub Projectsのプロジェクトボード。今回は、これを表形式で表示するテーブルビューが追加された。

 テーブルビューでは、Issueやプルリクエストが行となって、列となるフィールドはユーザーが追加して定義できる。これをフィルタリング表示したり、フィールドの値によってグルーピングしたりできる。「これまでのプロジェクトボードからだいぶ柔軟になった」と田中氏は説明した。

 プロジェクトボードは、プライベートなものもパブリックなものも作れる。なお、これまでプライベートベータの機能だったが、今回のGitHub Universeのタイミングでパブリックベータになった。

GitHub Projectsのプロジェクトボード
新しいテーブルビュー

 そのほかのIssue/Projectsの近日公開予定の機能としては、自動化するWorkflowsや、時系列変化を可視化するInsightsを田中氏は紹介した。

自動化するWorkflows(近日公開予定)
時系列変化を可視化するInsights(近日公開予定)

Codespaceの開発環境にssh接続

 コードリポジトリからその開発環境をクラウド上利用できるGitHub Codespacesについても、いくつかの機能強化がある。

Codespacesの機能強化

 まず、SSHでCodespacesの開発環境(コンテナ)のコマンドラインにアクセスできる機能が追加された。GitHubを操作するCLIコマンドであるghコマンドから「gh codespace」サブコマンドで利用できる。これにより、コマンドラインから好きなCUIエディターを利用できるようになる。これにともなって、ghコマンドでも利用するREST APIも提供された(ベータ)。

 そのほかVSCodeからテンプレートを選んでコンテナ設定ファイルを作る機能では、より細かい単位で追加できるようになったという。

 プリビルドの機能も追加された(プライベートベータ)。通常はCodespacesを呼び出すときにコンテナを作成して起動するが、大きな環境では作成に時間がかかる。そこで、コンテナをあらかじめ作っておくことですぐ使えるようにする。

 そのほか、ポートフォワードのアクセス制御や、GitHub Container Registryへのアクセスといった追加点も田中氏は挙げた。

Codespaceの開発環境にssh接続
コンテナ設定ファイルを作る機能を強化

 新機能に加えて、GitHub社内でもCodespacesをスタンダードな開発環境としていることも田中氏は紹介した。それまで、新しいプロジェクトに参加するときの環境構築は、自動化しても最短で45分、エラーがあると半日かかっていたという。これを、Codespacesにすることで5分に、さらにプリビルドによって10秒に短縮したと説明した。

 また、Codespaceを使うことで、自分のマシンで動いて同僚のマシンでは動かないといった環境依存の問題をなくせることや、タスクの途中でコードレビューするときなどに、開発環境を作るコンテキストスイッチが小さくなったと田中氏は語った。

GitHub社内でのCodespace利用事例

ActionsのOpenID Connect対応やCopilotの新機能

 プログラミング中にAIでコード片を補完するGitHub Copilot(テクニカルプレビュー)も機能強化された。これまでコードエディターとしてVSCodeだけの対応だったが、新たにNeovimとJetBrainsのIDE(IntelliJ IDEAとPyCharm)に対応した。また、Javaでの複数行サジェストにも対応した。

Copilotの機能強化

 GitHub Actionsについては、まず、Marketplaceで公開されているアクションが1万件を超えたことを田中氏は紹介した。「コンポーネントを再利用する仕組みはほかのCI/CDなどのツールにもあるが、エコシステムの大きさがActionの強みだと思う」(田中氏)。

 アップデートとしては、まず、アクション単位に加えてワークフロー全体の再利用に対応した。また、OpenID Connectに対応することで、シークレットを人間が取得してGitHubに登録することなく自動で取得し、ワークフローを実行するたびにその回専用のシークレットを利用できる。

 また、オンプレミスなど自力でActionsの実行ホストを立てるときに、オートスケールで拡大縮小するトリガーのためのWebhookが用意された。

Actionsの機能強化

Azure ADなどでアカウントを管理する機能など

 そのほかの機能としては、コード中の脆弱性などを検出するCode ScanningがRuby言語に対応した(ベータ)。

 また、コードでブランチをマージするときに、マージキューの機能が加わった。gitにおいて複数のブランチでそれぞれ作業していて、mainにマージしようとするとき、それぞれmainからブランチした時点が違うとエラーになることがある。そこで、mainにマージする前にマージキュー用ブランチにマージし、ビルドが失敗したらマージが取り除かれて、成功したらmainをマージキューの内容に進めるというものだ。

 Repository Roleとして、リポジトリの権限設定で指定する権限として、新しいロールを作ってカスタマイズすることも可能になった。

 最後に紹介されたのがEnterprise Managed Userだ。通常のGitHubアカウントは各個人が作成してからOrganizationなどに登録する。それに対してEnterprise Managed Userでは、GitHub Enterprise Cloudにおいて、管理者がその組織の中だけに閉じたアカウントを作成して、権限設定や停止まで管理する。アカウントは、Azure ADやOktaといったSCIM(System for Cross-domain Identity Management)で作ったものを利用するようになっている。

Code ScanningがRubyに対応
マージキューの機能
Repository Role
Enterprise Managed Users