カテゴリ: CodeIgniter 更新日: 2026/07/09

CodeIgniterのディレクトリ構成を徹底解説!初心者でもわかるWeb開発の基本

CodeIgniterのディレクトリ構成とは?全体像を初心者向けに解説
CodeIgniterのディレクトリ構成とは?全体像を初心者向けに解説

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

生徒

PHPのフレームワークであるCodeIgniterを学習し始めたのですが、フォルダがたくさんあって、どこに何を置けばいいのかさっぱりわかりません。

先生

いきなりたくさんのファイルを見ると驚きますよね。でも、CodeIgniterのディレクトリ構成には明確なルールがあるんです。

生徒

そのルールさえわかれば、迷わずに開発できそうですね。全体像を教えていただけますか?

先生

もちろんです。Webアプリケーションを作るための設計方針と一緒に、整理しながら見ていきましょう!

1. CodeIgniterのディレクトリ構成とは?

1. CodeIgniterのディレクトリ構成とは?
1. CodeIgniterのディレクトリ構成とは?

CodeIgniter(コードイグナイター)は、PHPでWebサイトやWebアプリケーションを開発するためのフレームワークです。フレームワークとは、家を建てるときの「設計図」や「組み立てキット」のようなもので、これを使うことで、ゼロからプログラムを書くよりも効率的で安全に開発ができます。

ディレクトリ構成とは、それらのファイルを整理整頓するための「本棚の配置」のようなものです。どこに何があるか決まっているからこそ、世界中の開発者が迷わずに同じルールでプロジェクトを進められるのです。CodeIgniterの構成は、特にMVC(モデル・ビュー・コントローラー)という設計思想に基づいて整理されています。

2. MVCアーキテクチャの役割を知ろう

2. MVCアーキテクチャの役割を知ろう
2. MVCアーキテクチャの役割を知ろう

CodeIgniterを理解するための鍵となるのがMVCです。これはプログラムを3つの役割に分ける考え方で、Web開発の基本です。

  • Model(モデル): データベースとのやり取りを担当します。データの保存や検索を行う「事務員さん」のような役割です。
  • View(ビュー): 画面に表示される見た目部分を担当します。HTMLやCSSを使ってユーザーが見る画面を作る「デザイナーさん」のような役割です。
  • Controller(コントローラー): モデルとビューを仲介します。ユーザーの入力を受け取り、モデルに指示を出し、結果をビューに渡す「司令塔」のような役割です。

この3つに分けることで、役割が明確になり、プログラムが修正しやすくなります。

3. appディレクトリの重要性

3. appディレクトリの重要性
3. appディレクトリの重要性

CodeIgniterで最も頻繁に触ることになるのが、appディレクトリです。ここには、あなたが自分で書くアプリケーションのコードがすべて詰まっています。

例えば、先ほどのMVCのファイルもこの中に配置します。


// アプリケーション内のコントローラーの例
namespace App\Controllers;

class Home extends BaseController {
    public function index() {
        return view('welcome_message');
    }
}

このように、appディレクトリの中には、ControllersModelsViewsというフォルダが用意されており、それぞれの役割ごとにファイルを分類して格納します。

4. publicディレクトリと公開の仕組み

4. publicディレクトリと公開の仕組み
4. publicディレクトリと公開の仕組み

Webブラウザからアクセスされたとき、最初に受け取ってくれるのがpublicディレクトリです。ここには、画像ファイル、CSSファイル、JavaScriptファイルなど、ユーザーが直接見ることのできるファイル(静的ファイル)を置きます。

なぜpublicディレクトリを分けるのでしょうか?それはセキュリティのためです。プログラムの重要なコード(appsystemフォルダの中身)を外部から直接見られないようにし、publicフォルダだけを外部に公開することで、安全性を高めています。


<!-- publicフォルダ内のCSSを読み込むイメージ -->
<link rel="stylesheet" href="/css/style.css">

このように、Webサイトの見た目を整えるためのファイルは、ここから読み込まれます。

5. systemディレクトリと書き込みの注意点

