利用者:NA sounds/live installer
表示
LiveInstallerは、wikipedia tool installerを応用した、クッキーと定義データによる動的なユーザスクリプトインストーラです。
ユーザスクリプトは、利用者が自由に記述でき、Wikipediaのページを開くたびに実行されるJavascriptを指すわけですが、
- MediaWikiの機能自体
- 利用者自身が記述したJavascriptのコード
- Wikipedia向けに書かれたJavascriptのプログラム
これらのすべてがユーザスクリプトと呼ばれるため、ここでは3のみをツールと呼んでいます。
特徴
[編集]- ツールの使用/不使用を、チェックボックスだけで切り替えられる
- ツールが設定を持つ場合、チェックボックス、テキストボックス、ラジオボタンなどで簡単に設定ができる
- クッキーとして設定情報を保持するのでページの書き換えが必要なく、また高速に設定の変更が可能
- 定義データによって導入できるツールや設定を制限できるので、比較的安全を確保しやすい
- monobook.jsなどの仕組みも今まで通り使用できる。
開発者向けの特徴
[編集]- ツールの設定保持機構として利用できる
- 定義データによっていくつかの補助的な機能が利用できる
- 読み込まれるべきページを限定できる。指定したページ以外では読み込み自体が行われない
- 他のスクリプト・CSSへの依存関係を管理できる。ライブラリの読み込みの重複などを気にしなくても良くなる
- 多言語に対応するためのクラスや、階層化されたクッキーによるデータ保存クラスが利用できる
- 導入してもらうのが簡単になる
Wikipedia本体に取り込まれた場合の特徴
[編集]- 非ログインユーザでもツールを利用できる
- ツールの取り込みや初期設定についての問題が大幅に減る
取扱説明
[編集]LiveInstallerは複数のファイルから構成されていますが、installer_scripts.js一つを呼び出せば使用できます。monobook.js等に、以下の行を入れて下さい。もちろんwikipedia tool installerも使えます。
document.write('<script type="text/javascript" src="/w/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:NA_sounds/live_installer/installer_scripts.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
LiveInstallerが起動されると(monobookスキンでは)左にある「ツールボックス」の中にLive Installerというリンクが追加されます。LiveInstallerが入っていないときに見てもダミーのデータが表示されるだけですが、有効になった状態でこのページにアクセスすると設定画面が表示されます。
各ツールに簡単な説明が付いていますが、ツールの名前がリンクになっているので使い方や注意あるいはスクリプトそのものを良く読んでから有効にして下さい。
一番下のInstallボタンを押すとクッキーが作られブラウザが設定を記憶します。これで次にページを開いたときからツールが起動するようになります。念のためですが、Installボタンを押す前にブラウザからのクッキーの除去の方法を把握しておいてください。 また、Clearボタンを押すと設定が破棄されます。
動作と解説
[編集]- 設定用クッキーを探す。見つからなければ終了
- ライブラリをロード
- ツールの定義データを読み込み
- クッキーからツールの設定を読み込み
- 起動用コードを定義データから作成して実行
- (各ツールが起動)
- 設定用クッキー
- live_install0などのキーでデータを保存しています。liCookieBoxオブジェクトで読み書きします。ツリー構造の辞書データで、ディレクトリライクな指定でデータを取り出せます。wgWPToolsオブジェクトから間接的に使います。
- ライブラリ
- 今はna_lib.jsも読み込んでいますがlive_installer_lib.jsに統合するつもりです。CookieBox, MLString, TranslateDB, WPTools, Config_*など。
- 定義データ
- ツール毎に、読み込むべきページのアドレスや、ツールの説明、持っている設定、起動時に実行するコードなどをまとめたもの。ファイルとしてはwptools.jsです。wgWPToolsという一つのオブジェクトにまとめられています。
- wgWPTools
- 定義データの実体。内部にConfigの派生クラスからなるツリーを持っています。CookieBoxの読み込みと書き込み、設定値の取得と再設定、定義と設定に基づいた起動用コード出力などを行えます。
- 起動用コード
- もともとmonobook.js用のコードを自動生成する仕組みを応用しています。ページを限定したスクリプトファイル読み込み、設定のグローバル変数の定義or設定オブジェクトの生成、OnloadHookへの登録などが行われます。live_installer.jsで実行されています。
FAQ
[編集]- リロードすると遅い
- 仕様です。有効にしているツールの他、LiveInstallerのファイルも読み直そうとするのでリロードが重たくなります。ただ、Wikipediaの通常ページは有効期限(max-age)が0に設定されており、同じページにもう一度アクセスした時に(必要があれば)再読み込みを行うようになっています。つまりブラウザからのリロードは通常必要ないはずです。
- LiveInstaller自体が重い
- 確かに処理が増えます。が、当然使わないと言う選択もあります。設定用のCookieが見つからなければ殆どの部分は読み込まれないので、クッキーさえ消してしまえば今までと殆ど変わりません。また、他のツールがLiveInstallerの機能を使ってくれるようになればトータルのコストは改善するという
皮算用目算はあります。
セキュリティ
[編集]- 異常なクッキーを使った攻撃には注意しているつもりですが、いくつかの状況でツールの使用/不使用・ツールの設定などを強制的に変更されるかも知れません。したがってユーザ定義関数など、クッキーに保存されたコードが直に走るツールは定義データに導入されていません。
- クッキーで設定を保存しているのでログアウトしても設定が解除されません。共用のPCからアクセスする場合などに問題があるかもしれません。
- wikipedia.org以下のサイトから、クッキーの書き込みが行われる可能性があります。これらのサイトは比較的安全と考えられますが。