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

CodeIgniterのMVC設計とは?初心者向けディレクトリ構成と仕組みを解説

CodeIgniterでMVCを意識したディレクトリ設計の考え方
CodeIgniterでMVCを意識したディレクトリ設計の考え方

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

生徒

PHPフレームワークのCodeIgniterを使いたいのですが、ファイルが多すぎてどこに何を書けばいいのかわかりません。

先生

最初は戸惑いますよね。CodeIgniterはMVCという設計方針を採用しています。これを理解すると、整理整頓されたきれいなプログラムが書けるようになりますよ。

生徒

MVCとは何ですか?詳しく教えてください。

先生

それでは、Web開発の基本となるMVC設計と、CodeIgniterでのディレクトリ構成について一緒に見ていきましょう!

1. MVC設計とは何か?役割分担の仕組み

1. MVC設計とは何か?役割分担の仕組み
1. MVC設計とは何か?役割分担の仕組み

MVCとは、プログラムを3つの役割に分けて管理する設計手法のことです。M(Model)、V(View)、C(Controller)の頭文字をとったものです。なぜ役割を分けるのかというと、役割ごとにコードを整理することで、後から修正しやすくなったり、他の人と協力して開発しやすくなったりするからです。料理店に例えると、Mは「食材を管理する倉庫番」、Vは「完成した料理をお客様に出す接客担当」、Cは「注文を聞いて料理人に指示を出すホールスタッフ」のようなものです。

2. Model(モデル)の役割とディレクトリ

2. Model(モデル)の役割とディレクトリ
2. Model(モデル)の役割とディレクトリ

モデルは、データを扱う専門家です。データベースへの接続や、情報の保存、更新、削除を行う場所です。データベースとは、Webサイト上のブログ記事やユーザー情報などを保存しておく箱のようなものです。モデルに処理を書いておけば、他の場所から同じデータを簡単に呼び出すことができます。CodeIgniterでは、app/Modelsというディレクトリに配置します。


namespace App\Models;
use CodeIgniter\Model;

class BlogModel extends Model {
    protected $table = 'blogs';
}

3. View(ビュー)の役割と画面表示

3. View(ビュー)の役割と画面表示
3. View(ビュー)の役割と画面表示

ビューは、画面に表示される部分を担当します。HTMLやCSSを使って、ユーザーが目にするページのデザインを作ります。複雑なプログラム計算はここには書かず、あくまで見た目を整えることに集中します。ユーザーがアクセスしたときに「何を表示するか」を準備する場所です。CodeIgniterでは、app/ViewsというディレクトリにHTMLファイルを置きます。


<html>
    <body>
        <h1>私のブログへようこそ</h1>
        <p>初めてのプログラミング記事です。</p>
    </body>
</html>

4. Controller(コントローラー)の交通整理

4. Controller(コントローラー)の交通整理
4. Controller(コントローラー)の交通整理

コントローラーは、アプリケーション全体の司令塔です。ユーザーからのリクエスト(ページを開くなど)を受け取り、モデルからデータを取得して、ビューに渡して表示させるという一連の処理の流れを作ります。例えば、ブログのタイトルを表示したいとき、コントローラーは「モデル君、記事データを取ってきて!」「ビュー君、そのデータを使ってページを作って!」と指示を出す役割です。app/Controllersディレクトリに配置します。


namespace App\Controllers;

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

5. CodeIgniterのディレクトリ構成の全体像

5. CodeIgniterのディレクトリ構成の全体像
5. CodeIgniterのディレクトリ構成の全体像

CodeIgniterをインストールすると、フォルダがたくさん生成されますが、最初は以下の主要な場所だけ覚えれば大丈夫です。appというフォルダの中に、先ほどのMVCのファイルが入ります。フレームワークとは、Web開発でよく使う機能が最初からまとめられている枠組みのことです。この構成を守ることで、開発効率が劇的に向上し、プログラムが壊れにくくなります。

  • app/Controllers: コントローラーを保存
  • app/Models: モデルを保存
  • app/Views: ビューを保存
  • public: ブラウザから直接アクセスされる場所

6. ルーティングの設定方法

6. ルーティングの設定方法
6. ルーティングの設定方法

ルーティングとは、URLとコントローラーを紐付ける設定のことです。どのURLにアクセスしたら、どのコントローラーのどの処理が動くかを決定します。例えば、サイトのトップページにアクセスしたときに、どのファイルを読み込むかはapp/Config/Routes.phpというファイルで決まります。これがわかると、WebサイトのURLを自由に決めることができます。


$routes->get('/', 'Home::index');
$routes->get('/blog', 'Blog::index');

7. MVCを使うメリットと開発の流れ

7. MVCを使うメリットと開発の流れ
7. MVCを使うメリットと開発の流れ

MVC設計を意識すると、例えば「見た目を変えたいときはViewだけ変えればいい」「保存の仕方を変えたいときはModelだけ変えればいい」というふうに、修正がとても楽になります。パソコンの操作に慣れていない初心者の方でも、ファイルごとに役割が分かれているため、どこに何を書けばいいのかが明白になります。この規約(ルール)に従うことが、プログラミング学習における最初の大切なステップです。

カテゴリの一覧へ
新着記事
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
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
No.3
Java&Spring記事人気No3
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
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の条件分岐とループ処理をBladeで書く方法
No.7
Java&Spring記事人気No7
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計