ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Xcode 11の新機能
アイデアをかつてなく迅速に製品化するために設計された、Xcode 11の新機能を紹介します。ソースコードを編集および整理する新しい方法、ユーザーインターフェイスを設計およびプレビューするための新機能、デバッグとテストのための優れた改良点についてご確認ください。また、デベロッパツールに関する今年のセッションの概要もご確認いただけます。
リソース
関連ビデオ
WWDC19
-
ダウンロード
(音楽)
(拍手) おはようございます
Xcode 11には 多数の改良を加えました いずれも 皆さんのアイデアが― 形になるまでを 支援するものです 生産性を高め 浮いた時間を 次の新たな構想に 使ってほしいのです そこで 今年は― 効率性と速度の向上に 焦点を当て 基本的なワークフローを 見直しました 見ていきます
まず Xcode 10のおさらいです エディタのモードは主に3つ Standard Assistant Versionです ツールバーで 切り替えるようになっています
Version Editorもモードが3つ Comparison Authors Logです このように多数の機能があり 適切に選ぶ必要があります 柔軟性の向上を 求める声を受けて いくつかの改良をしました
まず ソース管理のLogを インスペクタに移動させ いつでも使えるようにしました メインエディタの作業を 中断せずに使えます
次に 各エディタペインの モード変更を 独立させました ファイルの種類が異なれば 作業も変わるからです AssistantとAuthorsを メインツールバーから エディタペインに移しました これで エディタごとに選べます
Assistantを使用する際の ウインドウ分割が― Xcode 11では いつでも どこでも可能です 同じウィンドウ内で 縦にも 横にも 分割できます
今年は その他にも多数― 作業を楽にする機能が 追加されました
デモを見てもらうのが 一番でしょう ブレンダンが担当します (拍手) ケン ありがとう
ワークスペースを 管理しやすいように改良しました 大きく変わったのは エディタ分割とAssistantです まず Assistantと付随する― SwiftUIキャンバスを説明します エディタの右上のメニューで エディタの動作を管理できます “Editor in Canvas”に 設定すると プレビューがある時 それが表示されます 今は 何も表示されていません しかし ファイルを切り替えると キャンバスが現れ プレビューが出ます
Assistantも同様です メニューで “Assistant”に切り替えると インターフェイスが表示されます
しかし Assistantのない ファイルにすると 表示されません スペースの無駄がなく 切り替える手間もありません
ソースファイルに戻すと 再び― Assistantが現れます 次は エディタの分割について 説明します Assistantは不要なので 閉じましょう
分割方法はいくつかあり 1つは メニューの隣にある “Add Editor”ボタンを押します 2つのエディタが現れます それぞれのエディタごとに コードカバレッジ等のモードを 有効にできます 新たなエディタに ファイルを読み込むには クリックするだけです
3つ目のエディタを開きましょう
左のエディタの“Add Editor”を押し 分割します Optionキーの長押しで 分割方向を変えられます アイコンが回転します
下にエディタが現れました クリックで ファイルを―
開きます
先にファイルを選んでから エディタを選びたい時は Destination Chooserを使います OptionとShiftを押しながら ファイルを選ぶと表示されます Returnキーを押すと アクティブなエディタに決定 新たなエディタを開く時は 矢印キーかマウスで― どこでも好きな位置に 挿入できます 標準のショートカットも 使えます タブやウィンドウの 切り替えができます とても便利で 有用です この地球の下に挿入しましょう Returnを押し― 好きな位置に ファイルを開くことができました では 1つのファイルに しばらく集中したい時は?
Focusモードを使います “閉じる”ボタンの 隣にあるボタンを― クリックすると エディタを拡大できます そこで Source Editorの 新機能を紹介します
私もお気に入りの ミニマップ機能です
メニューにあります “Minimap”を選び 見やすいよう拡大します これはコード全体を 見れる機能で コードの概要や構文の色を 確認できます 言わばナビゲーションです マウスオーバーすると 各要素の名称や つながりを教えてくれます 変更箇所やブレークポイントに 印が表示されます ここの文字は 私が整理のため入れたマークです クリックすると ミニマップとエディタに― 同じマークや 仕切り線が表示されます
一時的な情報も見られます 例えば検索を実行します
一致箇所がすべて表示されます 今 見ている場所や その前後が分かるように 他の部分は薄く表示されます
これがミニマップです ソースコードの面での 改良点は 例えば この宣言のような シンタックスハイライトです ハイコントラストなど 明暗用のテーマも追加
ドキュメントコメントも 読みやすくするため 新スタイルを採用しました ドキュメントコメントの構成を Xcodeで 管理しやすくなりました 一例を見せます ここに1つの関数があります 新たにパラメータを追加し― “Double”にしましょう これに数値を与えます この下のパラメータを 使うことにします ここで“Add Documentation”を 使うと― コードとの差を解消できます
マルチカーソルも使えて 直したい箇所が多くても 簡単です
これで完了です さて こんな大勢の人が 見ている壇上で― タイプミスをしたとします Add Documentationと コード補完のせいでミスが拡大 でも“Edit All In Scope”を使えば 素早く ミスを一掃できます 署名も コードも ドキュメントコメントも 一度に直せます (拍手) 最後に ぜひ紹介したいのは チェンジバーの機能強化です ここに先程の変更箇所があります チェンジバーは― どの行が変更されたかを 表示してくれます マウスオーバーで 詳しく見られます
そして 新コマンド “Show Change”で― Inline Diffを表示できます どの部分が どう変わったかも分かります 変更を加えれば 即座に反映されます
Source Editorについては 以上です 再度 “Focus”ボタンを押し― 元の画面に戻します 最後に ざっと変更点を見直して 終わりにします “Code Review”ボタンを 押すと Focusモードと同様 全画面で見直せます もう一度 クリックすれば 戻ります Xcode 11の変更点について 駆け足で紹介しました 以上です (拍手) ブレンダンでした ミニマップは私も好きです Source Editorの新機能は スペルチェックや― Inline Diffの他にも 多数 追加されています しかし 今年 特に力を入れたのは コード補完の機能の強化です
コンパイラ制御文の コード補完ができました
非常に確実なコード補完です このように 列挙型のpendingでも 使えます
いいですね (拍手) 関数オーバーロードの コード補完もあります 以上は コード補完の改良の ほんの一部です
次に ワークフローに 着目します
今年はSwift Package Managerが 大きく変わりました 導入以来 利用可能な パッケージは増え続けており コミュニティ内で 活用することができます パッケージは コードを細分化する― 優れた手段でもあります
今年 これをXcodeと 完全に統合しました あらゆるプラットフォームに 利用できます (拍手)
最高の形で Xcodeに 統合されました ソース管理からデバッグ テストまでです パッケージですることは すべて プロジェクトと 同じように動作します 既存のものを 楽に利用できますし 自分のパッケージの 作成や共有も簡単です
多数のサービスとの統合により 数回のクリックで 優れたコードに行き着きます 気に入るものがあるはずです Xcodeでの活用法を パトリックが話します (拍手) ありがとう ケン 皆さんに見てもらうのが 楽しみです
旅行アプリケーションで デモをします まだ 天気情報の機能が ありません 一から作りたくありません 幸い 使えるパッケージが あると聞きました それを追加します
Project Editorを開き プロジェクトを選択 新しい “Swift Packages”タブで― 現在 依存している パッケージが見られます プラスボタンで 追加できます GitHubにログイン済みなので リポジトリなど― すべてのパッケージが 見られます
天気予報がありますね “next”を押すと Xcodeが自動的に 最新バージョンを 入力してくれています 私が欲しいのも最新版です
“next”を押すと 依存性が分析されますが 単純なパッケージなので すぐ終わります
最後に リンクさせる ターゲットを選択します アプリケーションを選んで 終了です
Dependencyに追加するだけで 設定が完了します (拍手) ナビゲータの “Swift Package Dependency”から ソースを見られます プロジェクトの一部ですからね
これを実装したいファイルは まだ何も機能していない このWeatherFetcher.swiftです
すぐにForecastモジュールを インポートできます
まず Forecastオブジェクトを 作ります
渡された地域を使います このAPIをよく知りませんが Xcodeでは 第一級オブジェクトなので すぐ定義にジャンプし ソースを閲覧できます
スクロールします この “Observations”メソッドが― 私の使いたいメソッドです 更に詳細を見てみましょう Xcode 11の新検索機能が 使えます Command + Shift + Fを 押します
検索範囲を Forecastパッケージに絞ります “Observation”で検索 パッケージの検索結果です ここで定義されています この列挙型には 選択肢が複数あり― APIが返す値のようです 気温や降水量などです 私が使いたいのは 気温だけです Command + Shift + Jで 戻り― WeatherFetcherに 実装しましょう Forecastオブジェクトを使い― メソッドに日付を渡します 欲しいのは “highTemp”と “lowTemp”です 完了ハンドラを記入し 結果から気温を取得します そして completionを呼び出します
conditionのメソッドも 同様に記入して取得します
ビルドして 実行し 結果を見てみましょう Planタブから― サンフランシスコの 天気を見ます 気温と予想される天気が 出ました 後半は雨なので 上着が必要ですね
Swift Package Dependencyの利用は こんなに簡単です ケンに戻します (拍手) ありがとう
この新機能の土台となるのが Xcodeのソース管理です 今年は 更に便利になりました まず Git Stash 変更を一時退避する機能です (拍手) “Source Control”メニューから 作業中の変更を 素早く退避できます
退避した内容の表示は― ナビゲータから可能です Cherry-Pickも使えます 履歴か コンテキストメニューから選び ブランチ間を 簡単に移動できます そして いつでも全ファイルの ソース管理履歴が ヒストリーインスペクタで使えます 非テキストファイルにも有効です (拍手)
昨日 OSの新機能を お披露目しましたが 今日にも導入可能です
iPad Appを Macに移したら― バーから Macデバイスを選び カスタマイズできます 素早く簡単に Macに合わせられます
新しいダークモードにも このシステムが役立ちます デバイスバーで モードを切り替えて 見た目を確認できます
SF Symbolsも 完全に統合され 設定はインスペクタで選べます 記号やフォントのサイズなどです 新しいライブラリで 全部を見ることもできます ドラッグで使えます
独自のリソース つまり 色や画像や― アセットカタログも重要です デバイスの種類や モードによって変えられます しかも コードを書く必要は ありません
Xcode 11と iOS 13では カスタム記号を作れます SF Symbolsの優れた特長を 生かせます 様々なサイズや 太さの記号が指定できます 実行時に システムが 適切な物を選びます ユーザのフォントサイズや アクセシビリティ設定― 使用場所などにより 選択されます ダイナミックな画面を作る 強力な方法です
また アセットを ローカライズできます アセットを選び Localizeボタンを押し 好きにカスタマイズできます (拍手) とても重要です
では リサが デザインツールのデモをします ありがとう ケン こんにちは iOS 13の新機能 ダークモードとSF Symbolsの― 導入方法を説明します 旅行アプリケーションで やってみます
メールとパスワードに 2つの画像を使っています これをSF Symbolsに変更して Dynamic Typeに対応させます
ライブラリに いい画像が2つありました envelopeとlockです これに変えましょう
メールのアイコンをクリックして インスペクタを開きます Xcode 11では ここに画像のアイコンが出ます 画像の名前が 見られるだけでなく どんな画像かも分かります それを見て選べます そこで… (拍手) いいですよね “envelope”と打ち込むと いろいろな envelopeの 一覧が出ます “envelope.fill”がよさそうです 記号の設定は― Dyanmic Typeに対応するよう “Font”とします フォントサイズも変えられます 大きい “Title 1”にしましょう
パスワードのアイコンも 同様にします “lock”と打ち込み スタイルに合う “lock.fill”を選びます ここでも設定は“Font”にします
次に ダークモードにして 見てみましょう デバイスバーに モードを変える― スイッチがあります
ビューが更新されました ですが 少々問題があります カバンの取っ手が消えました どうしたのでしょう 元に戻すと― 取っ手が黒いのが分かります 暗い背景には 合わないようです そこでダークモード用の 別バージョンを作ることにします デザイナーの知り合いが ダークモード用の画像を 作ってくれました 変更しましょう 画像を選択して この矢印をクリックします すると この画像が開きます “Dark Appearance”を 有効にして
新しい画像を そこにドラッグします
Storyboardに戻ります
ライトモードでは 元の画像が使われています 切り替えると― 新しい画像に代わっていますね (拍手) デザイナーは完璧主義です この青いボタンは ダークモードでは― あまり目立たないと 感じたようです オレンジ色に 変えてほしいと言います その方法を説明します ボタンを選択すると
今は“ButtonColor”という色に 設定されています ライトモードでは この青いボタンを使用します ですが ダークモードでは― オレンジ色にしたいのです 画像と同じように 簡単にできます インスペクタで “Dark Appearance”を有効にします “Dark Appearance”の色を オレンジにします 戻しましょう
オレンジ色の方が 見やすく かっこいいですね では 実行時の見え方を確認します ビルドして シミュレータで実行します
ここで登場する新機能が― Environment Overridesです デバッグバーにあります クリックすると 様々な設定を変更できます システムや アクセシビリティの設定です ライトモードから― ダークモードに変更します
ビューを見てみましょう いろいろな設定が可能です
例えば 太字にもできます
この機能を用いれば シミュレータやデバイスの 実際の設定を変えずに― 様々な設定で 実行時の動作を試せます 他にも… (拍手) このスライダーで Dynamic Typeのサイズを変更して ビューを確認できます (拍手) この2つのSF Symbolsの 設定は― Fontにしていましたね ですから Dynamic Typeの 設定を変えると テキストと同様に反映します
非常に簡単な編集で 優れたビューを作れました 皆さんも試してみてください 以上です ケンに戻します ありがとう ダークな画面もいいですね ユーザが デバイスを使用する際 ネット接続や温度などの 条件は変化します これは再現が難しいため デバッグも大変です Xcode 11ではデバイスの動作を 変えられます ネット回線容量や― 温度条件を変更できます
DEVICE CONDITIONSセクションで “Network Link”を調節して― シミュレーションが可能です 温度条件も調節できます 実際よりも高い温度での 動作を確認できます デバイス上にインジケータが 表示されるので タップすると 現在の条件が 確認できます Xcodeとの接続を切れば 自動的に 停止させることができます あらゆる条件で 動作を確認できる 優れた方法です
テストも改良を続けています 今年導入した テストプラン機能です スキーム間で 共有できるテストを 定義できます いくつもの設定が可能です 例えば どの引数を渡すか― 使用したい環境変数など サニタイザーも指定できます テストプランを実行すると あらゆる設定でテストします 例えば アプリケーションが 対応する― 各言語のテストができます テストプランを実行すると 1つのアクションで 全言語をテストします もちろん XcodeのServerで実行可能 複数のデバイスやシミュレータを 同時に― これまで以上に多数の設定で テストできます
Macでの iPadアプリケーションのテストや SwiftUIにも有用です
テストは以上です
シミュレータにも すごい改良を加えました
独立型の Watchアプリケーションを Watchシミュレータで 直接 使えます iPhoneシミュレータは 不要です
(拍手) しかし 今年の目玉は Metalのシミュレータです (拍手) Metalを用いたアプリケーションを 実行できます すばらしいグラフィックです Metalをベースとする UIKitなども― 非常に高速です
1秒60フレームの美しさを 見てください CPU利用率は 最大90%削減されました バッテリー寿命も向上します
ええ (拍手) 他にもあります ウォームブートの速度が 2倍になりました (拍手) シミュレータは以上です
昨年 導入したOS Signpostsと Custom Instrumentsは 自分のデータを 浮上させるツールです 今年は トラックの階層化を導入し データの探索や 関連付けを容易にしました OS Signpostsでは ログを取るカテゴリごとの― トラックを取得します それを固定して 他のトラックとの相関を 確認できます
SwiftUIの新テンプレートも 導入しました UIの構築に どのくらい 時間を費やしたかを 知ることができます Metal System Traceの テンプレートも書き直しました 新しい階層トラックを活用し その速度は― 10倍になっています
さて SwiftUIの話をせずには 終われません UIを構築する 全く新しい方法です シームレスに 編集から実行 そして― デバッグができます 新しいプレビューで 実際のUIが見られ この3つの作業を 1つにまとめられます
編集です
UI開発の未来です
プレビューから インラインエディタまで UIコードの構築方法を 再考しました 効率性と直接的な操作に 主眼を置き― なるべく文字を打たずに 書けるようにしました ドキュメントコメントも 新しくなり 迅速にコードを書けます 新しいチュートリアルがあり コードを書く際に 指針とすることができます
プレビューは 新規のプロジェクトでなく 既存のアプリケーションで 使えます UIViewRepresentableの プロトコルを 実装するだけですから 簡単です
iOS macOS watchOS tvOS どれでも― 今日から始められます
Xcode 11について話しました ありがとうございました (拍手)
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。