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

CodeIgniterのディレクトリ構成を解説!app・public・writableの役割とは

app / public / writable ディレクトリの役割と使い分け
app / public / writable ディレクトリの役割と使い分け

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

生徒

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

先生

CodeIgniterはルールが決まっているので、最初は難しく感じるかもしれませんね。特にapp、public、writableというフォルダは重要です。

生徒

その3つが何をする場所なのか、初心者にも分かりやすく教えてもらえますか?

先生

もちろんです。Webアプリケーションを作るための大切な場所なので、一つずつ丁寧に見ていきましょう。

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

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

PHPのフレームワークであるCodeIgniter(コードイグナイター)には、迷わないようにフォルダ分けされた構造があります。これをディレクトリ構成と呼びます。プログラミングの学習において、ファイルを整理整頓することは非常に重要です。

例えば、本棚を想像してみてください。漫画、雑誌、参考書がバラバラに置いてあると、読みたい本を探すのに時間がかかりますよね。プログラムも同じで、役割ごとにフォルダを分けることで、効率的に開発ができるようになります。CodeIgniterは、この「整理整頓」が最初から設定されている、とても親切な仕組みなのです。

2. appディレクトリの役割

2. appディレクトリの役割
2. appディレクトリの役割

app(アップ)ディレクトリは、アプリケーションの心臓部です。プログラミングの処理を記述する最も重要な場所になります。料理に例えるなら、ここはキッチンの調理スペースです。レシピ通りに食材を加工し、美味しい料理(機能)を作り出す場所ですね。

具体的には、以下のようなファイルをここに作ります。

  • Controllers(コントローラー):画面からの操作を受け取る窓口
  • Models(モデル):データの保存や計算をする場所
  • Views(ビュー):実際に表示される画面の設計図

プログラムのロジック(論理的な処理)はすべてここに書き込みます。以下は、画面に挨拶を表示する簡単なプログラムの例です。


namespace App\Controllers;
class Home extends BaseController {
    public function index() {
        echo "こんにちは、CodeIgniterの世界へ!";
    }
}

3. publicディレクトリの役割

3. publicディレクトリの役割
3. publicディレクトリの役割

public(パブリック)ディレクトリは、外部から見える唯一の入り口です。Webサイトにアクセスしたときに、一番最初に読み込まれる場所になります。例えるなら、ここは家の「玄関」です。家の奥の部屋(app)には勝手に入れないようにし、玄関を通る人だけが中に入れるというセキュリティの仕組みになっています。

このフォルダには、Webブラウザから直接アクセスできる以下のファイルを置きます。

  • CSS(スタイルシート):デザインを調整するファイル
  • JavaScript:動きをつけるプログラム
  • 画像ファイルやアイコン

このように、Webサイトの外観を整えるものだけをここに置くことで、セキュリティを保ちつつ、高速にページを表示させることができます。以下は、publicにあるHTMLファイルのイメージです。


<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="/css/style.css">
</head>
<body>
    <h1>ようこそ!</h1>
</body>
</html>

4. writableディレクトリの役割

4. writableディレクトリの役割
4. writableディレクトリの役割

writable(ライタブル)ディレクトリは、プログラムが実行中に発生したデータや、記録を一時的に保存する場所です。名前に「書き込み可能」という意味が含まれています。例えるなら、ここは「書類の倉庫やゴミ箱」です。ログ(記録)や、キャッシュ(一時的なデータ)など、システムが必要なときに書き出して保存しておく場所になります。

このディレクトリは、Webサーバーが自由にファイルを読み書きできるように権限を設定しておく必要があります。例えば、プログラムのエラーが発生したとき、その内容を以下のようにファイルへ保存する処理がよく行われます。


$logMessage = "エラーが発生しました";
$path = WRITEPATH . 'logs/error.log';
file_put_contents($path, $logMessage, FILE_APPEND);

5. 各ディレクトリの使い分け

5. 各ディレクトリの使い分け
5. 各ディレクトリの使い分け

これら3つのディレクトリを適切に使い分けることが、安全でメンテナンスしやすいWebアプリケーション開発の第一歩です。初心者の方は、「どこに何を書くか」を迷ったときに、以下の基準を思い出してください。

  • プログラムの処理を書くなら:app
  • ユーザーに見せるデザインを書くなら:public
  • システムが使う記録を書くなら:writable

このように整理することで、ファイルが散らかるのを防ぐことができます。以下のコードは、各ディレクトリのパスをプログラムから呼び出す例です。


echo APPPATH;  // appフォルダの場所
echo FCPATH;   // publicフォルダの場所
echo WRITEPATH; // writableフォルダの場所

6. 開発時に意識すべきポイント

6. 開発時に意識すべきポイント
6. 開発時に意識すべきポイント

CodeIgniterを使ってWeb開発をするとき、一番大切なのは「セキュリティ」です。public以外を外から直接見られないようにすることは、とても重要な知識です。プログラミングの学習を始めたばかりのときは、すべてをappフォルダに入れてしまいがちですが、役割を分けるという考え方は、どのようなシステム開発でも共通する非常に大切なルールです。

最初は難しく感じるかもしれませんが、まずはフォルダの役割を意識してファイルを整理することから始めてみましょう。きれいな構成を保つことは、後からプログラムを修正するときに必ず自分を助けてくれます。コツコツと基本を積み重ねていきましょう。

カテゴリの一覧へ
新着記事
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
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.7
Java&Spring記事人気No7
Symfony
TwigのHTMLエスケープとrawフィルタの使い方を完全解説!初心者にもわかるテンプレート表示のコツ
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計