カテゴリ: CodeIgniter 更新日: 2026/05/29

CodeIgniterのテンプレート構成を整理する方法!初心者でも分かるビュー管理術

CodeIgniterのテンプレート構成を整理する方法
CodeIgniterのテンプレート構成を整理する方法

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

生徒

「CodeIgniterでWebサイトを作っているんですが、ヘッダーやフッターを毎回書くのが大変で…何か良い方法はありますか?」

先生

「それなら、テンプレート構成を整理することで解決できますよ。CodeIgniterには、共通部分を効率的に管理する仕組みがあります。」

生徒

「テンプレート構成って何ですか?具体的にどうやって整理するんでしょうか?」

先生

「では、基本から順番に見ていきましょう。まずはテンプレート構成の基本概念から説明しますね。」

1. テンプレート構成とは?

1. テンプレート構成とは?
1. テンプレート構成とは?

CodeIgniterのテンプレート構成とは、Webサイトの見た目を作るHTMLファイルを効率的に管理する仕組みのことです。例えば、レストランのメニュー表を想像してください。すべてのページに「お店のロゴ」や「営業時間」が書いてありますよね。これを毎回書くのは大変です。テンプレート構成を使えば、共通部分を一度だけ書いて、それを全ページで使い回すことができます。

CodeIgniterでは、ビュー(View)と呼ばれるファイルでHTMLを管理します。ビューはapp/Views/フォルダの中に保存されます。このビューファイルを上手に分割して組み合わせることで、メンテナンスしやすいWebサイトが作れるのです。

2. 基本的なテンプレート分割の考え方

2. 基本的なテンプレート分割の考え方
2. 基本的なテンプレート分割の考え方

Webサイトは通常、いくつかの共通パーツで構成されています。代表的なものは以下の通りです。

  • ヘッダー(header): サイトの上部にあるロゴやナビゲーションメニュー
  • フッター(footer): サイトの下部にある著作権情報やリンク
  • サイドバー(sidebar): 横に表示されるメニューや広告エリア
  • メインコンテンツ: ページごとに異なる主要な内容

これらを別々のビューファイルに分けることで、例えばヘッダーのデザインを変更したいときは、ヘッダーファイル1つを修正するだけで全ページに反映されます。まるでブロックを組み合わせるように、Webページを構築できるのです。

3. ビューファイルの基本的な構成例

3. ビューファイルの基本的な構成例
3. ビューファイルの基本的な構成例

実際にビューファイルをどのように分割するか見てみましょう。まず、app/Views/フォルダ内に以下のようなファイル構成を作ります。

推奨フォルダ構成:
  • app/Views/templates/header.php - ヘッダー部分
  • app/Views/templates/footer.php - フッター部分
  • app/Views/pages/home.php - ホームページのメインコンテンツ
  • app/Views/pages/about.php - アバウトページのメインコンテンツ

ヘッダーファイルの基本的な内容は次のようになります。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= esc($title) ?></title>
    <link rel="stylesheet" href="/css/style.css">
</head>
<body>
    <header>
        <h1>私のWebサイト</h1>
        <nav>
            <a href="/">ホーム</a>
            <a href="/about">会社概要</a>
        </nav>
    </header>

このheader.phpには、HTMLの開始タグから<header>要素までが含まれています。$title変数は、コントローラーから渡されるページタイトルです。esc()関数は、セキュリティのためにHTMLの特殊文字をエスケープする関数です。

4. フッターファイルの作成

4. フッターファイルの作成
4. フッターファイルの作成

次に、フッター部分を作成します。app/Views/templates/footer.phpというファイルを作り、以下のような内容にします。


    <footer>
        <p>&copy; 2025 私のWebサイト. All rights reserved.</p>
        <p>お問い合わせ: info@example.com</p>
    </footer>
    <script src="/js/script.js"></script>
</body>
</html>

フッターファイルには、<footer>要素とHTMLの閉じタグが含まれています。JavaScriptファイルの読み込みもここに書くことで、ページの表示速度を向上させることができます。これは、HTMLの基本的なベストプラクティスです。

5. コントローラーでビューを組み立てる方法

5. コントローラーでビューを組み立てる方法
5. コントローラーでビューを組み立てる方法

