WWDC19 速報レポート 1日目
WWDC19 で注目したい新しいテクノロジー
iOS Developer の視点編

Apple World Wide Developers Conference に来ています。同僚が Google I/O や Vue Conf に行った時頑張って毎日速報レポートを書いていたので そのプレッシャーもあり 、私も連日速報レポートを掲載することにしました(白眼)。それらのカンファレンスレポートは当ブログの過去の記事をご覧ください。

前置き:今回の連載レポートについて

WWDC は 5 日間もあり、5 本も同じようなテンションの記事が流れるといまいちな気がするので、出発前の構想として、それぞれの日のレポートでロールプレイをすることにしました。題して、「〇〇の視点 WWDC の速報レポートシリーズ」です。

WWDC はターゲットがデベロッパーが中心にはなると思うのですが、様々なロールの方が参加されていることもあり、自分も仕事によってはロールを変えることがあるので、一日ごとにセッション内容をメインにしつつ、ロール違いの視点でみたレポートをお届けします。

  1. iOS Developer の視点 - WWDC19 で注目したい新しいテクノロジー ← 今回
  2. UI Designer の視点 - これからの iOS アプリの UI デザイン
  3. Apple のヘルスケア関連新サービスと、WWDC の健康アクティビティ、アメリカのヘルスケア産業
  4. DevRel の視点 - 会場運営における UX/UI デザインの工夫、エンジニアがグッとくる Apple の魔法
  5. Frontend Engineer の視点 - Safari と WebKit の進化ほか

1 日目レポート

というわけで「〇〇の視点 WWDC の速報レポートシリーズ」 1 日目は<iOS Developer>編です。

WWDC の初日はセッションは例年通り 3 本のみで、「Keynote」と、デベロッパー向けの Keynote と言える 「Platforms State of the Union」、そして「Apple Design Awards」の 3 つの大型セッションで終了です。

主にこのレポートでは Keynote と、Platforms State of the Union で紹介された内容から注目したトピックをご紹介します。

SwiftUI

一番ダイナミックな変化と言えるのは SwiftUI です。

https://developer.apple.com/xcode/swiftui/

もともと iOS のアプリを開発するには Swift や Objective-C といった言語を使うのが普通です。UI を実装する場合 UIKit (macOS であれば AppKit) と呼ばれる UI コンポーネントフレームワークを経由して開発をしていましたが、この周辺が大きく変わります。

  • コードの総量が非常に短くなる(テーブルビューのためのコードがすごく短くなるサンプルコードなど)
  • macOS の UI も SwiftUI で書くことができるようになる
  • 新しい macOS Catalina 上で動作させれば、ビルド不要でプレビューを表示しながら UI を変更していくことができる(ウェブサイトを作る時の auto reload 的な)
  • ベースとなっていた UIKit / AppKit は Objective-C 言語ベースだったが Swift 言語で一貫する
  • Storyboard で作るよりコードベースで UI を作っていく方向性に
  • Framer / Flutter のような手触り
  • 公式でもとてもわかりやすく、それでいて読み応えのあるチュートリアルサイトが用意されています
  • iPhone iPad / Mac でそれぞれ違うコードを書く必要がありましたが、これからは SwiftUI でベースのコードを同じにしつつ、差分を吸収するコードを多少書きつつ、プロジェクトを同じにすることができるようになる。(Project Catalyst)

macOS のアプリを開発するにあたってコードを別にしないといけなかったのですが、これで「ついでに macOS も対応しちゃおっかなー」という感じで非常に開発のハードルが低くなったように思えます(もちろんそんな簡単なことは現場では起こらないけど...)。macOS 向けにアプリをリリースしたくなった iOS Developer はとても多いのではないでしょうか。

Sign in with Apple

ユーザー認証のために Facebook や Google の認証(〜アカウントでログイン)を今まではよく使用していましたが、新たに Apple も認証機能を提供します。

https://developer.apple.com/sign-in-with-apple/

  • FaceID で認証可能
  • 提供するユーザーデータを選択可能
  • サインインするサービスごとに違うランダムなメールアドレスを生成して、サービス側に本当のメールアドレス伝えないようにもできる(結果サービス側でも本当のメールアドレスを知らなくてよくなるので個人情報の取り扱いのリスクが多少軽減される)
  • macOS, iOS, Web でサポートされる
  • Android, Windows などでも Web つまり JavaScript SDK を使用してサポート可能

