cockscomblog?

cockscomb on hatena blog

WWDC23与太話

WWDC23で発表されそうなことを考える遊びを行う。

Swift 5.9

Swift 5.9は大規模なアップデートになる。特にMacroとVariadic Genericsは、ライブラリの提供するAPIに影響しそうだ。

Macro

Macroは今後のSwiftプログラミング体験を大きく変えていく。自分でMacroを定義することもあるかもしれないが、SwiftSyntaxを駆使するMacroは単純なSwiftコードを書くより難解で、再利用性が高くない場面では正当化しにくい。裏を返せば、Macroが役立つ場面は、多くの人の課題を解決する場面ということだ。

便利なMacroを提供するライブラリは増えるだろうし、それはAppleのライブラリも例外ではない。例えばFoundationフレームワークに(Optional Unwrapなしに)文字列からURLを構築するMacroが(要するに疑いようなく便利なMacroが)追加されたりするかもしれない。

Macroはコンパイル時の機能だから、特別何もしなくてもバックデプロイできるのも嬉しい。

Variadic Generics

Variadic Genericsは、型パラメータを可変長にできる機能である。swift-async-algorithmsなどでも見られるように、複数のパラメータを取るジェネリックな関数ではこれまで、パラメータの数が異なるオーバーロードが複数定義されてきた。Variadic Genericsがあれば、そういうことをせずに済む。これもAppleのライブラリ側に実装される可能性がある。

Observation

この他、まだ議論中のObservationにも注目したい。

Cocoaの時代からSwiftUIに至るまで、データの変更を監視するオブザーバーパターンは重要なイディオムだった。KVOやCombineのような仕組みがそれを支えていた。

これをSwiftの言語機能を利用して実現することが議論されている。KVOはObjective-Cランタイムと紐づいた機能であり、CombineはSwift Concurrency以前の仕組みである。そしてこれらは今日のAppleプラットフォームにおけるGUI開発を根本から支えている。したがって、Swift自体にオブザーバーパターンの仕組みが導入されることは、GUIフレームワークがよりSwiftらしくなるのに必要なステップである。

いずれの新機能もSwiftによる開発体験を大きく改善するもので、WWDC23ではこれらが大きく取り上げられるだろうし、Appleフレームワークにもこれらが活かされていると期待される。

Xcode

Xcodeについてはいろいろと思うところがある人が多いと思う。優れたGUIアプリケーションであるとも思うし、年々改善されてはいるものの、不安定さも感じる。同種のソフトウェアと比較すると拡張性に乏しく、レガシーを引きずっている部分もある。

とはいえ毎年丁寧に改善が行われていて、内部的にはここ数年で大きく変化しているようだ。その成果の一つはおそらくSwift Playgroudsで、1年半ほど前のSwift Playgrouds 4.0のリリースから、ついにアプリを開発できるようになった。内部的にはSwift Packageの亜種のような形でプロジェクトが保存されていて、従来のXcode Projectとは異なる。

WWDC23では、この新しい形式のプロジェクト(を発展させたもの)がXcodeでも利用されるようになると期待したい。従来のXcode Projectは複雑なXMLで、慣れていないとコンフリクトの解消も難しい。また同時に、Swift PlaygroundsではなくXcodeそのものがiPadで動作することも期待したい。これは何年も期待されていることだが、先日のiPad向けFinal Cut ProとLogic Proのリリースで、急に現実味を帯びてきている。

加えて、Xcodeプラグインシステムにも改善を望みたいところだ。単純に、拡張できる場所が広がって、例えばGitHub Copilotの拡張機能が普通に導入できると嬉しい。またプラグインをSwift Packageの形で配布したり導入したりできると便利だと思う。

XR

WWDC23の目玉は、当然XR対応のヘッドセットになると思う。もはや誰も疑っていない。

Appleが近年力を入れてきた技術は、ARKitのようなソフトウェア面も、LiDARセンサのようなハードウェア面も、どれもXRヘッドセットに紐づけて考えられる。もちろんMetaのような強力なライバルが先行している分野でもあるが、それに対してAppleの得意とするUIや完成度の面で一定のアドバンテージを出してくるのではないか。

気になるのはもっぱら価格や発売時期で、特に北米以外での発売が遅れたりしないかが気がかりだ。

SwiftUI

SwiftUIは毎年着実に改善されている。WWDC22ではナビゲーションやレイアウト周りが大きく改善され、その他にもひろく手が入っていた。UIKitとの連携も改善された。それまでは不足しているメジャーな機能が足されていく印象だったが、改善のサイクルに入りつつあるのを感じた。

とはいえ、SwiftUIでは実現が困難なこともまだたくさんある。カスタマイズ性が不足しているところは無数にあるが、特にナビゲーションのカスタマイズできなさは気になる。

また、潜在的に宣言的UIフレームワークのSingle Source of Truth的な発想と相性がよくないと思われる、WebViewのようなコンポーネントをどうするかが未決着だ。WebViewは内部に多くの状態を抱えており、多くの状態は外部から自由に操作できない。例えば「読み込み中」かどうかを外部からコントロールできない。こういったいった制御下に置きにくいビューについて、例えばReactのrefのように、何らかの仕組みが欲しい。

逆にそういった不足を補う方向性ではなく、よくあるユースケースをカバーした便利な機能が追加されることも期待したい。例えば、URLのパスベースでナビゲーションを駆動する仕組みは、SwiftUIそのものに含まれていてもおかしくない。またあるいはiPadのためのLogic Proで見られるような、プロ向けのアプリのためのUIが追加されるとおもしろい。

OS

macOS/iOS/iPadOSについて、あまりメジャーな変化が起きるとは思いにくい。例えばmacOSとiPadOSの統合のようなことは、iPadのためのFinal Cut ProやLogic Proが出た以上、想像できない。

UIの改善は一定の規模で行われるようには想像できる。1年前に出たばかりのStage Managerなんかはいかにも改善されそうだ。ウィジェットもさらなる改善があっていい。もっとインタラクティブウィジェットがあると便利だし、macOSやiPadOSで、もっとウィジェットが使いやすくてもいいと思う。

XRヘッドセットとの関係を考えると、ウィジェットはXRでも使えると便利そうだ。あるいは通知についても、XRヘッドセットに合わせて改良される可能性がある。

App Intentsは進展があることを期待したい。アプリの機能をシステムに公開する仕組みであるApp Intentsは、ショートカットアプリやSiriとの連携に利用できる。これがもっと拡張されて連携可能な箇所が増えるとおもしろい。アプリ間でも連携したい。

Swift Chartsも描画できるチャートの種類が増えると嬉しい。例えばPieチャートとか。

あとは、iPhone 14 Proの常時表示ディスプレイの用途が広がると良いと思う。Appleの地図アプリでは常時点灯ディスプレイにナビゲーションを表示し続けているが、これはサードパーティには開放されていない機能だ。

Web技術

Web技術に関連して、iOS 16ではWeb Pushがついに実装されたりした。Appleは別にWeb技術に関心がないわけではなく、ユーザーの利益を重視してやっていると思う。その流れでは、やはりSafariの更新をOSの更新と分離して、もっと高頻度かつ古いOSに向けてもアップデートされてほしい。

セキュリティ面では、Passkeysに関して、ブラウザ拡張がPasskeysを扱えるようになったりするんじゃないか。

サイドローディング

またご時世的に、アプリのサイドローディングが話題である。Appleも法律には抗えないから、これはいずれできるようになりそう。macOSと同じようにNotalizationくらいはするだろう。WWDC23で発表されるかはわからない。サイドローディングまでいかずとも、ChromiumGeckoのようなWebKit以外のブラウザエンジンくらいは解放されるような気はする。

ハードウェア

M2ベースのプロセッサを搭載したMacが発表されることはありそう。TSMCのN3世代の製品(M3?)にはまだ早いんじゃないか。

発表されそうにないこと

大規模言語モデルを活用したSiriみたいなものはまだ出てこない気がする。Apple機械学習そのものや自然言語処理については着実に利用を広げているが、全体的にオンデバイスを好む傾向にある。例えばHomePodのSiriに今日の予定を聞くと、近くのiPhoneのカレンダー情報を取得して返答する。そういうポリシーだから、大規模言語モデルの活用は遅くなりそうだ。とはいえ機械学習を活用した機能自体はもう少し増えていくような気はする。

以上です

いろいろ考えていくと、何にしても幅広くいろいろ発表されそうだし、楽しみですね。