» アドオン開発
Firefox 18 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 18 の抄訳です]
Firefox 18 が 1 月の第 2 週 [ 日本時間深夜] にリリースとなります。Firefox 18 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 18 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
app://
プロトコルと XMLHttpRequest の仕様が変更されました。XHR でローカルリソースを読み込んでいてstatus == 0
の判別を行っている場合、それは今後機能しなくなります。通常のリクエストと同様にstatus == 200
を判別してください。- 各種
on*
イベントリスナーが DOM オブジェクトから取り除かれました。常にaddEventListener
を使うことが推奨されます。イベントリスナーを追加するのにon*
プロパティを設定する必要がある場合は、それをhandleEvent
関数を含むオブジェクトの代わりに関数としてください。更新: こちらのサイト互換性ドキュメント により詳しい解説が載っています。 - 同期プロキシ API と同期 DNS 名前解決が廃止されました。これにより
nsIProtocolProxyService
とnsIProxyAutoConfig
、そしてnewProxiedChannel
関数に変更が加えられ、それぞれ非同期となりました。 - メインスレッド上での
nsICacheSession::openCacheEntry
の呼び出しが廃止されました。代わりにasyncOpenCacheEntry
を使ってください。 BlobBuilder
が廃止されました。代わりにBlob
コンストラクタを使ってください。WebSocket
コンストラクタがアドオンのスコープから使用できません (解決済み)。このバグは Firefox 18 の最終版では修正されていますが、ベータサイクルのうち長期間にわたって存在していました。Add-ons SDK を使ったアドオンでは特に再現しやすい問題でした。もしあなたのアドオンがこのバグの影響を受けていた場合は、最新のベータ版で再度テストしてください。- WebSockets が WebIDL へ移植されました。これはグローバルコンストラクタの代わりに XPCOM を使って WebSockets を生成しているアドオンにのみ影響します。そうした方法は今後使用できません。
プライベートブラウジング
プライベートと非プライベートのウィンドウを同時に開けるよう、プライベートブラウジングモードに変更が加えられました。これは、多くの XPCOM インタフェースやその他の関数が、新仕様に対応するため変更されたということを意味します。変更の多くは、呼び出し元のコンテキストを関数に伝える新たな引数の追加で、それらの関数はその値に従って動作するようになりました。
removeDataFromDomain
API が独自サービスに移行しました。この関数は JavaScript モジュールClearRecentHistory.jsm
へ移動されました。- サイトアイコン (favicon) の取得がプライベートブラウジングのコンテキストを継承するようになりました。これにより新たな引数が
setAndLoadFaviconForPage
へ追加されました。 imgLoader
がグローバルプライベートブラウジング通知を使わなくなりました。imgICache
やimgILoader
の仕様は非推奨となりました。代わりにimgITools
を使ってください。詳しくはimgICache
のドキュメント を参照してください。nsWebBrowserPersist::SaveURIInternal
がどこからともなくチャンネルを生成している問題が修正されました。saveURI
が新たな引数を取り、新関数savePrivacyAwareURI
が追加されました。nsDownload
にプライバシーステータスが追加されました。nsIDownloadManager.addDownload
、nsITransfer.init
、contentAreaUtils
のsaveURL
に新しい引数が追加されました。
新しいプライベートブラウジングモードに関しては、以下のドキュメントに詳しい情報が載っています。
新機能
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 18 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 は来週行われますので、後日メールをチェックしてみてください。
Firefox 17 のアドオン互換性最新情報
[これは Mozilla Add-ons Blog の記事 Firefox 17 Compatibility Update の抄訳です]
Firefox 17 が昨日リリースされましたが、これまでに表面化しており特筆すべき互換性問題がいくつかあります。
Tab Mix Plus は現時点で互換性がありません
人気のある Tab Mix Plus 拡張機能が Firefox 17 でいくつかの問題を引き起こしています。例えば、アドオンマネージャなどのメニュー項目が機能しない、あるいは「Firefox について」ダイアログなど Firefox ウィンドウ内のリンクが機能しないといった現象が確認されています。
これらは Bug 761723 が原因で、Tab Mix Plus の修正版はまだ AMO で公開されていません。問題が修正された開発版は既に用意されているようですので、まもなく一般に公開されるものと思います。
このアドオンを使用しているユーザには、修正版が公開されるまで当面の間、無効化しておくことをお勧めします。
toString()
の互換性警告
先週、AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 を行い、互換性の状況について作者の皆さんにメールをお送りしました。その中には eval
や Function
コンストラクタの使用に関する警告が含まれていました。それらはよく Firefox の関数を上書きするために使われており、また Bug 761723 のために Firefox 17 では機能しなくなっている可能性が高いと思われるためでした。
以下が、該当するアドオンについての警告メッセージです。
The ‘toString’ implementation for function objects have changed. If you are using ‘eval’ or ‘Function’ to change the behavior of ‘native’ functions, it is probably not working correctly in Firefox 17 and above. (関数オブジェクトの
toString
実装が変わりました。Firefox の元の関数の挙動を変更するためにeval
やFunction
を使っている場合、Firefox 17 以上では正しく動作しないでしょう)
申し訳ないことに、私たちが意図していたよりも多くのアドオンにこの警告が出てしまいました。特に、Function
コンストラクタの eval
を使っている jQuery などのライブラリを採用したすべてのアドオンが対象となってしまいました。
そのような場合は警告について気にする必要はありません。単なる誤検出であり無視して構いません。また、アドオンが互換性テストを通らなかったというメールが AMO から届いた場合でも、Firefox 17 やそれ以上のバージョンとの互換性を維持するために何か対策を講じる必要はありません。Firefox の現行バージョンでは「Default to Compatible」設定が有効になっており、すべてのアドオンは互換性テストを通らなくても原則として対応しているものとみなされます。ただし、念のためバージョンごとにアドオンをテストし、すべての機能が問題なく動作するか確認することをお勧めします。
リリース直前にバイナリ互換性が一時的に失われました
私たちは、Firefox のバージョンごとに初回ベータ版を使ってバイナリコンポーネントをビルドできることをバイナリアドオン作者の皆さんに対して保証しています。これにより、新バージョンが公開されるまで 6 週間の準備期間が確保されることになります。
残念なことに私たちは、Firefox 17 Beta 6 で行われたバイナリ互換性を失わせる変更を見過ごしてしまいました。これは Bug 813264 として報告されましたが、Beta 7 ですぐに修正され、そのまま正式リリースとなりました。
そのため、Firefox 17 の早期ベータ版を元にバイナリコンポーネントをビルドしていた場合は、特に何もする必要はありません。もし Beta 6 を元にバイナリをビルドしていた場合は、Beta 7 か最終版を使って再度ビルドする必要があります。ご面倒をお掛けして申し訳ありません。こうしたことが二度と起こらないよう対策を考えたいと思います。
学生Add-On勉強会2012.10.27
Firefox学生マーケティングチーム(以下 学生マーケ)主催の勉強会を行い
「Add-Onは使っているけど、Add-Onの開発は未経験。興味を持っているけど、どうしたらいいかわからない!」
そんな学生を対象としたAdd-On勉強会を学生マーケで開き、少しでもFirefoxへの興味を持ってもらいたい。
勉強会を広く開催するにあたってまずは、テストとして、学生マーケの友人等を招待し、勉強会を開催しました。
<趣旨>
Add-On開発初心者に向けて、開発環境の構築~実際に自由な発想でAdd-Onを作ってみる。
講師:EnsekiTT あっきー
参加者:5人
お持ちいただいたもの:ノートPC持参
Twitter:#gakumoz
まずは講師のEnsekiTT君から、環境設定について。
参加者もJS初心者~Python,Rubyでの開発経験者まで様々でしたが、実際に導入が
終わって開発の時間には、黙々とコーディングしたり、講師に質問したり。
実際に作成された、Add-On達
小川さん
名前:わさびちゃん
概要:アドオンバーのアイコンをクリックするとわさびちゃんが表示されるアドオン
伊納さん
ハンドルネーム:legokichi
名前:ネガポジ反転
概要:ページを問答無用でネガポジ反転します
野田さん
名前:click 2 play mod
概要:click to play使用時にブロックした要素名を表示するアドオン
EnsekiTT
名前:dragANDtweet
概要:Webページ上で気に入ったフレーズをドラッグ&ツイートするアドオン
フレーズが長い場合の短縮と任意のハッシュタグと、フレーズ位置にフォーカスする機能をつけたいところ
最後は、アンケートを書いていただき、集合写真を撮って終了しました。
<アンケート集計結果>
普段使う言語:JS 2,C 2,C++ 2,C#,php,Ruby,あまり開発しない 2
難しかった:適度だった=2:3
興味分野:WebDev,App開発
<反省点>
・時間はもう少し長め5時間程度?
・比較的簡単なアイデアやソースのサンプル・見た目におもしろいアドオン等 のサンプルの用意
・講師1人あたま2人がベスト(3人が限界?)
・成果のアウトプットの仕方
もう一度、もう少しオープンに人を募って開催してみて、そのフィードバックを踏まえ
実際に開催していこうという予定となっております。
講師や、協力してくださる方も絶賛募集中です!
お問い合わせは、こちらまでお願いいたします。
campusreps@mozilla-japan.org
今回の資料
作成:あっきー
作成EnsekiTT
Firefox 17 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 17 の抄訳です]
Firefox 17 が 11 月 20 日の日本時間深夜にリリースされます。Firefox 17 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 17 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
General
__exposedProps__
がdefault-safe
に変更されました。この変更に関してはしばらく議論が行われてきました。詳しくは アドオンのオブジェクトをコンテンツへ安全に露呈させる方法 をご覧ください。enablePrivilege
が廃止されました。この機能はしばらく前に廃止予定・非推奨となり、Firefox から徐々にコードが削除されてきました。もはや期待通りには動作しませんので、もし使用している場合は代替策を検討してください。XHR.onuploadprogress
が削除されました。このプロパティは非標準であったため削除されました。代わりの方法はXMLHttpRequest
のドキュメントをご覧ください。javascript.options.xml.content
が初期設定で無効化されました。これによってコンテンツの E4X が完全に無効化されることになります。E4X も削除されることが決まっており、使用すべきではありません。- ソースの保存による関数オブジェクトの
toString
が実装されました。もしアドオンのコードでeval
やfunction.toString
を使って既存の関数を上書きしている場合、この変更によって動作しなくなる可能性が高いでしょう。いつものことですが、そうした方法はできる限り避けることを推奨します。 - 署名済み拡張機能の証明書が初回起動時のみ検証されるようになりました。デジタル署名されている拡張機能の証明書は、従来 Firefox の起動時に毎回検証されていましたが、今後はインストール時に 1 回だけ検証されるようになります。
onbeforeunload
、onunload
、onpagehide
でダイアログを表示できなくなりました。alert
、confirm
、prompt
の使用が制限されます。Web サイトがユーザをそのページに無理矢理とどまらせようとする場合があり、そうした状況を防ぐための措置です。- 存在しない
WeakMap
キーを追加しようとしたときに例外が投げられるようになりました。これはWeakMap
を使っている場合のみ影響します。
XPCOM
- 新しい
nsIFilePicker::ShowAsync
メソッドが追加されました。nsIFilePicker::Show
は廃止予定となったため、代わりにこの非同期メソッドを使用してください。 checkLoadURI()
とcheckLoadURIStr()
が削除されました。代わりにcheckLoadURIWithPrincipal()
を使用してください。- メッセージマネージャがセンダーとブロードキャスターに分離されました。これによってメッセージの送受信方法が変わり、
nsIChromeFrameMessageManager
インタフェースは削除されました。 JavaScript-global-constructor
オブジェクトがウィンドウ参照を渡されるようになりました。あなたのアドオンでグローバルコンストラクタを登録し、なおかつ引数を取っている場合は、このバグに目を通した方が良いでしょう。GetCodebasePrincipal
の呼び出し元が正しいdata jar
を使うよう更新されました。この修正によってgetCodebasePrincipal
の関数名が一時的に変更されたため、ベータ期間中に一部のアドオンが動作しなくなりました。変更は取り消されたので、コードに変更を加える必要はなくなりました。
新機能
- トップレベル XUL ウィンドウがサイズ制限に対応しました。これによって、トップレベルの XUL ウィンドウでも
minwidth
、minheight
、maxwidth
、maxheight
が使えるようになります。 - サイトアイコン (favicon) から最も代表的な色を抽出する機能が実装されました。これは面白く、おそらく役に立つものと思われます。新しいインタフェースは
mozIColorAnalyzer
といいます。
その他、Firefox 16 で判明した 読み込みハンドラの問題 が Firefox 17 で修正されています。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 17 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 は来週行われますので、後日メールをチェックしてみてください。
アドオン互換性情報: Firefox 16 でウィンドウ読み込みハンドラが呼び出されない可能性
[これは Mozilla Add-ons Blog の記事 Possible window load handler failures in Firefox 16 の抄訳です]
アドオンの互換性問題が最近になって Firefox 16 に見つかりました。Firefox 16 だけでなくそれ以上のバージョンにも影響し、現在 Mozilla の開発者が調査を進めています。
その問題とは、多くのアドオンが依存しているウィンドウ読み込みイベントハンドラが特定の状況で呼び出されないというものです。既に分かっていることは、この現象は、ポップアップウィンドウが開かれており、なおかつ新しいウィンドウ内のドメインがそのウィンドウを開いたドメインと異なる場合に限って発生するようです。大半のアドオンのスクリプトは読み込みハンドラの呼び出しに依存していることから、その多くは新たに開かれたポップアップウィンドウでは動作しないという状態になっています。詳しくは Bug 799348 をご覧ください。
今のところ、私たちはこのバグの影響は非常に軽微であると考えています。そのため、予定外の Firefox 16.0.1 を提供するだけの十分な理由がない限り、Firefox 17 まで修正は行いません。もしあなたのアドオンが影響することが分かりましたら、コメント欄でお知らせください。
[訳注: 問題が発生するのは window.addEventListener("load", func, false)
のような典型的なコードのようです。原文やバグのコメントによれば、Adblock Plus や InstantFox Quick Search などが影響を受けるとの報告があります]
Firefox 16 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 16 の抄訳です。この記事の公開後に判明した Firefox 16 でウィンドウ読み込みハンドラが呼び出されない可能性 も併せてご覧ください]
Firefox 16 が来週リリースとなります。Firefox 16 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 16 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- 多数の CSS プロパティの接頭辞が外されました。このため、以前書かれた CSS が適用されなくなる可能性があります。接頭辞付きプロパティを使う場合は、前方互換性のため、接頭辞なしの形式も必ず併記するようにしましょう。MDN と Mozilla Hacks にも詳しい情報が載っています。
java
DOM オブジェクトが廃止されました。拡張機能で Java を使っている場合、グローバルjava
オブジェクトを取得するために採用している方法を見直す必要があるかもしれません。また、Java がアドオンに十分対応していないことや、Java プラグインがブロックリストに追加された場合にあなたの拡張機能も影響を受けることを考え、可能であれば Java の使用をやめることを検討すべきでしょう。リンク先のバグに回避策についての情報が載っています。- IndexedDB の接頭辞が外れました。この接頭辞外しも一部のアドオンに影響する可能性があります。
- 署名された拡張機能の証明書が起動時に毎回検証される挙動が廃止されました。今後、デジタル署名されたアドオンの証明書はインストール時のみ検証されます。この変更による影響は特にないと思いますが、自社のアドオンに署名している場合は、いずれにしても気を付けてテストしてみてください。
browser.js
のinit
/shutdown
関数がリファクタリングされました。これはbrowser.js
のBrowserStartup
/delayedStartup
などの関数にパッチを当てているアドオンに影響します。
XPCOM
nsClipboardPrivacyHandler
が使用するプライベートブラウジングモードが、グローバルからウィンドウごとに変わりました。このバグの修正によってnsITransferable
の使われ方が変わりました。このインタフェースはドラッグ&ドロップやクリップボード操作によく使われていますが、今後は使用前に初期化関数呼び出しが必要となります。- Bug 767134 の修正によって一部の
nsIContentPolicy
コンシューマが動作しなくなります。この変更についてはバグのコメント 1 で詳しく説明されていますが、簡単に言えば、nsIContentPolicy
を実装している場合、ロケーションバーに URL が入力されたときにchrome://
URL をリクエスト元引数として取得できなくなります。 - サイクルコレクションの静的初期化処理が削除されました。これは独自の XPCOM クラスにサイクルコレクションを実装しているバイナリアドオンのみに影響します。
新機能
- Firefox コマンドラインが実装されました。これは Web 開発者にとってより便利な機能ですが、このツールは拡張可能なものとして設計されていることから、アドオン開発に活用するクリエイティブな方法があるのではないかと思います。まだドキュメントは用意されていませんが、コードを読む ところから始めることはできます。また、テーマ作者はこの新しい UI に注意すべきでしょう。当該スタイルは
gcli.css
に書かれています。 - OS.File が実装されました。このライブラリはファイルシステムへのアクセスをより一層簡単にするものです。またこれは、これまで一般的にワーカーの使用に関する重要な制限事項であったクロームワーカーに対して提供されます。yoric のブログ記事 に、このライブラリを開発した動機が書かれています。
- 共有モジュール
Identity.jsm
が実装されました。Persona (旧名 BrowserID) が最近 ベータ版へ移行 し、この機能を利用するためのモジュールが Firefox へ統合されました。開発者の皆さんは、どのようなものか調べて、素晴らしい応用作品を作ってください
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 16 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 はもう間もなく行われますので、後ほどメールをチェックしてみてください。
Firefox 15 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 15 の抄訳です]
Firefox 15 が明日 (日本時間今日深夜) リリースとなります。直前の投稿になって申し訳ありませんが、アドオンの互換性に影響を及ぼす可能性のある Firefox 15 の変更点をまとめました。Firefox 15 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- クロームからコンテンツへのリークは許容されなくなりました。このバグ修正はナイトリービルドに投入されてから度々言及されてきましたが、ここでも改めて紹介しておくべき重要な変更です。コンテンツ DOM 要素への参照は、その親ドキュメントが削除された後も残るべきではありません。この修正により、そのような問題が発生しなくなります。あなたのアドオンでこうした (プロセス内でメモリリークを引き起こす) 処理を行っている場合、Firefox 15 以降では動作しません。
- E4X は非推奨となりました。E4X 対応は廃止予定であり、今のうちからアドオンで使うのもやめるべきです。Firefox 16 ではコンテンツでの対応が無効化され、Firefox 17 ではクロームでの対応も削除される予定です。Firefox 15 でも、コンパートメントひとつにつきグローバルオブジェクトをひとつに限定するという変更 によって、E4X でできることに関して既にいくつかの制約が生じていますので、これを機に E4X を使うのをやめましょう。
- Places ノードへのデータ保存に
expando
プロパティを使うことができなくなりました。これまで一部のアドオンによって、Places ノードにいくつかの独自プロパティが追加されてきたようです。それらは今後使用できなくなりますので、代わりに公開プロパティか Places API を使用してください。 DOMStorage
はプライベートブラウジング情報を関連する docshell から取得するようになりました。これによってgetLocalStorageForPrincipal
メソッドのシグネチャが変更となり、プライベートブラウジングに関して真偽値のフラグが追加されました。このフラグはオプションであり、既存のコードは影響を受けないでしょう。- 使用されていない CAPS 関連コードが削除されました。これは
enablePrivilege
を使用しているアドオンに影響する可能性があります。AMO ではずっと前からその使用は認められていません。 - 複数のポップアップ通知アイコンを同時に表示することが可能となりました。テーマ開発者はこの変更に留意してください。
XPCOM
nsIGlobalHistory
関連のコードが削除されました。nsIGlobalHistory2
は残っており、本来これが使われるべきものです。AMO の 互換性検証ツール は今後もnsIGlobalHistory2
が使われている場合に注意を促しますが、これは単にnsIGlobalHistory
を含む文字列にすべて一致しているだけですから、気にすることはありません。AddPageWithDetails
が削除されました。この関数はnsIBrowserHistory
に存在していたものです。代わりにPlacesUtils.asyncHistory
のupdatePlaces
を使ってください。mozIStorageStatementWrapper
とmozIStorageStatement::Step
が削除されました. このラッパーはもはや必要なく、mozIStorageStatement
を直接使用することができます。また、step
の代わりにexecuteStep
メソッドを使用してください。nsIBrowserHistory::count
が削除されました。nsIBrowserHistory
のcount
プロパティは今後使用できません。代わりにhasHistoryEntries
メソッドを使用してください。プロパティ名が一般的すぎるため、これは互換性検証ツールには含まれていません。- タイトルの区切り文字に関して RFC2231/5987 形式のエンコーディングに対応しました。これによって
nsIUTF8ConverterService.convertStringToUTF8
に新しい引数が追加されました。 JSVAL_IS_OBJECT
が削除されました。これは、コード内でこのマクロを使用しているバイナリ XPCOM コンポーネントのみに影響します。- 分かりづらい API であった
NS_CompareVersions
が削除されました。バイナリ XPCOM アドオンのみに影響する、もうひとつのマクロ関連の変更です。
新機能
CData
オブジェクトの終了に対応しました。これは、バイナリライブラリを起動するために JS-ctypes を使っているアドオンで、有効なハンドルを確実に終了させるより良い方法です。詳しくは yoric のブログ記事 をご覧ください。
Firefox 16 で予定されている重要な変更点
java
DOM オブジェクトが削除されます。拡張機能で Java を使っている場合、グローバルjava
オブジェクトを取得するために採用している方法を見直す必要があるかもしれません。また、Java がアドオンに十分対応していないことや、Java プラグインがブロックリストに追加された場合にあなたの拡張機能も影響を受けることを考え、可能であれば Java の使用をやめることを検討すべきでしょう。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 15 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO では、Firefox 14 と互換性のあるアドオンについて、先週 自動互換性テストと対応バージョンの更新 を行いました。メールを確認して、もし何も通知が届いていないようであればお知らせください。
Mozilla Hackathon 2012 成果発表~アドオン開発グループ編~
こんにちわ。赤塚です。
先日行われた Mozilla Hackathon 2012 におけるアドオン開発グループの成果をまとめてご報告いたします。
- Piro さん
- ツリー型タブの改良
- Gomita さん
- ジェスチャによる操作を可能とするアドオン(モバイル)
- hATrayflood さん
- printplus
- luckpoint さん
- 選択した文字列で検索できるようにコンテキストメニューを追加(モバイル)
- 音声検索できるメニューを追加(モバイル)
- EnsekiTT さん
- 我ログ
- port4art さん
- ユーザが選択した複数の英単語の意味をデスクトップの通知を用いて表示する
- y_system さん
- スーパー高校生の名言をランダムにアドオンバーに表示する
- 京急の運行情報が通常かそうでないかを取り出して表示
- dokan さん
- 任意のサイト上にある、任意の要素を発見した際に、なんしか知らせるアドオン
- dynamis さん
- fixprefix(モバイル)
- 私
- kinect.js
1.Piro さん
・ツリー型タブの改良
かねてからリクエストのあったと言うツリー型タブとブックマークの連携を実装しておられました。デモでは、任意のツリーをドラッグしブックマークにドロップすると、そのままブックマークとして登録されたり、逆にブックマークをドラッグ&ドロップしてツリータブにされていました。ツリーによってグループが表現できるのでグループ化するという意味では Panorama に近いかもしれません。ただ、空間的認知には若干劣る可能性がありますが、モードレスで触れられる点はとても有利なように思いました。操作的にも動き的にもとてもスムースな印象で、質の高さを感じざるを得ませんでした。さすがです。
アドオン:https://addons.mozilla.org/ja/firefox/addon/tree-style-tab/
2.Gomita さん
・ジェスチャによる操作を可能とするアドオン(モバイル)
マウスジェスチャによるブラウザの操作を可能とするアドオン FireGestures の開発者でもあらせられる Gomita さんは、モバイルにジェスチャを持ち込む試みをされておりました。具体的には、マルチタッチが可能なモバイルならではの三本指によるジェスチャで、三本触ったまま左右に動かすことでタブの移動、上に動かしてコンテンツのリロード、下に動かしてタブを閉じる機能を実装されておりました。
ジェスチャの他にも、例えば他者の指を借りないと動かないコンテンツによるコミュニケーション促進や、指20本乗らないと動かない強制柔軟機器など、さまざまな用途が考えられますね。
アドオン:https://addons.mozilla.org/ja/android/addon/three-finger-swipe/
github:https://github.com/gomita/threefingerswipe
3.hATrayflood さん
・printplus
このアドオンは閲覧中のウェブページを PDF にするだけでなく、PDF化する際のフッタやヘッダ、紙の向きに対する最適化など、さまざまな細かい調整が可能となります。今回は、以前作ったこのアドオンを最新版の Firefox に対応するための開発をしておられました。
アドオン:https://addons.mozilla.org/ja/firefox/addon/printplus/
github:https://github.com/hATrayflood/printplus
ご本人によるレポート:http://karakurimono.biz/mozillathon2012/
4.luckpoint さん
・選択した文字列で検索できるようにコンテキストメニューを追加(モバイル)
デスクトップでできるけれども、モバイルではまだ未実装なモノはまだ沢山ありそうです。本作品もそのうちの一つと言えます。選択した文字列をデフォルトのサーチエンジンで検索できるモバイル用アドオンです。
アドオン:https://github.com/luckpoint/luckpoint.github.com/blob/master/assets/Mozilla_Hackathon2012/search_contextmenu_addon.xpi
・音声検索できるメニューを追加(モバイル)
iPhone の Siri などに見られるように、音声認識技術は日々進歩し、実用に耐えうるまでになってきました。本作品は、ブラウザ上で音声による検索を実現できるようにしたアドオンで、デバイス自体に音声認識機能が無い場合でも、音声による検索が可能となるはずです。モバイルになって、キーボードの存在が危うくなっていったとき、音声は有力な入力方法の一つとなっていくのでしょうね。実装ではアドオンの範疇だけでは間に合わず java にも変更を加えていたようです。
アドオン:https://github.com/luckpoint/luckpoint.github.com/blob/master/assets/Mozilla_Hackathon2012/recognize_speech_addon.xpi
ネイティブモジュール:https://github.com/luckpoint/luckpoint.github.com/blob/master/assets/Mozilla_Hackathon2012/fennec-17.0a1.en-US.android-arm.apk
ご本人によるまとめ:https://github.com/luckpoint/luckpoint.github.com/blob/master/_posts/2012-07-29-mozilla_hackathon2012.md
5.EnsekiTT さん
・我ログ
閲覧履歴をより細かく保持しておくためのアドオンです。ウェブと人の行動の関係を探る試みの基礎ツールとして開発をスタートしました。アドオン制作は初めてのことながら、HTML構造や閲覧した日時などを保持する機能が実装されました。
6.port4art さん
・ユーザが選択した複数の英単語の意味をデスクトップの通知を用いて表示する
Chrome 拡張機能にある英単語をハイライトすると該当英単語の意味が表示されるものの実現を目指しておられました。彼もアドオン制作は初めてのことながら、Addon-SDK の API にある selection および notifications を器用に組み合わせて実現していました。さらに、複数単語が選ばれたときにも対応し、選ばれると notifications によってバラバラとその意味が流れ出てくるようなアドオンが完成しました。全選択したらバグる の発言は笑いを誘っていました。
アドオン:https://www.dropbox.com/s/3av65nqg0l33330/port4word.xpi (今後掲載予定なはず)
7.y_system さん
・スーパー高校生の名言をランダムにアドオンバーに表示する
彼もまたアドオン制作は初めてでありました。今回作ったのは2つありましたが、一つ目は学生マーケティングにも参加されている凄腕スーパー高校生が放つ名言をアイコンをクリックすることでアドオンバーに表示するアドオンです。思わず、クリックせざるをえず、アドオンバーはすぐに満杯になっていきます。
アドオン:http://kamalab08.co.cc/files/wuitap.xpi
・京急の運行情報が通常かそうでないかを取り出して表示
ダァシエリエス、ダァシエリエス で有名な京急の、運行状態が通常かそうでないかを取り出してアドオンバーに表示します。地味ではありますが、彼にとっては確かに使えるアドオンなはずです。このような、自分が使うモノを自分で作るというコトが、今後もっと広まっていくことを熱望してやみません。
アドオン:http://kamalab08.co.cc/files/keikyu.xpi
8.dokan さん
・任意のサイト上にある、任意の要素を発見した際に、なんしか知らせるアドオン
彼もまた初のアドオン制作でした。ウェブページはさまざまな要素で成り立っていますが、その中から自分の見たい・知りたい要素があった場合にアドオンバーで表示するアドオンです。例えば、RSS が装備されているとか、やばいウェブサービスが埋め込まれていないかなどを発見することができます。開発のあとは学会の準備のための論文執筆。
9.dynamis さん
・fixprefix(モバイル)
ウェブページでは CSS でスタイルを決めていくことが普通のこととなってきましたが、まだ仕様が確定していないプロパティに関してはベンダープリフィクスが付加され、それぞれ実装されていきます。ウェブページによっては、Firefox でも実装されているものの、特定のベンダープリフィクスのみが指定されていてうまく表示できないこともあり、そのプリフィクスを -moz に置き換えて閲覧できるようにしようとするアドオンがこれです。残念ながら最後まで実装できなかったようですが、リモートデバッガの使い方を習得されるなど、これからの開発に役に立つ知見を得られたようです。
10.私
・kinect.js
昨今、外部デバイスとブラウザをつなぎ JavaScript で制御するコトに喜びを感じている私ですが、今回はちょっと考えるところあり kinect をつなげてみました。実装としては、kinect を叩くためのネイティブライブラリを作成し、js-ctypes でそれを呼ぶことで、JavaScript からの制御を可能としています。サンプルアプリケーションとして、任意のウェブページの各要素を手で触れ、その要素が何であるかを表示しつつどんどん壊していくものを作りました。ちょっとまだ遅いけど。
github:https://github.com/dadaa/kinect.js
以上がアドオン開発の部の成果です。それぞれがさまざまな領域においてブラウザを拡張することができました。すばらしいっす。
Mozilla Hackathon 2012 無事終了!
7 月 28 日(土) から 1 泊 2 日の日程で行った Mozilla Hackathon 2012 が無事終了しました。
今回は、合計 31 名が参加し、翻訳や製品ローカライズの作業チーム 11 名、アドオン開発のチーム 10 名、その他のプラットフォーム開発などを行うチーム 10 名の 3 グループに分かれて作業を行いました。
Mozilla の開発や作業に参加するのは初めてという方、普段オンラインでは活動を行っているけれど、オフラインイベントは初!という方、10 年以上 Mozilla で活躍されているベテランコントリビューター、有名アドオン開発者、Mozilla Japan のエンジニアなど、さまざまなメンバーが一緒に作業を行うかたちになりましたが、オンライン上ではよく名前を見かけていていた方と実際に会って一緒に作業できたのは、大変有意義だったという声も多く聞かれました。
すでに、翻訳チームの作業の成果報告は、potappo さんがレポートを公開してくださっていますが、追ってアドオン開発、コア開発等の作業を行ったグループのレポートも報告があるかと思います。(追記: アドオン開発チームの成果報告が公開されました。コア・その他開発チームの成果報告が公開されました。 )
またこうしたオフラインのイベントが開催できればと思いますので、今回参加できなかった方もまた機会があればぜひご参加ください!
アドオン開発者ガイドのチュートリアルを翻訳・公開しました
追記: オリジナルドキュメントが MDN に移行したのに伴い翻訳も MDN の Add-on SDK ページに移動しました。
Firefox にはアドオン開発用の SDK が公開されており、SDK にはチュートリアルや API リファレンスなどの開発者ガイドも用意されています。しかし、英語のみで若干敷居が高いという問題がありましたが、今回その開発者ガイドのうち、SDK のインストール手順とチュートリアル部分を日本語訳し、公開しました。
/addon-sdk-docs/dev-guide/index.html
但しこのサイト上で公開するのは当面の間だけであり、将来的には SDK 本体にマージして行く予定です。いずれマージされるってことでテンプレートなどは AS IS でドキュメントを生成しています。見苦しいところもあるかと思いますがご容赦ください。
未訳ページの翻訳にご協力頂ける方はこの投稿にコメントするか、Twitter や Facebook などでご連絡ください。翻訳についてのご指摘などは github で Issue を立てていただくか、pull request していただければ幸いです。