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
460
新卒iOSエンジニアの歩み
DMM.swift #1
Toshiyana
January 29, 2024
Tweet
Share
More Decks by Toshiyana
See All by Toshiyana
Mobile 自動E2Eテストの導入検討-Appium
toshiyana36
0
55
Swift6からのTyped throws
toshiyana36
2
290
Catch Up Swift Concurrency Actor & Sendable
toshiyana36
0
120
Qiita Hackathon: そこにAIはあるんか
toshiyana36
0
79
Swiftで簡易 HTTP Server を作る
toshiyana36
0
320
Other Decks in Technology
See All in Technology
効率的な技術組織が作れる!書籍『チームトポロジー』要点まとめ
iwamot
2
190
ソフトウェア開発における「パーフェクトな意思決定」/Perfect Decision-Making in Software Development
yayoi_dd
2
2.7k
AWS re:Invent 2024 ふりかえり勉強会
yhana
0
700
サーバーなしでWordPress運用、できますよ。
sogaoh
PRO
0
170
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
250
信頼されるためにやったこと、 やらなかったこと。/What we did to be trusted, What we did not do.
bitkey
PRO
0
1.6k
MasterMemory v3 最速確認会
yucchiy
0
300
Fearsome File Formats
ange
0
550
20241218_マルチアカウント環境におけるIAM_Access_Analyzerによる権限管理.pdf
nrinetcom
PRO
3
150
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
0
240
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
6
1.5k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
54k
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
64k
Why Our Code Smells
bkeepers
PRO
335
57k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Designing for Performance
lara
604
68k
Optimizing for Happiness
mojombo
376
70k
Raft: Consensus for Rubyists
vanstee
137
6.7k
How STYLIGHT went responsive
nonsquared
96
5.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
19
2.3k
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 ご静聴ありがとうございました