Android と iOS 開発者向けの Windows アプリ概念マッピングWindows apps concept mapping for Android and iOS developers

このリソースには、Android や iOS のスキルとコードを持つ開発者が Windows 10 とユニバーサル Windows プラットフォーム (UWP) に移行する場合に、それら 3 つのプラットフォーム間でプラットフォームの機能と知識を関連付けるために必要なすべての情報が含まれています。If you're a developer with Android or iOS skills and/or code, and you want to make the move to Windows 10 and the Universal Windows Platform (UWP), then this resource has all you need to map platform features—and your knowledge—between the three platforms.

iOS から UWP への移行 の移植に関するコンテンツもご覧ください。Also see the porting content in Move from iOS to UWP. このドキュメントは、ダウンロードすることもできます。This document is also available as a download.

ユーザー インターフェイス (UI)User-interface (UI)

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
言語を設計します。Design language.

プラットフォーム上のアプリの外観と動作方法を規定する規則のセット。A set of conventions that prescribe how apps on the platform should look and behave.
Android のマテリアル デザイン ガイドラインに、Android の設計者や開発者が従う視覚言語が示されています。Android Material Design guidelines provide a visual language for Android designers and developers to follow. ヒューマン インターフェイス ガイドラインに、iOS の設計者や開発者向けのアドバイスが示されています。Human Interface Guidelines provide advice for iOS designers and developers. UWP Windows アプリのデザイン次のすべての Windows 10 デバイスで画期的なアプリを作成する方法を示します。UWP Windows Apps Design shows you how to create an app that looks fantastic on all Windows 10 devices. ユーザー インターフェイス (UI) デザインの基本、レスポンシブ デザイン テクニック、詳細なガイドラインの完全な一覧が示されています。You will find user-interface (UI) design fundamentals, responsive design techniques, and a full list of detailed guidelines.
ユーザー インターフェイスのマークアップ言語。 User interface markup language.

UI とそのコンポーネントをレンダリングし、記述するマークアップ言語。A markup language that renders and describes a UI and its components. プラットフォームごとに、ビジュアル編集とマークアップ編集のためのエディターが提供されています。Each platform provides an editor for both visual and markup editing.
XML レイアウトAndroid Studio または Eclipse を使って編集します。XML layouts, edited using Android Studio or Eclipse. XIBストーリーボード。Xcode 内の Interface Builder を使って編集します。XIB and Storyboards edited using Interface Builder inside Xcode. XAML編集を使用して、 Microsoft Visual StudioBlend for Visual Studioします。XAML, edited using Microsoft Visual Studio and Blend for Visual Studio.

XAML プラットフォームXAML platform

XAML を使った UI の作成Create a UI with XAML

XAML を使ったレイアウトの定義Define Layouts with XAML
組み込みのユーザー インターフェイスを制御します。 Built-in user interface controls.

ボタン、リスト コントロール、テキスト コントロールなど、プラットフォームで提供される、再利用可能な UI 要素。Reusable UI elements provided by the platform such as buttons, list controls, and text controls.
ウィジェット、レイアウト、テキスト フィールド、コンテナー、日付/時刻コントロール、専門的なコントロールとして参照される、作成済みのビュービュー グループのクラス。Prebuilt view and view group classes referred to as widgets, layouts, text fields, containers, date/time controls and expert controls. Xcode オブジェクトのライブラリにあり、UIKit ユーザー インターフェイス カタログに掲載されたビューコントロールViews and controls found in the Xcode object library and listed in the UIKit user interface catalog. ビューには、イメージ ビュー、ピッカー ビュー、スクロール ビューが含まれます。Views include image views, picker views and scroll views. コントロールには、ボタン、日付選択コントロール、テキスト フィールドが含まれます。Controls include buttons, date pickers and text fields. XAML プラットフォームでは、ボタン、リスト コントロール、パネル、テキスト コントロール、コマンド バー、ファイル ピッカー、メディア、インク入力など、さまざまなビルトイン コントロールが提供されます。The XAML platform provides you with a generous set of built-in controls such as buttons, list controls, panels, text controls, command bars, pickers, media, and inking.

コントロールの追加とイベントの処理Add controls and handle events
イベント処理を制御します。 Control event-handling.

UI コントロール内でイベントがトリガーされるときに実行されるロジックを定義します。Defining the logic that runs when events are triggered within UI controls.
XML またはプログラムでイベント ハンドラーイベント リスナーを追加します。Event handlers and event listeners are added in XML or programmatically. コントロールからターゲット操作メッセージが送信されます。Controls send action messages to targets. XAML ページに接続されているコード ビハインド ファイルに、XAML コントロールのイベントを処理するメソッドを定義できます。You can define methods to handle the events of a XAML control in a code-behind file attached to the XAML page. イベント ハンドラーは常に、コードで記述します。Event handlers are always written in code. ただし、XAML マークアップまたはコードでそれらのハンドラーをイベントにフックすることができます。But you can hook those handlers to events either in XAML markup or in code.

コントロールの追加とイベントの処理Add controls and handle events

イベントとルーティング イベントの概要Events and routed events overview
データ バインディング。 Data binding.

アプリの UI でデータを表示し、必要に応じてそのデータと同じ状態を保つことができるソフトウェアの設計パターンです。A software design pattern that allows your app UI to render data and optionally stay in sync with that data.
データ バインディング ライブラリが提供されています。ただし、まだベータ版です。There is a Data Binding Library provided, although it is still in beta. iOS では、組み込みのバインディング システムは存在しません。No built-in bindings system exists on iOS. サード パーティのライブラリを使うか追加コードを記述すると、キー値監視を作成してデータ バインディングを実行できます。Key-value observing can be built upon to perform data binding, either with the use of a third-party library, or writing additional code. コントロールは、データを取得するためにデリゲート/コールバックの方法を使います。Controls use a delegate/callback approach for obtaining data. UWP プラットフォームがデータ バインディングを処理します。The UWP platform handles data binding for you. {x:Bind} マークアップ拡張を使ってバインディングのパフォーマンスを向上させるか、{Binding} を使ってより多くの機能を利用できます。You use the {x:Bind} markup extension to take advantage of high performance binding or {Binding} to take advantage of more features. その後は、プラットフォームで一方向バインディングを使ってデータ ソースからの値を UI に表示するか、双方向バインディングで値の監視も行い、値が変わったら UI を更新するか、バインディングの構成方法を選ぶだけです。It’s then just a case of configuring your binding to choose whether the platform uses one-way binding to display values from a data source in your UI, or whether it also observes those values and updates your UI when they change with two-way binding.

データ バインディングData Binding
UI オートメーションです。 UI Automation.

プログラムによる UI 要素へのアクセスで、アプリをアクセシビリティ対応にして支援技術製品を利用できるようにして、自動テスト スクリプトで UI を操作できるようにします。Programmatic access to UI elements, making apps accessible to assistive technology products and enabling automated test scripts to interact with your UI.
テキストのラベルcontentDescriptionヒントの値を使って、オートメーションで UI 要素が見つかるようにします。Text labels, contentDescription and hint values help ensure UI elements can be found by automation. Android Studio で UI AutomatorEspresso テスト フレームワークを使って UI のテストを作成できます。Android Studio allows you to write UI tests using the UI Automator and Espresso testing frameworks. Automation インストルメントで、アクセシビリティ設定や要素階層内の要素の位置を使って要素を識別する、自動化された UI テスト スクリプトを記述できます。The Automation instrument allows you to write automated UI test scripts which identify elements using the accessibility settings or the element's position in the element hierarchy. UI オートメーションを使って、UWP の組み込みの UI 要素にプログラムから既定でアクセスできます。You get programmatic access to built-in UI elements in UWP out-of-box with UI Automation.
カスタムのオートメーション ピア独自のカスタム UI クラスのオートメーションのサポートを提供することです。Custom Automation Peers allow you to provide automation support for your own custom UI classes. Visual Studio のコード化された UI テスト プロジェクトで、UI を使ってアプリケーション全体を自動的にテストするか、UI を単独でテストできます。The Coded UI Test Project in Visual Studio allows you to automatically test your whole application through the UI, or to test the UI in isolation.
コントロールの外観を変更します。 Changing the appearance of a control.

サイズ、色、その他の属性を編集します。Editing size, color and other attributes.
コントロールにはプロパティがあり、デザイナー ツールを使って XML マークアップまたはプログラムで編集できます。Controls have properties which can be edited using the designer tool, in XML markup or programmatically. コントロールには属性があり、属性インスペクターを使って Interface Builder またはプログラムで編集できます。Controls have attributes which you can edit using the Attributes Inspector in Interface Builder or programmatically. Visual Studio と Blend for Visual Studio を使って、XAML マークアップまたはプログラムでコントロールのプロパティを編集できます。You can edit the properties of controls in the XAML markup or programmatically, using Visual Studio and Blend for Visual Studio.

コントロールの追加とイベントの処理Add controls and handle events
再利用可能な visual スタイル。 Reusable visual styles.

視覚的な変更を再利用可能な形式でいくつかのコントロールに適用します。Apply visual changes to a number of controls, in a reusable format.
XML スタイルは 1 つまたは複数のコントロールに適用されるプロパティのセットです。XML styles are sets of properties that are applied to one or more controls. iOS では、既定では再利用可能な視覚スタイルをサポートしていませんが、UIAppearance プロトコルを使って複数のコントロールで共通の属性を共有できます。iOS does not support reusable visual styles out-of-box, but the UIAppearance protocol allows multiple controls to share common attributes. 再利用可能なスタイルを作成して複数のコントロールに適用したり、簡単に再利用できるように ResourceDictionary に格納したりできます。You can create reusable styles, which can be applied to multiple controls and stored in a ResourceDictionary for easy reuse.

クイック スタート:コントロールのスタイル設定Quickstart: Styling Controls
コントロールの視覚的な構造を編集します。 Editing the visual structure of controls.

チェックボックスの下にあるチェックボックスのテキストの移動など、プロパティまたは属性を変更する以外の、コントロールの視覚的構造をカスタマイズします。Customize the visual structure of a control beyond just modifying properties or attributes, e.g. moving the checkbox text underneath the checkbox.
Android では、コントロールの視覚的構造を編集する簡単な方法は存在しません。No simple method of editing the visual structure of controls exists in Android. iOS では、コントロールの視覚的構造を編集する簡単な方法は存在しません。No simple method of editing the visual structure of controls exists in iOS. コントロールの視覚的な構造をカスタマイズするには、XAML マークアップでコントロール テンプレートをコピーして編集します。To customize the visual structure of a control, you can copy and edit its control template in XAML markup.

クイック スタート:コントロール テンプレートQuickstart: Control Templates
組み込みのタッチ ジェスチャ。 Built-in touch gestures.

ビューやコントロールでタップやダブルタップなどの高レベルの抽象化されたジェスチャ イベントを処理して、カスタマイズされたタッチをサポートします。Provide customized touch support by handling high level abstracted gesture events such as tap and double tap in views and controls.
ジェスチャ ディテクターが、スクロール、長押し、タップ、ダブルタップ、フリックなどの一般的なタッチ ジェスチャを検出します。Gesture detectors detect common touch gestures including scrolling, long-press, tap, double-tap and fling. UIKit フレームワークで提供される組み込みのジェスチャ認識エンジンが、タップ、ピンチ、パン、スワイプ、回転、長押しなどのタッチ ジェスチャを検出します。UIKit framework provides built-in gesture recognizers which detect touch gestures including tap, pinch, pan, swipe, rotate and long-press. UI 要素を使って、タップ、ダブルタップ、右タップ、ホールドなどの静的ジェスチャ イベントだけでなく、スライド、スワイプ、回転、ピンチ、ストレッチなどの操作ジェスチャ イベントを処理できます。UI elements allow you to handle static gesture events including tap, double-tap, right-tap and holding, as well as manipulation gesture events including slide, swipe, turn, pinch and stretch. ジェスチャ イベントはルーティング イベントであり、UIElement の子が含まれている親オブジェクトを使って処理できます。Gesture events are routed events and can be handled by parent objects containing the child UIElement.

タッチ操作Touch interactions

カスタム ユーザー操作 - ジェスチャ、操作、対話式操作Custom user interactions - gestures, manipulations, and interactions
一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
レイアウト。 Layouts.

レイアウトでは、ユーザー インターフェイスの構造を定義します。The layout defines the structure of the user interface.
レイアウトは、他のビュー グループやビューを入れ子にできる LinearLayoutRelativeLayout などのビュー グループで構成されます。Layout is composed of view groups such as the LinearLayout and the RelativeLayout which can nest other view groups or views. レイアウトは、入れ子にできる UIView が含まれる UIViewController で構成されます。Layout is composed of a UIViewController containing UIView's which can be nested. XAML が、静的レイアウトやレスポンシブ レイアウト用の CanvasGridRelativePanelStackPanel などのレイアウト パネル クラスから成る柔軟なレイアウト システムを提供します。XAML which provides a flexible layout system composed of layout panel classes such as Canvas, Grid, RelativePanel and StackPanel for static and responsive layouts. プロパティ要素の位置とサイズを制御するために使用します。Properties are used to control the size and position of the elements.

XAML を使ったレイアウトの定義Define layouts with XAML
ピア ナビゲーション。 Peer navigation.

階層の重要度が同じページ間を移動する方法をユーザーに提供します。Presenting the user with methods of navigating between pages of equal hierarchical importance.
タブスワイプ ビューナビゲーション ドロワー水平方向ナビゲーションができます。Tabs, swipe views and navigation drawers provide lateral navigation. タブ バー コントローラー分割ビュー コントローラーページ ビュー コントローラーで同じ階層のビューの間を移動できます。Tab bar controllers, split view controllers and page view controllers allow navigation between views of equal hierarchy. タブ/ピボットを使って、コンテンツの上にあるリンクやタブの永続的な一覧を表示できます。You can display a persistent list of links/tabs above the content using tabs/pivots. ナビゲーション ウィンドウと分割ビューで、コンテンツと共にリンクの一覧を表示することができます。The navigation pane/split view lets you display a list of links alongside the content.

ナビゲーションNavigation

2 つのページ間を移動します。Navigate between two pages
階層間を移動します。 Hierarchical navigation.

階層の親と子のページ間を移動します。Navigating between parent and child pages of a hierarchy.
他のアクティビティを読み込むインテントと一緒にリストグリッド リストボタンなどのコントロールを使うと、子孫のナビゲーションができます。Lists, and grid lists, buttons and other controls provide descendent navigation when used with intents to load other activities. ナビゲーション コントローラーを使うと、ユーザーが階層のレベルの間を移動できます。Navigation controllers allow users to navigate between levels of a hierarchy. ハブユーザーにコンテンツの子ページに移動する選択された状態のプレビューを表示できます。Hubs let you show the user a preview of content which can be selected to navigate to child pages. マスター/詳細ユーザーが、対応する詳細セクションの横に表示される項目の概要の一覧から選択できるようにします。Master/details let users pick from a list of item summaries which display next to the corresponding detail section.

ナビゲーションNavigation

2 つのページ間を移動します。Navigate between two pages
ボタンのナビゲーションをバックアップします。 Back button navigation.

アプリケーション内で元の画面に戻ります。Navigating back through an application.
アクション バーの [戻る] ボタンと [上へ] ボタンで、バック スタックを使って先祖ナビゲーションと一時的なナビゲーションができます。The back and up buttons inside the action bar provide ancestral and temporal navigation using the back stack. ナビゲーション コントローラーに [戻る] ボタンを追加することができます。The navigation controller can have a back button added to it.
バック スタック プロパティを使ってソフトウェアまたはハードウェアの [戻る] ボタン入力を簡単に処理できます。ユーザーはナビゲーション履歴を移動できます。You can handle software or hardware back button presses easily using the back stack property which allows your users to traverse the navigation history.

[戻る] ボタンによるナビゲーションBack button navigation
スプラッシュ スクリーン。 Splash screen.

アプリ起動時にイメージを表示します。主にブランディング目的です。Showing an image on app launch, used primarily for branding.
スプラッシュ画面は既定では指定されていません。最初のアクティビティのテーマの背景を編集すると実装されます。Splash screens are not provided by default, and are implemented by editing the first activities theme background. 静的起動イメージまたはXIB/ストーリーボードの起動ファイルがアプリに必要です。Apps must either have a static launch image or XIB/storyboard launch file. イメージとカラーの背景を使ってスプラッシュ画面を作成できます。You create a splash screen using an image and colored background. スプラッシュ画面の時間を延ばすことができますSplash screen time can be extended.

スプラッシュ画面の追加Add a splash screen

カスタム入力Custom inputs

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
音声。 Voice.

音声入力に対する音声認識と、その他の音声機能。Speech recognition for speech input, and additional voice capabilities.
Google 音声検索などの RecognizerIntent を実装するアプリで音声入力を提供できます。Speech input can be provided by any app which implements a RecognizerIntent, such as Google Voice Search. SpeechRecognizer クラスを使うと、アプリで Google の音声認識 API を使うことができます。The SpeechRecognizer class allows apps to use Google's speech recognition API. アプリでは、SFSpeechRecognizer クラスを使用して音声入力と音声認識を実装することができます。Apps can use the SFSpeechRecognizer class to implement speech input and speech recognition. 音声認識 API を使ってフォアグラウンドでアプリを操作できます。You can use the speech recognition API to interact with your app in the foreground. 音声認識に基づく Cortana の操作で、フォアグラウンドまたはバックグラウンドでアプリを起動したり、バックグラウンドのアプリを操作したりできます。You can use speech-based Cortana interactions to launch apps in the foreground or background, and to interact with background apps.

音声操作Speech interactions
カスタム ユーザーの入力。 Custom user inputs.

キーボード、マウス、スタイラスなどの入力を処理します。Handling keyboard, mouse, stylus and other inputs.
タッチタッチパッドスタイラスマウスキーボードの操作がサポートされています。Support for interactions includes touch, touchpad, stylus, mouse and keyboard. 移動と入力はタッチ操作と同じ方法で報告されますが、入力デバイスに関する詳しい情報を検出することができます。Movements and inputs are reported in the same way as touch, but it is possible to detect more information about the input device. タッチApple Pencil、ハードウェア キーボードがサポートされています。Support for touch, the Apple Pencil and hardware keyboards are provided. タッチタッチパッド、デジタル インクを使ったペン/スタイラスマウスキーボードなど、さまざまな操作がサポートされています。You will find support for a wide range of interactions including touch, touchpad, pen/stylus with digital ink, mouse and keyboard. どの入力デバイスが使われたかわからなくても、アプリがデータを処理し、必要に応じて未加工入力デバイス データにアクセスできます。Your apps can handle the data without needing to know which input device was used, and raw input device data can be accessed if needed.

ポインター入力の処理Handle pointer input

カスタム ユーザー操作Custom user interactions

データData

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
ローカルのアプリのデータ。 Local app data.

アプリに関連する設定とファイルをローカルに保存します。Storing settings and files related to your app locally.
openFileOutputopenFileInput を使ってローカル ファイルを保存することができます。Local files can be saved using openFileOutput and openFileInput. getSharedPreferences を使って共有環境設定ファイルの設定にアクセスできます。Settings in a shared preferences file can be accessed using getSharedPreferences. NSFileManager クラスを使ってアクセスするアプリケーション サポート ディレクトリにローカル ファイルを保存できます。Local files can be stored in the application support directory, accessed via the NSFileManager class. NSUserDefaults クラスを使って環境設定ファイルの設定にアクセスできます。Settings in preferences files can be accessed by the NSUserDefaults class. Windows.Storage クラスは、統一された方法でローカルのデータ記憶域を処理します。The Windows.Storage classes handle local data storage for you in a unified way. ApplicationData.LocalSettings プロパティを使ってアクセスする ApplicationDataContainer オブジェクトとして設定を保存します。You store settings as an ApplicationDataContainer object, accessed via the ApplicationData.LocalSettings property. ApplicationData.LocalFolder プロパティを使ってアクセスする StorageFolder オブジェクトにファイルを保存します。You store files in a StorageFolder object accessed via the ApplicationData.LocalFolder property.

設定と他のアプリ データを保存して取得するStore and retrieve settings and other app data
ローカル データベース ストレージ。 Local database storage.

リレーショナル データベースにアプリ データを保存します。該当する場合はオブジェクト リレーショナル マッパー (ORM) も一緒に保存します。Storing app data in a relational database, with object-relational mappers (ORM) if applicable.
SQLite データベースが提供されます。The SQLite database is provided. ORM は組み込みではありません。No ORM is built-in. SQLiteDatabase クラスを使って SQL のクエリが実行されます。SQL queries are run using the SQLiteDatabase class. SQLite データベースが提供されます。The SQLite database is provided. CoreData は組み込みのオブジェクト グラフのフレームワークで、SQLite と一緒に使うことができ、ORM と同様の機能を提供します。CoreData is the built-in object graph framework which can be used with SQLite and provide functionality comparable with an ORM. SQLite を使ってデータを保存することができます。You can store data using SQLite. Entity Framework は組み込みの ORM 大量のデータ アクセス コードを記述する必要はありませんし、SQL を記述することがなく、データベースを簡単に照会することができます。Entity Framework is a built-in ORM which eliminates the need to write lots of data access code and enables you to easily query the database without writing SQL. SQLite ライブラリ で直接、SQL のクエリを実行できます。You can run SQL queries directly with the SQLite library.

データ アクセスData Access
REST 用の HTTP ライブラリにアクセスします。 HTTP libraries for REST access.

HTTP(S) を使って Web サービスや Web サーバーと通信できる組み込みのライブラリ。Built-in libraries that let you communicate with web services and web servers using HTTP(S).
HTTP ライブラリ HttpURLConnectionVolleyHTTP libraries HttpURLConnection and Volley. NSURLSessionNSURLConnectionNSURLDownloadNSURLSession, NSURLConnection and NSURLDownload. 組み込みの HttpClient API を使って、GET、DELETE、PUT、POST、一般的な認証パターン、SSL、Cookie、進行状況情報などの一般的な HTTP 機能にアクセスできます。You can use the built-in HttpClient API to access common HTTP functionality including GET, DELETE, PUT, POST, common authentication patterns, SSL, cookies and progress info.
クラウド バックアップ サービスです。 Cloud backup services.

プラットフォームで提供される、アプリのデータ バックアップ サービス。Platform-provided backup services for app data.
Android のバックアップ マネージャーが Google の Android バックアップ サービスでアプリケーション データのバックアップを処理します。Android's backup manager handles the backing up of application data in Google's Android Backup Service. アプリ データなどのバックアップを処理するようにユーザーが iCloud バックアップを構成できます。iCloud Backup can be configured by a user to handle their backups, including app data. iCloud と互換性のあるコア データiCloud のキー値ストアiCloud ドキュメント ストレージを使うアプリ。Apps which use iCloud compatible Core Data, the iCloud key-value store and iCloud document storage. ローミング ApplicationData API (RoamingFolderRoamingSettings を含む) を使って保存したアプリ データは、自動的にクラウドおよびユーザーの他のデバイスと同じ状態に保たれます。Any app data that you store using the roaming ApplicationData APIs (including RoamingFolder and RoamingSettings) will be automatically synced to the cloud and to the user’s other devices, too. 最新に保つ処理は、ユーザーの Microsoft アカウントで実行されます。The syncing is done by way of the user’s Microsoft account.

アプリのデータのローミングのガイドラインGuidelines for roaming app data
HTTP ファイルをダウンロードします。 HTTP file downloads.

大小のファイルを HTTP 経由でダウンロードします。Downloading large and small files over HTTP.
URLConnectionHTTPURLConnection を使って HTTP と FTP 経由でダウンロードを行います。また、システムのダウンロード マネージャーを使ってバックグラウンドでダウンロードすることもできます。URLConnection and HTTPURLConnection are used to download over HTTP and FTP, it is also possible to make use of the system download manager to download in the background. NSURLSessionNSURLConnection を使って HTTP と FTP 経由でファイルをダウンロードできます。NSURLSession and NSURLConnection can be used to download files over HTTP and FTP. バックグラウンド転送 API で、アプリの中断と接続の切断を考慮し、接続性とバッテリー残量に基づいて調整を行いながら、HTTP(S) と FTP 経由でファイルを確実に転送することができます。The background transfer API lets you reliably transfer files over HTTP(S) and FTP, taking into account app suspension, connectivity loss and adjusting based on connectivity and battery life. 小さなファイルに適した HttpClient を使用することもできます。You can also use HttpClient which is ideal for smaller files.

アプリに適したネットワーク テクノロジWhich networking technology?

バックグラウンド転送Background transfers
ソケット。 Sockets.

独自のプロトコルを使って他のデバイスと通信するために、低レベルの UDP データグラムおよび TCP ソケットを作成します。Creating low level UDP datagram and TCP sockets to communicate with other devices using your own protocol.
Socket クラスが TCP ソケットを提供し、DatagramSocket クラスが UDP ソケットを提供します。Socket class provides TCP sockets, DatagramSocket class provides a UDP socket. NSStreamCFStream が TCP ソケットを提供し、CFSocket が UDP ソケットを提供します。NSStream and CFStream provide TCP sockets, CFSocket provides UDP sockets. DatagramSocket クラスを使って UDP データグラム ソケットで通信し、StreamSocket クラスを使って TCP または Bluetooth RFCOMM 経由で通信できます。You can use the DatagramSocket class to communicate using a UDP datagram socket and the StreamSocket class to communicate over TCP or Bluetooth RFCOMM.

ネットワークの基本Networking basics

アプリに適したネットワーク テクノロジWhich networking technology?

ソケットの概要Sockets overview
Websocket です。 WebSockets.

クライアントとサーバーの間の双方向通信を実現し、リアルタイムにデータを転送できるようにします。Provide two-way communication between a client and server, enabling real-time data transfer.
Android では、組み込みの WebSocket ライブラリは存在しません。No built-in WebSockets libraries exist on Android. iOS では、組み込みの WebSocket ライブラリは存在しません。No built-in WebSockets libraries exist on iOS. 受信通知付きの小さなメッセージ用には MessageWebSocket クラス、セクションごとに読み取りできる大きなバイナリ ファイル転送用には StreamWebSocket を使って、WebSocket をサポートしているサーバーへの接続をセキュリティ保護できます。Secure connections to servers supporting WebSockets can be made with the MessageWebSocket class for smaller messages with receipt notifications and StreamWebSocket for larger binary file transfers which can be read in sections.

ネットワークの基本Networking basics

アプリに適したネットワーク テクノロジWhich networking technology?

WebSocket の概要WebSockets overview
OAuth のライブラリ。 OAuth libraries.

OAuth のライブラリがサード パーティの OAuth プロバイダーと、プラットフォームに組み込まれているすべてのアカウント管理にアクセスできるようにします。OAuth libraries allowing access to third party OAuth providers, and any account management built into the platform.
汎用的な OAuth ライブラリは用意されていません。No generic OAuth library is provided. Google Play サービスの OAuth 認証用に GoogleAuthUtil クラスが提供されています。The GoogleAuthUtil class is provided for OAuth authentication with Google Play Services .
汎用的な OAuth ライブラリは用意されていません。No generic OAuth library is provided. アカウント フレームワークが、デバイスに既に保存されている Facebook や Twitter などのユーザー アカウントにアクセスできるようにします。The accounts framework provides access to user accounts already stored on the device such as Facebook and Twitter. 汎用的な OAuth ライブラリの Web 認証ブローカーを使うと、サード パーティの ID プロバイダー サービスに接続することができます。The generic OAuth library Web authentication broker lets you connect to third-party identity provider services. 資格情報保管ボックスを使うと、ユーザーはログインを保存して複数のデバイスで使うことができます。The Credential locker allows your users to save their login and use it on multiple devices. Microsoft.live 名前空間を使うと、Live SDK の OAuth に簡単にアクセスして Microsoft サービスにアクセスできます。The Microsoft.Live namespace lets you easily access Live SDK OAuth for access to Microsoft services.

認証とユーザー IDAuthentication and user identity

Windows.Security.Authentication.Web API ドキュメントWindows.Security.Authentication.Web API documentation

WebAuthenticationBroker のコード例WebAuthenticationBroker code example

ツールTooling

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
IDE です。 IDE.

アプリの作成に使うツールセット。The toolset used to create your app.
Android StudioEclipse。Google は Android Studio を使うように開発者に推奨しています。Android Studio and Eclipse, with Google pushing developers toward the use of Android Studio. XcodeXcode Visual StudioBlend for Visual Studioコード、設計、接続、デバッグ、分析、最適化および UWP アプリをテストする必要があるすべてのツールがあります。Visual Studio and Blend for Visual Studio has all the tools you need to code, design, connect, debug, analyze, optimize and test UWP apps. Visual Studio では Windows 10 デバイス用のエミュレーターも提供されているため、さまざまなエミュレートされたデバイスでアプリをテストできます。Visual Studio also provides you with emulators for Windows 10 devices, so you can test your app across a range of emulated devices.

UWP 用のダウンロードとツールDownloads and tools for UWP
コードの編成します。 Code organization.

初期テンプレートから作成されることが多い、アプリの基本的なフォルダー構造。The basic folder structure of an app, often created from an initial template.
AndroidManifest ファイル、ソース ファイルを含む java フォルダー、レイアウトや値などのリソースを持つ res フォルダー、Android Studio の Gradle ビルド スクリプト、Eclipse の Ant ビルド スクリプト。AndroidManifest file, java folder containing source files, res folder with resources including layouts and values, Gradle build scripts in Android Studio and Ant build scripts in Eclipse. ソース ファイルとサポート ファイルInfo.plist ファイル、Main.storyboardLaunchScreen.storyboardSource files and Supporting Files, Info.plist file, Main.storyboard and LaunchScreen.storyboard. イメージはアセット ライブラリに格納されます。Images are stored in Asset libraries. UWP アプリには、Example.xaml や Example.xaml.cs というアプリ用の XAML とコード ファイル、Assets フォルダーのさまざまな画像、MainPage.xamlMainPage.xaml.cs などのスタート ページ、マニフェストが含まれています。Your UWP app contains XAML and code files for your app named Example.xaml and Example.xaml.cs, various images in the Assets folder, a start page such as MainPage.xaml and MainPage.xaml.cs and a manifest.

"Hello, world" アプリを作成するCreate a hello world app

アプリのライフサイクルApp lifecycle

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
アプリのライフ サイクルです。 App lifecycle.

アプリの起動時、中断時、再開時、終了時にイベントを処理し、アプリケーションの状態を保存/復元したり他のタスクを実行したりする機会を提供します。Handling events on app launch, suspension, resume and close, providing an opportunity to save/restore application state and run other tasks.
アクティビティのそれぞれに、再開などの状態を持つ独自のアクティビティ ライフサイクルがあります。Each activity has its own activity lifecycle with states such as resumed. ライフ サイクルのコールバックなどonResumeで実装されて、アクティビティ クラスします。Lifecycle callbacks such as onResume are implemented in your activity classes. アプリケーションのライフサイクルには中断などの状態があります。The application lifecycle has states such as suspended. applicationDidEnterBackground: などのメソッドをアプリケーションのデリゲート オブジェクトに実装して、状態が変わったときにコードを実行できます。Methods such as applicationDidEnterBackground: are implemented in the application delegate object to run code on state changes. アプリケーションにはアプリの実行状態 NotRunning、Activated、Running、Suspending、Suspended、Resuming があります。Your application has the app execution states NotRunning, Activated, Running, Suspending, Suspended and Resuming.

Application クラスのメソッド OnLaunched、OnActivated、Suspending、Resuming をアプリに実装して、状態が変わったときにコードを実行できます。You can implement the Application class methods OnLaunched, OnActivated, Suspending or Resuming in your app to run code when the state changes.

アプリのライフサイクルApp lifecycle
バック グラウンド タスク。 Background tasks.

バックグラウンド操作を実行し、アプリがフォアグラウンドではなくなったときに動作し続けるタスク。Tasks that perform background operations and continue to run when the app is no longer in the foreground.
アプリは、アプリがフォアグラウンドではなくなったときにバックグラウンド操作を実行するサービスを起動できます。Apps can launch services which perform background operations when the app is no longer in the foreground. サービスに独自のライフサイクルがあり、マニフェストに登録されています。Services have their own lifecycle and are registered in the manifest. バックグラウンドでの実行は、特定の種類のタスクのみで許可されます。Background execution is only permitted for specific task types.

アプリは UIBackgroundModes を使って、Info.plist ファイルでサポートされるバックグラウンド タスクを宣言します。Apps declare supported background tasks in the Info.plist file using the UIBackgroundModes.

システムでは、バックグラウンド タスクがいつどれくらいの長さで実行されるかが制御されます。The system controls when background tasks are run and for how long.
バックグラウンド タスクを作成するには、IBackgroundTask インターフェイスを実装してアプリケーション マニフェストにタスクを登録します。You can create a background task by implementing the IBackgroundTask interface and registering the task in the application manifest. タイマーシステム トリガーメンテナンス トリガーでタスクをトリガーするように設定できます。You can set a task to be triggered with a timer, system trigger, and maintenance trigger.

バックグラウンド タスクによるアプリのサポートSupport your app with background tasks

バックグラウンド タスクの作成と登録Create and register a background task

バックグラウンド タスクのガイドラインGuidelines for background tasks

パフォーマンスPerformance

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
パフォーマンスのベスト プラクティスです。 Performance best practices.

スタートアップ時間が短く、高速で応答性の高い、バッテリー残量に配慮したアプリを構築するためのガイドライン。Guidelines for building apps that are fast, responsive, considerate of battery life with a fast startup time.
Android ではパフォーマンスに関するベスト プラクティスのトレーニング ガイドが提供されています。Android provides the Best Practices for Performance training guide. iOS ではパフォーマンスの概要に関するドキュメントが提供されています。iOS provides the Performance Overview document. パフォーマンスの目標の設定、パフォーマンスの測定、メモリ管理、スムーズなアニメーション、効率的なファイル システムへのアクセス、プロファイリングとパフォーマンスのために使用できるツールなどのトピックが記載されているセクションを含む、詳しいパフォーマンス ガイドをご覧いただけます。You can read the detailed Performance guide with sections covering topics such as; setting performance goals, measuring performance, memory management, smooth animations, efficient file system access and the tools available for profiling and performance.
レスポンシブ UI の最適化を表示します。 View optimization for a responsive UI.

