
GitHub CLIは、2020年2月にGitHub社が公式リリースしたターミナル向けのコマンドラインツールで、コマンド名はghである。Go言語で実装されており、PullRequestやIssue、Releaseなどリポジトリ管理に必要な操作の大半をブラウザに切り替えずに完結できる。GitHub APIへの薄いラッパーではなくUXに踏み込んだ設計で、gh pr createやgh issue listのような直感的なサブコマンド体系を採用している。レビュー作業を端末側に寄せたい開発者から支持を集めた。
この記事の目次
- 従来のhubコマンドからの正統な交代劇
- 拡張機能とエイリアスによる成長性
- GitHub APIとの関係とスクリプト用途
- CI/CDからの呼び出しと運用上の留意点
- まとめ
従来のhubコマンドからの正統な交代劇

ghの前身的存在として、2013年頃から元GitHub社員のMislav Marohnić氏が個人プロジェクトで保守してきたhubコマンドが広く使われていた。hubはgitのラッパーとしてPR作成などを補助するものだったが、コミュニティ主導でGitHub固有機能の追従に限界があり、Wikiやプロジェクトボードなど後発機能には十分対応できていなかった。GitHub社は2019年にhubのフォークではなくゼロから新ツールを書き起こす方針を表明し、約半年のパブリックベータを経て2020年2月にgh 1.0として一般公開した。
コアチームのMariko Kosaka氏らはCLIの設計を「会話的なテキストインターフェース」と位置づけ、対話プロンプトと非対話モードを両立させた。gh pr createを引数なしで叩くとブランチ名や本文をその場で尋ねられ、CI用途では--titleや--body-fileで完全にスクリプト化できる。この二段構えはhub時代にはなく、ghが急速に普及する原動力になった設計判断である。
拡張機能とエイリアスによる成長性

ghは2021年8月の2.0でExtension機構を正式導入し、gh extension install owner/gh-fooの形式で第三者が公開した実行ファイルをサブコマンドとして取り込めるようになった。gh-dashによるダッシュボード表示やgh-copilotのCLI連携、Codespaces操作のgh codespace系などはこの仕組みの上で動いており、本体を肥大化させずにエコシステムを広げる役割を担っている。
個別のショートカットはgh alias setで登録でき、よく叩くフローを短縮できる。gh alias set co 'pr checkout'のように設定すれば、レビュー対象ブランチへのチェックアウトがgh co 123で完結する。GitHub Actionsからghを呼び出す場合は環境変数GH_TOKENにsecrets.GITHUB_TOKENを渡せばOAuth設定なしで認可が通るよう設計されており、ワークフローの記述量も短くなる。
GitHub APIとの関係とスクリプト用途

ghはサブコマンドが整っている一方で、gh apiを経由するとREST APIやGraphQL APIに対して直接リクエストを送れる。gh api graphql -f query='...'の形式でGraphQLクエリを投げ、jqと組み合わせて整形するパターンはCIで非常に一般的だ。ページネーションも--paginateオプションで自動処理され、curl+トークン管理の自作スクリプトを置き換えるユースケースが多い。
認証はgh auth loginでOAuthデバイスフローまたはPAT(Personal Access Token)を選択でき、Windows・macOS・Linuxいずれもネイティブのクレデンシャルストアに保管される。複数アカウント切替も2.40以降のgh auth switchで正式対応し、業務用と個人用で同一マシンを使い分ける開発者の負担を軽減した。これによりcurlに直接トークンを渡す危険な運用は事実上不要になっている。
CI/CDからの呼び出しと運用上の留意点

GitHub Actionsのubuntu-latestランナーにはghが標準で同梱されており、追加インストールなしで使える。gh release createによるリリース発行や、gh pr commentによるレビュー結果の自動投稿、gh workflow runでの他ワークフロー連鎖など、運用自動化の中心的な存在になっている。GitLabやBitbucketからの移行を検討する組織でも、CLIの使い勝手はGitHub採用の理由として挙げられることが多い。
一方でレート制限はAPI経由と共通で、認証済みでも1時間あたり5,000リクエストが上限である。gh api --paginateを雑に使うとすぐ枯渇するため、定期ジョブではGraphQLでまとめて取得する設計が望ましい。またEnterprise Serverに対してはGH_HOSTで接続先を切り替える必要があり、複数組織を横断する場合はgh auth login --hostnameでの明示設定が不可欠となる。
まとめ
GitHub CLIはhubの限界を引き継ぐ形で2020年に公式登場し、拡張機構やCIとの密な統合によって短期間で開発フローの中核に定着した。gh apiを使えばスクリプト的な細工も可能で、UX重視のサブコマンドと低レイヤのAPIアクセスを行き来できる点が長期的な利用価値を支えている。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント