基本情報技術者 2024年 科目A 問05
問題文
複数のWebサービスの入出力処理を連結させて新たなサービスを提供する、“ロジックマッシュアップ”の例はどれか。
選択肢
ア:利用者が選択した飲食店情報のページを表示する際に、他のWebサービスが提供する地図コンテンツをアクセスマップとして表示する。
イ:利用者が選択した投資商品の情報を表示する際に、関連する経済指標のデータを複数のWebサービスから取得し、グラフに加工して表示する。
ウ:利用者が入力した予算の範囲で宿泊可能な施設のリストを他のWebサービスから取得し、それらの宿泊施設の空室状況を別のWebサービスから取得して表示する。(正解)
エ:利用者がマウスのドラッグで地図を操作した際に、Webページ全体ではなく一部を読み直すことによって地図をスクロールして表示する。
🔒 解説は解答すると表示されます
ロジックマッシュアップ【午前解説】
正解の理由
選択肢ウは、複数の外部Webサービスを組み合わせて操作の順序や条件(予算で絞る → 該当施設を取得 → 各施設ごとに空室状況を別サービスで照会)という「振る舞い(ロジック)」を構成している点が決定的です。ロジックマッシュアップは単に表示用コンテンツを埋め込むのではなく、複数サービスの機能を組み合わせて新しい処理フローや意思決定を作り出すことを指します。したがって、条件判定やサービス間の呼び出し順序・合成があるウが正解です。
解法ステップ
- 「マッシュアップ」の種類を思い出す
- プレゼンテーション(UI)マッシュアップ:外部コンテンツを埋め込む・表示を組み合わせる。
- データマッシュアップ:複数データソースを集約・加工する。
- ロジックマッシュアップ:サービス呼び出しの制御や処理フローを組み合わせる(オーケストレーション)。
- 各選択肢で「処理の制御や条件分岐・合成があるか」を確認する。
- 単に表示するだけならプレゼンテーション、データを集めて可視化するならデータ、複数サービスを順序や条件で呼ぶならロジック。
- 条件や複数サービス間の操作の組み合わせが明確に記述されている選択肢を選ぶ。
選択肢別の誤答解説
- ア:地図コンテンツをページに表示する例は、外部ウィジェットやタイルを埋め込む「プレゼンテーション(UI)マッシュアップ」です。ロジックの合成や制御はほとんど発生しません。
- イ:複数サービスから経済指標を取得してグラフ化するのは「データマッシュアップ/データ集約」に該当します。データ取得と加工は行いますが、サービス間の制御フローや条件付きの振る舞いを組み合わせる点が主目的ではありません。
- ウ:予算で絞ったあと、別サービスに対してさらに空室照会を行うという「条件に基づく複数サービス呼び出しの組合せ」があり、ロジックマッシュアップそのものです。
- エ:マウス操作で地図の一部だけを再読み込みするのは技術的にはAJAXなどのクライアント側部分更新であり、マッシュアップのカテゴリには該当しません。表示更新の手法(UIの実装)に関する記述です。
よくある誤解
- 「複数の外部データを使えばすべてロジックマッシュアップ」という誤解:データを単に結合・可視化するだけならデータマッシュアップであり、ロジック(制御・条件・順序)があるかが分岐点です。
- 「地図やウィジェットの埋め込みもマッシュアップだろう」という誤解:UI部品を組み合わせるのはプレゼンテーションマッシュアップで、ロジックマッシュアップとは目的が異なります。
- 実装手法(例:AJAXで部分更新)を見てマッシュアップの種類を判断する誤り:通信手段は実装細部で、マッシュアップの分類は機能の組合せ(データ・表示・ロジック)で決まります。
補足コラム
ロジックマッシュアップは「オーケストレーション(中心で制御する)」と「コレオグラフィ(各サービスが役割分担して協調する)」の両方の形態をとり得ます。実務では次の点が重要になります。
- エラーハンドリング:サービス間の失敗伝播をどう扱うか(リトライ、フォールバック)。
- レイテンシーと並列化:多数サービス呼び出しは応答遅延の原因になるため並列呼び出しやキャッシュを検討。
- 認可・認証:OAuthやAPIキーの管理、ユーザ権限の伝搬。
- トランザクション性:分散トランザクションが必要か、補償トランザクションで代替するかを設計。
簡単な疑似コード(処理の流れ例):
# 予算で施設を絞る -> 各施設の空室を問い合わせる(並列)
facilities = get_facilities_by_budget(min_budget, max_budget) # サービスA
available = parallel_map(facilities, lambda f: check_availability(f.id)) # サービスB
results = [f for f, a in zip(facilities, available) if a.is_available]
FAQ
Q1. データマッシュアップとロジックマッシュアップは重なることがありますか?
A1. はい。データ取得と加工の過程で条件分岐や複数サービスの制御が出てくれば両者の要素を併せ持ちます。試験問題では目的(表示中心か処理制御中心か)で判断します。
A1. はい。データ取得と加工の過程で条件分岐や複数サービスの制御が出てくれば両者の要素を併せ持ちます。試験問題では目的(表示中心か処理制御中心か)で判断します。
Q2. 外部APIのレスポンスを単に結合して表示するだけならどのカテゴリ?
A2. データマッシュアップ(データ集約・加工)またはプレゼンテーションマッシュアップ(見た目の組合せ)です。ロジック(条件や順序制御)が主題でなければロジックマッシュアップではありません。
A2. データマッシュアップ(データ集約・加工)またはプレゼンテーションマッシュアップ(見た目の組合せ)です。ロジック(条件や順序制御)が主題でなければロジックマッシュアップではありません。
Q3. クライアント側で複数APIを呼ぶとロジックマッシュアップになる?
A3. 呼び出しの場所(クライアント/サーバ)は問われません。ポイントは「複数サービスの呼び出しを制御して新しい振る舞いを作っているか」です。
A3. 呼び出しの場所(クライアント/サーバ)は問われません。ポイントは「複数サービスの呼び出しを制御して新しい振る舞いを作っているか」です。
関連キーワード: API連携、マッシュアップ、オーケストレーション、データ集約、プレゼンテーションマッシュアップ、サービス合成、REST、OAuth、AJAX

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

