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
ニフティライフスタイル株式会社のiOSアプリ開発での課題と解消に向けた取り組み
Search
ニフティ株式会社
PRO
September 26, 2022
Video
Resources
Programming
0
99
ニフティライフスタイル株式会社のiOSアプリ開発での課題と解消に向けた取り組み
ニフティ株式会社
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 ニフティ株式会社
チーム力を高めるスクラム実践法:カンバン公開と課題攻略について - ニフティのスクラムトーク Vol. 2 - NIFTY Tech Talk #18
niftycorp
PRO
1
110
スクラムチームと認知負荷 - ニフティのスクラムトーク Vol2. / NIFTY Tech Talk #18
niftycorp
PRO
1
120
Visual Studio Code Dev Containers ススメ Python編 - NIFTY Tech Talk #17
niftycorp
PRO
1
74
dotfilesを作ろう - NIFTY Tech Talk #17
niftycorp
PRO
1
78
フロントエンドを始める前に どうしていっぱいツールがあるの? - NIFTY Tech Talk #17
niftycorp
PRO
1
99
サービスシステム監視 (シフト例)
niftycorp
PRO
0
50
スクラムマスターの技を磨く! ニフティのスクラムトーク vol. 1 - NIFTY Tech Talk #16
niftycorp
PRO
1
120
AWS基礎 / 2023 ニフティ新人研修
niftycorp
PRO
0
250
データベース / 2023 ニフティ新人研修
niftycorp
PRO
0
140
Other Decks in Programming
See All in Programming
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
620
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
450
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
240
品質とスピードを両立: TypeScriptの柔軟な型システムをバックエンドで活用する
kosui
8
2.2k
デザインシステムで Tailwind CSSとCSS in JSに分散投資をしたら良かった話
fsubal
18
4.8k
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
240
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
180
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
350
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
22
15k
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
9
3.2k
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
390
Featured
See All Featured
Done Done
chrislema
178
15k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
20
1.6k
How GitHub (no longer) Works
holman
302
140k
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
The Invisible Customer
myddelton
114
12k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.4k
Atom: Resistance is Futile
akmur
258
25k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Transcript
iOSアプリ開発での課題と 解消に向けた取り組み 2022年9月27日 ニフティライフスタイル株式会社 システム開発部 – アプリ開発チーム 齋藤 圭祐 ニフティライフスタイル株式会社の
自己紹介 ニフティライフスタイル株式会社 システム開発部 – アプリ開発チーム 齋藤 圭祐 ▶ 新卒4年目 🌸
▶ 主にニフティ不動産のiOSアプリの開発を担当 📱 ▶ 2020年2月〜ほとんど在宅で業務中 💻
ニフティ不動産 賃貸物件検索アプリについて 賃貸物件検索アプリ • 2013年にリリースされた歴史あるアプリ • 13つの不動産検索サービスを横断して「賃貸物件」を検索できるアプリ
開発体制について アプリ開発チーム 👤👤👤👤 サーバーサイド 開発チーム 👤👤👤👤 不動産企画チーム 👤👤👤👤 仕様提案&調整 プロダクトレビュー
APIなどサーバー周 りの作成依頼・仕様 調整 ▶ 企画・開発一体となった開発体制 ▪ 開発メンバーを含めた施策検討や仕様の調整も ▶ APIなどのサーバー周りは「サーバーサイド開発チーム」と仕様の調整をしながら進め ている ▪ 軽微なものであればアプリ開発チームで修正を行うことも!
アプリ開発での 課題
① 在宅勤務下でのプロダクトレビューがつらい
在宅勤務下でのプロダクトレビューがつらい 何がつらいのか? ▶ 「実装 → 実機ビルド → 端末を渡して確認」のフローが出来なくなった ▪ 実機で確認してもらうには30分かけてTestFlightに上げるしかなくなった
→ スクショや動画での確認が多くなってしまった → 色味やパーツのサイズなど実機で操作しないと分かりづらい点の調整がしづらい状態だった → Xcode上でバージョン番号を変えて、ここを押して…と手順が複雑だった ▶ PRマージ後に実装上の不具合に気づく事があった ▪ 実装者の端末でしか確認していなかったため、実際に触ってみると不具合が出たりと違和感の ある動きをしている事があった
Googleの提供するサービスで、TestFlightを使わずに「開発バージョン」を気軽に特定のメンバーに配 信することが出来る 無料 のサービス Firebase App Distribution #とは 在宅勤務下でのプロダクトレビューがつらい Firebase
App Distribution を導入 🎉
在宅勤務下でのプロダクトレビューがつらい - Before - 😣 「実装 → 実機ビルド → 端末を渡して確認」のフローが出来なくなった
😣 「PRマージ後」に実装上の不具合に気づく事があった 😆 検証版の配信が簡単に出来るようになった! → 配信までにかかる時間が30分から10分に短縮された → 気軽に配信できるのでリモートでも企画側への動作確認依頼がスムーズになった 😆 コードレビュー時に実機確認が出来るようになった! → 開発のレビュー時に「実際の動きに不具合/違和感がないか」を確認する体制が出来た 2020年 2月 - After - レイアウト調整の例
② CI/CDの存在しない開発体制
CI/CDの存在しない開発体制 - 課題 何が課題か ▶ ユニットテストの実行を強制する仕組みがなかった ▪ PRをマージした後にテストが通らなくなるといった事が発生していた ▶ テストバージョンやストアへのアップロード作業が開発者のローカル環境に依存している
▪ アップロード作業中は「コードの書き換えが出来ない」「マシンが重くなりビデオ会議もまま ならない」など時間やマシンリソースが奪われていた ▪ 稀にライブラリやSDKのバージョンの差異が発生してしまっていた
CI/CDの存在しない開発体制 Bitrise を導入 🎉 iOSやAndroidなど主にモバイルアプリ開発に特化したクラウド型CI/CDツール。 個人開発規模であれば無料〜使用することができる。 Bitrise #とは
CI/CDの存在しない開発体制 - 導入までの流れ 導入検討 調査比較 ルール策定 導入 ・機能 ・セキュリティ面 ・費用面
・実行回数/時間制限 …などを複数サービスで比較 ・導入すると何が出来るのか ・誰がどう嬉しいのか …など「そもそも導入するべきか」の検討 ・アカウント管理方法 ・コードや各種証明書の扱い ・セキュリティリスクの洗い出し …などのルールを策定し情シスに提案 一通りまとめた情報を元に 導入を決定 🎉
CI/CDの存在しない開発体制 - Before - 😣 ユニットテストの実行を強制する仕組みがない 😣 テストバージョンやストアへのアップロード作業が開発者のローカル環境に依存していた 😆 ユニットテストの実行の自動化
→ テストコードが通るまでPRのマージをブロック出来るようになった 😆 開発者のローカル環境に依存せず各種ビルドやアップロード作業ができるようになった! → ローカル環境で1コマンド叩くだけで後の作業はBitriseに任せられるようになった → 必ずBitriseの環境を用いてビルドする事になったためバージョン差異が発生しなくなった 2020年 2月 - After -
CI/CDの存在しない開発体制 - 導入後 ▶ CI:PR関連 ▪ PR単位での ユニットテストの実行 ▪ PR単位での
Lint(SwiftLint)の実行 & PRへの反映(インラインコメント) ▶ CD:各種ビルドの配信 ▪ テストバージョン配信 (Firebase App Distribution) 〜 通知 の自動化 ▪ リリースバージョン配信 (Testflight) 〜 通知 の自動化 ▪ ストア情報(メタ情報)変更の自動化 ▪ mainブランチマージ後のAppDistribution公開の自動化 何ができるようになったか ※ 2022年9月 時点
でも… なかなか改善の為の時間取れないですよね
改善活動を行うための時間が取れない なぜ時間が取れないのか ▶ 「改善活動をこの日にやろう!」と事前にスケジュールを決めてみたら… ▪ 施策開発のスケジュールの関係で潰れてしまうことが多かった ▶ 「月1で改善活動をするぞ!」と決めてみたら… ▪ 中途半端にしか改善ができず、次の改善活動は1ヶ月後で「記憶を思い出すところから…」と
なっていた
改善活動を行うための時間が取れない どうしたか ▶ 「毎日30分ずつ」に変えてみた ▪ Googleカレンダーに定期予定で入れておく(周りへのアピール) ▪ 30分ずつであれば施策開発の時間への影響を少なくする事ができた ▪ 「続きは明日」という心理的安心感を得られた
▶ 「改善活動しなきゃ!」と思えるような環境にした ▪ 改善タイム開始時にSlackで宣言するようにし、 お互いの背中を押すようにした
改善活動を行うための時間が取れない App Distribution導入🎉 ※ ローカル環境15分 2020年 現在 2021年 2022年 CI/CD導入検討開始
Bitrise導入 🎉 CI)UT自動実行導入 CD)各種ビルドのアップロード自動化導入 iOS他アプリ&Android への展開を開始 CI)既存全体への SwiftLint導入開始 CI)SwiftLint導入 ニフティ不動産 賃貸物件検索 iOSアプリの改善推移
最後に ❖ 改善は「スモールスタート」で着実に!確実に! ➤ 「大きなゴール」を設定してしまうと効果が出るまでに時間がかかってしまう ➤ Objective-C脱却などは地道にやっていくしかない ❖ 1アプリへ導入する事で横展開も行いやすいので始めてみることが大事! ➤
弊社では iOS/Android で各5アプリ以上提供しているため、1アプリで導入した物を横展開する ことが出来る ❖ 自動化できる作業は自動化した方が効率も安全性も上がる! ➤ 1人1日5分の短縮でも、1ヶ月(20営業日)で100分の短縮になる ➤ 人は失敗する生き物なので自動化出来るところはシステムに頼る
None