アメリカや全世界で議論されている「ユーザーのプライバシーを犠牲にせず、ウェブサービスを提供すること」が一歩前進したように感じます。これは Apple と他社のビジネスモデルの違いによるユニークなポイントなのでしょう。

今後予想されることとして、今まで他社の認証があるアプリは「Sign in with Apple に対応すること」がアプリの審査で必須になっていきそうかなと思ったりしましたので、早めに開発するサービスに取り入れる動きをしていった方がよさそうです。

iPadOS

新しく iPad 専用の OS となる iPadOS が登場しました。iPadOS は、iOS のカスタマイズ版のような形で提供されていくようです。

https://developer.apple.com/ipad/

iPhone → iOS / iPad → iPadOS / Mac → macOS / Apple Watch → watchOS / Apple TV → tvOS という形に。

  • iOS に比べると、ベースは同じ (iOS と同じ foundation)
  • 差分が徐々にできていく感じ
    • ファイル管理アプリに変更が加わりビューがカラム式にできる
    • USB メモリや SD カードを外部ストレージとして認識できる
    • Safari がデフォルトでデスクトップ版のサイトを表示するようになったりダウンロードマネージャーに対応
    • macOS のようにフォントをインストールできる
    • マルチウィンドウ
  • Apple Pencil の API が提供

それぞれのデバイスに合わせた味付けがされていくようです。今から iPadOS 対応していけば、デベロッパーとしては登壇や実績などいい話題を作れそうな気がします。

ARKit 3 / RealityKit / Reality Composer

システムレベルが大きく進化する中、アプリケーションフレームワークも大幅に進化していて、特にやはり今力が入れられている AR 周辺で面白い内容が追加されました。

https://developer.apple.com/augmented-reality/arkit/

  • バーチャルなオブジェクトとリアルな人物の前後関係を表現する People Occulusion
  • CG キャラクターに人物の動きをトレースできる Motion Capture
  • MINECRAFT のインパクトのあるデモ
  • Reality Composer など新しいツールの追加
  • 会場には ARKit 3 が用いられた対戦ゲーム「Swift Strike」が楽しめるエリアも用意

これめちゃめちゃ面白いですね。Swift Strike もやってみました。対戦相手に勝利したのでバッジをゲットしました。

Xcode 11

Xcode 11 が発表されました。エディターとしての進化が色々ありました。

https://developer.apple.com/xcode/

  • Github Package Registry が Swift Packages をサポート
  • Xcode にもパッケージ管理の GUI が統合
  • エディタ部分が 2 つ以上のマルチ分割可能に
  • 賢い Mini Map の追加
  • コメント入力もスマートに(ドキュメンテーション機能)

ついに Swift Packages がデファクト感のあるパッケージマネージャーになりそう...? 新しく発表された 6K Retina ディスプレイを活用できるエディタのマルチ画面分割も登場して、新しいディスプレイが欲しい...(しかしお値段すごい...)。2 日目の「What's new in Xcode 11」セッションで Xcode 11 の詳細をキャッチアップしていきたいと思います。

その他のリソース

Apple Developer Documentation API Diffs / Human Interface Guideline に変更が入っていてこの辺りを追っかけています。例えば HIG の iOS の中に Dark Mode が紹介されていますね。


感想

私は去年・今年と直近 2 年連続で参加していて、その前もキーノートや気になるセッションのビデオは見たりしていましたが、今年は本当に内容が面白い年だと感じました。

特に macOS / iOS がずっと統合されるということを iOS の登場以来ずっと噂されていましたが、それぞれのデバイスに最適化された OS に変わらず進化していきつつ(特に iPadOS の登場など)、開発者のエクスペリエンスはユニバーサルになるように SwiftUI が登場した点。プライバシー・アクセシビリティについてアメリカや全世界で課題解決が模索される中、非常に面白い Apple ならではの手法が登場してきた点など、ずっと前から議論されていたことがこのタイミングでつながっていったことです。

まさに World Wide Developers Conference といった内容で、合計 5 日間(情報量恐ろしい...)ガッチリキャッチアップしていきたいと思います。現在現地時間朝の4時です (白眼)。

ぜひ会場にいる皆様お話ししましょー。お声がけください〜。

告知

6/14 (金)、iOS de KANPAI! (WWDC 2019 報告会) で同僚と一緒に登壇します。良かったらお越しくださいませ〜。