カテゴリ: CodeIgniter 更新日: 2026/03/02

CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド

CodeIgniterでRESTful APIを作る全体構成を初心者向けに解説
CodeIgniterでRESTful APIを作る全体構成を初心者向けに解説

先生と生徒の会話形式で理解しよう

生徒

「最近よく聞く『API』っていうものを作ってみたいんですけど、CodeIgniter(コードイグナイター)で初心者でも作れますか?」

先生

「もちろんです!CodeIgniterはPHPというプログラミング言語のフレームワーク(道具箱のようなもの)で、RESTful APIを作るのがとても得意なんですよ。」

生徒

「RESTful APIって、普通のホームページを作るのとは何が違うんですか?全体の仕組みが知りたいです!」

先生

「いいところに気づきましたね。今回は、APIの基本的な考え方からCodeIgniterでの全体構成まで、未経験の方にも分かりやすく解説していきましょう!」

1. APIとRESTful APIとは?基本をマスター

1. APIとRESTful APIとは?基本をマスター
1. APIとRESTful APIとは?基本をマスター

プログラミングを始めたばかりの方にとって、API(エーピーアイ)という言葉は難しく感じるかもしれません。APIは「Application Programming Interface」の略で、簡単に言うと「プログラム同士が情報をやり取りするための窓口」のことです。

例えば、私たちがレストランに行ったとき、厨房の料理人に直接注文はしませんよね?「ウェイターさん」を通して注文を伝え、料理を運んできてもらいます。この「ウェイターさん」の役割がAPIです。スマホアプリがサーバーにあるデータを読み取ったり、新しい情報を保存したりする際に、この窓口(API)が活躍します。

そして、RESTful(レストフル)とは、その窓口の「作り方のルール」のことです。インターネットで使われる標準的なルールに従うことで、誰にとっても使いやすく、整理された窓口を作ることができます。CodeIgniterを使えば、このルールに基づいたシステムを効率よく組み立てることができるのです。

2. CodeIgniter(コードイグナイター)の役割

2. CodeIgniter(コードイグナイター)の役割
2. CodeIgniter(コードイグナイター)の役割

CodeIgniterは、PHPという言語で動く「フレームワーク」です。フレームワークとは、一から十まで全部自分で作らなくても、あらかじめ便利な部品が揃っている「組み立てキット」のようなものです。

APIを開発する際、データの整理や保存、通信の処理など、やるべきことはたくさんあります。CodeIgniterは動作が非常に軽く、設定も簡単なので、初心者の方が「とりあえず何か動くものを作ってみたい」という時にぴったりの道具です。特に、最新のバージョンではRESTful APIを作るための専用機能が充実しており、短いコードで強力な機能を実装できます。

3. API開発の要「MVCモデル」を知ろう

3. API開発の要「MVCモデル」を知ろう
3. API開発の要「MVCモデル」を知ろう

CodeIgniterの全体構成を理解する上で最も大切なのがMVC(エムブイシー)という考え方です。これは、プログラムの役割を3つのチームに分ける仕組みのことです。

  • Model(モデル): データの管理担当。データベース(情報を貯めておく倉庫)から値を取り出したり、保存したりします。
  • View(ビュー): 見た目担当。APIの場合は、HTMLではなく「JSON(ジェイソン)」というデータ形式を返します。
  • Controller(コントローラー): 全体の司令塔。ユーザーからのリクエストを受け取り、モデルに指示を出し、最後に結果をビューに伝えます。

この3つの役割分担がしっかりしているおかげで、後からプログラムを修正しやすくなります。まずは「コントローラーが司令塔なんだな」ということだけ覚えておけば大丈夫です。

4. 司令塔「Controller」の作り方

4. 司令塔「Controller」の作り方
4. 司令塔「Controller」の作り方

APIの心臓部となるのがコントローラーです。ここで「どんなデータが欲しいか」というリクエストを受け取ります。まずは、画面に簡単なメッセージを返すだけのAPIコントローラーを見てみましょう。


namespace App\Controllers;

use CodeIgniter\RESTful\ResourceController;

class HelloApi extends ResourceController
{
    // データを取得する「GET」という命令を受け取った時の処理
    public function index()
    {
        $data = [
            'message' => 'こんにちは!APIの世界へようこそ',
            'status'  => 'success'
        ];
        // データをJSONという形式で相手に返します
        return $this->respond($data);
    }
}

上記のコードでは、ResourceControllerという特別な機能を使っています。これを使うだけで、CodeIgniterが自動的に「API用の準備」を整えてくれます。respondという命令を使うことで、複雑な変換をせずにデータを送り返すことができるのです。

5. ルーティングでURLと機能を結びつける

5. ルーティングでURLと機能を結びつける
5. ルーティングでURLと機能を結びつける

「どのURLにアクセスしたら、どのプログラムが動くか」を決めるのがルーティングという設定です。例えば、「/users」にアクセスしたらユーザー情報を返す、といった道案内のような役割を果たします。

