Mojolicious::Liteでハローワールド

@nqounetです。

Mojolicious::Liteのサンプルシリーズ第1回は大変でした。

ファイル名がaから始まっていて目に止まったので書き始めたのですが、いきなりハードな解説になってしまったので、順序がおかしいですが第2回はハローワールドです。

サンプルコード全体

Mojoliciousのバージョンは5.75で確認しています。

ファイル名はなんでも良いですが、ひとまずmyapp.plと考えてください。

1
2
3
4
5
6
7
8
#!/usr/bin/env perl
use Mojolicious::Lite;

get '/' => sub {
    shift->render(text => q{ハローワールド!});
};

app->start;

解説

Line 1 - 2

1
2
#!/usr/bin/env perl
use Mojolicious::Lite;

いつものアレです。

use strict;などが無いので心配だと思いますが、大丈夫です。

慣れればuse Mojolicious::Lite;の背後に存在を感じるようになります。

Line 4 - 6

1
2
3
get '/' => sub {
    shift->render(text => q{ハローワールド!});
};

Mojolicious::Liteでは、URLごとに実行する処理を定義できるようになっています。

morbo myapp.plとして起動した場合、http://localhost:3000にアクセスすると、'/'で定義された処理が実行されます。

この部分がまさにその定義です。

get '/' => sub { ... };がどういう仕組みになっているかはわかりにくいと思いますが、(多少なりとも)見慣れた形に変えると以下のようになります。

1
get('/', sub { ... });

つまり、getという関数に、二つの引数(文字列とコードリファレンス)を渡しています。

最初の引数に定義されるURL(パス)を、二つ目の引数にそのURLにアクセスされた時に実行する処理を渡します。

コードリファレンスの中身は普通の関数と同じように書くことができます。

最初の引数として、Mojolicious::Controllerのオブジェクト(インスタンス)が渡されます。このインスタンスのことをコントローラーと表現します。

コントローラーは沢山のメソッドを持っていますが、代表的なメソッドの1つがrenderです。

この例では一度しか使用しないので直接shiftから使用していますが、通常は一旦変数に代入して利用します。多くの場合は$selfという変数に入れることが多いですが、最近ではコントローラーであることを明示的にするため$cという変数を使う事も多いです。

1
2
my $c = shift;
$c->render(text => q{ハローワールド!});

renderに渡している引数も、見慣れた感じで書き直すとrender('text', 'ハローワールド!')となります。

renderの使い方の1つとして、一つ目の引数にはレンダリングのタイプであるtextを渡すと、二つ目の引数の中身を出力する、という機能になります。

このようなことから、画面上には「ハローワールド!」と表示されるようになります。

Line 8

1
app->start;

Mojolicious::Liteを使う場合は、コードの最後にこの命令文を書かなければいけません。

コレより後に書けるのは、テンプレートかドキュメントだけです。

当面は「お約束」として覚えておけばよいでしょう。

多機能だけど必要なところだけ使えばOK

Mojoliciousを使うと、とても簡単にURLに対応する処理を書くことができます。

皆さんも美味しいところだけをうまく使ってサクッとウェブアプリを作ってみましょう。

2月28日(土)にPerl入学式の第6回としてウェブアプリを作成します。

大阪の講師は私が担当する予定です。

あなたの知らないPerlを一部お見せしますので、是非ご参加ください。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。