Date:  Wed, 28 Jun 2006 13:57:24 +0900
Subject:  【オブジェクト倶楽部: 2006-24号】
X-Mail-Count: 00151

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.145 2006/06/28

■ I N D E X
┃
┣【Topics】RubyKaigi2006のレポートを公開しました
┣【Topics】オブラブ2006夏イベント、明日開催です!
┣【プログラミング】TurboGearsでPythonを始めてみよう![2]
┣【キーワード】知ってるようで分からないビジネスワード勉強会[29]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 RubyKaigi2006のレポートを公開しました
  〇 〇━━━━━━━━━━━━━ ━━・ 
先々週のメルマガでもお伝えした、日本Rubyカンファレンス2006(RubyKaigi
2006)のオブラブメンバーによるレポートを公開しました。

http://www.ObjectClub.jp/event/rubykaigi2006/

運営委員や当日スタッフ、スポンサー参加に一般参加と様々な立場からカンファ
レンスに参加したオブジェクト倶楽部メンバーによるレポート集です。しつこ
いですが、オブジェクト倶楽部の運営母体である(株)永和システムマネジメント
も、協賛企業にその名を連ねています。明日のオブラブイベントでもかずひこ
さんによるRubyチュートリアルを用意しています。オブラブでは今後もRubyを
勝手に応援します!

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 オブラブ2006夏イベント、明日開催です!
  〇 〇━━━━━━━━━━━━━ ━━・ 
オブジェクト倶楽部2006夏イベント、とうとう明日29日(木)開催です!今回の
イベントも実り多いものになるよう、スタッフ一同頑張っております。
明日イベントに参加くださる方、お気をつけてお越しください。会場にてお待
ちしております!

会場:国立オリンピック記念青少年総合センター  http://nyc.niye.go.jp/
受付:センター棟 417号室前
受付開始:9時20分(予定)〜

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

こんにちは、オブジェクト倶楽部の味噌カツ、やっとむです。
なんでも味噌つければ美味い!というガッツを感じる一品です。
だからって無闇と強引にお笑いを添加すると...きっと...ガッツだ!

■□ しゅくだいのこたえ ■□

前回の記事[*1]の最後で、宿題を出しました[*2]。解答例はこんなふうになり
ます。

  1 def sashimi(sozai, quantity):
  2   if sozai == '馬':
  3     hinmei = '馬刺し'
  4     nedan = quantity * 1200
  5   elif sozai == 'カツオ':
  6     hinmei = 'タタキ'
  7     nedan = quantity * 1000
  8   else:
  9     hinmei = sozai + 'の活づくり'
 10     nedan = quantity * 100
 11   print hinmei,
 12   print '(' + str(nedan) + '円)'

簡単に解説しましょう。sozai変数が素材の名前(文字列)で、quantity変数が個
数です。2〜7行目のif/elifで、sozaiに対応した品名と値段を調べています。
8行目のelseで、その他の素材に対応しています。

11〜12行目が結果の表示です。11行目の行末の「,」は、次のprint文とつなげて
1行で表示する(ここで改行しない)という印です。12行目の「str(nedan)」は、
nedan変数に入っている整数を文字列に変換する組み込み関数です[*3]。Python
では、数値と文字列は直接「+」でつなげることができません。

あらためてsashimi関数を見ると、if文がずらずらと続いてしまっています。こ
のままだと、品名が増えればソースもそのぶん長くなってしまいます。そこで
「辞書(dictionary)」[*4]というデータ構造を導入しましょう。

■□ キーと値の対応付け - 辞書 ■□

辞書はキーと値の対応を保持します。連想配列やマップ(Javaならjava.util.Map)
と同じものですが、Pythonでは組み込み型となっています。インタプリタ上か
ら使い方を試してみましょう。

 >>> d={'a':0, 'b':1, 'c':2}
 >>> d['a']
 0
 >>> d['b']
 1
 >>> d['x']
 Traceback (most recent call last):
   File "<stdin>", line 1, in ?
 KeyError: 'x'

辞書を定義するときには「{...}」で囲みます。値を取り出すには「[...]」で
キーを指定します。値を設定するときも、同じようにできます。

 >>> d['x']=100
 >>> d['x']
 100
 >>> print d
 {'a': 0, 'x': 100, 'c': 2, 'b': 1}

ここではキーに文字列を、値に数字を指定していますが、いずれも任意の型を
使うことができます。

 >>> month={}
 >>> month[1]='January'
 >>> month[2]='Feburary'
 >>> month[0]=None
 >>> month[1]
 'January'
 >>> month
 {0: None, 1: 'January', 2: 'Feburary'}
 >>> month['十二月']='師走'
 >>> print month['十二月']
 師走

「None」は、空っぽ(値がない)ことを示す定数です。Javaのnullとほぼ同じも
のと考えてください[*5]。

