前回、あんなにRubyだRubyだと言ってたオレである。 でも、今Java開発の真っ只中だったりする。 矛盾してんじゃないの?って思われるかもしれない。 でもこれは仕方がないことだ。 だってJavaでできたシステムの上に機能追加するんだから。 それをRubyで作ろうったって土台無理な話だ。 オレはJava言語の可能性を否定していたのではない。 Javaは優秀な言語であり、今後も仕事は当分あるだろう。 何といっても既にJavaで作られたシステムが企業には多数存在するのだ。 そのメンテナンスをするにはもちろんJava言語を使用しなくてはならない。 Javaは今後も成長し続ける、というのは多くの人が認める事実だ。 オレはそこを否定したいのではない。 同じことはC++にも言える。 そういう意味で言うとC++こそ最も重要な言語である。 何といってもJava言語そのものがC++で実装されているのだ。 C++の仕事が減るということはあっても無くなることはまず無い。 オレの言っているのはそういう言語そのものの優秀性、重要性ではないのだ。 競馬に例えると分かりやすい。 Java、C++は優秀であり重要な言語だ。 誰もがそのことを良く知っている。 もちろんそれだけ人気もある。 色んな言語を競争させればJavaかC++が勝つ可能性が一番高いだろう。 そして大事なのは「誰もがそう思っている」ということだ。 競馬ではこれはオッズというものに反映される。 みんなが勝つと思っている馬はオッズも低いのだ。 100円賭けても120円くらいにしかならない。 何か予想外の要因で負けることもあるし、そうなったら100円はパーだ。 そのリスクを背負って、うまく勝ったとしても1.2倍にしかならないのだ。 そういう意味でオレはRubyをお勧めした。 RubyはJavaやC++ほどの実績もない。 大企業のシステム構築に採用されることは滅多にないだろう。 だが、ひょっとしたら将来JavaやC++を出し抜くかもしれない。 それくらいの優秀性は持っている。 知名度も徐々に上がってきた。 それなのに、まだまだRubyは使われていない。 要するにオッズが高い、という状態なのだ。 Rubyはかなりお買い得な万馬券と言えるだろう。 ただ、お買い得とはいっても万馬券なので確実性は低い。 だからベンチャーなプログラマ、即ちギャンブラー向けにお勧めするのだ。 今、Rubyで飯を食うのは難しい。 仕事としての実用性ではRubyはまだまだJavaに負けている。 だからオレも仕事としてはJavaに取り組まざるを得ない。 だけどなぁ〜・・・・・。 これは弱音になるから前回は書かなかったけど・・・・。 覚えることが多すぎんだよ!!Javaは!! Java言語自体はいい。 シンプルで思想がしっかりしてて美しい言語だ。 それゆえ覚えやすい。 だけどそのJavaに付随して次々と生まれる応用技術。 これが問題だ。 やれEJBだフレームワークだDIコンテナだAOPだJSFだと・・・・。 その割りに全部が全部必要なわけではない。 便利だと思うものをこちらが選択して使うのだ。 だけどどれが便利でどれがそうじゃないか、なんてことは覚えてみなけりゃわからない。 結局オレたちプログラマは次々と生まれる新技術に翻弄される。 せっかく覚えた技術がもっと便利な技術に淘汰される。 それも1年や2年で、だ。 これにはJava技術に関する標準化団体JCPの存在が影響していると思っている。 Javaはその特性上、新しい技術に対してまず仕様が決定される。 例えばJ2EEの中でServletやJSPといったものの仕様が、議論の中で決定される。 そして決定した仕様に沿って「そのように動くもの」(TomcatとかWebSphereとか)が作られる。 このプロセスに落とし穴があると思うのだ。 JCPの代表的な失敗作としてEJBがある。 EJBは3.0になってやっと使いやすくなってきたようだが、1.0なんてひどいものだったそうだ。 とにかく難しい、ややこしい、覚えることが多すぎ。 JCPのメンバーは頭のいい奴ばっかりだろうから、これくらい大丈夫だと思ったんだろう。 だけど、できた仕様は世界中のJavaプログラマの大多数にとってはあまりにも難しすぎた。 EJBを使いこなして開発を進めていける人材が少なすぎたのだ。 それでも標準団体であるJCPが決定したのだから世の中はEJBへと動いていく。 書籍も発売されるし、雑誌やネット上で「これからはEJB」みたいな論調が増えていく。 そうするとそれを採用する企業も出てくるし、仕事も出てくる。 会社でそのような仕事があるとプログラマはそれを覚えなければしょうがない。 で、せっかく覚えたEJBはその後どうなったかというと・・・。 普及しなかった。 EJB3.0で復権するかどうかはわからない。 だが、とにかく過去のEJBに関してはオレを含む多くのJavaプログラマがこう思っているだろう。 勉強しなくてよかった、と。 今まで普及してきた多くの技術は順序が逆だ。 まず浸透してから標準化するのだ。 世間の多くの人が使うから、これを標準技術にしよう、という動きに繋がる。 そうするとその技術は既に普及しているから短期間で消える心配はない。 これが本来の姿だろう。 こんな背景があるから、どうしても懐疑的になる。 UMLが便利なのは分かっているけど、本当に勉強する価値があるのか? 結局あんまり便利じゃなかったね、なんていう結論に陥らないか? UMLを担いでる人たち。 即ちUMLが流行ったら儲かる人たちに仕掛けられてるだけじゃないのか? 続く... 今日の一言 勉強しない言い訳ともいう。 |