CodeZine(コードジン)

特集ページ一覧

いまさら聞けない? GitHubの概要から新機能まで一挙に紹介【デブサミ2018 夏】

【A-7】意外と知らない?!GitHubの新機能を紹介します

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2018/08/30 14:00

 GitHubは開発プラットフォームであり、プログラムを共有し、ソフトウェアの共同開発をしやすくするためのプラットフォームだ。誰かがソースコードを書いたら、「プルリクエスト(Pull Request)」でレビューを要請し、本体にマージするのが基本的な流れ。共同開発の生産性を高める仕組みとして定着している。GitHubエンタープライズサポートエンジニアの鈴木順子氏が解説する。

GitHub エンタープライズ サポート エンジニア 鈴木順子氏
GitHub エンタープライズ サポート エンジニア 鈴木順子氏

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 Business CloudとGitHub Enterpriseの違い
GitHub Business CloudとGitHub Enterpriseの違い

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は近日対応予定。

GitHubの新機能:Issue関連

重複IssueやPull Requestの管理(Enterprise, GitHub.com)

 重複しているトピックに「duplicate(重複)」マークを付けることができる。「Saved replies」ボタンに用意された定型文を使うと便利。議論の分散を防ぐことができる。

Multiple Issue Templatesの改善(Enterprise, GitHub.com)

 バグレポートやフィーチャーリクエストなど用途ごとにIssue Templateを作ることができる。[Settings]から作成できるようになり、UIも改善された。作成したテンプレートは「.github/ISSUE_TEMPLATE」配下に配置される。

Issueコメント編集履歴(Enterprise, GitHub.com)

 Issueの内容やコメントの編集履歴が参照できるようになった。コメント履歴は削除可能。

議論を制限する(Enterprise, GitHub.com)

 イシューで議論が白熱しすぎた時、[Lock Conversation]をクリックして議論に参加できるメンバーを制限できる。Write権限を持つユーザー、コラボレ-ター、リポジトリオーナーなど、特定のユーザーのみコメントできるようにする(下図)。

ユーザーをブロックする(GitHub.com)

 特定のユーザーやオーガニゼーションに対して、コメントやプルリクなどの更新をブロックすることができる。これまでブロックしたら解除するまでブロックが続いていたが、最近、オーガニゼーションに対してのみ、ブロックする期間を指定することができるようになった。指定した期間が過ぎたら自動的にブロックは解除される。

GitHubの新機能:プロジェクト関連

プロジェクトのテンプレート(Enterprise, GitHub.com)

 プロジェクトには「Basic kanban」や、アクションに応じてカラムを自動変更する「Automated kanban」といったテンプレートが用意されている。最近ではレビューのワークフローが盛り込まれた「Automated kanban with reviews」とバグ修正の優先度が盛り込まれた「Bug triage」のテンプレートが追加された。

Navigationの追加

 [Project]から関連するIssue情報の参照や変更、人をアサインしたりラベルを付けたりといったアクションを設定することができるようになった。

プロジェクトカードをアーカイブ

 [Project]のカードを[Archive]にできる。大人数が参加するプロジェクトだとカードが増えて煩雑になることがある。これまでは不要になったカードは[Remove]することがあったが、それだと参照できなくなっていた。新たな機能として[Archive]できるようになり、アーカイブされたリストからカードを参照できる。

GitHubの新機能:その他

GitHubページ:カスタムドメインでHTTPS利用可能(GitHub.com)

 カスタムドメインを利用している時、HTTPSを利用可能になった。セキュリティが強化された。

GitHub for Unity

 Unityエディタの拡張機能。Gitの操作、GitHubの機能、GitLFS、ファイルロック機能などが使える。GitHub for Unityのページから入手できる。

GitHub Enterpriseで注目の管理機能

 これまではユーザー向け機能を紹介してきたが、ここではGitHub Enterpriseにおける有益な管理機能を紹介する。

パッチ適用(Enterprise)

 バグ対応やセキュリティ対応したパッチがリリースされると適用される。基本的にダウンタイムなく、新しいパッチが適用されてアップグレードができる。

認証機能の併用(Enterprise)

 これまで認証はビルトイン、LDAP、SAML、CASから選べていたところ、新たに、認証機能を併用できるようになった。例えば社内ユーザーはLDAPで認証するが、社外のユーザーはGitHubのビルトイン認証を使いたいなど、使い分けたい時に便利。

非アクティブなユーザーを探す(Enterprise)

 これまでは1か月以上更新がない非アクティブなユーザーに"Dormant"という印をつける機能があったが、印をつける期間を変更できるようになった。非アクティブなユーザーを検出することでライセンスの節約につなげることができる(下図)。

GitHub EnterpriseからGitHub.comを検索する(Enterprise)

 GitHub Enterpriseはオンプレミス版なので、基本的にはGitHub.comと接続していない。しかしGitHub EnterpriseとGitHub Business Cloudを併用している場合には、GitHub EnterpriseからGitHub.com内を検索できる。

 この機能を利用するためには、GitHub Enterpriseから有効化すること、GitHub Business Cloudのアカウントがあること、そしてGitHub EnterpriseとGitHub Business Cloud間でHTTPSアクセスが可能なことが条件になる。

GitHub Enterpriseからサポートチケットが切れる(Enterprise)

 GitHub Enterpriseの管理画面からサポートチケットを切ることができるようになった。これまではサポート専用のWebサイトにアクセスする必要があったが、管理画面からできるようになり、必要な情報が自動で記入されるため利便性が向上した。

最新情報を得るためには

 GitHubでは頻繁に新しい機能や話題がリリースされている。最後に鈴木氏は、最新情報をキャッチアップするのにおすすめの情報源として、以下のサイトを提示した。

お問い合わせ

 GitHub

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5