Download - 20150514 android

Transcript
Page 1: 20150514 android

7営業日でAndroidアプリをリリースした話

Livesense, inc 藤村 宗彦

Page 2: 20150514 android

自己紹介

Page 3: 20150514 android

自己紹介• 藤村 宗彦(社内では@Godと呼ばれています)

• Livesense, inc

• 転職会議メディア開発担当

• Twitter : @kurobara

• Facebook : https://www.facebook.com/fujimura.munehiko

• blog :http://moonstruckdrops.github.com/

Page 4: 20150514 android

よくやること• Java / Groovy

• Ruby / Rails

• Android

• iOS(Objective-C / Swift)

• DevOps(最近流行のものとか)

• FullText Search

• etc…

Page 5: 20150514 android

Androidアプリ開発歴• 国内初のAndroid端末が発売される以前から(2008年前後)

• やり始めたキッカケ

• 学生時代で時間は潤沢にあった

• 当時のお仕着せガラケーアプリが嫌い

• Googleが開発している

• 前職はSIerでAndroidに関わる業務を色々

• プライベートはお勉強がてらに書くことが多かった

• キッカケができたので、最近真面目にアプリを実装し始めた

Page 6: 20150514 android

7営業日でリリースしたもの

Page 7: 20150514 android

プロダクト ~INSPICE~ とは• 雑誌×WEBの最適解を目指した、良質な“衣・食・住”を提案するクオリティマガジンです。

• インテリア、家具、ファッション、雑貨、キッチン用品、オーガニックフィードなど、作り手のフィロソフィー(信念/哲学)に裏付けられた高品質かつ高感度なアイテムを通じて、みなさまの日々を充実させるコンテンツを随時お届けします。

• 世の中には、あまり知られていないけれど、こだわって作られている『質の良いモノ』はたくさんあると私たちは考えています。素材職人さんの技、ずっと使える耐久性と普遍性...。そういった質の良さや、商品に隠されたストーリーを広く知っていたたきたい。

• 私たちは、『質の良いモノ』にフォーカスし、商品の世界観/バックグラウンドにあるブランドヒストリー、あるいは作り手の信念 /哲学などを読み応えのあるストーリーとして読者にお届けいたします。

Page 8: 20150514 android

今回の話

• webサイト • iOS

• Android

Androidアプリ開発 にフォーカス

Page 9: 20150514 android

雑誌のようなインターフェースのアプリ

Page 10: 20150514 android

本題

Page 11: 20150514 android

7営業日リリースにおける3つのキーワード

1. プロジェクト運営

2. サービスの設計思想

3. Andoirdアプリを取り巻いた環境

Page 12: 20150514 android

1. プロジェクト運営

Page 13: 20150514 android

よくある流れ仕様を用意したからxx日までによろしく

デザインはざっくりこんな感じだけど、詳細はデザイナーにきいてやってくれ

デザイン用意しました。 xxは△△のような感じでお願いします。

デザイナー

ディレクター

エンジニア

あ、はい分かりました

Page 14: 20150514 android

辛くなってくる1. 機能の仕様が複雑

2. 実現が難しいデザインを渡される

3. UXが関わるので、意図が伝わりづらい

1. 画面切り替えのフェードイン/フェードアウトのタイミングや方式

2. タブ切り替え時のアニメーション

3. ページングなのか、スクロールなのか

4. etc...

4. できたものを見て、やっぱりこうしたい(by ディレクター/デザイナー)

5. コミュニケーションが少ないので、エンジニアサイドからの意見が減少

Page 15: 20150514 android

まとめると• ディレクターが決めたアプリの仕様が絶対

• アプリはウォーターフォールで固く作る

• エンジニアは、開発したアプリをデザイナーに確認のお伺いをする

• 開発に携わるメンバー間のコミュニケーションは最低限

Page 16: 20150514 android

辛いことを繰り返すことでエンジニアが疲弊

Page 17: 20150514 android

意識して取り組んだこと1. 開発に対する勢い

• 「俺が考えた最強のInspice for Androidアプリを見せてやる!!」を掲げていた!!

2. ワクワクするものを作る

• 作るアプリが使いたいと思うもので無ければ、開発モチベーションが低下する為

3. 不要な機能を作らない

• 関わるメンバーの誰も必要としていない機能は無駄

