私がIT業界の片隅に所属をし始めた2000年ごろ、Javaエンジニアはスーパースターだった。Javaエンジニアを名乗るということは、秘奥義オブジェクト指向を習得していることに他ならないからだ。
「オブジェクト指向こそ正義」だった。
Javaとオブジェクト指向を身につければ、20年は食っていけると言われたものだった。
あれから20年。たしかにJavaとオブジェクト指向で20年は食えた。が、もはやオブジェクト指向は絶対でも正義でもない。
僕は、IT講師として新入社員にJavaを教える仕事もしているが「オブジェクト指向こそ正義」と無垢な生徒達に教えなければならない時に、苦痛を覚えるようにすらなってしまった。
2000年代から、新人教育のテキストは変わっていない。継承は積極的に使っていくべきで、オブジェクトは現実世界を模した仮想現実世界をコンピューター内に生み出す技術とされている。Strutsだけはようやく姿を消した。
2000年前半、
これからはオブジェクト指向だよ。当時の上司は言っていた。
オブジェクト指向を初めて学んだ時、理解不能だったのは、変数やループといったプログラミングらしい構文から一転して、様々な現実の例え話が登場することだった。オブザーバーは軍師で諸葛孔明なのだと書かれた雑誌を読んで先輩に質問したときに「そんなクソ本読むな。GOF(GangOfFour)を読め」と叱責された。しかし、GoFのデザインパターンという本を知り、読み、さらに訳のわからない泥沼にハマったきもちになった。
オブジェクト指向を習得したと実感するためには、結局プログラムを書いて読むしかなかった。Sessionの状態管理をラップするクラスを書いたときだった。訳もわからずこねくり回した労力の割りに成果は少ないのだが、これぞオブジェクト指向だ!と実感が得られた。
それから、オブジェクト指向は自分の中でソフトウェア開発における「正義」だった。
当時SESでいろんな現場を行き来する末端のプログラマーだったが、「この現場はクソだ。コードにオブジェクト指向らしさが全くない。真理を知らないアホがリーダーをやってるんだ。」とぼやいていた。
自分たちだけは、日本のSE業界をオブジェクト指向を中心としたイケてる世界に変えていこう。
所属していたのは零細なSES企業だったが、オブジェクト指向的な技術力で盛り立てて、大手のイケてない現場でブイブイ言わせてやろう!と心のそこから思っていた。
薄々は感じていた。
インターフェイスの分離やデザインパターンを使わない現場に入った時、IDEがコードのジャンプを適切に実行してくれることの楽さを感じた。
しかし、その現実に目をつぶって、わざわざ全部をインターフェイスで分離して、追いかけにくいコードに書き換えた。これこそがオブジェクト指向ですよ、すばらしいでしょう。と。。
ダサい手続き型は残らずこの手で駆逐してやる
オブジェクト指向的にリファクタリングすることが、正義だと思っていた。
自分がプロジェクトのリーダーや技術のリーダーになる頃には、徐々に気付き始めていた。
Webのサーバーサイドで隆盛を誇っていたJavaだが、実のところWebサーバーサイドの現場のコードにオブジェクト指向が必要な部分などそう多くはなかった。
フレームワーク部分では、多少オブジェクト指向的なテクニックは有効だったが、大半のコードは業務の流れを記述し、DBアクセスのフローを制御するだけのもので、無駄に継承やデザインパターンを駆使しているコードはメンテナンスしにくいだけのものだった。
その頃には、駆け出しエンジニアの後輩から
「現場ではオブジェクト指向のテクニックを十分に使わせてくれません、せっかく学んだオブジェクト指向のテクニックを駆使するにはどうしたらいいですか?」的なことを聞かれて、どうにも返答に困るようになっていた。
なぜなら要らんからだ。
現場のリテラシーが低いだけとは言い切れない。と思うようになってきていた。
「世の中を変えたければ偉くなれ」程度のアドバイスでお茶を濁した。
正義は時代とともに形を変える。
オブジェクト指向は、使えると便利なシーンは確かにある。
グローバル変数を細かくしてくれた。
型を自分で作れるのはとても嬉しい。
文字列配列のindex 0はIdで、index 1 は氏名で、、、というプログラムを書いていた世界には戻る必要はない。
しかし、絶対の正義というほどのことではない。指向にするほどのものでもない、ただの便利な言語機能だ。
しかし、2000年代は絶対の正義と言えるレベルの宗教だった。
オブジェクト指向が、分析や設計にまでおよぶ広大な宗教だったから、部分的な不都合などは些末なことだった。
僕は、自分がようやく壁の中に逃げ込んだだけの人類に過ぎず、壁の外には広大な世界が広がっていることを知った。
生まれてこのかた、自分は正常なリテラシーをもった現実的な考え方の人間であり、たくさんの情報源にふれているので何者かに洗脳されることはない、と思っていた。
しかし、事実として僕は、オブジェクト指向絶対教に洗脳されたことがあり、
いま、新しい宗教に洗脳されている人を見たとしても
それが悪だとか、自分が洗脳されていないとか言い切ることはできない。