ありがとう。また会おう。

ゆるいかんじで。かたのちからぬいて。やってます。

3月3日 mixi Engineers' Seminar

mixi Engineers' Seminar #1 : ATND
iOS端末もAndroid端末も持ってない男ですが、これからのトレンドなので参加してきました。
(一応、Android端末は近々購入する予定)
セミナー聞きながらの雑メモなので読みづらいですがご容赦を。

Objective-C一巡り (衣川憲治さん@mixi)

2010年11月入社
k_kinukawa、k.kinukawa
Trangram(タングラム)・・・2009年下期未踏スパクリ認定


Obj-Cはエンジニア需要あるが供給がおいついてない
今後はネイティブ+Webアプリの流れ
ビジネスとして定着してきた・・・Obj-Cも武器になる


特徴

  • 動的
  • C言語上位互換
  • Smalltalk仕込みのオブジェクト指向
  • クラス継承できる
  • iOS向けはGCできない
    • でも、こうすればOKというパターンはもう決まってる
  • 納税しなくてもプログラムは実行可能(ライセンスなくても勉強できる)


型は中身は全てid型
クラス名は型チェックするが、警告はするがエラーにはならない。


Objective-Cは「メソッドを呼ぶ」とは言わない。「メッセージを投げる」
[]で書く書式がそんなイメージらしい


動的結合
メッセージを投げてどのオブジェクトに対して動作するかは、実行時に決まる


セレクタ:メソッド名の文字列表現
SEL型:セレクタの内部表現
IMP型:メソッドの実装を保持。クロージャーっぽい?

  • 実際はO-Cのメソッド尾は内部的にはCの関数
  • なので、その関数ポインタをIMP型で扱える

「かみやんさんの技術者日記 2011-02-20 メモリ管理」を参照してください。


プロトコル:interfaceみたいなもの
カテゴリ:Mixinに近いもの・・・Traitかな、どちらかというと。
デリゲート:処理の委譲。Cocoaではイベントなんちゃらで使ってる


Blocks:いわゆるクロージャー。AppleによるC言語の拡張。ISOに提案中。

  • ただし、所詮C言語なので、型指定を厳密にする必要有り
  • メモリ管理も必要。素のCの知識必要。

Blocksを利用した機能

  • ランドセントラルディスパッチ
    • マルチスレッド?が簡単に扱える、らしい
  • アセットなんちゃら


まとめ

  • 面白いよ
  • つらいのは最初の内
  • 覚えると重宝されるよ。


宣伝
mixi graph APIライブラリfor iPhoneプライベートで作ってる

GREEHTML5iOS+Android対応(熊谷健太郎さん@GREE

@
2010年6月末に入社


アーキテクチャの選択肢
画面構成・遷移


動的なHTML組み立て

  • DOM
    • App cache、Web SQL DB等と組み合わせて高度なWebAppを作れる
    • ネイティブアプリとAPIを共通化可能
    • 開発はまま大変
  • innerHTML:

GREEajax+innerHTMLを採用


ライブラリ(iUI、jpTouch、SenchaTouch)

  • レイアウトのパターンが制約されるのでその範囲内で作るならOK
  • androidでもiOSっぽいみためになってしまうが、それでよければ
  • 例があまりない(mixi Touchくらい)


今から作るなら

  • jQuery Mobile
    • 規約に従ってHTML書くとtouchデバイスに最適化された表示にしてくれる
  • 手作り
    • ボタンを大きくするだけでも結構快適になる
  • Titanium Mobile
    • jsでネイティブアプリ


Emoji
iOSは2.2から対応。Androidは非対応
iOSSoftBankの絵文字と1:1対応(TMだけ例外)
Android OS標準では非サポート
2.3以降で対応?
でもフォントが用意されてない。。。


Push通知
iOS 3.0、Android2.2から

  • Apple Push Notification
    • メール、コメント、いいねの到着通知
    • 遅延は5秒くらい
    • 送信料は制限無し(Appleの人がいってた)
    • 非同期実装で送る
      • php-apns AnyEvent::APNS
      • GREE プラットフォームも対応予定
  • C2DM(Android)

アメーバピグ/AIR for Android (切通伸人さん@サイバーエージェント)

FLASH OOP for AS3.0書いた人
Twitter:@modeplus


Adobe AIR特徴
Webブラウザと違いローカルファイルにさわれる


Air for Android
2010年?月リリース
Android2.2以上


Ameba pigg
現在600万人
2009年2月リリース
約60名で開発。でざいなー半数
FlashPlayer10.1以上で動作
Android版は2010年11月1日リリース。
開発体制5人。
Android2.2以降
業務時間外で作った


Android2.2以降でFP10.1動くので、ブラウザで動かしてみた。
結果:動くけど操作が難しい

  • アドレスバー邪魔
  • ボタン小さい
  • チャットするとキーボードが閉じない
    • フルスクリーンモードにしてみたら・・・テキスト入力ができない
    • jsポップアップなら・・・画面がフルで使えない


環境構築が大変だったが、移植は楽だった
環境構築

  • 当初ツールが余り用意されて無くてコマンド叩いたり
  • SDKが毎週アップデートされて、下位互換無かったり

移植

  • PC版がもともと汎用性のある設計にしていた
  • AIRだから、PCデスクトップで動くものはほぼ動く
  • デバッグも楽
    • Androidはコンテキストメニューがないので、PC用でカスタマイズしてる場合は削除
    • マウス周りはそのままいけた
    • backボタンを無効化
      • 間違っておして閉じることがあったので
    • piggはリアルタイム重視なので、バックグラウンドに回ったらアプリ終了するようにした

tagletではじめる、誰でも簡単ゆるふわWeb系NFCプログラミング!(井上恭輔さん@mixi)

twitter @kyoro353
2006年度 未踏のひと


巫女萌えでgoogle1位
mixiが女子高生開発w 広報ぶち切れwww


ガラパロイドw
Android2.3からNFC対応


taglet
スイカ・パスモなどにtwitterIDなどを関連づける
クラウドで全世界に共有
無料で使える
pokenみたい)


開発の話
スイカ等に内蔵されてるIDがかざすと取れるので、それをHash化してデータ管理
3連休で寝ずに作ったとか!
インテントを活用。tel:、mailto:など、URLの頭が違うだけ


2011年2月9日:mixiリアルチェック、リアルチェックインをリリース
実物(本に仕込むとか)にタッチしてチェック・チェックインする
イベント会場でリアルチェックインとか面白そう


でも、日本未発売端末w

雑感

taglet面白そうだなぁ。
NFCはそれこそ一般に浸透したら、今の赤外線通信で連絡先交換に取ってかわるようになるかも。
合コンに便利そう(笑)


それにしても、未踏認定の経歴あるエンジニアの方が2名いましたが
そのパワーや発想力、素晴らしいなぁと感じました。
未踏の方は、他のセミナーでも何人かみてるのと
以前仕事でちょっとだけ絡んだことある人が過去にいるんですが
その仕事で絡んだことある1人は、意外とたいしたことないなw という印象だったんですが
それ以外は本当に実力者であることをまざまざと感じました。
そんな未踏の事業してるIPA事業仕分けでばっさり・・・というのは切ないですね。。。
資源が無くて、技術立国の国の政府がそれではね・・・
もっとそのあたりに精通した方が多数政治に関わるようになって欲しいな・・・と思ったりもしました。