古い概念のアナロジーで新しい概念を理解しようとしてはいけない例

COBOLRuby on Railsのアプリケーション構造は似ている」のか?

少し前ですが、以下のような記事がありました。


吉岡氏は「COBOLRuby on Railsのアプリケーション構造は似ている」と言う。COBOLのシステムは業務ロジックと画面定義体,DBアクセス・ルーチンが分離されており,SEは業務ロジックに専念できた。Ruby on Railsでも画面はビューとして,DBアクセスはモデルとして分離されており,COBOL技術者にとって取り組みやすいと吉岡氏は語る。


最初何のことを言っているのか理解できなかったのですが、
次の図を見て合点がいきました。

ActiveRecordとTransactionScript




クリックで拡大


通常我々は、業務処理はModelに記述します。
Railsでも、Controllerは薄く、Modelを厚くするように心がけます。
で、ドメインモデルに永続化の機能もある、というのがActive Recordパターンですよね。


しかし、この図を見ると業務処理はControllerに書かれています。
Modelはデータの入れ物(COBOLで言うDATA DIVISION)兼永続化機構で、
Controllerは処理を書くところ(同じくPROCEDURE DIVISION)ということのようです。
これは、どう考えてもTransaction Scriptです。


そんなアーキテクチャにするなら別にRailsじゃなくてもCOBOLに似るよ
と思ってしまいます。

安易な「似ている」に注意

任意の2つのものを比べるとき、なんかしら似てる点はあります。
僕とキムタクだって似てます。だって2人とも目が2つあるし鼻の穴は3つじゃない。


だから、「AとBは似てる」とか「AとBは同じ事を言っている」とかいう議論を見たら、
どういう点が違うのかを、ちょっと立ち止まって考えてみるべきです。


違う点があるから、AはAでありBではない訳ですから、
単純に「AとBは同じようなもん」と考えることは、
Aを(Bではなく)Aたらしめている何か、Bを(Aではなく)Bたらしめている何かを
見落としてしまうおそれがあります。


COBOLerの人が本当に新しいテクノロジでやっていくつもりならば、
COBOLの知識は、いったん捨てたほうが良いと思います。
後生大事にとっておくようなものでもありませんし。


関係モデルの一番理解が難しい部分がなぜ難しいかといえば、
私たちが既にファイルシステムについて知っていることを、
一度頭から追い出す(unlearn)必要があるからだ。


ジョーセルコ