本記事はSwiftWednesday Advent Calendar 2023の7日目の記事です。
昨日は@ojun_9 さんでした。
はじめに
初めまして。23新卒で入社し、現在Swift歴5ヶ月ほどになる@startaiyoと申します。
現在の配属先でiOS開発に携わるまでSwift経験はほとんどなく、配属決定の7月にほぼ初めてSwiftを触るといった状態でした。
そこから部署の方々の助けを借りながらも様々な取り組みを行い、ようやくSwiftに慣れ始めてきたかな、というところまで辿り着けました。プロジェクトでも他の方同様、一機能単位のタスクを割り振られるようになってきたり、レビュアーにアサインされ始めたりと、一人のiOSエンジニアとして扱っていただけるようになってきました。
そんな中、今回は今まで自分がしてきた取り組みを振り返らせていただきました。
新しくSwiftを始める方々のお役に少しでも立てれば幸いです。
自分が今までやってきたこと
今から紹介する内容は、本業であるプロジェクトでのiOS開発業務と並行して行ってきたものになります。
1. iOS Developer Roadmap 2023に沿って勉強し、内容をアウトプット
始めたての頃は本当に何もわからなかったので、ひとまずメンターさんに教えていただいたこちら↓のロードマップに沿って学ぶことにしました。
やり方としては上から順に概要が掴める程度に調べ、調べた内容を部署のチャンネルにアウトプットし、先輩方からFBをいただくというものでした。
ロードマップの網羅性がかなり高いこともあり、これが個人的にはかなり役に立ったと思っているため、そのメリットをお伝えします。
1. プロジェクトのキャッチアップが早くなった
これはすごい感じるところで、自分のプロジェクトに使われているモジュールやライブラリ、コードの書き方そのものに至るまで、これは何をしているコードなんだろう、と疑問に思うことが圧倒的に減りました。
特に、デザインパターンを学んでいたお陰で、プロジェクト内でたくさん使われているRxSwiftの理解がしやすくなったのは強く実感しました。
2. 技術選定をしやすくなった
個人開発をしていて技術選定に迷った際、自分の過去のアウトプットを参考にできています。例えばデータの保存がしたい時にどれを使おうかと考えた際、RDBのような関連性を持たせながらローカルにデータ保存するならRealmがいい、とすぐに決めることができます。
3. 低レイヤーな知識も身についた
スレッドやメモリなど、iOS開発では必須だが今まで自分が避けてきたような低レイヤーな知識も、しっかり学んで確固とした知識として身につけることができました。
4. Swiftのトレンドも同時に把握できた
これは先輩方からいただけたFBを通じてといった意味合いが強いですが、今この技術は使われていない、逆にこれが使われている、といった知識を得ることができました。これは比較的古いプロジェクトに携わっていただけではわからなかったと思います。
他にも副次的ではありますが、アウトプットに対する抵抗がなくなったのは大きかったかなと思います。
2. プロジェクトのソースコードを眺め、コードと挙動の関連付け
こちらは後述する個人開発と同時並行ではありますが、起動した際に初めに呼ばれるAppDelegateからその先の各画面に至るまでどのように動いているのかを順を追って確認しました。その確認作業の際にも、ロードマップで学んだApp Statesの話やReachabilityなどのフレームワークに関する知識が役に立ちました。
3. 学んだことを活かして個人開発
今まで1.や2.で学んだことを具体的に使えるレベルにするべく、簡単な個人アプリの作成に取り組みました(現在進行中です)。
まずは2.のプロジェクトのコードを真似て、立ち上がり〜トップ画面表示までのアプリの基本的な動きを再現することができました。これはかなり効果があり、プロジェクトのコードに慣れたことにより、実際のプロジェクトでの開発速度が上がりました。
そして現在は1.で学んだ網羅的な知識の概要を実装の具体レベルに落とせるよう、様々な技術を取り入れながらアプリを制作しています。
やっておけばよかったこと
1. コードを早めに書き始めるべきだった
個人開発のコードを書き始めたのは、ロードマップの学習が終わった後でした。
ただ、調べてしばらく経つとアウトプットした内容もほぼ忘れてしまいますし、実際に使うタイミングになって初めてasync/awaitが便利なことや、SPMが手軽で管理がしやすいことなど、概要を学んだだけでは気づけなかったメリットを感じることができました。
2. コードベースで正しい書き方を最初から学んでおくべきだった
何を持って正しいのかという話でもありますが、勉強した内容をコードで記述する際、どんな書き方をするのがベストなのかは早めに知っておくべきでした。
自分が携わっているプロジェクトは昔からあるもので、中には今ではそんな書き方しない、というコードもあったりします(例えばカスタムクラスがゴリゴリに使われていたりなど)。
そのため、いつ頃書かれたコードかに注意しながら、勉強した内容の技術を使っているアプリのソースコードを見るなどして知見を蓄えていれば尚、アプリ開発の速度も上がったような気がします。
今後の展望
Swift初学者の方が、プロジェクトに携われるレベルに早く到達するためのお手伝いができればと思っています。
特に、ロードマップで扱われている技術の具体例がコードベースで見れるといいだろうなぁと強く思うので、とにかく今作成しているアプリをそれらの技術を盛り込んで完成させ、ソースコードとともに技術の説明を加えた資料を作成して公開することを目標に活動しています。
また、こうした対外的なアウトプットは初めてなので、今後も継続していきたいと思いました!
明日は上記取り組みでいつもお世話になっている、@uhooiさんです!よろしくお願いします。