Date:  Wed, 30 Aug 2006 16:07:03 +0900
Subject:  【オブジェクト倶楽部: 2006-32号】
X-Mail-Count: 00159

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.153 2006/8/30

■ I N D E X
┃
┣【プログラミング】TurboGearsでPythonを始めてみよう![4]
┣【PF】たまには仕事に役立つコミュニケーションのヒント[2]
┗【アンケート】気になるシステム業界 ホントのところ

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【プログラミング】TurboGearsでPythonを始めてみよう![4]

こんにちは、オブジェクト倶楽部の化け猫、やっとむです。
化け猫ってえと、行灯の油をちろりちろりと嘗めたりしますね。
おのれ化け物!と思ったら、ただのカロリー過多だったりして。

前回、もう1ヶ月も前になっていまいましたが、TurboGearsというPythonicな
Webアプリケーションフレームワークでごく簡単なページを作ってみました。今
回はその続きで、TurboGearsのO/RマッパーであるSQLObjectを紹介します。前
回の最後に「次回はコントローラ」とかって書いたのはきっと誰も憶えてない
ハズなので問題ございません。

■□ SQLObjectで楽々データベースアクセス ■□

SQLObject[*1]は名前とは違い、SQLを書かずにオブジェクトとテーブルをマッ
ピングしてくれるO/Rマッパーです。以下のようなPythonクラスを書くと、

from sqlobject import *
class Sashimi(SQLObject):
    sozai = UnicodeCol(alternateID=True,
            alternateMethodName='by_sozai')
    sashimi_name = UnicodeCol(notNone=True)
    tanka = IntCol(default=100)

次のようなテーブルができます。

CREATE TABLE sashimi (
    id INTEGER PRIMARY KEY,
    sozai TEXT NOT NULL UNIQUE,
    sashimi_name TEXT NOT NULL,
    tanka INT
)

次のように書いてクラスのインスタンスを作ると、同時にデータベース上にデー
タが作成されます。

 >>> Sashimi(sozai=u'馬', sashimi_name=u'馬刺し', tanka=1200)
 >>> Sashimi(sozai=u'カツオ', sashimi_name=u'タタキ', tanka=1000)

idがプライマリキー(サロゲートキー)として自動で採番されます。
idを指定して直接データベースからデータを読んで、インスタンスを取得でき
ます。

 >>> s=Sashimi.get(1)
 >>> print s.id, s.sozai, s.sashimi_name, s.tanka
 1 馬 馬刺し 1200

更新は、取得したインスタンスの値を変更するだけです。

 >>> s.tanka=1280

クラスのselect()メソッドで検索ができます。すべて取得することも、

 >>> result=Sashimi.select()
 >>> for s in result: print s.id, s.sozai, s.sashimi_name, s.tanka
 ...
 1 馬 馬刺し 1280
 2 カツオ タタキ 1000

条件指定も、並び替えもできます。

 >>> result=Sashimi.select(Sashimi.q.tanka>1100)
 >>> for s in result: print s.id, s.sozai, s.sashimi_name, s.tanka
 ...
 1 馬 馬刺し 1280

 >>> result=Sashimi.select(AND(Sashimi.q.tanka>=1000,
 ...                           Sashimi.q.tanka<1100))
 >>> for s in result: print s.id, s.sozai, s.sashimi_name, s.tanka
 ...
 2 カツオ タタキ 1000

 >>> result=Sashimi.select(orderBy=Sashimi.q.tanka)
 >>> for s in result: print s.id, s.sozai, s.sashimi_name, s.tanka
 ...
 2 カツオ タタキ 1000
 1 馬 馬刺し 1200

 >>> result=Sashimi.select(orderBy=Sashimi.q.tanka).reversed()
 >>> for s in result: print s.id, s.sozai, s.sashimi_name, s.tanka
 ...
 1 馬 馬刺し 1200
 2 カツオ タタキ 1000

■□ リレーションの表現 ■□

インスタンスどうしの関係は、テーブルのリレーションになります。

class Book(SQLObject):
    title=UnicodeCol()
    author=ForeignKey('Author')

class Author(SQLObject):
    name=UnicodeCol()
    birthday=DateCol()
    books = MultipleJoin('Book')

データを作るときはインスタンスの参照を渡します。

 >>> tolkien=Author(name='J.R.R.Tolkien', birthday='1892-01-03')
 >>> lotr=Book(title='The Lord of the Rings', author=tolkien)
 >>> hobbit=Book(title='The Hobbit', author=tolkien)

データ属性をアクセスすると、データベース上でリレーションのあるデータを
取得できます。1対多になっている部分はリストで取得されます。

 >>> lotr.author
 <Author 1 name=u'J.R.R.Tolkien' birthday='datetime.date(189...)'>
 >>> tolkien.books
 [<Book 1 title="u'The Lord of the...'" authorID=1>, <Book 2 title=u'The Hobbit' authorID=1>]

■□ おわりに ■□

他にもSQLObjectには、以下のような機能があります。
・クラスの継承を自動的にテーブルで実現する。
・sqlite、MySql、PostgreSQLなどを、コードの変更なしで対応できる。
・トランザクションに対応している。
・キャッシングとlazy loading

SQLObjectのドキュメントの日本語訳は、こちら[*2]にあります。日本でのPython
関連ドキュメント翻訳の活動はすばらしいですね。本家のドキュメントはこち
ら[*3]です。
SQLObjectを使うと、Pythonのクラスの操作をするだけでデータベースがアクセ
スできてしまうので、とても幸せなプログラムが書けます。おかげでTurboGears
でデータベースを利用するのは簡単です。

今回はSQLObjectについてざっと紹介しました。世の中にデータベースをアクセ
スするAPIはピラミッドが建てられるくらいいっぱいありますが、SQLObjectは
その中でもけっこう上のほうにあると思います。ぜひいちど試してみてくださ
い。今回は、小学校の夏休みももうすぐ終わりということもあるので、宿題は
ありません。次回は、さてなににしようかしら。(やっとむ)

[*1]: http://www.sqlobject.org/

[*2]: http://ymasuda.jp/python/sqlobject/doc_0.7/index.html

[*3]: http://www.sqlobject.org/SQLObject.html
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E009-3&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E009-3&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E009-3&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【PF】たまには仕事に役立つコミュニケーションのヒント[2]
          - ひとはそれぞれ違う 「テイラーメイド」

こんにちは。もうすぐ9月なんて信じられないですね。上田雅美です。
週末に「24時間テレビ 愛は地球を救う」を見ました。アンガールズの100Kマ
ラソンをドキドキしながら所々で見ていたのですが、見事に完走したときには
かなり感動しました。ご覧になった方はいらっしゃいますか?

私はコーチングの研修をする際、参加者の方に時々こんなことを考えてもらい
ます。

「自分が100Kマラソンをするとしたら、コーチにどんな風にサポートしてほし
いですか?」

研修会場での皆さんの反応は、本当にバリエーションに富んでいます。「基礎
からしっかり細かく指導してほしい。」「やる気が無いときに、叱ってほしい。」
「コーチ自身の体験を話してほしい。」「とにかく好き勝手にやらせてほしい。」
「ひたすら褒めまくってほしい。」などなど・・・。すべてを書き出すことは
出来ませんが、本当に皆さんそれぞれが違うことが解ります。

お気づきのとおり、人はそれぞれ違います。物事の受け止め方が違ったり、過
去の体験が違ったり、価値観や行動パターンなどにも影響されています。ある
人にはいつもうまく行く接し方を他の人にやっても、うまく行かないことも当
然のようにあります。
言葉の受け止め方や、やる気の出し方も違います。

ビジネスの世界でもスポーツの世界でも、優秀と言われるような監督やコーチ、
リーダー達は自然にこの考え方を踏まえて声がけをされているようです。
最近とても参考になったのは、ダイエーCEOの林文子さん。ホンダやBMWでお仕
事をされていたときの、お客様との接し方や部下への接し方などがとても参考
になりました。

では、どうやってその違いを見極めることが出来るのでしょうか?

それは、とてもシンプルなやり方です。自分なりで良いので恐れずにチャレン
ジしてみてください。そうしているうちに、相手の表情や行動から色々な傾向
がつかめてくるはずです。失敗してもカイゼンしてゆけばいいのです。
勿論そのベースには、お互いにメンバーとして認め合っていることやお互いに
良い関係でいたいと思う気持ちが大切です。

最近では「tailor-made (テイラーメイド)」という発想がコミュニケーション
や医療、教育の中で用いられ始めています。本来の意味は、紳士服の仕立て屋
が注文でスーツを作る際に使われていた言葉が語源ですが、「その人それぞれ
にフィットした〜」といった意味で用いられていることが多いようです。
本気でその人に関わりたいと思うのであれば、その人なりの「テイラーメイド
なコミュニケーション」を見つけてください。(うえだ@コーチ)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M003-1&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M003-1&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=M003-1&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「ブログに何を書いてますか?」のホントのところ。オブジェクト倶楽
部のスタッフにはブログを書いている人が沢山います。日々の日記からイベン
トなどに参加した感想など。人気ブログのオーナーがぞろぞろです。さて、皆
さんはブログにどんなこと書いてますか?

  日々の出来事(日記)。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=119&choice=0
  仕事に関係すること。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=119&choice=1
  仕事とはまるで関係ない趣味のもの。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=119&choice=2
  子供やペットなどの成長の記録として。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=119&choice=3
  いろいろ雑ざっています。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=119&choice=4
  ブログ書いてません。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=119&choice=5
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=119&choice=6
  ちょっと語らせて!
     editors@ObjectClub.jp まで詳細を!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「仕事しながら何飲んでますか?」の結果は公開中。ぜひご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol118/PlonePopoll_results2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。最近読みたい本があります。24時間テレビのマラソ
ントレーナーを勤められている、坂本雄次さんの本です。100キロマラソンでは
間寛平さん以来、ずっとランナーとトレーニングから本番当日までをサポート
している人の本です。感動がよみがえりそうですね。

「なぜあなたは走るのか 激痛に涙あふれてもなお」
 (坂本雄次著/日本テレビ放送網)
 http://www.amazon.co.jp/o/ASIN/482039830X/xpjp-22

【お詫びと訂正】
先週発行のメールマガジン(No.152 8月23日発行)のTopics記事におきまして、
日経ソフトウェアへの記事掲載のご案内をいたしました。その際、ご紹介しま
したYuguiさんのお名前を誤って掲載してしまいました。
「yugai」さんではなく、正しくは「Yugui」さんです。ここに訂正させていた
だきますと同時にお詫び申し上げます。大変申し訳ありませんでした。
またメールにてご指摘を下さった皆さん、どうもありがとうございました。

今週の強引な一言
***鵜のまねをする烏(ことわざ)***
烏(からす)が鵜の真似をしようと思って水に潜っても溺れてしまいます。優れ
たコードを真似して自分の技術を磨くのは良いことですが、良さそうな技術を
プロジェクトに持ち込もうとするときには、経験者の意見なども聞いて、本当
に適しているか吟味することも忘れずに。
(上田雅美)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒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.