Javaは常に最新版で使いましょう

Javaのセキュリティ更新が出た。今回はJava 7u11である。

Java 7 (JRE)
http://java.com

Java Development Kit 7 (JDK)
http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

さてここからが本筋。上記で分かるとおり、Javaは開発キット(JDK)と実行環境(JRE)の二種構成である。これは確かJDK 1.1の頃から分岐したんじゃないかなと思う(確かJDK 1.0の頃は一緒だった)。JDKにはJREが含まれており、JDKのインストール時にJREが一緒にインストールされる、という構成になっている (Mac OS X版はインストールオプションが無いが)。

Javaというとひとくくりに上記ふたつが混在して認識されていると思うが、一般に悪さを引き起こすことが多いのがJRE側である。こいつはJava Appletをブラウザーで動作させるためのJava Plug-Inが入っているので、セキュリティホールが発見された場合、ここ経由で攻撃を食らう可能性が在る。Java Appletは他のプラグインに比較しても高機能であるため、これがデフォルトインストールでONになっているというのもどうよ、と思わなくもない (7u10辺りからOFFにする機能が追加されたが、それ以前だと標準でOFFにする機能すらなかった)。

JDK側は主に開発時およびサーバー側で使われていることが多い。仕様上、Java EE仕様サーバー(WebLogic, WebSphere, GlassFish, JBoss, Interstage, Tomcat等々、順不同)にはJREではなくJDKが必要(各種自動生成のためのコンパイル動作が必要であるため)なのだ。JDKはプラグインを持たないため直接の被害を受けにくいのであるが、当然ながら各種侵入攻撃を食らうような穴がたまに見つかることが多く、定期的な更新は必須である。

で、OracleはJavaのセキュリティホールが見つかるたびに定期的に修正版を出しているのであるが、遂にJava 6は2013年2月(今年2月)にEOL、つまりサポート切れである。恐らく最後に1回更新版が出てお仕舞い、になるだろうけど、とにかく更新されなくなる。つまり只で使いつづけたい場合、7に乗り換えないと行けないのだ。使いつづけたい場合はお金を払って延長サポートを受けることはできるのだが、たぶん高額である。(WebLogic等商用サーバーを買った場合は自動的に更新権が付いてくることが多いので要チェック)

当然ながら新規開発系はもとより、現在6以前で動いているシステムは7に変える必要がある。これは大変なことであるが、それは他の技術でも同じ話なので省略。

問題は新規開発系である。初学者が学習するJavaの本が7対応のものであればいいのだが、6以前のものを馬鹿正直に見て学ぶ場合、JDKがふるいものを自分のマシンにインストールして学習開始、することが多いのではないか。書籍側が「最新版入れてね」とか「そのうちサポート切れるからその場合は新しいのを入れてね」と気を利かせて書いてくれている場合はいいのだが、そんな気の利いたものはほとんど見たことが無い。クレームを恐れて「このバージョンで動作確認したから同じバージョンを当然ながらインストールしてね、察してね」みたいな感じで押しつけてはないだろうか。(全部を見た訳ではないのでアレではあるのだが)

この場合、納品物の完成度を担保するバージョンと、学習者が利用すべきバージョンは明らかに別物である。

Javaの場合、メジャーバージョン内の互換性は基本的に担保されている(そうじゃない場合(JDK 6u10)もたまにあるが)ので、そのバージョンの最新リビジョン「のみ」を原則として使うべきである。これはJDKもJREも同じ。特にJREなんぞは複数バージョン入れていてもいいことは基本的にない。常に最新版を使うべきである。

これが企業内システムの場合、特定バージョンで「寝かせる」事もこれまで恒常的に行われてきたのだが、JREの場合ブラウザーのプラグインにも結びついている関係上、当たり前の話だが更新しない訳にはいかないのである(OFFにできる機能が付いたのはついこないだ)。

これまでこのような当たり前の事実に目をつぶり、危険性を放置してきた文化が日本の暗黙文脈として容認されてきたんじゃないかと思う節が各所に見受けられたのだが、もっと厳密にバージョン管理したほうがいいんじゃないか、と思う次第である。

まあ、私はもはやコンサルでも何でもないので、単なるいち技術者からの提案である。とにかくJavaは常に最新版で使うべし。

※Java商用延長サポートを前提とした特殊な場合を除き、今からJDK 1.6(6), 1.5, 1.4, 1.3, 1.2, 1.1, 1.0の開発を始めるなんてのは以ての外である。JDK 7を使いましょう。

