遥かへのスピードランナー

シリコンバレーでAndroidアプリの開発してます。コンピュータービジョン・3D・アルゴリズム界隈にもたまに出現します。

窓の杜のFirefox拡張機能特集でFireMobileSimulatorを取り上げていただきました

窓の杜『【特集】「Firefox 3」対応拡張機能カタログ 第5回』という記事に、
拙作のFireMobiileSimulatorアドオンを取り上げていただきました!

インプレスさんありがとうございます!「厳選した」拡張機能の一つに選ばれて光栄です。

さて、窓の杜から来ていただいた方にちょっとした補足を。
窓の杜のリンク先にMozillaのサイトがありますが、このサイトからはMozillaにアカウント登録していただいた方のみがダウンロードできます。(この拡張機能はまだ公式なものとは認定されていませんので)
Mozillaにアカウント登録していない方や、Mozillaアカウントて何?って方は、以下の当ブログ記事にダウンロードリンクがありますので、そこからダウンロードしてください。
http://d.hatena.ne.jp/thorikawa/20080816/1218908754

で、この記事もそうなんですが、使っていただいた方の感想をいくつか聞くと、iモードIDとか端末製造番号の送信機能に対応している点を結構評価してもらっているみたいで。個人的にはUID送信機能があれば、他のiモードIDとか端末製造番号とかはまあおまけで、みたいなつもりで作ったんですが、やっぱり世間的には、勝手サイト(この言い方もう古いのか?)を作ってる人の方が多いんだなーと実感しました。
でも、公式サイト作ってる人にも是非使ってもらいたい!

使ってみての感想や要望などはコメント欄やトラバ、メールなどでお気軽にどうぞ。
ではでは!

FireMobileSimulator 0.0.3をリリースしました

Firefoxを簡単に携帯シミュレータにできるアドオン「FireMobileSimulator」のバージョン0.0.3をリリースしました。

Mozillaサイトからダウンロード

Mozillaのアカウント登録を行う予定のない方はこちらからダウンロードしてください。

変更点は以下。

  1. Optionメニューに端末情報の追加・編集・削除機能を追加
  2. 各メニューの表記をMobileSimulatorからFireMobileSimulatorに変更
  3. アイコンを登録
  4. Aboutメニューを追加
  5. SoftBank端末を選択した状態で、OptionメニューからSoftBankの端末製造番号を修正してもすぐに反映されないバグを修正

今回、端末情報の追加・編集・削除機能を追加してみたのですが、地味な機能ながらやってみると結構難しかったです。たとえば現在設定中の端末の情報を削除・変更した時の動作とか、端末の情報を削除したときの端末IDの付け替えなど。
当たり前のことですが、一つのツールが大きくなればなるほど、機能追加や修正のコストは指数関数的に増えていきますね。
修正が容易になるようにリファクタリングはちょこちょこ行ってはいるのですが、まだまだ非効率な感は否めません。とりあえず同じデータは一箇所で管理することから初めていかないと(汗)

JavaScript用の携帯絵文字変換ライブラリを公開します

FirefoxのMobileSimulatorアドオンで使用しているJavaScript用の携帯絵文字変換ライブラリを公開します。

ダウンロード

携帯の絵文字をPCでも見れるように画像ファイルに変換してくれます。

すでに過去のエントリでも書いていますが、PHPの携帯絵文字変換ライブラリMobilePictogramConverterjavascript用に大幅に改変したものです。

で、改変したわりには絵文字のバリエーションには一部しか対応していません(汗)
それについてはFirefox MobileSimulatorアドオンの絵文字の取り扱いについてに記載したとおりです。
たとえば、DoCoMoやAuのSJIS10進数値参照()のような記載方法には対応していません。
これについては今後対応していく予定です。

またPCでの絵文字表示に特化しているので、もともとのPHP版にあったようなキャリア間の絵文字相互変換機能などは削りました。

使用方法やスクリーンショットは以下のような感じです。
(ダウンロードしたZIPファイルのexampleフォルダの中にもサンプルがあります。)

DoCoMo
var mpc = MobilePictogramConverter.factory(MPC_DOCOMO);
mpc.setImagePath("../img"); //set your image file path
var string_not_converted = /* your code */;
var string_converted = mpc.convert(string_not_converted);

Au
var mpc = MobilePictogramConverter.factory(MPC_EZWEB);
mpc.setImagePath("../img"); //set your image file path
var string_not_converted = /* your code */;
var string_converted = mpc.convert(string_not_converted);

SoftBank
var mpc = MobilePictogramConverter.factory(MPC_SOFTBANK);
mpc.setImagePath("../img"); //set your image file path
var string_not_converted = /* your code */;
var string_converted = mpc.convert(string_not_converted);

Firefox MobileSimulatorアドオンの絵文字の取り扱いについて

先日公開したFirefox MobileSimulatorアドオンを、MobileSimulator - Firefox更新情報 Wiki*で取り上げていただきました!
ありがとうございます。

アドオンの詳細について、自分が記載していない点についても、かなり補足で書いて頂いているのですが、
1点絵文字対応について、「SoftBankにのみ対応している」との記載があったので訂正させていただきました。

絵文字には"一応"3キャリアとも対応しています。
"一応"と書いているのは、キャリアによってその記載方法は数通りあり、
それら全ての記載方法に対応するのが現時点で難しかったので、
現行のVer0.0.2では、一部の書き方にのみ対応している、ということです。

Ver0.0.2で対応しているのは以下の書き方です。

  • DoCoMoのUnicode16進数値参照(例:)
  • DoCoMoのSJISバイナリ
  • SoftBankのWebコード(ESC $ + SJISコード + SI の記載方法)
  • Auの<img localsrc="iconno">方式

なぜ部分的にしか対応できなかったというのは、キャリアの絵文字記載方法と密接な関連があります。
それについて詳しく書いていきたいと思います。

各キャリアの絵文字記載方法について

各キャリアの絵文字記載方法については携帯の文字コードと絵文字の基礎知識に詳しいですが、ざっと記法とキャリアの対応状況についてまとめると以下のような感じになります。

記法DoCoMoAuSoftBank
SJISバイナリ
Unicode(UTF8)バイナリ
SJIS16進数値参照××
SJIS10進数値参照×
Unicode16進数値参照
Unicode10進数値参照×
Webコード(ESC $ + SJISコード + SI の記載方法)××
imgタグ方式××

