見出し画像

【今から始めるなら?】 SwiftUI vs Storyboard vs Programmatically (not SwiftUI)

お久しぶりになります😀
最近は会社でインターンシップが開催されているので意外と忙しいです.そのせいで自分の勉強がなかなか進みません(100%言い訳).

夏のインターンシップが始まったということは,そろそろ就活生の方々が就活に向けて活動を開始し始めているということになります.「もう就活ムードが始まっているけどプログラミングスキルが全くないしヤバい!!」と内心焦っている学生も少なからずいらっしゃるのではないでしょうか(当時の僕は大分焦っていました).

今回の記事の内容はiOSアプリ開発の中でも少しコアな部分について触れてみようと思います.今からiOSアプリ開発をしてみたいという方は参考にしてみてもいいかもしれません.

対象の読者

以下のような方の参考になればと思います.
・今からiOSアプリ開発をしてみようと思っているが,何から始めればいいかあまりよくわかっていない方
・ポートフォリオとしてiOSアプリを作成しようと思っているが,UI側を何で実装しようか悩んでいる方

UIを何で実装しようか問題

本題です.iOSアプリの開発では.UIを実装する方法が大きく分けて三種類あります.
・SwiftUI
・Storyboard
・Programmatically
それぞれ調べてみればどれだけでも参考になる資料が出てくるので,詳しい実装方法については説明しません.これらの方法のうち,どれで実相するのがよいのでしょうか?以下では自分の業務での経験をもとに少し紹介できればと思います.

SwiftUI

概要は以下リンクから.

ここで説明するよりも公式の説明を読んだ方がおそらくわかりやすいでしょう.後述するStoryboardとは異なり,コードベースで簡潔に書いていけるようにしたライブラリになります.チュートリアルも用意されているのでやってみるといいかもしれません.Storyboardやコードベースでの実装に慣れている身からすると,とても簡単にUIが構築されていて当初は結構驚きました.

・いいところ
Storyboardが嫌いな方々からすれば,こんなに良いライブラリは無いと思います.後述の二種類に比べて圧倒的に簡単に書ける方法だと思います.わりと最近出た技術なので,今後はこれが主流になると予想されています.

・よくないよころ
SwiftUIは,iOS13以降でしか使えません.これが最も厄介な問題です.個人で勉強する分にはいいのですが,業務では簡単にはいきません.自分の会社では何種類かiOSアプリを開発していますが,自分達が思っている以上に古いiOSバージョンを使っているユーザーもいます.いまだにiOS11を使っているユーザーが一定数いたりします.アプリ側でサポートするバージョンを引き上げてしまうと,今まで利用していたユーザーの一部が使えなくなってしまうだけでなく,会社としても損益となってしまうので,サポートする下限バージョンの選定は慎重に行わなければいけません.だからといって,iOS13以上ではSwiftUIを使って実装して,iOS13未満では今まで通りの実装方法,という方針をとってしまうと,どちらかの実装方法では出来て,他方では出来ないことが出てきたり,単純に実装や運用のコストが倍になってしまうので,あまり良い方法とも言えません.
また,SwiftUI自体がまだまだ発展途上なので,出来ること出来ないことがはっきりしていません.加えて,後述する2種類の実装方法とは大きく異なる概念が導入されているので,コードを理解するのにも時間がかかります(とはいえ,関数名などを読めばなんとなく雰囲気はわかるのでさほど難しいわけではありません.).

Storyboard

iOSアプリ開発入門ではコードよりも先に見るかもしれないStoryboard.もはや説明不要でしょう.

・いいところ
三種類の中でも最も簡単で,見た感じも把握しやすいのがポイントです.難しいことを考えずにササっと開発できるのがいいところだと思います.

・よくないところ
よくないところも結構目立ちます.Gitでの管理がほぼ不可能なのがとても痛いです.これは個人で開発の勉強をしている時には気がつかなかったのですが,コードレビューをチーム内でしているときに痛感しました.ほぼ何を書いてあるのかは追えないので諦めざるを得ません.
また,細かいところを触ろうとすると,Storyboardとは別にコードでの記述が必要になります.思ったよりもやれることが限られていて,幻滅するかもしれません.Storyboardを使うことによって,ViewとControllerを分離することができていい感じかと思いきや,なかなかそうもいかず,モヤモヤすることが多々...
あとは好みによりますが,IBOutlet接続などの場面で中途半端にドラッグを必要とする場面が出てくるのが気持ちが悪いといったところでしょうか.

Programmatically

こちらも説明不要です.その名の通り,コードで全てのViewを用意する方法になります.ちなみに僕はiOSアプリの開発の勉強をし始めた頃からこの方法で学んできました.Storyboardをまともに触ったのは入社後だったりします.書き方についてはたくさん方法があるのですが,自分はクロージャで描くのがとても気に入っています.

・いいところ
コードで書いているので,まず何でもできます(たぶん).AutoLayoutの設定もかなり細かくできます.基本的には書いた通りに動くので,間違いにも気がつきやすいかなと思います.書いた通りの見た目や挙動をする(はず)なので,Gitで差分を見た時も読みやすいです.

・よくないところ
コードの記述量が上記二つと比べ物にならないほど多くなります.ViewControllerに直接書いているととんでもない行数になるので工夫が必要だと思います.朝からものすごいキーストロークでコードを書いているかと思いきや,一時間かけて簡単な画面が出来上がっただけ,なんてこともありました笑
また,それぞれのViewのオプションについてのプロパティやメソッドについて知っておく必要があるので,慣れるまで大変かもしれません.
あとは,意外と参考資料が少ないことくらいでしょうか.

まとめ

以上の紹介をまとめると,
・SwiftUI: 簡単に書けて今後期待されるが,iOS13以降でしか使えない.
・Storyboard: 手っ取り早くViewを構築できるが,Gitの差分は理解不能.
・Programmatically: なんでもできるが,コード量が跳ね上がる.
といったところです.自分の勤務先がそうなのですが,iOS13未満のサポートをいつまで経っても切れないので,いまだにSwiftUIを導入することができず,新機能追加をStoryboardで行っている場合も,まだまだありえない話ではないので,Storyboardから勉強して行った方がいいのかなと思います.余力があったらSwiftUIを勉強して,今後のStoryboard -> SwiftUIへのリプレイス作業に備えるというのが無難だと思います.

さいごに

AndroidのXMLは簡単でいいよ(ただしデザイン性は期待できない)😁


いいなと思ったら応援しよう!