CodeIgniterでJSONレスポンスを返す方法!API開発の基本を初心者向けに解説
生徒
「CodeIgniterを使って、画面を表示するのではなく、データだけをやり取りする『JSON』というものを返したいのですが、どうすればいいですか?」
先生
「それは『API』の開発でよく使われる技術ですね。CodeIgniterには、データをJSON形式に整えて相手に送るための便利な機能が備わっていますよ。」
生徒
「初心者でも簡単に作れますか?」
先生
「もちろんです!まずはJSONが何なのか、というところから順番に学んでいきましょう。」
1. JSON(ジェイソン)とは何のこと?
プログラミングの世界でよく耳にするJSON(ジェイソン)とは、JavaScript Object Notationの略称です。名前に「JavaScript」と付いていますが、今ではPHPやPythonなど、あらゆるプログラミング言語で使われている「データの書き方のルール」のようなものです。
パソコンを触ったことがない方に向けて例えるなら、JSONは「共通の伝言メモ」です。例えば、日本人がフランス人に手紙を書くとき、お互いが理解できる英語で書けば内容が伝わりますよね。プログラミングも同じで、サーバー(データを送る側)とアプリ(データを受け取る側)が、お互いに理解しやすい形式としてJSONが使われています。
JSONの特徴は、人間が見ても内容が理解しやすく、コンピューターにとっても処理が非常に速いという点にあります。最近のスマートフォンのアプリなどは、このJSONという形式でデータのやり取りを行っています。
2. API(エーピーアイ)って何?
次に、API(Application Programming Interface)について解説します。APIとは、簡単に言うと「ソフトウェア同士が繋がるための窓口」のことです。
例えば、あなたがレストランに行ったとき、厨房に直接入って料理を作ることはしませんよね?「メニューを見て注文し、店員さんが料理を運んでくる」という仕組みがあります。この場合の「店員さん」がAPIの役割を果たしています。あなたが注文(リクエスト)をすると、店員さんが厨房から料理(レスポンス)を運んできてくれます。
ウェブサイトの開発においては、ブラウザ(Google Chromeなど)から「データをください!」とリクエストを送り、サーバーが「はい、これがデータです!」とJSON形式で返答する。この仕組み全体を「Web API」と呼びます。CodeIgniterはこのAPIを作るのが非常に得意なフレームワークです。
3. CodeIgniterでJSONを返すための準備
CodeIgniterでJSONを返すには、コントローラというファイルを使います。コントローラは、プログラミングにおける「司令塔」の役割を持っています。ユーザーからのリクエストを受け取り、どのような処理をして、どのような結果を返すかを決定します。
通常のウェブサイトでは、HTML(ホームページの見た目を作るコード)を返しますが、APIの場合は「データそのもの」を返します。そのため、ブラウザに対して「これから送るのはウェブページではなく、JSONというデータですよ」と教えてあげる必要があります。これを「ヘッダー情報を送る」と言います。
それでは、実際にどのようにコードを書くのか、最もシンプルな例を見てみましょう。まずは挨拶を返すだけの簡単なプログラムです。
namespace App\Controllers;
class ApiController extends BaseController
{
public function index()
{
// 返したいデータを用意します(配列と言います)
$data = [
'message' => 'こんにちは!CodeIgniterの世界へようこそ!',
'status' => 'success'
];
// JSON形式に変換して、ブラウザに返します
return $this->response->setJSON($data);
}
}
このコードにある setJSON という魔法の言葉を使うだけで、CodeIgniterは自動的にデータをJSON形式に変換して送り出してくれます。
4. 配列(リスト)を使って複数のデータを送る
プログラミングには配列(はいれつ)という考え方があります。これは、一つの箱の中にたくさんのデータを入れることができる仕組みです。APIでは、複数のユーザー情報や商品のリストを送ることが多いため、この配列を使いこなすことが重要です。
例えば、果物のリストをJSONで返したい場合は、以下のようにコードを書きます。初心者の方は、まず $data = [...] という書き方で、複数の情報をまとめられることを覚えておきましょう。
public function getFruits()
{
// 果物のリストを作ります
$fruits = [
['id' => 1, 'name' => 'りんご', 'price' => 150],
['id' => 2, 'name' => 'バナナ', 'price' => 100],
['id' => 3, 'name' => 'みかん', 'price' => 80]
];
// これをJSONにして返します
return $this->response->setJSON($fruits);
}
このプログラムを実行すると、ブラウザには次のような結果が表示されます。これがJSONの見た目です。
[
{"id": 1, "name": "りんご", "price": 150},
{"id": 2, "name": "バナナ", "price": 100},
{"id": 3, "name": "みかん", "price": 80}
]
5. 条件分岐を使ってエラーを返す方法
実際の開発では、いつも成功するとは限りません。「データが見つからなかった」というときには、エラーメッセージを返す必要があります。ここで登場するのが if文 です。if文は「もし〜なら、こうする」という条件を分けるための道具です。
次の例では、もし番号が正しくなければエラーを返し、正しければデータを返すという処理を行っています。setStatusCode(404) というのは、「見つかりませんでした」という世界共通の合図をコンピューターに送るためのものです。
public function checkUser($id = null)
{
// もしIDが送られてこなかったら(エラーのケース)
if ($id == null) {
$errorResponse = [
'error' => 'ユーザーIDが指定されていません',
'code' => 400
];
return $this->response->setStatusCode(400)->setJSON($errorResponse);
}
// 正しくIDがある場合
$user = [
'id' => $id,
'name' => 'テスト太郎'
];
return $this->response->setJSON($user);
}
6. 複雑なデータを整理して送る(連想配列)
JSONの大きな利点は、データの中にさらにデータを入れられる「入れ子構造」にできることです。これをPHPでは連想配列と呼びます。単なる数字の並びではなく、名前(キー)を付けて管理する方法です。
例えば、ユーザーの詳細情報の中に、そのユーザーの趣味や住所を細かく含めることができます。これにより、一度のリクエストでたくさんの関連情報をまとめて送ることができます。
public function getUserDetail()
{
$detail = [
'user_id' => 101,
'profile' => [
'nickname' => 'CI職人',
'hobby' => ['プログラミング', '読書', '散歩'],
'address' => [
'pref' => '東京都',
'city' => '渋谷区'
]
],
'last_login' => '2026-01-08'
];
return $this->response->setJSON($detail);
}
このように、複雑な情報を整理して送ることで、受け取った側(スマホアプリなど)で自由に情報を表示できるようになります。住所だけを大きく表示したり、趣味のリストだけを並べたりといった加工が可能になります。
7. API開発で大切なセキュリティの話
最後に、初心者の方が知っておくべき大切なことに「セキュリティ」があります。JSONでデータを返すということは、誰でもそのデータを見ることができる可能性があるということです。
例えば、パスワードや個人のメールアドレス、住所などの機密情報をそのままJSONに含めて返してはいけません。必ず「本当に相手に見せていい情報だけ」を選んで、配列に入れるようにしましょう。CodeIgniterでは、データベースから取得した情報の一部を隠したり、安全に加工したりする機能もたくさん用意されています。まずは、今回学んだ setJSON を使って、安全な公開情報を返す練習から始めてみてください。