Chrome アプリケーション

以前ちょっとしたエクステンションについて書いたことがありますが、
Google Chromeにはアプリケーションもインストールすることができます。
Google Chrome OS のために作り始めたのでしょうが、
なかなかどうして、結構使えます。

アプリケーションにはPackagedとHostedの2種類があります。
細かい違いは置いておいて、
ざっくりいうとHostedアプリケーションは外部のWebサーバにアクセスするタイプ、
Packagedアプリケーションはそれを構成するファイルをひとまとめにして
ローカルに保存して利用するタイプです。
HostedアプリケーションはあるWebサーバへのショートカットに過ぎないので、
オンライン(HTML5的にオフライン対応も可能なはず)でなければ使えません。
ただし、サーバーサイドでの処理が可能なので、
LAMPなどで作ったWebアプリケーションをChromeでシームレスに使えるようにできます。
Packagedアプリケーションは基本オフラインでも使えますが、
HTML5+CSS3+Java Script(+Java アプリケーション?)な世界でのWebアプリケーションとなります。
どちらも長短所ありということでしょう。

すでにLAMPで動くWebアプリケーションがあるなら
Hostedアプリケーションは簡単に作れます。
適当な名前の空フォルダを作って、
その中に2つのファイル”manifest.json”と”icon.png”(他の名前でもよい)を作るだけです。
“icon.png”は128×128ピクセルのpng形式の画像でアイコンとして表示されます。
“manifest.json”は以下のような内容になります。
なお日本語を入れるときはエンコードをutf-8にしてください。

{
	"manifest_version": 2,
	"name": "<アプリケーションの名前>",
	"version": "<バージョン番号>",
	"description": "<アプリケーションの説明>",
	"app": {
		"urls": [
			"<アプリケーションがアクセスする基底URL("*"がワイルドカード)>"
		],
		"launch": {
			"web_url": "<アプリケーションのホームURL>"
		}
	},
	"icons": {
		"128": "icon.png"
	},
	"permissions": [
		"background"
	]
}

できたアプリケーションをChromeに登録する方法は以下のとおりです。
ChromeでURL”chrome://extensions”を開いて
[ディベロッパーモード]チェックボックスをチェックし、
[パッケージ化されていない拡張機能を読み込む]をクリックして
先に作ったフォルダを指定するだけです。
Chromeのデフォルトの起動ページ(“chrome://newtab”)から
[アプリケーション]をクリックすればインストールしたアプリケーションの
アイコンが表示されているのでそれをクリックして起動できます。

Packagedアプリケーションも同様に作成できます。
Hostedアプリケーションと同様で、
適当なフォルダに”manifest.json”と”icon.png”を作り、
さらに”icon16.png”(他の名前でもよい)を作成し、
加えてHTMLとJava scriptで動作するWebアプリケーションを構成するファイルも置き、
Chromeにインストールするだけです。
“icon16.png”は16×16ピクセルのpng形式の画像で小さいアイコンとして使用されます。
“manifest.json”の内容は少し変わり以下のようになります。

{
	"manifest_version": 2,
	"name": "<アプリケーションの名前>",
	"version": "<バージョン番号>",
	"description": "<アプリケーションの説明>",
	"app": {
		"launch": {
			"local_path": "<アプリケーションのトップページのファイル名>"
		}
	},
	"icons": {
		"16": "icon16.png",
		"128": "icon.png"
	},
	"permissions": [
		"<アプリケーションがアクセスするURL("*"をワイルドカードに使用)>",
		"background"
	]
}

それぞれのアプリケーションのChrome Web Storeへの公開方法は
エクステンションと変わらないので、
そちらを参考にしてください。

最後にもうひとつ。
マニフェストファイルで manifest_version=2 としているのですが、
まもなくversion1は使えなくなります。
詳しいことはこちらを参照ください。
1から2にバージョンアップしたときに私がはまった点はセキュリティ関連で2つあり、
ひとつはHTMLファイルに埋め込んでいたスクリプトを別ファイル(例えば”1.js”)に切り出して、
HTMLファイルには

<script type="text/javascript" src="1.js"></script>

のように記述しなければならなくなったことで、
もうひとつは

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

のように外部に存在するライブラリが利用できないので、ファイルを内部に取り込んで

<script type="text/javascript" src="jquery.min.js"></script>

としなければならなくなったところです。
まあセキュリティはよりゆるい設定にすることもできるようですが、
勧告には従っておいたほうが無難でしょう。