WWDC2019 Platforms State of the Unionを見たメモ
- Platforms State of the Union – https://developer.apple.com/videos/play/wwdc2019/103/
要点
- 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を展開できるように。
- No more letterbox.
-
00:03:40
- Swift、言語、Xcode。ツールは生産性に大きく影響する。
- 感想: Swiftの言語のオレンジ色のアイコンに対して、SwiftUIにもアイコンが作られている。Swiftの言語のそれの色を青色にしたもので、シンボルとして、これを使っていくのですね。
- Swift、言語、Xcode。ツールは生産性に大きく影響する。
-
00:04:35
- SwiftUIから、プレゼンが入る。
- 感想: SwiftUIは、大きなUIの設計変更になるから、実際に導入されるのは2年後だろうけど、AutoLayoutのように、そのうち義務化されるのは見えているから、慣れていく必要はあるのでしょう。
- 感想: iOS12以前でも動くのかだけ要チェックですね。プレゼンでは、1つのビューから移行ができる、すでにあるUIKitなどと競合するものではないから、一部だけ移行していけばいいとありますが。
- SwiftUIから、プレゼンが入る。
-
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
- Package
- Github package registoryにSwiftパッケージが入るですね。
- GitHub Package Registry will support Swift packages
- https://github.blog/2019-06-03-github-package-registry-will-support-swift-packages/
- Xcodeがパッケージをサポート。
-
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が使えるようになっているけど、そのドライバがどう実装されるのか確認しておこう。
- カーネルの中のドライバーをユーザランドに。DriverKit、SystemExtensions。
-
41:00
- システム領域は読み込みだけに。
- appから見て、2つ領域
- OperationgSystem ここが読み込みだけ。2つ領域
- user data and apps
-
42:00
- カメラやマイクロフォンへのアクセスとか。ドキュメントフォルダへのアクセス、許可ダイアログが出る。
-
43:00
- WatchOSに入る。
- 髪が白色で先端だけ紫色で、漫画に出てきそうな、おしゃれな方。
- 独立して動く、常に接続した状態で、独立した動き。
- 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、