5. systemディレクトリと書き込みの注意点
5. systemディレクトリと書き込みの注意点

systemディレクトリは、CodeIgniter本体のプログラムコードが格納されている場所です。ここにはフレームワークを動かすためのコア機能が入っています。

初心者が最も注意すべき点は、systemディレクトリの中身を直接書き換えてはいけないということです。なぜなら、CodeIgniterのアップデートをしたときに、あなたが書き換えたコードがすべて上書きされて消えてしまうからです。自分だけの機能を追加したい場合は、必ずappディレクトリ側で拡張や修正を行うのが鉄則です。

6. 設定ファイルとConfigの役割

6. 設定ファイルとConfigの役割
6. 設定ファイルとConfigの役割

プログラム全体の設定を管理しているのがapp/Configディレクトリです。データベースへの接続情報や、サイトのURL、使用する言語など、プロジェクト全体に関わる重要な情報をここで設定します。

例えば、データベースの設定は以下のように記述します。


// データベース接続設定の例
public $default = [
    'hostname' => 'localhost',
    'username' => 'db_user',
    'password' => 'secret_password',
    'database' => 'my_database',
];

このように、プログラムのコードから設定値だけを切り離しておくことで、環境が変わったときでもコードを変更せずに設定ファイルだけを書き換えるだけで対応できるようになります。

7.Writableディレクトリの役割

7.Writableディレクトリの役割
7.Writableディレクトリの役割

writableディレクトリは、アプリケーション実行中にプログラムが作成したり、更新したりするファイルを一時的に置いておく場所です。例えば、エラーログ(エラーの記録)や、画像アップロード機能で保存されたファイルなどがここに入ります。

このディレクトリは、Webサーバーから書き込みができる権限(パーミッション)が設定されている必要があります。ファイルサーバーの管理でよくあることですが、プログラムから「ファイルが保存できない!」というエラーが出たときは、このディレクトリの権限設定を確認するのが定石です。


[ログの記録イメージ]
/writable/logs/log-2026-07-08.php

8. 効率的な開発のためのディレクトリ構成

8. 効率的な開発のためのディレクトリ構成
8. 効率的な開発のためのディレクトリ構成

ディレクトリ構成を理解することは、チーム開発や大規模なWebサイト制作において非常に重要です。どこに何があるか分かっていれば、プログラムの修正や機能追加もスムーズに行えます。CodeIgniterは、この構成を強制的に決めてくれているため、最初は窮屈に感じるかもしれませんが、結果としてメンテナンスがしやすく、長期間運用できるアプリケーションを構築できるようになります。

もし、どのフォルダにファイルを置くか迷ったら、まずは「これは見た目のファイルか?(View)」「これは計算処理か?(Controller)」「これはデータか?(Model)」と自問自答してみてください。その答えが、そのまま配置場所へのガイドになります。

カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのサービスとは?役割と基本概念を初心者向けにやさしく解説
New2
Laravel
Laravelでリダイレクトやフラッシュメッセージをテストする方法を完全解説!初心者向けLaravelテスト入門
New4
CodeIgniter
CodeIgniterのセキュリティ対策を完全ガイド!初心者が守るべき基本設定
人気記事
No.2
Java&Spring記事人気No2
Laravel
LaravelでReactコンポーネントを組み込む方法完全ガイド!JSX対応でフロントエンド連携を学ぼう
No.3
Java&Spring記事人気No3
Laravel
LaravelのRESTfulコントローラ設計のベストプラクティスを初心者向けにわかりやすく解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのold()関数でフォーム再表示時に値を保持する方法
No.5
Java&Spring記事人気No5
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.6
Java&Spring記事人気No6
Laravel
LaravelをDockerで動かすメリットと導入の全体像を徹底解説!初心者向け入門ガイド
No.7
Java&Spring記事人気No7
Symfony
Symfonyでバリデーションをコントローラに組み込む方法を徹底解説!初心者にもやさしい入力チェックの基本
No.8
Java&Spring記事人気No8
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方