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

新卒iOSエンジニアの歩み

Toshiyana
January 29, 2024

 新卒iOSエンジニアの歩み

DMM.swift #1

Toshiyana

January 29, 2024
Tweet

More Decks by Toshiyana

Other Decks in Technology

Transcript

  1. © DMM 自己紹介 柳元 俊輝 (Yanagimoto Toshiki) / Toshiyana  

    新卒1年目 iOSエンジニア ◆ 所属:プラットフォーム事業本部 DMM PointClub iOSチーム ◆ 趣味: テニス🎾、英語の勉強、一風堂 ◆ X: Toshiyana ◆ Vision Proが発売間近でわくわく。欲しい。。🤑 2
  2. © DMM 入社してからの流れ 4 内定者 アルバイト テキスト 現在 2023/8 2022/10

    配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
  3. © DMM 入社してからの流れ 6 内定者 アルバイト テキスト 現在 2023/8 2022/10

    配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
  4. © DMM キャッチアップ • 社内のiOSアプリ推奨アーキテクチャ ◦ いくつかの社内アプリの設計のベース ◦ サンプルアプリ・設計に関するドキュメントが存在 ◦

    このおかげで、設計の全体像を素早く把握 • ReactNativeのキャッチアップ ◦ 内定者アルバイトが決まってから、サンプルアプリを作って学習 8 Discordに皆が常駐し、疑問があれば気軽に質問可能
  5. © DMM リプレイス • ReactNativeからSwiftへの移行 ◦ サロンアプリは元々ReactNativeベース ◦ 移行にあたりReactNativeのコードも多少読める必要があった ◦

    事前のキャッチアップによりスムーズに開発に入れた 移行の背景など過去の記事はこちら https://logmi.jp/tech/articles/329092, https://logmi.jp/tech/articles/324358 10
  6. © DMM 新機能開発 • 予約投稿機能 ◦ SwiftUIによる画面構築方法を学ぶ ◦ SwiftUIの挙動がOSバージョン間で異なるのは辛い ◦

    ネイティブ側でバリデーション、エラーハンドリングが結構 必要だったので大変だった 11 アルバイトの身だが、新機能開発をがっつり携わることができ成長
  7. © DMM ライブラリ・ツールのバージョン更新の自動化 • Renovateを導入 ◦ Renovateとは: 最新バージョンのチェックを行い、自動で更新のPRを出してくれる 便利ツール ◦

    導入前:最新バージョンが出ているかのチェックを3ヶ月に一度行う ◦ 導入後:バージョン更新のチェックを週1で行うように自動化 12 https://github.com/renovatebot/renovate
  8. © DMM 開発以外 • 競合・類似アプリの調査・共有の時間を導入 ◦ 目的:他社アプリのUI・UXの研究、プロダクト改善 ◦ メンバーからプロダクトの改善案が出て、意識向上につながった •

    iOSメンバーで最新技術, 設計のキャッチアップ会の開催 ◦ ドキュメントや動画でチームでキャッチアップ ▪ Ex: Swift Concurrency, Redux for Swift ◦ 調べた内容をまとめてメンバーに共有 13
  9. © DMM 入社してからの流れ 15 内定者 アルバイト テキスト 現在 2023/8 2022/10

    配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
  10. © DMM iOS研修 • 開発演習ではSNS Likeなアプリ開発を行う ◦ iOS開発初学者の人も学べる内容 ◦ APIはBE演習で自分で作ったものを利用

    ◦ 個人的に追加で気になる技術・設計を試す ▪ Swift Concurrency ▪ WWDC23で発表されたばかりだったObservation ▪ SPMでマルチモジュール構成(Featureモジュールで分割) iOS開発経験者の自分にとって、話題の技術や設計を試せる時間になった 17
  11. © DMM 学び • 課題感からサービスを形にするまでの流れ
 • チーム開発を円滑に進めるための仕組みづくり
 ◦ ドキュメント
 ◦

    スクラムイベント
 ◦ ツール
 • 何がユーザにとって重要か + 工数を考慮した機能、技術選定
 20
  12. © DMM 入社してからの流れ 21 内定者 アルバイト テキスト 現在 2023/8 2022/10

    配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
  13. © DMM Swift Concurrency対応の方針決め • Swift6からデータ競合のチェックが厳密化 • データ競合を引き起こすコードはコンパイルエラーになる • 現状、Xcodeの設定でSwift6からSendable,

    Actorによるエラーになる箇所 の警告を出すことができる -> 警告が出ないようにする対応する必要あり 25 https://github.com/apple/swift-evolution/blob/main/proposals/0337-support-incrementa l-migration-to-concurrency-checking.md
  14. © DMM Swift Concurrency対応の方針決め チームで決まった方針 • Swift6が正式にアナウンスされてから本格的にモジュールごと対応 ◦ アナウンスからリリースまで半年ぐらいの期間がある(この間に対応) ◦

    恐らく、Swift6リリース後もしばらくはSwift5でコンパイル可能 • アナウンスまでの間、新規実装など導入可能な箇所からSwift Concurrencyを使う 26 皆さんはこの辺どうしていますか?
  15. © DMM 未使用コードの検出 • 使われていないコードが溜まると負債化 ◦ 可読性の低下 ◦ ビルド時間の増加 •

    Periphery: OSSの未使用コード検出ツール ◦ Targetに追加して検出できるようにした ◦ Xcode上でwarningを出してくれる 27 https://github.com/peripheryapp/periphery?tab=readme-ov-file
  16. © DMM Peripheryの設定 手順 • 1.「periphery scan --setup」コマンドを実行し、設定の質問に回答 • 2.

    回答に基づいて.periphery.ymlが自動生成 • 3. 「periphery scan」コマンドを実行して検出 28 (例)
  17. © DMM 事業部間の横断的な活動 • 隔週オンラインでiOSランチ会を開催 ◦ ランチを取りながら、iOSの気になる技術のキャッチアップ、困りごとの相談や知 見共有を行う会 ◦ 開催しようと思ったきっかけ

    ▪ 事業部間のiOSエンジニアで交流する機会がほぼなかった ▪ 他事業部の知見を知りたい ▪ iOSアプリを開発している事業部が複数あるのに勿体無い! 30
  18. © DMM まとめ これまでの学び 36 • 実践的なiOS開発手法 • チーム・プロダクトへの 改善意識

    • 定量的な分析、効 果検証 • バックエンド • やってみる精神 • チームが円滑に動けるた めの仕組みづくりの重要 性 • ユーザ指向でものづくりす る考え方 何事にも挑戦の気持ちで開発・開発外で幅広いことに取り組めた