「mixi Engineers' Seminar #2」参加メモ
開発者のためのiPhone⇔Androidアプリ移植のポイント
赤松洋介さま(サイドフィード株式会社)
http://www.slideshare.net/yoski/iphoneandroid-8455306
- TwitCastingやっている
- 会場参加者:iPhone開発者1割、Android開発者3割
- 今日の資料はiPhoneからAndroid開発の流れ
- Androidへの不安
- 画面作成面倒、遅い、端末依存、Java遅い
- 移植の手段
- 結論 コード移植
- 準備
- ActivityとIntentの勉強
- Layout XML ここだけ本読んだ(AndroidアプリUIデザイン&プログラミング http://www.amazon.co.jp/dp/4822284476/)
- Activity - View Controller
- Activity間の呼び出しは難しいので、iOSでController間の呼び出しをしていると苦労する
- Inteface Builder
- 座標固定に注意
- ソースコード移植
- Objective-C -> Java変換ツール
- 正規表現で作成
- Point
- JavaとObj-Cで共通の物も多い
- NSString => String
- リソース移植
- 変換ツールを作成
- 表示文字列はすべてリソース化。%@ -> %1$s
- 画像など
- ファイル名に-が使えない
- @2xアイコンはdrawable-hdpiに
- 国際化対応はAndroidの方が簡単。フォルダ名を-jaとかするとよい
- ひたすら猿作業で移植
- よかった点
- ソースコードが統一できる
- バグが猛烈に少ない
- ソースコードが統一できる
- 良くない点
- 気づいたこと
- Design
- はまったとこ
- Memory管理
- Out of memory !
- バイナリ周り。unsignedがない。Big Endian
- Memory管理
- 共通コード
- 端末の設計思想
- メニューボタンと戻るボタン
- 反省
- メニューがあるのでツールバー隠す>たくさんクレーム来た
- ユーザには設計思想を押し付けるな
- テスト環境
- 端末依存
- コードは正しくてもアプリは動かない
- 毎月Android端末買いたしてます
- それでも、ドキュメント豊富。yanzm女神
- 審査
- まとめ
質疑応答
- Q. Objective-CからJavaに移植するときの正規表現って何パターンぐらい作ったのか?
- A. 作ったのは20パターンぐらい。YES/NOをtrue/falseに変換とか、-(void)をvoidにするとか
Windows Phone 7 アプリケーション開発概要
高橋忍さま(日本マイクロソフト株式会社)
- まだ出てないけど・・・
- ユーザのためのスマートフォン
- メトロデザインフレームワーク
- ライブタイル、ハブ
- ライブタイルにプッシュ通知で情報更新できる。現在の気温とか運行情報とか。
- パノラマインタフェース。横長の巻物のような画面
- ハードウェア
- WVGA800x480、4ポイントマルチタッチ、CPU世代、5つのセンサー、500万画素以上の内蔵カメラなど厳しく規定
- これらにより、13端末ほどでているが、ほとんど機種依存は心配しなくて良い
- Windows Phone 7 アプリケーションプラットフォーム
- Silverlight
- XAML/イベント駆動型アプリ
- PCとの共有
- Silverlight4がベース
- xna
- 開発環境
- Visual Studioで。開発環境は全て無料。ダウンロードで提供
- Expression BlendでUIデザイン
- Windows Phone Develper Toolsで全て提供される
- デバイスエミュレータ
- 場合によっては実機より速い
- gpsのテストも出来る(外歩きまわらなくてもいい!)
- Expression Blend
- PhotoshopやIllustratorっぽい
- psdを直接インポート出来る
- Silverlight
- Marketplace
- トライアルができる
- トライアルだったらという判定がAPIでできる
- 24000本(6/29現在)
- APP Hub
- アプリケーション管理
- アプリケーションの申請プロセス
- Appleと同様
- だいたい2,3日で公開される
- 開発者登録は$99/1年
- 品質面のテストもしてくれるので、質のいいテスターを雇ったと思えば安い
- 70%収入シェア
mixi x Androidの深イイ話
藤崎友樹さま (株式会社ミクシィ)
- たんぽぽグループ
- エンジニアの時間をムダにしない。フレームワーク開発など
- 2010年末 Android向けアプリケーション「mixi」の提供を開始
- 開発の経緯
- 連絡先連携のデモが評判に
- 2010年10月
- Androidプロジェクト発足
- 開発環境
- Jenkins(旧Hudson)
- 開発要員
- mixi for Androidの紹介
- ネイテイブアプリ開発に求められること
- スマートフォン向けWeb開発との違い
- フロントエンド+ブラウザ自体の開発
- ネイティブ機能の開発
- ブラウザ自体自分で作る
- Web上の画像をダウンロードして表示
- 6kバイトの画像を3Gでダウンロードすると1〜6秒からかかる
- スマートフォン向けWeb開発との違い
- Android: 非同期処理は大前提
- メインスレッドを止めない
- 非同期処理を簡単にする道具
- AsyncTask
- IntentService
- キャッシュも欲しい
- 毎回取得は困る
- 自分で作れ!
- java.util.concurrent.Executor !
- 既存ライブラリあった。Droid-Fu: WebImageView
- キャッシュがあふれる。調べると嘘 Expires
- ネイティブ機能の活用
- ネイティブクライアント
- 見せ方を変えるだけではない
- サービスの再考も必要(プッシュ)
- Webの延長とは考えない
- 現状の「スマートフォン開発」
- 書ける
- GUIプログラミング
- イベントドリブンなコード
- マルチスレッド
- GUIプログラミング
- 念頭に置く
- ライフサイクル
- 空間効率
- 時間効率(バッテリー)
- やってみないとわからないことだらけ
- まとめ
- 「スマートフォン」にできること
- 生活をかる
- 概念を変える
質疑応答
Q. プッシュサービスでプロフィール画像が変わった際にキャッシュをクリアするという使い方はありか?
A. 今のところは予定はない。
Q. 端末や、対応するバージョンの方針は?
A. 最初はOSのバージョンだけ。2.2以上で作っていたが、当時まだメインが2.1だったため、2.1もサポート対象とした。対応機種はそれほど意識していない。
Q. テストは何機種ぐらい実施したか?
A. マーケットで使われている機種がわかるので、上位機種をいくつか選んでテストしている