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

CodeIgniterでRESTful API開発入門!初心者でも基礎からわかる徹底解説

CodeIgniterでAPI開発を始める前に知っておくべき基礎知識
CodeIgniterでAPI開発を始める前に知っておくべき基礎知識

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

生徒

「最近よく聞く『API』って何ですか?CodeIgniterで作れると聞いたのですが……。」

先生

「APIは、アプリとアプリが情報をやり取りするための『窓口』のようなものです。PHPのフレームワークであるCodeIgniterを使えば、その窓口をとても効率的に作ることができますよ。」

生徒

「プログラミング初心者でも、APIを作ることはできるんでしょうか?」

先生

「もちろんです!まずはAPIやRESTfulといった基礎知識から順番に学んでいきましょう。」

1. API(エーピーアイ)って一体なに?

1. API(エーピーアイ)って一体なに?
1. API(エーピーアイ)って一体なに?

プログラミングを始めたばかりだと、「API」という言葉を難しく感じるかもしれませんね。APIは「Application Programming Interface(アプリケーション・プログラミング・インターフェース)」の略称です。もっと簡単に言うと、「プログラム同士が会話をするためのルール」のことです。

例えば、あなたがレストランに行ったときを想像してみてください。あなたは「お客さん」、料理を作る人は「シェフ」です。しかし、あなたとシェフが直接会話をすることは少ないですよね?そこで登場するのが「ウェイターさん」です。あなたはウェイターさんに注文を伝え、ウェイターさんがシェフに伝え、料理が運ばれてきます。この「ウェイターさんの役割」こそがAPIなのです。

Webの世界では、スマートフォンのアプリがサーバーにあるデータを欲しいとき、APIというウェイターさんにお願いをして、データを持ってきてもらいます。この仕組みを理解することが、API開発の第一歩です。

2. RESTful API(レストフル・エーピーアイ)の考え方

2. RESTful API(レストフル・エーピーアイ)の考え方
2. RESTful API(レストフル・エーピーアイ)の考え方

APIの中でも、現在世界中で最も広く使われているスタイルが「REST(レスト)」、または「RESTful API」と呼ばれるものです。これは、特定のルールに従って作られたAPIのことです。

RESTful APIには、大きく分けて4つの「やりたいこと(メソッド)」があります。これを普段の生活で例えると以下のようになります。

  • GET(ゲット): 情報を取得する(メニューを見る)
  • POST(ポスト): 新しい情報を登録する(新しく注文する)
  • PUT(プット): 情報を更新する(注文内容を変更する)
  • DELETE(デリート): 情報を削除する(注文をキャンセルする)

このように、やりたい操作を明確に区別するのがRESTful APIの特徴です。CodeIgniterはこのRESTfulな仕組みを簡単に作れる機能が備わっています。

3. PHPフレームワーク「CodeIgniter」とは?

3. PHPフレームワーク「CodeIgniter」とは?
3. PHPフレームワーク「CodeIgniter」とは?

CodeIgniter(コードイグナイター)は、PHPというプログラミング言語を使ってWebサイトやシステムを作るための「道具箱(フレームワーク)」です。プログラミングを一から全て自分で書くのは非常に大変ですが、CodeIgniterを使えば、よく使う機能が最初から用意されているため、開発スピードが格段に上がります。

CodeIgniterの特徴は、動作が非常に軽快で、設定がシンプルなことです。他のフレームワークに比べて覚えるべきルールが少ないため、初心者の方が最初に触れるフレームワークとしても非常に人気があります。API開発においても、この「シンプルさ」は大きな武器になります。複雑な手順を踏まずに、すぐにデータのやり取りができる窓口を作成できるからです。

4. JSON(ジェイソン)形式のデータを理解しよう

4. JSON(ジェイソン)形式のデータを理解しよう
4. JSON(ジェイソン)形式のデータを理解しよう

API開発で絶対に避けて通れないのが「JSON」というデータの形式です。APIは「ウェイターさん」だと説明しましたが、ウェイターさんが料理を運ぶとき、お皿に乗せて運びますよね?その「お皿の形」がJSONです。

JSONは、人間が見てもわかりやすく、コンピューターにとっても読み取りやすい形式です。CodeIgniterでAPIを作るときは、最終的にデータをこのJSON形式に変換して、アプリやブラウザに返してあげます。

例えば、ユーザーの名前と年齢を伝えるJSONは、以下のような書き方になります。


// PHPの連想配列という箱にデータを入れる
$data = [
    'name' => '田中太郎',
    'age'  => 25,
    'city' => '東京'
];

// これをJSONという形式に変換して表示する
echo json_encode($data);

実行結果は以下のようになります。


{"name":"\u7530\u4e2d\u592a\u90ce","age":25,"city":"\u6771\u4eac"}

5. MVCモデルとAPIの関係性

5. MVCモデルとAPIの関係性
5. MVCモデルとAPIの関係性

CodeIgniterは「MVC」という設計図に従って作られています。MVCは「Model(モデル)」「View(ビュー)」「Controller(コントローラー)」の頭文字を取ったものです。API開発においてもこの考え方は非常に重要です。

通常のWebサイト制作では、ViewがHTML(画面の見た目)を担当しますが、API開発ではViewが必要ありません。 なぜなら、APIの目的は「画面を見せること」ではなく「データを渡すこと」だからです。そのため、Controllerで受け取ったデータを、先ほど説明したJSON形式に変えて直接出力する、という流れになります。

この「見た目を作らなくて良い」という点が、API開発がシンプルで楽しいと言われる理由の一つでもあります。データそのものに集中してプログラミングを楽しむことができます。

6. ルーティングの設定を知っておこう

6. ルーティングの設定を知っておこう
6. ルーティングの設定を知っておこう

APIを公開すると、外部から特定のURLに対してアクセスが来ます。そのアクセスを「どのプログラムで処理するか」を交通整理するのが「ルーティング」という機能です。CodeIgniterでは、Routes.phpというファイルでこの設定を行います。

例えば、「ユーザーの一覧が欲しい」というリクエストが来たときに、「UserControllerのindexというメソッド(処理)を使いなさい」と指示を出すイメージです。これを設定しないと、APIはどこにアクセスすれば良いのか迷子になってしまいます。


// Routes.php での設定イメージ
// "api/users" というURLにGET(取得)でアクセスされたら、Usersクラスのindexを動かす
$routes->get('api/users', 'Users::index');

// "api/users" にPOST(登録)でアクセスされたら、Usersクラスのcreateを動かす
$routes->post('api/users', 'Users::create');

7. API開発におけるコントローラーの役割

7. API開発におけるコントローラーの役割
7. API開発におけるコントローラーの役割

APIの中心人物はコントローラーです。コントローラーは、リクエストを受け取り、必要なデータを集め、最終的に結果を返す指揮者のような存在です。CodeIgniterには、API作成をより便利にするための「ResourceController」という特別なクラスが用意されています。

これを使うと、GETやPOSTなどの命令を自動的に判別して、適切な処理に振り分けてくれるようになります。初心者の方は、まずこの便利な機能があることを覚えておきましょう。


// コントローラーでの簡単な処理例
public function index() {
    $message = [
        'status' => 'success',
        'message' => 'APIからの応答です!'
    ];
    
    // JSONとしてデータを返却する(CodeIgniter4の便利な書き方)
    return $this->respond($message);
}

8. データベースとの連携(Modelの活用)

8. データベースとの連携(Modelの活用)
8. データベースとの連携(Modelの活用)

APIでやり取りする情報の多くは、データベースに保存されています。ユーザー情報、ブログの投稿、商品の在庫など、大切なデータは全てデータベースの中にあります。このデータベースから値を取り出したり、新しい値を保存したりするのが「Model(モデル)」の役割です。

CodeIgniterでは、SQLというデータベース専用の難しい言葉をあまり使わなくても、直感的にデータを操作できる「Query Builder(クエリビルダー)」という機能があります。これを使えば、「名前が田中の人を10件持ってきて」といった命令を簡単にプログラムで書くことができます。

9. HTTPステータスコードという重要な合図

9. HTTPステータスコードという重要な合図
9. HTTPステータスコードという重要な合図

APIがデータを返すとき、データ本体だけでなく「通信が成功したかどうか」を数字で伝えます。これを「HTTPステータスコード」と呼びます。皆さんも「404 Not Found(ページが見つかりません)」という数字を見たことがあるのではないでしょうか?これもステータスコードの一種です。

API開発でよく使うコードは以下の通りです。

  • 200 OK: 成功!無事にデータが送れました。
  • 201 Created: 成功!新しいデータが登録されました。
  • 400 Bad Request: 失敗。リクエストの仕方が間違っています。
  • 404 Not Found: 失敗。指定されたデータが存在しません。
  • 500 Internal Server Error: 失敗。サーバー側のプログラムでエラーが起きました。

この数字を適切に返すことで、APIを使っている相手(アプリ開発者など)は、「あ、今は成功したんだな」「あ、自分の送ったデータにミスがあったんだな」と判断できるようになります。

10. 開発を便利にするツール「Postman」

10. 開発を便利にするツール「Postman」
10. 開発を便利にするツール「Postman」

API開発を始めるとき、一つだけインストールしておくと便利なツールがあります。それが「Postman(ポストマン)」です。通常、APIはプログラムから呼び出すものなので、ブラウザだけで動作確認をするのが難しい場合があります(特にPOSTやDELETEなどの操作)。

Postmanを使えば、ボタン一つでAPIにデータを送ったり、返ってきたJSONを確認したりできます。プログラムを一行書くごとに、Postmanで「正しく動いているかな?」とチェックしながら進めるのが、プロの開発現場でも一般的なスタイルです。まずは「APIをテストする道具があるんだな」と頭の片隅に置いておいてください。


// APIの動作テスト用コード例
public function test_api() {
    $result = [
        'test' => '動作確認中',
        'date' => date('Y-m-d H:i:s')
    ];
    
    // 画面にJSONとして出力
    header('Content-Type: application/json');
    echo json_encode($result);
    exit;
}

実行結果は以下のようになります。


{"test":"\u52d5\u4f5c\u78ba\u8a8d\u4e2d","date":"2026-01-08 13:15:18"}
カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
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
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.8
Java&Spring記事人気No8
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説