GitHubの数年ぶりの最大規模のリリース。スタックPR機能。

BBetter Stack
Computing/SoftwareInternet Technology

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の登録もお願いします。ご視聴ありがとうございました。それではまた次回お会いしましょう。

Key Takeaway

GitHubのスタックPR機能は、依存関係を持つ複数のプルリクエストをチェーンとして構築し、gh stack submitやワンクリックのマージによって一括管理を可能にする。

Highlights

  • GitHubが導入したスタックPRは、巨大なコード変更を依存関係を持つ小さなプルリクエストのチェーンに分割して管理する新機能である。

  • GitHub CLIを使用する場合、gh stack initで新しいスタックを宣言し、gh stack addで個別のブランチを追加できる。

  • gh stack submitコマンドを実行すると、ミニCLIのUIが表示され、複数のPRのタイトルや説明を確認しながら一度にサブミットできる。

  • スタックの一番上に位置するテールPRの画面で「merge stack」をクリックするだけで、関連するすべてのPRを同時にmainにマージできる。

  • 手動でmainからPR1、PR2へとリンクさせる方法でも、すべてをプッシュした時点でGitHubがスタックとして検知する。

  • AIの自律型エージェントループと組み合わせることで、エージェントが巨大な単一PRや大量の独立したPRの代わりにリンクされたスタックPRを作成できるようになる。

Timeline

スタックPRの概念と基本構造

  • スタックPRは巨大なPRを管理しやすいサイズに分割する全く新しい方法である。
  • 依存関係を持つ小さなプルリクエストのチェーンを形成し、それぞれ個別にレビューしてマージできる。
  • 基礎的な変更を下位ブランチに配置し、それに依存するコードを上位ブランチに配置してチェーンを構築する。

Git単体のコンテキストにはスタックPRという概念は存在せず、従来のデイジーチェーン接続とは異なり、GitHubの内部においてのみ本当の意味が生まれる。最初または最も下にあるプルリクエストはリポジトリのデフォルトブランチであるトランクをターゲットにし、後続の各プルリクエストは直前のものをターゲットにして依存関係のチェーンを作る。

GitHub CLIを通じたスタックの作成と操作

  • GitHub CLIをインストールし、gh stack initで新しいスタックを宣言するのがベストな利用方法である。
  • gh stack addコマンドを使用して次のブランチや変更セットを順番に追加していく。
  • すべての変更が完了したらgh stack submitコマンドを実行することで、すべてのブランチを同時にGitHubにプッシュできる。

デモでは最初にgh stack init setup databaseを実行してベースのPRを作成し、変更を加えてコミットする。次にgh stack addでAPIエンドポイントやフロントエンド用のブランチを追加し、コミットを重ねる。最後にgh stack submitを実行するとミニCLIのUIが表示され、スタック内の各PRを確認しながらタイトルや説明を追加して一度にサブミットすることが可能になる。

GitHub上での管理と一括マージ

  • CLIを使わずに手動でPRをリンクさせた場合でも、すべてをプッシュした時点でGitHubが自動的にスタックとして検知する。
  • スタックの一番上に位置するテールPRを開き、「merge stack」をクリックすることで関連するすべてのPRを同時にmainにマージできる。
  • AIの自律型エージェントループと組み合わせることで、巨大なPRの作成を避けてリンクされたスタックPRを効率的に生成できるようになる。

GitHub上に作成されたPRにはスタックに関連付けられていることを示す小さなアイコンが表示される。別のPRがmainにマージされるのを待って自分でリベースやマージを行う必要はもうない。オンラインでは圧倒的に肯定的な反応が寄せられており、特にAIエージェントが何時間も稼働する場面において作業をリンクさせる強力な機能として期待されている。

Community Posts

View all posts