7.

CodeIgniter 完全ガイド|CI3 / CI4 の違い・新規採用 vs 保守判断

編集
この記事の要点
  • CodeIgniter は 2006 年に EllisLab がリリースした軽量 PHP MVC フレームワーク
  • 2019 年に BCIT (British Columbia Institute of Technology) に移管 → CodeIgniter 4 系へ刷新
  • 現行は CodeIgniter 4 (4.x)。PSR-4 オートロード / 名前空間 / CLI / Migrations / Shield 認証
  • Laravel より軽量・薄い。学習コスト低、レンタルサーバでも動く。だがエコシステムは Laravel に大差
  • CI3 は EOL(脆弱性修正のみ)→ CI4 への移行か、別フレームワーク(Laravel/Symfony)への乗換を検討

CodeIgniter とは

CodeIgniter は 2006 年に米 EllisLab 社がリリースした PHP の MVC フレームワーク。「規約より設定の薄さ」「レンタルサーバでも動く」「学習コストが低い」を売りに、日本でも 2010 年代前半まで広く使われました。

その後 EllisLab が開発から離れ、2019 年にカナダの BCIT (British Columbia Institute of Technology) に正式移管。これに伴いCodeIgniter 4 がフルリライトでリリースされ、現代の PHP(名前空間 / PSR-4 / Composer)に追従しました。

バージョン履歴

バージョンリリースPHP 要件状態
CI 1.x2006PHP 4EOL
CI 2.x2011PHP 5.1+EOL
CI 3.x2015PHP 5.6+セキュリティパッチのみ
CI 4.x2020PHP 7.4 / 8.x現行・推奨

「CodeIgniter 5」のロードマップは 2026 年時点では具体化していません。当面はCI 4 系の継続改善路線です。

CodeIgniter 4 のインストール

# Composer でプロジェクト作成
composer create-project codeigniter4/appstarter my-app
cd my-app

# 起動
php spark serve
# → http://localhost:8080

# または手動 DL(Composer 不要)
# https://codeigniter.com/download → ZIP 展開

# 構成
# app/        : Controllers / Models / Views / Config
# public/     : フロントコントローラ index.php
# system/     : フレームワーク本体(書き換え禁止)
# writable/   : cache / logs / session / uploads
# .env        : 環境変数

Routing

// app/Config/Routes.php
$routes->get('/',         'Home::index');
$routes->get('/users',    'UserController::list');
$routes->get('/users/(:num)', 'UserController::show/$1');
$routes->post('/users',   'UserController::create');

// グループ + フィルタ
$routes->group('api/v1', ['filter' => 'auth'], function ($routes) {
    $routes->resource('posts');   // RESTful 7 ルート自動生成
});

// 確認
// php spark routes

Controller

findAll();
        return view('users/list', ['users' => $users]);
    }

    public function show($id)
    {
        $userModel = new \App\Models\UserModel();
        $user = $userModel->find($id);
        if (!$user) {
            throw new \CodeIgniter\Exceptions\PageNotFoundException();
        }
        return $this->response->setJSON($user);
    }
}

Model(クエリビルダ)

 'required|max_length[100]',
        'email' => 'required|valid_email|is_unique[users.email]',
    ];
}

// 使う
$users = (new UserModel())->where('role', 'admin')->orderBy('id', 'DESC')->findAll(10);
(new UserModel())->insert(['name' => 'taro', 'email' => 't@example.com']);

Migrations

# マイグレーション作成
php spark make:migration CreateUsersTable

# 実行
php spark migrate

# ロールバック
php spark migrate:rollback

# 状態確認
php spark migrate:status
forge->addField([
            'id'         => ['type' => 'INT', 'auto_increment' => true],
            'name'       => ['type' => 'VARCHAR', 'constraint' => 100],
            'email'      => ['type' => 'VARCHAR', 'constraint' => 255],
            'created_at' => ['type' => 'DATETIME', 'null' => true],
            'updated_at' => ['type' => 'DATETIME', 'null' => true],
        ]);
        $this->forge->addPrimaryKey('id');
        $this->forge->addUniqueKey('email');
        $this->forge->createTable('users');
    }

    public function down()
    {
        $this->forge->dropTable('users');
    }
}

Shield(公式認証パッケージ)

CI4.3 以降の公式認証ライブラリ。CI 単体では認証機能が薄かった弱点を解消:

composer require codeigniter4/shield
php spark shield:setup
php spark migrate --all

# 機能
# - パスワード認証 / トークン認証 / JWT
# - メール認証
# - 2 要素認証 (TOTP)
# - グループ / パーミッション
# - 自動ログインクッキー(Remember Me)

CLI(Spark)

php spark serve              # 開発サーバ
php spark routes             # ルート一覧
php spark make:controller    # 雛形生成
php spark make:model
php spark make:migration
php spark migrate
php spark db:seed UserSeeder
php spark cache:clear
php spark filter:check get / # フィルタ確認

Laravel との比較

項目CodeIgniter 4Laravel 11+
学習コスト低い(薄い)中〜高(規約多い)
パフォーマンス軽量・速い機能多く重め(Octane で改善)
ORM独自 Model / Query BuilderEloquent(強力)
テンプレView(PHP直書き)+ ParserBlade
Job キュー非搭載(自前 or 別ライブラリ)Queue / Horizon 標準
API 開発RESTful Resource + ShieldSanctum / Passport
エコシステム小規模大規模・パッケージ豊富
レンタルサーバ動くSSH/Composer 必須
日本語情報CI3 時代は豊富 / CI4 は少非常に豊富

CI3 → CI4 移行

同じ「CodeIgniter」ですが CI4 は事実上の別フレームワーク。書き直しに近い作業になります:

  • 名前空間必須 (CI3 はグローバル関数中心)
  • Controller は extends Controller でリクエスト / レスポンスオブジェクト
  • Model にバリデーション / イベント / Entity 統合
  • ヘルパー関数も helper('text') で明示ロード
  • 設定ファイルは PHP クラス + .env
  • ライブラリ移植は実質書き直し

採用 vs 保守の判断

状況推奨
新規プロジェクト(中〜大)Laravel / Symfony を強く推奨
新規プロジェクト(小規模 / 学習)CI4 もアリ。Slim も検討
既存 CI3 で動いている運用機能凍結なら現状維持 + セキュリティパッチ追従
既存 CI3 で開発継続CI4 移行 or Laravel リライトを計画
レンタルサーバ縛りCI4 が現実解

FAQ

Q: CI3 はまだ使える?
A: 動きはしますが「セキュリティパッチのみ」状態で新規採用は非推奨。PHP 8 互換性も限定的です。

Q: CI4 でジョブキューはどうする?
A: 公式 codeigniter4/queue パッケージ(DB / Redis / Beanstalkd 対応)が登場しました。それ以前はTasks (cron) + 自前 worker で実装します。

Q: 日本語ドキュメントは?
A: CI3 までは「コードイグナイター ユーザガイド」が活発でしたが、CI4 の翻訳は遅れ気味。公式英語ドキュメントを読むのが早道です。

Q: Laravel に移行するメリットは?
A: エコシステム (Forge / Vapor / Nova / Telescope)、ジョブキュー / WebSocket / Queue Horizon、Laravel Sail (Docker)、求人市場の厚みなど。「人を集めやすい」のは Laravel です。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Laravel
  2. CakePHP
  3. Symfony
  4. zend framework
  5. DietCake
  6. phalcon
  7. CodeIgniter
  8. FuelPHP
  9. Slim
  10. Flight
  11. Yii
  12. Silex