Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tech Strategy for Boosting App Growth(JP)

Tech Strategy for Boosting App Growth(JP)

アプリ開発に携わるエンジニアは、多かれ少なかれ担当アプリの成長のために仕事をしています。エンジニアリングやその他の方法をもちいてアプリを成長させたり、その成長をより加速させることは、アプリ開発を担当するエンジニアの大切な仕事です。

4−5人以上で開発するような大きいアプリケーション、かつ歴史が長く数年前からのコードも共存するようなアプリのメンテナンスにおいて、開発者の人数が増えた場合でも開発スピードを落とさず、さらにより多くのユーザーにアプリを利用してもらうための機能追加が容易にできるような内部構造にしておくことは、アプリを成長させるためにはもはや必要不可欠であるといえます。

このプレゼンテーションでは、アプリを成長させるために業務の中で行ったAndroid技術の選定やAndroidチーム内での取り組み(ペアプロ・モブプロ・お集まり会・もくもく木曜日)を含め、クオーターや半期目線で立てた技術戦略(テスタブル化・テストカバレッジ・Kotlin化率)について紹介し、どのようにアプリの成長や、開発スピードの向上につながったか(またはつながらなかったか)を成功事例・失敗事例を踏まえて振り返りました。振り返ったのち、今までやってきたことを踏まえ、今後アプリをさらに成長させるためにこれから行いたいことについて、紹介をしました。

-

* 「エンジニアがオーナーシップを持ってプロダクト改善に向き合う!マジマッチチャレンジという取り組みについて」
https://developers.cyberagent.co.jp/blog/archives/18812/

* 【タップル誕生】会員数が400万人を突破! マッチング数は国内最大規模の延べ1億2,000万組に
https://couplingunion.com/news/1033/

*
マッチングエージェント、オンライン恋活・婚活マッチングサービスの国内市場調査を実施 ~オンライン恋活・婚活マッチングサービス市場は2017年に208億円 アプリサービスが成長をけん引、2022年には577億円に拡大~
https://www.cyberagent.co.jp/news/detail/id=13691

* マッチングアプリの利用意向度は1年で約30ポイント増加
https://www.cyberagent.co.jp/news/detail/id=22647

* 趣味でつながる恋活サービス「タップル誕生」 恋活・婚活マッチングアプリの中で国内1位を獲得
https://couplingunion.com/news/1162/

* 株式会社マッチングエージェント | MatchingAgent, Inc.
https://www.matchingagent.co.jp/

Shohei Kawano

February 07, 2019
Tweet

More Decks by Shohei Kawano

Other Decks in Technology

Transcript

  1. #

  2. .77. Repository View Remote Data Source Local Data Source ViewModel

    ٕज़ઓུʹ͍ͭͯd"OESPJEٕज़ઓུ'MVYԽ
  3. .77. Repository View Remote Data Source Local Data Source ViewModel

    w6*͔ΒϩδοΫΛҠߦͰ͖Δ w""$7JFX.PEFMˠը໘ճస࣌ͷσʔλ อ͕࣋༰қʹ wॻ͖ํΛύλʔϯԽ͠΍͍͢ ☀ ٕज़ઓུʹ͍ͭͯd"OESPJEٕज़ઓུ'MVYԽ
  4. .77. Repository View Remote Data Source Local Data Source ViewModel

    w7JFX.PEFMΫϥε͕ංେԽ͕ͪ͠ wը໘ؒͷσʔλͷड͚౉͠ɾ఻ൖΛ͍ͨ͠ w%3:ͳίʔυΛ૿΍͍ͨ͠ ☁ ٕज़ઓུʹ͍ͭͯd"OESPJEٕज़ઓུ'MVYԽ
  5. Action View Dispatcher Store Action Creator 'MVY wσʔλͷྲྀΕΛ୯Ұํ޲ʹͰ͖Δ wςετ͕ॻ͖΍͍͢ wσόοά͕͠΍͍͢

    w࠶ར༻ੑ͕ߴ͍ ☀ ٕज़ઓུʹ͍ͭͯd"OESPJEٕज़ઓུ'MVYԽ
  6. ٕज़ઓུʹ͍ͭͯd"OESPJEٕज़ઓུςελϒϧԽ class SomeClass( ) { fun doSomeAction() { RestApi.getInstance() .getSomethingFromNetwork()

    .subscribeBy( onComplete = { thenDoThisAction() }, onError = { onError() } ) } } ΠϯελϯεΛϞοΫ͢Δ͜ͱ͕Ͱ͖ͳ͍☁
  7. class SomeClass( private val api: RestApi ) { fun doSomeAction()

    { api .getSomethingFromNetwork() .subscribeBy( onComplete = { thenDoThisAction() }, onError = { onError() } ) } } ٕज़ઓུʹ͍ͭͯd"OESPJEٕज़ઓུςελϒϧԽ
  8. ϚϧνϞδϡʔϧԽ feature:contact app feature:dating feature:setting … … wࠩ෼Ϗϧυ͕ૣ͘ͳΔ winternal modifierʹΑΔείʔϓͷ࠷

    খԽ wػೳ։ൃΛΑΓ҆શʹ ☀ ٕज़ઓུʹ͍ͭͯdݱࡏ"OESPJEٕज़ઓུϚϧνϞδϡʔϧԽ
  9. ϚϧνϞδϡʔϧԽ feature:contact app feature:dating feature:setting … … wࠩ෼Ϗϧυ͕ૣ͘ͳΔ winternal modifierʹΑΔείʔϓͷ࠷

    খԽ wػೳ։ൃΛΑΓ҆શʹ ☀ ٕज़ઓུʹ͍ͭͯdݱࡏ"OESPJEٕज़ઓུϚϧνϞδϡʔϧԽ
  10. app