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

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

FireMobileSimulatorアンインストール時の不具合について

FireMobileSimulator現行の0.0.4+Firefox3で端末の設定をしたままアドオンをアンインストールすると、端末の設定が元に戻らない(戻せない)という不具合が起きています。
アドオンも修正する予定ですが、ちょっとすぐには対応できない状況ですので、取り急ぎこのような端末の設定が戻せないという不具合が発生した場合の対処方法を記載しておきます。

  1. Firefoxのアドレス欄に about:config; と打ち込む
  2. 警告が出ても、かまわず「細心の注意を払って使用する」を選択する
  3. フィルタにoverrideと入力して、エンターを押す
  4. general.useragent.overrideという太字の項目があるはずなので右クリックして「リセット」を選択する。

この方法で対処できるはずです。
もし直らない場合は、horikawa.takahiro@gmail.comまで直接連絡をください。

FireMobileSimulator 0.0.4をリリースしました

FireMobileSimulatorのバージョン0.0.4をリリースしました。

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

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

修正点は以下です。

  1. Au絵文字でimgタグにlocalsrcやicon以外の属性があると絵文字に変換できないバグ修正
  2. Au絵文字でimgタグのlocalsrcやiconの属性値が0パディングされていると絵文字に変換できないバグ修正
  3. Au端末でHDMLのnodisplayカードに対応
  4. 画像や音声などのファイルをブラウザ内再生・表示できないバグを修正
  5. デフォルトの端末リストにiPhone 3Gを追加

ブクマのコメントでソースが見たいという要望がありましたが、アドオンのバイナリは単なるZIPファイルなので、ZIP解凍すればソースは閲覧できます。もうちょっと落ち着いたらCodeReposにでも上げてみようかなーと思ってます。
あとタイトルタグが化けるという報告も頂いてますが、こちらは状況が再現できず修正困難な状況です。絵文字表示の際にHTMLを置換しているところが怪しいのですが、理論的にはタイトルタグ内まで影響はしないはずなので。。
今回の0.0.4で絵文字表示のロジックをいくつか修正したので、図らずも直ってるかも知れません。もし再現するようでしたら詳細を送っていただけるとうれしいです。

窓の杜の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の付け替えなど。
当たり前のことですが、一つのツールが大きくなればなるほど、機能追加や修正のコストは指数関数的に増えていきますね。
修正が容易になるようにリファクタリングはちょこちょこ行ってはいるのですが、まだまだ非効率な感は否めません。とりあえず同じデータは一箇所で管理することから初めていかないと(汗)

iPhonista Nightに参加してきました

8/20は、九段下で開催されたiPhone勉強会「iPhonista Night」に参加してきました。

概要

iPhoneビジネスの可能性を探る」勉強会。

アジェンダ
  • iPhoneの可能性対談:株式会社モディファイ代表取締役社長兼CEO 小川浩氏&慶應義塾大学SFC研究所上席所員 松村太郎氏
  • iPoneプレイヤーパネルディスカッション:アシアル株式会社代表取締役社長 田中正裕氏&株式会社駅探代表取締役社長 中村太郎氏&株式会社mixiモバイル企画部シニアプロデューサー 柳本修平氏&株式会社iPhonez代表取締役 八尾憲輔氏
  • 最先端iPhone対応Webサービス:株式会社モバキッズ代表取締役 西野悠加乃氏
  • iPhoneアプリケーション紹介:アルカーナ株式会社最高執行責任者 西川幸秀氏
  • ワークショップ「iPhoneのキラーアプリを考える」
  • ライトニングトーク
    • iPhoneアプリ「30min.ランチ検索」:株式会社サンゼロミニッツ代表取締役 谷郷元昭氏
    • iPhoneを使った3D空間の企画を考えるときに把握しておきたいこと:株式会社オクターバ代表取締役 古川剛氏
所感

印象に残ったセッションは、冒頭の小川氏のセッションと、西川氏のセッション。

小川さんの会社の開発されたMODIPHIというWebアプリケーションは面白いなと思いました。対談の内容を聞く限り、iPhoneに最適化されたインターフェースを自動的に提供してくれるASPなのかなと思っていましたが、実際に触ってみるとそうではなく、あくまでニュースリーダー&RSSフィード配信というアプリケーションのようで、ちょっとイメージと違った感じでした(もしかすると法人に対してはそういうソリューションを提供しているのかもしれません)。iPhoneを多々あるインターフェースの中の1つと捉えた上で、冷静に1つのビジネスをひねり出していて、ああこういうスタンスもありだな、と思いました。
また、なぜネイティブアプリではなくWEBアプリなのか?の問いに対する、PCの世界とのアナロジーという答えは、なんとなく根拠が薄い気がしました。ただApp Storeという課金プラットフォームが整備されたネイティブアプリだけでなく、Webアプリでのビジネスもいろいろ考えられるよ、という面では勉強になったかな。

西川氏は、逆にiPhoneの可能性は無限大、みたいな大風呂敷を広げた上で、こんなに面白いことできるんだからなんかしようよ、というアイデアの種まきのようなセッション。
マルチタップ/GPS/加速度センサー/カメラ/音声認識という5つの機能分けは、自分にとっても、今後アプリを考えていくのに有益だなと感じました。

西川氏の発表の後続けて行われたワークショップは「女性が日常で抱いていた不満を解決するためのアプリ」というお題で、iPhoneキラーアプリケーションを考えるというものでしたが、こういうターゲットを絞ってアプリを考えていくアプローチも面白いなと思いました。(自分が考えると、どうしても「何ができる」から入ってしまうことが多いので)

ちなみに僕の考えたアプリケーションは、女性の写真うつりをよくするための、写真加工アプリケーション「かんたん!変身アプリ」です。iPhoneのマルチタッチ機能で、目を大きくしたり、鼻を高くしたりできる。画像解析のかなり深い技術がないと実現しないアプリだけど、面白いと思うんだけどなー。ただ、iPhoneならでは、っていう観点で見るとちょっとインパクトが弱かったかも知れません。


さて、この勉強会に関してのレポートとかをいろいろ読んでみると、結構辛口な意見も多かったようです。プレゼンの準備不足、とか、ビジネスという観点が不足しているとかね。
でも僕は、全体を通じて面白かったと思います。
確かにいまiPhone界隈の雰囲気は、新しいおもちゃで遊んでいる、もしくは新しい遊びを探っている学生的な感じが全体として漂っているとは思います。だけどそれでいいんじゃないでしょうか。App Storeで単にビールを注ぐアプリとか、そろばんアプリ、ブロック崩しアプリとかが上位に来ている状況を見ても、みんなやっぱりあたらしいおもちゃで遊びたいんですよね。ビジネスそっちのけで。そして、App Storeを利用している人たちもそれを受け容れるような状況になっている。

別に最初に収益モデルありき、っていう考え方もありだとは思います。でもそれって小学校の休み時間に、すごい面白いおもちゃを与えられたけど、俺は将来のことを考えて勉強するよ、っていって勉強している感じに近いと思うんですよね。
とりあえず「iPhoneすげー」から入って、使ってもらえる人に喜んでもらえるインターフェースを考えて、これはいけると思ってから、ビジネスモデルを考えていくっていうのもありなのかな、と。

みなさん法人として取り組んでらっしゃるんでそういう考えになってしまうのかも知れないですけど、個人として参加している自分のような人は気楽なもんです。
さーて何のアプリ作ろっかな。

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の中で数値参照が解析される前のテキストを操作できる、という流れです。

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