JavaScriptからモバイル開発現場の未来を妄想してみる

最近は実はモバイルサイトではなく、モバイルに絡むサービスのWeb管理ツールを開発しているんですが、遅まきながらJavaScript/Ajaxの魅力に取り付かれていました。

JavaScript楽しすぎる

デバッグがしづらいとか、クロージャー使いまくりでとっつきにくいとか、クロスブラウザめんどくさいとか、変数スコープがブロックスコープでなく関数スコープなのでやりづらい*1とかいろいろ多方面から聞こえてくるけど、Perlerの自分からしたらあの柔軟さ加減はたまりません。Rubyistも多分似たような感覚なんだろうな。


JavaScriptにハマったきっかけは、最初はせっかく管理ツール作るんだから、(今さらながら)Ajax触ってみようとしてとある本を購入したことでした。

実践 Ajax ―Web2.0アプリケーション開発への手引き

実践 Ajax ―Web2.0アプリケーション開発への手引き

冒頭で自前でGoogleMapを作ってみるところ*2から、もう目から鱗でわくわくしてきます。その後もprototype.jsscript.aculo.usDoJo Toolkitについて言及し、JSON-RPCなどについてちろっと触れてくれるので、概要を掴むにはうってつけ。


さらにもう1冊購入。

Prototype & script.aculo.us ―JavaScriptライブラリによるAjaxアプリケーション開発

Prototype & script.aculo.us ―JavaScriptライブラリによるAjaxアプリケーション開発

prototype.js-1.6(!!)とscript.aculo.usについてのバイブル的な本。prototype.jsの概要自体は前述の書籍でも概要は分かるんですが、特に冒頭あたりのprototype.jsチュートリアル的な章は本当目から鱗です。JavaScriptでこういうことがしたかったんだよ!!というのを思い知らされた。


もう少し早くから触れる機会があるとよかったな。

モバイル開発現場のスキル

で、表題の件なんだが何を思ったかというと・・


僕はずっとモバイル業界での開発を見てきたのですが、モバイルコンテンツではXHTMLの仕様もあるものの、未だコンパクトHTMLでコンテンツを作る人も多数います。というか、驚くことにそれしか書けない人も少なくない


コンパクトHTMLなんてHTML3.2のサブセットですよ。いつの時代だ。


翻ってXHTMLじゃどうかというと、iモードXHTMLではインラインCSSしか使えず、はっきり言って意味がない。*3


この他にもCookie使えずパラメータセッション横行してたりとか、リファラーが使えないとかweb標準からしたらお話にならない仕様。


そんな中でずっと開発やってきて、何の疑問も持たなかったエンジニアが管理ツールなんか作ったらどうなるか?


XHTMLCSSで分けることなんか知らないのは当たり前、レイアウトなんかも未だにtableでレイアウトするし、JavaScriptなんてダイアログ程度しか使えないし、それもWeb上のコンテンツからコピペ。

ましてAjaxなんて存在は知ってるけど覚えようとしない。モバイルサイト構築では必要ないからね。PCサイトなんかだと、競合が導入するとこっちも会得していかざるを得ないんだけど、そういう力学も起こらない。


もちろん環境は様々あると思いますが、僕の周りでは少なくないエンジニアがそういう感じでした。

JavaScript使い出して思ったこと


前述のようなモバイルでの制約は、そのまま参入障壁になっています。PCでバリバリ開発してるエンジニアもどこに落とし穴があるか分からないので敷居が高く感じる。*4


でも、こんな状況は早晩改善されて、オープンなプラットフォームに徐々に置き換わっていくと思っています。僕の肌感では3〜5年の間くらいかなぁ。こういうニュースもあるし、iPhoneスマートフォンの可能性を見ているとそんな兆候は徐々に強まっています。


個人的に思うのですが、iモードの仕様がこれだけクソのまま放置されているのは、DoCoMoは現プラットフォームの拡張という形ではなく、新しいプラットフォームを用意したら、旧版はまるごと捨てちゃうんじゃないかしら?と憶測しています。FOMAを出した後のmovaのように。


そうなるかとどういうことになるかというと、今のJavaScriptがフルスペックでモバイルに搭載されることも珍しくなくなるんではないかと思う。ちょちょいと調べるだけでも「Adobe がモバイル JavaScript VM コードを公開」みたいな記事がカンタンに引っかかるようになってきたし。


そうなると、一般のWebサイトでバリバリJavaScriptでリッチクライアント開発してきたエンジニアが、モバイルコンテンツ開発にどっとなだれ込んでくる。そしたら、、前述のような貧弱なスキルしかないモバイルエンジニアはひとたまりもないよね。


言い換えれば、今のモバイル開発の参入障壁なんて、特殊条件下でのスキルであり、ノウハウでしかないと思っています。今後モバイル環境のオープンプラットフォーム化がますます進んでいく中で、モバイルのエンジニアも標準Web技術を当たり前のようにみにつけていかないとダメだよね、ということです。

*1:つうかこれPHPもだよね・・でもPHPクロージャみたいなのが不便すぎるので話にならない

*2:でもここでは実はXMLHttpRequestは使っていない!script.aculo.usもそうだけど、ユーザーフレンドリーなインターフェース含めて広義のAjaxって言うんだろうね

*3:PerlならHTML::DoCoMoCSSですね。最近公開されたid:komoriya氏のHTML::MobileJpCSSにはホント脱帽です。

*4:実際にやってみると大したことないと思うんだけど