CodeIgniter 4入門!コントローラでレスポンスを返す基本を徹底解説
生徒
「CodeIgniter(コードイグナイター)を使って、ブラウザに文字や画面を表示させるにはどうすればいいですか?」
先生
「それには『コントローラ』という司令塔の役割をする場所で、レスポンスを返す処理を書く必要があります。」
生徒
「レスポンス……? なんだか難しそうですが、初心者でも書けますか?」
先生
「大丈夫ですよ。まずは一番シンプルな方法から順番に、仕組みを紐解いていきましょう!」
1. コントローラとレスポンスの役割を知ろう
プログラミングの世界、特にWeb開発の世界では、ユーザーが何かを見たいとリクエスト(お願い)を送り、サーバーがそれに対して結果を戻す「レスポンス(お返事)」という流れで動いています。このお返事を作成する中心人物が「コントローラ」です。
CodeIgniter(コードイグナイター)は、PHPという言葉を使ってWebサイトを効率よく作るための道具箱(フレームワーク)です。この中にあるコントローラは、例えるなら「レストランの注文を受ける店員さん」のような存在です。お客さんの注文を聞いて、厨房に指示を出し、出来上がった料理をお客さんに届ける。この「料理を届ける」行為が、プログラミングにおけるレスポンスを返すことにあたります。
パソコンを初めて触る方にとって「サーバー」や「フレームワーク」という言葉は聞き慣れないかもしれませんが、今は「Webページを表示するための司令塔」がコントローラなんだ、と覚えておけば十分です。これから、その司令塔に「お返事をして!」と命令する方法を学んでいきましょう。
2. 一番簡単なレスポンス「文字列」を表示する
まずは、画面に「こんにちは!」と表示させるだけの、世界で一番シンプルなレスポンスを作ってみましょう。CodeIgniterのコントローラでは、特定の関数(命令のまとまり)の中で、文字を「返す(return)」だけで、それがそのままブラウザに表示されます。
ここで出てくるreturn(リターン)という言葉は、「この結果を外に出して終了します」という合図です。以下のコードを見てみましょう。
namespace App\Controllers;
class Home extends BaseController
{
public function index()
{
// 文字列をそのままお返事として返す
return "プログラミングの世界へようこそ!";
}
}
このプログラムを実行すると、ブラウザには以下のように表示されます。
プログラミングの世界へようこそ!
難しい設定は一切不要です。コントローラが「文字列」というデータを手に持って、ユーザーの元へ駆け寄っていくイメージですね。これが全ての基本となります。
3. 見た目を整える「ビュー」を使ったレスポンス
先ほどは文字だけでしたが、実際のWebサイトは文字の大きさが違ったり、色が付いたりしていますよね。その「見た目」を担当するのがView(ビュー)です。コントローラからビューを呼び出すことで、本格的なHTML(Webページの設計図)をレスポンスとして返すことができます。
ここで使うのが view() という便利な機能です。これは「指定したファイルの中身を表示してね」という命令です。パソコンのファイル操作に慣れていない方でも、特定の名前のファイルを読み込むだけと考えれば簡単です。
namespace App\Controllers;
class Blog extends BaseController
{
public function show()
{
// 'blog_view'という名前のデザインファイルを読み込んで返す
return view('blog_view');
}
}
この時、blog_viewの中身がHTMLで書かれていると、ブラウザには綺麗に整えられた画面が表示されます。
<h1>ブログ記事のタイトル</h1>
<p>ここに記事の内容が表示されます。デザインが適用されています!</p>
このように、コントローラがデザイン担当の「ビュー」を呼び出して、それをレスポンスとして返すのが、一般的なWebサイトの仕組みです。
4. データをビューに渡して表示を動的に変える
次に、コントローラからビューへ「データ」を渡す方法を覚えましょう。例えば、ログインした人の名前に合わせて「こんにちは、〇〇さん!」と表示を変えたい場合です。これを動的なレスポンスと呼びます。
データを渡すには、連想配列(れんそうはいれつ)という仕組みを使います。これは、名札(キー)と中身(値)をセットにしたデータセットのことです。箱に名前を書いて、その中にプレゼントを入れるようなものだと想像してください。
namespace App\Controllers;
class User extends BaseController
{
public function profile()
{
// 渡したいデータを用意する
$data = [
'username' => 'たろう',
'level' => 5
];
// viewの第2引数にデータを渡す
return view('profile_page', $data);
}
}
これで、ビュー側では $username という変数を使って「たろう」という文字を表示できるようになります。受け取る側(ビュー)の設定は以下のようになります。
ようこそ、<?php echo $username; ?>さん!
現在のレベルは <?php echo $level; ?> です。
実行結果は以下のようになります。
ようこそ、たろうさん!
現在のレベルは 5 です。
コントローラがデータを準備し、ビューがそれを表示する。この連携プレーこそが、モダンなWeb開発の醍醐味です。
5. JSON(ジェイソン)形式でレスポンスを返す
最近のWebアプリでは、HTML画面全体ではなく、「データだけ」を返したい場面がよくあります。例えば、スマホアプリと通信したり、画面を切り替えずに情報を更新したりする場合です。その際によく使われるのがJSON(ジェイソン)という形式です。
CodeIgniterでは response->setJSON() という命令を使うだけで、自動的にデータをJSONという特別な形式に変換してお返事してくれます。初心者の方は「機械が読み取りやすい特別なメッセージの書き方」だと思ってください。
namespace App\Controllers;
class Api extends BaseController
{
public function status()
{
$result = [
'status' => 'success',
'message' => '通信に成功しました!'
];
// JSON形式でレスポンスを返す
return $this->response->setJSON($result);
}
}
これを実行すると、ブラウザやアプリには以下のような形式のデータが届きます。
{"status":"success","message":"通信に成功しました!"}
一見するとただの文字の羅列に見えますが、コンピューターにとっては非常に扱いやすい、効率的なお返事の形なのです。
6. リダイレクトで別のページへ案内する
「お返事」の種類には、画面を見せるだけでなく「別のページへ行ってください」と指示を出すものもあります。これをリダイレクトと言います。例えば、お問い合わせフォームで送信ボタンを押した後に「完了ページ」へ自動で移動させるような処理です。
コントローラで redirect()->to() という命令を使うと、ユーザーのブラウザに「次はあっちのURLを開いてね」というレスポンスを返します。道案内をする看板を立てるようなイメージですね。
namespace App\Controllers;
class Contact extends BaseController
{
public function send()
{
// 本来はここでメール送信などの処理をする
// 処理が終わったら、サンクスページへ移動させる
return redirect()->to('/contact/thanks');
}
}
このコードが実行されると、ユーザーの画面は一瞬で /contact/thanks というURLのページに切り替わります。ユーザーにストレスを与えず、自然に次のアクションへ導くために欠かせないテクニックです。これも立派な「レスポンス」の一種なのです。
7. ステータスコードで状態を伝える
レスポンスを返すとき、実は裏側で「数字のコード」も一緒に送られています。これをHTTPステータスコードと呼びます。一番有名なのは、ページが見つからないときの「404 Not Found」でしょう。正常に処理ができたときは「200 OK」というコードが送られます。
通常、CodeIgniterは自動で適切なコードを付けてくれますが、意図的に「エラーだよ!」と伝えたい場合もあります。例えば、探しているデータが存在しなかった場合に「404」を返す処理は以下のようになります。
namespace App\Controllers;
class Product extends BaseController
{
public function detail($id)
{
// もし商品が見つからなかったら
if ($id > 100) {
// 404エラー(見つからない)というお返事を作る
return $this->response->setStatusCode(404, '商品は存在しません');
}
return "商品番号 " . $id . " の詳細ページです。";
}
}
このように、数字を使って「今の状況」を正確に伝えることで、ブラウザや検索エンジン(Googleなど)がサイトの状態を正しく理解できるようになります。プログラミング未経験の方には少し難しく感じるかもしれませんが、「Webの世界には数字の共通言語があるんだな」と知っておくだけで、トラブル解決のスピードがぐっと上がりますよ。
8. レスポンスを自在に操るための第一歩
ここまで、文字列、ビュー、JSON、リダイレクト、そしてステータスコードという、CodeIgniterのコントローラで扱える主要なレスポンス方法を見てきました。これらを組み合わせることで、どんな複雑なWebアプリケーションも作れるようになります。
最初は「returnって書けば画面に出るんだ」という感覚で構いません。パソコン操作がおぼつかない状態からスタートしても、一つひとつの命令の意味を理解していけば、必ず自由自在にプログラムを動かせるようになります。料理のレシピを覚えるように、まずは基本の型を何度も書いて、指に馴染ませていきましょう。
CodeIgniterは、そうした初心者の「やりたいこと」を最短距離で叶えてくれる、非常に優しいツールです。今回学んだレスポンスの基本を土台にして、次はもっとたくさんのデータを扱ったり、データベースと連携したりする世界に足を踏み入れてみてください。あなたのアイデアが形になる日は、すぐそこまで来ています。