エンジニア長期インターン GREE Studio 2010 7日目

グリーインターン生の福留です。インターンシップも残りわずかな第7回サブプログラムの内容はJavaScriptです。今回私たちはメインプログラムであるWebアプリケーション作成をPHPで行っていますが、PHPと並んWebアプリケーション作成に用いられる言語として有名ではないでしょうか。本日の講義内容のメインはJavaScriptの言語的な部分ではなく、Webアプリケーションの歴史といったよりマクロな視点のものが中心で、私たちがまだコンピュータに触れる機会のなかった頃からの変遷を知ることができ、とても有意義な講義となりました。

  • 本日の講義内容は以下のようになっています
  1. 熊谷健太郎さんによるJavaScript講座

ウェブの歴史とJavaScript

今から20年前から現在までのウェブの歴史をお話して下さいました。ここでは、その中から特に重要な変革のあった年について抜粋させていただこうと思います。

  • 1995年

人によっては、この年号だけで分かってしまうかもしれませんが、あのWindows95が発売された年です。Windows95の大きな特徴にはTCP/IPによるインターネット接続環境がデフォルトで整っていたことでした。今までは、自分たちで全ての環境を構築する必要があったそうで、とても画期的なことであったことが容易に想像できます。
そのため、1960年に始まったインターネット技術が一般利用向けとして浸透していくことになります。
さらに、この年にJavaScriptも誕生しました(このJavaScriptについているJavaというのは、オブジェクト指向言語として有名なJavaと直接の関係があるわけではなく、Javaというキーワードが当時バズワードのようになっていたため付けられたらしいです。今でいえば、クラウドが近いかもとは他インターン生の言葉です)。

  • 1998年

Netscape Communicator 4.0が公開されました。このブラウザは今までと異なりオープンソースになり、一般のプログラマによる開発が容易になりました。
特に、XPCOMと呼ばれるRPC(Remote Procedure Call)の仕組みやXUL(HTML+JavaScript)が実装され、XULなどは今でもFirefoxブラウザのエクステンション作成に利用されています。

  • 1999年~

ネットバブルの時代に突入します。ネットの普及に伴い、たくさんのサービスが誕生しては消えて行きました。消えていったサービスの中には、今では成功を収めているようなサービスと同様なアイディアを持つサービスも存在していたようです。
また、現在のキーテクノロジーである沢山の技術が生まれました。例としてBookmarklet、XMLHttpRequest、Gecko(Firefoxの前身)、Safariなどがあります。

  • 2003年~

ソーシャルサービスが多く開発されました。
del.icio.usが2003年、Flickrが2004年、Google Mapsが2005年に公開されました。特に、Google Mapsは、当時利用していた人は、とても驚いたと思います。私も驚きました。あの画面内をなめらかに動く仕組みを実現していたのが、FlashではなくJavaScriptであるという事実に驚愕した方も多いのではないでしょうか。

  • 2007年~

iPhoneやAndroidといった、より多くの機能を持ったモバイルフォンが発売されたり、TwitterやTumblrのようなソーシャルアプリケーションが公開されたりと、現在誰もが知っているようなものが多く発売、公開されました。
また、ブラウザの多機能化を目指したGoogle Chrome、安全にバイナリをブラウザから利用できることを目的としたGoogle NaCl(Native Client)が公開されました。

新しいウェブ拡張

ブラウザごとの独自拡張が進むと、ブラウザ依存な機能が多数誕生することになります。利用者からみると、使えない機能があるのは不満になります。そのため、独自拡張をおこなってきた流れが変化し、拡張を標準化してブラウザ依存をなくす動きがみられていて、特にGoogleなどの企業が積極的な動きを見せています。

  • HTML5

HTML5は、次世代HTML標準と呼ばれています。
大きな特徴としては、新しく定義されたタグと新しいAPI(Application Programming Interface)です。
新しく定義されたタグとしては、セマンティック(<table>のように構造を表すのではなく意味を表すもの)なタグが追加されました(例:<section>, <header>)。
新しいAPIとしては、メディア再生のサポート機能などがあります。

  • CSS3

アニメーションのような、従来ではJavaScriptやFlashを用いないと実現できないような機能が利用できます。

どんどん進化し、多機能になっていくウェブですが、この流れの速さがもたらすものはプラスなものばかりではありません。現実の問題として、その機能が実装されていなければ利用はできません。そして、「古い」ブラウザを利用していると「新しい」機能に対応していないことが多いです。
では、「古い」ブラウザをどれだけの人が使っているでしょうか。その答えは「たくさん」です。数年前であれば、Internet Explorer 6(以下IE6)を利用している人が最も多いという結果がインターネット白書に掲載されていました。いくら新しい仕様ができても、利用する側がそれに対応できていないという状況は、新機能を利用して新しいサービスを作ろうとしているプログラマにとっても悩みの種ではないでしょうか(問題がブラウザにあっても、利用する側からだとサービスに問題があるように見えてしまう)。
実際、IE9はHTML5のサポートを表明していますが、IE9はWindows XP以下のOSで利用できないという制約があったりと、なかなか難しいですね。

携帯向けウェブアプリ開発の現実

結局、ブラウザで最も使われているのはIE7やIE8なので、IE7、IE8で使える機能でないと、いくら新しくても普及が難しいようです。では、IEではない独自ブラウザを標準にもっている携帯端末(iPhoneやAndroid)なら、そのようなブラウザ依存を気にしないで大丈夫でしょうか。
一見して、大丈夫な気もするかもしれませんが、現実は甘くはないようで・・・。以下のような問題点があるようです。

  • 携帯向けブラウザでできないこと

Androidのブラウザでは、gifのアニメーションがきれいに再生できない。paceholderが正しく機能しない、画面タッチの通知タイミングが一般の感覚と異なる、といったような問題があるそうです。
また、他のブラウザでも、type=emailでパスワードを覚えてくれなかったり、WebSocketやWorker threadが動作しなかったりと利用できない機能が結構あるそうです。

まとめ

本日の講義は以上になります。ウェブやJavaScriptのトリビアを交えた歴史や、実際のアプリケーション開発における難しさを知ることができ、とても面白い講義でした。

Author: greestudio2010