黄色背景のセルは、先ほど書いたMobileSimulator Ver0.0.2で対応している部分です。
この他の白背景セルの記載方法にはまだ対応していません。
たとえば、DoCoMoとAuではSJISコードの10進数値文字参照(例:&#63647;)で絵文字が記載できますが、
現行のMobileSimulatorでは文字化けて表示されます。

なぜSJISの10進数値文字参照に対応できなかったのか

一言でいうとSJISの10進数値参照なのか、Unicodeの10進数値参照なのかをアドオン側で識別できなかったからです。

今例にあげた「SJISの10進数値文字参照」による文字表記はPCの世界では一般的な書き方ではありません。
通常、FirefoxなどのPCブラウザは、数値参照はUnicode文字コードが記載されるものとして解釈するからです。

MobileSimulatorアドオンでは、windowオブジェクトのloadイベントが発生したタイミングでinnerHTMLを取得して、その中の絵文字をimgタグに置換し、表示しています。
しかしSJISの10進数値参照「&#63647;」の文字列をinnerHTML等DOM経由でアドオンに渡そうとすると、アドオンには数値参照の文字列ではなく、Unicodeとして解釈された後の文字が引き渡されます。
つまり、63647の文字コードは、携帯端末だとSJISとして解釈するところを、アドオンではUnicode文字コードと誤認してしまうわけです。

アドオン側では文字は全てUnicodeとして解釈される為、渡ってきた文字がバイナリで書かれていたものなのか、数値参照で書かれていたものなのかを知る術が有りません。
つまり、Unicodeの63647なのかSJISの63647なのかは分からない。
これが、一部の記載方法にしか対応できなかった理由です。

どうすればSJISの10進数値文字参照に対応できるのか

上記はあくまでDOM経由でのテキスト受け渡しに限った話で、
なんらかの方法で、数値参照が展開される前のプレーンな文字列をアドオン側で取得できれば
対応はできると考えています。

これについてのヒントは
mozilla.dev.tech.network|Googleグループ
に詳細な情報がありました。

ざっくりいうと、アドオンがhttp-on-examine-responseイベントが発生したタイミング(httpリクエストがブラウザで解析される前)で、Webサーバーから取得したchannelのcontent-typeをブラウザが解釈できないタイプXに変更する。そして、そのタイプXから元のcontent-typeに変換するstream converterを予め作成し、登録しておいてあげると、stream converterの中で数値参照が解析される前のテキストを操作できる、という流れです。

結構面倒なのですが、ブラウザが解析する前の生のテキストをアドオンで操作するためにはこれくらいしか方法がなさそうです。
これ以外の方法があれば、コメントやトラックバックでぜひ教えてください><

Firefoxでモバイル端末をシミュレートする独自アドオン「FireMobileSimulator」を公開します

★重要★2008/11/15追加:公式サイトFireMobileSimulator.org開設にともない、この記事の更新はストップします。今後のアップデート情報は公式サイトで行いますのでよろしくお願いします。


モバイルサイトをPCで閲覧するために、従来からある方法として、キャリアの提供するシミュレータの使用、Proxyの使用、Firefoxのuseragentswitcher+modify headersの組み合わせ等、色々と手段はありましたが、これらの方法は、それぞれに不足している機能があったり、またITに詳しくない人とかだと導入段階でつまづいてしまったりします。
そこで、もっと簡単にモバイルサイトをPCで見るために便利なツールを作成しました。

Firefoxを簡単に携帯シミュレータにできるアドオンです。モバイル端末のHTTPリクエストや絵文字表示をシミュレートすることができます。3ヶ月くらい前からこっそり開発していたのですが、ようやく機能も揃ってきて安定してきているので、そろそろ公開しようかと。

概要

FireMobileSimulatorは、DoCoMo/Au/SoftBank3キャリアのHTTPリクエスト・絵文字表示などをシミュレートして、モバイルサイト開発を容易にするために作成されたFirefoxのアドオンです。

ダウンロード

Mozillaサンドボックスとして登録しています。
Mozillaサイトからダウンロード
Mozillaのユーザー登録をすでにされている方、あるいはユーザー登録の手間をかけていただける方はこちらからダウンロードしてください。
Mozillaのアカウント取得の予定がない方は以下からダウンロード可能です。

主な機能

  • [全キャリア]UID送信
  • [DoCoMo]UTN送信
  • [DoCoMo]iモードID送信
  • [全キャリア]絵文字表示
  • [DoCoMo/Au]位置情報送信機能
  • [SoftBank]端末製造番号送信
  • [全キャリア]User-Agent偽装
  • [全キャリア]各種HTTPリクエストヘッダのシミュレート
  • 端末情報の追加・編集・削除機能
  • Content-TypeのWMLとXHTMLをHTMLに強制変換(FirefoxXML整形式チェックによる表示エラーを回避するため)

使い方

  • メニューバーの[ツール]->[FireMobileSimulator]、あるいは、ツールバー上に配置したボタンからシミュレートしたい端末を選択してください。
  • シミュレートを解除したいときは、[ツール]->[FireMobileSimulator]から[default]を選択してください。また、ブラウザ終了時に端末の選択は自動的にクリアされます。
  • UIDなどの設定値を変更したい場合は、Optionsメニュー->全般から編集してください。
  • 端末を追加したり端末情報を変更したい場合は、Optionsメニュー->デバイス設定から編集してください。
  • 位置情報の設定値を変更したい場合は、Optionsメニュー->位置情報設定から編集してください。

スクリーンショット

こんな感じでサイトを閲覧できます。

アップデートについて

Firefoxの自動アップデートには対応していません。
バージョンアップ時は適宜本ブログにて報告しますので、継続して使いたいという方は適当にチェックしてみて下さい。

今後の拡張予定

  • 携帯端末の追加・編集機能Ver0.0.3にて実装済
  • 各キャリアの未実装のHTTP送信ヘッダに対応
  • 未対応の絵文字記載方法に対応Ver0.1.0にて実装済
  • 着メロ・着うたなど各種コンテンツに対応
  • HDML表示
  • WML表示(Ver0.1.0にて一部実装済)
  • 各端末のCookie対応/非対応をシミュレート(Ver0.1.0にて一部実装済)

既知の問題と対処法

Firefox3で端末の設定をしたまま当アドオンをアンインストールすると、端末の設定が元に戻らない(戻せない)という不具合が起きています。対処法はこちらを参照してください。Ver0.1.0以降、ブラウザ終了時に端末の選択をクリアするようになりましたので同様の問題は発生しないはずです。

フィードバックについて

フィードバックは当ブログやメールでも受け付けていますが、Mozillaアカウントをお持ちの方は、上記記載のMozillaダウンロードページからいただけると嬉しいです。
改善要望やバグ報告については歓迎しますが、今のところ個人で開発していますので、対応しきれない可能性があることを予めことわっておきます。(CodeReposにでもアップしようかな・・・)

ソースコードについて

CodeReposにてソースを公開しています。
コミット大歓迎!

ライセンスについて

ライセンスはMPLライセンスにて提供しています。
バージョン0.1.4以降GPLライセンスにて提供しています。

使用ライブラリなど

本アドオンを作るにあたり、MobilePictogramConverterjavascript版としてカスタマイズして使用しています。(id:rysterさんに感謝!)
これはjavascript版の携帯絵文字ライブラリとして、また後日公開する予定です。

参考サイト

携帯の文字コードと絵文字の基礎知識
は絵文字表示機能を実装するときに大いに参考にさせていただきました。多謝!