┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
┃ ■┃
●┃● ● オ ブ ジ ェ ク ト 倶 楽 部 ■ ┃
┃ ■ ┃
┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
No.136 2006/04/19
■ I N D E X
┃
┣【プログラミング】Pythonの最新Webアプリフレームワーク TurboGearsの紹介
┣【プログラミング】Rubyで進むオブジェクトの道 〜脱初心者をめざして〜[14]
┗【アンケート】気になるシステム業界 ホントのところ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【プログラミング】Pythonの最新Webアプリフレームワーク TurboGearsの紹介
こんにちは、オブジェクト倶楽部のヘビ使い、やっとむです。
Rubyマニアがゴロゴロいるオブジェクト倶楽部の中にあって、
貴重で奇特なPython派がこのわたしだ!あ、awkも好き♪
■□ TurboGears - Pythonの新しいWAF ■□
Python好きなやっとむは、みんながRubyだ!Rails!Rails!騒ぐのを、指を
くわえてうらやまし、もとい、冷静に横目で見てたわけですが、Pythonにはコ
レがある!ということでTurboGearsをさわってみました。
TurboGears[*1]は、Pythonで実装されているWebアプリケーションフレーム
ワーク(=WAF)です。これだけで何でもできちゃう「メガフレームワーク」を
謳っています。去年の9月に公開されたばかりで、Railsに影響されているんだ
と思うのですが、とにかくすばやく、簡単にWebアプリケーションが作れてし
まいます。ウリ文句は「20分でWikiが作れる!」[*2]です。それならやっとむ
にもできそうじゃん!
■□ 見てみるか、さわってみるか ■□
なにはともあれ見てみるのが、一番わかりやすいということで。20分Wikiの
動画(QuickTime)はこちらです。
http://www.turbogears.org/docs/wiki20/20MinuteWiki.mov
見るだけじゃ満足できない、さわってみたい!というアグレッシブな御仁も
おいでですね?そうそう、あなたよあなた。簡単にセットアップ手順だけ説明
しておきましょう。必要なものは
Python2.4 [*3]
pysqlite2.2 [*4]
だけです(Windowsの場合。LinuxやMacの場合は、各インストール手順を参照し
てください[*2][*5])。そのうえで、TurboGears(安定版は0.8.9)をインストー
ルしましょう。まず下記のURLからez_setup.pyをダウンロードします。
http://www.turbogears.org/download/ez_setup.py
そのうえで、コマンドラインから、以下のように実行します。
ez_setup.py -f http://www.turbogears.org/download/index.html TurboGears
以上でセットアップは完了です。詳しくは、インストール手順を参考にして
ください。[*5] ここからはチュートリアルを見ながら、試してみるだけです。
[*2][*6] あっ英語!とか言って引かないでくださいねっ。
■□ 素人っぽいご紹介 ■□
わたしがTurboGearsをさわってみて最初に感動したのは、「Pythonでクラス
を作るとRDBのテーブルができて、オブジェクトを作るとその場でレコードがで
きる」というところでした。(はい、やっとむモデル好きなんです。)
これはSQLObjectというO/Rマッパーの機能なのですが、Pythonの特徴である
「インタラクティブ・シェルでちょこちょこコードを書いて試してみる」とい
うやり方で、そのままRDBまでいじれてしまうわけですね。SQLよさらば、コン
ニチハPython!(極論すぎ)
TurboGearsは他にも、いろいろな既存ライブラリをうまく組み合わせて、豊
富な機能と独特の味を実現しています。
JavaScriptライブラリ。Ajaxやりたいんでしょ?
- PythonicなMochiKitで、JavaScriptをよりよいものに。[*7]
テンプレートエンジン。XMLも得意だが、ベタ埋め込みもいけちゃう。
- ZPT(Zope Template Engine)似の、Kid。
WebとオブジェクトのマッピングをするMVCフレームワーク
- オブジェクトツリーがURLになっちゃう、CherryPy。
PythonモデルがRDBに簡単に落とせる
- でも既存テーブル → モデルだって対応、SQLObject。
さらに0.9では、データメンテのCRUDアプリであるCatWalkやら、ER図で設計
できるモデルデザイナやら、ユーザー認証と権限管理のIdentity Management
やらも追加されていて、すごい盛りだくさん化してるっぽい。
TurboGears、日本コミュニティ発足に向けてのグループ[*8]ができたり、
0.9アルファが矢継ぎ早に出たり[*9]と、コミュニティも熱いです。つい先日
のPython Workshop Edge 2006[*10]でも紹介されたりして(リンク先にプレゼ
ン資料もあります)、やっとむもこれは買いだ!成り行きで全部買いだ!と興
奮気味であります。いや、やっとむはどうでもいいんだけど。
開発中にコンパイルエラー起こすとサーバーごとポトッと落ちちゃう、お茶
目なところもあるTurboGearsですが(すぐ再起動できるので別に問題Nothing!)
みなさんもちょいと味わってみては如何? (やっとむ)
[1] http://www.turbogears.org/
[2] 20 Minute Wiki Tutorial http://www.turbogears.org/docs/wiki20/
[3] http://www.python.org/download/releases/2.4.3/
TurboGears0.9ではPython2.3もサポートしている。
[4] 軽量RDB、sqliteのPythonインターフェース。
http://initd.org/tracker/pysqlite
sqliteはこちら。
http://www.sqlite.org/
[5] http://www.turbogears.org/download/index.html
[6] そのままだと日本語の扱いで問題が起きることがあります。
http://blog.drecom.jp/gakkun/archive/118 に対策があるようです。
PythonにJapaneseCodecsも必要かもしれません。
http://www.python.jp/Zope/download/JapaneseCodecs
[7] キャッチフレーズが "MochiKit makes JavaScript suck less" です。
(MochiKitはJavaScriptをそんなにひどくなくします、くらいの意味?)
http://mochikit.com/
[8] http://groups.google.com/group/turbogears-ja
[9] 0.9a2が出て8日で0.9a3が、さらにその翌日に0.9a4(4/17時点最新)が出
ています。
[10] http://www.python.jp/Zope/workshop/200604
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E007-0&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E007-0&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E007-0&choice=2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【プログラミング】Rubyで進むオブジェクトの道 〜脱初心者をめざして〜[14]
●Ruby外ニュース
『入門 Haskell』[*1]が発売されています。
普通の言語を学習するのに飽きた人はぜひどうぞ。
●今日のお題
ERBを使って、テキスト出力を行ってみます。
ERBはテキスト作成のためのテンプレートエンジンです。
JavaでいうところのVelocity、JSPのようなものと書けば
わかりやすいでしょうか。
Rails本[*2]では、Viewの作成にERBが利用されています。
Ruby 1.8系であればERBは標準でついてきます。
早速サンプルプログラムを書いてみます。
●サンプルプログラム
require 'erb'
def src
<<EOS
<% persons.each do | person | -%>
<%= person.name %>, <%= person.age %>
<% end -%>
EOS
end
person = Struct.new("Person", :name, :age)
persons = []
persons << person.new("yama", 20)
persons << person.new("kawa", 30)
persons << person.new("tani", 40)
trim_mode = '-'
safe_level = $SAFE
ERB.new(src, safe_level, trim_mode).run
●実行結果
>>ruby erb.rb
yama, 20
kawa, 30
tani, 40
●プログラムの説明
def src
…
end
で囲まれた箇所がテンプレートのテキストに当たります。
<<EOS
…
EOS
とヒアドキュメントを使っています。
<% … %>で囲まれた箇所はRubyのプログラムとして解釈されます。
例では、
<% persons.each do | person | -%>
…
<% end -%>
が、該当します。 「-」は後述するtrim_modeで利用されます。
<%= … %>で評価した結果をテキストに埋め込みます。
ERB.new(src, safe_level, trim_mode).run
で印字処理を実行しています。
3番目の引数は改行などを制御するためのtrim_modeです。
デフォルトのtrim_modeでは余分な空行が入ってしまったのでtrim_modeを「-」
にしています。
trim_mode「-」に変更することで「-%>」では改行しないように設定していま
す。詳細設定は[3]をご覧ください。
●まとめ
ERBを紹介しました。ERB-Rubyだとテンプレートエンジンがあっさり使えます。
テンプレートテキスト内でRubyのプログラムが使われており、特別な式言語を
覚えなくてもOKです。
ERBはRubyでコードジェネレーションする場合に欠かせない要素になっていま
す。(例えば、ユーザインタフェースのhtml,データアクセスのJava,
UnitTestsのテストデータを自動生成する際にERBが便利です。) (IENAGA)
●参考
[1]入門Haskell 向井 淳
http://amazon.co.jp/o/ASIN/4839919623/xpjp-22
[2]RailsによるアジャイルWebアプリケーション開発
http://amazon.co.jp/o/ASIN/4274066401/xpjp-22
[3]Rubyリファレンスマニュアル - erb
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=erb
その他
dRubyによる分散・Webプログラミング
http://amazon.co.jp/o/ASIN/4274066096/xpjp-22
筆者が初めてERBを学んだのはこの本でした。
Code Generation in Action
http://amazon.co.jp/o/ASIN/1930110979/xpjp-22
若干古いがRubyの隠れた名著。RubyでCode Generationを行っています。
Amazonでの値段がお手ごろに戻ったので最近購入。写経します。
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-13&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-13&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E006-13&choice=2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ
今週は「ふりかえり、やっていますか?」のホントのところ。
最近、にわかに「ふりかえり」がブームになっているとは思いませんか?もし
かしたら、オブLOVEの周辺だけかもしれませんが・・・
そこで、みなさんの職場でのふりかえりの導入状況を教えてください。
「ふりかえり」ってなんですか?
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=0
ふりかえりをしたいのですが、まだしていません。
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=1
ふりかえりをしたことはありますが、今はしていません。
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=2
思い出した時に、ふりかえりをすることがあります。
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=3
1ヶ月に1回はしています。
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=4
2週間に1回しています。
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=5
1週間に1回しています。
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=6
それは秘密です。
http://www.ObjectClub.jp/special/kininaru/vote?vol=102&choice=7
ちょっと語らせて!
editors@ObjectClub.jp まで詳細を!!
アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「オフィスに今、一番ほしいものは?」の結果は公開中。ぜ ひご
覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol101/PlonePopoll_results2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記
こんにちは、編集人です。花粉症の私にとっては、今年はなんとも過ごしやす
い春です。あまり花粉が飛んでいないようです。春というと近年は憂鬱に感じ
ていたのですが、やはり気分がいいものなんですね。気分を変えようと思って
も気分は変わりませんが、環境が変われば気分は変わるもんなんですね。
今週の強引な一言
*** 急いてはことを仕損じる(ことわざ) ***
Railsだ、Ajaxだと雨後の竹の子のように新しい技術が登場しています。覚える
ことがたくさんあって、困っている人も多いのではないでしょうか。でも、こ
れらの技術は、これまで技術の上に立脚しています。新技術ばかりではなく、
今一度足元をしっかりと固めてみてはいかがでしょうか。
(天野勝)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://www.ObjectClub.jp/community/object_ml/help/
〇 免責事項、過去の記事は ⇒http://www.ObjectClub.jp/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋 健児
Copyright (c)2003-2006 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.