Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マイニフティアプリ開発チームにおける 開発スタイルの紹介
Search
ニフティ株式会社
PRO
September 26, 2022
Video
Resources
Programming
0
290
マイニフティアプリ開発チームにおける 開発スタイルの紹介
ニフティ株式会社
PRO
September 26, 2022
Tweet
Share
Video
Resources
NIFTY Tech Talk #5 iOS/Androidアプリ開発LT
https://nifty.connpass.com/event/259697/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
会員管理基盤をオンプレからクラウド移行した時に起きた障害たち - asken tech talk vol.13
niftycorp
PRO
0
2.5k
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
900
2025-07-08 InnerSource Commons Japan Meetup #14 【OST】チームの壁、ぶっ壊そ!壁の乗り越え方、一緒に考えよう!
niftycorp
PRO
0
92
2025-04-25 NIFTY's InnerSource Activites
niftycorp
PRO
0
320
外コミュニティ活動や登壇活動が技術 広報として大事だよ、と改めて周囲に伝 えられた件 - EM Oasis 特別会
niftycorp
PRO
0
190
Dify触ってみた。
niftycorp
PRO
1
290
Amazon Bedrockを使用して、 運用対応を楽にしてみた
niftycorp
PRO
1
310
自社製CMSからの脱却:10件のWebサイト再構築に学ぶ運用重視の技術選定 - NIFTY Tech Day 2025
niftycorp
PRO
0
140
エンジニアの殻を破る:インナーソースと社外活動がもたらした成長 - NIFTY Tech Day 2025
niftycorp
PRO
0
110
Other Decks in Programming
See All in Programming
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
610
Range on Rails ―「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ
rizap_tech
0
6.7k
Six and a half ridiculous things to do with Quarkus
hollycummins
0
210
contribution to astral-sh/uv
shunsock
0
440
CSC509 Lecture 05
javiergs
PRO
0
310
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
290
Le côté obscur des IA génératives
pascallemerrer
0
150
Devoxx BE - Local Development in the AI Era
kdubois
0
130
CSC305 Lecture 09
javiergs
PRO
0
300
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
230
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
870
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
33k
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Bash Introduction
62gerente
615
210k
Practical Orchestrator
shlominoach
190
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Thoughts on Productivity
jonyablonski
70
4.9k
GitHub's CSS Performance
jonrohan
1032
470k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Code Reviewing Like a Champion
maltzj
526
40k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Transcript
Copyright © NIFTY Corporation All Rights Reserved. マイ ニフティ アプリ開発チームにおける
開発スタイルの紹介 川上 倫人 会員システムグループ 第二開発チーム
Copyright © NIFTY Corporation All Rights Reserved. 2 自己紹介 ニフティ株式会社
システム統括部 会員システムグループ 第二開発チーム 川上 倫人(かわかみ みちと) 新卒4年目 アプリ「マイ ニフティ」の開発・運用を担当 アプリ開発歴は8ヶ月
Copyright © NIFTY Corporation All Rights Reserved. 3 マイ ニフティ
@nifty 会員向けアプリ iOS版 :2021年12月リリース Android版 :2022年3月リリース https://csoption.nifty.com/myapp/
Copyright © NIFTY Corporation All Rights Reserved. 4 マイ ニフティの全体概要
チーム人数3名 + 技術アドバイザー1名 iOS/Android/APIを担当分けなく開発・運用 スクラムによる進行
Copyright © NIFTY Corporation All Rights Reserved. 5 マイ ニフティチームの抱える課題
インフラ / API / iOS / Androidと必要なスキルが幅広く 実装方針が人により異なるときがあった 新規プロジェクトかつ人員が流動的に入れ替わったため、 アプリ開発経験がないエンジニアが多くいた 今後も多くのニフティサービスと連携する可能性があり柔軟性が大事になる メンバーが少ないため、品質のチェック方法に工夫が必要になる 柔軟な共通アーキテクチャと技術共有できる土壌が必要
Copyright © NIFTY Corporation All Rights Reserved. 共通化できる拡張性の高い アーキテクチャってなんだろう...? 6
Copyright © NIFTY Corporation All Rights Reserved. 7 アーキテクチャに共通する概念 API
/ iOS / Android共に の考えを導入 Clean Architecture 各レイヤーにより関心の分離する DIP(Dependency Inversion Principle)により依存の方向を一方向にする フレームワーク/UI/データベース等を変更・交換しやすくする Clean Architecture DB UI Devices Controllers Entity Use Cases Gateways DataSouceInterface DataSouceImplement Repository(呼び出し側)
Copyright © NIFTY Corporation All Rights Reserved. 8 アプリアーキテクチャ Repositoryパターン
Repository層にデータをキャッシュしてHTTP通信を減らす 永続化したいデータはLocalDataSource経由でローカルDBに保存する View側からはローカルかリモートのどちらにデータがあるかを意識しないで良くなる View ViewModel Repository LocalDataSouce RemoteDataSouce ローカルDB HTTP Client Model iOS / Android共に を採用 MVVM + Repositoryパターン
Copyright © NIFTY Corporation All Rights Reserved. 9 アプリアーキテクチャ データフローの統一
RepositoryにあるデータをSingle Source of Truthとする Repositoryにあるデータの変更を検知してデータを自動的にViewに反映する Usecaseにアプリケーションロジックを記載する イベント・データの流れを にする 一方向 View ViewModel Usecase Repository DataSource Model イベント(タップ・pull等) データの変更
Copyright © NIFTY Corporation All Rights Reserved. 10 アーキテクチャの利点と課題 利点
課題 概念を理解するとAPI/iOS/Androidの 区別なく実装方針が共有しやすい パッケージが綺麗に分割され、 レイヤーごとの役割が明確で混乱しない 誰が書いても似たようなモジュール名と依 存関係になりやすい Clean Architecture自体の 学習コストが高め 実装が冗長になることがある (UsecaseがRepositoryをつなぐだけ等) 油断するとViewModelまたはUsecaseが 肥大化してしまう
Copyright © NIFTY Corporation All Rights Reserved. アーキテクチャはできたけど どのように継承していこうか...? 11
Copyright © NIFTY Corporation All Rights Reserved. 12 オンボーディングの整備 基本的にはオンボーディングや仕様書を充実させていく
実際のコードの設計意図やアプリ初学者の疑問等を反映しきれない 言語、アーキテクチャ設計の参考書籍・サイト swaggerをはじめとした各APIの仕様や設計ドキュメント 開発環境の前準備
Copyright © NIFTY Corporation All Rights Reserved. 13 属人化をなくしていくために 週一でコード解読会を実施
資料を全て残すことでオンボーディング化 改めて実装内容の意図や改善案を 洗い出せる API/アプリ初学者視点のQAも残る
Copyright © NIFTY Corporation All Rights Reserved. 14 技術を継承していく タスクに応じてモブプロを実施
タスク難易度や新規メンバーの加入状況によってモブプロを実施 (全タスクではない) 実装方針が統一される 異なるスキルセットを持ったメンバー間の技術共有が可能 気軽に質問がしやすい
Copyright © NIFTY Corporation All Rights Reserved. 品質はどう保っていこう...? 15
Copyright © NIFTY Corporation All Rights Reserved. 16 品質を保つために マイ
ニフティチームの課題を考える 少人数の開発のため、端末ごとの実機テストや利用感を多く試すのに時間がかかる iOS/Android/APIで多くのログやメトリクスを集めているが 必ずしも確認できていない SLO低下や障害のアラートはあるが、アラート起こる前の潜在的な問題に気付けない
Copyright © NIFTY Corporation All Rights Reserved. 17 テストパターンと使用感のフィードバックを増やす リリース前に社内全体で内部テストの実施
社内全体で希望者を募り、TestFlightやGoogle Playの内部テスター機能で配信 機種固有の問題を洗い出すために実施(特にAndroid) フィードバック例 画面サイズが極小の端末でスクロールができなくてログインできない Xiaomi端末でスプラッシュ表示がおかしい アプリ背景色と被っていて入力欄のカーソルが見えづらい
Copyright © NIFTY Corporation All Rights Reserved. 18 品質を確認する 月一で
API / アプリのパフォーマンス会を実施 メトリクスやダッシュボードを見る機会を創出 エラー率やレイテンシー、画面エンゲージメント等で気になる点を確認 UI / UXの改善点やバグ、潜在的な問題点、運用改善(Toil削減等)を検討 Firebase Performance Monitoring Cloud Watch (SLOダッシュボード/各種メトリクス)
Copyright © NIFTY Corporation All Rights Reserved. 19 まとめ マイ
ニフティチームの取り組み API/iOS/AndroidにClean Architectureの考えを反映 意図の共有や属人化解消、技術継承のため、コード輪読とモブプロを実施 定期的な品質チェックに社内テストやパフォーマンス会を実施 それぞれのコードの理解しやすさを共通化 メンバー間で実装方針のブレをなくす
Copyright © NIFTY Corporation All Rights Reserved.