CodeIgniterでは、app/Config/Routes.phpというファイルにこの設定を書きます。API開発では「resource」という便利な設定方法があり、これ一行で「データの作成・読み取り・更新・削除」のURLをまとめて登録できます。


// ルーティングの設定ファイルに記述する例
$routes->resource('api/members');
// これだけで /api/members に対するアクセスが処理できるようになります

このように、複雑なURLの設定を簡略化できるのも、CodeIgniterが初心者におすすめされる大きな理由の一つです。

6. データのやり取り形式「JSON」とは?

6. データのやり取り形式「JSON」とは?
6. データのやり取り形式「JSON」とは?

APIが返すデータは、人間が見るための綺麗なデザインではなく、プログラムが読みやすいJSON(ジェイソン)という形式が一般的です。これは、中身がシンプルで軽いテキストデータです。

先ほどのコントローラーを実行した結果、ブラウザやアプリには以下のような形式でデータが届きます。


{
    "message": "こんにちは!APIの世界へようこそ",
    "status": "success"
}

このデータを受け取ったスマホアプリなどが、文字を大きくしたり色をつけたりして、最終的にユーザーに見せることになります。APIは「中身の具材」だけを提供する役割に専念するわけです。

7. データベースとの連携(Modelの役割)

7. データベースとの連携(Modelの役割)
7. データベースとの連携(Modelの役割)

本物のAPIでは、情報をプログラムの中に書くのではなく、データベースから取り出します。ここで登場するのがModel(モデル)です。CodeIgniterのモデルは、難しいSQLという命令文を詳しく知らなくても、直感的に操作できるように設計されています。


namespace App\Models;

use CodeIgniter\Model;

class MemberModel extends Model
{
    // 操作するテーブル(名前リストのようなもの)の名前を指定
    protected $table = 'members';
    // 編集を許可する項目の名前
    protected $allowedFields = ['name', 'email'];
}

このモデルを使うことで、コントローラーは「データベースの中にあるメンバー全員を連れてきて!」と一言お願いするだけで済むようになります。これを専門用語で抽象化(ちゅうしょうか)と呼び、複雑なことをシンプルに扱う技術の一つです。

8. データの登録を行う処理を書いてみよう

8. データの登録を行う処理を書いてみよう
8. データの登録を行う処理を書いてみよう

次に、外部から送られてきたデータを保存する処理を見てみましょう。APIでは「POST(ポスト)」という方法を使ってデータを送信します。これは、手紙をポストに投函するイメージに近いです。


public function create()
{
    $model = new \App\Models\MemberModel();
    
    // 送られてきたデータを受け取ります
    $json = $this->request->getJSON();
    
    // データベースに保存します
    $model->insert([
        'name'  => $json->name,
        'email' => $json->email
    ]);

    return $this->respondCreated(['message' => '新しく登録しました!']);
}

このプログラムは、誰かが名前とメールアドレスを送ってきたときに、それをデータベースの「members」という場所に記録します。成功したら「登録しました!」という返事を返します。このように、一つ一つの動作(作る、見る、直す、消す)を関数として定義していきます。

9. HTTPメソッドで動作を指定する

9. HTTPメソッドで動作を指定する
9. HTTPメソッドで動作を指定する

RESTful APIでは、URLだけでなくHTTPメソッドという「動詞」を使って、何をしたいかを伝えます。これがAPI開発の最大の特徴です。

メソッド 役割(意味) 例えるなら
GET 取得する メニューを見る
POST 新しく作る 料理を注文する
PUT 更新する 注文を変更する
DELETE 削除する 注文をキャンセルする

例えば、同じ「/api/members」という宛先でも、GETで送れば「名簿を見せて」という意味になり、POSTで送れば「新しい人を登録して」という意味になります。このルールのおかげで、URLがぐちゃぐちゃにならず、スッキリとした構成のシステムを作ることができるのです。

10. API開発を支えるツール紹介

10. API開発を支えるツール紹介
10. API開発を支えるツール紹介

APIは画面(見た目)がないため、ブラウザだけで動作確認をするのが少し大変です。そこで、プロのエンジニアは専用のツールを使います。代表的なのがPostman(ポストマン)というツールです。

これを使うと、「POSTでデータを送るテスト」や「データが正しく返ってくるかのチェック」がボタン一つでできるようになります。最初は難しく感じるかもしれませんが、リモコンを操作するような感覚で扱えるので、少しずつ慣れていきましょう。

CodeIgniterでのAPI開発は、基本的な構成さえ掴んでしまえば、驚くほどスピーディーに進めることができます。まずは自分の手で、文字を返すだけの簡単なAPIを作ってみることから始めてみてください。それが、世界中のアプリとつながる第一歩になります。

カテゴリの一覧へ
新着記事
New1
Laravel
LaravelでAPIのレスポンスをテストする方法を完全解説!assertJsonで初心者も安心
New2
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New3
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New4
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.2
Java&Spring記事人気No2
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.5
Java&Spring記事人気No5
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.6
Java&Spring記事人気No6
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方