Slide 1

Slide 1 text

iOSアプリ開発での課題と 解消に向けた取り組み 2022年9月27日 ニフティライフスタイル株式会社 システム開発部 – アプリ開発チーム 齋藤 圭祐 ニフティライフスタイル株式会社の

Slide 2

Slide 2 text

自己紹介 ニフティライフスタイル株式会社 システム開発部 – アプリ開発チーム 齋藤 圭祐 ▶ 新卒4年目 🌸 ▶ 主にニフティ不動産のiOSアプリの開発を担当 📱 ▶ 2020年2月〜ほとんど在宅で業務中 💻

Slide 3

Slide 3 text

ニフティ不動産 賃貸物件検索アプリについて 賃貸物件検索アプリ ● 2013年にリリースされた歴史あるアプリ ● 13つの不動産検索サービスを横断して「賃貸物件」を検索できるアプリ

Slide 4

Slide 4 text

開発体制について アプリ開発チーム 👤👤👤👤 サーバーサイド 開発チーム 👤👤👤👤 不動産企画チーム 👤👤👤👤 仕様提案&調整 プロダクトレビュー APIなどサーバー周 りの作成依頼・仕様 調整 ▶ 企画・開発一体となった開発体制 ■ 開発メンバーを含めた施策検討や仕様の調整も ▶ APIなどのサーバー周りは「サーバーサイド開発チーム」と仕様の調整をしながら進め ている ■ 軽微なものであればアプリ開発チームで修正を行うことも!

Slide 5

Slide 5 text

アプリ開発での 課題

Slide 6

Slide 6 text

① 在宅勤務下でのプロダクトレビューがつらい

Slide 7

Slide 7 text

在宅勤務下でのプロダクトレビューがつらい 何がつらいのか? ▶ 「実装 → 実機ビルド → 端末を渡して確認」のフローが出来なくなった ■ 実機で確認してもらうには30分かけてTestFlightに上げるしかなくなった → スクショや動画での確認が多くなってしまった → 色味やパーツのサイズなど実機で操作しないと分かりづらい点の調整がしづらい状態だった → Xcode上でバージョン番号を変えて、ここを押して…と手順が複雑だった ▶ PRマージ後に実装上の不具合に気づく事があった ■ 実装者の端末でしか確認していなかったため、実際に触ってみると不具合が出たりと違和感の ある動きをしている事があった

Slide 8

Slide 8 text

Googleの提供するサービスで、TestFlightを使わずに「開発バージョン」を気軽に特定のメンバーに配 信することが出来る 無料 のサービス Firebase App Distribution #とは 在宅勤務下でのプロダクトレビューがつらい Firebase App Distribution を導入 🎉

Slide 9

Slide 9 text

在宅勤務下でのプロダクトレビューがつらい - Before -
 😣 「実装 → 実機ビルド → 端末を渡して確認」のフローが出来なくなった 😣 「PRマージ後」に実装上の不具合に気づく事があった 😆 検証版の配信が簡単に出来るようになった! → 配信までにかかる時間が30分から10分に短縮された → 気軽に配信できるのでリモートでも企画側への動作確認依頼がスムーズになった 😆 コードレビュー時に実機確認が出来るようになった! → 開発のレビュー時に「実際の動きに不具合/違和感がないか」を確認する体制が出来た 2020年 2月 - After -
 レイアウト調整の例

Slide 10

Slide 10 text

② CI/CDの存在しない開発体制

Slide 11

Slide 11 text

CI/CDの存在しない開発体制 - 課題 何が課題か ▶ ユニットテストの実行を強制する仕組みがなかった ■ PRをマージした後にテストが通らなくなるといった事が発生していた ▶ テストバージョンやストアへのアップロード作業が開発者のローカル環境に依存している ■ アップロード作業中は「コードの書き換えが出来ない」「マシンが重くなりビデオ会議もまま ならない」など時間やマシンリソースが奪われていた ■ 稀にライブラリやSDKのバージョンの差異が発生してしまっていた

Slide 12

Slide 12 text

CI/CDの存在しない開発体制 Bitrise を導入 🎉 iOSやAndroidなど主にモバイルアプリ開発に特化したクラウド型CI/CDツール。 個人開発規模であれば無料〜使用することができる。 Bitrise #とは

Slide 13

Slide 13 text

CI/CDの存在しない開発体制 - 導入までの流れ 導入検討 調査比較 ルール策定 導入 ・機能 ・セキュリティ面 ・費用面 ・実行回数/時間制限 …などを複数サービスで比較 ・導入すると何が出来るのか ・誰がどう嬉しいのか …など「そもそも導入するべきか」の検討 ・アカウント管理方法 ・コードや各種証明書の扱い ・セキュリティリスクの洗い出し …などのルールを策定し情シスに提案 一通りまとめた情報を元に 導入を決定 🎉

Slide 14

Slide 14 text

CI/CDの存在しない開発体制 - Before -
 😣 ユニットテストの実行を強制する仕組みがない 😣 テストバージョンやストアへのアップロード作業が開発者のローカル環境に依存していた 😆 ユニットテストの実行の自動化 → テストコードが通るまでPRのマージをブロック出来るようになった 😆 開発者のローカル環境に依存せず各種ビルドやアップロード作業ができるようになった! → ローカル環境で1コマンド叩くだけで後の作業はBitriseに任せられるようになった → 必ずBitriseの環境を用いてビルドする事になったためバージョン差異が発生しなくなった 2020年 2月 - After -


Slide 15

Slide 15 text

CI/CDの存在しない開発体制 - 導入後 ▶ CI:PR関連 ■ PR単位での ユニットテストの実行 ■ PR単位での Lint(SwiftLint)の実行 & PRへの反映(インラインコメント) ▶ CD:各種ビルドの配信 ■ テストバージョン配信 (Firebase App Distribution) 〜 通知 の自動化 ■ リリースバージョン配信 (Testflight) 〜 通知 の自動化 ■ ストア情報(メタ情報)変更の自動化 ■ mainブランチマージ後のAppDistribution公開の自動化 何ができるようになったか ※ 2022年9月 時点

Slide 16

Slide 16 text

でも… なかなか改善の為の時間取れないですよね

Slide 17

Slide 17 text

改善活動を行うための時間が取れない なぜ時間が取れないのか ▶ 「改善活動をこの日にやろう!」と事前にスケジュールを決めてみたら… ■ 施策開発のスケジュールの関係で潰れてしまうことが多かった ▶ 「月1で改善活動をするぞ!」と決めてみたら… ■ 中途半端にしか改善ができず、次の改善活動は1ヶ月後で「記憶を思い出すところから…」と なっていた

Slide 18

Slide 18 text

改善活動を行うための時間が取れない どうしたか ▶ 「毎日30分ずつ」に変えてみた ■ Googleカレンダーに定期予定で入れておく(周りへのアピール) ■ 30分ずつであれば施策開発の時間への影響を少なくする事ができた ■ 「続きは明日」という心理的安心感を得られた ▶ 「改善活動しなきゃ!」と思えるような環境にした ■ 改善タイム開始時にSlackで宣言するようにし、 お互いの背中を押すようにした

Slide 19

Slide 19 text

改善活動を行うための時間が取れない App Distribution導入🎉 ※ ローカル環境15分 2020年 現在 2021年 2022年 CI/CD導入検討開始 Bitrise導入 🎉 CI)UT自動実行導入 CD)各種ビルドのアップロード自動化導入 iOS他アプリ&Android への展開を開始 CI)既存全体への SwiftLint導入開始 CI)SwiftLint導入 ニフティ不動産 賃貸物件検索 iOSアプリの改善推移

Slide 20

Slide 20 text

最後に ❖ 改善は「スモールスタート」で着実に!確実に! ➤ 「大きなゴール」を設定してしまうと効果が出るまでに時間がかかってしまう ➤ Objective-C脱却などは地道にやっていくしかない ❖ 1アプリへ導入する事で横展開も行いやすいので始めてみることが大事! ➤ 弊社では iOS/Android で各5アプリ以上提供しているため、1アプリで導入した物を横展開する ことが出来る ❖ 自動化できる作業は自動化した方が効率も安全性も上がる! ➤ 1人1日5分の短縮でも、1ヶ月(20営業日)で100分の短縮になる ➤ 人は失敗する生き物なので自動化出来るところはシステムに頼る

Slide 21

Slide 21 text

No content