CodeIgniterのディレクトリ構成を徹底解説!初心者でもわかるWeb開発の基本
生徒
PHPのフレームワークであるCodeIgniterを学習し始めたのですが、フォルダがたくさんあって、どこに何を置けばいいのかさっぱりわかりません。
先生
いきなりたくさんのファイルを見ると驚きますよね。でも、CodeIgniterのディレクトリ構成には明確なルールがあるんです。
生徒
そのルールさえわかれば、迷わずに開発できそうですね。全体像を教えていただけますか?
先生
もちろんです。Webアプリケーションを作るための設計方針と一緒に、整理しながら見ていきましょう!
1. CodeIgniterのディレクトリ構成とは?
CodeIgniter(コードイグナイター)は、PHPでWebサイトやWebアプリケーションを開発するためのフレームワークです。フレームワークとは、家を建てるときの「設計図」や「組み立てキット」のようなもので、これを使うことで、ゼロからプログラムを書くよりも効率的で安全に開発ができます。
ディレクトリ構成とは、それらのファイルを整理整頓するための「本棚の配置」のようなものです。どこに何があるか決まっているからこそ、世界中の開発者が迷わずに同じルールでプロジェクトを進められるのです。CodeIgniterの構成は、特にMVC(モデル・ビュー・コントローラー)という設計思想に基づいて整理されています。
2. MVCアーキテクチャの役割を知ろう
CodeIgniterを理解するための鍵となるのがMVCです。これはプログラムを3つの役割に分ける考え方で、Web開発の基本です。
- Model(モデル): データベースとのやり取りを担当します。データの保存や検索を行う「事務員さん」のような役割です。
- View(ビュー): 画面に表示される見た目部分を担当します。HTMLやCSSを使ってユーザーが見る画面を作る「デザイナーさん」のような役割です。
- Controller(コントローラー): モデルとビューを仲介します。ユーザーの入力を受け取り、モデルに指示を出し、結果をビューに渡す「司令塔」のような役割です。
この3つに分けることで、役割が明確になり、プログラムが修正しやすくなります。
3. appディレクトリの重要性
CodeIgniterで最も頻繁に触ることになるのが、appディレクトリです。ここには、あなたが自分で書くアプリケーションのコードがすべて詰まっています。
例えば、先ほどのMVCのファイルもこの中に配置します。
// アプリケーション内のコントローラーの例
namespace App\Controllers;
class Home extends BaseController {
public function index() {
return view('welcome_message');
}
}
このように、appディレクトリの中には、Controllers、Models、Viewsというフォルダが用意されており、それぞれの役割ごとにファイルを分類して格納します。
4. publicディレクトリと公開の仕組み
Webブラウザからアクセスされたとき、最初に受け取ってくれるのがpublicディレクトリです。ここには、画像ファイル、CSSファイル、JavaScriptファイルなど、ユーザーが直接見ることのできるファイル(静的ファイル)を置きます。
なぜpublicディレクトリを分けるのでしょうか?それはセキュリティのためです。プログラムの重要なコード(appやsystemフォルダの中身)を外部から直接見られないようにし、publicフォルダだけを外部に公開することで、安全性を高めています。
<!-- publicフォルダ内のCSSを読み込むイメージ -->
<link rel="stylesheet" href="/css/style.css">
このように、Webサイトの見た目を整えるためのファイルは、ここから読み込まれます。
5. systemディレクトリと書き込みの注意点
systemディレクトリは、CodeIgniter本体のプログラムコードが格納されている場所です。ここにはフレームワークを動かすためのコア機能が入っています。
初心者が最も注意すべき点は、systemディレクトリの中身を直接書き換えてはいけないということです。なぜなら、CodeIgniterのアップデートをしたときに、あなたが書き換えたコードがすべて上書きされて消えてしまうからです。自分だけの機能を追加したい場合は、必ずappディレクトリ側で拡張や修正を行うのが鉄則です。
6. 設定ファイルとConfigの役割
プログラム全体の設定を管理しているのがapp/Configディレクトリです。データベースへの接続情報や、サイトのURL、使用する言語など、プロジェクト全体に関わる重要な情報をここで設定します。
例えば、データベースの設定は以下のように記述します。
// データベース接続設定の例
public $default = [
'hostname' => 'localhost',
'username' => 'db_user',
'password' => 'secret_password',
'database' => 'my_database',
];
このように、プログラムのコードから設定値だけを切り離しておくことで、環境が変わったときでもコードを変更せずに設定ファイルだけを書き換えるだけで対応できるようになります。
7.Writableディレクトリの役割
writableディレクトリは、アプリケーション実行中にプログラムが作成したり、更新したりするファイルを一時的に置いておく場所です。例えば、エラーログ(エラーの記録)や、画像アップロード機能で保存されたファイルなどがここに入ります。
このディレクトリは、Webサーバーから書き込みができる権限(パーミッション)が設定されている必要があります。ファイルサーバーの管理でよくあることですが、プログラムから「ファイルが保存できない!」というエラーが出たときは、このディレクトリの権限設定を確認するのが定石です。
[ログの記録イメージ]
/writable/logs/log-2026-07-08.php
8. 効率的な開発のためのディレクトリ構成
ディレクトリ構成を理解することは、チーム開発や大規模なWebサイト制作において非常に重要です。どこに何があるか分かっていれば、プログラムの修正や機能追加もスムーズに行えます。CodeIgniterは、この構成を強制的に決めてくれているため、最初は窮屈に感じるかもしれませんが、結果としてメンテナンスがしやすく、長期間運用できるアプリケーションを構築できるようになります。
もし、どのフォルダにファイルを置くか迷ったら、まずは「これは見た目のファイルか?(View)」「これは計算処理か?(Controller)」「これはデータか?(Model)」と自問自答してみてください。その答えが、そのまま配置場所へのガイドになります。