CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
生徒
「最近よく聞く『API』っていうものを作ってみたいんですけど、CodeIgniter(コードイグナイター)で初心者でも作れますか?」
先生
「もちろんです!CodeIgniterはPHPというプログラミング言語のフレームワーク(道具箱のようなもの)で、RESTful APIを作るのがとても得意なんですよ。」
生徒
「RESTful APIって、普通のホームページを作るのとは何が違うんですか?全体の仕組みが知りたいです!」
先生
「いいところに気づきましたね。今回は、APIの基本的な考え方からCodeIgniterでの全体構成まで、未経験の方にも分かりやすく解説していきましょう!」
1. APIとRESTful APIとは?基本をマスター
プログラミングを始めたばかりの方にとって、API(エーピーアイ)という言葉は難しく感じるかもしれません。APIは「Application Programming Interface」の略で、簡単に言うと「プログラム同士が情報をやり取りするための窓口」のことです。
例えば、私たちがレストランに行ったとき、厨房の料理人に直接注文はしませんよね?「ウェイターさん」を通して注文を伝え、料理を運んできてもらいます。この「ウェイターさん」の役割がAPIです。スマホアプリがサーバーにあるデータを読み取ったり、新しい情報を保存したりする際に、この窓口(API)が活躍します。
そして、RESTful(レストフル)とは、その窓口の「作り方のルール」のことです。インターネットで使われる標準的なルールに従うことで、誰にとっても使いやすく、整理された窓口を作ることができます。CodeIgniterを使えば、このルールに基づいたシステムを効率よく組み立てることができるのです。
2. CodeIgniter(コードイグナイター)の役割
CodeIgniterは、PHPという言語で動く「フレームワーク」です。フレームワークとは、一から十まで全部自分で作らなくても、あらかじめ便利な部品が揃っている「組み立てキット」のようなものです。
APIを開発する際、データの整理や保存、通信の処理など、やるべきことはたくさんあります。CodeIgniterは動作が非常に軽く、設定も簡単なので、初心者の方が「とりあえず何か動くものを作ってみたい」という時にぴったりの道具です。特に、最新のバージョンではRESTful APIを作るための専用機能が充実しており、短いコードで強力な機能を実装できます。
3. API開発の要「MVCモデル」を知ろう
CodeIgniterの全体構成を理解する上で最も大切なのがMVC(エムブイシー)という考え方です。これは、プログラムの役割を3つのチームに分ける仕組みのことです。
- Model(モデル): データの管理担当。データベース(情報を貯めておく倉庫)から値を取り出したり、保存したりします。
- View(ビュー): 見た目担当。APIの場合は、HTMLではなく「JSON(ジェイソン)」というデータ形式を返します。
- Controller(コントローラー): 全体の司令塔。ユーザーからのリクエストを受け取り、モデルに指示を出し、最後に結果をビューに伝えます。
この3つの役割分担がしっかりしているおかげで、後からプログラムを修正しやすくなります。まずは「コントローラーが司令塔なんだな」ということだけ覚えておけば大丈夫です。
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と機能を結びつける
「どのURLにアクセスしたら、どのプログラムが動くか」を決めるのがルーティングという設定です。例えば、「/users」にアクセスしたらユーザー情報を返す、といった道案内のような役割を果たします。
CodeIgniterでは、app/Config/Routes.phpというファイルにこの設定を書きます。API開発では「resource」という便利な設定方法があり、これ一行で「データの作成・読み取り・更新・削除」のURLをまとめて登録できます。
// ルーティングの設定ファイルに記述する例
$routes->resource('api/members');
// これだけで /api/members に対するアクセスが処理できるようになります
このように、複雑なURLの設定を簡略化できるのも、CodeIgniterが初心者におすすめされる大きな理由の一つです。
6. データのやり取り形式「JSON」とは?
APIが返すデータは、人間が見るための綺麗なデザインではなく、プログラムが読みやすいJSON(ジェイソン)という形式が一般的です。これは、中身がシンプルで軽いテキストデータです。
先ほどのコントローラーを実行した結果、ブラウザやアプリには以下のような形式でデータが届きます。
{
"message": "こんにちは!APIの世界へようこそ",
"status": "success"
}
このデータを受け取ったスマホアプリなどが、文字を大きくしたり色をつけたりして、最終的にユーザーに見せることになります。APIは「中身の具材」だけを提供する役割に専念するわけです。
7. データベースとの連携(Modelの役割)
本物のAPIでは、情報をプログラムの中に書くのではなく、データベースから取り出します。ここで登場するのがModel(モデル)です。CodeIgniterのモデルは、難しいSQLという命令文を詳しく知らなくても、直感的に操作できるように設計されています。
namespace App\Models;
use CodeIgniter\Model;
class MemberModel extends Model
{
// 操作するテーブル(名前リストのようなもの)の名前を指定
protected $table = 'members';
// 編集を許可する項目の名前
protected $allowedFields = ['name', 'email'];
}
このモデルを使うことで、コントローラーは「データベースの中にあるメンバー全員を連れてきて!」と一言お願いするだけで済むようになります。これを専門用語で抽象化(ちゅうしょうか)と呼び、複雑なことをシンプルに扱う技術の一つです。
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メソッドで動作を指定する
RESTful APIでは、URLだけでなくHTTPメソッドという「動詞」を使って、何をしたいかを伝えます。これがAPI開発の最大の特徴です。
| メソッド | 役割(意味) | 例えるなら |
|---|---|---|
| GET | 取得する | メニューを見る |
| POST | 新しく作る | 料理を注文する |
| PUT | 更新する | 注文を変更する |
| DELETE | 削除する | 注文をキャンセルする |
例えば、同じ「/api/members」という宛先でも、GETで送れば「名簿を見せて」という意味になり、POSTで送れば「新しい人を登録して」という意味になります。このルールのおかげで、URLがぐちゃぐちゃにならず、スッキリとした構成のシステムを作ることができるのです。
10. API開発を支えるツール紹介
APIは画面(見た目)がないため、ブラウザだけで動作確認をするのが少し大変です。そこで、プロのエンジニアは専用のツールを使います。代表的なのがPostman(ポストマン)というツールです。
これを使うと、「POSTでデータを送るテスト」や「データが正しく返ってくるかのチェック」がボタン一つでできるようになります。最初は難しく感じるかもしれませんが、リモコンを操作するような感覚で扱えるので、少しずつ慣れていきましょう。
CodeIgniterでのAPI開発は、基本的な構成さえ掴んでしまえば、驚くほどスピーディーに進めることができます。まずは自分の手で、文字を返すだけの簡単なAPIを作ってみることから始めてみてください。それが、世界中のアプリとつながる第一歩になります。