Mojolicious Perl Webフレームワーク入門
Perlの代表的フレームワークMojoliciousを使ったWeb開発の入門です。MojoliciousのインストールとMojolliciousを使ったWebアプリケーション作成の基礎を解説します。
use Mojolicious::Lite; get '/' => {text => 'Hello World!'}; app->start;
WindowsでもLinuxでもどんな環境でも動きますよ。「CGIで嫌な思いをしたなー」そう思っている方、今なら「Mojolicious」があります。
1. Mojoliciousの特徴
「Mojoliciousって小さなWebサイトくらいしか作れないのかな」そんな疑問があると思います。実際は、Mojoliciousは、小さなWebサイトから初めて、どんどん成長させていくことができます。
Mojoliciousは
- Webサイトを簡単にすばやく作成できる
- Webサイト作成に必要な機能の一式を提供
- 大規模なWebアプリケーション開発にも対応
という特徴を持っています。
Mojoliciousでは「Webサイト作成に必要な一式の機能」が提供されています。
- テンプレート、パラメーターの取得、フォーム処理、URL作成
- セッション、クッキー、WebSocket、非同期I/O、認証
- SSL、JSON、Webサーバー
「テンプレート機能」を使って、すばやくHTMLが書けます。「パラメーター」も簡単に取得で、「セッション」もデフォルトでサポートされています。「非同期I/O」に対応しているので、サービス開始後に高負荷になっても、対応できます。
作りたいWebサービスはありますか。効率的で保守性の高いWebアプリを作成するなら、Mojoliciousがぴったりです。
2. Mojolicious入門
ではさっそくMojoliciousのインストールから初めてみましょう。その後、実際にMojoliciousを動かしてみます。
2.1 Mojoliciousのインストール
Mojoliciousをインストールする手順を解説します。
2.2 Mojoliciousで「Hello World」と表示してみよう
一番簡単なHello WorldアプリケーションをMojoliciousで作ってみましょう。
use Mojolicious::Lite; get '/' => sub { my $self = shift; $self->render(text => 'Hello World'); }; app->start;
記述の説明や実行の仕方は一番小さなWebアプリケーションをご覧ください。
Mojolicious入門では「HTML」や「CSS」の知識は持っている前提で記事を書きます。もし最低限の「HTML」や「CSS」をまだ知らないという方は HTMLの基礎とCSSの基礎を参考にしてください。
2.3 インターネット上での公開
「Webサイトを作成したらすぐに公開したい!」こう考えてうずうずしますね。
もっとも簡単な方法として「さくらのレンタルサーバー・スタンダード」を使って、アプリケーションが公開できます。さっそく公開してみたいという方は、さくらのレンタルサーバー・スタンダードでアプリを公開するをご覧ください。まだ、公開せずに、先に進めたいという方は、後で読んでもよいです。
インターネットで自分が作成したサイトが動く喜びは格別です。ぜひチャレンジしてみてくださいね!
Webアプリケーションの基礎
Mojoliciousを使ったWebアプリケーションの基礎を解説します。
- パラメーターの受け取り方
- テンプレートの基礎
- アプリケーションとコントローラーの機能
- ルーティングの基礎
- テンプレートヘルパー
- フォームの利用
- 日本語の扱い
- データベースの基礎
- データベースとプログラムの連携
インストール
- Mojoliciousのインストール - Windows, Mac OS X, Unix/LinuxでのMojoliciousのインストール
- Hello World!アプリケーション
ひな型の作成
ルート(Route)
コントローラー
- パラメーターの値を取得する
- パラメーターをハッシュリファレンスに変換する
- HTTPメソッドを取得する
- HTTPヘッダを取得する
- スタッシュのデフォルト値の設定
- 署名つきクッキーのためのパスフレーズを設定する
- 複数のコントローラーで共通に必要な値を渡す
テンプレートやJSONの描画
文字コード
ファイルアップロード
ユーティリティ
タグヘルパー
セッション
URL
プラグイン
Mojoliciousのプラグインの使い方とモジュールの紹介です。
- プラグインの名前空間を追加する
- Mojolicious::Plugin::AutoRoute - ルートを自動的に生成するためのMojoliciousプラグイン
- Mojolicious::Plugin::SQLiteViewerLite - SQLiteのテーブル情報をブラウザから見るためのプラグイン
- Mojolicious::Plugin::MySQLViewerLite - MySQLのテーブル情報をブラウザから見るためのプラグイン
試験
デプロイ
- morbo - Mojoliciousの開発サーバー
- PSGIアプリをStarmanでデプロイする
- プロキシサーバ経由で接続する場合のURLの問題を解決する
- Apacheのmod_proxyを使った場合に"Service Temporarily Unavailable"エラーが出る場合の対処法
- hypnotoadコマンド
- hypnotoadが立ち上がらないときのチェック方法
- Test::Mojoで実行できない試験を行う
- Mojoliciousをサブディレクトリで運用する
- hypnotoadが正しく起動しているかどうかの確認
- rootユーザーからMojoliciousアプリケーションを管理する方法
- 特定のユーザー権限(あるいはグループ権限)でhypnotoadを実行する
- rootユーザーでいるときに、一般ユーザーにスイッチしてコマンドを実行する方法
SSLとの連携
Webスクレイピング
パフォーマンス
hypnotoadプリフォークサーバー
ノンブロッキングIO
その他
- Mojoliciousのテンプレートで関数のインポートには危険が潜む
- 便利なAPI
- Mojolicious::LiteからMojoliciousに移行する場合に考えておきたいこと
- MojoliciousとAnyEventを同時に利用する
リリース情報
さくらのレンタルサーバ
さくらのレンタルサーバーでMojoliciousを使うために役立つ記事。
- Windows上でMojoliciousの開発を始めて、さくらのレンタルサーバーで公開するまでの手順
- MojoliciousでCSSなどの静的ファイルを利用する
- さくらのレンタルサーバーで「505 Internal Server」エラーが発生する場合の対処方法
- さくらのレンタルサーバーライトプランでCPANモジュールをインストールするスクリプト
Mojoliciousサンプル
Mojoliciousを使ったサンプルを紹介しています。
- ひとことメッセージ掲示板 - かんたんな掲示板
- 画像掲示板 - かんたんな画像掲示板
- 検索アプリケーション - 簡単な検索アプリケーション
- 簡単なリアルタイム時計 - WebSocketを使ったリアルタイム時計
- 簡単なリアルタイムチャット - WebSocketを使ったリアルタイムチャット
- Portable BBS - ポータブルなWebアプリを作成するためのサンプル
- Gitweb Lite - Gitリポジトリビュアー。gitweb.cgiのMojoliciousへの移植。
Mojoliciousドキュメント
Mojoliciousの公式ドキュメントです。このドキュメントにはMojoliciousのすべての機能が記載されています。わからないときは、ここをいつでも参考にしましょう。
Mojolicious関連講座
Mojolicious関連講座です。
Web開発環境構築
Mojoliciousを本番環境で動かすためのUbuntu上でのWeb開発環境構築のサイトです。
Webアプリ開発
PerlとMojoliciousでWebアプリを開発する方法を解説。
Mojoliciousの質問
仲間と交流をしたり、Mojoliciousの質問ができる会員限定のPerlクラブ・フォーラムがあります。Twitterのリプライ・ダイレクトメッセージ、Youtubeのコメント欄も利用できます。