20170825 souzoh android talk...2017/08/25 · ・1 android, 1 ios, 3 server side engineer team...
TRANSCRIPT
新規サービス開発における功罪Souzoh Android Talk #1
Koichi Kukino (久木野 滉一) Android Application Developer
@cookycht
今日話すこと
・社内の新規事業としてスタートし、最初のリリースを迎えるまでにやって良かったこと、失敗したことを「設計」「サービス開発」「新しい技術への取り組み」というテーマで紹介します
‹ ›5
・12 Team Members
・5 Producer, 5 Engineer, 2 Designer
・1 Android, 1 iOS, 3 Server Side Engineer
Team
March~
・チーム結成
・でも、何やるか、どんなサービスをつくるかも決まっていない
・とにかく新しいことをやろう
・オールメンバーでMTGやワークショップを繰り返す
・空いた時間で技術選定、どういう設計でやろうか
‹ ›7
・リリース前のプロダクトなので破壊的な改修が行われる可能性が高い
・ショッピングのアプリなのでコアな機能はメルカリ、アッテなどの他のプロダクトと共通するものが存在する
・クライアント先行開発
・自分がいなくなった時のことを考える
どこに何が書いてあるか、誰が見てもそれなりにわかるようにしたい
Architecture
‹ ›8
つまりこうしたい
・リプレイスが容易になるように最初から考慮する
・機能毎にモジュール性を高く保ち、再利用可能にする
・データはMockとして作り、APIができ次第、参照先を都度変更する
・特定の設計に依存しすぎない(MVPにしろ、MVVMにしろ)
Architecture
Layered Architecture
Presentation -UI/Android Framework ・Activity/Fragment, Presenter
Domain -ビジネスロジックを隔離する ・UseCase, Entity
Infra - データストア/APIアクセス ・Repository, (API)Client, DAO
参考 ~[ Android ] - これからの「設計」の話をしよう~ https://tech.recruit-mp.co.jp/mobile/android-architecture/
画像参照元 ~[ Android ] - これからの「設計」の話をしよう~ https://tech.recruit-mp.co.jp/mobile/android-architecture/
‹ ›11
Merits
・どう見せるか、どう実現するか、どこにデータを保持するかというそれぞれの役割をレイヤーに分け、Daggerを用いて各レイヤーを疎結合な状態にし、レイヤー単位でのリプレイスが容易
・必要となるデータをJsonで定義し、MockRepositoryから直接取り込む。
→APIの開発を待たずに着手でき、APIができればRepositoryクラスを置き換えるだけで済む
→どういうレスポンスがほしいかをそのままサーバーエンジニアに依頼する
‹ ›12
Demerits
・新しい機能や画面を作る際に、どこまでがビジネスロジックか?を考える機会が多く、開発のスピード少し落ちる
・サーバーサイドの開発が先行するようになると、Mockの必要性がなくなってDIを用いた実装が少し冗長になっていた
April~
・開発スタート
・マーケットの大きい高級ブランド特化のフリマアプリ
・じゃあ、他サービスとの差別化、優位性、仕様は、、、?
‹ ›15
Service Development
・課題に対する仮説はある
→ただ、その仮説が正しいかどうかは分からない
・別アプリに切り分ける必要あるの?
分からないことはユーザーに聞こう!
‹ ›17
Service Development
・デザインプロトタイプではなく、実際に使って触れるアプリをつくる
・デザインも開発と並行して作っていく
・MVPができたら、ユーザーに使ってもらう
仮説に対するアプローチがワークするか、どこでユーザーは離脱するか、どういう伝え方をすると使ってもらえるのか、1つずつ潰していく
User Interview Driven
つくる 使ってもらう
分析する新たな仮説をたてる
‹ ›19
Merits
・実際にユーザーの声を聴くことができるので、良い反応を得られるとモチベーションアップ
・リリース前から仮説の検証を繰り返し、確度の高いものが作れる
‹ ›20
Demerits
・2週間くらいかけて作ったものを、全て破棄するようなこともあるので、正直辛い
・「ものづくりの喜び」みたいなものに逃げがち
June~
・初回リリース時のミニマムな仕様が決まる
・Google I/O明けだったので、「新しいことやっていき」が高まる
・1人開発、だんだん寂しくなってくる
‹ ›22
Introduce New Technology
・新しい技術に触れることって楽しい。プロダクトで使いたくなる
・学んだり検証したりする余裕はあまりない
・1人で進めるのではなく、誰かに相談したい
1人でチャレンジせず、Androidチームを巻き込んでやっていきを高めよう
Hard Things Android
・毎週木曜日にSouzoh Androidメンバーが集まる勉強会
・誰か話したいネタがあれば、それを持ち寄って話す
・ゆるくやる
・ネタがなくても集まって「最近どう?」的な話をする
Daggerを雰囲気でつかっている問題の顕在化
‹ ›27
Merits
・新しい技術に対してゆるく始められる
・チームのやっていきが高まる = 他のプロダクトでも使われるようになる
→ 何かあればいつでも相談できる!
‹ ›28
Demerits
・プラグインが動かなかったり、慣れないことにどハマリしてしまいやすい
・近づくリリース日、取れないBeta版
‹ ›29
開発環境
・Android Studio 3.0 Preview
ライブラリ
・Support Library 26.+, Constraint-Layout, vector-drawable, Rx 2.0, Dagger2, etc
CI ・CircleCI 2.0 ←まじ速い。
・minSdkVersion 21 ←やったでおい。
Maisonz Android
[email protected] +44 0 746 987 Launchit Followers Callus
Thank you for your attention.