辞書の中にあるキーが存在するかどうかは、「in」演算子で調べられます。

 >>> 0 in month
 True
 >>> 1 in month
 True
 >>> 3 in month
 False

辞書を使うと、宿題のプログラムは以下のように書き直すことができます。

def sashimi(sozai, quantity):
  menu = {'馬':'馬刺し', 'カツオ':'タタキ'}
  pricelist = {'馬':1200, 'カツオ':1000}
  if sozai in menu:
    hinmei = menu[sozai]
    nedan = quantity * pricelist[sozai]
  else:
    hinmei = sozai + 'の活づくり'
    nedan = quantity * 100
  print hinmei
  print '(' + str(nedan) + '円' + ')'

■□ いくつかの値を手頃にまとめる - タプル ■□

このプログラムを見て気になるのは、menuとpricelistという2つの辞書を使っ
ている点です。Cの構造体とか、オブジェクト指向的にはクラスを使いたくなる
ところです。Pythonではこの程度であれば、タプル[*4]を使うのが便利です。

タプルは括弧(「(...)」)で囲まれてカンマ(「,」)で区切られた、複数の値の
並びです。リスト(後述)とは違い、長さも、中の値も変更することはできませ
ん。使い方を見てみましょう。

 >>> t1=(1,2,3)
 >>> print t1
 (1, 2, 3)
 >>> len(t1)
 3
 >>> t1[0]
 1
 >>> t1[1]
 2
 >>> t1[2]=5
 Traceback (most recent call last):
   File "<stdin>", line 1, in ?
 TypeError: object does not support item assignment

lenは、要素の数を調べる組み込み関数です[*6]。

要素には任意の型の値を入れることができます。

 >>> t2=(1, 'Python', 2.4)
 >>> t2[0]
 1
 >>> t2[1]
 'Python'
 >>> t2[2]
 2.3999999999999999

タプルを使ってプログラムをさらに書き直してみます。

def sashimi(sozai, quantity):
  menu = {'馬':('馬刺し',1200), 'カツオ':('タタキ',1000)}
  if sozai in menu:
    hinmei = menu[sozai][0]
    nedan = quantity * menu[sozai][1]
  else:
    hinmei = sozai + 'の活づくり'
    nedan = quantity * 100
  print hinmei
  print '(' + str(nedan) + '円' + ')'

辞書menuの中に、「(品名,単価)」というタプルを入れてしまいました。4行目
と5行目では、タプルから必要な値を取り出して使っています。

もうひとつ、Pythonには重要なデータ構造があります。それがリスト[*4][*7]
です。リストは配列のようなもので、値を順序付けして保持します。リストの
紹介は今回は省いて、次回以降で実際に使うときにまた解説していきたいと思
います。

■□ おわりに ■□

今回はPythonの持っている組み込みデータ構造を紹介しました。一部だけ。一
部とは全体の一部分であって全部ではない!リストや集合(セット)はまたの機
会に譲ってとりあえず、宿題のプログラムを直すのによさげなところだけのご
紹介とあいなったわけでございます。

なんでせっかくだからもうちょっとsashimiプログラムにお付き合いいただきま
しょうか。というわけで宿題です。

宿題:今回修正したsashimiプログラムを変更して、結果をprintで表示するの
ではなく、「(品名,値段)」というタプルを返すようにしてください。値を返す
のにはreturnを使います。さらに、メニュー中のすべての情報(辞書)を取得す
る関数も作ってください
(ヒント:sashimi関数からメニュー関数を呼び出すようにする)。

それではまた次回お会いしましょう!次回はいよいよTurboGearsを動かしてみ
る予定です。(やっとむ)

[1]:メルマガ2006-20号
    http://www.objectclub.jp/ml-arch/magazine/147.html

[2]:宿題: 引数に'馬'を渡すと'馬刺し'、'カツオ'を渡すと'タタキ'、それ以
    外だと'(パラメータ)の活づくり'と表示する関数を作ってください。さら
    に、引数として注文数を渡すと単価を掛けて値段も表示するようにしてく
    ださい。

[3]:似た働きをするrepr()という組み込み関数もある。逆に文字列から整数に
    するにはint()を使う。組み込み関数について、詳しくはこちらを参照。
    http://www.python.jp/doc/release/lib/built-in-funcs.html

[4]:Pythonチュートリアル(日本語) - 5 データ構造
    http://www.python.jp/doc/release/tut/node7.html

[5]:実は違うのですが、この段階ではそう捉えて問題ありません。違いは、
    Pythonの場合はNoneが「空っぽであることを示すオブジェクト」である点
    です。Javaのnullには(空参照なので)属性やメソッドがありませんが、
    PythonのNoneは属性やメソッドを持ちます。

[6]:その他、文字列やリストやタプルの長さ、集合などの大きさも調べられる。

[7]:Pythonチュートリアル(日本語) -
      3 形式ばらない Python の紹介 - 4. リスト
    http://www.python.jp/doc/release/tut/node5.html
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E009-1&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E009-1&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E009-1&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【キーワード】知ってるようで分からないビジネスワード勉強会[29]

こんにちは、hiroshiです。ワールドカップも予選リーグが終わり、寝不足の日々
が続いているのでは、と考えてます。僕は、日本の試合だけ見ながらビールを
飲み、友達と盛り上がってました。川口選手がPKを止めたときは、かなり盛り
上がりましたが、それ以外は、決まりそうで決まらない、もやもやした気分で
した。皆さん如何でしたでしょうか。

前回は、「NFC」という近距離無線技術について、紹介しました。今回も、無線
技術で今までとは一風変わった技術をご紹介しようと思います。「エバネセント
通信」です。

「エバネセント通信」とは、何なのでしょうか。最初は変わった名前だなぁと
いうところから、興味を持ちました。エバネセント通信とは、エバネセント電
磁界(詳細は割愛)というものを使って、鉄骨/鉄筋でできた建物や、車/飛行機
の中で行う通信技術のことです。エバネセント通信は「エキサイタ」という装
置を用いてデータ通信を行います。「エキサイタ」を有伝導性素材にして、通
信データを載せた電流を直接流し、その電流から空気を通じて、電磁波が室内
全体にいき渡り、その電磁波を受信することでデータ通信を可能にしています。
以前ニュースで、電磁波が人体に有害な影響を与えるとの話もありましたが、
出力が微弱で低周波を使用するため、人体にも影響はありません。建物内に
500kHzから54MHz(HF・VHF)の周波数帯を利用してエバネセント波を生成するこ
とによって、50Mbps程度の安定した通信速度を可能にしているようです。

現在、家の中、ビルの中など、局所的な無線LANを構築するために研究されてい
ます。無線LANは現在もありますが、何が違うのでしょうか。その違いを以下に
まとめました。
・有電導性の素材が無ければ通信でいないため、電波が外に漏れにくい
・壁など遮蔽物があっても、その中の通っていくため、通信可能である

現在の無線LANが遠くに電波を飛ばそうとしているのに対して、エバネセント通
信では屋内に特化した通信の仕組みであることが分かります。

今回「エバネセント通信」を紹介させてもらいました。有線でなく、かつ飛ば
ない無線といった少し変わった通信技術です。しかし、現在実証実験中で、か
つサービスとしてまだまだブレイクしていないのが現状のようです。以前に、
「Push-To-Talk」を紹介させてもらいました。今では、携帯の一機能として組
み込まれている機種もありますが、紹介させてもらった時点ではアメリカで流
行っていただけでした。今回の「エバネセント通信」も、今後流行っていくこ
とを願って終わりにさせて頂きます。(hiroshi)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=D001-28&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=D001-28&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=D001-28&choice=2

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

今週は「自分のカラダ、どこが一番自慢ですか?」のホントのところ。前回は
健康診断の気になる部分についてお聞きしました。みなさん、何かしら気にな
る部分を抱えていらっしゃるようで。。そんなみなさんでも、どこか一つくら
いは自分のカラダの中で自慢できるところ、あるのではないでしょうか?

  やはり明晰な、頭脳ですかね。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=0
  視力がイイんです。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=1
  結構イケてる、顔かな。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=2
  虫歯など一本もありません。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=3
  丈夫な胃腸、もしくは強い肝臓です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=4
  腕力あります。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=5
  健脚自慢です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=6
  結構スタイル良いです。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=7
  自慢できるものはありません。。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=8
  それは秘密です。
     http://www.ObjectClub.jp/special/kininaru/vote?vol=111&choice=9
  ちょっと語らせて!
     editors@ObjectClub.jp まで詳細を!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「健康診断、どこが一番気になりますか?」の結果は公開中。ぜひ
ご覧下さい。
⇒http://www.ObjectClub.jp/special/kininaru/vol110/PlonePopoll_results2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。ここ数回のメルマガで、ずっとお伝えしてきました
が、2006夏イベントの開催もとうとう明日に迫りましたー。ひえー、ホントに
無事に開催できるのか、不安の嵐です。今まさにイベント準備物のダンボール
に囲まれながら、この編集後記を書いているところです。でもみなさんの笑顔
にお会いできるのを本当に楽しみにしています。明日は天気が悪くならないこ
とを願って。ではみなさん、明日イベント会場でお会いしましょう!

今週の強引な一言
*** 下手は凝る。上手はきれい。名人は離れる。(浄瑠璃の格言) ***
プログラムでも、初心者の頃はよけいなところに凝りすぎたりするものです。
でも経験を踏むにつれ、無駄のないきれいなコードが書けるようになります。
そしてさらに極めると、今度は新たな境地を自分で作り出していくのでしょう。
(まにわ)

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