経歴のスタート地点
情報系の学部を卒業したばかりの新卒だ。大学ではPythonとJavaを中心に学び、Webアプリケーションのチーム開発を卒業研究で経験した。授業の課題は「与えられた仕様を満たす」のが目的だったから、何かを「自分の作りたいものとして作る」経験は実はあまりなかった。
入社した会社はWeb系のスタートアップで、配属はモバイルアプリチーム。配属時の自分の目標は明確だった——「自分のアイデアをすぐに形にして、App Storeに出せる人になる」こと。将来的にはインディーデベロッパーとして、個人で小さなアプリを世に出していきたい、と入社時のキャリアシートに書いた。同期の中ではモバイル志望は私だけだった。
最初のつまずき
入社して1ヶ月、Swiftの公式チュートリアルを始めた。最初に詰まったのが「オプショナル型」だった。Int? と Int の違い、! と ? の使い分け、if let と guard let——大学で書いていたJavaやPythonには出てこない概念で、最初の2週間は頭が混乱した。
次に詰まったのがクロージャだ。{ (param) -> ReturnType in ... } という構文の見た目に圧倒され、特にTrailing Closureや省略記法($0 記法)が出てくると、何が起きているのか分からなくなった。SwiftUIのコードを読むと、ほとんど全ての行にクロージャが使われていて、絶望した。
そして配属直後に教育担当の先輩から「うちのプロダクトはSwiftUIとUIKitが混在してるから、両方読めるようにね」と言われた。新規画面はSwiftUIで書きたいが、既存画面はUIKitで作られている。いつ、どちらを使うべきかの判断軸が、自分の中にゼロだった。デリゲートパターンとプロパティラッパー、両方の世界の作法を同時に覚える必要があった。
転機
転機は、入社3ヶ月後に参加したiOSDC(iOS開発者カンファレンス)だった。登壇者の若手エンジニアが「私も新卒のときオプショナル型で2週間泣きました」と笑いながら話していて、救われた。同時に、彼が業務後にコツコツと個人アプリを作り続け、入社2年でApp Storeにリリースまで漕ぎ着けた話を聞いて、自分にも同じ道を歩める気がした。
その夜、ホテルで「最初の個人アプリを3ヶ月以内にリリースする」という目標を立てた。本格的に学習計画を組み直した。完璧を目指すのではなく、雑でいいから動くものを作ることに焦点を切り替えた。
いま振り返る選書
iOSエンジニアとして1年やってきた中で、特に効いた本を挙げる。
- 『詳解Swift 第5版』:通称シンカイ本。Swiftの言語仕様を体系的に押さえる定番。オプショナル型もクロージャも、この本で初めて「なぜそう設計されたのか」が腹落ちした。プロトコル指向の章は3回読み返した。
- 『Swift実践入門』:シンカイ本より実装寄りで、コードを書きながら覚えるのに最適。プロトコル指向プログラミングの章は何度も読み返した。
- 『SwiftUI 2日でマスター』:タイトル通り短期集中で、まずSwiftUIで何かを動かせるようになる。最初の個人アプリはこの本のサンプルから派生させて作った。
- 『本気のiPhoneアプリ開発』:UIKitの実装パターンを基礎から固められる。混在プロジェクトを読むときの土台になった。AutoLayoutの章は何度も参照している。
- 『iOSアプリ開発集中講座』:アーキテクチャ(MVVM、Combine、Async/Await)の章が現場と直結していた。
- 『Clean Architecture』:個人アプリが大きくなってきた頃、設計が破綻しかけて駆け込んだ。レイヤー分割の考え方を身につけた。
現場での実践
宣言通り、入社6ヶ月後に最初の個人アプリ(小さな読書記録アプリ)をApp Storeにリリースした。ダウンロード数は3桁にも届かないが、自分のアイデアが世に出る感覚は何にも代えがたかった。会社の業務でもSwiftUIで新規画面を任されるようになり、個人開発と業務がいい循環で回り始めた。
業務で覚えたCombineを個人アプリに導入してみる、個人アプリで試したSwiftUIのアニメーション技法を業務で提案する——このループが回り始めると、学習速度が一気に上がった。先輩から「最近コードレビューで指摘することが減ったね」と言われたときは、本当に嬉しかった。
これから挑む人へ
iOSエンジニアを目指す新卒の方に伝えたいのは、完璧に学んでから作るのではなく、雑でいいから作りながら学ぶこと。オプショナル型の理解が完璧でなくても、SwiftUIで小さなアプリは作れる。一度App Storeに出す経験をすると、点だった知識が一気に線になる。
教科書を読み続けるより、アプリを1個リリースする方が、確実に成長する。

