Date:  Wed, 19 Apr 2006 19:34:06 +0900
Subject:  【オブジェクト倶楽部:2006-15号】
X-Mail-Count: 00142

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          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.