15年動き続けたシステムを、2ヶ月で作り直した話
「長く続くサービスほど、システム移行が難しくなる。」
2026年7月から8月にかけての2ヶ月間、私はあるプロジェクトに取り組んでいました。
ワールドトークのシステム移行です。
サーバーのOSから、データベース、プログラミング言語、フレームワークまで。
15年前の環境から、現在の環境へ大きくアップデートしました。
「アップデート」と書くと、それほど大変なことには聞こえないかもしれません。
でも、実際にやったことはもっと大きなものでした。
ワールドトークという巨大なシステムのソースコードを、ほぼ一から書き直しています。
普通に開発プロジェクトとして考えれば、1年以上の期間と、数千万円規模の費用がかかっても不思議ではない仕事です。
それを、2ヶ月でやりました。
なぜ、そんな無謀にも思えるチャレンジをしようと思ったのか。
そして、実際にどうやって15年分のシステムを移行したのか。
株式会社ライトアップの森山(@wu_moriyama)です。
これまで、15年以上のオンラインスクール運営と、200校以上のスクール立ち上げを実施してきました。
今回は、その2ヶ月間のシステム移行プロジェクトについて書いてみたいと思います。
長く続くサービスほど、システム移行が難しくなる
ワールドトークは2011年にスタートしました。
当然、当時作ったシステムも、その時代の技術で作られています。
サービスが15年続けば、技術の世界では何世代も環境が変わります。
- OSも変わる
- プログラミング言語も変わる
- データベースも変わる
- フレームワークも変わる
一方で、サービスは止まりません。
毎日のように予約が入り、決済が行われ、講師がレッスンを提供しています。
そのため、「古くなったから、新しく作り直そう。」と簡単にはいきません。
15年間運営してきたシステムには、
- 予約
- ポイント
- 決済
- キャンセル
- 講師報酬
- メッセージ
- 管理画面
- キャンペーン
- 各種バッチ処理
など、膨大な機能があります。
さらに厄介なのが、15年間の運営によって積み上がった細かなロジックです。
「この場合だけ、この処理をする。」
「この条件では、ここを変更する。」
「この会員の場合は、この例外処理を入れる。」
一つひとつは小さな仕様でも、それが15年分積み重なっています。
そして、新しいシステムを作っている間にも、現在のワールドトークは動き続けています。
旧システムにも新しい改修が入ります。
その変更を、新システムにも反映しなければいけません。
よくシステム移行は、
「走っている車のエンジンを、走ったまま交換するようなもの」
と例えられます。
今回の移行も、まさにそんな仕事でした。
もちろん、古いシステムだからといって、15年間何もせず使い続けていたわけではありません。
必要な保守や対策を行いながら運用を続けてきました。
ただ、根本的な技術環境を刷新するとなると話は別です。
サービス全体を作り直すくらいの、大きなプロジェクトになってしまいます。

