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

CodeIgniter 4の標準ディレクトリ構成を完全理解しよう!初心者向けPHPフレームワーク入門

CodeIgniter 4の標準ディレクトリ構成を完全理解しよう
CodeIgniter 4の標準ディレクトリ構成を完全理解しよう

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

生徒

PHPの学習を始めたのですが、CodeIgniter 4というフレームワークのフォルダ構成が複雑で、どこに何があるのか分かりません。

先生

新しい道具を使うときは、まずその道具箱の中身を整理することが大切ですね。CodeIgniter 4のディレクトリ構造には、開発をスムーズにするための明確なルールがあるんですよ。

生徒

なるほど!そのルールを理解できれば、効率的にWebサイトやWebアプリを作れるようになりますか?

先生

ええ、その通りです。家を建てるときに設計図が必要なように、プログラミングでもディレクトリ構成という設計図を理解すれば、迷わずに開発できるようになりますよ。

1. CodeIgniter 4とは?開発を楽にするフレームワークの基礎知識

1. CodeIgniter 4とは?開発を楽にするフレームワークの基礎知識
1. CodeIgniter 4とは?開発を楽にするフレームワークの基礎知識

CodeIgniter(コードイグナイター)とは、PHPというプログラミング言語を使って、Webアプリケーションを効率よく作るためのフレームワークのことです。フレームワークとは、料理で例えるなら「調理キット」のようなものです。食材や調理器具がセットになっており、それを使うことで、ゼロから自分で組み立てるよりも圧倒的に早く、安全に料理(システム開発)ができるようになります。

PHP初心者にとって、自分で全てのコードを書くのは大変ですが、CodeIgniterを使うことで、Webサイトに必要な機能が最初から整った状態でスタートできます。このフレームワークには、あらかじめ決められた「ディレクトリ構成」があります。この構成は、どこにどのプログラムを置くべきかという約束事であり、世界中のエンジニアがこの共通ルールに従って開発を行っています。

2. ディレクトリ構成を理解するための全体像

2. ディレクトリ構成を理解するための全体像
2. ディレクトリ構成を理解するための全体像

CodeIgniter 4をインストールすると、多くのフォルダが表示されます。最初は戸惑うかもしれませんが、重要なフォルダはいくつかしかありません。Web開発におけるディレクトリ(フォルダ)とは、ファイルの収納箱のことです。プログラムが動くとき、この箱の中から必要なファイルを探し出して読み込みます。

主なフォルダの役割を理解するために、まずはプログラムの入り口となるコードを見てみましょう。


// プログラムの始まりを定義する例
namespace App\Controllers;

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

このコードは、ユーザーが画面を見たときに、「どの情報を表示するか」を指示するものです。このファイルがどのフォルダに置かれるべきかを知ることが、ディレクトリ理解の第一歩となります。

3. appフォルダ:あなたのプログラムを書き込むメインの場所

3. appフォルダ:あなたのプログラムを書き込むメインの場所
3. appフォルダ:あなたのプログラムを書き込むメインの場所

appフォルダは、あなたが作成するメインのプログラムが入る心臓部です。ここには、以下の重要なフォルダが収められています。

  • Controllers(コントローラー):司令塔の役割。ブラウザからのリクエストを受け取り、どの処理をするか判断します。
  • Models(モデル):データベースとやり取りする担当。データの保存や取得を行います。
  • Views(ビュー):画面の見た目を担当。ユーザーが目にするHTMLコードを書く場所です。

MVC(モデル・ビュー・コントローラー)という設計思想に基づいています。これは「役割分担」です。例えば、料理店に例えると、ホール担当(コントローラー)が注文を聞き、厨房(モデル)で食材を加工し、お皿に盛り付けて(ビュー)提供する、という流れと同じです。この役割分担があるおかげで、コードがぐちゃぐちゃにならず、修正が簡単になるのです。

4. publicフォルダ:世界中に公開される唯一の玄関口

4. publicフォルダ:世界中に公開される唯一の玄関口
4. publicフォルダ:世界中に公開される唯一の玄関口

publicフォルダは、外部の人(ユーザー)が直接アクセスできる唯一の場所です。セキュリティの観点から、CodeIgniterではこのフォルダ以外は外から見えないようになっています。

ここにはindex.phpという重要なファイルがあります。すべてのアクセスはまずこのindex.phpを経由します。また、画像ファイルやCSS、JavaScriptといった、デザインに関するファイルもこの中のフォルダに保存するのが一般的です。


<!-- 画像やCSSの読み込み例 -->
<link rel="stylesheet" href="/css/style.css">
<img src="/images/logo.png" alt="サイトのロゴ">

