preload
4月 07

Android勉強会に行ってきた(090406)

Java コメントは受け付けていません。

日本Androidの会主催の定例イベントでお話を聞いてきましたので、簡単にレポートします。

DalvikVM on JavaVMの話をメインで聞きにいきましたが、後半の家電ビジネス周りのお話も初めて知ったことが多くて、勉強になりました。とても濃いお話で楽しめましたです。

Ust録画がここで見られそうな予感。幹事のかた、スピーカの皆様、ありがとうございました。

イーフロー 久納さんによる、DalvikVM を Pure Java (CLDC) で実装した話

  • 久納さんがこれまでにつくったものの紹介
    • QuickBASICの処理系
      • 6000行くらい
    • 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の話

  • LBSつくった話と、アイデアなど。
    • ショートペッパー、良いですね!
Tagged with:
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:
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:
5月 22

JS/AS/Flash関連の勉強会に行ってきた

JavaScript コメントは受け付けていません。

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: