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

CodeIgniterのデフォルトルーティングを完全ガイド!初心者でもわかる基本動作

CodeIgniterのデフォルトルーティングの動作を理解しよう
CodeIgniterのデフォルトルーティングの動作を理解しよう

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

生徒

「CodeIgniterでURLとプログラムがどう繋がっているのか分かりません。」

先生

「それは、ルーティングという仕組みが自動的に処理してくれているんですよ。」

生徒

「ルーティングって何ですか?難しそうですね。」

先生

「大丈夫です。実はCodeIgniterのデフォルトルーティングは、とてもシンプルで分かりやすいルールで動いています。今日はその基本をしっかり理解していきましょう!」

1. ルーティングとは?初心者向けの基礎知識

1. ルーティングとは?初心者向けの基礎知識
1. ルーティングとは?初心者向けの基礎知識

ルーティングとは、Webサイトのアドレス(URL)と実際に実行されるプログラムを結びつける仕組みのことです。例えば、あなたがレストランに行って「ハンバーグ定食をください」と注文したとします。すると店員さんは厨房に伝えて、料理人がハンバーグ定食を作ってくれますよね。

Webサイトでも同じことが起こっています。ブラウザのアドレスバーに「example.com/products」と入力すると、CodeIgniterが「productsというURLが来たから、商品一覧を表示するプログラムを実行しよう」と判断してくれます。この判断をする仕組みがルーティングなのです。

CodeIgniterには最初から設定されているデフォルトルーティングがあり、特別な設定をしなくても自動的にURLとプログラムを繋げてくれます。

2. CodeIgniterのデフォルトルーティングの基本ルール

2. CodeIgniterのデフォルトルーティングの基本ルール
2. CodeIgniterのデフォルトルーティングの基本ルール

CodeIgniterのデフォルトルーティングは、非常にシンプルな規則に従って動作します。基本的なURLの構造は次のようになっています。

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

これだけ見ると難しそうですが、実際にはとても分かりやすいルールです。まずコントローラーとは、プログラムをまとめたファイルのことで、メソッドとは、そのファイルの中にある具体的な処理のことです。

例えば、お店に例えると、「商品管理部門」がコントローラーで、「商品を追加する」「商品を削除する」といった具体的な作業がメソッドになります。パラメータは、その作業に必要な情報(商品番号など)です。

3. 実際のURLとコントローラーの対応関係

3. 実際のURLとコントローラーの対応関係
3. 実際のURLとコントローラーの対応関係

具体的な例で見ていきましょう。次のようなURLにアクセスしたとします。

http://example.com/products/view/123

このURLをCodeIgniterが受け取ると、次のように解釈されます。

  • products → Productsコントローラーを呼び出す
  • view → viewメソッドを実行する
  • 123 → 引数として「123」を渡す

つまり、「app/Controllers/Products.php」というファイルの中にある「view」という関数が実行され、商品番号123の情報が表示される、という流れになります。

実際のコントローラーのコードは次のようになります。


<?php
namespace App\Controllers;

class Products extends BaseController
{
    public function view($id)
    {
        echo "商品番号: " . $id . " の詳細ページです";
    }
}

このコードを見ると、viewメソッドが$idという引数を受け取っています。URLの「123」が自動的にこの$idに入るのです。

4. コントローラー名だけを指定した場合の動作

4. コントローラー名だけを指定した場合の動作
4. コントローラー名だけを指定した場合の動作

もし、URLでメソッド名を省略したらどうなるでしょうか。例えば次のようなURLです。

http://example.com/products

この場合、CodeIgniterは自動的にindexメソッドを実行します。indexメソッドは、コントローラーのデフォルトメソッドとして扱われます。これは、お店で何も注文を言わなかったら「本日のおすすめ」が出てくるようなイメージです。


<?php
namespace App\Controllers;

class Products extends BaseController
{
    public function index()
    {
        echo "商品一覧ページへようこそ";
    }
    
    public function view($id)
    {
        echo "商品番号: " . $id;
    }
}

この例では、「/products」にアクセスするとindexメソッドが実行され、「/products/view/123」にアクセスするとviewメソッドが実行されます。

5. 何も指定しない場合のデフォルト動作

5. 何も指定しない場合のデフォルト動作
5. 何も指定しない場合のデフォルト動作

では、URLがトップページだけの場合はどうでしょうか。

http://example.com/

このように何も指定されていない場合、CodeIgniterはHomeコントローラーindexメソッドを実行します。これは「app/Config/Routes.php」ファイルで設定されているデフォルトコントローラーです。

Routesファイルを見ると、次のような記述があります。


<?php
$routes->setDefaultController('Home');
$routes->setDefaultMethod('index');

この設定により、何も指定されていない場合は自動的にHomeコントローラーのindexメソッドが実行されるようになっています。これは、お店に入ったらまず受付に案内されるのと同じような仕組みです。

6. 複数のパラメータを渡す方法

6. 複数のパラメータを渡す方法
6. 複数のパラメータを渡す方法

URLには複数のパラメータを指定することもできます。例えば、商品を検索する機能で、カテゴリーと価格帯を指定したい場合を考えてみましょう。

http://example.com/products/search/electronics/1000

この場合、「electronics」(電化製品)というカテゴリーで、価格が1000円以上の商品を検索する、という処理になります。コントローラーでは次のように受け取ります。


<?php
namespace App\Controllers;

class Products extends BaseController
{
    public function search($category, $minPrice)
    {
        echo "カテゴリー: " . $category . "<br>";
        echo "最低価格: " . $minPrice . "円以上";
    }
}

URLのスラッシュ(/)で区切られた値が、順番にメソッドの引数に渡されていきます。この順番は重要で、入れ替わるとプログラムが正しく動作しないので注意が必要です。

7. 大文字小文字の扱いと命名規則

7. 大文字小文字の扱いと命名規則
7. 大文字小文字の扱いと命名規則

CodeIgniterのデフォルトルーティングでは、URLの大文字小文字は区別されません。ただし、コントローラーのクラス名は最初の文字を大文字にする必要があります。これは、PHPのクラス命名規則に従っています。

例えば、「UserProfile」というコントローラーを作った場合、次のどのURLでもアクセスできます。

  • http://example.com/userprofile
  • http://example.com/UserProfile
  • http://example.com/USERPROFILE

しかし、ファイル名とクラス名は必ず「UserProfile.php」のように最初を大文字にしましょう。これは、プログラミングの世界で広く使われているパスカルケースという命名規則です。

8. デフォルトルーティングのメリットと注意点

8. デフォルトルーティングのメリットと注意点
8. デフォルトルーティングのメリットと注意点

CodeIgniterのデフォルトルーティングには、いくつかのメリットがあります。まず、特別な設定をしなくても、コントローラーとメソッドを作るだけですぐにURLでアクセスできるという手軽さがあります。初心者の方でも、複雑な設定ファイルを編集することなく、すぐにWebアプリケーション開発を始められます。

また、URLとプログラムの構造が一致するため、直感的で分かりやすいという特徴もあります。URLを見れば、どのコントローラーのどのメソッドが実行されるか予測できるので、チーム開発の際にも便利です。

ただし、注意点もあります。デフォルトルーティングでは、すべてのpublicメソッドがURLからアクセス可能になってしまいます。つまり、外部から実行されたくない処理も、URLを知られると実行されてしまう可能性があります。この問題を防ぐには、外部からアクセスさせたくないメソッドをprotectedまたはprivateにする必要があります。

9. デフォルトルーティングで作る簡単な例

9. デフォルトルーティングで作る簡単な例
9. デフォルトルーティングで作る簡単な例

最後に、デフォルトルーティングを使った簡単なサンプルを見てみましょう。ブログ記事を表示するコントローラーを作ります。


<?php
namespace App\Controllers;

class Blog extends BaseController
{
    public function index()
    {
        echo "<h1>ブログ記事一覧</h1>";
        echo "<p>すべての記事を表示します</p>";
    }
    
    public function article($id = 1)
    {
        echo "<h1>記事番号: " . $id . "</h1>";
        echo "<p>この記事の内容を表示します</p>";
    }
    
    public function category($name)
    {
        echo "<h1>" . $name . "カテゴリーの記事</h1>";
        echo "<p>このカテゴリーの記事一覧を表示します</p>";
    }
}

このコントローラーを作成すると、次のようなURLでアクセスできます。

  • /blog → 記事一覧を表示
  • /blog/article/5 → 記事番号5を表示
  • /blog/category/technology → technologyカテゴリーの記事を表示

このように、デフォルトルーティングを理解すれば、設定ファイルを編集することなく、コントローラーを作るだけで様々なページを作成できるようになります。

10. ルーティングが動かない時のチェックポイント

10. ルーティングが動かない時のチェックポイント
10. ルーティングが動かない時のチェックポイント

デフォルトルーティングを使っていて、うまく動作しない場合のチェックポイントをご紹介します。

1. ファイル名とクラス名が一致しているか
ファイル名が「Products.php」なら、クラス名も「class Products」である必要があります。名前が違うとエラーになります。

2. 名前空間(namespace)が正しいか
コントローラーの先頭に「namespace App\Controllers;」が書かれているか確認しましょう。これがないとCodeIgniterがコントローラーを見つけられません。

3. BaseControllerを継承しているか
クラス定義で「extends BaseController」となっているか確認します。これがないと、CodeIgniterの機能を正しく使えません。

4. メソッドがpublicになっているか
URLからアクセスするメソッドは「public function」で宣言する必要があります。protectedやprivateではアクセスできません。

5. .htaccessファイルが正しく配置されているか
URLから「index.php」を省略したい場合は、適切な.htaccessファイルが必要です。これはサーバーの設定に関わる部分なので、動かない場合は確認してみましょう。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド