GitHubは企業向けソリューションもある
まずはGitHubの基本機能からおさらいしよう。「開発プラットフォーム」ということでソースコードを保存し、バージョン管理ができる。特徴的なのは「プルリクエスト(Pull Request)」。新しくコードを書いた人が、仲間にレビューを要請する。ソースコードを本体に引きこむことをリクエストするとイメージするといいだろう。レビュー担当者は新しいソースコードに問題がないか確認し、マスターにマージ(合流)する。
共同開発を進めるにあたり、管理すべきはソースコードだけではない。細かな作業項目(タスク)やプロジェクトの動きを見て、情報共有することなども必要だ。そこでタスク管理にはIssue機能、プロジェクトはカンバン形式のProject機能がある。Webページを簡単に作成できるGitHub Pages機能もある。またAPI(REST APIやGraphQL API)も使うことができる。開発者が持つスキルを生かし、共同開発を進めやすくなっている。
オープンソースコミュニティではすっかり定着したものの、当初は企業の開発現場では知的財産保護の観点から踏み切れないケースが多かった。しかし企業で使うことを想定し、プライベートリポジトリを利用できる「GitHub Business Cloud」や「GitHub Enterprise」もあり、企業での導入が増えてきている。前者はSaaS版で、サイトの運用はGitHubが行うため運用の手間を軽減できる。後者はオンプレミス版で、自社内で運用するため、利用可能な機能が多い。どちらも月額料金は同じ(基本的にはユーザー数に応じた月額料金が課金される)。
「GitHub Enterprise」は機能が充実している。認証はLDAP、SAML、CASとビルトインのものから選べて、監査ログやシステム監視などの管理機能、バックアップユーティリティや高可用性のための機能もある。日本法人やパートナー企業による日本語のテクニカルサポートもあり、近年日本企業での導入が広まっている。
GitHubの新機能:リポジトリ関連
ここからは鈴木氏が一挙に新機能を紹介する。主にここ半年以内に追加された機能となる。GitHub Enterpriseに対応しているものは「Enterprise」、GitHub.comで使えるものは「GitHub.com」と付けておく。なお、GitHub.comで利用できる機能はすべてGitHub Business Cloudでも利用できる。
Security Alerts(GitHub.com)
CVEで報告された脆弱性から、もし依存するライブラリに脆弱性があれば管理者に通知する。これまでRubyとJavaScriptに対応していたが、新たにPythonも追加された。
Archiving Repositories(Enterprise, GitHub.com)
開発終了したものなど、リポジトリをアーカイブとしてリードオンリーに変更する。イシューやプルリクが停止され、フォークは可能。鈴木氏は「アーカイブする前にReadmeに更新終了と明記しておくことや、イシューやプルリクエストをクローズしておいてください」と念を押す。
LegalHold(Enterprise, GitHub.com)
WebUIからリポジトリを削除すると、一定期間が過ぎると完全にデータがパージされるが、内部的にデータを保持することができる機能。
git-sizerコマンド
Gitリポジトリに保存されたサイズを計算して出力するコマンド。肥大化してシステムに悪影響を及ぼす可能性があるリポジトリを見つけやすくする。git-sizer(GitHub)から入手できる。
git lfs migrateコマンド
大きなファイルを扱うコマンドとしてGitLFS(Git Large File Storage)がある。コミット済みのリポジトリをGitLFSでトラッキングをするとコミットし直すことになるため、履歴が上書きされてしまうが、「git lfs migrate import」を使うと履歴を変更することなくトラッキングができる。またサイズを調べるには「git lfs migrate info」が使える。拡張子ごとに調べることができる。git-lfs(GitHub)から入手できる。
GitHubの新機能:プルリクエスト関連
変更があったメソッドや関数を見つける(Enterprise, GitHub.com)
新機能ではないが便利な機能。[Pull Request]の[Files changes]タブを開くと、コードの差分が確認できる。[Jump to]から特定のメソッドや関数から差分を確認できて便利だ。Ruby、JavaScript、Go、Python、PHPに対応している(下図)。
ブランチ保護機能拡張:レビューワーの人数を指定可能に(Enterprise, GitHub.com)
特定ブランチを保護する機能として、「レビューワーの承認必須」、「Code Ownerの承認必須」、「CIやテストのパス必須」、「特定のチームのみマージ可能」、「GPGによる署名必須」を設定できる。新たにレビューワーの人数を指定することが可能になり、複数のレビューを必須とできる。
APIのチェック(Enterprise, GitHub.com)
[Pull Request]の[Checks]タブからAPIのチェックができる。Google Cloud Build、Travis CI、App Centerを使っていると、この画面からビルド結果の詳細を確認できる。CircleCIは近日対応予定。