ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
CodeIgniter とは
CodeIgniter は 2006 年に米 EllisLab 社がリリースした PHP の MVC フレームワーク。「規約より設定の薄さ」「レンタルサーバでも動く」「学習コストが低い」を売りに、日本でも 2010 年代前半まで広く使われました。
その後 EllisLab が開発から離れ、2019 年にカナダの BCIT (British Columbia Institute of Technology) に正式移管。これに伴いCodeIgniter 4 がフルリライトでリリースされ、現代の PHP(名前空間 / PSR-4 / Composer)に追従しました。
バージョン履歴
| バージョン | リリース | PHP 要件 | 状態 |
|---|---|---|---|
| CI 1.x | 2006 | PHP 4 | EOL |
| CI 2.x | 2011 | PHP 5.1+ | EOL |
| CI 3.x | 2015 | PHP 5.6+ | セキュリティパッチのみ |
| CI 4.x | 2020 | PHP 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
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class UserController extends Controller
{
public function list()
{
$userModel = new \App\Models\UserModel();
$users = $userModel->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(クエリビルダ)
<?php
namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model
{
protected $table = 'users';
protected $primaryKey = 'id';
protected $returnType = 'array';
protected $allowedFields = ['name', 'email', 'role'];
protected $useTimestamps = true;
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $validationRules = [
'name' => '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<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class CreateUsersTable extends Migration
{
public function up()
{
$this->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 4 | Laravel 11+ |
|---|---|---|
| 学習コスト | 低い(薄い) | 中〜高(規約多い) |
| パフォーマンス | 軽量・速い | 機能多く重め(Octane で改善) |
| ORM | 独自 Model / Query Builder | Eloquent(強力) |
| テンプレ | View(PHP直書き)+ Parser | Blade |
| Job キュー | 非搭載(自前 or 別ライブラリ) | Queue / Horizon 標準 |
| API 開発 | RESTful Resource + Shield | Sanctum / 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 です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?