PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

GitHub Copilot CLIでコードベースをダンジョン化する?「GitHub Dungeons」がかなり遊び心のある実験だった

キーポイント

image_0002.png

この記事は何を紹介しているのか

GitHub Blog の記事 ​「Dungeons & Desktops: Building a procedurally generated roguelike with GitHub Copilot CLI」​ は、GitHub のスタッフが GitHub Copilot CLI を使って、​任意のコードベースを roguelike のダンジョンに変える拡張機能を作った話です。

image_0003.png

率直に言うと、最初に聞いた印象は「何それ、めちゃくちゃ面白いな」です。
普通、コードベースはレビューしたり、検索したり、ビルドしたりするものですが、この人はそれを探索して倒して進むゲームにしてしまった。発想がかなり飛んでいて、でもちゃんと技術的な筋も通っているのが良いです。

image_0004.png

roguelikeって何?

記事ではまず、​roguelike について説明しています。

image_0005.png

roguelike は、1980年代のゲーム Rogue に由来するジャンルで、ざっくり言うと次の特徴があります。

image_0006.png

この「毎回違う」「死んだら終わり」という感じが、なんだか開発現場の緊張感にも少し似ています。
「ひとつミスると終わる」感じは、コマンドライン上の操作とも相性がいいのかもしれません。

image_0007.png

何がすごいのか

この記事の中心は、​GitHub Dungeons という拡張機能です。

image_0008.png

これは、​今いるリポジトリを読み取り、その構造をもとにダンジョンを生成するゲームです。
プレイヤーはターミナルでダンジョンを歩き回り、​bug(バグ)​ と戦い、出口を目指します。

image_0009.gif

しかも、ただの一発ネタではなく、​commit が変わるとダンジョンの構造も変わるそうです。
つまり、コードの変更がそのままゲームの地形に反映されるわけです。これはかなり好きです。コードレビューが終わるたびに「お、ダンジョンの景色が変わったな」と思えるなら、少しだけ開発が楽しくなりそうです。

procedural generation ってどういう意味?

image_0010.png

記事では procedural generation​(procgen とも呼ばれる)についても説明しています。

これは日本語でいうと、​​「人が全部作るのではなく、ルールに従って自動で内容を作る仕組み」​です。

image_0011.png

ゲームでよくある例はこんな感じです。

image_0012.png

つまり、
1つのダンジョンを作るのではなく、ダンジョンを作る仕組みを作る
という考え方です。

image_0013.png

これは roguelike が何度も遊べる理由でもあります。
毎回新しい地形が出るので、慣れたはずのゲームでも油断できない。そこが醍醐味なんですよね。個人的には、この「自動生成なのにちゃんと遊べる」というバランスが、技術としてもデザインとしてもかなり美しいと思います。

GitHub Copilot CLI はどう使われたのか

image_0014.png

記事によると、このプロジェクトは GitHub Copilot CLI Challenge から生まれました。
著者は「nerd-sniped into the challenge」と表現していて、要するに知的好奇心を刺激されて、つい深みにハマったという感じです。こういうノリ、開発者あるあるでちょっと親近感があります。

image_0015.png

実装には Go が使われています。
著者は「普段は Go をあまり使わない」と書いていますが、Copilot を使うことで、​構文を全部暗記していなくても、挙動の設計に集中できたと述べています。

ここはかなり重要なポイントだと思います。
AI補助ツールの強みって、「コードを書くのを完全に代わりにやる」ことよりも、​知らない言語や慣れていない領域でも、アイデアを形にするハードルを下げるところにあるんですよね。
この事例はまさにそれを示していると感じました。

image_0016.png

/yolo が出てくるのが妙におもしろい

image_0017.png

記事の中で印象的なのが、Copilot CLI のコマンド /yolo です。
これは /allow-all のエイリアスで、名前の通り「細かい確認を飛ばして一気に進める」系の操作です。

記事では、roguelike がpermadeath​(死んだら最初からやり直し)を特徴にしていることと結びつけて、このコマンドの名前を紹介しています。
このあたり、ちょっとしたユーモアが効いていて好きです。
「一度きりの人生なら、確認なんか気にせず突っ走れ」みたいな雑さが、ゲームの世界観と妙に噛み合っています。

image_0018.png

もちろん、実際の開発で何でも /yolo で進めるのはおすすめしません。
でも、デモや実験の文脈では、この軽妙さがプロジェクトの楽しさを引き立てています。

この記事から見えるもの

image_0019.jpg

この話は、単なる「ゲームを作りました」ではありません。
むしろ、

image_0020.gif

という、かなりクリエイティブな実験だと思います。

image_0021.png

特に面白いのは、​コードベースを“読む”のではなく“冒険する”対象に変えているところです。
ソフトウェア開発って、どうしても「正しく動くか」「壊れてないか」に目が行きがちですが、こういう遊び心が入ると、同じ素材でもまったく違う見え方になります。

image_0022.png

個人的な感想

個人的には、こういう「実用性ゼロに見えて、実は発想の幅を広げるタイプの実験」はかなり好きです。
実務で毎日使うかというと、たぶん使わないでしょう。正直に言えば、普通のプロジェクトにこのまま入れるものではないと思います。
でも、​AIツールの可能性を“仕事の効率化”だけに閉じ込めないという意味で、とても価値がある試みです。

image_0023.svg

それに、コードベースをダンジョンにするというのは、比喩としてもわかりやすい。
大きなリポジトリって、慣れていない人から見ると本当に迷宮ですからね。
「どこに何があるかわからない」「謎の依存関係がいる」「バグが潜んでいる」——もう十分ダンジョンです。そこにゲーム化を重ねるのは、かなりしっくりきます。

まとめ

image_0024.svg

GitHub Blog のこの記事は、GitHub Copilot CLI を使ってコードベースを roguelike ダンジョンに変える拡張機能を作った、遊び心たっぷりの技術実験を紹介しています。

image_0025.svg

実用性だけでは測れない、でも確かに開発の未来をちょっと広げるような話でした。
こういう「なんだそれ」と思わせつつ、読んだあとに妙に納得してしまう記事、私はかなり好きです。

image_0026.svg


参考: Dungeons & Desktops: Building a procedurally generated roguelike with GitHub Copilot CLI

同じ著者の記事