グローバルナビゲーションへ

本文へ

フッターへ

お役立ち情報Blog



CodeIgniter4でAPIを使用してランダムユーザーを生成する方法

今回は前回の天気情報取得に引き続き、APIを使用して簡単なアプリケーションを作成してみます。

今回のテーマは「ランダムユーザー生成」です。Random User Generatorを使って、ランダムなユーザーのプロフィールを取得し、webページ上に表示する仕組みを実装してみます。

前提

  • Ubuntu 22.04
  • PHP 8.1.2
  • CodeIgniter 4.5.1

Random User Generatorとは

Random User Generatorは、名前やメールアドレス、住所などのランダムなユーザーデータを返すAPIです。開発中にサンプルユーザーデータが必要なときに便利なAPIで、使い方も非常に簡単です。
ただ、日本人のデータは存在しないため、日本人のデータが必要な場合は利用するのは難しいかもしれません。

APIのエンドポイントは以下のとおりです:

https://randomuser.me/api/

このエンドポイントにアクセスすることで、ランダムに生成されたユーザーの情報をJSON形式で取得できます。

手順

1. CodeIgniter 4のセットアップ

CodeIgniter4の環境がまだ用意されていない場合は、前回の天気情報取得の記事と同様に、ばねさんの「CodeIgniter4のインストール」を参考に、環境を構築してください。

2. コントローラの作成

まず、新しいコントローラを作成します。

php spark make:controller RandomUser

生成された RandomUser.php ファイルを開き、以下のコードを追加します。

<?php

namespace App\Controllers;

use App\Controllers\BaseController;

class RandomUser extends BaseController
{
    public function index()
    {
        return view('random_user_form');
    }

    public function fetchUser()
    {
        $apiUrl = "https://randomuser.me/api/";

        $client = \Config\Services::curlrequest();
        try {
            $response = $client->get($apiUrl);
            $data = json_decode($response->getBody(), true);

            if (isset($data['results'][0])) {
                return view('random_user_result', ['user' => $data['results'][0]]);
            } else {
                return view('random_user_form', ['error' => 'ユーザー情報の取得に失敗しました。']);
            }
        } catch (\Exception $e) {
            return view('random_user_form', ['error' => 'APIリクエスト中にエラーが発生しました。']);
        }
    }
}

ここでは、

  • fetchUser メソッドで Random User Generator を呼び出し、ランダムなユーザー情報を取得
  • 正常にユーザー情報が取得できた場合は random_user_result ビューにデータを渡し、失敗した場合はエラーメッセージを random_user_form ビューに表示
  • curlrequest サービスを利用して HTTP リクエストを行い、API からのレスポンスを処理

という動作をしています。

3. ビューの作成

次に、ユーザー情報を入力・表示するためのビューを作成します。

  • app/Views/random_user_form.php
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ランダムユーザー生成</title>
</head>
<body>
    <h1>ランダムユーザー生成</h1>
    <a href="/randomuser/fetchUser">
        <?= csrf_field() ?>
        <button type="submit">ランダムユーザーを取得</button>
    </a>
    <?php if (isset($error)): ?>
        <p style="color: red;"><?= esc($error) ?></p>
    <?php endif; ?>
</body>
</html>
  • app/Views/random_user_result.php
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ランダムユーザー結果</title>
</head>
<body>
    <h1>ランダムユーザー情報</h1>
    <p>名前: <?= esc($user['name']['first'] . ' ' . $user['name']['last']) ?></p>
    <p>メール: <?= esc($user['email']) ?></p>
    <p>住所: <?= esc($user['location']['street']['name'] . ', ' . $user['location']['city']) ?></p>
    <p>国: <?= esc($user['location']['country']) ?></p>
    <img src="<?= esc($user['picture']['large']) ?>" alt="ユーザーの画像">
    <a href="/randomuser">他のユーザーを取得</a>
</body>
</html>

4. ルートの設定

app/Config/Routes.php ファイルを開き、ルートを追加します。

$routes-&gt;get(&#039;/randomuser&#039;, &#039;RandomUser::index&#039;);
$routes-&gt;get(&#039;/randomuser/fetchUser&#039;, &#039;RandomUser::fetchUser&#039;);

5. アプリケーションの実行

アプリケーションを実行して、ランダムなユーザー情報を取得できるか試してみましょう。

php spark serve

で、アプリケーションを起動し、「ランダムユーザーを取得」ボタンを押下してみます。

のように、正しくランダムユーザーの情報を取得できることを確認できました。

さいごに

今回は、CodeIgniter4を使ってRandom User Generatorからランダムなユーザー情報を取得し、表示するシンプルなアプリケーションを作成しました。前回の天気情報取得に続き、APIの活用方法を学ぶことができたかと思います。

この記事が皆さんのPHPとAPIの理解を深める一助となれば幸いです。

この記事を書いた人

チェリー
チェリー
モノを売るより創りたいという想いで、約5カ月間の独学期間を経て、営業職からエンジニアへ転職。現在は、ソリューション事業部のWebエンジニアとして、主にシステムの開発・運用に従事している。趣味は料理と釣り。
この記事のカテゴリ

FOLLOW US

最新の情報をお届けします