OperaのFile I/Oを試す

File I/Oとは?

JavaScriptからローカルファイルにアクセスするためのインターフェース。そのFile I/Oが実装されたテストバージョンが遂にリリースされてプチ祭り状態。

んが、変態さん達が熱心なユーザーがこぞって試すとおもっていたのに、そーいった話が全然出てこなかったので、せっかくだからOperaUserJavaScriptManagerを移植できるかどうかを仕様書を斜め読みしながら試みた。

ローカルファイルへのアクセス

セキュリティがガチガチ・・・というか非常に安全に作られている。

まず、任意のディレクトリやファイルにパス決め打ちでアクセスすることができない。アクセスするには、必ずフォルダ選択ダイアログかファイル選択ダイアログを用いた場合のみアクセスできるようになる。

また、そのダイアログ表示も100個ぐらい並べられると立派なブラクラなので、mouseup、mousedown、click等のイベント内でしか動作しない。

つまり、ユーザーの意思の上でしかアクセスすることができないようになっている。

特殊な領域

それでは不便なので、applicationとstorageという領域が確保されている。

applicationはいわゆるWidgetの中身、config.xmlやらindex.htmlやらが置いてあるフォルダのこと。ここにはRead-onlyでアクセスできる。

storageはWidget専用の領域で、ここでは自由にファイルの読み書きが可能になっている。

両方に共通していることとして、ファイルやフォルダの検索を行えないことが挙げられる。つまり、storageに好きなだけファイルを放り込んでもいいけど、ファイル一覧は自分で管理しなければならない。

まあ、妙なスクリプトを実行させられてstorage内のファイルを荒らされないように・・・ということなのだろう。

User JavaScript Manager on Opera

んで、軽く移植して感じたところ、Win版との違いは以下のとおり。

  • OperaからWidgetへは依然アクセスできないので、右クリックからインストールができない。
  • storage内を検索できないので、インストールには、Widgetにインストーラーを実装させる必要がある。
  • 毎回フォルダ選択ダイアログを出すわけには行かないのでstorageにUserJavaScriptを置くことになる。
  • テキストエディタで開けない。

んー・・・微妙。唯一のメリットが「Operaと一緒に起動してくれる」というのがにんともかんとも。

ただ、作る側としてはWindowsより圧倒的にGUIを弄りやすいという点が嬉しい。

実際に作成したWidget

Opera announces specification for File I/O access in widgetsにあるインストーラーを使用したOperaでのみ使用可能。

userjsmanager.wgt

実際に動くとこなかじ。Widgetを起動したら、左下の「load scripts」から現在UserJavaScriptを入れているフォルダを選択する。

これでstorageに全てコピーされるので、後はブラウザの設定でUserJavaScriptのフォルダをstorageに変えるだけ。storageのフォルダは以下に存在する。

C:\Documents and Settings\[Windows ユーザー名]\Application Data\Opera\Opera 9.5\profile\widgets\[数字の羅列]\storage

Widgetからは、meta情報の表示、有効/無効の切り替え、アップデートのチェックのみが可能。機能が中途半端なのは、「これ、実際に使えるようになるのは数ヶ月先なんだよな・・・」という現実に気づいたから。

仕様も確定したわけじゃないので変更が入るだろうし、とりあえず触りだけ、ということで。

なお、上記リンクにもあるとおり、「実験的なバージョンだから何が起きても知らねーからな!」ということなので、そこらへんの覚悟ができている方のみインストールしていただきたい。