2013年のIT予測(俺版)

明けましてお目出度うございます。今年も宜しくお願い申し上げます。

さて、2年前に「2011年のIT予測(俺版)」という多少ふざけた予測を書いたのだが、槪ね當たらずとも遠からずという感じであったため、2年ぶりではあるが書いてみることにする。

1. SI企業は大手に収斂されていく

もはやSI企業とは遠く離れた仕事をしている關係上もはやどうでもいい話なので子細は省くとして、SI企業という、新しいようで日本のガラパゴス世界の象徴とも言へる「SI」という摩訶不思議な業態は恐らくこのあと大手SI会社(いわゆるIBMとかNTTとかその周りの巨大会社)に収斂していくことであらう、と思っている。

所謂「顧客企業」つまりSI会社のビジネス相手である、システムを発注・運用する會社は、IT系企業を中心に自社内開発を進める國際標準型にシフトしてきており、何でもかんでも丸投げして自らが樂をするという形態は、コスト的にも納期的にも品質的にもスピード經營の足枷にしからないといふことが赤裸々になってきている。

これが他業種まで浸透してくると當然ながらSIに發注する顧客企業は段々減ってくる譯であり、今年はそのシフトが明確に出てくるんじゃないかな、と個人的に思っていたりする。とはいえ、世の中のシフトはそんなに高速に行われるものでもないため、これは中長期的な話かなと。今年にこの大きな潮流の何が象徴的に出るかどうかは、そこまでは殘念ながら想像ができない。

來年は政権交代により公共投資が進むことが間違いなく予想され、結局は某日の丸企業が請け負った仕事に全力でぶら下がる系の仕事がまたもや幅を效かせる暗黒時代が再来であらう。さうやって大手に収斂しハードウェアを含めた美味しい仕事を求めて彷徨う企業が増大する。

2. クラウドシフトが一段落するが、中小企業への導入が一層進む

これもSIネタにかなり近い話ではあるのだが、ネタ不足に惱むSI企業の期待の星、しかし長期的にはハードウェア系契約減になり自らの首を絞めることに直結する「クラウド」が、amazon EC2やらGoogleやらの今年末の頻繁な大規模障害で「やっぱダメだね」という、ある意味「最初から分かってんじゃん」という殘念な結末で終わろうとしている。

一方、データセンターやらハードウェアやらを自前で調達するためのコストを負担できない企業への営業はこの後さらに一層加速するだろうなとも感じる次第である。大概の中小だとこのレベルでの技術評価ができない(出来る人は少數いるけど決斷を下す側が無知)というパターンが多いので、恐らく半分騙されるやうな形での導入は進むことであろう。

まあ、この場合でも最初から分かっていることではあるのだが、数年後に「やっぱりダメだね」という當たり前の結論で終はることは間違いなからう。但し、田舎の企業だと数時間とか数日のシステム断が即時企業の破綻に繋がらないケースもある。さういふニッチ層には受けるのかなぁと。勿論、金額規模的にショボいだらうなといふのは内緒だ。SI企業も當然儲からん世界だらう。訴訟だけは増えそう。

3. 企業システム開発でJava EEが息を吹き返す

現状かなりMicrosoft .NET Frameworkに環境面で差を付けられていると思はれるJava EEであるのだが、開発環境面ではNetBeans 7.3が、標準としてはJava EE 7が來年登場する予定であり、これで漸く.NETと肩を並べることができるのだろうか、と思っている。

.NETはMS製OSだけでしか結局動かないというもの凄い制約があるものの、開発環境が優れているということで生産性はピカイチである。戦略的にMSに囲い込まれるといふのもアリと云へばアリなのだが、最近Windows 8でコケて殘念な感じでもあり、企業システムも変革の波がもうすぐ、なのだらうかとも感じる次第である。

一方Java EEは2000年台での導入実績が大きい、OSの選択に比較的幅がある、という面が優れている。ただ一方、2005年以降の導入分についてはSeasar2といふガラパゴスフレームワーク、またはSpring Frameworkといふコード量と複雑度が上がる割に良いことが無いものの無節操な導入が幅を效かせた暗黒時代でもあり、ここからの脱却が求められている箇所でもある。

Java EE 7は開発容易性を上げた良い標準仕様にまとまろうとしており、上手くいけば來年4月にも登場しさうな感じである。但し、これを使いこなす上では(1) IDEをEclipseからNetBeans等対Visual Studoレベルの環境を揃えているIDEにシフトすること、(2) SeasarやSpringやHibernate、Strutsなどの旧世代レガシーフレームワークとの決別、(3) 技術者の世代交代が必要かなとも思う次第であり、ここのシフトが比較的進んでいる日本以外の世界水準へ竝ぶか、逆に引きはがされるかはこの辺りに懸かっているであらうと感じる次第である。

ちなみに私自身は日本の技術者には世界水準にまず上がり、その上で其の先を進んで欲しいと思ふのだが、仮に没落したところで何にも困らないため、やる氣のない連中は出来る連中の足を引っ張らないやうに速やかに轉職して欲しいと考へている次第である。

(4) パーソナル市場での「ガラケー」「PC」の事實上の滅亡が起こるか

家で使うInternet接続端末の利用時間として考へれば、PCやらMacやらを使う時間と云ふのは數限りなく減ってきている譯であり、大半はiPhoneやiPadを使う時間で大半を占めるやうになった。かくいふ私も「Windows PC」を家から追放して早數年であり、とりあえずMacBook Airを使へれば全く困らない生活にも慣れた。

一方、世の中的にもWindows 8が時間切れリリース感満載の殘念な結果に終わっており、MSへの忠誠度が高い一部のマニア以外への導入は遅々として進まないであらう事は目に見えている。Windows利用の原動力でもあったPCゲームの国内市場の崩壊と、Officeソフト利用を前提とした「会社の仕事を家でやる」系の投資も冷めている(增税もされるしね!!)感じもあり、8プリインストールタッチパネルPCのラインナップの寂しさとも相まって、ここの未来は相當殘念なのだらうな、とも感じる次第である。

MSは當然この流れも承知の上で、Windows Phoneやタブレットを揃えてきているため、Appleとの訴訟戦争で劣勢であり技術力に乏しいAndroid勢の空中分解とMSへのシフトが起こるかもしれない。但し、それは來年か再来年か全く分からない。來年は無いかな。再来年くらい。

また「ガラケー」すなわちガラパゴスケータイも3キャリアのショップを訪問すると絶滅危惧種であり、来年辺り本氣で滅亡が進みさうな勢いでもある。imodeが普及した2000年當時からこの間抜けな仕様を決めた連中は本氣で追放されるべきと思って信じていたが、それから14年くらいかかって漸く駆逐されそうで安堵する限りである。當時のハードウェアスペックの制限がしやうがないといふ意見もあらうが、それを差し引いたとしても先進性や互換性といふ意識の恐ろしいまでの低さは国内キャリアのレベルの低さも現しているとも思へる。今後は黙って土管屋に徹して欲しいと願ふばかりである。

(5) 国内IT技術者のレベルは一層落ちる

一部の意気盛んなやり手を除き、大半の凡百の連中は、狭い世界での特定の決まり事をさも「世界全体がさうであらう」と謂はんばかりの感じである。これはここ十数年全然変はっていない。

但し違うのは書籍の數である。IT系の書籍、特に開発系のものの出版數は恐ろしい勢いで減少している。これは國内限定での現象であることを恐らく大半の連中は知らないのではないか。例へば翻訳物を含めJavaや.NETの最新仕様の書籍が去年一体何冊出たか。ほとんど無いのだ。殘念ながら。もはや日本でイケてる技術者を目指すならば、英語書籍を読まなければならないといふ、ある種20年前のInternet黎明期に戻ってしまった感じすらする。

だからといって全員が英語を勉強しろと謂ふのもそれはそれで無理な氣がする。デキるれんちゅうと謂ふのは放っておいても勝手にできるやうになるのでいいとしても、大半の普通の連中はそんなスーパーな事が出來るわけもなく、限られた古い情報、歪んだ先輩の指導、こんな程度でいいよね、というガラパゴスな安心感とも相まって、一層レベルが落ちていく事はもはや避けようも無いだらうか、と諦観する次第である。

最近外國籍の若手を指導し一緒に仕事する機會が多いのだが、天と地ほどの差を感じる。逆に言えば、このスーパーなハンディキャップを乗り越えてくる一部の若手日本人技術者は壮絶に凄まじいレベルであることは間違いないと思ふ。普通の連中はさておいて、一部のデキる連中がぐんぐん伸びて牽引していって欲しいと願ふ次第である。

さて、他にも書きたいことはあると思ふが、止まらなくなってきたので一旦この程度で終わらせておこう。次は寫眞系を書こうかな。