このサイトの記事更新は2019年11月に終了されました。過去記事アーカイブを公開しています。

投稿されたすべてのトピック

Firefox 46 サイト互換性情報

昨日、Firefox 45 Beta と Firefox 46 Developer Edition (Aurora) がリリースされました。いつも通りサイト互換性情報を用意していますので、Web 開発者の皆さんは一読されることをお勧めします。

もし一覧に漏れや間違いがあるときは下のコメント欄でお知らせください。

アドオンの署名に関する最新情報

Firefox 43 から、アドオンのデジタル署名が初期設定で強制されるようになりました。この要件は、当初 Firefox 44 のベータ版とリリース版で削除される予定だった 設定を切り替える方法 で無効化することもできます (Firefox Nightly、Developer Edition および ESR では、この設定は当面存続します)。

いくつかの理由から、この設定の削除は Firefox 46 へ延期されました。まず、未署名の再起動不要アドオンを一時的に読み込む ことを可能にする機能を Firefox 45 へ追加する作業を進めており、これによって、そうしたアドオンの開発者はリリース版の Firefox を使って動作確認を行えるようになります。このオプションは設定を廃止する前に提供したいと考えています。また、開発者が署名済みアドオンへの移行を完了するまで十分な時間を確保したいと思っています。

署名に関する wiki ページを更新して 最新のスケジュール を記載しました。Firefox のバージョン別公開日 はリリース関連のページに載っています。Firefox 46 およびそれ以降のベータ版とリリース版では署名が必須となり、その時点でベータ版とリリース版を元にしたノンブランド版 Firefox もテスト用に提供します。

オフラインの世界

 

原文: Beyond Offline ★ Mozilla Hacks – the Web developer blog on December 30, 2015 by Potch

これは私の個人的なブログの内容であるにもかかわらずMozilla Hacksとしての最初の投稿であり、Mozillianとしての最初の投稿でもあります!今月はずっとWeb Application Developer Initiative(WADI)のService Worker Cookbook projectに取り組んでいました。Service Worker Cookbook projectは私にService Workersの専門知識をアウトプットする機会を与えてくれて、それと同時にこのエキサイティングな新しいWebテクノロジーを活用する方法を学ばせて くれました。私の考えをシェアしてみませんか。

このシリーズの以前の投稿に私の同僚のDavid WalshApplication Cacheの柔軟性の欠如について話しています。なので私はこのトピックについて詳しく掘り下げません。私はService Worker Cookbookのレシピの詳細を見ていこうかと思います。DavidはService Workerの導入といくつかのoffline recipesについて議論してくれました。私はもう少し広げてService Workerのほかの使い方についてみていこうかと思います。

今日におけるServiceWorker

まだ開発下であるにもかかわらず、Service Workersは世界中で使われていると聞き始めています。

要約すると、このAPIは元々アプリケーションキャッシュが間違えたことを正しくするに全力を尽くしていました。Some web archaeologyはオフラインキャッシュを正確に修正する意図を明示し、Web開発者に「URLの設計をやりやすくするために、健全で階層的な方法のオフラインアプリケーションを」認めています。

最初の取り組みは、ナビゲーションコントロールの概念を導入することになりました。これは後にService Worker の fetch functional event の概念へと成長しました。つまり、ネットワークへ向かうリクエストを乗っ取り、ネットワークまたはデータベースより得たデータ、もしくは手続きに従って生成されたデータを返すやり 方です。良い点は?制御されているページは、乗っ取られていることを知る必要がないので(知らせを受け取ることは可能です)、サービスロジックは完全にア プリケーションロジックから切り離されています。完全な”中間者”です。

しかしハッカー(結局これもハッカーブログだからね!!)として、私たちが好むのは、そうすることが適切である問題に対しては「まっとうでない」解決策を 作ることで、時として「まっとうでない」とはあるものの使い方がその本来の目的とは異なっていることを意味します。Mozilla では WADIと Firefox OS initiative が Service Worker の次に挙げるような、本来の用法とは異なる使い方を探っています。

APIの解析

MitMアプローチの直接的な応用をやってみましょう:API analytics

あなたはAPIの使用方法の統計がほしい、そしてサーバーにアクセスできないと想定しましょう。従来の解決方法はクライアントコードに手を加え、HTTPリクエストを作成し適切なログをanalytics serviceに送信します。Service Workerは一枚上手で、それぞれのリクエストを捕まえて引数を抽出し、解析に備えてログを送信した上で、元の形のリクエストがネットワークに到達するようにできます。

パッケージ化されたアプリのインストール

他のユニークな使い方を探る前に、伝統に従いましょう。
Service Workerは installing packaged applicationsを 使いオフラインのリソースが使用できます。これはzipパッケージとしてダウンロードし、Service Worker有効時に解凍することができます。これはそれぞれのHTTPリクエストのオーバーヘッドを減らし、原始的な(一度の)操作によってダウンロー ドすることが可能です。フォントや画像などの静的なオフセットの自動キャッシュは”offlining”の良い例であり良い方法です。

サーバーを偽装する

上記のServiceWorkerがプロキシとして動作するMitMアプローチをもう一度考えて見ま しょう。ServiceWorkerはサーバーを偽装し、クライアントがネットワークを通して期待するAPIを実装することができます。Service workerはクライアントがネットワークを通して届いてほしいAPIを実装することもできます。

impersonate a serverライブラリはFirefox OSで開発されていて New Gaia Architecture と呼ばれるものをサポートしています。
New Gaia Architecture はアプリケーションや開発者にService Workers in a declarative way で記述することを許可し、Express (Node.jsのライブラリ)のクライアントサイドで動く環境をサポートしています。

機能的な現代のフレームワークを実装する。

Service Worker はモダンなフレームワーク用の構成要素として、独自の位置づけを確保しています。
例として、template interpolationを考えてみます。backbone.jsAngularのような現在のポピュラーなウェブアプリ用のフレームワークの多くは、テンプレートにプロパティを補間することで、モデルから動作するもの を作り出しています。上で述べた New Gaia Architecture では、render storeという概念を導入しています。これはオフラインキャッシュであり、テンプレートのデータモデルを補間した結果を格納しておきます。再びクライアント が同じモデルをリクエストしたときにはレンダーストアから取り出すことで、補間にかかる時間を節約することができます。

 

Dependency injection

現代的なフレームワークの他のポピュラーなコンセプトに dependency injectionがあります。これは依存するコードが依存関係を知る必要は無い状態です。

これは抽象的なインターフェースのみ知っていて、詳細な仕様はinjectorと呼ばれるabstract factoryから提供されます。Service Workerはinjectorとして動作します。

フレームワークはスクリプトタグを経由してそのコンポーネントのAPIの依存関係を宣言させます。その後Service Workerはinjectorとして動作し、抽象的なリソースのリクエストを特定して、実際のモジュールを返却します。

リクエストの遅延

もしデバイスが connectivityを持っていなくて、しかし連続して操作を受け入れていると最終的にクライアントアプリケーションやサービスが非同期になってしまいます。

フレームワークの面白い特徴としてリクエストの遅延をすることができます。例としてオフライン時のサービスworkerはAPIのリクエストを保留して接続が来たときにリクエストを解き放つことができます。

一方でServiceWorkerはクライアントにgeneric OK (status code 200)やACCEPTED (status code 202)などの サーバーの応答を模倣することができます。コネクションが復帰するとServiceWorkerはdeferred requestsキューからネットワークに対してリクエストを再作成し同期します。

Network logic のアイデア

最 後に、Service Workerはnetwork logicを含むこともできます。たぶんmultiplexing リクエストを複数のソースに使用することもできるでしょう。可用性や計測やそれぞれの正しいチャンネルを通り、返ってきたデータソースの質の計測もできま す。
結論を出す前に小さい例を挙げましょう。ユーザーはHDの動画を見たいため、アプリケーションは動画のURLをリクエストしま す。しかしコンテンツの提供が始まる前に、ServiceWorkerがリクエストを妨害し、サーバーにサーバー自身のロードレベルを聞きに行きます。一 番低いボリュームを選択し、その特定のサーバからコンテンツを提供開始します。なにか気づかないか?そう、これはロードバランサーだ!今はクライアント側で使える!すごいとは思わないか?

最後に

今はこれくらいにしておきましょう。7つの使い道、単にオフラインで使用するためにコンテンツをキャッシュするだけを超えた7つのユニークなレシピ。現在、 Service Worker Cookbook projectはService Workers APIによって提供される特徴を活用するためこれらのすべての(そのほかにもある)方法を公開しています。

そして私たちはここでとまらず、先へ行く。
Push API  は定着し、 Background Sync ももうすぐです。
Service Workersの更なる情報や他のプラットフォームでの実装状況はPlatatusを参照してください。私たちはあなたの参加を待っています!

Trainspotting: 2015 年の Firefox

原文: Trainspotting: Firefox in 2015 on December 30, 2015 by Potch

Trainspotting は最新の Firefox に搭載された機能を紹介する連載記事です。新しい Firefox は 6 週間ごとにリリースされますが、Mozilla はこのサイクルを “release trains” と呼んでいます。

2015 年も終わりに近づいたということで、今年リリースされた Firefox についてお話ししようと思います! ブラウザで使える新しい奥の手から、私が気に入っている今年の新機能まで、以下にまとめてご紹介します。

Firefox 42 と 43 は、前回の Trainspotting を投稿した後にリリースされました。Firefox 42 のリリースノートはこちらを、Firefox 43 についてはこちらをご覧ください。

「コンソールで使う」(Firefox 43)

まずは身近な新機能から見てみましょう。インスペクタで選択した要素を調べたり操作したいとき、コンソールを使うと便利であったりします。これまでは querySelector で要素を探したり、(一部のブラウザでは)現在選択されている要素を $0 という特別な変数で参照していました。(今まで $0 を知らなかったのなら、今年最後のプレゼントですね!)Firefox 43 からのインスペクタでは、要素に対してコンテキストメニューを開き、メニュー内にある「コンソールで使う」をクリックすることで、調べたい要素を一時変数に代入することができます。以前の $0 変数とは異なり、コンソールに複数の一時変数を用意できるうえ、今までの参照を失うことなく他の要素を選択することができます。地道な改善ですが、これを使うと操作が楽になります。

プライバシー・セキュリティの新しいコントロールセンター (Firefox 42)

control-center

アドレスバーをクリックすることで、Web サイトと安全に接続できているかどうかを確認できるようになりました。Firefox 42 でセキュリティパネルのデザインが変更されたことで、Web サイトの安全性を確認しやすくなり、プライバシー設定とサイトに与える権限とを指定できるようになりました。この変更により、かつてはより多くのクリックが必要だったインターフェイスが改善されました。

要素のスクリーンショットをより簡単に (Firefox 41)

Right click on a node in the markup view.

この機能はとても広く使われていることが分かりました!Firefox 41 のインスペクタでは、要素に対するコンテキストメニューで「ノードのスクリーンショットを撮影」をクリックすると、指定したページの一部をキャプチャできる機能が追加されました。

BroadcastChannel (Firefox 38)

この機能は私のお気に入りです。あるドメインで開かれているページから他のページに対し、メッセージをブロードキャストできる機能が追加されました。アプリの状態を同期させたり、イベント通知を行ったりするのに最適です。

// とあるタブ
var ch = new BroadcastChannel('test');
ch.postMessage('this is a test');

// もう一つのタブ
ch.addEventListener('message', function (e) {
alert('I got a message!', e.data);
});

// さらにもう一つのタブ
ch.addEventListener('message', function (e) {
alert('Avast! a message!' e.data);
});

2015 年を振り返って

今年は素晴らしい年になり、Firefox の注目すべき新機能について数多くの記事を書きました。2015 年の Firefox がどのように成長し改善されてきたかを詳しく知りたい場合は、これまでに書かれた Trainspotting の連載記事をご覧ください。

2016 年にまた会いましょう!

Firefox 44 アドオン互換性情報

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

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

一般

JavaScript

テーマ

署名

  • 現行版の Firefox 43 で アドオンの署名 が必須となりましたが、一方でこの強制を上書きして無効化する設定項目も用意されています。Firefox 44 でこの設定も完全に削除されるため、Firefox の Release チャンネルでアドオンを動かすには必ず署名を付ける必要があります。取り得る選択肢については こちらの記事 を参照してください。

この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 44 で動かなくなった場合は、筆者の方でも調査したいと思います。

AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 は数週間以内に行われますので、AMO に Firefox 43 対応のアドオンを登録している方は後日メールをチェックしてみてください。

Firefox 45 サイト互換性情報

先週、Firefox 44 Beta と Firefox 45 Developer Edition (Aurora) がリリースされました。いつも通りサイト互換性情報を用意していますので、Web 開発者の皆さんは一読されることをお勧めします。延長サポート版 (ESR) となる Firefox 45 に先立って、44 には様々な変更が入っていますのでご注意ください。

もし一覧に漏れや間違いがあるときは下のコメント欄でお知らせください。

FirebugとDevToolsの統合

原文: Firebug & DevTools Integration on Oct 28, 2015 by Jan Honza Odvarko

私たちが Firefox Developer tools (DevTools)と Firebug の統合に力を注いでいることはご存知でしょうか。すべての Firebug の機能をネイティブの DevTools に移植する作業に取り組んでいます。それによって、マルチプロセスにおける互換性の向上や、リモートデバッグが可能になります(例: Electrolysis 互換)。できる限りスムーズに Firebug から DevTools への移行パスについても準備中です。このように、私たちは現在唯一の素晴らしいツールを開発することにフォーカスしています。どのようなものか見ていきましょう。次世代のFireBugの主な目標は、ネイティブの DevTools を使っているときと同じ使い勝手を実現することです。これは(FireBug.next として知られている)FireBug 3 によってもたらされます。FireBug 3 は異なる別のツールではありません。DevTools 上に薄いレイヤーとして構築されており、DevTools が Firebug のように見える新しいテーマを提供します。また、いくつかの新しい機能追加があり、少しずつ DevTools に移植される予定です。
足りない機能については(例: 旧バージョンの FireBug にあった機能など)、将来的に DevTools の機能としてサポートされます。

Firebug 3

次のスクリーンショットを見てください。Firebug 3 (first beta) をインストールすると DevTools の見た目がどうなるかを示しています。よく似ていると思いませんか?

Firebug 3 (aka Firebug.next)

Firebug.next として知られる)Firebug 3 はまだ AMO からは配布されていません。そのため(about:configから)xpinstall.signatures.required の設定を false に変更する必要があります。

DevTools に移植された Firebug テーマは UI とレイアウトに関していくつかのメリットをもたらします。また、みなさんご存知の Firefox のツールバーにある Firebug のスタートボタンは developer toolbox のエントリーポイントを表します。

次の画面では Firebug Theme が有効になっています。

Firebug Start Button

開発ツールの画面に切り替える方法は全く同じです。スタートボタンを押すか、F12 キーを押します。

DOM を調べるために DOM パネルをよく利用しているかもしれません。Firebug にその機能はありますが、(まだ)サポートされていません。

DOM panel

(多くの要望があった)コンソールパネル内の XHR プレビューもすでにサポートされています。

XHR Previews

いくつかの人気のある拡張機能については DevTools の上に再実装されました。このことは人気の機能を使い続けられるということだけではなく、新しい拡張機能を直接 DevTools に対して作成する方法について、素晴らしいサンプルでもあります。これらの拡張機能を実行するのに Firebug は必須ではありません。

拡張機能の開発者のみなさんにとっては、こちらのサンプルコードやリソースへのリンクが DevTools を拡張する方法について役に立つでしょう。

それでは、どんな拡張機能があるのが見ていきましょう。

FireQuery extension

FireQuery は jQuery 開発のための Firefox プラグインです。DevTools 上に開発されました。Firebug 3 は必須ではありませんが、下記のスクリーンショットのいくつかは、DevTools の Firebug テーマが有効になっていることを示しています(その他のライトとダークテーマもサポートされています)。

jQuery data に関連づいた要素はコンソールパネルに小さな封筒のアイコンとともに表示されます。アイコンをクリックして要素を調べることができます。さらにコンソールパネルのツールバーには jQuerify ボタンがあり、現在のページに jQuery を読み込むことができます。

FireQuery extension

インスペクタパネルでも jQuery data に関連づく要素は封筒のアイコンが表示されます。アイコンをクリックするとポップアップで詳細が表示されます。

FireQuery Inspector panel

FireQuery Inspector panel

  • 詳細は FireQuery home page をご覧ください。
  • AMO から拡張機能をダウンロードしてください。
  • test pageでこの拡張機能を試してください。

PixelPerfect extension

Pixel Perfect はWebデベロッパとデザイナが簡単に Web の構成要素に半透明のレイヤー(画像)をかぶせて確認することができる Firefox 拡張機能です。ピクセル単位で Web ページとレイヤーを比較して確認することができます。

この機能拡張は、ショートカットとして Pixel Perfect ボタンを追加します。

PixelPerfect Start Button

下記の画面はボタンをクリックした時に表示されるPixel Perfect機能拡張のUIです。

PixelPerfect UI

HAR export

ネットワークパネルから HAR (the HTTP Archive format)にエクスポートする機能は、標準機能に組み込まれました。これからは追加の拡張機能は必要なくなります。ネットワークパネルを選択(もし必要ならWebページをリロード)して、次の2つのコンテキストメニューを使います。

  • Copy All As HAR: データをクリップボードにコピーします。
  • Save All As HAR: データをファイルに保存します。

ネットワークパネルからのデータエクスポートは自動化されることがよくあります(例: Selenium を使ったテスト時など)。Web ページを読み込むたびに自動的に HAR ファイルを作成したい場合は、(about:configから)下記の設定を true に変更します。

devtools.netmonitor.har.enableAutoExportToFile

ページをロードするたびに HAR ファイルを作成することについて、自動化システムの中にはもっと柔軟に行えるものもあります。リモートサーバからデータを送信し、ユーザーのアクションに応じて、HAR をエクスポートするなどです。これが私たちが HARExportTrigger 拡張機能を導入した理由です。これは HAR API を使ってページのコンテンツをエクスポートする操作の自動化を改善します。簡単なスクリプトで HAR エクスポートをいつでも実行することができます。

下記はネットワークパネルから HAR データを取得するサンプルスクリプトです。

<code>var options = {
  token: "test",
  getData: true,
};

HAR.triggerExport(options).then(result =&gt; {
  console.log(result.data);
});
</code>
  • AMO から拡張機能をダウンロードする。

サーバサイドで console.* APIを使用するには

Firebug コミュニティによってサーバサイドで console.* API を使うことを可能にする多くのエクステンションが開発されました。そのため、バックエンドのログをブラウザーですぐに見ることができます。この機能は Firefox でネイティブサポートされたので、追加のエクステンションをインストールする必要はなくなりました。

コンソールパネルでサーバからのログを有効にするだけです。

Server side logging

本機能は(Chrome Logger で使われているような)HTTP ヘッダを通じてログを送るという既存のプロトコルをサポートしています。JavaScript のログ出力のように、継続的にコンソールパネルに表示されます。すでに様々な言語(NodeJS, Ruby, Python, PHP, .NET, Java など)で適切なサーバサイドの API を提供する多くのライブラリが存在します。

下記はサーバサイドのログ出力のサンプルコードです:

<code>var chromelogger = require('chromelogger');
var http = require('http');
var server = http.createServer();

server.on('request', chromelogger.middleware);
server.on('request', function(req, res) {
  res.chrome.log('Hello from Node.js %s', process.version);
  res.end();
});</code>
<code></code>

そして、下記の画面はコンソールパネルにサーバサイドのログがどのように表示されるかを示しています。

Server log

最後に

冒頭でご説明したように、私たちはネイティブの Firefox Developer tools (DevTools) と Firebug を統合しようとしています。それが Web デベロッパーのみなさんに素晴らしい開発ツールを提供するための効果的な戦略だと確信しているためです。まだまだ言い足りないことがありますが、この記事ではプランの概要と目標を示すにとどめたいと思います。続報をご期待ください!

記事のフィードバックは Firebug group にお寄せください。

Jan ‘Honza’ Odvarko

Jan Honza Odvarko について

Firebugチームリーダー

Jan Honza Odvarkoによるその他の記事…

Firefox 44 サイト互換性情報

先々週、Firefox 43 Beta と Firefox 44 Developer Edition (Aurora) がリリースされました。modest でタイムリーに告知しそびれてしまいましたが、いつも通りサイト互換性情報を用意していますので、Web 開発者の皆さんは一読されることをお勧めします。

もし一覧に漏れや間違いがあるときは下のコメント欄でお知らせください。

Firefox 43 アドオン互換性情報

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

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

一般

XPCOM

署名

  • これは Firefox で 署名が必須となる 初めてのバージョンとなります。未署名のアドオンはインストールできず、初期設定で無効化されます。署名の強制を無効化する設定 (about:config 内の xpinstall.signatures.required) はありますが、今のところの予定では Firefox 44 でこの設定は廃止されます。

この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 43 で動かなくなった場合は、筆者の方でも調査したいと思います。

AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 は数週間以内に行われますので、AMO に Firefox 42 対応のアドオンを登録している方は後日メールをチェックしてみてください。

Firefox 42 アドオン互換性情報

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

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

一般

XPCOM

新機能

この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 42 で動かなくなった場合は、筆者の方でも調査したいと思います。

AMO に登録されているアドオンの 自動互換性テストと対応バージョンの更新 は数週間以内に行われますので、AMO に Firefox 41 対応のアドオンを登録している方は後日メールをチェックしてみてください。