コンテンツへスキップ

WWDC24に期待する10のこと

SportsKit APIやSwiftUIの.zoomモディファイアから、SwiftDataの改善やXcodeのソース管理、tvOSやvisionOSの最大の不満点まで。長年のリクエストと新しいアイデアを織り交ぜてお届けします。

WWDC24に期待する10のこと

Appleが次のWWDCの日程を発表した直後に、Appleのツールやフレームワークで最も足りないと感じているもののリストをまとめるのが、私のちょっとした恒例行事になりました。これらのまとめ記事がAppleのエンジニアの社内での優先順位の確認や調整に役立つことを願っています。そしてこれまで毎年、私が望んだことの33%が実際に実現しています!偶然かもしれませんが、それでも嬉しいです。

これらのアイデアの中にはずっと前にradarを提出したものもあります。しかし多くの場合、最も足りないものを振り返る時間を取ることで、日常の開発では気づかない新しいことが浮かんできます。このリストには定番のものもありますが、思いつかなかったようなものも必ずあるはずです。どう思うか聞かせてください。SNSでコメントする際は@Jeehutをメンションしてくださいね。

ℹ️ 昨年の記事からまだ実現していない3つの願いがあり、依然として必要だと思います:

  1. Xcodeでの手間のない簡単なアプリのモジュール化

  2. 円グラフは実現しましたが、レーダーチャートはまだ!

  3. 通話/録画時に機密コードを隠すXcodeのストリーマーモード

#1 – WeatherKitのようなApple SportsのAPI

Appleが2022年にWeatherKitを導入したとき、驚きました。デベロッパーが無料で使えない初めてのシステムフレームワーク(私が知る限り)でしたが、月500,000コールまでは無料で提供されていました。これはインディーデベロッパーがそれをベースに面白い新しいアプリを書くのに十分な量です。Appleは基本的にシステムアプリのデータ部分を抽出し、デベロッパーに提供したのです。しかもブートストラップ型のインディーにも手が届く価格で!

新しいApple Sportsアプリ

新しいApple Sportsアプリ

米国でApple Sportsアプリが導入されたことで思いました:Appleがそのアプリのデータでも同じことをしたらどうだろう?私はこれまで何年もプロトタイプを作ったものの、手頃なライブスポーツデータAPIがなくてリリースできなかったアプリのアイデアがいくつもありました。それらのAPI価格は大企業向けに設定されています(多くのAPIがそうですが)。しかし、現在スポーツイベントを最高に楽しむ方法がVision Proを使うことだと考えると、インディーがスポーツイベントでの新しい体験を探求しやすくすることは、Appleにとって理にかなっていると思います。

私の願い:WeatherKitのような太っ腹な無料枠付きの新しい「SportsKit」API!

#2 – SwiftUIのScrollViewに.zoomモディファイアを追加

クロスワードパズルアプリCrossCraftのプレイ画面で最初にリクエストされた機能の1つが、関連する文字をよりよく把握するためのズームイン・ズームアウトでした。しかしSwiftUIのScrollView.zoomと入力して関連するモディファイアを追加しようとしたとき、利用できないことに衝撃を受けました!

カスタムMagnifyGesture.scaleEffectモディファイアに基づくGeometryReader、カスタム@Stateモディファイアなどのワークアラウンドはありますが、画像のズームインなど限られたユースケースでしか機能しません。しかし私のビューはScrollViewで、通常のビューとはまったく異なる振る舞いをします。複数のアプローチを試しましたが、期待通りに動作させることができませんでした。たとえできたとしても、スクロールビューのコンテンツのズームは非常に一般的なユースケースなので、ScrollViewにビルトインされ、面倒なことなしに簡単に使えるべきです。

私の願い:SwiftUIのScrollView.zoom(scale:offset:)モディファイア!

#3 – SwiftDataのCloudKit制限を修正