表示を最適化してパフォーマンスを向上させます。Improving performance by optimizing views.
階層ビューアー ツールを使ったレイアウト階層の最適化、レイアウトの再利用オンデマンドでのビューの読み込みはすべて、UI スレッドの応答性を確保し、「アプリケーションが応答しない」(ANR) というダイアログを回避するための手法です。Optimizing layout hierarchies using the Hierarchy Viewer tool, reusing layouts and loading views on demand are all techniques to help keep the UI thread responsive and avoid "Application Not Responding" dialogs (ANR's).
コア アニメーション ツールを使ってオフスクリーン レンダリングブレンド レイヤーラスタライズで UI の問題を修正すると、UI スレッドの応答性を確保しやすくなります。Fixing UI issues with offscreen rendering, blended layers, rasterization using the Core Animation tool help keep the UI thread responsive. いくつかの簡単な手順を実行すると、XAML のマークアップレイアウトを簡単に最適化できます。You can easily optimize XAML markup and layouts by following a few simple steps. レイアウト構造の簡素化、要素数の最小化、過剰な描画の最小化などの手法を利用できます。Techniques include reducing layout structure, minimizing the element count and minimizing overdrawing.

UI スレッドの応答性の確保Keep the UI thread responsive

XAML マークアップの最適化Optimize your XAML markup

XAML レイアウトの最適化Optimize your XAML layout
スレッド処理します。 Threading.

UI の応答性を確保し、複数タスクを並行して実行するためにスレッド処理を使用します。Use of threading to maintain a responsive UI and run multiple tasks in parallel.
スレッド処理を行うには、RunnableHandlerThreadPoolExecutor の各クラスと、上位レベルの AsyncTask クラスを使います。Threading is achieved using the classes Runnable, Handler, ThreadPoolExecutor, and the higher level AsyncTask. スレッド処理を行うには、NSThreadGrand Central Dispatch、上位レベルの NSOperation を使います。Threading is achieved using NSThread, Grand Central Dispatch, and the higher level NSOperation. スレッドを使用するには、RunAsync作業項目スレッド プールに送信します。You can work with threads by submitting work items to the threadpool with RunAsync. CreateTimer でタイマーを使って作業項目を送信したり、CreatePeriodicTimer で繰り返しの作業項目を作成したりできます。You can use a timer to submit a work item with CreateTimer and create a repeating work item with CreatePeriodicTimer.

スレッド プールへの作業項目の送信Submit a work item to the thread pool

タイマーを使った作業項目の送信Use a timer to submit a work item

定期的な作業項目の作成Create a periodic work item

スレッド プールを使うためのベスト プラクティスBest practices for using the thread pool
非同期プログラミングします。 Asynchronous programming.

UI スレッドの応答性を確保するために、非同期プログラミング パターンを利用してスレッドが複雑にならないようにします。Avoid threading complexity by taking advantage of asynchronous programming patterns to keep the UI thread responsive.
独自の非同期クラスを作成するにはスレッド処理を使う必要がありますThe use of threading is required to create your own asynchronous classes. 一部の組み込みクラスは非同期です。Some built-in classes are asynchronous. 独自の非同期クラスを作成するにはスレッド処理を使う必要がありますThe use of threading is required is required to create your own asynchronous classes. 一部の組み込みクラスは非同期です。Some built-in classes are asynchronous. 独自の API を作成するときにメイン スレッドをブロックしないように、非同期パターンを使うことができます。たとえば、C# と Visual Basic で asyncawait を使うことができます。You can use asynchronous patterns to avoid blocking the main thread when you create your own APIs, e.g. using async and await in C# and Visual Basic. 語が Async で終わる非同期の組み込み API を使うことができます。You can use the asynchronous built-in APIs which end in the word Async.

非同期プログラミングAsynchronous programming

C# または Visual Basic での非同期 API の呼び出しCall asynchronous APIs in C# or Visual Basic
リスト ビューの最適化。 List view optimization.

大量のデータを表示する必要がある場合にパフォーマンスを低下させることが多い、データの一覧の最適化を支援する組み込みのパターンBuilt-in patterns to aid with optimizing lists of data, which often have poor performance when large amounts of data need to be shown
ViewHolder デザイン パターンを使って複数のビュー参照を避け、再利用可能な UI 要素を使うことができます。The ViewHolder design pattern is used to avoid multiple view lookups, which allows you to use reusable UI elements. UITableView のパフォーマンスを向上させるさまざまな最適化を行うことができます。組み込まれているものはありません。A range of optimizations can be made to improve the performance of UITableView, nothing is built-in. 既定で UI の仮想化 を提供する ListViewGridView の各コントロールを使うと、スムーズなパンやスクロール、起動時間の短縮を実現できます。You can use the ListView and GridView controls which provide UI virtualization out-of-box, providing a smooth panning and scrolling experience and a faster startup time. IListINotifyCollectionChanged をデータ ソースに実装し、データ仮想化を行ってパフォーマンスをさらに改善することもできます。You can also implement IList and INotifyCollectionChanged in your data source, providing data virtualization and further improving performance.

ListView と GridView の UI の最適化ListView and GridView UI optimization

ListView と GridView のデータ仮想化ListView and GridView data virtualization

収益化Monetization

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
アプリ内購入します。 In-app purchases.

ユーザーがアプリで購入を行うことができるプラットフォーム機能です。Platform features that allow users to make purchases in your apps.
アプリ内課金は Google サービスで提供されています。In-app billing is provided by Google Services. 製品は Google Play デベロッパー コンソールに追加されます。Products are added to the Google Play Developer Console. アプリ内購入を実装するには、Google Play Billing Library を使います。In-app purchases are implemented with the Google Play Billing Library. 製品は iTunes Connect に追加されます。Products are added to iTunes Connect. アプリ内購入を実装するには、StoreKit フレームワークを使います。In-app purchases are implemented using the StoreKit framework.

製品を購入するには、SKMutablePaymentSKPaymentQueue を使います。Products are purchased using SKMutablePayment and SKPaymentQueue.
アプリでアプリ内製品の購入を作成するには、アプリに追加してストアに申請 します。You create in-app product purchases for your app by adding them to your app and submitting them to the Store.

アプリ内購入を定義するには、CurrentApp クラスを使います。You use the CurrentApp class to define in-app purchases.

CurrentApp.RequestProductPurchaseAsync を使うと、ユーザーが製品を購入するための UI を表示できます。You use CurrentApp.RequestProductPurchaseAsync to display the UI that allows customers to purchase the product.

アプリ内製品購入を有効にするEnable in-app product purchases
アプリ内購入の消耗します。 Consumable in-app purchases.

購入して使った後でもう一度購入できるアプリ内製品。In-app products which can be purchased, used and then purchased again.
通常の購入後に consumePurchase で製品を使うと、コンシューマブルな購入が有効になり、購入して使った後でもう一度購入できます。Consumable purchases are enabled by making a regular purchase and then consuming it with consumePurchase, enabling it to be purchased, used, and then purchased again. コンシューマブルな製品は iTunes Connect でコンシューマブルな製品として定義されます。Consumable products are defined as consumable products in iTunes Connect. コンシューマブルをサポートするには、ストアに 申請するときに製品の種類をコンシューマブルと定義 します。You can support consumables by defining their product type as Consumable when you submit them to the Store. 次に、ユーザーがコンシューマブルな購入を利用できるようになったら CurrentApp.ReportConsumableFulfillmentAsync を呼び出します。You then call CurrentApp.ReportConsumableFulfillmentAsync after a consumable purchase has been made to allow the customer to access it.

コンシューマブルなアプリ内購入の有効化Enable consumable in-app purchases
アプリ内購入をテストします。 Testing in-app purchases.

アプリをストアに配置せずに、アプリ内購入コードをテストできるようにします。Enabling you to test your in-app purchase code without putting your app in the Store.
アプリ内課金サンドボックスを使ってテストします。The in-app billing sandbox is used for testing. Sandbox テスター アカウントを使ってテストします。Sandbox tester accounts are used for testing. CurrentApp の代わりに CurrentAppSimulator クラスを使うだけでアプリ内購入をテストできます。You can test in-app purchases by simply using the CurrentAppSimulator class in place of CurrentApp.

試用版。 Trials.

簡単にコンテンツを制限したり、アプリの試用版に基づく広告を削除したりできるようにします。Enabling you to easily limit content or remove advertising based on a trial version of an app.
Google Play はアプリの試用版を公式にサポートしていませんGoogle Play doesn't officially support app trials. 試用または広告の削除を行うには、アプリ内購入を作成し、購入の確認時に適切なコード パスを実行します。Trials or removing advertising is achieved by creating an in-app purchase and taking the appropriate code path when confirming the purchase was successful. App Store はアプリの試用版を公式にサポートしていませんThe App Store doesn't officially support app trials. 試用または広告の削除を行うには、アプリ内購入を作成し、購入の確認時に適切なコード パスを実行します。Trials or removing advertising is achieved by creating an in-app purchase and taking the appropriate code path when confirming the purchase was successful. アプリの無料試用版を提供するには、ストアにアプリを申請するときに '無料試用版' オプションを使います。You can offer a free trial version of your app by using the 'Free Trial' option when submitting your app to the Store. その後、LicenseInformation.IsTrial を使ってアプリの試用の状態を確認し、それに応じて異なるコード パスを指定します。You can then use LicenseInformation.IsTrial to check the trial status of the app and present different code paths accordingly. アプリの実行中にユーザーが試用の状態を変更した場合に LicenseChanged イベント が通知されるように登録できます。You can register for the LicenseChanged event to be notified when the user changes the trial status while the app is running.

試用版での機能の除外または制限Exclude or limit features in a trial version

複数のプラットフォームへの対応Adapting to multiple platforms

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
アダプティブ UI: 柔軟なレイアウトです。 Adaptive UI: flexible layouts.

柔軟な高さと幅の、さまざまな画面サイズをサポートします。Supporting different screen sizes with a flexible height and width.
柔軟なレイアウトにするには、LinearLayout オブジェクトで wrap_contentmatch_parent の値を使うか、RelativeLayout オブジェクトを使って配置します。Flexible layouts can be achieved using the wrap_content and match_parent values in LinearLayout objects, or by making use of RelativeLayout objects for alignment. 柔軟なレイアウトにするには、ユニバーサル ストーリーボードと一緒にアダプティブ モデルを使い、表示コントローラーに適用される horizontalSizeClass や displayScale などの制約特性と一緒に自動レイアウトを利用します。Flexible layouts can be achieved using the adaptive model with universal Storyboards, making use of Auto Layout with constraints and traits such as horizontalSizeClass and displayScale which are applied to view controllers. 柔軟なレイアウトを作成するには、固定サイズ指定と動的なサイズ指定を組み合わせてレイアウト プロパティパネルを使います。You can create a fluid layout using layout properties and panels with a combination of fixed and dynamic sizing.

XAML を使ったレイアウトの定義 - レイアウト プロパティとパネルDefine layouts with XAML - layout properties and panels

レスポンシブ デザイン 101Responsive design 101
アダプティブ UI: レイアウトを調整します。 Adaptive UI: tailored layouts.

別の対象となるレイアウトを使った、さまざまな画面サイズをサポートします。Supporting different screen sizes with separate targeted layouts.
smalllargeldpihdpi などの構成修飾子を使ってリソース ディレクトリにさまざまな画面構成用の代替レイアウト ファイルを指定すると、さまざまなサイズと密度の画面にカスタム レイアウトを適用できます。Providing alternative layout files for different screen configurations in the resources directory using configuration qualifiers such as small, large, ldpi, and hdpi allows you to target custom layouts to screens of varying size and density. iPhone と iPad で別々のストーリーボードを定義すると、ユニバーサルアプリで異なるデバイス ファミリに合わせてレイアウトを調整できます。Define a separate iPhone and iPad Storyboard to tailor layouts to different device families in a universal app. カスタマイズされたレイアウトを作るには、デバイス ファミリごとに別の XAML マークアップ ファイルを定義します。You can build a tailored layout by defining different XAML markup files per device family.

XAML を使ったレイアウトの定義 - カスタマイズされたレイアウトDefine layouts with XAML - tailored layouts
アダプティブ UI: 応答性の高いレイアウトです。 Adaptive UI: responsive layouts.

回転などの画面サイズの変更やウィンドウのサイズの変更へ反応します。Responding to changes in screen size, such as rotation, or a change in the size of a window.
LinearLayoutRelativeLayout と一緒に柔軟なレイアウトを使うか、異なる方向用の代替レイアウト ファイルを提供すると、レスポンシブ レイアウトを使うことができます。Use of flexible layouts with LinearLayout and RelativeLayout, or providing alternative layout files for different orientations enable responsive layouts. 表示のサイズ特性が変化すると、ストーリーボードに指定されている制約が適用されます。When the size or traits of a view change, the constraints specified in storyboards are applied. VisualStateVisualStateManagerAdaptiveTrigger を使い、ウィンドウ サイズの変更に基づいて実行時に UI のセクションの再配置、位置の変更、サイズの変更、表示、置換を簡単に行うことができます。You can easily reflow, reposition, resize, reveal, or replace sections of your UI at runtime in response to window size changes using VisualState, the VisualStateManager and AdaptiveTrigger.

XAML を使ったレイアウトの定義 - 表示状態と状態トリガーDefine layouts with XAML - visual states and state triggers

レスポンシブ デザイン 101Responsive design 101
別のデバイスの機能をサポートします。 Supporting different device capabilities.

高度なハードウェア機能に対応しながら、それらの機能を備えていないデバイスもサポートします。Take advantage of advanced hardware features while still supporting devices without them.
PackageManager.hasSystemFeature を使ってデバイス機能を実行時にテストすると、ハードウェア固有のコードを実行できるかどうかを判断することができます。Testing for device features at runtime using PackageManager.hasSystemFeature enables you to decide if hardware specific code can run. 実行時にデバイス機能をテストするために行える単一のチェックはありません。各機能を異なる方法でテストして、ハードウェア固有のコードを実行できるかどうかを判断します。There is no single check you can perform at runtime to test for device features, you test for each feature in a specific way to decide if hardware specific code can be run. 電話、デスクトップ、IoT など、別のデバイス ファミリの追加機能を対象にしたプラットフォーム拡張 SDK をパッケージに追加できます。You can add platform extension SDKs to your package to target additional functionality found in different device families including phone, desktop, and IoT. ApiInformation API を使って実行時に型とメンバーの存在をテストし、存在している場合のみ、それらの型とメンバーを呼び出すことができます。You use the ApiInformation API to test for the presence of types and members at runtime, and can call those types and members only if they're present.
別のデバイスの機能をサポートします。 Supporting different device capabilities.

高度なハードウェア機能に対応しながら、それらの機能を備えていないデバイスもサポートします。Take advantage of advanced hardware features while still supporting devices without them.
Android サポート ライブラリをアプリにパッケージして、以前のバージョンの Android ユーザーがいくつかの新しい API を利用できるようにします。The Android Support Library can be packaged with your app to make some newer APIs available to those with older versions of Android. 実行時に API レベルのテストを行うには、Build.Version.SDK_INT を使います。Testing for the API level at runtime can be done using Build.Version.SDK_INT. クラスが存在するかどうかを確認する class メソッドやクラスのメソッドを確認する respondsToSelector: など、標準的なランタイム チェックを使って API が利用できるかどうかを調べます。Standard runtime checks are used to find out if APIs are available, such as the class method to check if a class exists and respondsToSelector: to check for methods on classes. ApiInformation.IsApiContractPresent を使って、指定したメジャー番号とマイナー番号の API コントラクトが存在するかどうかを特定できます。You can use ApiInformation.IsApiContractPresent to identify if an API contract with a specified major and minor number is present. また、ApiInformation API を使って実行時に型とメンバーの存在をテストし、存在している場合のみ、それらの型とメンバーを呼び出すことができます。You also use the ApiInformation API to test for the presence of types and members at runtime, and can call those types and members only if they're present.

通知Notifications

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
タイルとバッジ。 Tiles and badges.

ホーム画面上でユーザーに更新プログラムを表示します。Present updates to users on the home screen.
アプリのウィジェットは、ホーム画面に埋め込むことができ、定期的な更新プログラムを受け取ることができる、アプリケーションのビューです。App Widgets are views on your application that can be embedded into the home screen and can receive periodic updates. Android にはバッジ システムは存在しません。No badge system exists on Android. タイルと同じシステムは存在しません。No identical system to tiles exists. iOS のウィジェットは通知センターに表示され、アプリの拡張機能として実装されます。Widgets on iOS mappear in the Notification Center and are implemented as App Extensions. ローカルまたはリモートの通知に基づいて変更できる数字付きで、バッジをアイコンに追加することもできます。You can also add a badge to your icon with a number which can change in response to local or remote notifications. タイル システムはありません。There is no tiles system. アプリにはスタート画面にピン留めできるタイルがあり、装飾文字と数字付きで選択したテキスト、画像、バッジを表示するために使うことができます。Your app has a tile which can be pinned to the start screen and is used to display your choice of text, images, and a badge with glyphs and numbers. プッシュ通知または定義済みのスケジュールに基づいて、アプリからタイルのコンテンツを更新することができます。You can update the content of tiles from the app; via push notifications or at predefined schedules. タイルはアダプティブにでき、表示される場所に従って変更できます。Tiles can be adaptive, and can change according to where they are being displayed.

タイルの作成Create tiles

アダプティブ タイルの作成Create adaptive tiles

通知配信方法の選択Choose a notification delivery method

タイルとバッジのガイドラインGuidelines for tiles and badges
通知を表示します。 Displaying notifications.

表示できる通知の種類。Types of notifications that can be displayed.
通知を表示できるのは通知領域通知ドロワーで、ヘッドアップ通知では小さなフローティング ウィンドウに通知が表示されます。Notifications can be shown in the notification area and notification drawer, heads-up notifications present a notification in a small floating window. PendingIntent を定義すると、通知に操作を追加できます。Notifications can have actions added to them by defining a PendingIntent. ポップアップ通知はバナーまたは警告として表示されます。Pop-up notifications appear as banners or alerts. UIMutableUserNotificationAction で定義する操作可能な通知にカスタム操作のボタンを追加できます。You can add custom action buttons to actionable notifications which are defined with UIMutableUserNotificationAction. トースト通知と呼ばれるアダプティブ ポップアップ通知を作成できます。You can create adaptive pop-up notifications called toast notifications. 視覚的なコンテンツ、ボタンや入力などの操作、オーディオを使って、XML でトースト通知を定義できます。You can define toasts in XML with visual content, actions which can be buttons, or inputs and audio.

アダプティブ トースト通知と対話型トースト通知Adaptive and interactive toast notifications

通知配信方法の選択Choose a notification delivery method

トースト通知のガイドラインGuidelines for toast notifications
ローカル通知をスケジュールします。 Scheduling local notifications.

スケジュールされた時刻にアプリから送信されるローカル通知。Local notifications sent by your app at a scheduled time.
通知とアクションは NotificationCompat.Builder を使って定義し、AlarmManagerBroadcastReceiver を使ってアプリ内でスケジュール設定したり処理したりできます。Notifications and actions are defined using a NotificationCompat.Builder and can be scheduled and handled in-app using AlarmManager and BroadcastReceiver. 使用してローカル通知が作成されたUILocalNotification、スケジュールを設定できますとUILocalNotification.scheduleLocalNotification:|。使用してトースト通知をスケジュールする ScheduledToastNotificationします。タイル通知をアプリから送信するには TileNotification クラス を使い、タイル通知をスケジュール設定するには ScheduledTileNotification を使います。Local notifications are created using UILocalNotification, and can be scheduled with UILocalNotification.scheduleLocalNotification:. | You can schedule a toast notification using ScheduledToastNotification. You can send a tile notification from your app using the TileNotification class, or schedule a tile notification with ScheduledTileNotification.

アダプティブ トースト通知と対話型トースト通知Adaptive and interactive toast notifications

ローカルのタイル通知を送信| |プッシュ通知の送信。Send a local tile notification | | Sending push notifications. プッシュ通知のサーバーから送信され、必要に応じてアプリで処理される通知。A notification sent from a push notification server and optionally handled in-app.
Google Cloud Messaging が Android のプッシュ通知のサポートを提供します。Google Cloud Messaging provides push notification support for Android.

メディアのキャプチャとレンダリングMedia capture and rendering

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
キャプチャ メディア。 Capturing media.

オーディオとビジュアルのコンテンツを記録します。Recording audio and visual content.
MediaStore.ACTION_VIDEO_CAPTURE などのインテントを使うと、既存のカメラ アプリでメディアをキャプチャできます。Using an intent such as MediaStore.ACTION_VIDEO_CAPTURE allows media to be captured with an existing camera app. android.hardware.camera2 または camera ライブラリを使うと、カメラのカスタム インターフェイスを実装できます。Using the android.hardware.camera2 or camera library enables the implementation of a custom camera interface. MediaRecorder API を使うと、オーディオをキャプチャできます。MediaRecorder APIs can be used to capture audio. UIImagePickerController を使うと、システム UI でビデオと写真をキャプチャできます。The UIImagePickerController allows for the capture of video and photos with the system UI. AVCaptureSession などの AVFoundation クラスを使うと、カメラへ直接アクセスできます。The AVFoundation classes such as AVCaptureSession enable direct access to the camera.
AVAudioRecorder クラスを使うと、オーディオを録音できます。The AVAudioRecorder class enables audio recording.
CameraCaptureUI クラスを使うと、組み込みのカメラ UI を使いながら写真とビデオをキャプチャできます。You can capture photos and video while using the built-in camera UI with the CameraCaptureUI class. MediaCapture API などの Windows.Media.Capture のクラスを使って、低レベルのカメラ操作でオーディオをキャプチャできます。You can interact with the camera at a low level, and capture audio with classes in Windows.Media.Capture such as the MediaCapture API.

CameraCaptureUI を使った写真とビデオのキャプチャCapture photos and video with CameraCaptureUI

MediaCapture を使った写真とビデオのキャプチャCapture photos and video with MediaCapture
メディアの再生。 Media playback.

オーディオとビデオのファイルを再生します。Playing audio and video files.
MediaPlayer クラスと AudioManager クラスを使うと、オーディオとビデオのファイルを再生できます。The MediaPlayer and AudioManager classes are used to play audio and video files. AVKit フレームワークAVAudioPlayerMedia Player Framework を使うと、オーディオとビデオのファイルを再生できます。The AVKit framework, AVAudioPlayer, and Media Player Framework are used to play audio and video files. MediaSource クラスMediaElementMediaPlayer クラスを使うと、ローカル ファイルやリモート ファイルなどのソースからオーディオとビデオを再生できます。You can use the MediaSource class, MediaElement, and MediaPlayer classes to play back audio and video from sources such as local and remote files.

MediaSource を使ったメディアの再生Media playback with MediaSource
メディアを編集します。 Editing media.

既存の録音や録画から新しいメディア ファイルを作成し、特殊効果を適用します。Composing new media files from existing recordings and applying special effects.
MediaCodecMediaMuxerandroid.media.effect などの低レベルのクラスを使ってコンテンツを編集できます。Low level classes such as MediaCodec, MediaMuxer, and android.media.effect can be used for content editing. AV Foundation フレームワークの AVMutableCompositionAVMutableVideoCompositionAVMutableAudioMix などのクラスを使ってコンテンツを編集できます。Classes in the AV Foundation framework such as AVMutableComposition, AVMutableVideoComposition, and AVMutableAudioMix can be used for content editing. MediaCompositionMediaClip などの Windows.Media.Editing API を使って、オーディオやビデオのファイルからメディア コンポジションを作成できます。You can use the Windows.Media.Editing APIs such as MediaComposition and MediaClip to create media compositions from audio and video files. ビデオと画像のオーバーレイの追加、ビデオ クリップの結合、バックグラウンド オーディオの追加、オーディオとビデオの効果の適用を行うことができます。You are able to add video and image overlays, combine video clips, add background audio, and apply audio and video effects.

メディア コンポジションと編集Media compositions and editing

センサーSensors

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
センサー。 Sensors.

デバイスの動き、位置、環境のプロパティを検出します。Detect device movement, position and environmental properties.
SensorManagerSensorEvent などのクラスを使うと、センサー フレームワークを使ってハードウェアとソフトウェアのセンサーにアクセスできます。The sensor framework is used to access hardware and software sensors with classes such as SensorManager and SensorEvent. Core Motion フレームワークを使うと、センサーの生データと処理されたデータにアクセスできます。The Core Motion framework is used to access raw and processed sensor data. Windows.Devices.Sensors のクラスを使って、センサーの測定値にアクセスしたり、センサーから新しい測定データを受け取ったときにトリガーされたイベントにアクセスしたりできます。You can use classes in Windows.Devices.Sensors to access sensor readings and events triggered when new reading data is received from the sensor.

センサーSensors

位置情報とマッピングLocation and mapping

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
場所。 Location.

デバイスの現在位置を検出し、変更を追跡します。Finding the device's current location and tracking changes.
Google Play サービスの位置情報 API では、getLastLocation メソッドと requestLocationUpdates メソッドを使って、Fused Location Provider が取得した最後の既知の位置情報への高レベルのアクセスを提供します。The Google Play services location APIs provide high-level access to the last known location with the fused location provider using the getLastLocation and requestLocationUpdates methods. 低レベルのアクセスは、Android ライブラリの LocationManager で提供されます。Low-level access is provided in the Android libraries with the LocationManager. Core 場所 CLLocationManagerクラスを使用してデバイスの場所の監視に使用されますstartUpdatingLocation標準の場所のサービスとstartMonitoringSignificantLocationChanges大幅な変更ロケーション サービス。The Core Location CLLocationManager class is used to monitor a device's location, with startUpdatingLocation for the standard location service and startMonitoringSignificantLocationChanges for the significant-change location service. デバイスの位置情報を追跡するには、Windows.Devices.Geolocation のクラスを使います。You can track device location with classes in Windows.Devices.Geolocation. 1 回限りの読み取りの場合、Geolocator.GetGeopositionAsync を使います。Use Geolocator.GetGeopositionAsync for a one-time reading. タイマーを使って位置情報を定期的に取得するか、位置が変わったときに通知を受けるには、Geolocator.PositionChanged を使います。Use Geolocator.PositionChanged to obtain the location regularly using a timer, or be informed when the location has changed.

ユーザーの位置情報の取得Get the user's location
マップを表示します。 Displaying maps.

組み込みの対話式の地図を表示し、関心のあるポイントを追加します。Displaying an interactive built-in map and adding points of interest.
Google Maps Android APIGoogleMapMapFragmentMapView クラスで、アプリに地図を埋め込むことができます。The GoogleMap, MapFragment, and MapView classes within the Google Maps Android API allow maps to be embedded in apps. 関心のあるポイントを表示するには、マーカーと、カスタマイズ可能な Marker クラスを使います。Points of interest can be displayed using markers and the customizable Marker class. 地図を iOS アプリに埋め込むには、MapKit フレームワークMKMapView クラスを使います。Maps are embedded into iOS apps with the MKMapView class in the MapKit framework. MKPointAnnotation などのオブジェクト クラスや MKPinAnnotationView などのビュー クラスを使ってアプリにアノテーションを追加して、関心のあるポイントを表示できます。Annotations can be added to apps to display points of interest using object classes such as MKPointAnnotation and view classes such as MKPinAnnotationView. アプリに地図を埋め込むには、2D、3D、Streetside ビューを表示する組み込みの MapControl XAML コントロールを使います。You can embed maps in your apps using the built-in MapControl XAML control which provides 2D, 3D, and streetside views. プッシュピン、画像、図形を使って関心のあるポイントを追加するには、MapIconMapPolygonMapPolyline などのクラスを使います。You can add points of interest with a pushpin, image, or shape using classes such as MapIcon, MapPolygon and MapPolyline.

2D、3D、Streetside ビューでの地図の表示Display maps with 2D, 3D, and Streetside views

関心のあるポイント (POI) の地図への表示Display points of interest (POI) on a map
Geofencing 機能します。 Geofencing.

特定の地理的な地域への進入と退出を監視します。Monitor the entering and leaving of a particular geographic region.
ジオフェンスを監視するには、Google Play Services SDK の位置情報サービスを使います。Geofences are monitored using the Location Services in the Google Play Services SDK. 地域を監視するには CLCircularRegion クラスを使い、登録するには CLLocationManager.startMonitoringForRegion: を使います。Regions are monitored with the CLCircularRegion class and registered with the CLLocationManager.startMonitoringForRegion:. Geofence クラスを使ってジオフェンスを作成し、地域への進入と退出など、監視する状態を定義できます。You can create a geofence with the Geofence class and define your monitored states such as entering or leaving a region. ジオフェンス イベントをフォアグラウンドで処理するには GeofenceMonitor クラス、バックグラウンドで処理するには LocationTrigger バックグラウンド クラスを使います。Handle geofence events in the foreground with the GeofenceMonitor class, and in the background with the LocationTrigger background class.

ジオフェンスのセットアップSet up a geofence
ジオコーディングと逆ジオコーディングします。 Geocoding and reverse geocoding.

住所を地理的な位置に変換したり (ジオコーディング)、地理的な位置を住所に変換したりします (逆ジオコーディング)。Converting addresses to geographic locations (geocoding) and converting geographic locations to addresses (reverse geocoding).
ジオコーディングや逆ジオコーディングには Geocoder クラスを使います。The Geocoder class is used for geocoding and reverse geocoding. ジオコーディングには CLGeocoder クラスを使います。The CLGeocoder class is used for geocoding. ジオコーディングを実行するには、Windows.Services.MapsMapLocationFinder クラスを使います。You can perform geocoding using the MapLocationFinder class in Windows.Services.Maps. ジオコーディングには FindLocationsAsync、逆ジオコーディングには FindLocationsAtAsync を使います。You use FindLocationsAsync for geocoding and FindLocationsAtAsync for reverse geocoding.

ジオコーディングと逆ジオコーディングの実行Perform geocoding and reverse geocoding
ルートと方向。 Routes and directions.

地理的な 2 つの場所の間のルート、距離、ルート案内を提供します。Providing routes, distances, and directions between two geographical locations.
Google は、Android で使うことができる Web サービス Google Maps Directions API を提供しています。ただし、SDK は提供されていません。Google provides the web service Google Maps Directions API which can be used on Android although no SDK is provided. Map Kit で提供されている MKDirections API を使ってルートとルート案内を取得できます。Map Kit provides the MKDirections API which can be used to fetch information about a route and directions. Windows.Services.MapsMapRouteFinder クラスを使って、徒歩ルートや運転ルートを要求できます。You can request a walking or driving route with the MapRouteFinder class in Windows.Services.Maps. ルートは MapRoute インスタンスとして返されるため、MapControl に簡単に表示できます。Routes are returned as a MapRoute instance which can be easily shown on a MapControl. ルート案内は MapRouteManeuver オブジェクト内に返されます。Directions are returned inside the MapRouteManeuver object.

地図へのルートとルート案内の表示Display routes and directions on a map

アプリ間通信App-to-app communication

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
別のアプリを起動しています。 Invoking another app.

別のアプリを起動して、必要に応じてリンク、テキスト、写真、ビデオ、ファイルなどのデータを共有します。Launching another app, and optionally sharing data such as links, text, photos, videos, and files.
インテントアクションと必要に応じてデータを定義し、startActivityForResult で呼び出すと、暗黙的インテントを使って別のアプリを起動できます。An implicit intent is used to launch another app, by defining an action and optional data in an Intent and calling it with startActivityForResult.
アプリの拡張機能を使って、別のアプリにアプリ データへのアクセスを提供できます。App extensions can be used to provide access to app data to another app. URL スキームを使うと、URL を別のアプリに渡すことができます。URL schemes enable a URL to be passed to another app. URI が登録されている別のアプリを起動するには Launcher.LaunchUriAsync を使います。結果を取得するためにアプリを起動し、起動したアプリから返されたデータを取得するには Launcher.LaunchUriForResultsAsync を使います。You can launch another app which has registered for a URI with Launcher.LaunchUriAsync, or Launcher.LaunchUriForResultsAsync to launch for results and get data back from the launched app. Launcher.LaunchFileAsync を使うと、別のアプリに処理するファイルを渡すことができます。You can use Launcher.LaunchFileAsync to pass a file to another app to handle.

共有コントラクトを使って、アプリ間でデータを簡単に共有できます。You can use a share contract to easily share data between apps.

URI に応じた既定のアプリの起動Launch the default app for a URI

結果を取得するためのアプリの起動Launch an app for results

ファイルに応じた既定のアプリの起動Launch the default app for a file

データの共有Share data
アプリを呼び出すことができます。 Allowing your app to be invoked.

アプリが別のアプリからの要求に応答できるようにします。Allow your app to respond to a request from another app.
アプリでインテント フィルターインテント処理動作を登録し、別のアプリからの暗黙的インテントに対応します。Apps register an intent handling activity with an intent filter to respond to an implicit intent from another app. アプリの拡張機能をパッケージ化すると、データを他のアプリと共有できます。Packaging an app extension enables data to be shared with other apps. アプリでカスタム URL スキームを登録するには、Info.plist で CFBundleURLTypes キーを使います。Apps can register a custom URL scheme using the CFBundleURLTypes key in Info.plist. アプリを URI スキーム名の既定のハンドラーとして登録するには、パッケージ マニフェストにプロトコルを登録して Application.OnActivated イベント ハンドラーを更新し、必要に応じて結果を返すようにします。You can register your app to be the default handler for a URI scheme name by registering a protocol in the package manifest and updating the Application.OnActivated event handler, optionally returning results. 同様に、アプリを特定のファイルの種類の既定のハンドラーとして登録するには、パッケージ マニフェストに宣言を追加して Application.OnFileActivated イベントを処理します。In the same way you can register your app to be the default handler for certain file types by adding a declaration in the package manifest and handling the Application.OnFileActivated event.

共有コントラクトの要求を処理するには、マニフェストで共有ターゲットとしてアプリを登録し、Application.OnShareTargetActivated イベントを処理します。You can handle share contract requests by registering your app as a share target in the manifest and handling the Application.OnShareTargetActivated event.

結果を取得するためのアプリの起動Launch an app for results

ファイルのアクティブ化の処理Handle file activation

データの受信Receive data
コピーして貼り付けます。 Copy and paste.

アプリ間でテキストやその他のコンテンツをコピーしたり貼り付けしたりします。Copy and pasting text and other content between apps.
クリップボード フレームワークを使って、ClipboardManagerClipData の各クラスでコピーと貼り付けを実装できます。The clipboard framework can be used to implement copy and paste with the ClipboardManager and ClipData classes. UIPasteboardUIMenuControllerUIResponderStandardEditActions を使って、コピーとペーストを実装できます。The UIPasteboard, UIMenuController, and UIResponderStandardEditActions can be used to implement copy and paste. 多くの既定の XAML コントロールは既にコピーと貼り付けをサポートしています。Many default XAML controls already support copy and paste. 自分でコピーと貼り付けを実装するには、Windows.ApplicationModel.DataTransferDataPackageClipboard の各クラスを使います。You can implement copy and paste yourself using the DataPackage and Clipboard classes in Windows.ApplicationModel.DataTransfer.

コピーと貼り付けCopy and paste
ドラッグ アンド ドロップします。 Drag and drop.

アプリ間でコンテンツをドラッグ アンド ドロップします。Dragging and dropping content between apps.
1 つのアプリケーションにドラッグ アンド ドロップを実装するには、Android ドラッグ/ドロップ フレームワークを使います。Drag and drop can be implemented within a single application by using the Android drag/drop framework. iOS では高度なドラッグ アンド ドロップ API は提供されていません。No high-level drag and drop APIs are provided by iOS. アプリにドラッグ アンド ドロップを実装すると、アプリとアプリ、デスクトップとアプリ、アプリとデスクトップのドラッグ アンド ドロップ機能を有効にできます。You can implement dragging and dropping in your app to enable app-to-app, desktop-to-app, and app-to-desktop drag and drop capabilities. UIElement クラスにドラッグ アンド ドロップのサポートを実装するには、AllowDropCanDrag の各プロパティ、DragOverDrop の各イベントを使います。You implement drag and drop support in the UIElement class with the AllowDrop, and CanDrag properties, and the DragOver, and Drop events.

ドラッグ アンド ドロップDrag and drop

ソフトウェアの設計Software design

一般的な概念General concept AndroidAndroid iOSiOS Windows 10 UWPWindows 10 UWP
ソフトウェアの設計パターン。 Software design patterns.

プラットフォーム向けの推奨パターンまたはよく使われるパターン。Recommended or well-used patterns for the platform.
正式なパターンは、推奨されていないか、Android の開発用に提供されていません。ただし、ベータ版のデータ バインディング フレームワークでは、モデル - ビュー - ビューモデル (MVVM) パターンを現在よりも利用できるようになる可能性があります。No formal pattern has been recommended or provided for Android development, although the beta Data Binding Framework may enable more widespread use of the Model-View-ViewModel (MVVM) pattern. 多くのサード パーティの記事やフレームワークでは、モデル ビュー プレゼンター (MVP)MVVM を使った方法を推奨しています。A number of third party articles and frameworks recommend the Model-View-Presenter (MVP) and MVVM approaches. モデル - ビュー - コントローラー (MVC) は iOS で使用される一般的なパターンであり、プラットフォームに統合されています。Model-View-Controller (MVC) is a common pattern used with iOS and is integrated into the platform. UWP 用のアプリ作成時、特定のパターンに制限されません。You are not limited towards a specific pattern when building for UWP.

組み込みの データ バインディング パターンを使って、データの問題と UI の問題を明確に切り離すことができ、後でプロパティ値を更新する UI イベント ハンドラーをコード内に記述することを回避できます。You can use the built-in data binding pattern to ensure clean separation of data concerns and UI concerns, and avoid having to code up UI event handlers which then update property values.

データ バインディングを拡張してモデル - ビュー - ビューモデル (MVVM) パターンに従うことができます。そのためには、MVVM Light Toolkit などのサード パーティの MVVM ライブラリを使うか、独自に展開してロジックをコードビハインドから排除します。You can extend data binding to follow the Model-View-ViewModel (MVVM) pattern, either by making use of third-party MVVM libraries such as MVVM Light Toolkit, or rolling your own and keeping logic out of code-behind.

MVVM パターンThe MVVM Pattern

Template 10 Visual Studio プロジェクト テンプレートTemplate 10 Visual Studio project templates