わたしがAndroidを選んだ理由(その1)
■自己紹介から
(株)リーディング・エッジ社にて、Androidの研究開発を行っている山本昭弘です。
わたしは1999年末ぐらいから今日までJavaのシステム開発を行っています。それ以前は、C言語やアセンブラでの開発を行っていました。1999年末のJavaのバージョンは1.1.6で、日本語が初めて扱えるようになったころでした。それからJavaのバージョンは1.2, 1.3, 1.4……と上がり、現在の1.6になるまでずっとJavaの仕事をやってました。
JavaでWebブラウザの画面を作ることになると、当初はサーブレットしか存在しなかったのですが、それからJSP、JSFと進化してきました。EJBも同じくで、EJB1.1、EJB2、EJB3と進化しました。出たばかりのSWINGはバグばかりで、かつ、遅くて当初の評判は散々なものでした。現在では当初のようなバグはなくなり、速度も申し分ないところまできました。それから、DOM、SAXといったXML技術や、Webサービスの開発と、さまざまなJavaプロジェクトを経験してきました。
■最近の現場はこんな感じ
わたしは決して例外ではありません。同じような経験をしている人もたくさんいますし、出会ってきました。近年思うのが、昔からずっとJavaをやっていたJavaエンジニアと、最近始めたばかりのJavaエンジニアのスキル幅がありすぎる現状です。それは確かに、10年近くJavaのシステム開発を行ってきた人間と、去年からJavaを始めた人間が同じだったら「10年やってたのはなんだったんだ……」となりますから、当たり前といえば当たり前です。とはいえ、プロジェクトのスケジュールは、ベテランも去年始めたばかりの人間も、同じスケジュールで組まれることも少なくはありません。
■Javaプロジェクトの対応
では、どうするか。もう本当にガッチガチにフレームワーク化してしまうプロジェクトが多いです。そうすれば、プログラムは仕様書から書き写すだけになるので、ベテランも去年始めたばかりの人間も同じスケジュールがこなせるようになります。でも、仕事ではなく作業になるため、極端につまらなくなります。おまけに、スキルは全然上がりません。さらに、現在の不景気から単金も安くなっているので、モチベーションはどんどん低下していきます。
話は変わるのですが、Javaのシステム開発で一番多いのは、Webアプリの開発だと思います。クライアントのWebブラウザ画面はJSF+AJAXで作り、サーバ側はEJBで作り、DAOはJPAで作るのが、今の主流なんじゃないかと思っています。
ですが、先日営業さんとお話をした際に「山本さんってPHPできる?」「やったことないです。わたしはJavaばっかりなので」「それじゃあ、Webアプリとかできないよね」と言われた時、ええー!? とビックリしました。その後、JavaでWebアプリを作れますよ、という説明をしましたが……営業さんだから仕方がないか……と、あまり深く考えませんでした。
ところが、別の日の駆け出しのJavaエンジニアとの会話で、「クライアント側はWebブラウザで作るよ」とわたしが話したら「ということは、PHPで作るのですか?」と言われて、ものすごくビックリしました。そりゃまぁ、駆け出しとはいえ、Javaエンジニアといっている人がそんなことをいうなんて!!
■Javaの問題点
客観的に考えてみると、問題は以下の2点ではないかと思います。
1.Javaは難しい
わたしのように、ずっとJavaのシステム開発をしていれば、技術が少しずつ増えていくだけなので、それほど新しい技術を学ぶのには苦労をしません。ですが、新しく入る人にとっては「こんなにたくさん覚えることがあるのか!」と思うのではないでしょうか。それと、先にも書きましたが、近年のプロジェクトはガッチガチのフレームワーク化をするところが多くて、スキルが上がらないJavaエンジニアも多いのが現状です。
2.WebアプリはPHPが圧倒的に多い
わたしはPHPの経験はないのですが、JavaとPHPを比べる記事を見ると、「PHPは簡単」というのをよく見ます。個人のWebサイトですと、圧倒的にPHPが多いです。Javaの技術的なことをたくさん書いてあるサイトであっても、WebサイトはほとんどがPHPです。
これは、レンタルサーバがJavaに対応していないのが圧倒的に多いためだと思われます。個人でJavaのWebサーバをやるのはかなり困難です。大手サイトでJavaを採用しているところもあるのですが、セキュリティから.JSPや.JSFと言った拡張子が見えなく設計されているため、ネットサーフィンをして調べるのはなかなか難しいです。そのため、普通の人から見れば「JavaのWebサイトなんてほとんどないじゃん」となるからではないでしょうか。
Javaのシステム開発はなくなるとは思いません。ですが、現在の世界的な不景気から、システム開発のパイは小さくなっています。景気が悪くなるとありがちな話ですが、予算だけを見るようになります。「動けばいいんだ!」という極端なことをいいだすと、JavaエンジニアのパイはPHPエンジニアに奪われ、どんどん小さくなっていきます。
■Javaエンジニアはどうすればいいのか?
ここから「わたしがAndroidを選んだ理由」となるわけなのですが……前置きが長くなってしまったので、続きは次回とします。