1. Perl
  2. Mojolicious

Webアプリケーションの雛形の作成

Mojoliciousでは最低限必要な雛形を自動的に生成してくれます。雛形の作成方法と作成されたWebアプリケーションの雛形について解説を行います。

Webアプリケーションの雛形の作成

Webアプリケーションの雛形を作成するにはmojo直下のディレクトリに移動して次のコマンドを実行します。アプケーション名は先頭が大文字でその後の文字は小文字にしておくのが良い習慣であると思われます。(「TestApp」のような名前はあまりよくなく、「Testapp」のような名前がよいと思います。)

# Windowsの場合
perl script\mojo generate app Webアプリケーション名

# Unix系OSの場合
perl script/mojo generate app Webアプリケーション名

ではSampleappという名前のWebアプリケーション名で雛形を作成してみましょう。

# Windowsの場合
perl script\mojolicious generate app Sampleapp

# Unix系OSの場合
perl script/mojolicious generate app Sampleapp

作成されたファイルの一覧が画面に出力されます。

  [mkdir] C:\Download\mojo\sampleapp\script
  [write] C:\Download\mojo\sampleapp\script\sampleapp
  [chmod] sampleapp/script/sampleapp 744
  [mkdir] C:\Download\mojo\sampleapp\lib
  [write] C:\Download\mojo\sampleapp\lib\Sampleapp.pm
  [mkdir] C:\Download\mojo\sampleapp\lib\Sampleapp
  [write] C:\Download\mojo\sampleapp\lib\Sampleapp\Example.pm
  [mkdir] C:\Download\mojo\sampleapp\t
  [write] C:\Download\mojo\sampleapp\t\basic.t
  [mkdir] C:\Download\mojo\sampleapp\log
  [mkdir] C:\Download\mojo\sampleapp\public
  [write] C:\Download\mojo\sampleapp\public\index.html
  [mkdir] C:\Download\mojo\sampleapp\templates
  [write] C:\Download\mojo\sampleapp\templates\not_found.html.ep
  [exist] C:\Download\mojo\sampleapp\templates
  [write] C:\Download\mojo\sampleapp\templates\exception.html.ep
  [mkdir] C:\Download\mojo\sampleapp\templates\layouts
  [write] C:\Download\mojo\sampleapp\templates\layouts\default.html.ep
  [mkdir] C:\Download\mojo\sampleapp\templates\example
  [write] C:\Download\mojo\sampleapp\templates\example\welcome.html.ep

作成された各ディレクトリの役割

「Sampleapp」という名前を指定した場合はmojo配下に「sampleapp」というディレクトリができます。sampleapp以下のファイルを編集してWebアプリケーションを作成してゆくことになります。全体の概要をつかむために各ディレクトリの役割を解説しておきます。

sampleapp -+
           |-lib       アプリケーションを格納する
           |-log       エラーや警告ログを格納する
           |-public    静的なファイル(HTML, CSS, JavaScript)を格納する
           |-script    HTTPサーバの起動スクリプトなどを格納する
           |-t         Webアプリケーションの試験を格納する
           |-templates HTMLのテンプレートを格納する

簡単にファイルの解説を行います。

lib - アプリケーションを格納するディレクトリ

libディレクトリはアプリケーションを格納します。アプリケーションというのはMojoliciousではPerlで書かれたモジュールのことです。ですので.pmファイルがlibディレクトリ以下に格納されることになります。

lib配下のファイルを図示するとデフォルトでは次のようになっています。

lib -+
     |- Sampleapp.pm
     |- Sampleapp/ -+
                    |- Example.pm

Sampleapp.pmはアプリケーション本体を表すクラスです。この中でアプリケーションに関する設定や、URLごとにおける処理の分岐などの記述を行います。

Sampleappディレクトリ以下にはコントローラになるクラスなどが配置されます。コントローラクラスとはURLに対応する処理を記述するクラスのことです。コントローラはURLに対応する処理を記述するものだと覚えておきましょう。(よくいわれるMVCのCにあたるものです)

log - エラーや警告ログを格納する

Mojoliciousのメッセージはlogディレクトリ以下のdevelopment.logというファイルに出力されます。何かエラーが出たときはこのログをみます。

public - 静的なファイル(HTML, CSS, JavaScript)を格納する

このディレクトリにはHTMLファイル、CSS、JavaScriptなどの静的なファイルを格納します。

script - HTTPサーバの起動スクリプトなどを格納する

script以下にはHTTPサーバを起動するスクリプトなどが配置されます。Mojoliciousでは試験などに便利なようにHTTPサーバが実装されています。このHTTPサーバを起動することによってApacheなどのHTTPサーバがなくてもWebアプリケーションを実行することができます。

t - Webアプリケーションの試験を格納する

t以下にはWebアプリケーションの試験を格納します。Webアプリケーションの試験は一般的には面倒ですが、MojolicousではTest::Mojoというテスティングフレームワークがあるので簡単にテストを行うことができます。

templates - HTMLのテンプレートを格納する

Mojoliciousには標準のテンプレートエンジンとしてMojo::Templateがあります。これはMVCのVに該当するものです。Mojo::Templateを使用すればリクエストに応じてHTMLを動的に生成することができます。Mojo::TemplateはHTML::TemplateやTemplate-Toolkitと異なりPerlの構文をテンプレートの中で利用できるのが特徴です。

Mojoliciousのテンプレートの拡張子は「.ep」になっています。templatesのディレクトリ構成をもう少しだけ詳しく見てみましょう。以下のようになっています。

templates + example -+
          |          |- welcome.html.ep - HTMLのボディ用のテンプレート
          |
          + layouts -+
          |          |- default.html.ep - HTMLヘッダ用のテンプレート
          |
          + exception.html.ep
          |
          + not_found.html.ep

layoutsというディレクトリがあることに注目してください。これは一般的にHTMLのヘッダ用のテンプレートとして利用されます。exsample/welcome.html.epというのは「Exsample」というコントローラの「welcome」というアクションに対応するテンプレートになります。アクションについては後ほど解説します。

exceptions.html.epというのは例外用のテンプレートです。Mojoliciousではこのテンプレートを使用してエラーメッセージが画面にわかりやすく表示されるので開発がとても行いやすいです。not_found.html.epはページが見つからなかった場合に利用されるテンプレートです。

業務に役立つPerl

Perlテキスト処理のエッセンス

PerlでポータブルなLinuxファイル管理入門

ITエンジニアの求人情報など

 ITエンジニアの求人情報・Webサービス・ソフトウェア・スクールなどの情報。

システム開発のお問い合わせ