Lento con forza

大学生気分のIT系エンジニアが色々書いてく何か。ブログ名決めました。

WEB+DB PRESSでiOS開発の特集を執筆したのでiOSアプリ開発を振り返ってみます

f:id:kouki_dan:20210223214953p:plain

最近iOSアプリ開発を振り返るタイミングがありました。どういうことかというと、いきなり宣伝になるのですが、先日発売したWEB+DB PRESSでiOSアプリ開発の最前線についての特集を同僚のid:cockscombid:yutailang0119と一緒に執筆しました。

gihyo.jp

Macを手に入れてiOSアプリの開発を始める

iOSアプリ開発を始めるにはMacを手に入れる必要がありますね。僕がiOSアプリ開発を始めたきっかけは、2011年ごろにスマホブラウザゲーム開発コンテストの9leap*1で入賞して、MacBook Airをもらったことでした。iOSアプリ開発の最初の壁とも言えるMacを手に入れることができて、Macの快適な操作性、SSDによる爽快な動作、美しいフォント、統一された体験を感じ、一瞬でAppleのファンになりました。

当時からプログラミングは好きだったので、当然の流れでiOSアプリ開発もやりたいと思うようになりました。当時ガラケーを使っていた僕はiPhoneを買うと月額料金が数倍になると怯えていたので、iPod Touchを購入し、XcodeでiOSアプリ開発をやってみることになりました。

Table Viewや、デリゲートの仕組みに苦戦しつつも、勉強して、アプリを作ってみたりしながらプログラミングを楽しんでいました。

Auto Layoutとの遭遇

当時は画面サイズが少なかったため、Androidアプリ開発とは違って固定のサイズでビューをレイアウトできるのがiOSの良さ!!みたいなことを思ってました。でもそんなことはいつまでも言ってられずに、さまざまな画面サイズのiPhoneが発売します。

それに対応するためにAuto Layoutを学ぶ必要を感じ、勉強し始めました。Interface BuilderによるGUIの操作、controlを押しながらドラッグをする謎の操作、それらの結果生まれる謎のXMLなど、いくつもある壁を乗り越えて、また勉強していきました。

この辺りからは、スマホサイズだけじゃなくて、iPadへの対応も考える必要が生まれてきました。確かこの頃にSize Classが導入されて、1つのStoryboardでiPhone/iPad両対応ができるようになったと記憶しています。

レイアウト以外にも、この少し後くらいにSwiftが発表されて、Objective-CからSwiftへという大きなターニングポイントがありましたね。 当時はSwiftを使うべきか、Objective-Cを使い続けるべきかで悩んでいたのを覚えています。今となってはObjective-Cを使い続けることは考えられませんね。

Stack Viewとの邂逅

iOS 9で追加されたStack Viewは、これまでの常識を変えたターニングポイントだったと思います。Auto Layoutは複雑で難しいもの、という認識が強かったと思いますが、Stack Viewはよくあるユースケースにおいて制約をシンプルに表現できるようになりました。

Stack Viewがカバーする、横に並べる、縦に並べるというユースケースはアプリのUI開発で頻繁に遭遇します。Stack Viewによりこれらが非常にシンプルかつわかりやすく、さらに変更もしやすい形で定義できるようになりました。

Stack ViewはiOS 14時代の今も現役で使われていて、SwiftUI版Stack Viewとも言えるHStack、VStackはSwiftUIでレイアウトする上で基本的なコンポーネントです。

iOSアプリ開発で使える新機能は古いiOSへのバックポートがされないことが多いため、アプリでiOS 8のサポートを終了するまではStack Viewを使えないことがもどかしかったことを覚えています。

iOS 13での革命

Auto Layout, Size Class, Stack Viewときて、iOS 13で革命が起きました。それも2つもです。SwiftUIとCollection Viewです。

SwiftUIは、現代のiOSアプリ開発で標準的に使われる言語であるSwiftの名を冠したUIフレームワークです。宣言的にUIを構築でき、シンプルに、素早くアプリを作ることができるようになります。

cockscomb.hatenablog.com

もう一つ、iOS 13で導入された重要な要素として、Compositional LayoutとDiffable Data Sourceがあります。SwiftUIでカバーできないケースもまだあり、それらの実装として未だにこれまでのアプリ開発のような実装は必要です。その進化も続いており、その中でも大きな進化がiOS 13で追加されたCollection View周りの変更です。

その名の通り、レイアウトとデータソース周りがとてもわかりやすく、複雑なものもシンプルに記述できるようになっています。

詳細はWEB+DB PRESSの特集にも書いてるので、ぜひこちらも参照してみてください

gihyo.jp

iOS 14、現代から、その先へ

いよいよ現代まできました。2021年、最新のiOSバージョンはiOS 14.4です。今回執筆した特集のタイトルもiOS 14 最前線というタイトルです。iOS 14はiOS 13で導入されたSwiftUIやCollection View周りの革命を、順当に進化させたものになっています。これから先も数年は同じ状況が続くと予想されます。ちょうど今はiOSアプリ開発を学ぶには相応しい時期であると思います。

今回の特集では、iOS 14の変更だけではなく、iOS 14時代の現代においてiOSアプリはこういう風に作るのが普通だよね、というまさに最前線をできる限り詰め込んでいます。現役でiOSアプリ開発を行っている人だけではなく、昔書いていて、今はどんな感じで書けるんだろう?と思ってる人や、全くiOSアプリを書いたことはないけどちょっと興味はあります!という人など、色んな人に読んで欲しい特集に仕上がっています!ぜひ読んでみてください!

gihyo.jp

*1:今見るとサイトがなくなっていた・・・。この時はGitHubとかも知らずにひたすらコード書いていたので、この時に作ってたゲームが失われてしまっていて悲しい気持ちになりました