» アドオン開発

Firefox 18 のアドオン互換性に関わる修正のまとめ

[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 18 の抄訳です]

Firefox 18 が 1 月の第 2 週 [ 日本時間深夜] にリリースとなります。Firefox 18 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 18 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。

一般

プライベートブラウジング

プライベートと非プライベートのウィンドウを同時に開けるよう、プライベートブラウジングモードに変更が加えられました。これは、多くの XPCOM インタフェースやその他の関数が、新仕様に対応するため変更されたということを意味します。変更の多くは、呼び出し元のコンテキストを関数に伝える新たな引数の追加で、それらの関数はその値に従って動作するようになりました。

新しいプライベートブラウジングモードに関しては、以下のドキュメントに詳しい情報が載っています。

新機能

この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが 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 に登録されているアドオンの 自動互換性テストと対応バージョンの更新 を行い、互換性の状況について作者の皆さんにメールをお送りしました。その中には evalFunction コンストラクタの使用に関する警告が含まれていました。それらはよく 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 の元の関数の挙動を変更するために evalFunction を使っている場合、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君から、環境設定について。

GakuseiStudy2012.10.27.1

メンバーが作成したハンドアウトが役立ちました。
GakuseiStudy2012.10.27.2

参加者もJS初心者~Python,Rubyでの開発経験者まで様々でしたが、実際に導入が
終わって開発の時間には、黙々とコーディングしたり、講師に質問したり。

GakuseiStudy2012.10.27.3
GakuseiStudy2012.10.27.4

実際に作成された、Add-On達

小川さん
名前:わさびちゃん
概要:アドオンバーのアイコンをクリックするとわさびちゃんが表示されるアドオン

伊納さん
ハンドルネーム:legokichi
名前:ネガポジ反転
概要:ページを問答無用でネガポジ反転します

野田さん
名前:click 2 play mod
概要:click to play使用時にブロックした要素名を表示するアドオン

EnsekiTT
名前:dragANDtweet
概要:Webページ上で気に入ったフレーズをドラッグ&ツイートするアドオン
フレーズが長い場合の短縮と任意のハッシュタグと、フレーズ位置にフォーカスする機能をつけたいところ

GakuseiStudy2012.10.27.5

最後は、アンケートを書いていただき、集合写真を撮って終了しました。
GakuseiStudy2012.10.27.6

<アンケート集計結果>
普段使う言語:JS 2,C 2,C++ 2,C#,php,Ruby,あまり開発しない 2
難しかった:適度だった=2:3
興味分野:WebDev,App開発

<反省点>
・時間はもう少し長め5時間程度?
・比較的簡単なアイデアやソースのサンプル・見た目におもしろいアドオン等 のサンプルの用意
・講師1人あたま2人がベスト(3人が限界?)
・成果のアウトプットの仕方

もう一度、もう少しオープンに人を募って開催してみて、そのフィードバックを踏まえ
実際に開催していこうという予定となっております。

講師や、協力してくださる方も絶賛募集中です!
お問い合わせは、こちらまでお願いいたします。
campusreps@mozilla-japan.org

今回の資料

学生アドオン勉強会テキスト

作成:あっきー

Addon sdkはじめの一歩 from EnsekiTT

作成EnsekiTT

Firefox 17 のアドオン互換性に関わる修正のまとめ

[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 17 の抄訳です]

Firefox 17 が 11 月 20 日の日本時間深夜にリリースされます。Firefox 17 の変更点でアドオンの互換性に影響を及ぼす可能性のあるものを以下にまとめました。Firefox 17 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。

General

XPCOM

新機能

その他、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 により詳しい情報が載っていますので、こちらも併せてご覧ください。

一般

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 により詳しい情報が載っていますので、こちらも併せてご覧ください。

一般

XPCOM

新機能

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 さんがレポートを公開してくださっていますが、追ってアドオン開発、コア開発等の作業を行ったグループのレポートも報告があるかと思います。(追記: アドオン開発チームの成果報告が公開されました。コア・その他開発チームの成果報告が公開されました。 )

またこうしたオフラインのイベントが開催できればと思いますので、今回参加できなかった方もまた機会があればぜひご参加ください!

MozillaHackathon会場

会場内はこんな雰囲気

作業の様子

モバイルアドオンの開発!

フォクすけも参戦!

参加者の池田さんの誕生日のお祝いも!

成果発表後の記念写真

アドオン開発者ガイドのチュートリアルを翻訳・公開しました

追記: オリジナルドキュメントが MDN に移行したのに伴い翻訳も MDN の Add-on SDK ページに移動しました。

Firefox にはアドオン開発用の SDK が公開されており、SDK にはチュートリアルや API リファレンスなどの開発者ガイドも用意されています。しかし、英語のみで若干敷居が高いという問題がありましたが、今回その開発者ガイドのうち、SDK のインストール手順とチュートリアル部分を日本語訳し、公開しました。

/addon-sdk-docs/dev-guide/index.html

但しこのサイト上で公開するのは当面の間だけであり、将来的には SDK 本体にマージして行く予定です。いずれマージされるってことでテンプレートなどは AS IS でドキュメントを生成しています。見苦しいところもあるかと思いますがご容赦ください。

未訳ページの翻訳にご協力頂ける方はこの投稿にコメントするか、TwitterFacebook などでご連絡ください。翻訳についてのご指摘などは githubIssue を立てていただくか、pull request していただければ幸いです。