Amazon Web Services ブログ

1 つのタスク、2 つのプロバイダー(GitLab と GitHub) をまたぐ変更を 1 セッションで調整する

この記事は公開時点 (2026 年 6 月 30 日) の情報です。Kiro Web はその後一般提供になりました。詳しくは「クラウドでのエージェンティックエンジニアリング:Kiro Web とクラウドセッションが一般提供に」をご覧ください。

本記事は「One Task, Two Providers: Coordinating Changes Across GitLab and GitHub in one session」を翻訳したものです。

Kiro Web は、既存の GitHub サポートに加えて、GitLab でも動作するようになりました。より興味深いのは、コードが GitLab と GitHub の両方にまたがって存在する場合に何が起きるかです。両方からリポジトリを同じセッションに追加し、単一の変更を記述すれば、Kiro がそれを両方にわたって実行し、一方にはマージリクエスト(MR)を、もう一方にはプルリクエスト(PR)を開いてくれます。これは、コードが 1 つのきれいな場所に収まっていないときに意味を持ちます。

2 つの場所に存在するコード

多くのチームはプロバイダーをまたいで分かれており、たいていそれには正当な理由があります。オープンソースの SDK はコミュニティが見つけられるように GitHub に置かれ、それが通信するサービスは GitLab 上にプライベートのまま残されている。あるいは買収によって、組織の半分が一方のプロバイダーに、もう半分が別のプロバイダーに分かれてしまった。あるいはフロントエンドとバックエンドのチームが、何年も前にたまたま別々のツールに落ち着いただけ、ということもあります。理由が何であれ、そのコストは変更が両方にまたがった瞬間に現れます。1 つの論理的な更新が、2 つのコンテキストで 1 つのプルリクエストと 1 つのマージリクエストになり、ステップを忘れて両者が同期からずれてしまう機会が 2 回生じるのです。

小さな例

ここで使うセットアップを示します。本物の代わりとして、あえてシンプルなものにしています。その場所に、あなたの実際のサービスと SDK を思い浮かべてください。数千行の規模で、本物のビジネスロジックと本物の利用者があるものです。

GitLab 上のプライベートサービスがあるとします。

GitLab の user-service リポジトリの main ブランチ。.gitignore、README.md、package.json、server.js の 4 ファイルがあり、どれも Brian Beach の最初のコミット

そして、GitHub 上のパブリック SDK が、そのサービスをラップしています。

GitHub の user-sdk リポジトリの main ブランチ。ブランチ 2 つ、Brian Beach のコミット 1 つ。src ディレクトリ、.gitignore、README.md、package.json、tsconfig.json があり、どれも最初のコミット

email フィールドをエンドツーエンドで追加したいとします。サーバー側の変更は GitLab に属し、SDK 側の変更は GitHub に属します。これは、2 つのリポジトリ、2 つのプロバイダーにまたがって、変更を加えないといけません。

1 つのプロンプト、両方のリポジトリ

GitLab と GitHub の両方をすでに接続した状態で、セッションを開始し、両方のリポジトリ(GitLab の user-service と GitHub の user-sdk)をアタッチします。そして、変更をシンプルな言葉で記述します。

Kiro Web の画面。「Add an email field to the user response in the service, and expose it through the SDK.」というプロンプトで、GitLab の brianbeach/user-service と GitHub の brianjbeach/user-sdk の両方をセッションに付け、自律モードを有効にしている

両方のリポジトリがセッション内にあるため、Kiro はそれらを無関係な 2 つのタスクとして扱うのではなく、一緒に推論します。

Kiro の推論ログ。作業を GitLab と GitHub にまたがる複数リポジトリの変更と判断し、両方を clone して構成を調べ、コードの変更と MR/PR の作成を planner のサブエージェントに任せている

隔離されたサンドボックスの中で作業し、両方のリポジトリを探索し、それぞれの側が何を必要とするかを把握し、変更を行います。サービスではレコードとレスポンスに email を追加し、SDK では User 型と使用例を更新します。各リポジトリにフィーチャーブランチを作成し、明確なメッセージでコミットします。

複数リポジトリの変更を終えた Kiro のセッションのまとめ。GitLab の user-service では server.js に、GitHub の user-sdk では src/index.ts に email を追加し、作成した GitLab の MR と GitHub の PR へのリンクがある

完了すると、2つの変更が待っています。サービス用の GitLab 上のマージリクエストは以下のようになります。

GitLab のマージリクエスト「Add email field to user response」。Brian Beach が feat/add-email-field を main へマージするために作成したもので、ユーザーのデータモデルに email を加え、GET /users/:id が id、name、email を返すようになったと説明している

そして、SDK 用の GitHub 上のプルリクエストは以下のようになります。

GitHub のプルリクエスト #1「Add email field to User type」。kiro-agent ボットが brianjbeach の代わりに作成し、feat/add-email-field を main へマージする。src/index.ts の User 型に email: string を加え、SDK のビルドが通ったと書かれている

それぞれが、何が変わったかと、そのアプローチの説明を伴っています。あなたは各変更を、それぞれのホームプロバイダー上で、チームがすでに使っているまさにそのワークフローでレビューしてマージします。レビュープロセスについては何も変わりません。ただ、クロスリポジトリの調整作業を自分でやらなくて済んだ、というだけです。

まとめ

プロバイダーをまたぐ分割は、しばしば現実的で、維持する価値があります(パブリック対プライベート、あるチーム対別のチーム)。維持する価値がないのは、1 つの変更を両方にわたって整合させるための手作業の労力です。Kiro Web に GitLab と GitHub を接続すれば、1 つのプロンプトが変更をエンドツーエンドで一貫させ、それでもあなたはすでに信頼しているプロバイダー上で、きれいな MR と PR をレビューできます。

Kiro Web で GitLab と GitHub を接続し、両方にまたがる変更を試してみてください。Kiro Web は app.kiro.dev で、Pro・Pro+・Power のサブスクライバー向けにプレビュー提供中です。さらに詳しくは GitLab ガイドをご覧になり、次に何がリリースされるかを知るには Kiro Web の changelog をフォローしてください。

翻訳者について