gihyo.jp » DEVELOPER STAGE » 特集 » Mojoを使って自作ウェブアプリをよりポータブルに! » 第1回 はじめてのMojo

Mojoを使って自作ウェブアプリをよりポータブルに!

第1回 はじめてのMojo

2009年12月8日:サンプルコードを現在のバージョンで動作するよう修正しました。

mod_perlの教訓

一昔前まで,Perlである程度大規模なウェブアプリケーションを書くときはmod_perlと呼ばれるApacheモジュールを利用するのが一般的でした。

ところが,Apache,mod_perlともに大規模な改修が行われ,後方互換性が失われた結果,古いmod_perlのアプリケーションを抱えている企業は,リスクや不便を覚悟で古いApacheを使い続けるか,Apache,mod_perlともに新しい環境に移行するか,あるいはまったく異なる第三の道を模索するかの選択を迫られることになりました。

同じようなことは,もっと小規模なアプリケーションでも起こりえます。たとえば,昔ながらのCGI環境で実行していたものをもっと高速な環境に移行したくなったとき。たしかにmod_perlにはApache::PerlRunと呼ばれる互換モードもありますが,これまではアプリケーションそのものを書き直すのが常でした。

サーバをとるか,フレームワークをとるか

もちろんよくできたフレームワークを使えば,このような差違は吸収できます。

たとえば海外でよく利用されているHTML::Masonは,1998年の登場時点ですでにmod_perlとCGI環境の双方に対応していましたし,mod_perlの書き直しが始まった2002年にはCVS上の開発版を利用して将来の変化に備えていました。

ただし,これはあくまでもHTML::Mason内部での対応にすぎません。HTML::MasonはPHPなどと同じくテンプレート内部にコードを埋め込むタイプのテンプレートエンジンを採用していますから,異なるテンプレートエンジンを利用していた企業にとっては,サーバ環境の移行に引けをとらないコストがかかってしまいます。「Apache2やめますか,Template-Toolkitやめますか」という選択は健全とはいえません。

Mojoはサーバとフレームワークをつなぐミドルウェア

Mojoは,そのような問題を解決するために生まれました。その歴史については連載の第4回でまたあらためて説明しますが,ここでは自社のアプリケーションないしフレームワークをMojoの規約に対応させれば,CGIやFastCGI,mod_perlといった環境にシームレスに対応できるようになる――だけでなく,開発用のスタンドアロンサーバなどもついてくる――ということを覚えておいていただければ結構です。

「規約に対応させる」というと,なにか大変な作業が必要になるような印象を受けるかもしれませんが,Mojoが取り扱うのはあくまでアプリケーション本体とサーバをつなぐ部分のみ。だから,基本的には,サーバから送られてくるクエリストリングやフォームデータの解析とヘッダやボディをサーバに送り返す処理を,アプリケーションの内部ではなく,Mojoにさせるように書き換えるだけのことです。

と,いくら言葉で説明してもわかりづらいと思いますので,まずは実際にMojoをインストールして,簡単なアプリケーションを作成してみましょう。

インストールはとても簡単

Perlのモジュールというと,インストールが大変という印象があるかもしれません。

言葉で書けばシェルから「cpan <モジュール名>」するだけなのですが,なかには芋づる式に何十個ものモジュールがインストールされたり,C言語の開発環境が必須というものがあったりで,最近の有名で高性能なモジュールになればなるほど,ある程度融通が利く環境にしか入れられないようになっています。

でも,アプリケーションをサーバ環境の制約から解放するのが目的のミドルウェアとしては,そのような取り扱いのむずかしさは害でしかありません。

だから,Mojoは,その思想的な祖先であるWSGI(Web Server Gateway Interface)(※1)の理念にしたがって,不要な依存関係はいっさい省き,なるべく簡単にインストールできるようにつくられています。

2009年1月の時点では,テストにしか使わないものを含めてちょうど20個の依存モジュールが列挙されていますが,そのすべてがPerl 5.8.8(2006年1月リリース)以降標準添付されているもの。本体だけであれば2002年7月リリースのPerl 5.8.0でも問題なく動作します。

※1
http://www.python.org/dev/peps/pep-0333/

githubからのインストール

いつものようにCPANからインストールしてもそれほどの手間にはならないのですが,ここでは将来的にアプリケーションを別の環境に移動するときの便を考えて,githubから開発版をダウンロードしてくることにしましょう。

Mojoの最新版は常に下記のサイトにあります。

手元にgitの環境がある方はgit cloneするのが楽ですが,[download]ボタンをクリックすると圧縮ファイルをダウンロードできますので,ない方はそちらを利用して適当なディレクトリに解凍しておいてください。安定版を使いたい方はgithubのかわりにsearch.cpan.orgから圧縮ファイルを落としてくるとよいでしょう。

著者プロフィール

石垣憲一(いしがきけんいち)

あるときは翻訳家。あるときはPerlプログラマ。先日『カクテルホントのうんちく話』(柴田書店)を上梓。最新刊は『ガリア戦記』(平凡社ライブラリー)。

URLhttp://d.hatena.ne.jp/charsbar/

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

はじめMath! Javaでコンピュータ数学

プログラミング言語入門者向けに,知っていると役立つ数学的トピックスを紹介します。簡単な演習問題と解説で,即活用できる知識を目指します。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

教科書には載っていない ネットワークエンジニアの実践技術

ネットワークエンジニア,インフラエンジニアのトラブル対応には,時には「教科書通りにいかない」テクニックが必要となります。資格試験では得られないこうした実践的な技術について,実例を元に紹介します。

Googleケータイ,世に現る

2008年9月,Googleが中心となって開発されている「Android」を採用した携帯電話「T-Mobile G1」が発表されました。本連載ではT-Mobile G1を中心にGoogleケータイに迫ります。

モバゲーオープンプラットフォームに挑戦!――面白法人カヤック流モバゲーオープンプラットフォーム企画と開発のイロハ

2010年1月にリリースとなったモバゲーオープンプラットフォーム。その制作企業であるカヤックが,アイデアを企画に落とし込み,開発までのノウハウを紹介します。

プロトタイピングツールSketchFlowを用いた,Silverlightアプリ開発

SketchFlowプロトタイプ作成からアプリケーション開発までをExpression Blend 3を使って実践的に解説します。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

玩式草子─ソフトウェアとたわむれる日々

Plamo Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント