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

ニフティライフスタイル株式会社のiOSアプリ開発での課題と解消に向けた取り組み

 ニフティライフスタイル株式会社のiOSアプリ開発での課題と解消に向けた取り組み

ニフティ株式会社

September 26, 2022
Tweet

Video


Resources

NIFTY Tech Talk #5 iOS/Androidアプリ開発LT

https://nifty.connpass.com/event/259697/

More Decks by ニフティ株式会社

Other Decks in Programming

Transcript

  1. 自己紹介 ニフティライフスタイル株式会社 システム開発部 – アプリ開発チーム 齋藤 圭祐 ▶ 新卒4年目 🌸

    ▶ 主にニフティ不動産のiOSアプリの開発を担当 📱 ▶ 2020年2月〜ほとんど在宅で業務中 💻
  2. 開発体制について アプリ開発チーム 👤👤👤👤 サーバーサイド 開発チーム 👤👤👤👤 不動産企画チーム 👤👤👤👤 仕様提案&調整 プロダクトレビュー

    APIなどサーバー周 りの作成依頼・仕様 調整 ▶ 企画・開発一体となった開発体制 ▪ 開発メンバーを含めた施策検討や仕様の調整も ▶ APIなどのサーバー周りは「サーバーサイド開発チーム」と仕様の調整をしながら進め ている ▪ 軽微なものであればアプリ開発チームで修正を行うことも!
  3. 在宅勤務下でのプロダクトレビューがつらい 何がつらいのか? ▶ 「実装 → 実機ビルド → 端末を渡して確認」のフローが出来なくなった ▪ 実機で確認してもらうには30分かけてTestFlightに上げるしかなくなった

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

    😣 「PRマージ後」に実装上の不具合に気づく事があった 😆 検証版の配信が簡単に出来るようになった! → 配信までにかかる時間が30分から10分に短縮された → 気軽に配信できるのでリモートでも企画側への動作確認依頼がスムーズになった 😆 コードレビュー時に実機確認が出来るようになった! → 開発のレビュー時に「実際の動きに不具合/違和感がないか」を確認する体制が出来た 2020年 2月 - After -
 レイアウト調整の例
  5. CI/CDの存在しない開発体制 - 課題 何が課題か ▶ ユニットテストの実行を強制する仕組みがなかった ▪ PRをマージした後にテストが通らなくなるといった事が発生していた ▶ テストバージョンやストアへのアップロード作業が開発者のローカル環境に依存している

    ▪ アップロード作業中は「コードの書き換えが出来ない」「マシンが重くなりビデオ会議もまま ならない」など時間やマシンリソースが奪われていた ▪ 稀にライブラリやSDKのバージョンの差異が発生してしまっていた
  6. CI/CDの存在しない開発体制 - 導入までの流れ 導入検討 調査比較 ルール策定 導入 ・機能 ・セキュリティ面 ・費用面

    ・実行回数/時間制限 …などを複数サービスで比較 ・導入すると何が出来るのか ・誰がどう嬉しいのか …など「そもそも導入するべきか」の検討 ・アカウント管理方法 ・コードや各種証明書の扱い ・セキュリティリスクの洗い出し …などのルールを策定し情シスに提案 一通りまとめた情報を元に 導入を決定 🎉
  7. CI/CDの存在しない開発体制 - Before -
 😣 ユニットテストの実行を強制する仕組みがない 😣 テストバージョンやストアへのアップロード作業が開発者のローカル環境に依存していた 😆 ユニットテストの実行の自動化

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

  8. CI/CDの存在しない開発体制 - 導入後 ▶ CI:PR関連 ▪ PR単位での ユニットテストの実行 ▪ PR単位での

    Lint(SwiftLint)の実行 & PRへの反映(インラインコメント) ▶ CD:各種ビルドの配信 ▪ テストバージョン配信 (Firebase App Distribution) 〜 通知 の自動化 ▪ リリースバージョン配信 (Testflight) 〜 通知 の自動化 ▪ ストア情報(メタ情報)変更の自動化 ▪ mainブランチマージ後のAppDistribution公開の自動化 何ができるようになったか ※ 2022年9月 時点
  9. 改善活動を行うための時間が取れない App Distribution導入🎉 ※ ローカル環境15分 2020年 現在 2021年 2022年 CI/CD導入検討開始

    Bitrise導入 🎉 CI)UT自動実行導入 CD)各種ビルドのアップロード自動化導入 iOS他アプリ&Android への展開を開始 CI)既存全体への SwiftLint導入開始 CI)SwiftLint導入 ニフティ不動産 賃貸物件検索 iOSアプリの改善推移
  10. 最後に ❖ 改善は「スモールスタート」で着実に!確実に! ➤ 「大きなゴール」を設定してしまうと効果が出るまでに時間がかかってしまう ➤ Objective-C脱却などは地道にやっていくしかない ❖ 1アプリへ導入する事で横展開も行いやすいので始めてみることが大事! ➤

    弊社では iOS/Android で各5アプリ以上提供しているため、1アプリで導入した物を横展開する ことが出来る ❖ 自動化できる作業は自動化した方が効率も安全性も上がる! ➤ 1人1日5分の短縮でも、1ヶ月(20営業日)で100分の短縮になる ➤ 人は失敗する生き物なので自動化出来るところはシステムに頼る