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

CodeIgniterのURLルーティングとコントローラ呼び出しを完全解説!初心者向けガイド

CodeIgniterでURLからコントローラメソッドを呼び出す仕組み
CodeIgniterでURLからコントローラメソッドを呼び出す仕組み

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

生徒

「CodeIgniterで、URLを入力するとどうやってプログラムが動くんですか?」

先生

「URLから自動的にコントローラというファイルのメソッドが呼び出される仕組みがあるんです。これをルーティングと言います。」

生徒

「ルーティング?コントローラ?難しそうですね...」

先生

「大丈夫です!身近な例えで説明しますね。レストランで注文すると料理が出てくるように、URLを指定するとプログラムが実行される仕組みです。それでは詳しく見ていきましょう!」

1. CodeIgniterとは?PHPフレームワークの基礎知識

1. CodeIgniterとは?PHPフレームワークの基礎知識
1. CodeIgniterとは?PHPフレームワークの基礎知識

CodeIgniter(コードイグナイター)は、PHPフレームワークの一つです。フレームワークとは、プログラムを作るときの土台となる枠組みのことで、よく使う機能があらかじめ用意されています。例えるなら、家を建てるときの設計図のようなものです。一から全部作る必要がなく、決まった方法で効率的にウェブサイトやアプリケーションを開発できます。

CodeIgniterは、特に初心者に優しい設計で、シンプルで分かりやすいのが特徴です。ファイルの配置や書き方に一定のルールがあり、それに従うことで誰でも同じような構造のプログラムを作ることができます。

2. コントローラとは?プログラムの司令塔

2. コントローラとは?プログラムの司令塔
2. コントローラとは?プログラムの司令塔

コントローラ(Controller)は、CodeIgniterの中心となる重要なファイルです。レストランで例えると、お客さんからの注文を受けて、キッチンに指示を出すウェイターのような役割を果たします。

コントローラはapp/Controllers/というフォルダの中に保存されるPHPファイルで、ユーザーからのリクエスト(要求)を受け取り、必要な処理を実行して、結果を画面に表示する指示を出します。例えば「商品一覧を表示する」「ユーザー情報を登録する」といった処理を担当します。

コントローラの中にはメソッドという機能が複数入っています。メソッドとは、特定の仕事をするプログラムのまとまりのことです。一つのコントローラファイルの中に、複数のメソッドを作ることができます。

3. URLからコントローラが呼び出される基本の流れ

3. URLからコントローラが呼び出される基本の流れ
3. URLからコントローラが呼び出される基本の流れ

CodeIgniterでは、ブラウザのアドレスバーに入力するURLと、実行されるコントローラのメソッドが対応しています。この対応関係を自動で処理してくれる仕組みをルーティングと呼びます。

基本的なURLの構造は次のようになっています:


http://example.com/コントローラ名/メソッド名/パラメータ

例えば、http://example.com/products/listというURLにアクセスすると、Productsコントローラのlistメソッドが実行されます。まるで住所を指定すると、その場所に自動で案内してくれるカーナビのような仕組みです。

4. 実際のコントローラファイルの作り方

4. 実際のコントローラファイルの作り方
4. 実際のコントローラファイルの作り方

それでは実際にコントローラファイルを作成してみましょう。CodeIgniterでコントローラを作るには、app/Controllers/フォルダの中にPHPファイルを作成します。ファイル名の最初の文字は大文字にするルールがあります。

例として、商品情報を扱うProducts.phpというコントローラを作成してみます:


<?php
namespace App\Controllers;

class Products extends BaseController
{
    public function index()
    {
        echo "商品一覧ページです";
    }
    
    public function detail()
    {
        echo "商品詳細ページです";
    }
}

このコードを順番に説明します。namespaceは名前空間といって、ファイルの場所を示すものです。class ProductsでProductsという名前のクラス(設計図)を作成しています。extends BaseControllerは、CodeIgniterの基本機能を継承する(受け継ぐ)という意味です。

public function index()public function detail()が、それぞれメソッドです。publicは外部から呼び出せるという意味で、functionは関数(機能)を作るときのキーワードです。

5. URLとメソッドの対応関係を理解する

5. URLとメソッドの対応関係を理解する
5. URLとメソッドの対応関係を理解する

先ほど作成したProductsコントローラは、次のようなURLでアクセスできます:


http://example.com/products
→ Products コントローラの index メソッドが実行される

http://example.com/products/index
→ Products コントローラの index メソッドが実行される

http://example.com/products/detail
→ Products コントローラの detail メソッドが実行される

メソッド名を省略すると、自動的にindexメソッドが呼び出されます。indexは、そのコントローラのデフォルト(初期設定)のメソッドという意味です。本屋さんで例えると、「小説コーナーに行って」と言われたら入口に案内されるようなイメージです。

コントローラ名とメソッド名は、URLでは小文字で書くことができます。CodeIgniterが自動的に大文字小文字を判断して、正しいコントローラを見つけてくれます。

