teacher asking a question to the class
Photo by Max Fischer on Pexels.com

【授業レポート】システム開発(3年) 第45週目

〜複数API連携と非同期設計:待ち時間と失敗を“設計で制御”する〜

第45週目は、前回までに組み込んだAPI連携を発展させ、複数APIを同時に扱う設計と、
非同期処理(待ち時間・部分失敗)を前提にした実装の考え方を学びました。
テーマは「速さ・安定性・分かりやすさの両立」です。


■ 先生の導入:「APIが増えるほど“待ち”と“失敗”は増える」

田中先生:「APIを2つ、3つと組み合わせると、
“どれかが遅い”“どれかが失敗する”が当たり前になります。
今日は、それを
設計で吸収する方法を身につけましょう。」

先生は、同期処理でAPIを直列に呼ぶと遅くなる例を示し、
非同期・並列の発想が必要になる理由を説明しました。


■ 今日のゴール

  1. 複数API連携のユースケースを設計できる
  2. 同期/非同期の違いを理解する
  3. 並列実行で待ち時間を短縮する考え方を掴む
  4. 一部APIが失敗しても全体を止めない設計を実装する

■ 実習①:複数API連携のユースケース設計

まずは、どのAPIを組み合わせるかを明確化。

例(クラスで扱った案)

  • 図書館システム
    • 天気API:返却注意表示
    • 祝日API:返却期限の延長判断
  • 学習支援アプリ
    • 翻訳API:英文補助
    • 辞書API:単語の意味表示

生徒A:「1つは補助、1つは判断材料。役割を分けると整理しやすい」


■ 実習②:同期処理の問題点を体験する

まずは同期的(順番)にAPIを呼ぶコードで動作確認。

weather = weather_api.fetch(city)
holiday = holiday_api.fetch(date)

体感した問題:

  • 合計時間が長くなる
  • どちらかが失敗すると全体が止まる
  • ユーザーが“待たされている感覚”になる

生徒B:「1つ遅いAPIがあるだけで、全部遅く感じる…」


■ 実習③:非同期・並列の考え方を学ぶ

次に、同時に呼び出す発想を導入。
(授業では概念理解を重視し、簡易的な非同期例を使用)

イメージ(概念)

weather_task = async_fetch_weather(city)
holiday_task = async_fetch_holiday(date)

weather, holiday = await gather(weather_task, holiday_task)

ポイント:

  • 同時に待つことで、**待ち時間は“最も遅いAPI分”**になる
  • 速さの体感が大きく改善する

生徒C:「裏で同時に動いてる感じがして、一気に“実務っぽい”」


■ 実習④:部分失敗を許容する設計

複数APIでは「全部成功」を前提にしないことが重要。

設計方針

  • 重要度の低いAPIは失敗しても続行
  • 成否を Result(成功/失敗) として扱う
  • Service層で最終判断を行う
weather = safe_fetch_weather(city)   # 失敗時は None
holiday = safe_fetch_holiday(date)

message = build_message(weather, holiday)

UI表示例:

  • 「今日は祝日です。返却期限は延長されます」
  • 「※天気情報は取得できませんでした」

生徒D:「“全部そろわないとダメ”じゃない設計が安心」


■ 実習⑤:優先度と表示タイミングの設計

最後に、どの情報を先に表示するかを検討。

  • 主要機能はすぐ表示
  • API補助情報は後から表示/更新
  • ローディング表示で待ちを可視化

生徒E:「待たせるなら、待ってるって分かる方がいい」

先生からは
「UXは“速さ”だけでなく“納得感”」
という実務的な補足がありました。


■ クラス全体の気づき

  • APIが増えるほど、設計の差が出る
  • 非同期は“速くする技術”であり“壊れにくくする技術”
  • Service層の責任がより重要になる
  • UIは“全部揃うのを待たない”方が親切な場合がある

■ 先生のまとめのひとこと

「複数API連携は、
“便利さ”と“不安定さ”を同時に持ち込みます。

だからこそ、
並列・部分失敗・優先度を設計に組み込むことが大切です。
今日の考え方は、生成AIや大規模サービス連携でもそのまま使えます。」


■ 宿題(次週に向けて)

  1. 複数APIを使った ユースケース設計図(簡易シーケンス図) を作成
  2. 重要API/補助APIを分類し、その理由を書く
  3. APIが半分失敗した場合の UI表示案 を1つ考える

■ 来週の予告:生成AI連携の設計入門

次週はいよいよ、
生成AIをシステムに組み込むための設計に入ります。
「どう呼ぶか」よりも
「どう制御し、どう安全に使うか」がテーマです。


第45週目は、
API連携が“増えたときに壊れない設計”を学ぶ重要な節目でした。
生徒たちは、速度・安定性・UXを同時に考える
一段上のシステム設計力を身につけつつあります。

投稿者 greeden

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)