NTT DATA TECH
🏆

ハッカソン「GitHub Copilot Quest:Hack the Legacy」に参加してみた件

に公開

はじめに

2025/12/15に人生初のハッカソンに参加してきました。
この記事では、そのハッカソン
GitHub Copilot Quest:Hack the Legacy
の概要と、チームで実施したアプローチ、参加しての気づき・感想をまとめていきます。

GitHub Copilot Quest:Hack the Legacy概要

アスキー社と日本マイクロソフト社によるハッカソンイベント「GitHub Copilot Quest:Hack the Legacy」は、「レガシーモダナイゼーション[1]」をテーマに開催されました。

モダナイゼーション対象のレガシーシステム

  1. Java EE(J2EE)、バージョンは J2SE 5.0
  2. .NET(.NET Framework)、バージョンは .NET Framework 4.8
    の2種類でした。

モダナイゼーションの方法は、各チームの自由です。

参加チームは、

  1. NECソリューションイノベータ (Java選択)
  2. NTTデータグループ (.NET選択)
  3. 野村総合研究所 (Java選択)
  4. ⽇⽴製作所 (Java選択)
  5. 富⼠通 (Java選択)

の5社で、当社のみ.NETを選択しました。
このハッカソンでは、順位はつけず、各チームへの講評のみになります。

1日開催のハッカソンで、実際に手を動かせる時間は6時間です。

このハッカソンは、アスキー社より記事化されており、YouTubeで当日の様子も公開されています。
是非こちらも見ていただけると嬉しいです。

モダナイゼーションのアプローチ

チームのゴール

我々は当初Javaのモダナイゼーションを選択するつもりで、事前準備もしていました。
しかし、当日の様子を見ると全チームJavaを選びそうだったので、差別化のために、急遽.NETを選択しました。
そのため、チームの全員が.NETが分からないという状況でした。

そのような状況で、チームのゴールとしては
.NETを何も知らない開発者たちが0から高速でリビルドをやり切る!
を掲げました。
これができれば、「COBOLを知らない技術者 x GitHub Copilotでモダナイズできる!」みたいな世界の一歩目くらいは言え、少しでも自社に持ち帰られる知見が得られればと考えました。

モダナイゼーション後のバージョンは、.NET 10を採用しました。

モダナイゼーションのプロセス

何もわからない.NETをモダナイゼーションするにあたり、
N字プロセスを採用しました。

N字プロセス
N字プロセスは、製造工程の成果物であるコードから要件・設計情報をリバースエンジニアリングし、そこからV字でモダナイゼーション後の要件定義~テストまで実施するプロセスです。

また、.NETの既存コードを理解することはハッカソンの時間内では難しいので、既存コードは捨て、リバースエンジニアリングした設計情報から、新規にコードを作る、リビルド的な手法を取りました。

結果としては、時間内にWebのUI表示まではたどり着けませんでしたが、ビルドは成功し、curlによるトップページの疎通も確認できました。

ビルド成功

curl疎通確認

工夫点:GitHub Copilotをドライバーとしたモブプロ[2]

最初は、限られた時間でできる限り多くのタスクをこなすために、メンバー全員で別々のタスクを並列で実施し、git pushでリモートリポジトリで同期を取ろうとしていましたが、他メンバーの待ちが多々発生し、効率的でないと気づきました。

そこで、途中から、GitHub Copilotをドライバーとし、人間のメンバー全員でナビゲーターというモブプロを試しました。
これが我々には適しており、AIの出力スピードに対する認知負荷が程よいリズム感かつ、各々の脳内の知識・情報は人間同士では即座に共有でき効率的でした。

また、AIはペアプロ・モブプロにおける、理想的なドライバーに近いという感触も得られました。

反省点:Pull requestのレビュー

限られた時間かつ、知らない言語ということもあり、レビュー作業に時間がかかることは目に見えていました。
そこで、GitHub CopilotのEnterpriseの全機能が使えるライセンスをハッカソン用に期間限定で、日本マイクロソフト社から提供してもらっていたため、

GitHub Copilot コード レビュー
を使用しました。

実際のレビューコメント

そこそこコメントもらえたのですが、よく分からず使えなかったのが正直な結果です。
知らない言語のコメントを貰っても「多分あっているだろう」ということしか分からず、採用したらどうなるかが未知でした。
結局vibe codingで進めるしかなかったです。

これは、落ち着いて考えれば当然の結果で、よく知っている言語なら非常に有効な機能だとは思いますが、知らない言語ではコメントを理解するだけの知識がまず必要でした。

当社への講評サマリ

触れたことがない中で、.NETにチャレンジしてくれてありがとうございます。
GitHub Copilotを使い倒してくれたことがよく分かりました。特に、モブプロでGitHub Copilotをドライバーにしたことは、GitHub Copilotをツールではなくチームメンバとして捉えていて良かったです。
スキルがない中でも.NETで一定の成果を出せたことからも、GitHub Copilotを使うことで、色々なハードルが下がると思うので、これからもGitHub Copilotと共に色々な経験・体験をしてください。

参加した感想と、得られた知見

当社のチームは全員初めてのハッカソンだったのですが、和気あいあいと取り組むことができ、非常に楽しかったです。
また、知らない言語でもビルド成功の一区切りまで到達できたことも嬉しかったです。

今回得られた知見としては、
1つ目は、AIをドライバーとしたモブプロの有用性です。

  • AIのスピード感だと、ドライバーが作業のボトルネックになることはないこと
  • AIの出力レビューの認知負荷を複数人で分散できるので、品質向上に繋がりそうなこと

を実感しました。
AIを使った開発において、生産性と品質のバランスが程よい手法だと思います。

2つ目は、数年後のコードレビューのあり方です。
今後の数年間で、AI前提の世代が入社し、世代交代が起きた世界では、プログラミング言語を知らないけどAIで開発できるメンバーが主流になることが予想できます。
そのような世界で、

  • どうマネジメントするのか
  • どう品質保証するのか
  • どう教育するのか

の課題を明確に認識し、考える機会にもなりました。
人によるコードレビューは量的に対応が難しくなり、設計書への自然言語のレビュー、テストでの結果保証で品質保証はどうにかするしかないのかなと思います。

総じて、非常に学びが多く、楽しく、参加してよかったと心から思えるハッカソンでした。
次回も開催されれば是非参加したいです。

脚注
  1. モダナイゼーション(Modernization)は、英語で「近代化」や「現代化」を意味する言葉です。IT分野においては、古くなった基幹システムや業務システムなどのレガシーシステムを、既存の情報資産を維持しながら現代的な製品・サービスに置き換えることを指します。[出展:https://www.ntt.com/business/services/xmanaged/lp/column/modernization.html?msockid=24f00149fb096c681f971707fa616dce] ↩︎

  2. モブプロとは、1台のPCをチーム全員で共有・協力し実装を進める開発手法です。手を動かす役を「ドライバー」、実装方針やレビューなど指示を出す役を「ナビゲーター」と呼びます。ドライバーとナビゲーターは一定時間で適宜交代しながら作業を進めます。 ↩︎

NTT DATA TECH
NTT DATA TECH
設定によりコメント欄が無効化されています