Appleのプログラミング言語Swiftは、WWDC 2022で幅広いアップデートを受けました。iOS 16とmacOS Venturaに間もなく登場する優れた機能のまとめをご紹介します。
Swift の開発は 2010 年に Chris Lattner によって開始され、2014 年に Apple 開発者コミュニティに導入されました。2015 年 12 月下旬、Apple は Swift とそのライブラリ、パッケージ マネージャー、デバッガーをオープンソース ソフトウェアとして一般に公開しました。
それ以来、Appleは一般公開されており、開発に貢献したい人は誰でも参加できます。また、Appleはほぼ毎年、機能や性能を追加しています。
2022年のWWDCに続き、Swift言語に追加された最も重要な機能を厳選しました。Swiftと、それを補完するUIバックエンドであるSwiftUIの新機能の詳細をご紹介します。
Swift 5.7の新機能
主要なプログラミング言語である Swift では、表面的な生活の質を向上させるアップデートが数多く実施されました。
これらには、アプリのランタイム ワークフローの処理を支援するためのデータ型を示す Sendable Types、定数と変数の両方の形式の値を抽出して動的に処理する Optional Binding、およびデバイスの利用可能な API との互換性を最大限に確保するチェッカーが含まれます。
送信可能なタイプ
アプリを個別のサブセクションに分割し、同時に実行できるようになりました。また、アプリ間でデータの送受信も可能になりました。
さまざまなサブアプリには、中断できない大規模な上書きを伴うアクティブなシステム プロセスに関係しているか、その一部であるため、移動不可として指定されているデータが含まれている場合があります。
送信可能タイプを使用すると、開発者は指定されたさまざまなデータを「送信可能」または「送信不可」としてタグ付けして、アプリのワークフローを改善できます。
オプションバインディング
オプション バインディングを使用すると、アプリは関数内に値が存在するかどうか、またそれが定数か変数かを確認できます。
その値は別の関数、定数、または変数に抽出でき、そのような値のライブ読み取りなどの追加機能を使用できます。
API 可用性チェック機能
アプリは様々なソフトウェアバージョンを搭載したデバイスに導入・インストールされるため、アプリケーションプログラミングインターフェース(API)の可用性はデバイスによって異なります。Swift 5.7の新機能として、アプリ側でデバイス上で利用可能なAPIを確認できる機能が追加されました。また、デバイス上でAPIが利用できない場合に開発者がフォールバックを設定できる機能も追加されました。
これにより、より多くのデバイスでアプリがより適切に機能するようになります。
SwiftUIの新機能
今年のSwiftUIのリフレッシュには、Swift Chartsをはじめとする様々なアップデートが含まれています。プッシュ&ポップナビゲーションスタック、詳細表示が豊富な分割ビュー、マルチウィンドウアプリエクスペリエンスという3つのアップデート分野がここにあります。
ナビゲーションの改善には、Apple Watchなどのデバイスにおけるリストの充実が含まれます。スイッチとビジュアルプレビューを組み合わせた様々なトグルボタンを含む複雑なインターフェースにおいて、SwiftUIはオプションをより適切に表示し、インターフェース要素をより適切なビジュアルスタイルで配置します。
このAPIは、数値や日付など、様々なデータ入力タイプに合わせて、事前に設計されたインターフェースを提供できます。また、データテーブルとその表示のサポートも改善されています。今回のアップデートでは、iPadの設定アプリのように、リストと展開された本体コンテンツを同時に表示する新しい分割ビューも追加されました。
リスト用の新しい小型ポップアップレポートシートも利用可能になりました。アプリ内のインラインテキストフィールドは、入力内容全体を表示するために拡張できるようになりました。
SwiftUIは、ダークモードにおけるUI要素の適応性向上と、インターフェース要素のインラインスケーリング機能の向上もサポートしました。さらに、SwiftUIとUIKitの相互運用性も向上しました。
新しいShare Sheet APIに加え、macOS向けに多数の改善が行われました。デスクトップOSでは、フローティングウィンドウとサイズ変更可能なウィンドウのサポートが強化されます。さらに、iOS 16ではロック画面ウィジェットのサポートも追加されました。
Swiftチャート
Swift Charts を使用すると、アプリにインポートされた図やデータで、ネイティブの外観のチャートを利用できます。
SwiftUI の新しいビューは、リストやチャートなどの既存のビューに加わり、インポートしたデータからチャートを自動生成します。折れ線グラフ、棒グラフ、円グラフ、ヒストグラムなど、SwiftUI でサポートされるチャートの種類は多岐にわたります。Swift Charts は、一般的な線グラフや点グラフに加え、あまり一般的ではない罫線グラフを含む 6 種類のマークタイプもサポートしています。
Swift に統合され、Apple のアプリと同じインターフェースを利用することで、開発者はチャート要素の凡例、色、スケール、不透明度をカスタマイズできます。Swift Charts は、ローカライズ、ダークモードの使用、ダイナミックフォントを自動的に処理します。
チャートにはシステムインターフェースのカスタマイズオプションも用意されています。開発者は背景色の設定、個々のデータポイントを表示するオプションの有効化/無効化、強調表示されるデータパラメータの変更、異なるタイムスケールを切り替えるタブの有効化などが可能です。
Swiftの分散アクター
マルチプレイヤーゲーム、特にピアツーピア環境では、個々のゲームデータを生成、受信し、同じネットワークに接続された異なるデバイス間で送信する必要があります。Swiftの新しいDistributed Actor関数は、マルチプレイヤーゲームをより実現可能にします。
デバッガーが接続されたすべてのデバイスのアクティビティを監視・分析することでエラーを容易に追跡できるネイティブの透過性機能に加え、ボットサポートも追加されました。これにより、ゲームはプレイヤーを他の人間の対戦相手に接続するだけでなく、コンピュータープレイヤーを挿入できるようになります。
分散型アクターは、中央サーバーとピアツーピア接続の両方を使用してゲームを操作し、複数のデバイス間でゲームプレイを提供します。
この機能は、ネットワーク内のすべてのデバイス間でデータを編集および同期し、瞬時に更新する必要があるゲーム以外のコンテキストにも適用できます。
Swift 非同期アルゴリズム
複数のメンバーが参加するクラウドフォトアルバムのような高速データストリームでは、データは予測不可能な間隔で集中的に到着し、システムの更新タイミングとは完全には一致しません。オペレーターにとっては、システムが耐えられないタイミングとデータ量でシステムがハングアップする事態に対処しなければならない場合があります。
この問題を解決するために、非同期データのインポートを処理するSwiftの新しい機能「Async Algorithms」が導入されました。Async Algorithmsはデータストリームをリアルタイムでソートし、設定された小さな時間間隔にクラスタ化することで、予測可能な時間に情報がサーバーに到着できるようにします。
Clock と Debounce により、システムは新しいデータが到着した場合にのみサーバーを起動し、データ ストリームが静かなときに次の入力をスケジュールすることができます。
非同期アルゴリズムを使用してデータ ポイントを結合および分割し、データ フローをさらに最適化することもできます。
Swift正規表現
正規表現は、様々な表現形式を標準化された形式にまとめる技術です。例えば、月、日、年の並び方は地域によって異なる場合があります。正規表現を用いることで、国際的なワークフローにおいてシステムが正しい日付情報を取得できるようになります。
Swift 標準ライブラリに、型の 1 つとして Regex が追加されました。
Swift 5.7の新機能として、改良された正規表現エンジンが挙げられます。これは基本的に、検索クエリに正確なテキストまたはデータ型を一致させようとする検索機能です。この機能は、より具体的なクエリを用いて、大規模なデータベースから柔軟にデータをスキャンするのに役立ちます。
Swift には、正規表現エンジンを組み込む機能が組み込まれました。このエンジンはデータを解析・処理し、開発者が作成したコードで指定されたカテゴリに分類します。分類には、テキスト文字列だけでなく、日付や時刻といったより一般的な情報も含まれます。そして、データが何を表しているかを正確に認識し、標準化することで、他の地域のユーザーや開発者にとって混乱を招く可能性のある地域特有の表現方法の影響を受けないようにします。
検索クエリもより細かく動的になり、さまざまなレベルの一致を設定できます。