• 事実、iOSとAndroidでは、機能差分がある

Page 18: 20150514 android

エンジニアドリブンな開発の流れに変える

Page 19: 20150514 android

UI / UXのギャップを埋める• スクラップ&ビルドで、動くプロトタイプをさっさと用意する

• 紙でシミュレートと実機での動きは異なることがある

• プロトタイプは、とりあえず動作するレベルの雑さでもよい

• 確認のサイクルを早くする

• 席を隣や向かいにするなどの工夫

• ちょっとしたことでもすぐに共有 / 確認を実施

• 自動化が視野にないことが多いので、共有作業における手作業が増える

Page 20: 20150514 android

具体的にやったこと(1)• ワイヤーフレーム

• 画面や機能の構成をブレイクダウン

• 画面の表示構成を決定

• ペーパープロトタイプ

• UXの詳細をデザイナーと詰める

• 画面の動きのイメージをつける

Page 21: 20150514 android

具体的にやったこと(2)

• デザインモックに「Invison」を活用

• 具体的な表示イメージを確認

• 簡単なプロトタイプでUXの挙動を確認

Page 22: 20150514 android

具体的にやったこと(3)• 実データに近い内容で、捨てる前提のモックアップを作る

• スクロールにより目次の効果を期待したList

• 記事へのアクセスが近くなる効果を期待したGrid

• ページャーを使い、ページ送りの動きを期待したページング

Page 23: 20150514 android

2. サービス設計思想

Page 24: 20150514 android

開発前提• Web / iOS / Androidのプラットフォームに対応させたい

• それぞれのプラットフォームで、リッチなUI / UXを実現したい

• Android• webサイト • iOS

Page 25: 20150514 android

全体構成• よくある構成を取っている

Page 26: 20150514 android

Webviewでもマルチプラットフォームはできるが...

• 処理の振り分けが必要

• 制約が出てくる

• 使用する技術

• Android / iOSでのUI / UXの動作

• 修正の影響が大きい

• iOSでは動作するが、Androidでは動かないといったこと等

• 修正をするためのネゴシエーションなど調整が必要

Page 27: 20150514 android

JSONでデータモデルを返すことで...

• 処理の振り分けが不要

• 制約無し

• プラットフォーム固有のリッチなUI/UXの実現

• 使用する技術

• 修正影響を考慮する必要無し

• 実装にフォーカスできる

• データモデルが変わらない前提

Page 28: 20150514 android

マルチプラットフォームでサービスが展開できるような設計思想を持つ

Page 29: 20150514 android

3. Androidアプリを取り巻いた環境

Page 30: 20150514 android

開発する環境の変化• 開発するにあたって便利な世界

デファクトになるようなライブラリも増加

Page 31: 20150514 android

面倒な処理(1)• HttpRequest

Page 32: 20150514 android

OkHttpを使いわかりやすく

Page 33: 20150514 android

面倒な処理(2)• Databaseを使用する

• カラムを指定したり等、selectクエリを書くのが面倒

• cursorをループさせないと値が取得できない

• 忘れそうになるクローズ処理が必要

Page 34: 20150514 android

Android向けORMであるDBFlowを使用

• モデルをこういう感じで用意

• こういう感じで使う

Page 35: 20150514 android

補足(1)• OkHttpを使って以下のようなコードを書くと「ストリームが閉じてるよ!」ってエラーが出て怒られます

Page 36: 20150514 android

補足(2)• 当たり前ですが、ストリームからの受け取りを1度のみに修正

• 確認するとOkHttp側の実装はこうなってた

Page 37: 20150514 android

• テスト(ユニットテスト, functionalテスト)

• mockito + JUnit + Robolectric + Robotium

• Espresso

• Calabash-Android

• 配信ベータテスト

• Deploygate

• Google Developer Console

• クラッシュレポート

• crashlytics

• ACRA

テストやアプリ配信系のツール類

Page 38: 20150514 android

まとめ• エンジニアが意識を持って取り組むことで、プロジェクトの進め方を変えることができたこと

• 1つのプラットフォームの不具合が、他のプラットフォームに影響を及ぼさなくするための全体設計

• 素早くアプリ開発できる環境 / デファクトのライブラリも増えつつあるような状況が整いつつあること


Top Related