SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Webアプリケーションフレームワーク「Catalyst」入門

初めてのCatalyst入門(8)
Catalystのビュープログラミング

Catalystのビューを使って統一的なサイトを構築する


Catalyst::Helper::View::TTSite

 もう一つのヘルパクラスCatalyst::Helper::View::TTSiteでは、統一的な外観を持ったサイトを構築するためのクラスやファイルを作成します。

 このヘルパを使用してビューを作成するには、次のコマンドを実行します。

[リスト4]Catalyst::Helper::View::TTSiteを使用したビューの作成
$ ./MyApp/script/myapp_create.pl view TT TTSite
Catalyst::Helper::View::TTSiteで作成されるファイル

 このヘルパクラスにより作成されるファイルは次のようになります。

Catalyst::Helper::View::TTSiteで作成されるファイル
ファイル 説明
lib/<myapp>/View/TT.pm Catalyst::View::TTを継承したビュークラス
root/lib/config/main サイト共通の設定値やマクロなどを定義する設定ファイル
root/lib/config/col 色に関する定義を行う設定ファイル
root/lib/config/url URLの定義を行う設定ファイル
root/lib/site/wrapper テンプレートファイルの拡張子によりそのまま返すか、サイト用コンテンツを作成するか切り替える処理を定義したファイル
root/lib/site/layout サイト共通のヘッダ、本文、フッタのレイアウトを定義したファイル
root/lib/site/html クライアントに返すHTMLの枠組みを定義したファイル
root/lib/site/header コンテンツの上部に表示するヘッダ部分を記述したファイル
root/lib/site/footer コピーライトなどコンテンツの下部に表示するフッタ部分を記述したファイル
root/src/welcome.tt2 Welcomeページ用テンプレートファイル
root/src/message.tt2 メッセージページ用テンプレートファイル
root/src/error.tt2 エラーページ用テンプレートファイル
root/src/ttsite.css サイト共通CSSファイル

 「config/main」ファイルには、サイトのタイトルやコピーライトなどのサイト共通データ、「config/col」などの定義ファイルの読み込み、デフォルト値の定義などを行います。

 ここで定義した値は、すべてのテンプレートから参照できます。デフォルトでは次のように定義されています。

[リスト5]config/mainの一部(サイト共通データの定義)
site = {
  title     => 'Catalyst::View::TTSite Example Page',
  copyright => '2010 Your Name Here',
};

 ここで定義した値は、テンプレートからは[% site.title %]のように参照できます。

 「site/wrapper」ファイルでは、テンプレートファイルの拡張子により、「site/html」と「site/layout」を使用してHTMLをレンダリングするか、そのまま返すかの判定を行っています。

 デフォルトの「site/*」ファイルを使った場合のHTMLは次のように作成されます。

[リスト6]デフォルトの「site/*」ファイルを使用してレンダリングされるHTML
<!-- ここから「site/html」で定義
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>「site.title」などの値</title>
  <style type="text/css">
 「ttsite.css」の内容
  </style>
 </head>
 <body>
<!-- ここから「site/layout」で定義
<div id="header">「site/header」の内容</div>

<div id="content">
アクションで指定したテンプレートのレンダリング結果
</div>

<div id="footer">「site/footer」の内容</div>
<!-- ここまで「site/layout」で定義
 </body>
</html>
<!-- ここまで「site/html」で定義
設定パラメータ

 TTSiteヘルパで作成されたTT.pmでは、次のようにいくつかの設定値が追加されています。

[リスト7]TTSiteヘルパクラスで作成されるTT.pmファイル(一部)
package MyApp::View::TT;

use strict;
use base 'Catalyst::View::TT';

__PACKAGE__->config({
  INCLUDE_PATH => [
    MyApp->path_to( 'root', 'src' ),
    MyApp->path_to( 'root', 'lib' )
  ],
  PRE_PROCESS  => 'config/main',
  WRAPPER      => 'site/wrapper',
  ERROR        => 'error.tt2',
  TIMER        => 0
});

 新しく出てきた設定パラメータには次のようなものがあります。

主要な設定パラメータ(2)
パラメータ名 デフォルト値 説明
PRE_PROCESS 無し クライアントに返すHTMLページをレンダリングする前に呼び出されるテンプレートファイルを指定。サイト共通データなどを定義している
WRAPPER 無し 複数のテンプレートを使用してHTMLページをレンダリングする場合に使用するラッパテンプレートファイルを指定
ERROR 無し テンプレートファイルの処理中にエラーが発生した場合に表示させるテンプレートファイルなどを指定
TIMER 0 テンプレートをレンダリングする際にプロファイルを計測するかどうかのフラグ。計測する場合には1を指定する

次のページ
テンプレートファイルで使用可能なディレクティブ

この記事は参考になりましたか?

Webアプリケーションフレームワーク「Catalyst」入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4952 2010/06/22 12:59

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー