BrowserAction の挙動   

複数の WebExtensions ベースのアドオンをインストールしている場合、どらかひとつのアドオンの BrowserAction が発火すると、インストールされているすべてのアドオンの BrowserAction が発火してしまう。これ恐らくアドオン毎に分離する Chrome と、コンテンツと UI を分けるのみに留める e10s のプロセス分離に対するスタンスの違いなんだろうけど、互換性の観点からするとこれどうするんだろ?

あと WebExtensions が NoScript と衝突するらしいので、NoScript 切った方が良いです。
[PR]

# by norah_models | 2015-09-02 01:32

WebExtensions のファースト・インプレッション   

WebExtensions のファースト・インプレッション。以前作った Chrome 用のアドオンを WebExtensions に移植してみたのでその感想。

Q. Chrome の拡張機能をそのまま使えるのか?
A. API レベルでは互換性があるが(ここについては後述)パッケージングを作り直した方が今の所は確実。内部レベル的には高い互換性をもっているので、そのまま持って行っても使えるが、拡張子の変更と manifest に Mozilla 独自の宣言を加える必要がある。逆に言えばその変更を加えるだけで良いとも言えるが、どうも Firefox 側で認識できない宣言があるようで、それを見つけるとエラーを吐くことから当面は manifest を新規で作ってパッケージングしなおすほうが良い。AMO にホスティングする際に、自動的に manifest をコンバートしてくれる事を期待。

Q. API の互換性は高いのか?
A. 答えは Yes だが、No でもある。現時点では Chrome 側が用意している API セットを、Firefox 側で使用できるわけではない。ただ使用できる範囲に関して言えばほぼ不満なく使える。ただしタブの複数選択など Firefox 側では、そもそもサポートしていない機能があるので、今後気になるところ。
ちなみに公式サンプル https://github.com/mdn/webextensions-examples は、Chrome が最初に出したサンプルと同じものです。

結論としては、ほぼ書き直す必要なく移植することは可能だが CSS などが Webkit 前提で作られているのでPrefix だらけで、そこを修正する必要があったり、Chrome でしか動かない機能をどうするのかと言った事を考える必要はある。あと今となっては決してモダンな枠組みではないので Firefox やブラウザ市場にポジティブな影響を与えるものではないのが残念な所。言うなれば喫茶店で熱くも冷たくない水を出された感じやね。
[PR]

# by norah_models | 2015-08-24 23:45

Chromeのプロフィールパネルを非表示にする方法   

Chromeのプロフィールパネルを非表示にする方法。

Chrome で chrome://flags/#enable-new-avatar-menu を開いて "新しいアバター メニューを有効にする" を無効化する。ただこれを無効化するとゲスト ブラウジング機能を使えなくなる(UI 上開始できない)。まあぼっちには関係ない機能ですね(´;ω;`)ブワッ
[PR]

# by norah_models | 2015-01-14 12:42

Sony Reader PRS-Tx   

Sony Reader の PRS-T のアップデートが行われて、ついに太文字に対応したと思ったら、どうも footnote なんかで使われるアンカーの処理がおかしい事に気付いた。今までなら href=#footnote1 で飛べていたのが xxxx.html#footnote1 じゃないと飛べなくなってしまっている。

この手のコンテンツ配信サービスは各社囲い込みが激しいせいで顕在化してこないだけで EPUB の表示品質の互換性はブラウザ以上に闇が深そうでふるえますね。

ついでに Sony Reader 繋がりで、Sony Reader Store が iOS 対応のニュースの影に隠れてひっそりと PC に対応した。これは HTML5 で構築された EPUB リーダーといえば聞こえが良いのだけど、Reidum のような書籍の管理機能などは持っておらず純粋なビューアーな為に PC で購入書籍を読むには常時オンライン環境が必要になる。(何故かアプリケーションキャッシュを使っている)

またビューアーとしての品質にも問題がある。全体的に情報不足で、例えばこのビューアーはページの先読みをするのだけどユーザーの読む速度が先読みに追いついた場合に、ローディング中と言った情報を提供しない。そのためにフリーズしたかのように感じてしまう。これはメニュー周りにも言えることで、反応が決して速くないので、処理待ちなのか、本当にフリーズしてしまっているのかが分からなく不親切。

技術的な部分に目を向けると HTML5 ベースのビューアーの定番的なアプローチと言える Canvas に描画して画像をコピペを出来なくするというものだが、その場合だと開発ツールとかでモニタリングすれば画像を抜き取れる。そこで画像をタイル状に分割して配信してビューアー上で復元している。ただし漫画なんかの場合は高解像度の画像をクライアントに送れば良いのだけど、小説なんかの文字ベースのコンテンツも Canvas 描画で、サーバー側で一度画像化されたデータを漫画同様のプロテクトをかけて送られてくるという仕様。つまり画面の拡大縮小を行うと文字が潰れてしまう。

いちおうこれブックリスタのサーバーで動いているので、そのうちブックパス辺りにも来るかもしれないけど、正直簡易ビューアーの域からは出てないのと、なんか各ページの余白に管理番号らしきものが振られていて邪魔。
[PR]

# by norah_models | 2014-06-29 22:40

Android Development tools 23   

Google I/O で発表された L と Wear の SDK を入れようと思い、ADT23 に更新したら Eclipse が更新できないとダダをこねるので、クリーンインストールがてらに Google が配布している新しい Eclipse+ADT23 のパッケージをダウンロードするも今度は大量のエラーが発生するので何事かと思ったら、どうも配信版の ADT23 には足りないファイルがあるらしく、それが原因で上手く起動しないらしい。

解決策としては古いバージョンの ADT を入手して以下のファイル

tools/hprof-conv(.exe)
tools/support/annotations.jar
tools/proguard

をコピーすれば一応使えるようになる。この一応というのは、それでもたまにエラーが起きたり、Eclipse のスプライトが ADT のカスタマイされたものではなくて、通常の Eclipse のものになったり、ツールバーの表示が微妙におかしかったりと変な所がある。もしかして zipalign と sqlite3 も無くなってないか?あと lint も壊れているような;

Android Studio っていつまで Beta なんですかね? ART と一緒に正式版になると思っていたのだけど。
[PR]

# by norah_models | 2014-06-28 02:06

Loop の使い方   

Q. Loop とは?
A. Nightly に搭載された WebRTC を使ったコミュニケーションサービスの事 (Firefox OS 2.0 にも搭載される)。Firefox 版 Facetime だと思えばいい。

使い方は至って簡単。まず Nightly のメニューにある受話器のアイコンをクリックする
c0034610_19133556.png

次にスクリーンネームを指定する。ここでは "フォクすけ" にしてあるが、使うときは適時自分の名前に置き換えて入力。
c0034610_19141928.png

緑色のボタンを押すと以下の様な URL が生成される
c0034610_1915157.png

生成された URL を通話したい相手に伝える (覚えるのは無理なのでコピペするのが良い)。相手はその URL をアドレスバーにコピペして実行すると
c0034610_19164989.png

このような着信通知のポップアップが表示されるので、後は着信ボタンを押せば良い。(初めて使う場合は WebRTC の実行許可の確認を求められる)
[PR]

# by norah_models | 2014-06-17 19:19

Prefbar Australis   

本家の Prefbar が Australis をフルサポート出来ないので独自に対応させたバージョン。

Seamonkey 用のインストーラーを封入してないのでインストール出来ませんが非 Australis なバージョンと互換性が取れるよう設計してあります。

インストールにさいして注意しなくては行けない点として、このバージョンは開発用の物を公開しているだけなので基本的には Nightly ベースで開発していることと、本家の Prefbar を上書きする事が上げられます。逆に本家の Prefbar に更新があった場合は更新によって上書きされます。

ダウンロード

要望や追加のボタン等があればコメントいれておいて下さい。
[PR]

# by norah_models | 2014-06-13 01:18

Australis と後方互換性   

現行の Firefox 向けのツールバーボタンを維持しながら Australis の Panel View に対応させる方法が無いかと思ったら、どうも下のようにすれば良いらしい。

<toolbarbutton id="my-addon-button"
                                    class="toolbarbutton-1"
                                    label="My Addon"
                                    type="menu">
        <menupopup id="my-addon-menu-popup"
                                context="my-addon-contextmenu"/>
    </toolbarbutton>

    <toolbarpalette id="BrowserToolbarPalette">
        <toolbarbutton id="my-addon-button"></toolbarbutton>
</toolbarpalette>

こうすることで Australis に非対応な場合は、toolbarpalette 要素の内にある #my-addon-button に overlay されて、そうでない場合は最初に出てくる #my-addon-button を JS で削除すれば良い。 #my-addon-button を JS で削除する処理は念の為にする程度で実質意味が無い。



ツールバーボタンにアイコンを指定する際は、PaddingやMarginで画像のポジションを調整すると表示がバグるのでしないこと。後方互換のためにどうしても必要な場合は:not([cui-areatype="menu-panel"])などを用いて切り分ける。
[PR]

# by norah_models | 2014-02-09 00:54

Australis   

c0034610_343427.png

Australis の特徴であるサイドビューパネル表示に対応した Prefbar のテスト。リストには対応してなかったりと細かい所は未完成だけど、基本的な部分はちゃんと動きます。

これ作っていて気付いたのは、やっぱり Australis は後方互換性が恐ろしく悪いという部分で、例えばメニュー表示に対応したボタンは以下のように表示されてしまう。
c0034610_3493394.png

パネル上にコンテキストメニューが表示されてしまうというかなり付け焼き刃なデザインになる。もっと言うとメニューボタンはレイアウトレベルで崩れが起きる。またアドオンによってはボタンが何処に置かれているのかを検知して、表示を切り替えるという手法を取っているのもあるのが現状(検知する事自体は簡単だが、結局新たにコードを書く必要があるわけで手間が増える)。

しかもこのサイドビューパネルというのが曲者で、サイドビューパネル自体はXULで定義するのだけど、表示するには CustomizableUI.createWidget() で登録しないといけない。でも実際にはボタンにはパネルの ID が属性値 viewId として割り振られていて、それを見てパネルを引っ張っているようなので Firefox 側でボタンの viewId を見てそれに該当するパネルを自動的に読み込めば良いはずなんだけど、なんでこんな手間が増えることしているのか疑問だし、IDが重複するとエラー吐いて止まるのもどうなのだろうか…。

More
[PR]

# by norah_models | 2013-12-27 17:48

Chrome Manifest V2   

Google から Chrome 用のアドオンの Manifest を最新バージョンにしないと BAN すると言われていたので修正したのだけど、修正方法が合っているのか自信が持てない(ストアへの登録は出来たので問題は無いはずなんだけど、付け焼刃感は否めない)

あと Manifest V2 最大の目玉のひとつである CSP の設定の記述が JSON に不向きというか。HTTP ヘッダのそれと記述の共通性をもたせているせいか食い合せが悪いというか違和感強い・・・。
[PR]

# by norah_models | 2013-06-16 03:58

DownThemAll!   

DownThemAll! は高機能なダウンローダーを Firefox/Thunderbird に提供します。

DownThemAll! 3.0b3 日本語版 - ダウンロード

DownThemAll! 2.0.8 日本語版 - ダウンロード
本家で使っているのとは別の言語パックを使用しています。

DownThemAll! 1.1.0 日本語版 - ダウンロード

更新履歴 :: ChangeLog
[PR]

# by norah_models | 2013-03-07 03:16

FireFTP 2.0.13   

FireFTP 2.0.13 からマルチランゲージ仕様になったので、公開を停止しようと思ったのですが、確認した所古いロケールのままだったので、取り敢えず対応版リリースしました。
[PR]

# by norah_models | 2013-03-05 02:18

FireFTP   

FireFTP は Firefox に FTP クライアント機能を追加する拡張機能です。

FireFTP 2.0.13 日本語 - ダウンロード

[!!注意!!] FireFTP 2.0.7 で発生している問題について。
FireFTP 2.0.7 には古いバージョンの設定ファイルの移行に失敗しエラーが発生するという問題が報告されています。具体的な発生条件は不明ですが、バージョンアップ後に FireFTP のエラーが発生する場合は、この問題が原因と考えられます。この問題を回避するにはプロファイルフォルダ内にある fireFTPsites.dat を開き、そのファイルから % という文字を削除するように告知されています。

この fireFTPsites.dat は FTP のアカウント設定などが記録されています。よって FTP アカウントを再設定する事が手間だと思わないのであれば、このファイルを一旦他のフォルダに移動する事でアカウント設定が初期化され問題を回避出来るかもしれません。


FireFTP 1.0.10 日本語 (Firefox 3.5 - 3.6) - ダウンロード

更新履歴 :: ChangeLog
[PR]

# by norah_models | 2013-03-05 00:31

サードパーティ Cookie を拒否するとどうなるか?   

サードパーティ Cookie がデフォルト拒否になると何が起きるのか?
c0034610_1575811.jpg

トラッキング Cookie をオプトアウトできなくなります(どーん


EU 圏ではサイト運営者が法令に基づいて提供するオプトアウト手段をユーザーが使えない事にもなる。
[PR]

# by norah_models | 2013-03-01 15:28

network.cookie.cookieBehavior=3   

Firefox 22 で悪名高きサードパーティ Cookie がデフォルトでブロックされると報道されているのだけど、今回加えれる変更は、厳密には「サードパーティ Cookie を例外を除いてブロック」というもので、じゃあこの例外とは何か?というと、既に Firefox に保存されている Cookie に関してはブロックされず許可されたままになる。

つまり Firefox をアップグレードした場合等、既存のプロファイルを継続して使用する場合にはサードパーティ Cookie は実質的にはブロックされない。

この例外というのが曲者で、一度何らかの方法で Firefox に Cookie を食べさせた場合はサードパーティとして Cookie を読み書き出来るという事なので実質的には何もブロックされないという状態になるわけで。ユーザーはブロックされていると思いながらブラウザを使う事になる可能性がある。

network.cookie.cookieBehavior:3 って昔 P3P 使う時の値だったと思うんだけど違ったか?
[PR]

# by norah_models | 2013-02-27 00:28

Thunderbird 17がクラッシュする件   

QuickText がインストールされた状態で Thunderbird 17 を起動し、メールの作成画面を表示(厳密には表示してから数秒が経過)するとクラッシュするバグが存在します。

このクラッシュを回避する方法は現状では QuickText を無効化する以外には方法はありません。幸いこの問題はメールの作成画面を表示しなければ発生しないので、起動後にアドオンマネージャーから拡張機能の設定を変更する事は可能です。

[Update 2012/11/22 16:16]
Tb 17 以降に対応するベータ版がリリースされました。該当のクラッシュを起こす部分は修正されています。
http://extensions.hesslow.se/download/22/quicktext_0.9.11.4.xpi

[Update 2012/11/2300:54]
時折 wzIQuicktextVar::parse と言うのがエラーを起こすんだけど、これって前からだっけ?
[PR]

# by norah_models | 2012-11-23 00:54

PrefBar   

Pref Bar は Firefox の設定をツールバー上から行う拡張機能です。

PrefBar 日本語版はこちらから。

ボタンセット
Responsive View - レスポンシブデザイン表示に対応したFirefoxで表示の切替を簡便化します。
Direct2D (Windows) - Direct2D の使用を制御します。もし使用するパソコンがハードウェアアクセラレーションに対応してない場合は強制モードを使用します。
Locale Switch - Locale の切り替えと再起動を支援します。
PrefBar Debug Mode - PrefBar デバッグモードを有効化します。この機能を有効化する事により、PrefBar の set-function などで goPrefBar.dump() を使用する事で Firefox のエラーコンソールに出力できるようになります。


ボタンが正常に日本語化されない場合の対象方法
PrefBar のオプション画面でボタンの初期化を行なってください。

PrefBar をクリーンインストールする
PrefBar は上書きインストールしてもボタンも含めて過去の設定を引き続き続けます。
何らかの理由でクリーンインストールした状態に戻したい時は一旦 Firefox を終了させた後 プロファイルフォルダ内にある "prefbar.json" (と "prefbar.rdf") を削除し Firefox を起動してください。

更新履歴 :: ChangeLog
[PR]

# by norah_models | 2012-10-23 18:15

SmoothScroll   

現行ので使えるかは知らんが、ということらしい。人柱よろ。
http://hg.mozilla.org/mozilla-central/annotate/dc410944aabc/modules/libpref/src/init/all.js#l1368

// マウスのホイールでスクロールした時のスクロール量
pref("general.smoothScroll.mouseWheel.durationMinMS", 200);
pref("general.smoothScroll.mouseWheel.durationMaxMS", 400);

// キーボードの矢印キーを押した時のスクロール量
pref("general.smoothScroll.lines.durationMinMS", 150);
pref("general.smoothScroll.lines.durationMaxMS", 150);

// PgUp / PgDown / スペース キーを押した時のスクロール量
pref("general.smoothScroll.pages.durationMinMS", 150);
pref("general.smoothScroll.pages.durationMaxMS", 150);

// スクロールバーの矢印ボタンを押した時のスクロール量
pref("general.smoothScroll.scrollbars.durationMinMS", 150);
pref("general.smoothScroll.scrollbars.durationMaxMS", 150);

// スムーズスクロールの使用の有無をより細かく設定("general.smoothScroll" を有効にする必要がある)
pref("general.smoothScroll.mouseWheel", true);
pref("general.smoothScroll.lines", true);
pref("general.smoothScroll.pages", true);
pref("general.smoothScroll.scrollbars", true);
[PR]

# by norah_models | 2012-06-10 23:21

行動ターゲッティングにおけるオプトアウト方式の問題点   

プライバシー情報のような物で商売をする場合、ユーザーが自身のプライバシー情報を守る権利をどう擁護するのかがポイントになる。それを考えると行動ターゲッティングにおけるオプトアウト方式は問題が多い。主に3つの点をあげてみる。

1.表示されている広告が行動ターゲティングかわからない。
ウェブページに表示される広告がどういう基準で表示されているのか見分ける事は難しい。これは何を意味するかというと、ユーザーはオプトアウトする機会を損なっているという事で、ユーザーが自身のプライバシーを管理する権利を尊重しているとは言えない。

2.収集されたデータの取り扱いが不明。
オプトアウトすることによってデータの収集は止まるかもしれないが、それ以前に収集された情報の扱いについてはどうなるのか?という問題が存在する。もちろん個人を特定できないという建前なので、オプトアウトされたユーザーのデータをピンポイントで使用出来なくするというのは建前上難しい気がするが、オプトアウトが無通知の事後承諾である事を考えると収集されたデータの使用には問題がある。これははてなを使ってマイクロアドが不正に情報を入手していた件でも問題になる部分だ。

3.ユーザーが何を収集されているのか知る手段がない。
アドネットワークは相互に連携しあっているため、どのアドネットワークやアクセス解析がどの情報を取得しているのか把握するのは困難になっている。例えば楽天市場の場合自社以外に8社の広告関連のサービスを利用している。このようにアドネットワークが相互に連動するとユーザーがいつ何処で誰に情報を収集されているのか知ることができなく、オプトアウトしても実際にそれが履行されているかを知ることが難しい。

このようにオプトアウト方式がユーザーが自身のプライバシー情報を守る点で穴だらけなのは明らかだ。私が思うに行動ターゲッティングのようなユーザー属性を使用する広告はオプトイン方式の方が向いている。というのはオプトインにする事でより多くのユーザー情報を取得する事ができるからだ。そうする事で広告の精度をあげる事もできるし、要らない疑惑をかけられる事はない。

残念なことに私たちの社会は利便性と引き換えに何らかのプライバシー情報を切り売りする必要があるわけだが、ユーザーには自身のプライバシー情報をどう扱うのかを自身で決める権利がある。どうも日本のウェブ広告業界はこの視点が欠けているし、ビジネスモデルとして構造的な欠陥があるのではないだろうか?
[PR]

# by norah_models | 2012-03-30 15:49

マイクロアドは何をしたかったのか?   

はてブボタン+マイクロアドのトラッキング騒動。はてなの全面降伏+マイクロアドのオプトアウト告知広告というなんともアンニュイな幕引きで終わりそうだが、そもそもマイクロアドは何で無差別トラッキングをしたのだろうか?

トラッキングを使用した広告と一口に言っても、自社サイトを訪れたことのあるユーザーに広告を掲載するリターゲティングから、過去の閲覧履歴を元に広告を最適化する行動ターゲティング広告が存在する。

主にマイクロアドが主力としているであろうリターゲティング広告の場合、広告主のサイトを訪問したことあるかどうかが分かれば良いので、無差別トラッキングをする必要はない(もちろん広告主のページで入手したトラッキング情報をマイクロアドが広告効果の測定以外に使うべきか論はあるだろうが)。であれば行動ターゲティング広告の精度をあげるために無差別トラッキングを行なっていたと考えるのが自然の流れだが、それは現行の行動ターゲティング広告では期待した精度が出せない言うのと表裏一体でもある。

これはマイクロアドに限らず、アプリ内広告でAndroidIDやMACアドレスを抜き取る広告会社にも言えることだが、そこまでしないと期待した精度が得られない広告というのは商品として欠陥を抱えているのでは無いだろうか?あるいは一層のことターゲッティング広告ではなくストーキング広告と改名して大腕を振って情報収集に励んではどうだろうか?
[PR]

# by norah_models | 2012-03-16 16:57