20170825 souzoh android talk...2017/08/25  · ・1 android, 1 ios, 3 server side engineer team...

30
新規サービス開発における功罪 Souzoh Android Talk #1

Upload: others

Post on 08-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

新規サービス開発における功罪Souzoh Android Talk #1

Page 2: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

Koichi Kukino (久木野 滉一) Android Application Developer

  @cookycht

Page 3: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい
Page 4: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

今日話すこと

・社内の新規事業としてスタートし、最初のリリースを迎えるまでにやって良かったこと、失敗したことを「設計」「サービス開発」「新しい技術への取り組み」というテーマで紹介します

Page 5: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›5

・12 Team Members

・5 Producer, 5 Engineer, 2 Designer

・1 Android, 1 iOS, 3 Server Side Engineer

Team

Page 6: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

March~

・チーム結成

・でも、何やるか、どんなサービスをつくるかも決まっていない

・とにかく新しいことをやろう

・オールメンバーでMTGやワークショップを繰り返す

・空いた時間で技術選定、どういう設計でやろうか

Page 7: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›7

・リリース前のプロダクトなので破壊的な改修が行われる可能性が高い

・ショッピングのアプリなのでコアな機能はメルカリ、アッテなどの他のプロダクトと共通するものが存在する

・クライアント先行開発

・自分がいなくなった時のことを考える

どこに何が書いてあるか、誰が見てもそれなりにわかるようにしたい

Architecture

Page 8: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›8

つまりこうしたい

・リプレイスが容易になるように最初から考慮する

・機能毎にモジュール性を高く保ち、再利用可能にする

・データはMockとして作り、APIができ次第、参照先を都度変更する

・特定の設計に依存しすぎない(MVPにしろ、MVVMにしろ)

Architecture

Page 9: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

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/

Page 10: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

画像参照元 ~[ Android ] - これからの「設計」の話をしよう~ https://tech.recruit-mp.co.jp/mobile/android-architecture/

Page 11: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›11

Merits

・どう見せるか、どう実現するか、どこにデータを保持するかというそれぞれの役割をレイヤーに分け、Daggerを用いて各レイヤーを疎結合な状態にし、レイヤー単位でのリプレイスが容易

・必要となるデータをJsonで定義し、MockRepositoryから直接取り込む。

→APIの開発を待たずに着手でき、APIができればRepositoryクラスを置き換えるだけで済む

→どういうレスポンスがほしいかをそのままサーバーエンジニアに依頼する

Page 12: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›12

Demerits

・新しい機能や画面を作る際に、どこまでがビジネスロジックか?を考える機会が多く、開発のスピード少し落ちる

・サーバーサイドの開発が先行するようになると、Mockの必要性がなくなってDIを用いた実装が少し冗長になっていた

Page 13: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

April~

・開発スタート

・マーケットの大きい高級ブランド特化のフリマアプリ

・じゃあ、他サービスとの差別化、優位性、仕様は、、、?

Page 14: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい
Page 15: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›15

Service Development

・課題に対する仮説はある

→ただ、その仮説が正しいかどうかは分からない

・別アプリに切り分ける必要あるの?

Page 16: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

分からないことはユーザーに聞こう!

Page 17: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›17

Service Development

・デザインプロトタイプではなく、実際に使って触れるアプリをつくる

・デザインも開発と並行して作っていく

・MVPができたら、ユーザーに使ってもらう

仮説に対するアプローチがワークするか、どこでユーザーは離脱するか、どういう伝え方をすると使ってもらえるのか、1つずつ潰していく

Page 18: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

User Interview Driven

つくる 使ってもらう

分析する新たな仮説をたてる

Page 19: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›19

Merits

・実際にユーザーの声を聴くことができるので、良い反応を得られるとモチベーションアップ

・リリース前から仮説の検証を繰り返し、確度の高いものが作れる

Page 20: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›20

Demerits

・2週間くらいかけて作ったものを、全て破棄するようなこともあるので、正直辛い

・「ものづくりの喜び」みたいなものに逃げがち

Page 21: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

June~

・初回リリース時のミニマムな仕様が決まる

・Google I/O明けだったので、「新しいことやっていき」が高まる

・1人開発、だんだん寂しくなってくる

Page 22: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›22

Introduce New Technology

・新しい技術に触れることって楽しい。プロダクトで使いたくなる

・学んだり検証したりする余裕はあまりない

・1人で進めるのではなく、誰かに相談したい

Page 23: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

1人でチャレンジせず、Androidチームを巻き込んでやっていきを高めよう

Page 24: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

Hard Things Android

・毎週木曜日にSouzoh Androidメンバーが集まる勉強会

・誰か話したいネタがあれば、それを持ち寄って話す

・ゆるくやる

・ネタがなくても集まって「最近どう?」的な話をする

Page 25: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい
Page 26: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

Daggerを雰囲気でつかっている問題の顕在化

Page 27: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›27

Merits

・新しい技術に対してゆるく始められる

・チームのやっていきが高まる = 他のプロダクトでも使われるようになる

→ 何かあればいつでも相談できる!

Page 28: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›28

Demerits

・プラグインが動かなかったり、慣れないことにどハマリしてしまいやすい

・近づくリリース日、取れないBeta版

Page 29: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

‹ ›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

Page 30: 20170825 souzoh android talk...2017/08/25  · ・1 Android, 1 iOS, 3 Server Side Engineer Team March~ ・チーム結成 ・でも、何やるか、どんなサービスをつくるかも決まってい

[email protected] +44 0 746 987 Launchit Followers Callus

Thank you for your attention.