スクリプトはローカルに置かれない

触りだした当初、スクリプト制作の参考にコードが読みたいと思い

ubiquityのフォルダの中から、標準装備してあるスクリプトのコードを探していました。

無事発見できたのですが、(uibiquity@labs.mozilla.com\standard-feeds\)

コードを開き、ためしにコードを変えて挙動を確認しようとしたところ、動作に変化がありません。

あれこれ理由を調べた結果、次のようなことがわかりました。

By the way, the reason we call it "subscribing" to a command, rather than "installing" a command, is that if the javascript file changes -- if the site owner adds new commands, removes old commands, or updates existing commands -- all users subscribed to that URL will automatically get the updates.
Labs/Ubiquity/Ubiquity 0.1 Author Tutorial - MozillaWiki


これは、UbiquityのAuthorTutorialに書かれているもので、

Ubiquityは「スクリプトを使うたびに、URLからコードを参照する(購読する)方式をとることで

常に最新のコードを得られるようにする」方針のようです。

ためしに、先ほどのスクリプトが置かれていたフォルダをゴミ箱に入れても、挙動は変化しません。

(ローカルに置いてある理由は、開発者が参考にするためですかね。まぎらわしいやん!)

しかし一方で、セキュリティ上の問題として「購読途中に、スクリプトを危険なものにすり替えられる」危険性が伴います。

Ubiquityスクリプトには(GreaseMonkeyスクリプトと同様で)Chrome権限が与えられますので、これには注意が必要です。

「購読しているURLをどこで保持しているか」

これに関しても調べました。

コードを漁った結果、「AnotationService」というFirefoxの機能を利用して、URL情報を保持しているようです。

これは、拡張機能の動作を支援するため必要な情報を保持する機能で、Firefoxが保持するcookieのようなイメージの機能です。
https://developer.mozilla.org/ja/Using_the_Places_annotation_service

ちなみに、AnnotationServiceを利用していることは、次のようにして確認することが出来ます。

  • grep "Annotation" ubiquityフォルダ/chrome/content で、linkrel_codesource.js内のヒットが得られる。
  • 続けて、同様に”LinkRelCodeSource”(linkrel_codesource.jsが定義する関数の名称)を検索して、confirm-add-command.js内のonSubmit関数でヒットが得られる。
  • さらに、”onSubmit”で検索して、confirm-add-command.html内のヒットが得られる

(これは購読の許可を求めるhtmlページで、Web上でUbiquityスクリプトを購読する際に、手続きとして必ず表示されるものです。)

補足として

将来的には、Ubiquity用サイトが立ち上げられる予定のようです。

In the future, we'll be creating something called a "trust network" that Ubiquity users can use to share knowledge about which commands are trustworthy.
Labs/Ubiquity/Ubiquity 0.1 Author Tutorial - MozillaWiki

セキュリティを考慮する意向を示しています。

また、現在の状況でスクリプトを探すには、検索サイトに頼るしか御座いませんが、

近い将来このサイトに世界中からスクリプトが集まり、簡単に豊富なコマンドをUbiquityに追加出来るようになるでしょう。