このように、Webブラウザに見せたいものだけをpublicに置き、それ以外の重要なプログラム(システムの中身)はpublicの外に隠しておくことで、安全なWebサイト運営が可能になります。

5. writableフォルダ:プログラムが自動生成するデータの倉庫

5. writableフォルダ:プログラムが自動生成するデータの倉庫
5. writableフォルダ:プログラムが自動生成するデータの倉庫

writableフォルダは、プログラムが動いている最中に、勝手にファイルを作成したり書き込んだりするための場所です。例えば、サイトのエラーログを保存したり、キャッシュ(高速化のために一時的に保存するデータ)を置いておいたりします。

プログラミング未経験の方が覚えておくべき点は、「自分では直接あまり触らないけれど、システムが勝手に使う場所」ということです。ここには、システムが正常に動いているかを確認するための大切な情報が記録されています。もしサイトがおかしいなと思ったときは、この中のログファイルをチェックすることで、何が原因か突き止めることができます。

6. systemフォルダ:CodeIgniterのエンジンが詰まった場所

6. systemフォルダ:CodeIgniterのエンジンが詰まった場所
6. systemフォルダ:CodeIgniterのエンジンが詰まった場所

systemフォルダには、CodeIgniter本体を動かすためのコアプログラムが入っています。自動車で例えるなら、エンジンや車軸などの内部メカニック部分です。私たちは通常、このフォルダの中身を直接変更してはいけません。

なぜ触ってはいけないのかというと、フレームワーク本体をアップデート(最新版へ更新)したときに、自分で書き換えた内容が消えてしまうからです。CodeIgniter 4では、このsystemフォルダはそのままにして、自分のプログラムはappフォルダ内に書くことで、安全なアップデートが可能になっています。この「本体」と「自分のコード」を分けるルールが、メンテナンス性の高いシステム開発を実現します。


// システム設定の呼び出し例(通常は変更不要)
$config = config('App');
echo $config->baseURL;

7. app/Configフォルダ:システムの設定を管理する場所

7. app/Configフォルダ:システムの設定を管理する場所
7. app/Configフォルダ:システムの設定を管理する場所

app/Configフォルダは、アプリケーション全体の細かい設定を行う場所です。データベースの接続先情報や、メール送信の設定、表示する言語の設定など、システムが動くための「環境設定」をここで行います。

プログラムの中で、わざわざ設定値を直接書くのは大変です。そこで、このフォルダ内のファイルに設定をまとめておくことで、あとから設定を変更したくなったときも、このファイルを修正するだけで済みます。プログラミングのコツは「場所を分けること」にあります。設定は設定、処理は処理と分けることで、プログラムは驚くほど読みやすく、修正しやすくなるのです。


// データベース設定のイメージ
public $default = [
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'my_database',
];

8. 開発効率を上げるためのディレクトリ構成のベストプラクティス

8. 開発効率を上げるためのディレクトリ構成のベストプラクティス
8. 開発効率を上げるためのディレクトリ構成のベストプラクティス

CodeIgniter 4のディレクトリ構成をマスターすることは、プログラミング学習の近道です。最初は全てのフォルダを理解しようとしなくても大丈夫です。まずはapp/Controllersapp/Views、そしてpublicフォルダの役割だけをしっかり把握してください。

Webアプリケーション開発では、フォルダの場所が少し違うだけでエラーが発生することがよくあります。そんなときでも、どのファイルが何のために存在しているのかという全体像を知っていれば、「あ、これは設定ファイルだからConfigだな」「画面の見た目だからViewsだな」と、論理的に修正箇所を見つけることができます。これができると、エラーとの格闘時間が大幅に減り、楽しい開発体験が待っています。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルートとコントローラを対応付ける方法(名前付きルート)を初心者向けに解説
New2
Symfony
Symfonyで画像やファイルをアップロードする時のバリデーション完全ガイド!初心者でもわかる入力チェックの基本
New3
Laravel
Laravelで言語切替UIを作る!多言語対応(ローカリゼーション)実践ガイド
New4
CodeIgniter
CodeIgniterでローカル開発環境を構築する方法!初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのキャッシュ管理を完全ガイド!初心者でもわかるメリットと注意点
No.2
Java&Spring記事人気No2
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.3
Java&Spring記事人気No3
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterとは?特徴・できること・他PHPフレームワークとの違いを完全解説
No.5
Java&Spring記事人気No5
Laravel
Laravelローカリゼーション入門!言語の取得と切り替え(App::getLocale / setLocale)を徹底解説
No.6
Java&Spring記事人気No6
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計
No.7
Java&Spring記事人気No7
Symfony
TwigのHTMLエスケープとrawフィルタの使い方を完全解説!初心者にもわかるテンプレート表示のコツ
No.8
Java&Spring記事人気No8
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み