わふうの人が書いてます。

iOSアプリケーション開発、BLEのファームウェアとハードウェア試作のフリーランスエンジニア。

WWDC2019 Platforms State of the Unionを見たメモ

要点

  • iPadアプリがほぼそのままMacアプリにビルド可能になる。MacOSでカーネルの上にUIKitを含むフレームワークが乗る形。AppKitも平行して横にあるので、従来アプリもそのまま動く。
  • MacOSは、システムはリードオンリになる、ドライバはカーネルからユーザランド側に出てくる、位置やカメラを使うときにパーミションのダイアログが出るなど、iOS的になる。MacがiPadOS化するような感じに移行するのかも?
  • SwiftUIは強力に見える。移行する以外の選択肢はないので、学ぶしかない。

時系列

見ている時間軸で感想。時間は HH:MM:SS 時間が0の時はHHは省略。

  • 00:02:00
    • No more letterbox.
      • 感想: UITextなど、UIは矩形領域を意識するものだったけど、そんな境界はもう忘れて、新しいUIを作ろうという感じがして、いい言葉だなと思うのです。
    • 画面サイズが違う、幅広いデバイスで、UIを展開できるように。
  • 00:03:40
    • Swift、言語、Xcode。ツールは生産性に大きく影響する。
      • 感想: Swiftの言語のオレンジ色のアイコンに対して、SwiftUIにもアイコンが作られている。Swiftの言語のそれの色を青色にしたもので、シンボルとして、これを使っていくのですね。
  • 00:04:35
    • SwiftUIから、プレゼンが入る。
      • 感想: SwiftUIは、大きなUIの設計変更になるから、実際に導入されるのは2年後だろうけど、AutoLayoutのように、そのうち義務化されるのは見えているから、慣れていく必要はあるのでしょう。
      • 感想: iOS12以前でも動くのかだけ要チェックですね。プレゼンでは、1つのビューから移行ができる、すでにあるUIKitなどと競合するものではないから、一部だけ移行していけばいいとありますが。
  • 00:05:25
    • Way Less Code
    • structure , 末尾に見かけを追加していく感じ。
      • 感想: Swift5の言語拡張を利用しているのか、UIの構造をコードの構造で直感的に表現しつつ、見た目の属性もコードにまとめていける感じで、ものすごくスマートな感じがします。実際にデザイナの方が指定したレイアウトをコード表現したらどうなってしまうのかは、やってみないといけませんが。1回、小さな開発を回して、デザインとコードのやり取りフローを見直しておくのがいいかもですね。
  • 00:05:49

    • 例えばリストはとてもよく使うもの。
    • List(mode.items { item in RowContent(item) }
    • Text(“version…”)
    • ローカライゼーション、ダークモードとかは勝手に。
    • コード共有を画面サイズを問わない、全てのデバイスの範囲に広げる。
      • 感想: AutoLayoutは、デバイスクラス単位で指定値を変更できましたが、より柔軟になっているのでしょうか? 要確認ですね。
  • 00:07:23

    • SwiftUIは、Declarative。
    • Button(“Done”, .Done).color()とか。すごく宣言的にかける。Doneボタンを、色はグレイで表示する、とか。大きさやら何やら指定がない。
  • 00:09:43
    • アニメーション。.animation(.default)とか1行的に。
    • アニメーションの割り込み、開始、キャンセルなど、向こう側に。
      • 疑問: state of the unionのSwiftUIのプレゼンを見ているのですが、今までピクセルベースだったりView間のスペース調整などの作業が、まるっとフレームワークの向こう側に行っちゃうのですが、これはもしかしなくても、デザイナの方がコードを書くべき、になりますよね。デザイン要素がSwiftUIの中にある
  • 00:09:54
    • Compositional
    • VStack(alignment: .leading) {
    • Text(item.title)
    • Text(item.subtitle).color(.gray)
    • }
  • 00:10:43
    • Consistent
    • アプリデータの可視化。
    • class Alarms:BindableObject
  • 00:12:46
    • Live development
    • デモ。画面を見ながら、コードで。
  • 00:14:50
    • デザインでのデータは? Preview。PreviewProviderを継承する構造体で、# if DEBUGで、与えられる。
    • ForEach(ContentSizeCategory.common.identified(by: .self)) {
    • item in TrailCell().environment(.sizeCategory, item)
    • }
    • プリビューで、全てのサイズカテゴリを一覧プレビューする方法。
      • 感想: Adobe XDとか、スマホアプリのUIデザインツールがありますけど、こんなコードと同期したプレビュ表示、しかもプレビュがプレビュではなくコードの可視化ツールになってデザイン要素はフレームワーク内部がうまくやってくれるようなもの、デザインツールの立場がなさそうですが、どうなるのかしら
      • 感想: SwiftUIの、Declarative, Automatic, Compositional, Consistent。Doneというボタンをグレイで表示みたいな文章でUIコードが書ける宣言的。アニメなど自動化される。コード構造と対応する形でレイアウトが書ける。アプリデータとViewの自然な結合と表示更新の自動化。
    • デバイスシミュレータ、デバッグでデバイス表示にリアルに反映。
  • 19:32
    • 100%ネイティブアプリ。
    • 自分nのペースで適用。1つのViewからでもいい。既存のUIと共存するから。
  • 20:57
    • Swift、いろんなところに使われる成熟した。ML,AR,iOSアプリ
    • ABI Stability
    • Module Stability
  • 21:50
  • 23:00
    • Xcodeのワークスペース。画面の分割、配置。変更したらアニメーション的に。画面サイズに合わせて、必要なものが必要な時に表示されるよ。
  • 25:00
    • ミニマップがつくよ。
    • //MARK:
    • はミニマップに大きく表示されるよ。
    • 差分のその場表示的なのとか。
      • 感想: まるで別物。1枚のペラっとした板のエディタが、その場の意図でいろんな振る舞い。メニューじゃない感じ。その場ではそういう使い方できるでしょうという、文脈的な?(メニューってありえないのでしょうね)
  • 27:20
    • testing。
    • Location , runtime, Unitがあったけど
    • Test Plansが追加。
    • プラン x Location, Localizations, Locales = スクリーンショット。
      • 感想: スクリーンショットが、言語別に自動生成できて、それがストア提出に使えると。
    • Mac Proで、テストサーバーで、複数のシミュレータ、複数のデバイスで複合テスト。
      • 感想: メモリとコアがたくさんあるProは、こういうテストの並列実行に良いという製品アピールは、それはそうですよね。
  • 29:10

    • Device conditioin.
    • network, thermal. ネットワーク状態や温度を設定してテストできると。温度が上がればプロセッサの速度が下げられるから、画面更新や応答速度に影響するのはわかりますが、そこまでテストケースに入れてみている開発チームはあるのでしょうか。
  • 29:40

    • Result Bundle。テスト結果をファイルに。メールで送り返すとか。内容全てわかるよ。
    • Result Bundle。テストをコマンドラインで走らせて、その結果がバンドルで保存できるよ、それをメールで送るなりしてXcodeで開いたら、全ての情報がそこで見られるよと。半導体シミュレーションでよくあるテスト/ログの運用そのものですね。
  • 30:30
    • App metrix。
    • 消費電力とかディスクとか、いろんなパフォーマンスをモニタ。
      • OSでやってくれないとわからないし、下手をするとプライバシー情報に関わるかもしれないしかしら。プラットホームで閉じているから、プラットホームで提供すればいいのか。
  • 31:00
    • TestFlight Feedback。アプリ画面の下からコントロール的にコメント入力画面が生えてくる。今のテストしているアプリの画面に対して、コメントを返すとかできる。
  • 32:00
    • Mac OS Catalina
    • AppKitベース。
    • UIKitの上にiPad App。
    • 40以上のフレームワークがあるけど、モバイルの制約で移植できないものじゃなければ、動くと。
      • iPadアプリをMacアプリとして動かせる仕組みが提供されるけど、これはiPadアプリ、というより画面を問わない開発環境としてのUIKit、SwiftUIを開発ベースにして、AppKitはだんだん忘れ去る方向なのかしら。
    • Xcodeでチェックを入れてビルドするだけ。
    • iPadアプリ対応。外部キーボード対応、AutoLayout、DynamicType、最新の技術を使う。
    • Mac向けの最適化。iPadアプリにはない、ツールバーの追加とメニューへのアクションの紐付けなど。
  • 36:25
    • iPadアプリのMacアプリ化のデモンストレーション。
    • 左に地名のリスト。右に地球の3D表示で位置が移動する。
    • メニューを追加して、Loginアクションに追加。上のバーが表示されて、アクション実行。
  • 40:30
    • カーネルの中のドライバーをユーザランドに。DriverKit、SystemExtensions。
      • これ、MacのiPad化だよね。iPadでUSBが使えるようになっているけど、そのドライバがどう実装されるのか確認しておこう。
  • 41:00
    • システム領域は読み込みだけに。
    • appから見て、2つ領域
    • OperationgSystem ここが読み込みだけ。2つ領域
    • user data and apps
  • 42:00
    • カメラやマイクロフォンへのアクセスとか。ドキュメントフォルダへのアクセス、許可ダイアログが出る。
  • 43:00
    • WatchOSに入る。
      • 髪が白色で先端だけ紫色で、漫画に出てきそうな、おしゃれな方。
    • 独立して動く、常に接続した状態で、独立した動き。
  • 44:20
    • Supports Running without iso app installation
    • Notification。
  • 45:21
    • Streaming Audio。
    • URL、AVFoundation、とか音楽再生。
    • 瞑想アプリとか、実行し続けるもの
    • Extended Runtime。
  • 47:15
    • 開発demo。
    • チェックボックスを入れて、独立して動くように。
    • サインインの画面。SwiftUI。ロケール、英語と、アラビア語? ユーザ名とパスワードフィールド、
    • シミュレータでの画面、リューズで動くUI
  • 50:00
    • アプリをどう見るける?
    • Discovery
    • ストア表示、結構レビューとか、概要とか。直接ダウンロード。
  • 51:50
    • iOS13。
    • ダークモード。
    • Semantic Colors。
    • 背景は真っ黒、その上のマルチタスク的なレイヤーは、もちょっと明るい背景色で。
  • 53:45
    • Cards
    • 最初はフルスクリーン。画面がポンと出て、いまどきのSNSアプリだとよくある感じ。
    • Contextual Actions。
    • Symbols
    • テキスト、ダイナミックタイプで拡大いけるけど。
    • フォントと連合して動く、UIImageで。SF Symbols。絵文字的な、視覚的な。統一して。文字と統合されたアイコン的な表示。太さとか、大きさ、ベースライン。
  • 56:30
    • iPadOS
  • 57:14
    • マルチなアプリの画面。
    • SceneDelegate、UILife cycle。AppDelegate,。
  • 58:07
    • PencilKit
  • 58:51
    • Productivity Gesture
    • Undo Redo gesture、3本指で。
  • 01:10:00
    • Privacy, それがどうごくか。
    • デバイスで動く、最小のデータ収集、パーミッションを尋ねる。
    • 位置情報、onceが追加。その時限りの。
  • 01:13:00
    • ログイン。
    • 個人だけじゃなくて、会社のため。
  • 01:20:00
    • 機械学習色々。
    • OCRとか、画像の主題の検出とか。
  • 01:29:00
    • Siriショートカットにパラメータ渡し。会話的に。
  • 01:30:00
    • Automation。トリガーで、動作を入れ込む。
  • 01:31:00
    • AR。
    • エンターテイメント。家具の購入での、3.4倍。
  • 01:35:00
    • コードでも。
    • RealityKit,アプリに、ヘリコプターでのツアーのARを追加する例題。
    • RealityComposer、