WWDC24のKeynoteで気になったものを発表します
今年もこの時期が来ました。
そうです、Appleの開発者向けイベントWWDCの時期です。
OSの新バージョンに関する情報やApple製デバイス向けの言語であるSwiftに関する情報など、さまざまな情報が取り上げられるイベントで私が気になったものを少しピックアップしていこうと思います。
はじめに
こんにちは。クラウドソリューショングループのtakinami.sです。
iOSエンジニアとしてエンジニアキャリアを始めた私にとってこの時期はワクワクすると同時に、OSの新バージョン対応に向けて既存のアプリの見直しに追われ始める時期でもあります。
それでは、早速取り上げていきましょう。
Apple Vison Pro日本発売
2024年6月28日に発売開始という情報がさらっと出てきました。
当初2024年末という予測されていたので、これはかなり早まりましたね。
値段が値段なので一般家庭に普及するのはまだ少し先になるかとは思いますが、どのような使い方ができるか考えるのは開発者としてもユーザーとしても楽しいものですね。
このブログでもApple Vision Proに関する記事をいくつか公開しています。
ぜひご覧ください。
visionOSにおけるインタラクティブな体験の設計
Apple純正のvisonOS向けアプリである『Encounter Dinosaurs』のデザイナーによる、ユーザーに対してどのようにVRの世界に引き込ませるような体験を提供していくかという内容のKeynoteです。
特に印象に残ったのはどこで使ってもらう想定のアプリなのかという点です。
『Encounter Dinosaurs』は屋内で4メートルの壁に向かい合っている状況をデフォルトで想定しているそうです。
その想定よりも狭い2メートルの壁しかないような空間であれば、平面に入りきっていない残りの2メートル分がユーザーを包み込むような表示となるようです。
他にも飛行機や電車の中など壁と向かい合っている状況ではない場面では、コンテンツの範囲外は暗く見えるように設定し没入感を高めているそうです。
今はまだなかなかあちこちに持ち出して使うということはしないかもしれませんが、今後スマートフォンと同様に普及した場合どこで使ってもらいたいかきちんと想定することはかなり大事な要件になってくるのではないかと思います。
また、受動的な体験だけでなく能動的な体験も可能なコンテンツであることを明確にするために、アプリの起動時にユーザーの動きに対応していることを明示しているようです。
Keynoteの中でも言っていましたが、世の中に浸透していないうちは何ができるのかをはっきりさせてあげることで、開発側が期待しているユーザーの動きを促せるようにするほうが良さそうですね。
関連するKeynoteページは以下です。
SwiftDataの新機能
SwiftDataとはiOS17より使用可能になったデータ永続化の仕組みです。
私が気になったのはカスタムデータストアについてです。
あらかじめカスタムデータストアを作っておくことで、例えば定義したModelに基づいて永続化していたがJSON形式で永続化するように変更したいとなった場合でも、画面描画をするソースコードを大幅に修正する必要がなくなるといった内容のようです。
バックエンドの部分をローカルだけでなく、クラウドストレージのようなデータストアにも設定できるのではないかと思われ、さまざまな要件に対応できる気がします。
関連するKeynoteは以下です。
UIKitの新機能
個人的にはSwiftUI推しではあるのですが、UIKitもまだまだ現役です。
タブバーとサイドバー
まず、大きな変化だと感じた点がiPadOS18でのタブバーとサイドバーの表示です。
画像はiOSのものですが、タブバーというのは赤枠の部分にあたります。
Keynoteの中では今まで画面の横幅いっぱいに広がっていたタブバーが、画面上部にDynamic Islandのような形で表示されていました。
さらに、サイドバーが閉じられるとタブバーにサイドバーが格納されるというように、バー同士を密接に連動させることができるようです。
これによりユーザーに対してさらにメインコンテンツに意識を向けさせることが可能になります。
UIKitとSwiftUIの相互運用性の強化
一例を挙げると、なんとSwiftUIのアニメーション効果が使用できるようになります。
つまり、これによりどちらのフレームワークを使った場合でも同じアニメーションが実装できるようになります。
フレームワーク間での差異は悩まされるポイントですが、このように少しずつでも同じ動きを実現できるように差異がなくなっていくと嬉しいですね。
UIUpdateLink
iOS18からの新機能で、これまでのCADisplayLinkの後継のような形になるでしょうか。
複雑なUIの更新を頻繁にするようなケースで活用できるもののようです。
サンプルコードをざっくり読んでみました。
let updateLink = UIUpdateLink(view: view)
UIUpdateLink作成時にどのUIView(以下view)に対してのものなのかを設定します。
そのviewが表示されると自動的にアクティブになり、非表示になると非アクティブになるようです。
自分であれこれいじって感触を確かめたいところです。
関連するKeynoteやドキュメントは以下です。
最後に
今年はやはりAppleとしても勢いづけたいであろうvisionOSに関するKeynoteが多かった印象です。
この辺りは引き続きキャッチアップをしていくとともに、XRによる新しい提案ができるよう取り組んでいきます。
また、OSや言語の新しい仕様に則っていくのはアプリ運用においては重要なポイントです。
ライブラリやコードの記述方法にdeprecateになっているものがないか、実装済の機能でもより新しい方法に置き換えて快適な使い心地を目指せないかなど見直すきっかけにしてみてはいかがでしょうか。
WWDC24で取り上げられた技術のサンプルコードやドキュメントがAppleの方でまとめられていますので、目を通してみることをおすすめします。