WindowsStoreアプリがHTML/CSS/JavaScriptで作れるわけ
「なぜ、Win8アプリ開発でJavaScriptなの」という疑問点が浮かんだのは自分だけじゃないはず、と思ったので軽くですが調べてみました(違うとこあったら誰か突っ込んでください)。
そもそもHTML/CSS/JavaScriptで出来るものはWebアプリである、なぜならそれぞれの言語がWebページ作成を目的として作られたものだから。という考えを根底から覆しているのがWindows8Storeアプリです。
〇HTML/CSSでUIが作れるならXAMLじゃなくて良いじゃないか。
〇Storeアプリは全画面表示が前提。Webページ作成で慣れた人はスキルをそのまま持ってこれる。
〇HTML/CSSでUI作ったならロジック側はJavaScriptで書けば良いじゃないか。
その通りだと思います。ここに関してはこれまでのC#、.NETというVSの流れに革新性を持たせたMSさんの視点はすごいと思う。じゃあ実際どうやってそれを実現したのかという所を調べましたが私もそんなに技術詳しくないので細かい詳細は分からなかったのだけれど、簡単に言ってしまうとこういう事です↓
WindowsランタイムAPIをJavaScriptからアクセスできるようにした。
言葉だけじゃわからないと思うので画像を持ってきました。
実行環境というのはこういう感じになっています。
グリーン箇所の真ん中から下にあるのがランタイムAPIですね。
ここでやっている色々な処理にアクセスできる訳です。ランタイムの中身はこんな感じになっています。
[参考]Windows ストア アプリの API リファレンス(MS公式)
http://msdn.microsoft.com/ja-jp/library/windows/apps/br211369.aspx
ここまでは理解。
つまり、ストアアプリとしてJSで作ったアプリはネイティブ機能(WinRT)にアクセス出来ます。デスクトップアプリやWebアプリとしてブラウザベースで動くものをJSで作ってもWinRTにアクセスする事は出来ません。
ただ、ネイティブ機能にアクセスする以上、セキュリティの関係で制限事項があります。例えばローカルでアプリ内に含んだHTML群(ローカルコンテキスト)とアプリ外部からダウンロードするHTML群(Webコンテキスト)では下記のように違いがあります。
--------------------------------------------
〇ローカルコンテキスト
・WinRTの利用が可能
・コンテキストのパスは「ms-appx:///」「/」
〇Webコンテキスト
・WinRTの利用は不可
・コンテキストのパスは「ms-appx-web:///」「http://」など
--------------------------------------------
今回ここまで知ってJavaScriptで開発が出来る事も腑に落ちました。
すごいぞWindows8。