[開発者向け]自分のコードがダンジョンに変わる──GitHub Copilot CLIで作るターミナルRPGの仕組みと /delegate の使い方

目次

はじめに

 GitHubのエンジニアLee Reillyが2026年5月12日、GitHub Blogにて、自分のリポジトリをターミナル上で動作するローグライクゲームに変換するCLI拡張「GitHub Dungeons」の開発記を公開しました。GitHub Copilot CLIの /delegate コマンドを駆使して開発されたこのツールの仕組みと、「指示中心の開発スタイル」について解説します。

参考記事

関連記事

あわせて読みたい
[開発者向け]GitHub Copilot CLIの2つのモード——インタラクティブと非インタラクティブの使い分け はじめに  GitHub公式ブログが2026年4月30日、GitHub Copilot CLIビギナーズシリーズの第2回として、CLIの2つの操作モード「インタラクティブモード」と「非インタラク...
あわせて読みたい
[開発者向け]Copilot CLIで作る絵文字リストジェネレーター——PlanモードとAutopilotのマルチモデル活... はじめに  GitHubが毎週配信しているライブストリーム「Rubber Duck Thursdays」にて、2026年4月17日、GitHub Copilot CLIを活用してCLIアプリを構築するデモが公開さ...
あわせて読みたい
[開発者向け]ターミナルでAIを使いこなす——GitHub Copilot CLIの始め方と活用例 はじめに  GitHubが2026年4月10日に公開したチュートリアル記事をもとに、GitHub Copilot CLIの概要とセットアップ手順、主な活用例を紹介します。ターミナルを離れず...

要点

  • GitHub DungeonsはGo言語製のGitHub CLI拡張で、リポジトリの最新コミットSHAをシードとしてダンジョンを自動生成する
  • ダンジョン生成には BSP(二分木空間分割)アルゴリズムを使用し、矩形の部屋と通路で構成された再現性のあるマップが保証される
  • 開発にはGitHub Copilot CLIの /delegate コマンドを活用し、機能の実装をクラウド上のCopilotエージェントへ非同期で委任する手法が採られた
  • インストールは gh extension install leereilly/gh-dungeons で完了し、gh dungeons で起動できる
  • pre-commitフックにゲームを組み込む「クレイジーモード」も存在するが、公式が推奨しない危険な設定である

詳細解説

コードがダンジョンになる仕組み

 Lee Reillyは「GitHub Copilot CLIチャレンジ」に触発され、「自分のリポジトリをローグライクゲームに変換するCLI拡張」の開発に着手しました。ローグライクとは1980年代の『Rogue』に端を発するゲームジャンルで、ターミナル上で操作し、プレイのたびにダンジョンが変化し、死んだら最初からやり直す「パーマデス」が特徴です。

 完成した GitHub Dungeons は、ターミナル上でプレイできるゲームです。プレイヤーはキーボード(WASD・矢印キー・Vimキー)で部屋を探索しながら敵と戦い、5つのレベルをクリアして隠し扉を目指します。霧(フォグオブウォー)による視界制限、自動攻撃、キル数・クリアレベルのスタッツ追跡なども実装されています。

 最大の特徴は、ダンジョンの構造がリポジトリの最新コミットSHAをシード(乱数の初期値)として生成される点です。同じコミットは常に同じマップを再現し、コードが変わるたびにダンジョンも変化します。

BSPアルゴリズム──構造化された乱雑さの原理

 ダンジョン生成の核心にあるのが BSP(Binary Space Partitioning:二分木空間分割) アルゴリズムです。1980年代から3Dゲームのレンダリングや2Dダンジョン生成に活用されてきた手法で、仕組みは次のとおりです。

 まず大きな矩形空間を縦または横に2分割し、再帰的に分割を繰り返します。分割が小さくなりすぎた時点で停止し、各区画にサイズと位置をわずかにランダム化した矩形の部屋を配置します。最後に隣接する部屋をL字型の通路で接続することで、「すべての部屋が到達可能なダンジョン」が保証されます。

 純粋なランダム配置だと迷路が意味不明になりがちですが、BSPを使うと「設計されたかのように感じる」マップが生成されると言われます。Lee Reillyも「ランダムすぎず、規則的すぎない」BSPの性質がローグライクとの相性の良さを示す理由として挙げており、コミットSHAによるシード値と組み合わせることで再現性と多様性を両立させています。

/delegate コマンドによる非同期開発

 開発において中心的な役割を担ったのが、GitHub Copilot CLIの /delegate コマンドです。このコマンドはコードをその場で生成するのではなく、タスクをクラウド上のCopilotコーディングエージェントへ委任する機能です。指示を出したらあとはCopilotが自律的に実装を進め、完了するとプルリクエストをオープンします。

 Reillyは「レベルが上がるほど敵とポーションが増える」という難易度調整を自然言語で指示し、Copilotが生成したPRをレビューするという手順で開発を進めました。また「ダンジョン生成の仕組みをASCIIアート図解で説明するエージェント」の作成も /delegate で行ったといいます。Reillyは「NPCの軍団に何でも頼める感覚」と表現しており、実装の重労働をCopilotに任せることで、ゲームデザインと体験の磨き込みに集中できたと述べています。

 GitHub Copilot CLIにはインタラクティブモードと非インタラクティブモードがあり、使い分けについては別記事でも整理しています。/delegate はさらに一歩進んだ非同期かつエージェント主導の実行形態で、Copilot CLIの活用の幅の広がりを感じさせる事例です。

 なお記事では /yolo(/allow-all のエイリアス)コマンドにも触れられています。Copilotの提案をすべて自動承認するこのコマンドの名前は、ローグライクの「1度死んだら最初からやり直し(パーマデス)」とかけた言葉遊びで、記事内でも「まさにぴったり」と紹介されています。

インストール方法と遊び方

 GitHub Copilot CLIがインストール済みであれば、以下の1コマンドで導入できます。

gh extension install leereilly/gh-dungeons

 インストール後は gh dungeons を実行すると、カレントリポジトリのコードからダンジョンが生成されます。操作はWASD・矢印キー・Vimキー(hjkl)に対応しています。

デンジャーゾーン:クレイジーモード

 記事では pre-commit フックにゲームを組み込む方法も紹介されています。設定すると、コミット前にゲームに負けた場合に変更がすべて失われるという仕掛けです。記事中でも編集注として「絶対にやらないでください。作者のせいにしないでください」と強調されており、実用目的での利用は推奨されていません。実装的な好奇心への言及として楽しむにとどめるのが無難だと思います。

まとめ

 GitHub Dungeons は、BSPアルゴリズムとCopilot CLIの非同期エージェント委任を組み合わせた開発事例です。「書く」より「指示してPRをレビューする」というスタイルが、ゲームのような複雑なプロジェクトでも機能することを示しています。Copilot CLIの基本的な使い方に関心のある方は、入門記事もあわせてご参照ください。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次