Paul Hudsonが素晴らしいSwiftData + CloudKitの記事で完璧に表現しています:

SwiftData with iCloud has a requirement that local SwiftData does not: all properties must be optional or have default values, and all relationships must be optional. The first of those is a small annoyance, but the second is a much bigger annoyance – it can be quite disruptive for your code.

これ以上付け加えることはほとんどありませんが、すべてのモデルでOptionalからnon-Optionalへのマッピングのためにcomputed propertyを大量に書かなければならなかったことは言えます。安全で、アプリはクラッシュしていません。なのに、なぜSwiftDataのマクロにビルトインされていないのでしょうか?

私の願い:SwiftDataモデルのnon-Optional型がCloudKitで動作すること。

#4 – VisionOSでのウィンドウとボリュームの永続化

ウィンドウやボリュームの位置をアプリの再起動やシステムの再起動・アップデートを跨いで永続化できなければ意味がないVisionOSアプリのアイデアがたくさんあります。例えば、自動更新されるインタラクティブな映画ポスターで壁を飾れるアプリPostersをリリースしましたが、デバイスを再起動するとすべて消えてしまいます。現実の拡張は一時的なものでしかないのです。

VisionOSでPostersを使って壁を飾る様子

VisionOSでPostersを使って壁を飾る様子

Shared SpaceでフルARKitアクセスが得られないことは理解しています。すべてのアプリが同時にARKitを使用して良いパフォーマンスを維持するのは不可能です。それを望んでいるわけではありません。しかし、システムはすでにウィンドウの位置をトラッキングしています。

私の願い:ウィンドウ/ボリュームの位置を(ユーザーの承認付きで)永続化するオプション。

#5 – tvOSでのモーダルテキスト入力(PlayStationのように)

iOS、iPadOS、visionOSではQWERTYキーボードが使えます。既知で高速、入力しやすいからです。しかしtvOSだけは、キーを一列に並べることにしました。その結果、特定のキーに到達するのにQWERTY風のグリッドシステムよりもはるかに時間がかかります。また、テキスト入力がTV画面の全幅を使い上部に配置されるため、メインの焦点になってしまいます。なぜこうなっているのでしょうか?2013年にSonyが実装した、これよりはるかに優れたモーダルキーボードUIを見てみましょう:

PS4のバーチャルキーボード

PS4のバーチャルキーボード

このようなものがないために、キーボードがより面白いビューの付属品に過ぎない体験が不可能になっています。これが欠けているため、CrossCraftをtvOSにも対応させる当初の計画を諦めました。テレビでクロスワードパズルを生成して解くのは楽しい家族の体験になったはずです。しかし現在のキーボードではUXが悪夢です!

私の願い:tvOSにより狭い、QWERTY風のアクセサリーキーボード入力。

#6 – String Catalogエディターをもっと使いやすく

はい、String Catalogsは新しいものです。まだ完全に成熟していないのは当然です。しかし、最も基本的なことさえ壊れています。エントリを右クリックして「Mark as Reviewed」のようなものを選ぶことはできます。しかし複数選択して一括でマークする?できません。下部のプラスボタンで新しい言語を追加することはできます。しかしマイナスボタンで削除する?できません。

壊れた基本機能に加えて、もう1つ非常に理にかなった機能リクエストがあります:UIはすでにパラメータを青色でマークしているので、検出機能はあります。しかし別の言語でパラメータが欠けている場合、警告が表示されません。表示されるべきです!

私の願い:XcodeのString Catalog EditorのUIをもっと使いやすく。

💁‍♂️ アップデート:これらの改善を自分で実装しました!XcodeのString Catalog Editorを基本的に再構築し、私のアプリTranslateKitの完全無料機能として追加しました。ぜひチェックしてみてください!

#7 – 「Create ML」のような新しい「Create LLM」アプリ

Create MLを試したことはありますか?Appleが2019年に導入したデベロッパーツールで、多くのデベロッパーに見過ごされている気がします。分類問題をうまく解決するAIツールです。利用可能なオプションを見てみましょう:

Create MLプロジェクトテンプレート

Create MLプロジェクトテンプレート

しかし、LLMベースの生成AIが新しいトレンドであることは皆知っています。Appleが近い将来出荷する何かに積極的に取り組んでいる証拠もあります。今年消費者向けに何かを発表できると仮定すると、デベロッパーとして欲しいのはCreate MLのようなLLM向けツールです。AppleのコアLLMモデルを自分の専門領域のデータや、さらにはデバイス上に保存された個人のユーザーデータでカスタマイズできたらどうでしょう。驚くべき新しいアプリ体験が可能になり、デベロッパーはそれを無料で手に入れられるのです!

私の願い:ドメイン固有でパーソナライズされたLLMを簡単に作成する方法。

#8 – XcodeのソースコントロールUXの改善

年を追うごとに、XcodeへのGit統合は良くなってきています。昨年、デフォルトのGit UIとしてXcodeに切り替える決断をするレベルに達しました。以前はGit-Forkを使っていましたが、Xcodeへの完全統合は最強です!

Xcodeのソースエディターのスクリーンショット

しかし、いくつか足りないものがあります。まず、Xcodeにはコード差分ビューがありますが、過去のコミットの差分を見る方法がなく、「Uncommited changes」のみです。次に、差分ビュー自体の色の選択が奇妙で、何が削除されて何が追加されたのか理解しにくいです。明確な意味を持つ赤と緑を使うのが一般的で、現在のものよりもそちらの方がはるかに好みです。3つ目に、コミットとプッシュを1ステップで行うには、「Commit」ボタン右の矢印アイコンを押して「Commit and Push…」を選ぶ必要があります。状態を保持するチェックボックスがあれば、毎回複数回クリックせずに済みます。最後に、コミットメッセージを入力してから変更をレビュー中に気になる点を見つけ、ファイルに切り替えて調整し、差分ビューに戻るとコミットメッセージが消えていることがあります!残っているべきです。

私の願い:Xcodeのソースコントロール UXの改善と適切なGit機能。

#9 – SwiftUI Previewsを確実に動作させる

これはSwiftUIの最初期からの悩みの種です。SwiftUIでのデザインはとても便利で高速になれるはずです。プレビューが動きさえすれば。しかし90%の確率でプレビューが動作しません。一般的な解決策はすでに試しました。時々効果がありましたが、効果がないこともありました。SwiftUI Previewsを動作させるためだけにワークアラウンドが必要なのは苛立たしいです。

私の願い:SwiftUI PreviewsがSimulatorでアプリがビルドできるたびに毎回動作すること。

#10 – SwiftUI Previewsでスクリーンショット生成

App Storeのスクリーンショット作成は大変です。手動で2〜3台のデバイスで1言語分なら作れます。しかしローカライズしようとすると、労力が手に負えなくなります。推測ですが、App Storeで見られるスクリーンショットの99%は古くなっていると思います。しかし、そうである必要はありません。

Apple側のサポートが必要です。UIテストの話ではありません。遅いし、余分な労力がかかるし、信頼性が低い。今ではUIテストは書いていません。SwiftUI Previewsがあるからです。上で信頼性が低いと書きましたが、それは事実です。しかし、もし改善されたらどうでしょう?#Previewマクロを使えば、1つのビューで複数のプレビューを簡単に作成できます。そしてビューの初期化時にいくつかの状態を渡すのも比較的簡単です。

私の願い:SwiftUI Previewsを使ったローカライズ済みスクリーンショットを作成するAPI。

まとめ

以上が、WWDC24に対する私のトップ10の願いです。同意しますか?私が見逃しているものは何ですか?

この記事が参考になりましたか?BlueskyMastodonでフォローして、Swiftのヒントやインディー開発の最新情報をチェックしてください。