分割したビューファイルは、コントローラー(Controller)で組み立てます。コントローラーは、ユーザーからのリクエストを受け取り、どのビューを表示するかを決定する役割を持ちます。まるで料理のレシピのように、「まずヘッダーを出して、次にメインコンテンツ、最後にフッター」という順番を指定します。

app/Controllers/Home.phpというコントローラーファイルを作成し、以下のように記述します。


<?php

namespace App\Controllers;

class Home extends BaseController
{
    public function index()
    {
        $data['title'] = 'ホームページ';
        
        echo view('templates/header', $data);
        echo view('pages/home');
        echo view('templates/footer');
    }
    
    public function about()
    {
        $data['title'] = '会社概要';
        
        echo view('templates/header', $data);
        echo view('pages/about');
        echo view('templates/footer');
    }
}

view()関数は、指定したビューファイルを読み込む関数です。第一引数にファイルパス(拡張子.phpは省略可能)、第二引数にビューに渡すデータを配列で指定します。echoで出力することで、ヘッダー・コンテンツ・フッターが順番に表示されます。

6. レイアウトテンプレートを使った効率化

6. レイアウトテンプレートを使った効率化
6. レイアウトテンプレートを使った効率化

毎回3つのビューを読み込むのは少し面倒です。そこで、レイアウトテンプレートという手法を使うと、さらに効率的になります。レイアウトファイルは、共通部分をまとめた枠組みのようなものです。

app/Views/layouts/default.phpというファイルを作成します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= esc($title) ?></title>
    <link rel="stylesheet" href="/css/style.css">
</head>
<body>
    <header>
        <h1>私のWebサイト</h1>
        <nav>
            <a href="/">ホーム</a>
            <a href="/about">会社概要</a>
        </nav>
    </header>
    
    <main>
        <?= $this->renderSection('content') ?>
    </main>
    
    <footer>
        <p>&copy; 2025 私のWebサイト. All rights reserved.</p>
    </footer>
    <script src="/js/script.js"></script>
</body>
</html>

renderSection('content')は、各ページ固有のコンテンツが挿入される場所を示します。これは、料理の型のようなもので、中身だけを入れ替えることができます。

7. セクションを使ったコンテンツの差し込み

7. セクションを使ったコンテンツの差し込み
7. セクションを使ったコンテンツの差し込み

レイアウトテンプレートを使う場合、各ページのビューファイルは以下のように書きます。app/Views/pages/home.phpの例です。


<?= $this->extend('layouts/default') ?>

<?= $this->section('content') ?>
<div class="container">
    <h2>ようこそ!</h2>
    <p>これはホームページのコンテンツです。</p>
    <p>CodeIgniterのテンプレート機能を使って、効率的にサイトを構築しています。</p>
</div>
<?= $this->endSection() ?>

extend()で使用するレイアウトを指定し、section()endSection()で囲まれた部分がレイアウトのrenderSection()の場所に挿入されます。コントローラーでは、return view('pages/home', $data);と書くだけで、自動的にレイアウトが適用されます。

8. 複数のセクションを使う応用テクニック

8. 複数のセクションを使う応用テクニック
8. 複数のセクションを使う応用テクニック

レイアウトテンプレートでは、複数のセクションを定義できます。例えば、特定のページだけに追加のJavaScriptを読み込みたい場合などに便利です。レイアウトファイルにrenderSection('scripts')を追加し、必要なページでのみsection('scripts')を定義します。

ポイント: セクションは必須ではありません。定義されていないセクションは単に何も表示されないだけなので、柔軟に使い分けることができます。

9. パーツの再利用でさらに効率化

9. パーツの再利用でさらに効率化
9. パーツの再利用でさらに効率化

サイドバーやお知らせエリアなど、複数のページで使い回したい部品は、app/Views/partials/フォルダに保存すると管理しやすくなります。例えば、サイドバーをpartials/sidebar.phpとして作成し、必要なページでecho view('partials/sidebar');と読み込めば、簡単に追加できます。

このように、パーツを小さく分割することで、変更があった際の修正箇所が明確になり、バグの混入も防げます。プログラミングでは、このような「関心の分離」という考え方が非常に重要です。

10. テンプレート構成のベストプラクティス

10. テンプレート構成のベストプラクティス
10. テンプレート構成のベストプラクティス

