View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

WWDC19に戻る

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • 新しいゲームコントローラへの対応

    iOS 13、macOS Catalina、tvOS 13のGame Controllerフレームワークでは、広く知られている複数のコンソールゲームコントローラに新たに対応しています。このセッションでは、新しく追加されたコントローラと、入力の伝達方法について説明します。また、オプションのボタンを処理するために推奨されているベストプラクティスと、macOSへの対応における適切なアプローチも紹介します。

    リソース

      • HDビデオ
      • SDビデオ
    • プレゼンテーションスライド(PDF)

    関連ビデオ

    WWDC20

    • ゲームコントローラの進歩
  • このビデオを検索

    (音楽)

    ゲームテクノロジーチームの ジェームズ・ケリーです Game Controllerフレームワークに ついて 今年導入された新機能や 変更点を説明します

    Game Controllerフレームワークは iOSやtvOS macOS用ゲームの MFiコントローラをサポートします コントローラハードウェアを 共通APIで抽象化し コードを1回書けます データのマッピングは 心配無用です

    今年 サポートするコントローラが 追加されました まず MicrosoftのBluetooth対応 Xboxワイヤレスコントローラ ゲームとのシームレスな統合が 可能になりました 更にはSonyの DuakShock 4コントローラも 新たにサポートされます フレームワークを通じ コントローラ対応の どのゲームにも使えます

    コントローラ対応の 優れたゲームが多くあります 「レイマンアドベンチャー」 「Transistor」 「Sky Force Reloaded」 「Alto's Adventure」 App Storeにあるほんの一例です フレームワークを使えば Xboxワイヤレスや DualShock 4コントローラが使えます プラットフォームはiOS 13 tvOS 13 macOS Catalinaです

    この動画ではコントローラの参照方法や インプットへのアクセス― MFi対応などの UIのベストプラクティスを紹介 古いフレームワークを使った― macOSゲーム用の アップデート方法もお勧めします

    まずは 新しいコントローラ対応への 変更点です

    フレームワークを使用中のゲームは 無償で対応します MFiコントローラ対応なら Xboxワイヤレスや DualShock 4コントローラも使えます

    インプットのアクセスは GCControllerの GCExtendedGamepadProfile経由です

    初心者のためにコントローラの 検出方法を説明します コントローラはGCControllerという クラスで表示されます このクラスはMFi他 すべてのコントローラで同じです シリアルリモートも GCControllerのインスタンスです

    まず接続中のコントローラの リスト取得 GCControllerの コントローラクラスメソッドを使うと 全コントローラの インスタンスのアレイが返ります 接続がなければアレイは空です App起動時に確認し 必要なら接続を

    App動作中 コントローラの オンオフはよくあります ゲーム起動後にオンになったり 電池切れや圏外になったりする場合です

    オブザーバを追加して GCControllerの接続と切断の 通知を取得します application did finish launching with optionsメソッドがお勧めです

    コントローラの インスタンスを取得しました ボタンや他のインプット アクセス方法を説明します

    コントローラの インプットのおさらいです トリガが2つ 方向パッド スティックが2つ

    メニューボタン 4つのフェイスボタン プログラム可能なLEDが4つ 2つのショルダーボタン

    実際のボタンと APIのマッピングです フェイスボタンの例です ゲームパッドプロファイルにある― 4つのプロパティのリストです 4つのフェイスボタンは ここにマッピングされます Xboxワイヤレスコントローラも 同様です

    DualShock 4は少し違います 文字の代わりに シンボルでボタンが表示 インプットのマッピングが あいまいな場合 マッピングに 等価位置の概念を使います

    4つのフェイスボタンが ひし形で配列されるとします 下のXボタンはMFiコントローラの Aボタンと同じ位置なので マッピング先はAボタンです

    右側の○ボタンはBボタン… という風に続きます

    次はL3とR3と呼ばれる クリッカブルなスティックです

    対応しているのはiOS 12.1や― tvOS 12.1 macOS Mojave 10.14.1です XboxワイヤレスとDualShock 4は クリッカブルですが MFiコントローラの一部は違います ではコード例を見ていきましょう

    L3のクリックで キャラクターを屈ませます

    OSが古いバージョンの場合は 対応するAPIがあるかを まず確認します

    しかし 実際のコントローラに クリッカブルなスティックが ない場合は? 左スティックが 新しいか確認します その場合 “屈ませる”という L3にマッピングする操作が 他の方法でも 実行可能にします

    クリッカブルなスティックがあるなら L3のプレスハンドラに割り当てます これで 左スティックで 操作がトグル可能に

    このAPIがないバージョンのOSで ゲームしている場合 代替パスのコードが必要です

    XboxワイヤレスとDualShock 4の APIに追加されたボタンがあります 補助ボタンといって 一般的にコントローラの中央にあります

    まずメニューボタン ポーズメニューの表示や プレイのポーズ用です 全コントローラにあります

    次にOptionsボタン 汎用ボタンですが スピード重視の用途は避けましょう 離れた位置にあるからです 未搭載の場合もあります

    既存のMFiコントローラに 新APIをマッピングしましょう

    メニューボタンは GCExtendedGamepadの buttonMenuプロパティに対応

    このコントローラは Optionsボタンがないので buttonOptionsプロパティは空です

    次はXboxワイヤレスコントローラ

    複数の補助ボタンがある場合 マッピングに等価位置を使います

    この例では 右の補助ボタンはメニューボタンで buttonMenuに マッピングされます

    左の補助ボタンはビューボタンで buttonOptionsにマッピングされます

    中央のXboxボタンは システムで予約済みです

    DualShock 4も アプローチは同じで― ボタンマッピングに等価位置が使えます

    右のDualShock 4の Optionsボタンは buttonMenuにマッピング

    一方 左のDualShock 4の ビューボタンは buttonOptionsに マッピングされます

    中央のPSボタンも予約済みです

    controllerPausedHandlerは 非推奨です 代わりにbuttonMenu APIを 使ってください このコード例を見てみましょう

    メニューボタンで ゲームのポーズや解除をします iOS tvOS macOSの 古いバージョンの場合 まず メニューボタンのAPIが あるかを確認

    あれば― extendedGamepad.buttonMenuに pressedChangedHanderを登録します

    ハンドラ内でポーズメニューを トグルします ゲームをポーズする場合 迅速さが必要なので ボタンを放すより押すことで 動作をトリガします

    この新APIがなくても 旧controllerPausedHandlerで 機能を登録できます メニューボタン押下でトリガされます

    メニューボタンの説明でした 次にOptionsボタンですが 全部のコントローラに 搭載されていません こちらのコード例も見てみましょう

    Optionsボタンで ゲーム中の設定メニューを呼びます

    OSのバージョンが古い場合 まず このボタンがあるかを確認

    実際にOptionsボタンが ないこともあります Optionsボタンが新規か確認し そうなら 他の手段で 設定メニューにアクセスが必要です ポーズメニューの項目にするのも 一例です

    Optionsボタンがあれば buttonOptions.pressed ChangedHandlerに動作を割り当てます Optionsボタンのクリックで 設定メニューをトグルできます

    新APIがなければ 設定メニューにつながる別のパスが 必要です Game Controllerフレームワークに 今年導入された新APIの概略でした

    次はコントローラごとの UIベストプラクティスです ユーザに最高のゲーム体験を 届けましょう

    Game Controllerフレームワークを 拡大したことで 新たな課題があります ボタンやインプットの見た目が コントローラ間で違うことです Bボタンは MFiコントローラと一致しますが Xboxワイヤレスではボタンは赤 DualShock 4は○です

    これをどう扱うか説明します 例えば 機能紹介で ブロックの方法を― ゲーム中に表示するとします ここではブロック機能は GCExtendedGamepadの Bボタンにマッピングされています

    MFiコントローラでは Bボタンを表示します

    しかしXboxワイヤレスは微調整を加え Bボタンを赤にします

    DualShock 4使用時には ○ボタンを表示します 使うコントローラに関係なく プロンプトを理解できます そのためのコード例を見ましょう

    getBlockButtonAssetは 該当のアセットを返します

    まずはプロダクトカテゴリを変更 コントローラの種類を決定する 今年の新プロパティです Xboxワイヤレスの場合は 赤のBボタンアセット

    DualShock 4では 赤の○ボタンアセットを返します 最後はデフォルトで MFiの緑のBボタンアセットです こうして いろいろな MFiコントローラに対応し 将来 追加されるものにも 対応するでしょう ブロックの例に戻ります コントローラごとに アセットを作る代わりに 汎用シンボルを 使うやり方もあります

    等価位置にのみ依存する 汎用プロンプトで ゲーム内ガイダンスを コントローラに関係なく理解できます 右のボタンを押せばいいのは 明らかです

    最後に 複数のコントローラを 同時に接続する場合です それらに対応し 切り替えができるようにしましょう 各コントローラの インプット認識のため フレームごとに引くか インプットハンドラを登録します また最後に使ったコントローラに ガイダンスなどを合わせます

    MFiコントローラを使用中なら MFiアートアセットを表示 DualShock 4のインプットなら 自動的にDualShock 4の アートアセットを使います 最後のコントローラに ビジュアルを合わせることで 直感的な操作性が提供できます

    macOSで以前のゲームコントローラを 実装している場合は 新たな案内事項です

    Game Controllerフレームワークを 採用するだけで MFi Xboxワイヤレスなど 新しいコントローラが使えます ハードウェア間の違いに関わらず iOS tvOS macOS間で Appに統一性を持たせます これにより将来のOSアップデートにも 適合できます

    IOKitなど下位のAPIで ハードコードした方は Game Controllerフレームワークへの 移行をお勧めします 新コントローラは 両方に対応しますから 競合しないよう IOKitの方を削除してください 単一インターフェイスにコード化し 新しいサポートも無料です

    では動画のまとめです

    Game Controllerフレームワークは 共通APIを通じハードウェアを抽象化 コントローラのレベル差を心配せず コードを1回書けます つまりXboxワイヤレスや DualShock 4などの― 新コントローラに 自動的に対応できるのです ですがユーザに 最高の体験を提供するには 使用中のコントローラに合わせ ゲームのUIを変えます 最後に 将来のOSアップデートに 適合するよう Game Controllerフレームワークへ 移行しましょう 詳細な情報は Appleデベロッパサイトを

    以上がゲームコントローラの 更新情報でした ぜひ参考にして 素晴らしいゲームを作ってください

Developer Footer

  • ビデオ
  • WWDC19
  • 新しいゲームコントローラへの対応
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン