なんとか無事にリリースできたので書ける範囲でセルフ振り返りしてみました。掲題の通り5年くらいずっと自社のWeb開発やってきたのですが、Androidアプリに初めてトライしてみたという話です。
期間と体制
- 2014/08 ~ 2015/6
- ディレクター * 1 フロントのエンジニア * 1(僕) バックのエンジニア * 2(僕が兼任しつつ、APIを何本か手伝ってくれたのがもう一人) デザイナー* 1
- レビュアーなどは必要に応じて助っ人参戦
- iOS側の開発も並行していて別のデザイナとエンジニアが稼働
やったこと
準備期間 2014/08 ~ 2014/09
- 既存のWebサイトのデータを見つつサポートするSDKのバージョン決める
- 開発用の実機を購入。サポートするSDKのバージョンがぎりぎり入っているもの、シェアの高いもの、最新と3台分用意。
- IDEは最初からAndroid Studioを採用。当時はまだBeta版なものの十分に使えると判断。
- 開発中に1.0になりました
- 最初の2ヶ月は他の作業もあるのでこなしながら並行してサンプルを実装したり技術検証したりする期間として確保。
- 当時はまだAndroidStudio本も少なかったですが↓買って写経したりしてました。今は充実してきてるようなので好きな本を買って1冊やりきったほうがいいと思います。
AndroidStudioではじめるAndroidプログラミング入門
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2014/04/03
- メディア: 単行本
- この商品を含むブログ (2件) を見る
開発序盤 2014/10 ~ 2015/01
- ディレクター、デザイナーと一緒にコンセプトぎめ、カスタマージャーニーマップの作成など決めながら社内のコンセンサス形成。
- iOS、Androidのデザインモック作成。Prott お世話になりました。最高です。
- プロトタイピングツールでイメージを確認しつつ、動きが必要そうなところ、実現方法が怪しい物は事前にサンプルを作成して感度を確認しつつisuueを増やさないように早めに潰す。
- デザインがある程度固まってきた段階でAPIの設計・実装・テストを一気に終わらせる。
開発中盤 2015/02 ~ 2015/04
- プロトタイプに従いひたすらアプリを作る。
- 定期的に全体を見直してもっとこうしたほうがいいかなーと思ったら躊躇せず書き直す。3歩進んで1歩下がる感じ。
- サーバー側の処理でバッチが必要なところがあったのでこの期間で並行して作成。
開発終盤 2015/05 ~ 2015/06
- APIとバッチをリリース
- 本番環境下での動作確認、データパターン確認
- メモリチューニング。Android Studioのメモリモニタみながらメモリがツムツムされているところを探す。
- GoogleMap使ってるとこ消したり大量に動的にaddViewしてるとこなどをListViewに置き換えたり。
- ネイティブ独自の観点からのテスト
- ライフサイクル系。バックグラウンドからフォアグラウンドに戻るパターン。savedInstanceを活用して状態の復元はできているか、ネットワークに繋がっていない場合のケース。とか。
- 端末別のテスト
- 特にロリポップとそれ以前でだいぶ見た目が変わる。あと端末によってはスタイルの解釈が変わったりしたりしてカオス。
- 社内でユーザーテスト
- Fabric便利でした。Qiitaに上げた自分の記事を参照。
そんなこんなで無事リリースできた!
レストランを簡単予約!一休.comレストラン - Google Play の Android アプリ
所感
- 今回は本当に初めての経験で見積もりも出しづらくスケジュール的には何回か引き直したりしたものの無事にリリースできました。自分だけの力ではできなかったのでチームのメンバーや関係者の方には感謝感謝です。
- Java自体は結構久しぶりだったもののアプリの開発作業としてはAndroidのフレームワークに載せてく形に慣れればそんなにヘビーに詰まるところもなくいけました。ただActivityとFragmentのライフサイクルには最後まで悩まされた。。。
- Web書く時とは頭を切り替える必要があるなーと感じました。アプリの世界はアプリならではのデザインパターンというかお作法というか。
- 僕自身はiPhoneユーザーだったのでAndroid的にこれはスタンダードなのか?というのを常に自問自答しながら作ってました。基本はGoogleのマテリアルデザインのガイドラインに従う形。
- CIの仕組みとかテストの回し方とか置き去りにしてリリースしたのが心残り。まあこれからですね。
雑記
- 最近はRasPiとかにも手を出したり。もっといろいろ面白いもの作りたいなあ。インターネット面白い。