CodeIgniterのディレクトリ構成を解説!app・public・writableの役割とは
生徒
PHPフレームワークのCodeIgniterを勉強し始めたのですが、フォルダがたくさんあって、どこに何を置けばいいのか分かりません。
先生
CodeIgniterはルールが決まっているので、最初は難しく感じるかもしれませんね。特にapp、public、writableというフォルダは重要です。
生徒
その3つが何をする場所なのか、初心者にも分かりやすく教えてもらえますか?
先生
もちろんです。Webアプリケーションを作るための大切な場所なので、一つずつ丁寧に見ていきましょう。
1. CodeIgniterのディレクトリ構成とは
PHPのフレームワークであるCodeIgniter(コードイグナイター)には、迷わないようにフォルダ分けされた構造があります。これをディレクトリ構成と呼びます。プログラミングの学習において、ファイルを整理整頓することは非常に重要です。
例えば、本棚を想像してみてください。漫画、雑誌、参考書がバラバラに置いてあると、読みたい本を探すのに時間がかかりますよね。プログラムも同じで、役割ごとにフォルダを分けることで、効率的に開発ができるようになります。CodeIgniterは、この「整理整頓」が最初から設定されている、とても親切な仕組みなのです。
2. appディレクトリの役割
app(アップ)ディレクトリは、アプリケーションの心臓部です。プログラミングの処理を記述する最も重要な場所になります。料理に例えるなら、ここはキッチンの調理スペースです。レシピ通りに食材を加工し、美味しい料理(機能)を作り出す場所ですね。
具体的には、以下のようなファイルをここに作ります。
- Controllers(コントローラー):画面からの操作を受け取る窓口
- Models(モデル):データの保存や計算をする場所
- Views(ビュー):実際に表示される画面の設計図
プログラムのロジック(論理的な処理)はすべてここに書き込みます。以下は、画面に挨拶を表示する簡単なプログラムの例です。
namespace App\Controllers;
class Home extends BaseController {
public function index() {
echo "こんにちは、CodeIgniterの世界へ!";
}
}
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ディレクトリの役割
writable(ライタブル)ディレクトリは、プログラムが実行中に発生したデータや、記録を一時的に保存する場所です。名前に「書き込み可能」という意味が含まれています。例えるなら、ここは「書類の倉庫やゴミ箱」です。ログ(記録)や、キャッシュ(一時的なデータ)など、システムが必要なときに書き出して保存しておく場所になります。
このディレクトリは、Webサーバーが自由にファイルを読み書きできるように権限を設定しておく必要があります。例えば、プログラムのエラーが発生したとき、その内容を以下のようにファイルへ保存する処理がよく行われます。
$logMessage = "エラーが発生しました";
$path = WRITEPATH . 'logs/error.log';
file_put_contents($path, $logMessage, FILE_APPEND);
5. 各ディレクトリの使い分け
これら3つのディレクトリを適切に使い分けることが、安全でメンテナンスしやすいWebアプリケーション開発の第一歩です。初心者の方は、「どこに何を書くか」を迷ったときに、以下の基準を思い出してください。
- プログラムの処理を書くなら:app
- ユーザーに見せるデザインを書くなら:public
- システムが使う記録を書くなら:writable
このように整理することで、ファイルが散らかるのを防ぐことができます。以下のコードは、各ディレクトリのパスをプログラムから呼び出す例です。
echo APPPATH; // appフォルダの場所
echo FCPATH; // publicフォルダの場所
echo WRITEPATH; // writableフォルダの場所
6. 開発時に意識すべきポイント
CodeIgniterを使ってWeb開発をするとき、一番大切なのは「セキュリティ」です。public以外を外から直接見られないようにすることは、とても重要な知識です。プログラミングの学習を始めたばかりのときは、すべてをappフォルダに入れてしまいがちですが、役割を分けるという考え方は、どのようなシステム開発でも共通する非常に大切なルールです。
最初は難しく感じるかもしれませんが、まずはフォルダの役割を意識してファイルを整理することから始めてみましょう。きれいな構成を保つことは、後からプログラムを修正するときに必ず自分を助けてくれます。コツコツと基本を積み重ねていきましょう。