「今さらJavaかよ!」

 今から3カ月前,日経ITプロフェッショナル8月号の特集企画にJavaが持ち上がったときの,記者の嘘偽りない感想である。Javaの記事や解説書は世にあふれており,改めて解説するまでもない,語りつくされたトピックであると思ったからだ。記者の友人や同僚の何人かからも,「今さらJavaの何を書くの?」という声を聞いた。

 ところが,取材を進めるにつれ,また特集の執筆を進めるにつれ,この考えは大きな間違いであることが分かった。まず,現場で日々Javaに触れているITエンジニアたちから,「Javaを根本から理解し,使いこなしているエンジニアは,本当に少ない」という声を多く聞いた。

 代表的な意見は,次のようなものだ。「Javaのプログラムを書けるというJavaのエンジニアは,ここ数年でかなり増えた。しかし顧客の業務を理解して,それをオブジェクト指向でモデリングしたり,Javaの技術体系を理解した上で再利用しやすいプログラム部品を作成したりするスキルを持ったエンジニアは,驚くほど少ない。おそらく,ソフトウエア工学を一から学ぶ機会がなかったからだろう」。

 これはJavaとEJBコンポーネントを使ったシステム開発一筋の中堅インテグレータ,東京カコムスの西原良一副社長の談である。同氏は続けて,こう語る。「これまではともかくコーディングさえできれば何とかなったかもしれないが,これからはそうはいかない」。同様な意見は,他にも多くのインテグレータで聞いた。

Javaを“知っているつもり”のエンジニアが増えている

 それも無理もないことかも知れない。1995年にJavaが登場したときすでに中堅であり,段階を追ってJavaを理解してきたベテランはともかく,「ここ数年の間にIT業界に入ったエンジニアは,新入社員教育でプログラミングをたたき込まれ,後はひたすら実践のみ」(新日鉄ソリューションズの高田寛システム研究開発センター先端アプリケーション研究部長)。

 関連書籍は多いが,相当の基礎知識がないと読みこなせないものが大半を占める。基礎から勉強したいと思っても,時間も適切な資料もないのが実情だからだ。

 もちろん,こうした状況に危機感を抱き,Javaを体系的に教育しているインテグレータもある。そんな1社である日立システムアンドサービスは,新入社員やCOBOL技術者に対して,Javaの文法,言語仕様はもちろんのこと,オブジェクト指向,EJBやJSPといったJava技術仕様,フレームワークといった知識を,徹底的に教え込む。座学だけでなく,Javaを使ったシステム開発の実習もある。

 ただし,こうした体系的な教育を実施しているインテグレータは,多数派とは言えない。そんな余裕はないし,教育をしなくても十分に仕事をとれた。そして無意識のうちに,プログラムを書けるというだけでJavaを“知っている”つもりになっているITエンジニアは,多いのではないだろうか。それが先に紹介した,東京カコムスの西原副社長の発言につながっているのだろう。

基礎を身につける習慣を!

 記者が訴えたいことをまとめると2つある。1つは単にプログラムを書ける,というレベルの知識にとどまらない,もっと大局的なJavaの知識を身につけてもらいたい,ということだ。

 取材したインテグレータには,Javaエンジニア不足を嘆くと同時に,もう1つ共通の意見があった。それは,「Javaは単なるプログラミング言語の域を超えて,“環境(プラットホーム)”とでも言うべき存在である」というものだ。

 実際,Javaの中身は複雑になり続けている。最たるものが「J2EE」[用語解説] である。J2EEを正確に理解するのは簡単ではない。Javaのベテラン・エンジニアに聞いても,「情報システムを構築するためのAPIを集めたもの」,「企業情報システムの構築・実行環境」,「システム構築に欠かせない仕様も混じっている」・・・。人によって微妙に定義が異なるのだ。

 さらにJXTA[用語解説] やJini[用語解説] など,Java関連技術が次から次へと登場している。もはや体系的な知識がなければ,Javaを活用したシステム開発は困難になっている。

 もう1つは,ITエンジニアとしての「謙虚さ」である。記者自身も,今回の取材を通じて,いかにJavaを“知っているつもり”になっていたかを思い知らされた。「コンテナ」や「フレームワーク」を解説するのに,「ああでもない,こうでもない」と何日もかかってしまったのだ。

ITエンジニアは謙虚たれ

 話は少し変わるが,今年初めに記者は米国のストレージ大手EMCでNAS(Network Attached Storage,[用語解説] )製品の開発に携わったパーシー・ツェルニック氏にインタビューする機会を得た。ツェルニック氏は同社のNAS製品「Celerra」シリーズの設計・開発を手掛けた。Celerraは出荷以来,年率100%を超える売り上げ伸び率を示し,今や同社の稼ぎ頭の1つとなった製品である。

 インタビューの際,記者は「あなたが考える,優れたITエンジニアの条件とは何か」と質問した。ツェルニック氏は迷わず「常に自分の持つ知識を気にかけること」と答えた。

 「良いエンジニアは常に自分の持つ知識を心配しているもの。いかに優れた技術を身につけ,良い製品や良いソリューションを顧客に提供したとしても,それらはすぐに陳腐化するし,もっと良いものがすぐに登場するからだ。自己満足に陥るとしっぺ返しをくらう」。

 つまり,ITエンジニアは謙虚たれ,ということである。知っているつもりの技術でも,常に謙虚に自身の知識を見直す。そうでなければ進歩はない。NASとJavaとでは,必要な知識やスキルは全く違う。しかし,ITエンジニアとしての心構えは共通であるはずだ。

 もちろん本欄の読者には「自分は常に勉強にはげんでいるし,Javaも十分理解している」という人が多いかもしれない。だが,そうでない場合,自身のスキルを見直すとっかかりとして,まずはJavaの体系的な全体像をながめてみることから始めてみてはいかがだろうか。

(玉置 亮太=日経ITプロフェッショナル)