先般、MozillaのコミュニティによるTokyo WebExtensions Meetup #2が開催された。ここでは、メンバーらによる自身の拡張機能の紹介などが行われた。レポートでは、紹介程度であったが、本稿では、もう少し詳しく開発の苦労談なども含め紹介したい。
「艦これタイマーX」を試す
まずは、あまの氏による艦これタイマーXである。AMOは、以下の通りである。
ソーシャルゲーム「艦隊これくしょん ~艦これ~」の遠征などの経過時間を知らせるものだ。他にも各種の情報を提供する。ここで紹介する機能拡張以外にも多くのタイマーがある。ゲームユーザーにとっては、必須のアイテムといえるだろう。インストールは、AMOから行う。インストール後のFirefoxは、図2のようになる。
画面左にタイマーやゲーム情報が表示されるようになる。また、ツールバーには「艦」のボタンが配置され、各種メニューを選択できるようになる。ゲームユーザーならば、これらの意味ついては理解しやすいであろう。左の項目はドラッグ&ドロップで、位置変更が可能である。
XULからWebExtensionsへの移行であるが、WebRequest APIでHTTP通信をキャプチャが可能になったことがきっかけとのことだ。しかし、制約も少なくない。そこで、外部ライブラリをできるだけ活用することで、利用できるものを有効活用したとのことである。しかし、存在しないものもあった。具体的には、表の移植であった。
ここで、左のメニューと一覧の幅を調整することである。この部分に関しては、以前はxul:splitterを使うことでサイズ変更することができていたが、今回はマウスイベントをすべて自前処理したとのことである。
この機能については、他の拡張機能でも参考になる点があるだろう。コンテキストメニューは、jQuery Context Menuを使用。ツールバーに関しては、今回、断念したとのことである。そして、重要な機能がスクリーンショット撮影である。実現するには、図6のように2つの座標を知る必要がある。
実際には、
- iframeの座標を取得するcontents script
- ゲーム画面の座標を取得するcontents script
- Background scriptに定期的に座標を送信
することで、実現した。あまの氏のブログでも情報があるので参考にしてほしい。