SHOEISHA iD

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

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

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

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

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

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


ビューの種類

 Catalystでは、モデルと同様にさまざまな出力を可能とするビューコンポーネントが用意されています。Catalystで使用可能な主なビューコンポーネントには次のようなものがあります。

主要なビューコンポーネント
ビューコンポーネント 説明
Catalyst::View::TT テンプレートクラスとしてTemplate::Toolkitを使用
Catalyst::View::HTML::Template テンプレートクラスとしてHTML::Templateを使用
Catalyst::View::Mason テンプレートクラスとしてHTML::Masonを使用
Catalyst::View::JSON データをJSON形式で出力する
Catalyst::View::Atom::XML データをAtom形式のXMLとして出力する

 それ以外のビューについては、Catalyst::Manual::Components#VIEWSなどを参照ください。

 上記サイトで紹介されていないものでも、CSVやPDF形式で出力できるビューコンポーネントもありますので、CPANサイトから検索してみてください。

Catalyst::View::TT

 Catalystのビューコンポーネントとしてもっとも多く紹介されており、そしておそらくもっとも多くのサイトで使われているのがCatalyst::View::TTです。このコンポーネント自体は非常に薄く、処理のほとんどはTemplate::Toolkitに依存しています。

 Catalyst::View::TTにはCatalystのビューコンポーネント以外に2つのヘルパクラスが用意されており、それぞれの用途により使い分けることができます。

 ヘルパクラスの実行は、scriptディレクトリ以下にある<myapp>_create.plスクリプトを使用します。

[リスト1]Catalyst::View::TTを使用するためのコマンド
$ <MyApp>/script/<myapp>_create.pl view 作成するビュークラス名 TT または TTSite

Catalyst::Helper::View::TT

 Catalyst::Helper::View::TTでは、簡単なHTMLを表示するためのクラスを作成します。このヘルパを使用してビューを作成するには、次のコマンドを実行します。

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

 このヘルパクラスにより作成されるファイルは次の2つです。

Catalyst::Helper::View::TTで作成されるファイル
クラス 説明
lib/<myApp>/View/TT.pm Catalyst::View::TTを継承したビュークラス
t/view_TT.t 作成されたビュークラスのテスト
設定パラメータ

 作成されたTT.pmでは、__PACKAGE__->configメソッドでいくつかの設定値を渡すことができます。デフォルトではTEMPLATE_EXTENSIONのみを指定しています。

 主要な設定パラメータには次のようなものがあります。

主要な設定パラメータ(1)
パラメータ名 デフォルト値 説明
INCLUDE_PATH "root"、"root/base" テンプレートファイルを探すパス
TEMPLATE_EXTENSION 無し テンプレートファイルの拡張子
CATALYST_VAR c テンプレートファイルで使用するCatalystのコンテキストオブジェクト名

 INCLUDE_PATHでは、テンプレートファイルを検索するためのディレクトリを指定します。

 TEMPLATE_EXTENSIONでは、コントローラのネームスペースとアクション名から自動的にテンプレートファイルを探し出すための拡張子を指定します。

 コントローラで明示的にテンプレートファイルを設定しない場合には、INCLUDE_PATHから、/<コントローラのネームスペース> /<アクション名>+TEMPLATE_EXTENSIONという規則に従って、テンプレートファイルを探しに行きます。

 CATALYST_VARは、テンプレートファイルからCatalystのコンテキストオブジェクトを参照するための名前を指定します。

 例えば、アクセスしてきたクライアントのUserAgentを取得するには、テンプレートファイルで次のように記述します(テンプレートファイルで使用可能なディレクティブについては後ほど説明します)。

[リスト3]テンプレートファイルでUserAgentを取得する
[% c.req.user_agent %]

次のページ
Catalyst::Helper::View::TTSite

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

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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー