分からないRailsを、分からないまま解析した。あのときAIがあれば
2020年に、学習塾のポータルサイトを構築する案件を担当した。
生徒と塾をマッチングするための、いわゆる紹介サイトである。
ただし、ゼロからの開発ではない。
このシステム、途中までRubyで開発されていた。
それがベンダー側の事情で中断。
開発を引き継ぐことになったのが、私のいたPHPのチームだった。
ここで問題が一つある。
私は、Railsが分からない。
チームの誰も分からない。
だから引き継ぎではなく、PHPでの作り直しになった。
ではRailsのコードは無視していいかというと、そうはいかない。
仕様書は、まともに残っていなかった。
つまり、このシステムの仕様を正確に知っているのは、この世でRailsのコードだけだったのである。
分からない言語で書かれた、唯一の正解。
それを読むところから、仕事は始まった。
外国語の新聞を読むように
Rubyがまったく読めないわけではない。
プログラミング言語というのは、隣の国の言葉に似ている。
PHPとJavaを長くやっていれば、Rubyのコードも、単語を拾えばなんとなく意味は取れる。
イタリア語が分からなくても、スペイン語を知っていれば新聞の見出しくらいは推測できる、あの感覚である。
MVCの骨格も同じだ。
ルーティングがあって、コントローラがあって、モデルがあって、ビューがある。
マイグレーションを読めば、テーブル構造は分かる。
バリデーションを読めば、入力の仕様が分かる。
言語は知らなくても、WEBアプリの解剖学は万国共通なのである。
ここまでは、よかった。
問題は、その先だった。
「書いていない」が仕様だった
Railsには有名な思想がある。
「設定より規約」。
いちいち設定を書かなくても、命名規則に従っていれば、フレームワークがよしなにやってくれる。
Railsを知っている人には、これは美徳である。
コードが短くなり、迷いが減る。
しかし、Railsを知らずにコードを読む人間には、これは悪夢だった。
動作の根拠が、どこにも書いていないのである。
このURLは、どのコードにつながっているのか。
このデータは、いつ、どこで保存されているのか。
grepしても、出てこない。
書いていないから。
規約という「Rails使いの常識」の中に、仕様が溶けているのだ。
私は結局、Railsの入門書を買ってきて、規約のほうを勉強した。
コードを読むために、まずそのコードの「常識」を学ぶ。
読めない古文書のために、文法書から始める考古学者の気分である。
こうして数週間、Railsのコードを解読し、仕様を書き起こし、PHPで作り直していった。
ちなみにこの案件では、GoogleMapで住所を緯度経度に変換する処理なども作ったのだが、そのあたりの苦労は、Rails解読の前では霞んでしまった。
サイトは無事に完成した。
いま思い出しても、地味で、泥臭くて、人に自慢しにくい仕事である。
あのときAIがあれば
さて、ここからが本題である。
最近の私は、AIと一緒にコードを書いている。
Claude Codeにリポジトリを読ませると、知らないコードの構造を数分で説明してくれる。
そして、ふと思うのだ。
あの案件、今ならどうなっていただろう。
「このRailsアプリの仕様をまとめて」
おそらく、この一言である。
ルーティングの一覧。
テーブル構造。
画面ごとの処理の流れ。
規約の中に溶けていた「書いていない仕様」も、AIはRailsの常識を知っているから、全部言葉にしてくれる。
私が数週間かけた解読作業は、たぶん数時間になる。
入門書を買いに行く必要もない。
なにしろAIは、Railsどころか、この世のたいていの言語の「常識」を最初から知っているのだから。
読めない言語のコードは、もうこの世に存在しないのである。
あれだけ苦労した身としては、正直、ちょっと悔しい。
あのときAIがあれば。
心からそう思う。
苦労は美談にしない。でも、無駄でもなかった
こういう話の締めくくりは、だいたい相場が決まっている。
「あの苦労があったから今がある。若者よ、苦労はしておけ」
私は、そうは言わないことにしている。
あの数週間が数時間になるなら、そのほうが絶対にいい。
浮いた時間で、もっと別のことができたはずだ。
苦労そのものに、価値はない。
ただ、一つだけ残ったものがある。
「知らないものは、知らないなりに読み進められる」という感覚である。
言語が変わっても、フレームワークが変わっても、骨格を探せばなんとかなる。
この感覚は、AIの答えを受け取るときにも、実は効いている。
AIが説明してくれた仕様が、本当にコードと合っているか。
どこか怪しい箇所はないか。
最後にそれを見極めるとき、使っているのは、あのとき鍛えた筋肉なのだ。
苦労は要らない。
でも、筋肉は要る。
これからのエンジニアが、あの筋肉をどこで鍛えるのか。
それは少し、気になっている。
もっとも、Rails使いの皆さんからすれば、「規約くらい勉強してから読め」という話なのかもしれないが。