---
title: "モバイルアプリにおけるWebサービスのエラー処理"
date: "2019-07-10"
categories: 
  - "development"
  - "mobile-development"
  - "software"
tags: 
  - "error-handling"
  - "mobile-apps"
  - "web-services"
description: この記事では、MobileTogetherを使用して、モバイルアプリにおける効果的なWebサービスのエラー処理について解説します。HTTPエラーの管理方法や、ユーザーエクスペリエンスの向上に役立つ戦略について詳しく説明します。
---
Status: #blog

Tags:  #error-handling #mobile-apps #web-services

Categories: [development](/blog/ja/category/development.md) | [mobile-development](/blog/ja/category/mobile-development.md) 
# モバイルアプリにおけるWebサービスのエラー処理

スマートフォンは、私たちの指先で世界中の情報にアクセスできる便利なツールですが、最高のモバイルアプリであっても、外部サーバーとの通信中に発生するウェブサービスの不具合によって、その機能が損なわれることがあります。また、遠隔地での不安定な携帯電話回線も、データ検索などの際にアプリのパフォーマンスを低下させる可能性があります。

MobileTogetherは、 [ローコードで、クロスプラットフォーム対応のモバイルアプリケーション開発ツール](https://www.altova.com/ja/mobiletogether) Altova社の製品には、モバイルアプリケーションにおいて、開発者がWebサービスのエラーを適切に処理できる機能が搭載されており、これにより、予期せぬアプリケーションの停止や、意味不明なエラーメッセージによってユーザーに不便をかけることを回避できます。

以前の記事では、MapForceにおけるデータマッピングにおけるHTTPエラー処理について説明しました。今回は、同じWebサービスをモバイルアプリで扱い、MobileTogetherにおけるエラー処理について解説します。

![](/blog/images/cbcr_blog_1.jpg)

<!--more-->

MapForceにおけるAirportStatusのサンプルデータマッピングでは、3文字の空港コードを入力として受け取り、FAA（アメリカ連邦航空局）が提供するWebサービスを呼び出します。このWebサービスは、空港の状況と、現在発生している遅延に関する説明を含むJSONファイルを返します。モバイルアプリでは、ユーザーが空港を選択するためのドロップダウンリストを提供し、同じWebサービスを呼び出して結果を表示することができます。以下は、Androidスマートフォンでの表示例です

[![Androidスマートフォンで使用できる、空港の状況を表示するモバイルアプリ](/blog/images/screenshot-overview-517x1030.png)](screenshot-overview.png)

Airport Statusアプリの画面下部にあるボタンは、FAA（アメリカ連邦航空局）のウェブページに直接アクセスするためのもので、これらのページにはさらに詳しい情報が掲載されていますが、モバイル端末での表示に最適化されていません。

このモバイルアプリは、MobileTogether Designerを使用して開発されました。ウェブサービスは、RESTful APIリクエストに基づいて、ページデータソースとして追加されています。MobileTogetherのAPIリクエストダイアログは、MapForceのダイアログと非常に似ており、空港コードのパラメータ定義や、JSON形式のレスポンスのためのヘッダーフィールドが含まれています

[![MobileTogether RESTful API リクエスト ダイアログ](/blog/images/rest-request-dialog.png)](rest-request-dialog.png)

このアプリの操作フローは非常にシンプルです。ユーザーはドロップダウンリストから空港を選択し、REST Getリクエストが実行され、表示が更新されます。これらの操作は、モバイルアプリにおけるWebサービスのエラー処理機能を備えたアクショングループによって行われます

![モバイルアプリにおけるWebサービスのエラー処理の定義
](/blog/images/action-group.png)

このアプリケーションの実行中にHTTPエラーが発生した場合、エラーメッセージを表示するダイアログを表示します。開発者は、個々のアプリケーションの要件に応じて、エラー処理方法を以下の3つのオプションから選択できます

** スクリプトの中止:** エラーが発生した場合、アクショングループのそれ以降のすべての処理が停止します。エラーが発生した場合、これがデフォルトの動作です。エラーが発生しても処理を続行するには、「続行」または「エラーを発生」のいずれかを選択してください。

**継続:** 処理が終了することはありません。代わりに、開発者は2つの処理経路を定義し、エラーが発生しない場合（成功時）にどちらの経路を実行するか、またはエラーが発生した場合（エラー時）にどちらの経路を実行するかを選択できます。

**エラー発生時:** このオプションを選択すると、エラーが検出された場合に、例外が発生し、その例外がTry/Catchアクションの変数に格納されます。Try/Catchアクションの「Catch」部分では、エラーが発生した場合に実行する処理を指定します。エラーが発生しない場合は、次のアクションが処理されます。MobileTogether Designerのオンラインヘルプには、Try/Catchの詳細な説明が記載されています。また、Try/Catchについては、[以前のブログ記事](https://www.altova.com/blog/advanced-error-handling-actions-mobile-apps/)でも解説しています。

### アプリ内での情報表示の制御

このアプリの画面表示は、一連のテーブルで構成されており、以下に示すのは、MobileTogetherのページデザインウィンドウの一部を表示したものです

![MobileTogetherのページデザインウィンドウで、テキストとコントロールの配置を調整します](/blog/images/display-definition.png)

画像の上部には、空港を選択するためのドロップダウンメニューがあり、選択がされた際に実行される制御操作の説明が記載されています。これは、アクショングループのトリガーとなる部分です。

[![MobileTogetherで、コントロールにアクションを追加する方法](/blog/images/display-definition-2.png)](display-definition-2.png)

![ユーザーがコンボボックスから項目を選択した際に実行される操作](/blog/images/execute-actions.png)

各要素の表示設定は、リクエストから返されたデータに基づいて、表示内容をカスタマイズすることができます。

### モバイルアプリにおけるWebサービスのエラー処理のテスト

以前の記事で、MapForceのエラー処理について、エラーを意図的に発生させ、その結果を検証するための代替的なデータマッピング方法を紹介しました。実は、有効な空港コードの代わりに空の文字列を送信することで、FAAのWebサービスにエラーを発生させることが可能です。コンボボックスの選択肢の最後の項目が空の文字列を送信し、エラーを発生させます。以下は、この動作がiPhoneアプリの横向き表示で確認できる様子です

[![モバイルアプリにおけるWebサービスのエラー処理](/blog/images/forced-error-1030x476.png)](blob:https://www.altova.com/314bd398-fea4-458f-ab24-14156cfd341f)

ユーザーはその後、「OK」ボタンをクリックしてメッセージを閉じ、別の空港の状況を確認することができます

[![iPhoneで表示される「空港情報」モバイルアプリ](/blog/images/airport-delay-1-617x1030.png)](airport-delay-1.png)

MobileTogetherを初めてご利用になる場合は、以下の情報を参考にしてください [その他のサンプルとビデオデモンストレーション](https://www.altova.com/ja/mobiletogether/demos) 導入部分をご参照ください。または、ダウンロードして、モバイルアプリにおける独自のWebサービスエラー処理機能を構築することから始めることもできます [自由に使えるMobileTogether Designer](https://www.altova.com/ja/mobiletogether/download).
