GitHub APIを「武器」にせよ:開発体験を極限まで高める自動化ハック
GitHubを単なる「コード置き場」だと思っているなら、君のチームの生産性はまだ30%も引き出せていない。
優秀なテックリードは、CLIを叩く時間すら無駄だと考える。APIを使いこなし、自分専用のツールチェーンを構築することで、開発者は「コードを書くこと」に集中できる環境を手に入れる。今日は、GitHub APIをハックして、チームのエンジニアリング体験を別次元へ引き上げるための「最初の一歩」を授けよう。
—
1. 準備:権限は「最小」かつ「最強」にする
まず鉄則だ。GitHub APIを叩くための `Personal Access Token (PAT)` を作る際、`repo` 全体にフル権限を与えるのは素人だ。
- Fine-grained tokens (細粒度トークン) を使え: 特定のリポジトリ、特定のスコープ(Issuesの読み取りだけ、PRの作成だけなど)に絞ることで、万が一の漏洩リスクを最小化する。
- 環境変数への隔離: トークンをハードコードするのは論外だ。`.env` に記述し、`.gitignore` で絶対にコミットするな。`direnv` を使って、プロジェクトディレクトリに入った瞬間に安全にロードさせるのがプロの作法だ。
—
2. APIを叩く:curlを捨て、gh CLIに魂を込めろ
APIを叩く際、素の `curl` を使うのはデバッグ時だけにしておけ。現場の主役は [GitHub CLI (gh)](https://cli.github.com/) だ。
なぜか? `gh` はAPIの認証処理、改ページ処理、JSONのパースをすべて隠蔽してくれるからだ。
実践:PRのレビュー依頼を自動で集計する
「誰がどのPRを放置しているか」を朝会で確認するのは時間の無駄だ。以下のシェルスクリプトを `check-reviews.sh` として保存せよ。
!/bin/bash
チームのレビュー待ちPRを一覧表示するスクリプト
必要な権限: repoスコープを持つgh cli
自分のレビュー待ちPRをJSONで取得し、タイトルとURLを整形して出力
gh pr list –reviewer “@me” –state open –json title,url,author \
–template ‘{{range .}}{{printf “【レビュー依頼】 %s (%s) by %s\n” .title .url .author.login}}{{end}}’
これを `alias` に登録しておけば、毎朝の進捗確認は1秒で終わる。
—
3. チーム開発を加速させる「神設定」と運用ルール
自動化の前に、チームの「GitHubの共通言語」を整える必要がある。
① `CODEOWNERS` でレビュー負荷を最適化せよ
`CODEOWNERS` は単なる自動割り当てツールではない。コードの所有権を明確にし、専門外の人間がレビューに迷う時間をゼロにする。
.github/CODEOWNERS
/backend/ @tech-lead @backend-team
/frontend/ @frontend-lead
/infra/ @devops-team
.md @docs-team
② PRテンプレートの強制
「何をしたか」ではなく「なぜしたか」を書かせる文化を作る。`.github/pull_request_template.md` を配置し、チェックリストを強制せよ。
目的
変更内容
動作確認
- [ ] ユニットテスト通過
- [ ] ローカルでの手動テスト
—
4. GitHub Actionsで「人間」の役割を減らせ
自動化の真髄は、「人間がやらなくていいことは、すべてGitHub Actionsに押し付ける」ことだ。
現場で震えるほど役立つYAMLのベストプラクティス
`workflow` は巨大化すると管理不能になる。「再利用可能なワークフロー (Reusable Workflows)」 を使え。
.github/workflows/ci-pipeline.yml
jobs:
lint:
uses: ./.github/workflows/reusable-lint.yml # 共通のLint処理を呼び出す
secrets: inherit
test:
needs: lint
uses: ./.github/workflows/reusable-test.yml
こうすることで、リポジトリが変わってもLintやテストのルールを一元管理できる。
—
5. 最後に:エンジニアへの提言
APIを叩くことは、GitHubという巨大なプラットフォームを「自分たちの開発フローの一部」にする作業だ。
1. gh CLIをマスターせよ:`gh api` で直接エンドポイントを叩けば、GitHubのほぼ全機能がコマンドラインから操作できる。
2. イベント駆動で考えろ:WebhookとActionsを組み合わせれば、PRが作成された瞬間にSlackへ通知し、Jiraと同期し、デプロイ検証環境を自動作成するパイプラインだって構築できる。
3. 自動化は「削る」こと:自動化ツールを作る目的は、コードの行数を増やすことではなく、君と君のチームが「思考」に使える時間を増やすことだ。
さあ、今すぐ `gh api /user` を叩いて、君のGitHubアカウントの応答を受け取ることから始めよう。世界はコードで変えられる。その手始めに、君のGitHubを君の最強の相棒へと改造するんだ。