レガシーJavaをTypeScript+Honoに移行してみた

ミドリ: タツヤさん、お客さまから「Java 8で作った社内システム、そろそろ何とかしたい」って相談が増えてるんです。でもレガシー移行って大工事ですよね……。

タツヤ: 全面刷新として構えるとそうなる。でも今は AIコーディングエージェントで「1つのAPIだけ」小さく移行を試す ことができるんだ。今日は実際に、レガシー風のJava注文管理APIを TypeScript + Hono に移し替える手順をやってみよう。

ミドリ(surprised): 私、TypeScript書けないんですけど……。

タツヤ: 書くのはAI(今回は Claude Code)に任せる。人間の仕事は「現行仕様を読み解くこと」と「AIの出力を検証すること」。むしろJavaを長く読んできた人ほど向いている作業だよ。

題材: わざとレガシーに作った教材プロジェクト

タツヤ: 題材は教材用に作った「legacy-orders」という小さな注文管理システム。Java 8時代の書き方(raw型・Calendar・長いメソッド)をわざと残してあって、業務コードを一切使わずに移行の練習ができる。MITライセンスで自由に使っていい。

ミドリ: 練習が本番コードじゃないのは安心ですね。

タツヤ: 無料のハンズオン教材サイトからzipで落とせる。Mavenも不要で、JDK 17さえあれば run-tests.cmd 一発でテストが動く。

手順1: まず現行仕様を「読ませて」検証する

タツヤ: 移行の最初の仕事はコードを書くことじゃない。現行仕様の把握だ。Claude Code にこう指示する。

OrderService.java の現行仕様を読み解き、公開メソッドごとの入力・出力・例外、バリデーションのルール、注文ステータスの遷移がわかる仕様書を docs/ に作成してください

ミドリ: AIが仕様書を書いてくれるんですか。楽ですね!

タツヤ(nodding): ただし鵜呑みは禁物。生成された仕様書をコードと突き合わせて、抜けを最低1つ見つけて修正させる。私がやったときは「キャンセル時に在庫を戻す」仕様が抜けていた。この「人間の突き合わせ」が品質の生命線だよ。

手順2: テストの安全網を張る

タツヤ: 次に、移行元の金額計算ロジックにJUnitテストを生成させる。境界値を明示するのがコツだ。

PriceCalculator に JUnit 5 のテストを作成。送料無料になる5000円の境界、クーポン適用の3000円の境界、会員ランク別の割引を必ず含め、実行して全テストが通ることを確認して

ミドリ: どうして移行の前にテストなんですか?

タツヤ: テストは「現行の正しい挙動」を数値で固定する安全網だから。移行後のAPIが同じ挙動かを機械的に確かめられるようになる。

手順3: Honoへ移し替える

タツヤ: ここでやっと移行だ。注文検索APIをHonoに移すよう指示する。

OrderService の注文検索(顧客IDの前方一致)と1件取得と同等のREST APIを TypeScript + Hono で実装。元のJava実装とAPI仕様の対応表も SPEC.md に作成。npmで起動し、curlで動作確認できるところまで

ミドリ(thinking): なぜ移行先がHonoなんですか?

タツヤ: 軽量でエッジ(Cloudflare Workersなど)にそのまま載る国産OSSで、TypeScriptエコシステムの中心にいるからだ。もちろん手順自体は移行先がSpring Boot 3でもGoでも同じだよ。

手順4: 「対応表」を突き合わせてアラを探す

タツヤ: 生成された SPEC.md の対応表を、元のJavaコードと突き合わせる。ここが腕の見せどころだ。

ミドリ: ……あ!Java側は検索が大文字小文字を区別しないのに、Hono側は区別しちゃってます!

タツヤ(smiling): それが「仕様の取りこぼし」だ。ほかにも空文字を渡したときの挙動、存在しないIDのレスポンスコード——この辺りはAIが高確率で取りこぼす。見つけて、指摘して、直させる。 これがAI駆動開発におけるベテランの仕事だよ。

効果は「実測」で語る

ミドリ: やってみて、どのくらい速くなるんですか?

タツヤ: それは自分で測ってほしい。教材には「従来なら何分/実際に何分」を記録するシートが付いていて、自分の実測値が手に入る。他人のベンチマークより、自分の数字がいちばん説得力があるからね。

まとめ

タツヤ: 流れをおさらいしよう。

  1. 仕様を読ませて、人間が突き合わせる(仕様書化)
  2. テストで現行の挙動を固定する(安全網)
  3. AIに移行させる(Hono実装+対応表)
  4. 対応表のアラを探して直させる(レビュー)

ミドリ: 「書く」以外は全部、いままでのエンジニアの仕事の延長なんですね。

タツヤ: そう。この一連の流れを3回・約8時間で体験できる無料ハンズオン教材(全3回・サンプルコード付き)を公開しているので、チームの「AI駆動開発の突破口」に使ってほしい。