CodeIgniterでテンプレートを整理する際のポイントをまとめます。

  • 命名規則を統一する: ファイル名は小文字とアンダースコアを使い、内容が分かりやすい名前にします
  • フォルダ構成を明確にする: templates、layouts、pages、partialsなど、用途別にフォルダ分けします
  • 変数名を分かりやすくする: コントローラーからビューに渡す変数は、$data['page_title']のように具体的な名前にします
  • セキュリティを意識する: ユーザー入力を表示する際は、必ずesc()関数でエスケープします

これらのルールに従うことで、チームでの開発でも混乱が少なく、長期的にメンテナンスしやすいコードになります。最初は難しく感じるかもしれませんが、慣れてくると自然に身につきますので、実際に手を動かして試してみることが大切です。

まとめ

まとめ
まとめ

CodeIgniterのテンプレート構成を理解する重要性

CodeIgniterでWebアプリケーションやWebサイトを開発していくと、多くのページで同じレイアウトを使用する場面が増えてきます。例えばサイト上部のヘッダー、ナビゲーションメニュー、ページ下部のフッターなどはほとんどのページで共通して表示されます。もしこれらをすべてのページに直接書いてしまうと、デザインを変更するたびにすべてのページを修正しなければならなくなります。その結果、管理が難しくなり、保守性の低いコードになってしまいます。

そこで重要になるのがCodeIgniterのテンプレート構成です。テンプレート構成とは、Webページの共通部分とページ固有の部分を分離し、効率よく管理するための仕組みです。CodeIgniterではビューを分割して読み込むことで、ヘッダー、フッター、サイドバー、メインコンテンツなどのパーツを再利用できます。この仕組みを理解することで、初心者でも整理された見やすいWebサイト構造を作ることができます。

ビュー分割による効率的なページ管理

CodeIgniterではビューを複数のファイルに分割して管理する方法が基本になります。例えばヘッダーをheaderファイルとして管理し、フッターをfooterファイルとして管理することで、サイトの共通デザインを一箇所で管理できます。もしサイトのロゴを変更したい場合でも、headerファイルを一度修正するだけで全ページに変更が反映されます。このような管理方法は、開発効率を大きく向上させます。

またSEOの観点からも、統一されたHTML構造を保つことは重要です。検索エンジンはページ構造を解析してコンテンツの意味を理解します。CodeIgniterのテンプレート構成を利用して見出し構造やHTML構造を統一することで、検索エンジンにとって理解しやすいページ構造を作ることができます。結果としてWebサイト全体の評価が高まり、検索結果に表示されやすいサイトになります。

レイアウトテンプレートを活用した開発効率の向上

CodeIgniterではレイアウトテンプレートを使うことで、さらに効率的なページ管理が可能になります。レイアウトテンプレートとは、サイト全体の骨組みとなるHTML構造を定義したファイルです。各ページのビューはこのレイアウトを継承し、必要なコンテンツだけを書きます。この仕組みにより、HTML構造を毎回書く必要がなくなり、コードの重複を防ぐことができます。

さらにsection機能を使うことで、ページごとに異なる内容を柔軟に表示できます。例えばメインコンテンツの部分だけを差し替えたり、特定のページだけ追加のJavaScriptを読み込んだりすることも可能です。このようなテンプレート構造は、実際のWeb開発現場でも広く利用されている設計方法です。

テンプレート構成の実践サンプル

実際にCodeIgniterのテンプレート構成を利用する場合、次のような書き方になります。ここではビューを読み込む基本的な例を紹介します。ヘッダー、メインコンテンツ、フッターを順番に読み込むことで、一つのページが完成します。


<?php

namespace App\Controllers;

class Page extends BaseController
{
    public function index()
    {
        $data['title'] = 'ホームページ';

        echo view('templates/header', $data);
        echo view('pages/home');
        echo view('templates/footer');
    }
}

このコードではview関数を使ってビューファイルを読み込んでいます。最初にヘッダーを読み込み、その次にページ固有のコンテンツを読み込み、最後にフッターを読み込む流れです。これによりWebページの共通レイアウトを効率よく管理できます。

レイアウトテンプレートを利用したビューの例

次にレイアウトテンプレートを利用した場合のビューファイルの例を見てみましょう。extendとsectionを使うことで、レイアウトの中にコンテンツを差し込むことができます。


<?= $this->extend('layouts/default') ?>

