TurboGearsってなに?
TurboGearsはオブジェクト指向スクリプト言語Python製のWebアプリケーションフレームワークです(図1 ) 。軽量言語(Lightweight Language)を使ったLLフレームワークの中でも有名なのがRubyで書かれたRuby on Railsですが、ちょっと乱暴に言えば「TurboGearsはPython版のRuby on Railsである」と表現できるかもしれません。
Pythonは、欧米を中心にとても人気のあるスクリプト言語です。覚えやすく、使いやすいと定評があり、GoogleやYahoo!、マイクロソフトなどもPythonを活用し、注目しているほどです。
図1
ノリのよい開発スタイル
TruboGearsの大きな特長は、開発を始めるまでの手順が少ないということです。インストールはとても簡単で、必要なモジュールを含めてほぼ自動的に終わります。WindowsやLinuxなど、開発を行う環境を問わず、インストール後すぐに開発を始めることができます。ノリ良く開発ができることを念頭に置いて作られているのです。
HTMLを書かなくても簡単にフォームを作れるWidget(ウィジェット=Pythonのクラス)を持っており、Ajax的な機能をとても手軽に利用できます。MochikitというJavaScriptのライブラリを同梱しており、よりリッチな処理を実現できます。
CGI vs LLフレームワーク
TurboGearsのようなWebアプリケーションフレームワークは便利だと言われますが、使い方を学ぶ時間をかけてまで使う価値が本当にあるのでしょうか? そこで、簡単なWeb掲示板を作ることを考えてみましょう。掲示板では投稿内容をどこかに保存しておき、必要に応じて取り出す必要があります。データの保存にはデータベースを使います。
CGIでWeb掲示板を作るためには、図2 のような工程をたどります。Pythonは開発効率の高いスクリプト言語ですが、それでもなおデータベースとの連携を行うためにSQL文字列を組み立てたり、Webブラウザで表示するHTML文字列を生成したりといった煩雑な処理を、ほとんど自前で行わなければなりません。
図2
事前準備
データを保存するためのテーブルを設計する
データベース上にテーブルを作る
データベース接続モジュールを選ぶ
プログラム内部(投稿の表示部分)
SQLを文字列として組み立てる
PythonからSQLを発行し、表示に必要なデータを得る
データベースから得たデータを元にHTMLを文字列として整形する
WebサーバにHTMLを出力する
プログラム内部(投稿をデータベースに登録する部分)
Webブラウザからの入力を解析して分割する
解析した入力結果を元に、SQLを文字列として組み立てる
SQLを発行し、データベースにデータを登録する
投稿が完了した結果をHTMLの文字列として整形する
WebサーバにHTMLを出力する
Webアプリ開発の負担の多くを軽減
これに対して、TurboGearsを使った場合は図3 のようになります。利点を端的に表現すると「MVCモデルとして利用する部品(モジュール)と連携方法が提供されている」ということになるでしょう。主に文字列操作に関わる泥臭い処理をしなくて済みます。
Webブラウザからの入力はコントローラが自動的に解析し、関数(メソッド)の引数として渡してくれます。SQLやHTMLに相当する文字列組み立ても、モデルやビューが処理してくれます。Webアプリを作成する上で行う、典型的な作業の多くを軽減できるわけです。
図3
事前準備
データを保存するためのモデルクラスを設計する
コマンドラインツールを使ってプロジェクトとテーブルを作る
プログラム内部(投稿の表示部分)
モデルを使ってデータベースから必要なデータを得る
投稿を表示するテンプレートを作る
データベースから得た結果をテンプレートに渡し、HTMLとして出力する
プログラム内部(投稿をデータベースに登録する部分)
Webブラウザからのデータを関数の引数として受け取る
モデルを使ってデータを登録する
投稿結果を表示するテンプレートを作る
テンプレートをWebサーバに出力する
速さと信頼性を兼ね備えたTurboGears
作者であるKevin氏は、TurbgoGearsのことをメガフレームワークと呼んでいます。MVCの部品を自前で作るのではなく、実績と定評のある部品をうまく取り込み、連携を強めて活用しているためにそのように呼ばれているようです。TurboGearsが部品として利用しているモジュールには図4 のようなものがあります。どれも信頼性が高く、利用しやすいモジュールです。
TurboGearsは生まれて間もないフレームワークですが、実績のある部品を使っているためもあってか、欧米を中心に多くの開発者の注目を集めているのです。MVCそれぞれを受け持つモジュールの他にも、TurboGearsにはWebアプリケーションの開発を支援する便利なツールがたくさん用意されてます。いかがでしょう、あなたもTurboGearsでいままでにないアプリ開発のスピード感を体験してみませんか?
図4