4月 07
日本Androidの会主催の定例イベントでお話を聞いてきましたので、簡単にレポートします。
DalvikVM on JavaVMの話をメインで聞きにいきましたが、後半の家電ビジネス周りのお話も初めて知ったことが多くて、勉強になりました。とても濃いお話で楽しめましたです。
Ust録画がここで見られそうな予感。幹事のかた、スピーカの皆様、ありがとうございました。
イーフロー 久納さんによる、DalvikVM を Pure Java (CLDC) で実装した話
- 久納さんがこれまでにつくったものの紹介
- QuickBASICの処理系
- JavaScriptで動くGameboyエミュレータ
- ほんとに動いてた。変態だw
- Canvas処理周りが、Google Chromeが最速とか
- Wiiブラウザでも動くようにつくってあるとか
- 4000行くらい
- Skype4Java
- Skype APIのJavaラッパ .. Skype公認とか
- DalvikVMをつくってみたことについて
- Google公開の仕様ドキュメントがやけに少ないので、自分でつくってみて、よく理解してみようとおもったらしい。ふむふむ
- すでにケータイJavaVMで動くJavaVMの実装を作ってあったらしく、それに手を加えて4日半くらいでつくったとか。おおー
- オープンソースで公開することで、イーフローさんがDalvikVMに取り組んでることをアピールしたいとか。なるほどねえ。勉強させていただきます
- つくったDalvikVMの動き
- どうやって作っていったか、とか、作っていて気づいたこととか
- dexdump使って、dexバイトコードをダンプしてみて、追ってみる
- バッチファイル書いて効率化。$ adb shell “<adb shellで実行するコマンド>” とかでadb shellへコマンドを飛ばせるらしい
- DalvikVMの命令コードは2Byte(16bit)単位の可変長(最大80bit)らしい
- バイトコードのエンコードを短くするための工夫が見られる。長いメソッドディスクリプタに命令コードを割り当てなおしたり、配列のデータをとり回す処理が一命令コードになってたり。
- メソッド内でのレジスタの使い方が変わってる?引数やメソッドローカルな変数などはレジスタに。返り値や例外は、特別な場所へ入れてる?(このへん、意味がよくわからず)
- 命令コードの説明などなど。Constなんとかでレジスタへの変数格納とかとか。
- ベンチマーク
- Embedded Caffeine Mark
- Google Dev Phone(Dalvik)とP905i(JBlend)で比較
- StringでDalvikVMの方が1/10くらい遅い
- なぜか?実行コードが単純に多いからっぽい。JITコンパイラ使って最適化すれば、高速化の余地はありそう
- VM on VMについて
- 開発済み資産の再利用とかとか
- Java MEの世界でいえば、動的なクラスロードができないという制約を超える一手としても
Celevo 岩佐さんによる、家電向けDalvikVMとCE向けAndroid Marketに関する話
- CE は Windows CE(懐かしい)ではなくて、Consumer Electronics のほうでした
- Celevo の話
- デジタル家電がハード勝負からソフト勝負になっていってる話
- 家電メーカーにとって、ソフト差別化が(いろんな理由で)難しいし、舵切りできてないという話
- ハードで勝負するにも、モジュール化が進んでて、海外の部品特化メーカ(IntelとかT1とかNVIDIAとか)が強い
- 家電にユーザが作ったアプリが載る時代 .. 家電メーカーからすると「来ちゃったか」
- PCつくるのは儲からない .. 家電もそうなっちゃうかも
- 小規模でもハードウェアに参入できるようにもなってきたという話
- デジタル家電のプレイヤーの話
- 量販では、BUFFALOとかI/O DATAの売り場と(旧来からの)家電売り場で流通マージンがちがうのでごにょごにょ
- 大手家電メーカは動きにくいね、という話
- CE 向け Android Market の登場が、大きなターニングポイントになりそう
- メーカは家電販売が主。そういうアプリの販売機能を持ちにくい。サーバホスティングもやりたくない、らしい
- 出てくるには、メーカをまたいだUIの標準化や仕切り、メーカ承認フラグみたいな仕組み、DRMとかとかも必要に
- 誰がやるんでしょうね、とかとか
日本Androidの会 木南さんによるLBSの話
Tagged with: Android • Event • Google • Java • Study
9月 17
EC ナビさんで開催されたモバイル勉強会にて、携帯の機種情報 DB についてお話してきました。
今回の勉強会は、第一線で大規模な自社サービスを展開されている方のスピーチが多く、大変参考になりました。僕の話が、前回同様、かなり地味なテーマだったので、かなり緊張しましたが、他のスピーカの皆さんの胸を借りるつもりでお話させていただきました。
僕の資料はこちらの trac にまとめましたのでご参考ください。
機種情報を集める手間然り、デバッグの繁雑さ/実機手配の費用と手間然り、絵文字処理の複雑さ然り、ケータイサイト開発には、技術的障壁とは言い難い観点での泥臭い障壁があります。今回のような勉強会やノウハウ共有の活動が、ケータイアプリ開発に興味を持っておられるクリエイタの方に、少しでも参考になり、もっと面白いモバイルサービスが生み出されるようになっていくのであれば、これ以上楽しいことはありません。
では、例によってメモを転記。
- 以前のケータイサイト .. 遅い NW 経由の断続アクセス .. より多くのコネクションが必要になる
- au の絵文字表記はバイナリコードを使うべし
- moxy は pluggable。最近の perl アプリは pluggable であることが大事
- サイト運用時のドメイン変更は注意。3割くらいのユーザにメールが届かなくなる = 3割くらいのユーザがドメイン指定してる
- ドコモでメールを送った後に「OK」を押すと接続が一旦切れる。メール返信処理をしてるときは、再接続が発生するので、「OK」を押さずに待つのが吉
- ニワンゴ郵便では Subject にセッション ID を埋めて会話セッションを管理してる。一時間有効。一期一会
- ニワンゴでコマンドメールの応答を自分でつくれる .. OpenAPI
- ニコ動モバイル
- 気合いでできている
- キャリアの通信制限をiアプリ, Flash で超える
- motionJPEG(のようなもの) + ADPCM(エセ着うた) で draw+play 繰り返し
- flv 素材 => 変換サーバ(C++) => jpeg + ADPCM => 再生サーバ(java) => クライアントアプリ
- クライアントへのデータフォーマットは、ヘッダ + 命令列。命令列は音再生 + 描画の羅列。音データは MFi や SMAF ベースの独自フォーマット。クライアントは、ほぼパーサのみの実装
- 一回のデータ単位は上限の 150KB でやっている。一番効率がいい
- 可変ビットレート .. 利用できる転送速度に応じて 150KB の中で送るフレーム数を変えている。クライアントが限界 fps を申告する。音声は 1 秒単位区切り
- play から音再生までタイムラグがある。AudioPresenter を切り替えながら再生
- 描画スレッドにsleep()を入れないと通信が止まる罠
- Flash版では、どの端末も 1fps が限度
- 繋いで見せるのが難しい。子 Flash の再生までの時間が不定
- モバゲー .. 142億PV/月間。画像チェックは全部人力。SH903i ユーザが多いらしい
- SWF::File .. SWF を生成する perl スクリプトを生成
- AS のバイトコードにダミーのジャンプコードを差し込んで、逆コンパイラを誤認(難読化)させるテクニック
- ドワンゴでの検証機 5000 台以上。server side browser .. ruby(rails?) で 3 日で書いた
最後になりましたが、今回の勉強会の発起人であり、スピーカの皆さんへの呼び掛け、裏方運営まで諸々ご尽力いただいた memokami さん、休日開催/多人数の参加にもかかわらず会場を快くご提供いただいた EC ナビさん、参考になるお話を惜しげもなくご披露いただいたスピーカの皆様に感謝いたします。お疲れさまでした&ありがとうございました。
Tagged with: Event • PHP • Study
6月 18
@ノッキングオン様オフィス(麻布十番)。
twitterでのminiturboさんのつぶやきがキッカケで集まった人たちと、モバイル勉強会をやってきた。
細かいレポートはどなたかに譲るとして(またこれだ)、飲み会でのネタ含め、「おっ」と思って走り書きしたメモだけ残しておく。
- GPSってトラステッドじゃなかったっけか。少なくとも定期的に自動ポーリングとかはできなかった気が
- キャリアを跨ぐときの、一対多絵文字問題。テンプレレベルで回避
- 絵文字やるときは、PHPの内部エンコーディング設定注意
- ソフトバンク3Gでのフォームからの絵文字受け取りは手強い。連続入力されるとヤバい
- 絵文字メールの、サーバ受け取り処理は無理
- 一日20時間働くひと
- FlashLiteでのセッション管理。SWFへの埋め込み
- W3C, OMA のモバイル向けWeb標準の動向。WCSS、ちゃんと見ておく
- operaが一部実装してあるぽい
- ケータイサイトをPCで見られたとき用の、幅設定div
- 回り込みテキストの扱いは float:left しとけ
- 流行りのケータイコンテンツといえば、ケータイ小説
- @media handheld でモバイル機器向けのスタイル
- スモールスクリーンモードは、一番上から、それ用のCSSをかぶせてるようなイメージ
- http://dev.opera.com/
- ケータイでコーディングするスタイル
- インフルエンサーマーケティング
- bl(ビーエル)系
- Java FX、まだStringのconcatenation実装が無い?
iアプリ、今まではlong 64bitがatomicで無かったのね
- あのプリプロセッサはぜひ公開してほしい
僕の話した機種判別に関する資料は、この辺に置いてみました。地味な話題で、内容薄かったのですが、それなりに盛り上がったのでよかったです。
最後に、お礼。
つぶやきから始まったけど、責任もって開催までリードされたminiturboさん、お疲れさまでした。勉強だけでなく、いろんな方とお会いできて、とても有意義な一日でした。ありがとうございました。
それから、会場提供いただいたノッキングオン様、ELF様にも。素敵なオフィスですね。良い勉強会ができました。本当にありがとうございました (_ _)
Tagged with: Event • PHP • Study
5月 22
amachangさんの声がけで集まった勉強会に行ってきました。
いやー、濃い濃い。
正直、ついていけたのは、SWFのバイトコードの話だけでした。これはこれで偏ってるな..(^^;; たまたま最近いろいろいじる機会があったので、僕もTAKESAKOさんバリに、白紙にHEX-BIN変換メモ&SWF読み下しの日々が続いていたのです。DefineShape4とか、PlaceObject3とか、読んでると死にますよねw
しかし、yossyさんが言ってた「ActionScriptだと書けない処理をバイトコードで実装する」ってアプローチは目からウロコ。最適化だけじゃないんですねー。建設的なアイデア!(そっちのほうが自然なアプローチなのかも??)
ともかく、ご興味の方、とりあえずAdobeが出してるspecのbasic data typeを理解して、headerだけでも読んでみては。バイトコードって最初は手を付けづらいけど、丁寧に読むと、ちゃんと挙動が理解できるから楽しいですよ!
しかし、勉強会で出たネタ、「とりあえず、試そう!」と思ったモノが多すぎる。環境作りから必要なのもあるけど、少なくとも↓は、ちゃんといじるぞ。
- Apolloとニコニコプレゼン
- RubyCocoa
- Progression
あ、Firebugのソース読みもやろう!
あ、fladdictさんの書いたアレも読む!
.. って、こんなにやれるのかな、ほんとに。
とにかくとにかく、いろんな方にお会いできて楽しかったです!amachangさん、お誘いありがとうございました (_ _) 皆さんとお話できませんでしたが、これからもどうぞよろしくおねがいします。
Tagged with: ActionScript • Event • JavaScript • Study
最近のコメント