<?= $this->section('content') ?>
<div class="container">
    <h2>ホームページ</h2>
    <p>CodeIgniterテンプレート構成を利用したページ表示の例です。</p>
</div>
<?= $this->endSection() ?>

この方法を利用すると、ページごとに必要なコンテンツだけを書けばよくなります。結果としてコード量が減り、読みやすく保守しやすいプログラムになります。初心者のうちは少し難しく感じるかもしれませんが、一度理解してしまえば非常に便利な仕組みです。

テンプレート構成を使うメリット

CodeIgniterのテンプレート構成を利用するメリットは数多くあります。まず一つ目はコードの再利用性です。同じHTML構造を複数のページで共有できるため、開発時間を短縮できます。二つ目は保守性の向上です。デザイン変更や修正が必要になった場合でも、共通ファイルを一箇所修正するだけで全体に反映されます。三つ目はコードの整理です。ビューを役割ごとに分割することで、どこに何が書かれているのか分かりやすくなります。

また大規模なWebサイトやチーム開発でも、このテンプレート構成は非常に役立ちます。フロントエンド担当者はビューを中心に作業し、バックエンド担当者はコントローラーやモデルを担当するなど、役割分担もしやすくなります。このような開発体制は多くのWeb開発プロジェクトで採用されています。

CodeIgniterはシンプルで学びやすいPHPフレームワークですが、このようなテンプレート構成を理解することで、より本格的なWebアプリケーション開発が可能になります。ビューの分割、レイアウトテンプレート、section機能などを上手に組み合わせて、読みやすく管理しやすいWebサイトを作ることが大切です。

先生と生徒の振り返り会話

生徒

CodeIgniterのテンプレート構成について学んでみて、ビューを分割することの大切さがよく分かりました。今までは一つのHTMLファイルに全部書いてしまっていたので、修正するたびに大変でした。

先生

その通りです。Web開発ではコードを整理して再利用できるようにすることがとても重要です。CodeIgniterのビュー分割やテンプレート構成を使えば、共通部分を効率よく管理できます。

生徒

ヘッダーやフッターを別ファイルにするだけでも、かなり管理しやすくなると感じました。さらにレイアウトテンプレートを使うと、もっと便利になりますね。

先生

そうですね。extendやsectionを使うレイアウトテンプレートは、CodeIgniterのビュー管理の中でも特に便利な機能です。ページごとに違う部分だけを書けばよくなるので、コードがとても整理されます。

生徒

これならWebサイトのページ数が増えても管理しやすそうです。実際のWeb制作でもこの方法がよく使われている理由が分かりました。

先生

その理解で正しいです。CodeIgniterのテンプレート構成は、初心者から実務開発まで役立つ重要な技術です。ビューの整理、レイアウトテンプレート、パーツの再利用という考え方を身につければ、より品質の高いWebアプリケーションを作ることができます。

生徒

これからはテンプレート構成を意識してビューを作っていきます。CodeIgniterでのWebサイト制作がより理解できました。

カテゴリの一覧へ
新着記事
New2
Symfony
Symfonyのコントローラで404・403エラーを制御する方法を初心者向けに解説!
New3
Symfony
Symfonyで独自イベント(カスタムイベント)を作成する方法をやさしく解説
New4
Laravel
Laravel Sailとは?初心者でもわかるDocker環境構築と使い方の基本
人気記事
No.2
Java&Spring記事人気No2
Laravel
LaravelでReactコンポーネントを組み込む方法完全ガイド!JSX対応でフロントエンド連携を学ぼう
No.3
Java&Spring記事人気No3
CodeIgniter
CodeIgniterのCSRF対策を完全解説!フォーム処理のセキュリティ手順
No.4
Java&Spring記事人気No4
Laravel
Laravelのリレーションを使った検索条件の書き方(whereHas)
No.5
Java&Spring記事人気No5
Symfony
Symfonyでバリデーションをコントローラに組み込む方法を徹底解説!初心者にもやさしい入力チェックの基本
No.6
Java&Spring記事人気No6
Laravel
LaravelのRESTfulコントローラ設計のベストプラクティスを初心者向けにわかりやすく解説
No.7
Java&Spring記事人気No7
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.8
Java&Spring記事人気No8
Laravel
Laravelのold()関数でフォーム再表示時に値を保持する方法