サーバエンジニアから始める、 Swiftロードマップ
こんにちは
taskey エンジニアの田代です。作っているもの
Swiftエンジニアってどうしてもサーバエンジニアより分母が少ないですよね。ですのでリソースの確保もなかなかに難しいです。(環境によりけりだとは思いますが)
APIリファクタリング時のキー確認やら、ちょっとした文言の変更、色やらアイコンの改修など、ちょっとしたことに貴重なリソースを割くのは勿体ないですよね。やりとりにもコストはかかりますし、、
そう思いSwiftを学んでみることにしました。
その時の学習手順をつらつら残しておきます。
STEP 1: たった2日でマスターできるiPhoneアプリ開発集中講座
なにかを始める時、一番大切なのはモチベーションの確保だと思っております。ですので、今回は「たった2日でマスターできるiPhoneアプリ開発集中講座」から手を付け始めました。てっとり早く動かしたいという魂胆です。
IDEなんぞVSCode一択だったのでXcodeの使い方なんて全然わかりませんでした。そんな初心者にも細かい説明付きで、写経していたら動くものが詰まらずに作れるという点では、つっかかりにはとても良い技術書でした。
1つ注意することとして、XcodeはVersionによりUIの配置が変わってしまうので、確認のみ気をつけたほうがいいかなぁと思いました。
この本と自分のXcodeのUIが違っても落ち着いて調べましょう。Swiftでのググり力が高まります。
StoryboardやらAutoLayoutの触り方、https通信して取得したjsonの扱いは重要なところなので良く読んでおきましょう。
STEP 2: Swift実践入門 & Paiza
次にSwift言語自体になれるため、言語自体の入門書を読みました。
元々がRuby出身、Optional(Nullableのこと)や、型宣言に対してはなかなかに抵抗はありましたが、なるほど型宣言やらOptionalは確かに安全だな、Test書きながらコード書いているみたいだ。という気分になりました。
またProtocolの考え方はとても素敵だと思いました(小並)
さて、読んだだけでは身につかないので、習得に関してはPaizaの練習問題(難しくなくて良い)を使って身につけていきました。
Pointとして、delegateやらextensionのような少し難しいものは後回しにしてもいいと思います。
Optional、基本文法、型宣言、コレクション、クロージャの扱い方
これらの理解があれば、細かい業務では十分です。
一旦深入りせず、ある程度Swiftに慣れるというところまで練習問題を説いてみて下さい。理解の足らない部分はQiitaやら何やらで補填しましょう。
STEP 3: iOSアプリ設計パターン入門
次に業務レベルのアプリを読む時に、ある程度どこで何が起きているか把握出来るよう 「iOSアプリ設計パターン入門」を元に設計パターンを学びました。
設計議論とは尽きないもので、RailsはMVCという規約があって本当に楽だなぁと思いました。(SerializerやらPOROが増え始めたらまた別ですが)
こちらの書籍は設計パターンなのでSwiftエンジニアではなくともとても価値ある技術書だと思います。
MVC、MVVM、VIPER、クリーンアーキテクチャ等、色々あることは分かったのですが、結局最低3つに分けてそれ以上に分ける場合はきちんと規約で管理してね。みたいな話かなと思いました。
自社のSwiftプロジェクトを眺めながら、どの設計パターンが近いかを見比べてみると、とても勉強になります。
STEP 4: RxSwift研究読本
通信に関して車輪の再開発をしてる暇は有りません。うちのプロジェクトは運良くRxガッツリだったので、そのレールに乗るべく「RxSwift研究読本」から学びました。
冒頭であげた、APIリファクタリング時のキー確認やら、ちょっとした文言の変更、色やらアイコンの改修などはSTEP3まで習得していたら問題無いと思うのですが、新規画面の開発では新しい通信や、スレッド管理の理解が浅いと出来ません(危ない)。Rxをしっかり理解してから望みましょう。
こちらの技術書は3部に分かれており、非常に丁寧な解説があるので、ハードルが高いと言われているRxもある程度使えるようにはなるはずです。
まとめ
今回Swiftを学んだことにより、
- 特定のAPIのレスポンスサイズ、速度を半分まで下げることに成功
- アプリからの無駄なリクエスト(1日の1 / 10程)を無くしてサーバ数をへらすことに成功
等の成果をあげることに成功しました。
また、細かいデザインの変更等も担当することが出来たのでちょっとばかし会社の役には立てたかなという気持ちです。
何より色々な技術に触れるのはとても楽しいですし、足らないAPIがあったら追加出来るし、今後のAPI設計でもどの様なモデル返却が望ましいのか想像しやすくなりました。対効果めちゃ高いです。
サーバエンジニアの皆さん。この際に是非Swiftを初めてみるのはいかがでしょうか。