大規模サイト構築エンジニアが語る“Mojolicious”ココがイイ!
skill

大規模サイト構築エンジニアが語る“Mojolicious”ココがイイ!

2014.10.16

ent68_img01.jpg

フリーソフトウェアの中でも、Perlを使うギーク達が注目するリアルタイムWebアプリケーションフレームワーク「Mojolicious」。
Catalystの作者でもあるセバスチャン・リーデルの経験に基づき開発されていることから、アプリケーションがシンプルでも、複雑でも使える!点がポイント。そのメリットを、大規模なサイトを構築するエンジニアの視点からご報告。あなたも、より大きな世界でMojoliciousの活用にトライしたくなるかも!?(斉藤 淳郎

Perlを学んだ人たちがWebアプリケーションを構築するために用いてきたMVCフレームワークCatalyst。スタイルや機能が複雑化していく中で、より広範に使えるフレームワークを生み出すべく、Mojoプロジェクトが起動!更に、機能や開発に特化した、当初はサンプルとしてつくられたのがこのMojoliciousです。
2012年4月の発表以降、ほぼ月に1回以上の頻度でリニューアルされ続けており、いま最も新しく扱いやすいと言われるそのメリットをご紹介します。

■ Perlを使う人に優しい「最先端」

導入しやすいメリットとしては、チュートリアルの充実が挙げられるでしょう。英語はもとより日本語の解説、使用例が網羅された資料を比較的多くweb経由で入手できます。そして、ピュアPerlで実行できるため、標準モジュールのみでインストールできる上、動作も軽快!日本語ドキュメント・Perl入学式によるワークショップ等でPerlの学習障壁が低い今、Perl初心者でもMojoliciousへの抵抗は少ないのではないでしょうか。書き方の自由度も高く、Ruby on Railsなどと比較しても、フレームワークの構造にModelが存在しないなど、MVCアーキテクチャーの思想を継承しつつもシステム構築において自由度が高いのが特徴的。もちろん、Railsの用なガッチリした構造にする事もできます。この「両方できる」感じが、洗練されていると感じられるのでは?

■ Perlフレームワークの歴史から、より洗練されたレイヤーに

そう、Mojoliciousは、この「両方できる」感じ、つまり「薄すぎず、厚すぎず」が最もその性質を表しているかもしれません。まさに、ちょうどよいレイヤーなのです。「薄すぎず」というのは、例えば誰もが自分の思い描くアプリケーションが意図も簡単に作成できること。セッションやHTTPクライアント等ほとんどのウェブアプリに対応可能な機能が充実しています。他方、「厚すぎず」とは、例えばWebフレームワークで提供していない機能の場合などです。特定のコントローラーに対するJSONレンダラの挙動を変更したい場合などにハックする必要がある際、Mojoliciousのソースコードをトレースしていくことになります。この時、非常に捉えやすく、またハックしやすい設計になっている。つまり、顧客からの要望を素早くレスポンスすることが可能になるのです。
この2面性が、小さなアプリから大きなアプリまで対応できる機能性にも繋がっており、自分の勉強がてらシンプルなアプリを作る場合はRuby Sinatraに似た「Mojolicious Lite」がオススメ!一方で大規模が予想されるアプリにはディレクトリ構造がわかりやすい「Mojolicious」をと使い分けができます。フレームワークをCatalyst時代から試行錯誤してきた歴史が、結果的に「誰にも使える、両方できる」開発になっているのでしょうね。

■ デプロイメント選択肢も充実!

主なデプロイメント選択肢としては、下記のようなものが挙げられます。
? morbo - 開発用シングルプロセスサーバー。プロジェクト内ファイルの変更をトリガーとしたアプリ再起動機構。
? hypenotoad - 本番環境に最適化したプリフォークウェブサーバー。無停止アップグレードに対応。
? Apache/CGI - 旧来からあるCGIでも可能。
? PSGI/PLACK - PSGIに対応しているため、エコシステムなStarmanサーバーを利用も可能。
? Mojo::Server::Daemon - アプリケーション自身がウェブサーバーとなることも可能。

また、Mojolicious作者によるMojoliciousに調和したスピンオフモジュールも充実しています。
? Mango - Pure-Perl non-blocking I/O MongoDB driver
? Minion - Job queue system

■ 洗練されたテストフレームワークTDDで、柔軟な変更にも対応!

さらにテストドリブンデベロップメント(TDD)が非常にやりやすくできていることも、人気が高まっている要因のひとつ。HTTPレスポンス評価は専用ユーザーエージェントによって評価が可能です。例えば、TDDにおいて現在時刻を固定し、いつテストを走らせても同じ結果が返ってくる必要がありますが、Mojoliciousではウェブアプリケーションに手を加える必要がありません。テストコード内で現在時刻を生成するユーティリティをオーバーラップ、時刻を固定化し、専用ユーザーエージェントを使ってリクエストを発行すればレスポンス評価が出来てしまうのです。また、内部アクセスAPIは、通常どおり時刻固定化し個別に評価すれば出来ますね。この、まさに「ダブルスタンダード」で、製品の品質が向上し、TDDのメリットである柔軟なシステム変更に対応できるのです。

■ 二面性を活かしながら、より大きな開発にチャレンジ実現を!

二面性を持つMojoliciousならではの特徴、おわかりいただけましたでしょうか?開発やテストを統一的な環境で行えるメリットを生かし、試験的な導入から技術を蓄えていくことができれば、より大きな開発もチャレンジできるのでは?ここから、活躍の場が広がるGEEK達が増えていくといいですね!

原稿:斉藤 淳郎
フリーで活動するディレクター・ライター。キャリアカウンセラー等、二足の草鞋で活動中。

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW