Transcript
00:00:00GitHubがここ数年で最大級のアップデートをリリースしました。それがスタックPRです。これは
00:00:05巨大なPRを管理しやすいサイズに分割するための全く新しい方法です。この動画では、その詳細や
00:00:10なぜ使うべきなのかを解説します。スタックPRは強力でありながら非常にシンプルな概念です。大きなコードの変更を
00:00:21依存関係を持つ小さなプルリクエストのチェーンに分割し、それぞれ個別にレビューしてマージできます。
00:00:26スタックを形成するには、同じリポジトリ内に2つ以上のプルリクエストが必要です。その中で最初または
00:00:31最も下にあるプルリクエストは、通常はmainのようなリポジトリのデフォルトブランチであるトランクをターゲットにします。
00:00:37そして、後続の各プルリクエストは直前のものをターゲットにします。これにより、各ブランチが
00:00:42その下にあるブランチの上に構築される依存関係チェーンが形成されます。共通の型やデータベーススキーマなどの基礎的な変更は
00:00:48下位のブランチに配置し、APIルートやUIコンポーネントなど、それらに依存するコードは
00:00:53上位のブランチに配置します。「いや、これって今までもできたのでは?」と思われるかもしれません。
00:00:58mainに対してPRを出し、そのPRに対して2つ目のPRを出し、好きなだけPRをチェーントすることは確かに可能でした。
00:01:04それは全くその通りです。というのも、Git単体のコンテキストではスタックPRという概念は存在せず、
00:01:09単にPRをデイジーチェーンで繋いでいるだけだからです。GitHubの内部においてのみ、スタックPRに
00:01:16本当の意味が生まれます。しかし、スタックPRには絶大なメリットがあります。テックやAIの最新情報を
00:01:22キャッチアップしたい方は、ぜひBetter Stackのチャンネル登録をお願いします。スタックPRを利用するには、
00:01:27GitHub CLIをインストールしておくのがベストです。それを使って gh stack init を実行し、新しいスタックを宣言できます。
00:01:33それではテキストエディタに移動して、複数のPRをスタックする例を見ていきましょう。
00:01:38最初に行うのは gh stack init setup database の実行です。この場合、
00:01:44PRまたはブランチ名は setup database となります。これがmainを指すようになる
00:01:50ベースのPRとなります。それでは変更を加えていきましょう。このデモでは、
00:01:54READMEファイルに変更を加えることにします。「データベースを実装した」と記載し、git add、
00:01:59git commitを実行します。ここまでの手順はすべて標準的なGitの操作です。次に、次の変更セットに切り替える準備ができたら、
00:02:04gh stack addを実行し、続いて次のブランチを指定します。さらに変更を加えて
00:02:10APIエンドポイントを作成します。ここに追加のポイントをいくつか加えたいので、この変更をコミットします。
00:02:16さらに2つ目の変更も追加し、同じようにコミットします。ご想像のとおり、
00:02:201つのブランチに対して複数のコミットを作成できます。そして最後に gh stack add setup front end を実行し、
00:02:25ここでもう1つ変更を加えます。再び git add と git commit を実行します。すべての変更に満足したら、
00:02:31それらのブランチをすべて同時にGitHubにプッシュするため、
00:02:36gh stack submit という1つのコマンドを実行するだけです。これによりミニCLIのUIが表示され、
00:02:42スタック内の各PRを確認しながら、必要に応じてタイトルや説明を追加できます。あるいは、
00:02:48それぞれで次へを押していき、3つのPRを一度にサブミットすることも可能です。このように、3つのPRすべて(
00:02:55setup database、API、front end)が、1つのコマンドでスタックとしてGitHubにプッシュされたことがわかります。
00:03:02実は、GitHub CLIを使わなくてもこれらすべてを行うことができます。mainからPR1、PR2へと
00:03:07手動でPRをリンクさせるという昔ながらの方法に従えば、すべてをプッシュした時点でGitHubがこれらをスタックとして検知してくれます。
00:03:14CLIを使えば、これがはるかに簡単に管理できるようになります。ここで、Git自体には何も変更が
00:03:20加わっていないことに注意してください。現在作業中のスタックに含まれていない全く別のブランチにチェックアウトしたい場合は、
00:03:24そうしてから後でスタック内のブランチに戻ってくることも可能です。
00:03:29次にGitHub自体に移動してみると、3つのPRがそれぞれプルリクエストとして
00:03:34作成されているのがわかります。また、これらのPRがスタックに関連付けられていることを示す
00:03:39小さなスタックアイコンが表示されているのも確認できます。スタックの一番上に位置するテールPRを開くと、
00:03:45下の方に「merge stack」をクリックできるボタンがあり、このUIを確認できます。これにより、
00:03:49スタックの一部であるすべてのPRを確認できます。これらを1つずつ確認して承認していくことも可能です。しかし、内容に満足したら
00:03:54「merge stack」をクリックするだけで、それらのPRのすべてを同時にmainにマージできます。
00:03:59また、スタックへの言及がGitHub全体に統合されていることにお気付きでしょう。
00:04:03プルリクエストのページや、プルリクエストの
00:04:09リストページだけでなく、GitHubワークフローなどの場所や、アプリケーション全体でそれらを確認できます。
00:04:14そのため、巨大なPRを扱っており、それを別々のセグメントに簡単に分割する必要がある場合でも、
00:04:18別のPRがmainにマージされるのを待って自分でリベースやマージを行う必要はもうありません。
00:04:231つの長いスタックを作成するだけで、GitHubのUI内でそのすべてを管理する準備が整っています。
00:04:28そしてCLIは、そのすべてを自動的に管理するための非常に優れた方法です。オンラインでは
00:04:33圧倒的に肯定的な反応が寄せられています。特にAIと組み合わせて使用する場合、
00:04:38これは非常に強力な機能になると思います。例えば、自律型ループ(エージェントループ)を設計し、
00:04:43エージェントを何時間も稼働させ続けるような場面です。エージェントは、巨大なPRを作成したり、
00:04:48完全に分離された大量のPRを作成したりするのではなく、スタックPRを作成してその作業をすべてリンクさせることができるようになります。
00:04:54今回の動画が皆さんのお役に立てば幸いです。スタックPRについてどう思うか、
00:04:58ぜひコメント欄で教えてください。最新のテックおよびAIニュースをキャッチアップするために
00:05:02Better Stackの登録もお願いします。ご視聴ありがとうございました。それではまた次回お会いしましょう。