WWDC2021直前! SwiftUI 大胆予想
WWDC2021まで1ヶ月を切っている(2021年5月18日現在)。
iOSアプリ開発者としてSwiftUIについて大胆に予想を述べていく。
1) SwiftUIとは?
四半世紀近く前に確立されたRapid Application Developmentの手法を2010年代後半までに確立された開発手法を鑑みて見直しを図ったアプリ開発の基盤(フレームワーク)の1つ。
これまで(iOS SDK, macOS SDK)画面構築と画面に関係するインタラクションを別々に(UI専用定義とソースコード)で記述していたものをSwiftUIではUI専用定義もSwift言語の仕様の範囲で記述できるように整理された。整理された結果UI定義もプログラミングコードもSwift言語の仕様の範囲で扱えるようになった。
上記のようにUI定義とソースコードの関係を改めつつ、画面構築についてもWebのようなにレンダラーに実際のUI構築を任せるかたちに寄せている。レンダラーに任せることでiOS,iPadOS macOS, watchOSでの依存処理をできるだけ取り除きAppleがいうところのマルチプラットフォームを実現している。
2010年台のプログラミング技術の知見を反映しつつSwift言語仕様やSwift言語仕様に近しい拡張まで駆使して理詰めで構築したのがSwiftUIである。
2020年5月現在メジャーリリースとしては2回目でWWDC2021では3回目のメジャーリリースとなる。
2) SwiftUIを取り巻く状況
モバイルアプリ市場は10年越えへマルチプラットフォーム開発用の基盤として喧伝されたSwiftUIであるがその足元は揺らいでいる。
iOSアプリは2008年から開発キットが公開されてからモバイルアプリ市場が立ち上がって10年を超えた。10年前に決められたレシピ、アプリ内課金に関するプラットフォーマーと開発者側の分配比率、プリリンストールされたApple謹製アプリ、アプリを配布する唯一のストアについてはそれが正しいかどうかは別としてそれぞれの国の法や経済圏から変更を迫られている。
「App Storeは独占的であり、Appleに有利」米下院小委員会が結論 - iPhone Mania
欧米は10年(ディケード)は一つの節目としてルールを変えることを由としているのかもしれない。Appleとしても10年間優位の立場から変化を求められているのは分かっているだろう。
そんなモバイルアプリの変容を求められるタイミングで登場したのがSwiftUIである。率直に感じたことは良いタイミングではない。
3) SwiftUIのWWDC2021予測
SwiftUIについてマルチプラットフォーム対応をHTML5まで適用し、SwiftUIでWebフロントエンドを記述できるようになるという予想をしたい。Chromeで動作するかは不明だがSwiftUIでの知識があればアプリとWebフロンエンドに対応できるようになるのは開発者としてはメリットが大きい。
唐突な予測だが理由として2点をあげる。
3-1) 予測した理由1:アプリストアを守りたいApple、代替としてのWebアプリ
Appleにとって制御しやすいアプリストアを維持することは価値がある。アプリ内課金により利益というよりかは、モバイルアプリを通して関連デバイス(AppleWatchなど)へアプリをスムーズに導入できることが2021年の段階では大きいと思う。たとえばAppleWatch発売当初は独自のアプリストアは用意されていなかったがiOSアプリからAppleWatchへアプリをインストールすることができた。今後AR/VRについてもアプリから新ハードにアプリをインストールすることが考えられる。
とはいえ国や経済圏からのアプリストア独占の非難をさけるためHTML5によるWebアプリでできることを広げていくかもしれないというのが、SwiftUIをWebフロントエンドに対応する予測の理由1である。実際iPhoneのハードを活用しない限りはWebアプリでも遜色ない動きをするサービスが増えているのでアプリと、WebフロントエンドでUI構築をまとめることができるのは利点だと言える。
iOS14からの写真アルバムから写真投稿の選択肢として、アプリごとに許可した写真しかアクセスできないインターフェイスが提供されている。つまりアプリが全ての写真にアクセスしようとすると待ったがかかる形になっている。Webアプリでに写真アクセスに同様の機能があればプライバシーは守りつWebアプリの価値を高めることができる。
3-2) 予測した理由2:開発者先細りの打開策
Appleはアプリ開発者の母数を増やしたい。iOSアプリはこれまでは人気だったが他Appleプラットフォームに対応する開発者を増やすことは命題となっている。
Qiitaトップページの人気投稿数のスクリーンショットを示する(2021年5月18日)。
学びたい言語としても低下している。
2021年ITエンジニアが学びたいプログラミング言語ランキング、1位は? | マイナビニュース
Githubの人気言語にもSwiftの名前はない
Top languages over the years - The State of the Octoverse | The State of the Octoverse explores a year of change with new deep dives into developer productivity, security, and how we build communities on GitHub.
2位のPythonは機械学習とサーバーサイドなので切り崩しは難しいがWebフロントエンドとサーバーサイドで利用されているJavaScriptは言語のコア機能以外(Lint,TypeScript,Babel)で支えられているところがある。モバイルアプリの堅牢製をWebフロントエンドに適用できるようになればSwift言語に興味を持つ開発者を増やすことができるかもしれない。
またSwiftUIのUI配置ルールはCSSのレイアウト配置に寄せておりiOS, macOS独自考え方から改られているのでWeb開発者に対しては従来のiOSアプリ開発者よりはレイアウトに関しては馴染みがある仕様となっている。
4) 根拠は?
AppleがWebフロントエンドまでSwiftUIに対応する理由はあるが荒唐無稽な話ではない点について3点記述する。
4-1) 根拠1:
2年目となったSwiftUIはWebアプリを前提としているような機能追加だったことである。たとえばiPhoneだとテキスト入力時にソフトウェアキーボードが出るような挙動を真っ先に求められるがSwiftUIでは今のところ切り捨てられている。SwiftUIがWebフロントエンドも前提としているならばソフトウェアキーボードを表示する機能について優先度が低いのも説明がつく。
4-2) 根拠2:
ApplegがHTML5の機能について主導的な役割を持っている企業である点である。独自のWebレンダリングエンジンを保持しておりWeb性能の最適化については不足がない。HTML5の技術であるWebAssemblyにSwiftを対応すればWeb用のバイナリも動作させることは可能だろう。
Webページを生成する際にビルドサーバーを使う場合があるが、SwiftはLinux/Windows10 でもビルドできるのでクラウドベースでWebページをビルドするといったことも現状可能となっている。
4-3) 根拠3:
すでに成功例がある。20年前にRIA(Ritch Internet Application)が流行した際はセキュリティはともかく、Webインタラクションが向上し可能性を示してくれた。仕組みとしてはWeb上の埋め込みオブジェクトとしてコンポーネントを読み込み実行する。20年前はできなかったセキュアで標準の中で機能をできる。
まとめ
iPhone登場以前のAppleはモバイルブラウザSafariを開発し、OS上にWebベースのウィジット機能を用意する、iWebというWebオーサリングツールを提供していたのでiPhone登場から10年以上経過し再びWebフロントエンドに注力しても驚かない。
むしろAppleがAR/VR、Carといった新デバイスに進出するにあたりAppleアプリ開発者の総数が減っていく対策としてWebフロントエンドも可能なSwift言語,SwiftUIを開発者にアピールするのもありなのではないか?