- ニュース

写真:Apple
Appleは今年のWWDCで、自社のプラットフォームすべてに惜しみない注目を注ぎました。新型Mac Proも初公開されました。しかし、それほど大きな話題にはならなかったものの、今年の開発者会議で最も重要な発表となるかもしれないもう一つの発表があります。それはSwiftUIです。
SwiftUIは、開発者がApple製品向けアプリを開発する方法を根本的に変えると期待されています。そして、それがなぜそれほど重要なのかを理解するのに、技術者である必要はありません。
SwiftUIにより、Appleはスティーブ・ジョブズの最後の遺産の一つを手放す
1997年にAppleに復帰する前、スティーブ・ジョブズはNeXTという会社のCEOを務めていました。NeXTSTEPと呼ばれる最先端のオペレーティングシステムを開発していました。NeXTSTEPのアプリケーションは、Objective-Cというプログラミング言語で開発されていました。
AppleがNeXTを買収したのは、当時Macに搭載されていた老朽化したSystem 7に代わる、輝かしい次世代OSが必要だったからです。クパチーノはNeXTSTEPをMac OS Xへと改良し、後にmacOS、iOS、watchOS、tvOSへと進化を遂げました。
何年も経った今でも、内部を覗いてみると、Appleのプラットフォームの起源ははっきりと分かります。Appleのコードで使用されているオブジェクトクラスの名前は、「NeXTSTEP」の頭文字「NS」で始まります。
しかし今、SwiftUIのおかげで、AppleはNeXTの最後の残党から脱却し始めています。NSObjectなどはまもなく歴史の彼方に消え去るかもしれません。これはまた、OS Xのリリース以来、Objective-Cからアクセスできない最初のApple APIであり、この由緒あるプログラミング言語の終焉の始まりとなる可能性があります。
SwiftUIの登場は、まさに一つの時代の終わりであり、新たな時代の始まりです。しかし、SwiftUIとは一体何なのでしょうか?そして、さらに重要なのは、Appleのエンドユーザーにとって何を意味するのでしょうか?
SwiftUIとは何ですか?
今週まで、開発者はMacとiOS向けのアプリを開発するためにAppKitとUIKitを使う必要がありました。これらのAPIは、ボタン、スクロールリスト、入力フィールドといったユーザーインターフェース要素を作成するために必要なツールを提供します。しかし、その起源はNeXTSTEPにまで遡るため、これらのAPIは時代遅れになりつつあります。
ソフトウェアは古くなるにつれて、技術者が「技術的負債」と呼ぶものが生じます。つまり、たとえ使い慣れていて使いやすかったとしても、より優れた現代的なアプローチに切り替えるために必要な時間を投資した方が得策だということです。そして、まさにこうした切り替えこそがSwiftUIの真髄です。
Appleが2014年のWWDCでObjective-Cの後継となるSwiftを発表した際、「Cocoa [AppKit] とCocoa Touch [UIKit] の両方に完全にネイティブ対応」すると宣伝されました。そして、クパチーノの技術力のおかげで、Swiftはまさにその通りになりました。ある意味。
Appleは常に、ある技術から次の技術へとスムーズに移行することに長けています。OS Xへの移行時には、ClassicフレームワークとCarbonフレームワークを採用し、古いアプリとの互換性を維持しました。同様に、PowerPCからIntelチップへの移行時には、Rosettaシステムが古いチップから新しいチップへの命令をシームレスに翻訳しました。
同様に、Cupertino は AppKit と UIKit を Swift と互換性を持たせるという素晴らしい仕事をしました。しかし、API は古く、使用期限が近づいていることがわかります。
SwiftUI により、Apple は NeXTSTEP のレガシーを完全に廃止し、Swift 開発用の新しいネイティブ API に根本から置き換えることができます。
SwiftUI の何がそんなに優れているのでしょうか?
新しくて今までと違うかもしれませんが、SwiftUIの本当の魅力は何でしょうか?開発者にとって魅力的な点はたくさんあります。しかし、あなたや私のようなAppleの常連ユーザーにとって、期待できるメリットは主に3つあります。それは、より多くのアプリ、より優れたアプリ、そしてMacとApple Watchのサポート強化です。
1. アプリの増加:新しいタイプの開発者の獲得
SwiftUIは、Appleを最新のプログラミングトレンドに完全に適応させます。宣言型の構文を採用しており、これはJavaScriptを使用するWeb開発者の間で既に普及しているプログラミングスタイルです。つまり、Appleのやり方に慣れていない幅広い技術者にとって、SwiftUIはすぐに馴染みやすいものになるでしょう。新しい開発者がSwiftUIに慣れやすくなることで、SwiftUIは全く新しいタイプの開発者をプラットフォームに引きつける可能性を秘めています。
2. 真のネイティブアプリ:開発者にクロスプラットフォームAPIの廃止を促す
FacebookはReact Nativeというアプリ作成ツールを提供しています。JavaScriptでアプリを開発し、iOSとAndroidの両方のデバイスで動作するネイティブアプリとしてコンパイルできるため、非常に人気が高まっています。それ自体は素晴らしいのですが、このようなクロスプラットフォームツールを使って構築されたアプリは、真のネイティブアプリほど優れたパフォーマンスを発揮することは稀です。
なぜでしょうか? なぜなら、ネイティブアプリは動作させるために、サードパーティ製のライブラリという形で大量の追加コードを必要とするからです。その結果、Appleのツールを使って開発されたアプリよりもサイズが大きく、動作が遅く、システムリソースとバッテリーの消費量が多くなる傾向があります。真のネイティブアプリという感覚を持つことはほとんどありません。
SwiftUIの登場により、Appleは開発者がクロスプラットフォームAPIに頼る理由を一つ減らしました。SwiftUIは開発をはるかに迅速かつ容易にし、宣言型の構文によりReact開発者にとっても導入が容易になります。
3. MacとApple Watchのサポート強化:開発者がクロスプラットフォームでコードを使えるようにする
AppleのプラットフォームはすべてObjective-CとSwiftをサポートしているため、開発者はこれまでもコードを再利用できました。しかし、今週までユーザーインターフェースのコードは再利用できませんでした。これは、各プラットフォームが独自のフレームワークを使用しているためです。MacはAppKit、iOSはUIKit、watchOSはWatchKitを使用しています。アプリを3つのプラットフォームすべてで動作させるには、開発者は3つの異なるバージョンのユーザーインターフェースコードを作成する必要があります。
SwiftUIは、すべてのAppleプラットフォームで同じフレームワークがネイティブに利用できるため、これらすべてを変えると期待されています。しかし実際には、プラットフォームごとに異なるため、それほど単純ではないでしょう。iPad Proの広大な画面に最適化されたアプリは、Apple Watchの小さな画面には簡単には対応できないでしょう。
それでも、開発者がプラットフォーム間でより多くのユーザーインターフェースコードを再利用できるようにすることで、長期的には、SwiftUI は開発者が Apple のすべての製品を採用することを促す上で Project Catalyst と同じくらい重要になる可能性がある。
SwiftUI で構築されたアプリがいつ登場する予定ですか?
現在、SwiftUI は Xcode 11 の一部としてベータ版です。開発者は、実際に SwiftUI を使用してアプリの構築を開始する前に、数か月間 SwiftUI を試用することになります。
XcodeはiOS 13のリリースに合わせて9月にベータ版から正式版になる見込みです。そして、SwiftUIの開発が本格的に始動するのはその時です。しかし、その時でもフレームワークの機能が完全ではない可能性があり、必要なAPIがまだSwiftUIで利用できない場合、開発者は引き続きAppKitやUIKitに依存することになるかもしれません。
Photoshopのような大規模で複雑なアプリの開発者が移行するには、長い時間がかかる可能性があります。そのため、AppKitとUIKitはしばらく残るでしょう。
とはいえ、SwiftUIがAppleにとって重要な新たな章の始まりであることは間違いありません。長期的には、開発者だけでなく、Apple製品を使用するすべての人にとってメリットとなることが期待できます。今週は、Appleにとって非常に重要なマイルストーンとして歴史に刻まれるかもしれません。10年後には、Appleのルーク・ドーメルが「今日のApple史」という記事でそのことを振り返ることになるでしょう。