「移行したい。でも、移行できない」という状態になっていた
実際に移行しようと考えると、かなり大変です。
- ソースコードを書き直す
- 新しいサーバーを用意する
- データを移行する
- 現在の機能をすべて再現する
- テストする
- 問題があれば修正する
さらに、毎月数万件のレッスンが行われているサービスを動かしながら、並行して進めなければなりません。
普通に考えれば、人員を配置して1年以上。
費用も数千万円規模になる可能性があります。
しかも、完成したら終わりではありません。
これだけ大きなシステムを移行すれば、移行後もしばらくは細かな不具合との戦いになることが容易に想像できます。
だから、
アップデートしたくても、なかなかアップデートできない。
そんな状態になっていました。
そして、ここがレガシーシステムの難しいところなのですが、
アップデートしなければ、さらにアップデートが難しくなります。
技術は止まってくれません。
毎年、新しいバージョンが登場します。
数年程度ならまだ追いつけるものが、5年、10年と時間が経つほど、その距離はどんどん開いていきます。
さらに時間が経てば、当時システムを作った人もいなくなります。
なぜ、この処理が存在するのか。
このコードを変更すると、どこに影響するのか。
その経緯を知っている人も少なくなっていく。
そして少しずつ、
誰もシステム全体を把握できない状態になっていきます。
いわゆるブラックボックス化です。
- 移行したい
- でも、移行するには大きすぎる
- だから移行できない
- 移行しないから、さらに移行が難しくなる
かなり「詰んでいる」状態だったと思います。
その状況を変えたのが、AIコーディングでした
そんな状況の中で、大きな変化がありました。
AIコーディングです。
2026年に入り、Claude CodeをはじめとするAIコーディングツールが急速に普及しました。
私自身もAIを使いながら、さまざまなシステム改修や新規開発を行うようになっていました。
そして使っているうちに、AIにはコードを書くこと以外にも、非常に強い能力があることに気づきました。
既存のソースコードを読み解く力です。
これは今回のプロジェクトにおいて、ものすごく重要でした。
ワールドトークを新しい環境へ移行するのであれば、当然、現在の機能をすべて把握する必要があります。
でも、実は運営している私たち自身も、そのすべてを把握しているわけではありません。
私は立ち上げ当初から関わっているので、かなり多くの仕様を知っています。
それでも、この15年間でWTEやKIRIHARA Online Academyなど別の事業にも関わるようになり、私が直接把握していない改修も増えていました。
つまり、
中にいる私たちにとっても、ワールドトークは一部ブラックボックスになっていたのです。
この状態で新しいシステムを作れば、
「移行したと思っていた機能がない。」
という問題が必ず起きます。
これが、ずっと怖かった。

試しに、15年分のソースコードをAIに読ませてみた
ある日、私はワールドトークのソースコード一式をPCへ用意しました。
データベースの構造も用意しました。
そしてAIに聞いてみました。
「このシステムの仕様をまとめられる?」
そこから数十分。
AIは大量のソースコードを読み、システムの構造を整理し、仕様として言語化していきました。
私はそれを見ながら、
「もしかしたら、できるかもしれない。」
と思いました。
これまでブラックボックスだと思っていたシステムを、AIなら読み解けるのではないか。
人間が何週間、何か月もかけて調査するようなものを、AIと一緒なら見える化できるのではないか。
そこで、もう一つ聞いてみました。
「このシステムを、現在の環境に合わせて作り直すことはできる?」
回答は、
「大規模ではあるが、可能。」
そこからは質問の連続です。
- このOSで動かせるのか
- この言語のバージョンで問題ないのか
- どのような順番で移行すべきなのか
- 新しいディレクトリ構成はどうするのか
- どんなリスクがあるのか
- どれくらい時間がかかるのか
不安に思っていたことを、とにかく全部聞きました。
AIは、その一つひとつに答えていきました。
そして私は、少しずつ、
「やりたくてもできなかったことが、もしかしたら今ならできるかもしれない。」
と思うようになりました。
最後に必要だったのは、「やる」と決めることでした
もちろん、不安はありました。
AIにここまで任せて大丈夫なのか。
想定していない問題が起こるのではないか。
移行した後に重大な機能漏れが見つかったらどうするのか。
おそらく、トラブルは起きる。
思いもよらないことも起きる。
それでも、何もしなければ状況が良くなるわけではありません。
時間が経てば、さらに移行は難しくなります。
そして私自身も、いつまでこのサービスに関わっていられるのか分かりません。
立ち上げ当初からシステムを知っている自分がいる今だからこそ、やる意味もある。
あとは、覚悟を決めるだけでした。
ただ、そこで少しだけ考え方を変えました。
「絶対に2ヶ月で移行する」と考える必要はないんじゃないか。

失敗したら、移行しなければいい
2ヶ月で移行すると決めました。
今振り返ると、かなり無謀な計画です。
しかも実際には、最初の1ヶ月でほぼ私一人でソースコードを書き換えました。
残りの1ヶ月で新しいサーバーに載せ、動作確認とテストを繰り返しました。
ただ、不思議と、
「失敗したらどうしよう。」
という怖さは、それほどありませんでした。
理由は単純です。
失敗したら、移行しなければいい。
新しいシステムを作っている間も、既存のワールドトークは動いています。
2ヶ月やってみて、
「これは無理だ。」
と判断したら、移行しなければいい。
もちろん、その2ヶ月は無駄になるかもしれません。
でも、数千万円をかけて1年間のプロジェクトを始めることに比べれば、失うものはずっと小さい。
だったら、やってみよう。
そう思いました。
最初の1ヶ月。ひたすらAIとコードを書き続けました
やると決めてからは、あっという間でした。
私が使ったのはCursorです。
まず、旧システムを分析しながら、仕様書と移行計画を作りました。
- 会員サイト
- 講師画面
- 管理画面
- 代理店画面
- バッチ処理
どこから移行するのか。
どの順番で機能を作るのか。
一つひとつ整理していきます。
計画ができたら、旧ソースコードと新ソースコードを同じプロジェクト内に置き、一つずつ新しい環境へ移していきました。
- 作る
- ローカル環境で確認する
- 足りないものを見つける
- 旧ソースを確認する
- AIに「この機能が抜けていないか、旧ソースと比較して確認して。」と頼む
- 抜けているものがあれば、また実装する
ひたすら、その繰り返しです。
Cursorはずっとコードを書いています。
私もずっとチェックしています。
全画面を一通り移行するまで、およそ2週間。
この規模のシステムとして考えれば、驚くほど短い期間です。
ただ、その画面を一つひとつ確認していた私には、
永遠のように長い2週間でした。

ローカルで動いても、本番環境では動かない
次に、新しいサーバーを用意しました。
ここからは、保守をお願いしている技術者にも協力してもらいました。
新しい環境を構築し、その上で新しいワールドトークを動かします。
ただ、当然ながら簡単にはいきません。
ローカルでは動いていたのに、サーバーでは動かない。
- エラーが出る
- データがアップロードできない
- これはソースコードの問題なのか
- サーバー側の設定なのか
- 権限の問題なのか
技術者とやり取りしながら、一つずつ原因を調べていきました。
そして、ここからはチームにもテストへ参加してもらいました。
運営メンバーには、普段の業務が正常にできるか。
コーダーには、各ページの表示に問題がないか。
さまざまな角度から確認してもらいました。
すると当然、出てきます。
「このページがありません。」
「この機能がありません。」
「ここを押すとエラーになります。」
そのたびに旧システムへ戻り、コードを確認し、新しいシステムへ反映していきます。
作って、直して、確認する。
また問題が見つかる。
また直す。
それを繰り返しました。
「移行できる」と思えたのは、開始から1ヶ月半後でした
プロジェクトを始めて、およそ1ヶ月半。
ようやく私は、
「これなら移行できる。」
と思えるところまで来ました。
9月から、新しいシステムへ切り替える。
そう決断しました。
残された期間は2週間です。
そこからは、さらに細かくチェックを続けました。
同時に、移行後に起こりそうなトラブルを想定し、カスタマーサポートの対応も準備しました。
毎日、遅い時間までテストと改修を続けました。
そして、8月31日。
7時間のメンテナンス時間を取り、いよいよ本番移行を行いました。

あれだけテストしても、本番では問題が起きる
本番移行でも、思いもよらないトラブルが起きました。
「あれだけテストしたのに、なぜ動かないんだろう。」
そんなことが何度もありました。
でも、メンテナンス終了時刻は決まっています。
一つずつ原因を調べる。
直す。
確認する。
また次へ進む。
決められた時間の中で、できることをすべてやりました。
そして、オープン。
ここでようやく、一息つきました。
ただ、本当の意味での移行作業は、まだ終わっていませんでした。
移行後の1週間が、一番緊張していたかもしれません
オープン後、想定していた通り、会員や講師から不具合の報告が届きました。
- 報告が届いたら、すぐに確認する
- その場で直せるものは直す
- 確認して返信する
それを1週間、繰り返しました。
毎日ぐったりして、夜は一瞬で寝てしまいます。
でも夜中に目が覚めると、メールを確認してしまう。
不具合の報告が届いている。
「これは明日の朝、すぐに直そう。」
朝起きたら、自宅ですぐにPCを開いて改修する。
そんな毎日でした。
今振り返っても、
なかなか味わうことのできない緊張とプレッシャーの2ヶ月間だったと思います。

AIが変えたのは、開発速度だけではなかった
もちろん、大変でした。
でも、このプロジェクトをすべて人の手だけで行っていたら、もっと大変だったと思います。
- 大量のコードを読み解く
- 仕様を整理する
- 新しいコードを書く
- 旧システムと比較する
- 抜けている機能を探す
- 不具合の原因を調べる
それを人だけで繰り返していたら、文字通り終わりの見えない作業になっていたかもしれません。
今回、AIによって開発速度が大きく上がったことは間違いありません。
でも、終わってから考えると、
AIコーディングがもたらした一番大きな変化は、開発速度ではないのかもしれない。
と思うようになりました。
私が一番大きいと感じたのは、
挑戦するコストが下がったことです。
以前なら、数千万円をかけなければ検討できなかったことを、まず自分で試せる。
失敗したら、戻ればいい。
うまくいきそうなら、その先へ進めばいい。
これまで、
「失敗したときの損失が大きすぎるから、挑戦できない。」
と思っていたことに、
「とりあえずやってみる。」
という選択肢が生まれました。
これは、開発の世界においてかなり大きな変化だと思っています。
AIがコードを書いても、最後に判断するのは人でした
そして、もう一つ感じたことがあります。
今回、AIは本当に大量のコードを書いてくれました。
旧システムも読み解いてくれました。
問題が起きれば、一緒に原因を考えてくれました。
でも、
- 何を残すのか
- どの仕様が重要なのか
- どこまでできれば移行していいのか
- この不具合を許容できるのか
- 本当に8月31日に切り替えるのか
最後の判断は、すべて人間がしています。
AIには15年分のワールドトークのコードを読むことはできます。
でも、私たちは15年間、そのサービスを運営してきました。
なぜこの機能が必要なのか。
生徒がどう使っているのか。
講師がどう使っているのか。
運営がどこで困るのか。
そこには、コードだけでは分からない15年間があります。
だから今回のプロジェクトは、
AIがワールドトークを作り直した話ではありません。
15年間サービスを運営してきた人間と、大量のコードを読み書きできるAIが、それぞれの得意なことを持ち寄って作り直した。
そんなプロジェクトだったのだと思います。
15年動いたサービスを、AIと一緒に未来へ持っていった
今回やったのは、単なるシステムのアップデートではありません。
2011年に作ったワールドトークを、2026年の環境へ移す。
15年動いたサービスを、AIと一緒に未来へ持っていく。
そんな仕事だったのだと思っています。
そして、この移行が成功したことで、ようやくまた新しい機能を作っていける環境になりました。
今回の移行は、15年前に作ったシステムを延命するためのものではありません。
これからの15年を作るための移行です。
2030年も。
2035年も。
そして、その先も。
ワールドトークを続けていくために。
15年間動き続けてきたサービスが、もう一度、新しいスタートラインに立ちました。
私自身も、ようやく少しだけ肩の荷が下りた気がしています。

WTEでも、AIと一緒に「できなかったこと」に挑戦しています
今回のシステム移行を通して、AIによって開発の可能性は大きく広がったと感じています。
私たちが提供するオンラインスクール向け予約システム「WTE」でも、AIを活用した開発や業務改善を進めています。
これまで「開発コストが高くて難しい」「システム的に実現できない」と諦めていたことも、今なら違う方法で実現できるかもしれません。
私たち自身がAIを使いながら試行錯誤しているからこそ、その経験も含めてオンラインスクールの運営をサポートしていきたいと思っています。
オンラインスクールのシステムやAI活用について、「こんなことはできるかな?」ということがあれば、ぜひお気軽にご相談ください。


