TEXTBOOK SECTION / AI LEARNING

この章のまとめ

Flutterアプリケーション開発概論の「Flutter API連携入門|ポケモン図鑑アプリの作り方」より、この章のまとめを解説。生成AI、AI活用、DX、業務改善を実践しながら学べるオンライン教材です。

18Flutter API連携入門|ポケモン図鑑アプリの作り方Flutter / iOS / Android / MacOS / Windows / 基礎から学ぶ / 開発 / アプリ開発

OVERVIEW

この節で学べること

概要を表示する
項目内容
教材名Flutterアプリケーション開発概論
Flutter API連携入門|ポケモン図鑑アプリの作り方
この章のまとめ
カテゴリFlutter / iOS / Android / MacOS / Windows / 基礎から学ぶ / 開発 / アプリ開発
学習内容生成AI、AI活用、DX、業務改善を実践しながら理解するための教材です。

TABLE OF CONTENTS

目次

CONTENT

ここから

この章では、FlutterアプリからAPIを呼び出し、取得したデータを画面に表示する流れを学びました。

最初はただの画面だったアプリが、PokéAPIとつながり、ポケモン番号で検索できる小さな図鑑アプリになりました。


この章で作ったもの

この章では、次のようなアプリを作りました。

ポケモン番号を入力
↓
検索ボタンを押す
↓
PokéAPIからデータを取得
↓
名前・画像・番号をカードUIで表示
↓
失敗時はエラーを表示

ただ表示するだけではなく、通信中のローディングやエラー対応も入れました。

ここまでできると、かなり実用アプリに近づきます。


学んだこと

学んだ内容使ったもの
API通信の準備http パッケージ
APIを呼び出すhttp.get()
JSONを変換するjsonDecode()
入力値を取得するTextField / TextEditingController
画像を表示するImage.network()
通信中を表示するCircularProgressIndicator
エラーを受け止めるtry-catch
見た目を整えるCard / Padding / Color

忙しい方はここだけ見て

FlutterでAPI連携を作る基本の流れは、次の通りです。

final Uri url = Uri.https(
  'pokeapi.co',
  '/api/v2/pokemon/$pokemonId',
);

final http.Response response = await http.get(url);

final Map<String, dynamic> data =
    jsonDecode(response.body) as Map<String, dynamic>;

final String name = data['name'] as String;

APIから返ってきたJSONは、そのままでは扱いにくいです。

jsonDecode() でMapに変換し、data['name'] のように必要な値を取り出します。


この章の重要ポイント

1. API通信は時間がかかる

API通信は、ボタンを押した瞬間に必ず結果が返るとは限りません。

そのため、asyncawait を使いました。

final Map<String, dynamic> data = await fetchPokemonData(pokemonId);

この書き方によって、APIの結果を待ってから次の処理に進めます。


2. 入力値は必ずチェックする

TextField に入力された値は文字列です。

数字として使うには、変換が必要です。

final int? pokemonId = int.tryParse(_pokemonIdController.text);

int.tryParse() を使うと、空欄や文字入力でもアプリが止まりにくくなります。


3. API失敗を想定する

存在しない番号や通信エラーは、普通に起こります。

そのため、API通信は try-catch で囲みました。

try {
  final Map<String, dynamic> data = await fetchPokemonData(pokemonId);
} catch (error) {
  setState(() {
    _errorMessage = 'ポケモンを取得できませんでした';
  });
}

失敗しても、画面にメッセージを出せば、ユーザーは次の行動を取りやすくなります。


4. ローディング表示で親切にする

通信中に何も表示されないと、ユーザーは不安になります。

そこで、_isLoading を使って状態を管理しました。

bool _isLoading = false;

通信中は、次のWidgetを表示しました。

const CircularProgressIndicator()

小さな工夫ですが、アプリの使いやすさは大きく変わります。


完成したアプリの機能

この章の最後に完成したアプリには、次の機能があります。

機能内容
番号検索ポケモン番号を入力して検索できる
API通信PokéAPIからデータを取得できる
名前表示ポケモン名を表示できる
画像表示API画像を表示できる
カードUI検索結果を見やすく表示できる
ローディング通信中の状態を表示できる
エラー表示取得失敗時にメッセージを出せる

よく使ったコード

この章で何度も出てきた大事なコードです。

import 'dart:convert';
import 'package:http/http.dart' as http;
final http.Response response = await http.get(url);
final Map<String, dynamic> data =
    jsonDecode(response.body) as Map<String, dynamic>;
setState(() {
  _pokemonName = name;
});
Image.network(_pokemonImageUrl!)

これらは、他のAPI連携アプリでもよく使います。

天気アプリ、ニュースアプリ、商品検索アプリ、AIチャットアプリなどにも応用できます。


確認問題

問1

FlutterでAPI通信を行うために使ったパッケージは何ですか?

答え。

http

問2

APIから返ってきたJSON文字列をMapに変換する関数は何ですか?

答え。

jsonDecode()

問3

インターネット上の画像を表示するWidgetは何ですか?

答え。

Image.network()

問4

API通信中の表示に使ったWidgetは何ですか?

答え。

CircularProgressIndicator

問5

API取得に失敗したときの処理を書く構文は何ですか?

答え。

try-catch

まとめ

この章では、FlutterでAPI連携アプリを作る基本を学びました。

大事なのは、次の流れです。

入力する
↓
APIを呼び出す
↓
JSONをMapに変換する
↓
必要な値を取り出す
↓
画面に表示する
↓
失敗時はエラーを出す

この流れを理解できれば、PokéAPI以外のAPIにも応用できます。

API連携は、アプリを一気に「外の世界とつながる道具」に変えてくれます。

世界が広がったところで、自分でどんなアプリが作れそうか考えてみましょう。

FAQ

よくある質問

この章のまとめは医療関係者向けだけの内容ですか。
医療分野の例が含まれる場合もありますが、医療関係者だけに限定した内容ではありません。生成AI、AI活用、DX、業務改善、プロトタイプ開発など、一般的なAI学習の事例として読める内容です。
AI初心者でも読めますか。
はい。AIをこれから学ぶ方、数学が苦手な方、仕事でAIを使いたい方にも読み進めやすいように、教材の章と節の流れに沿って整理しています。
サムネイル画像は必ず表示されますか。
はい。教材にcoverUrlが設定されている場合はその画像を表示し、未設定の場合は代替サムネイル画像を表示します。
Flutterアプリケーション開発概論のほかの章も読めますか。
はい。教材トップから章立てを確認でき、前後の節へもページ下部のナビゲーションから移動できます。