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
Toshiyana
January 29, 2024
Technology
1
550
新卒iOSエンジニアの歩み
DMM.swift #1
Toshiyana
January 29, 2024
Tweet
Share
More Decks by Toshiyana
See All by Toshiyana
Mobile 自動E2Eテストの導入検討-Appium
toshiyana36
0
74
Swift6からのTyped throws
toshiyana36
2
320
Catch Up Swift Concurrency Actor & Sendable
toshiyana36
0
210
Qiita Hackathon: そこにAIはあるんか
toshiyana36
0
85
Swiftで簡易 HTTP Server を作る
toshiyana36
0
390
Other Decks in Technology
See All in Technology
分解し、導き、託す ログラスにおける“技術でリードする” 実践の記録
hryushm
1
500
newmo の創業を支える Software Architecture と Platform Engineering
110y
5
580
インラインRBSコメントに鯛pe checkersもニッコリ
sansantech
PRO
1
180
Google Cloud Next 2025 Recap アプリケーション開発を加速する機能アップデート / Application development-related features of Google Cloud
ryokotmng
0
350
Google CloudのAI Agent関連のサービス紹介
shukob
0
150
計測による継続的なCI/CDの改善
sansantech
PRO
7
2.2k
Vibe Coding Tools
ijin
1
290
技術選定を突き詰める 懇親会LT
okaru
2
1.2k
4月15日の AZ 障害をテクサポの中の人目線で振り返ってみる
kazzpapa3
3
180
Google Cloud Next 2025 Recap マーケティング施策の運用及び開発を支援するAIの活用 / Use of AI to support operation and development of marketing campaign
atsushiyoshikawa
0
360
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
160
さくらのクラウド開発の裏側
metakoma
PRO
18
5.8k
Featured
See All Featured
Bash Introduction
62gerente
613
210k
Automating Front-end Workflow
addyosmani
1370
200k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
How STYLIGHT went responsive
nonsquared
100
5.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Facilitating Awesome Meetings
lara
54
6.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Typedesign – Prime Four
hannesfritz
41
2.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Gamification - CAS2011
davidbonilla
81
5.3k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
BBQ
matthewcrist
88
9.6k
Transcript
© DMM 1 新卒iOSエンジニアの歩み #dmm_swift 2024/1/29
© DMM 自己紹介 柳元 俊輝 (Yanagimoto Toshiki) / Toshiyana
新卒1年目 iOSエンジニア ◆ 所属:プラットフォーム事業本部 DMM PointClub iOSチーム ◆ 趣味: テニス🎾、英語の勉強、一風堂 ◆ X: Toshiyana ◆ Vision Proが発売間近でわくわく。欲しい。。🤑 2
© DMM この発表で話すこと • 入社から現在までの主な取り組み • 各期間で得た学び 新卒iOSエンジニアの入社から配属後までの雰囲気を知っていただければ幸い (私個人の1例ですが) 補足:技術の話は少なめ(私以降の発表は技術的なお話なのでお待ちを。。)
3
© DMM 入社してからの流れ 4 内定者 アルバイト テキスト 現在 2023/8 2022/10
配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
© DMM 入社前の状態 • プログラミングは大学の授業、研究(学部は電気系で、研究は画像処理) • iOS開発は独学・個人開発でアプリリリース • チームでハッカソン参加 •
学生にプログラミングを教えるチューターのバイト 5 開発の実務経験は無かったので少し不安。。
© DMM 入社してからの流れ 6 内定者 アルバイト テキスト 現在 2023/8 2022/10
配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
© DMM オンラインサロン 技術構成 • サロンアプリ ◦ Architecture:VIPERベース ◦ Core:
ReactNative, UIKIt, SwiftUI, Combine 7
© DMM キャッチアップ • 社内のiOSアプリ推奨アーキテクチャ ◦ いくつかの社内アプリの設計のベース ◦ サンプルアプリ・設計に関するドキュメントが存在 ◦
このおかげで、設計の全体像を素早く把握 • ReactNativeのキャッチアップ ◦ 内定者アルバイトが決まってから、サンプルアプリを作って学習 8 Discordに皆が常駐し、疑問があれば気軽に質問可能
© DMM 主な取り組み(内定者アルバイト時代)
© DMM リプレイス • ReactNativeからSwiftへの移行 ◦ サロンアプリは元々ReactNativeベース ◦ 移行にあたりReactNativeのコードも多少読める必要があった ◦
事前のキャッチアップによりスムーズに開発に入れた 移行の背景など過去の記事はこちら https://logmi.jp/tech/articles/329092, https://logmi.jp/tech/articles/324358 10
© DMM 新機能開発 • 予約投稿機能 ◦ SwiftUIによる画面構築方法を学ぶ ◦ SwiftUIの挙動がOSバージョン間で異なるのは辛い ◦
ネイティブ側でバリデーション、エラーハンドリングが結構 必要だったので大変だった 11 アルバイトの身だが、新機能開発をがっつり携わることができ成長
© DMM ライブラリ・ツールのバージョン更新の自動化 • Renovateを導入 ◦ Renovateとは: 最新バージョンのチェックを行い、自動で更新のPRを出してくれる 便利ツール ◦
導入前:最新バージョンが出ているかのチェックを3ヶ月に一度行う ◦ 導入後:バージョン更新のチェックを週1で行うように自動化 12 https://github.com/renovatebot/renovate
© DMM 開発以外 • 競合・類似アプリの調査・共有の時間を導入 ◦ 目的:他社アプリのUI・UXの研究、プロダクト改善 ◦ メンバーからプロダクトの改善案が出て、意識向上につながった •
iOSメンバーで最新技術, 設計のキャッチアップ会の開催 ◦ ドキュメントや動画でチームでキャッチアップ ▪ Ex: Swift Concurrency, Redux for Swift ◦ 調べた内容をまとめてメンバーに共有 13
© DMM 学び • 素早く開発に入るためのキャッチアップの仕方 ◦ 大事な要素:キャッチアップしやすい環境、自主性 • 実践的なiOS開発スキル (主にSwiftUI,
CI/CD周り) • 目の前の開発だけでなく、チーム・プロダクトへの改善意識・提案 14
© DMM 入社してからの流れ 15 内定者 アルバイト テキスト 現在 2023/8 2022/10
配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
© DMM 新卒研修のスケジュール 16 https://inside.dmm.com/articles/engineer-training-2023/
© DMM iOS研修 • 開発演習ではSNS Likeなアプリ開発を行う ◦ iOS開発初学者の人も学べる内容 ◦ APIはBE演習で自分で作ったものを利用
◦ 個人的に追加で気になる技術・設計を試す ▪ Swift Concurrency ▪ WWDC23で発表されたばかりだったObservation ▪ SPMでマルチモジュール構成(Featureモジュールで分割) iOS開発経験者の自分にとって、話題の技術や設計を試せる時間になった 17
© DMM サービス発案・チーム開発 • 研修最後の山場 • サービス発案からチーム開発・発表まで約3週間で行う 我々のチームは 「社内イベントが一元管理されておらず、探しづらい」 という実際の課題感から
18 「社内イベントの開催/参加を一元管理することで 社内交流を促進するイベント管理アプリ」を作成
© DMM サービス発案・チーム開発 社内イベントの開催/参加を一元管理することで 社内交流を促進するイベント管理アプリ(Web) 19 チームメンバーが描いた マスコットキャラクター
© DMM 学び • 課題感からサービスを形にするまでの流れ • チーム開発を円滑に進めるための仕組みづくり ◦ ドキュメント ◦
スクラムイベント ◦ ツール • 何がユーザにとって重要か + 工数を考慮した機能、技術選定 20
© DMM 入社してからの流れ 21 内定者 アルバイト テキスト 現在 2023/8 2022/10
配属後 ~ 現在 新卒研修 配属後 2023/4 約6ヶ月 約6ヶ月 約4ヶ月 オンラインサロン ポイントクラブ
© DMM ポイントクラブ 技術構成 • ポイントクラブアプリ ◦ Architecture:VIPERベース ◦ Core:
UIKIt, SwiftUI, Combine 22
© DMM 主な取り組み(配属後)
© DMM UIのリニューアル • UMLでクラス図から初めて設計 • 開発着手前にメンバーと設計認識を合わせる重要性を学ぶ • デザイナーと要件について適宜コミュニケーション •
リリース後の効果検証(データ分析) 24
© 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
© DMM Swift Concurrency対応の方針決め チームで決まった方針 • Swift6が正式にアナウンスされてから本格的にモジュールごと対応 ◦ アナウンスからリリースまで半年ぐらいの期間がある(この間に対応) ◦
恐らく、Swift6リリース後もしばらくはSwift5でコンパイル可能 • アナウンスまでの間、新規実装など導入可能な箇所からSwift Concurrencyを使う 26 皆さんはこの辺どうしていますか?
© DMM 未使用コードの検出 • 使われていないコードが溜まると負債化 ◦ 可読性の低下 ◦ ビルド時間の増加 •
Periphery: OSSの未使用コード検出ツール ◦ Targetに追加して検出できるようにした ◦ Xcode上でwarningを出してくれる 27 https://github.com/peripheryapp/periphery?tab=readme-ov-file
© DMM Peripheryの設定 手順 • 1.「periphery scan --setup」コマンドを実行し、設定の質問に回答 • 2.
回答に基づいて.periphery.ymlが自動生成 • 3. 「periphery scan」コマンドを実行して検出 28 (例)
© DMM バックエンドの開発 • 実をいうと、最近はGoばかり書いている • APIやバッチを実装 • 元々iOSに加えて、バックエンドにも興味があった •
技術的な視野を広げることができているのでチームに感謝 29
© DMM 事業部間の横断的な活動 • 隔週オンラインでiOSランチ会を開催 ◦ ランチを取りながら、iOSの気になる技術のキャッチアップ、困りごとの相談や知 見共有を行う会 ◦ 開催しようと思ったきっかけ
▪ 事業部間のiOSエンジニアで交流する機会がほぼなかった ▪ 他事業部の知見を知りたい ▪ iOSアプリを開発している事業部が複数あるのに勿体無い! 30
© DMM iOSランチ会 • Discordでみんなでワイワイ • WWDCなどの動画を見てキャッチアップしたり、技術的な雑談や知見共有 を行う 31
© DMM その他の取り組み
© DMM 社内のテックブログに投稿 • 社内の2023アドカレで投稿 • 「SwiftUIで作る複数行カルーセル」というタイトルで執筆 ◦ 業務で得た知見をアウトプット ◦
会社のサイトに自分の記事が掲載されるのなんか嬉しい 33 https://inside.dmm.com/articles/swiftui-multi-row-carousel/
© DMM その他いろいろ • インターン生のフォロワー • LT会への参加・発表 • iOS DCに当日スタッフとして初参加
34
© DMM 学び • データに基づく定量的な分析、効果検証 • バックエンド開発 • アウトプットの機会があれば申し込んでみて、締切効果でネタ捻出 •
とりあえずやってみる精神 35
© DMM まとめ これまでの学び 36 • 実践的なiOS開発手法 • チーム・プロダクトへの 改善意識
• 定量的な分析、効 果検証 • バックエンド • やってみる精神 • チームが円滑に動けるた めの仕組みづくりの重要 性 • ユーザ指向でものづくりす る考え方 何事にも挑戦の気持ちで開発・開発外で幅広いことに取り組めた
© DMM まとめ これから • 曖昧な仕様に対する要件定義、設計する能力を高める • より専門性を高める • チーム、事業に貢献できるエンジニアになる
• 引き続きiOSコミュニティの盛り上げ 37
© DMM ご静聴ありがとうございました