Xamarin.Forms Web サービスの紹介

Download Sampleサンプルのダウンロード

このトピックでは、さまざまな Web サービスとの通信方法を示す Xamarin.Forms のサンプル アプリケーションを詳しく解説します。 Web サービスごとに別のサンプル アプリケーションが使用されますが、これらは機能的に似ており、共通のクラスを使用します。

以下で説明するサンプルの To Do リスト アプリケーションでは、さまざまな種類の Web サービス バックエンドに Xamarin.Forms でアクセスする方法を示します。 このアプリケーションには、次の機能があります。

  • タスクの一覧を表示します。
  • タスクを追加、編集、削除します。
  • タスクの状態を "完了" に設定します。
  • タスクの名前とメモのフィールドを読み上げます。

どの場合も、タスクはバックエンドで保存され、Web サービスを介してアクセスされます。

このアプリケーションが起動されると、Web サービスから取得されたタスクの一覧のページが表示され、ユーザーは新しいタスクを作成できます。 タスクの 1 つをクリックすると、このアプリケーションの 2 番目のページが表示され、ここでそのタスクの編集、保存、削除、読み上げができます。 最終的なアプリケーションは、次のとおりです。

Todo application - first pageTodo application - second page

このガイドの各トピックには、このアプリケーションの別バージョンへのダウンロード リンクがあり、特定の種類の Web サービス バックエンドのデモを見ることができます。 各 Web サービス スタイルに関連するページにある、関連するサンプル コードをダウンロードしてください。

アプリケーションの構造を理解する

各サンプル アプリケーションの共有コード プロジェクトは、次の 3 つのメイン フォルダーで構成されます。

Folder 目的
データ​​ データ項目を管理するために、および Web サービスと通信するために使用されるクラスとインターフェイスが格納されています。 少なくとも、これには TodoItemManager クラスが含まれており、このクラスは Web サービス操作を呼び出すために App クラス内のプロパティを介して公開されます。
モデル このアプリケーションのデータ モデルのクラスが格納されています。 少なくとも、これには TodoItem クラスが含まれており、このアプリケーションで使用されるアイテム 1 件のデータがこれでモデル化されます。 このフォルダーには、ユーザー データのモデル化に使用される任意の追加クラスを入れることもできます。
ビュー このアプリケーションのページが格納されます。 これは通常、TodoListPage クラスと TodoItemPage クラスで構成されており、認証目的で使用される追加クラスもここに格納されます。

各アプリケーションの共有コード プロジェクトも、次のように多数の重要なファイルで構成されています。

ファイル 目的
Constants.cs Constants クラス。このアプリケーションが Web サービスと通信するために使用する定数がある場合は、ここで指定されます。 プロバイダー上に作成された個人用バックエンド サービスにアクセスするには、これらの定数を更新する必要があります。
ITextToSpeech.cs ITextToSpeech インターフェイス。Speak メソッドを任意の実装クラスによって提供する必要があることが指定されています。
Todo.cs App クラス。このアプリケーションによって各プラットフォーム上に表示される最初のページと、Web サービス操作の呼び出しに使用される TodoItemManager クラスの、両方のインスタンス化を行います。

ビュー ページ

サンプル アプリケーションの大多数には、少なくとも次の 2 つのページが含まれています。

  • TodoListPage – このページには TodoItem のインスタンスの一覧が表示され、TodoItem.Done プロパティが true の場合はチェック マークのアイコンが表示されます。 アイテムの 1 つをクリックすると、TodoItemPage に移動します。 さらに、+ 記号をクリックして新しいアイテムを作成できます。
  • TodoItemPage – このページには、選択された TodoItem の詳細が表示され、このアイテムの編集、保存、削除、読み上げを行うことができます。

さらに、一部のサンプル アプリケーションには、ユーザー認証プロセスの管理に使用される追加のページが含まれています。

データのモデル化

各サンプル アプリケーションでは TodoItem クラスが使用されており、これによってモデル化されたデータが表示されて、保存のために Web サービスに送信されます。 次に示すのは、TodoItem クラスのコード例です。

public class TodoItem
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Notes { get; set; }
    public bool Done { get; set; }
}

ID プロパティは、TodoItem の各インスタンスを一意に特定するために使用されます。また、更新または削除の対象のデータを各 Web サービスが特定するためにも使用されます。

Web サービス操作の呼び出し

Web サービス操作は TodoItemManager クラスを通してアクセスされ、このクラスのインスタンスには App.TodoManager プロパティを通してアクセスできます。 TodoItemManager クラスには、Web サービス操作を呼び出すための次のメソッドがあります。

  • GetTasksAsync – このメソッドは、Web サービスから取得した TodoItem のインスタンスを TodoListPage 上の ListView コントロールに入力するために使用されます。
  • SaveTaskAsync – このメソッドは、TodoItem のインスタンスを Web サービス上で作成または更新するために使用されます。
  • DeleteTaskAsync – このメソッドは、TodoItem のインスタンスを Web サービス上で削除するために使用されます。

さらに、一部のサンプル アプリケーションでは TodoItemManager クラスに追加のメソッドが含まれており、ユーザー認証プロセスの管理に使用されます。

TodoItemManager のメソッドでは、Web サービス操作を直接呼び出す代わりに、TodoItemManager コンストラクターに挿入された依存クラスのメソッドが呼び出されます。 たとえば、あるサンプル アプリケーションでは RestService クラスが TodoItemManager コンストラクターに挿入されており、これで REST API を使用してデータにアクセスするという実装が実現します。