6. パラメータを受け取るメソッドの作り方

6. パラメータを受け取るメソッドの作り方
6. パラメータを受け取るメソッドの作り方

URLから値を受け取って処理することもできます。例えば、商品番号を指定して詳細を表示したい場合、メソッドにパラメータ(引数)を設定します。パラメータとは、メソッドに渡す情報のことです。


<?php
namespace App\Controllers;

class Products extends BaseController
{
    public function show($id)
    {
        echo "商品番号: " . $id . " の詳細情報";
    }
}

この場合、http://example.com/products/show/123というURLにアクセスすると、次のように表示されます:


商品番号: 123 の詳細情報

URLの最後の123が、メソッドの$idパラメータに自動的に渡されます。複数のパラメータを受け取ることもできます。例えばpublic function search($category, $keyword)のように書けば、カテゴリとキーワードの両方を受け取れます。

7. デフォルトコントローラの設定方法

7. デフォルトコントローラの設定方法
7. デフォルトコントローラの設定方法

サイトのトップページ(http://example.com/)にアクセスしたとき、どのコントローラを表示するかを設定できます。これをデフォルトコントローラといいます。

設定はapp/Config/Routes.phpファイルで行います。このファイルを開くと、次のような記述があります:


<?php
$routes->get('/', 'Home::index');

この設定により、トップページにアクセスするとHomeコントローラのindexメソッドが実行されます。別のコントローラをトップページにしたい場合は、'Home::index'の部分を変更します。例えば商品一覧をトップページにしたいなら'Products::index'と書き換えます。

8. ルーティングのカスタマイズ方法

8. ルーティングのカスタマイズ方法
8. ルーティングのカスタマイズ方法

URLとコントローラの対応関係は、自由にカスタマイズすることができます。app/Config/Routes.phpファイルで独自のルートを設定できます。

例えば、http://example.com/item/123というURLで商品詳細を表示したい場合:


<?php
$routes->get('item/(:num)', 'Products::show/$1');

(:num)は数字を表すプレースホルダー(場所取り)で、URLの数字部分を$1として受け取ります。このように設定すると、実際にはProductsコントローラのshowメソッドが呼び出されますが、URLはitemという分かりやすい名前にできます。

他にも(:any)で任意の文字列、(:alpha)でアルファベットのみを受け取るなど、様々なパターンが使えます。これにより、ユーザーに分かりやすいURLを設計できます。

9. コントローラが見つからないときの動作

9. コントローラが見つからないときの動作
9. コントローラが見つからないときの動作

存在しないコントローラやメソッドにアクセスすると、CodeIgniterは404エラーページを表示します。404とは「ページが見つかりません」という意味のエラーコードです。

例えば、http://example.com/notexistのように、存在しないコントローラ名を指定すると、エラーページが表示されます。開発中は詳しいエラー情報が表示されますが、本番環境では一般的なエラーページが表示されるように設定できます。

このエラーページもapp/Views/errors/フォルダで自由にカスタマイズできます。デザインを変更して、ユーザーに優しいエラーページを作成することができます。

10. コントローラからビューを表示する基本

10. コントローラからビューを表示する基本
10. コントローラからビューを表示する基本

実際のウェブサイトでは、HTMLで作られた画面を表示します。CodeIgniterでは、画面の表示部分をビュー(View)というファイルで管理します。コントローラからビューを呼び出して画面を表示する流れを見てみましょう。

まずapp/Views/フォルダにproduct_list.phpというビューファイルを作成します:


<!DOCTYPE html>
<html>
<head>
    <title>商品一覧</title>
</head>
<body>
    <h1>商品一覧ページ</h1>
    <p>ここに商品リストが表示されます</p>
</body>
</html>

そして、コントローラからこのビューを呼び出します:


<?php
namespace App\Controllers;

class Products extends BaseController
{
    public function list()
    {
        return view('product_list');
    }
}

view('product_list')という関数で、ビューファイルを読み込んで表示します。ファイル名の.phpは省略できます。この仕組みにより、プログラムのロジック(処理)と画面デザインを分離して管理できるようになります。レストランで例えると、料理を作る人(コントローラ)と、お皿に盛り付ける人(ビュー)が分担しているようなイメージです。

カテゴリの一覧へ
新着記事
New1
Symfony
SymfonyのForm Eventを完全ガイド!初心者でもわかるフォーム処理カスタマイズ
New2
Laravel
Laravelでパスワードリセット機能を実装する方法を完全解説!初心者でも安心の認証機能入門
New3
CodeIgniter
CodeIgniterのURLルーティングとコントローラ呼び出しを完全解説!初心者向けガイド
New4
Symfony
SymfonyのAjaxフォーム送信を完全ガイド!初心者でもわかる非同期通信の基本
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
No.3
Java&Spring記事人気No3
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.5
Java&Spring記事人気No5
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelのFortifyとSanctumの違いと使い分け!初心者向けに認証の仕組みをやさしく解説
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで