Emacs最新変更ページ取得中です。広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。なく自分の気づいたことのノートなので、抜けとか自分の意見が混じっています。その点はご了承ください。渋川さんテストファーストが大好き。MindMapもキレイに書きこなしていた。大川さん製薬系の人はPythonを使う人が多い。ライブラリが豊富なことが理由らしい。カメラ機能があって、写真を撮った後に写真閲覧モードにシームレスに移動していたところに感動。おもてなしの美学だなあ。小吉さんPython1.4から使用している方。総務なのに、Pythonを業務に使用して役立てているとのこと。西尾さんJython本を書いているとのこと。いつ頃でるのかな?楽しみだ。(飲み会での追記:最短で4月らしい)メモ大学生なのに仕事を兼業でやっている、という人が複数いてびっくり。言い聞かせてあげたい(→過去の自分に)電子工作とPylonsに興味のある方が多い(実際、2日間ずっと会議室の中で「島」を作って作業をしていました)。初心者が多いのも、実は意外だった。Pythonエキスパートばかりで気後れしそうな予感だったので、ちょっと安心。←小心者メモ西尾さんはMacBookをキャンプ3日前に購入したので、JythonだけでなくPyObjCについても突っ込んでいってほしいところ(ボソボソ)Mac率、Thinkpad率が異様に高いのも印象的でした。MacBookAirもいた!初めて見たけど薄いわ、これ。「最初、テストは必ず失敗すること」ということ。『テスト(失敗)→実装→テスト(成功)→リファクタリング→テスト(失敗)→・・・』を繰り返して、「汚い・動かない」から「きれい・動く」に持っていくことが大事。早いサイクル・大きすぎない粒度で回せるとよい。渋川さん作成のpySpecを使用してセッション開始。あるwx系を削除しておくことが必要だった。いえば、このセッションでは隣の方とペアを組んでプログラミングをした。面白かったのが、まずは2分でお互いを自己紹介+決意表明した上で作業を始めたこと。自己紹介の前後では、「隣人の決意表明を手助けしてやろう!」という目的意識が生まれているのに気がついた。Programmingってきっかけ&モチベーションの維持が大事なんだなぁ。いえ時間がなかったのでスライドをベースに説明をしてもらうのがメインのセッションとなってしまった。本来なら半日かけて行う作業なんだと思う。「BDD」という新しいキーワードを学んだ。Development。懸田氏の翻訳記事にあるように、「Test/Assert(試す/断言する)」ではなく「Should/Verify(こうあるべき/検証する)」を意識したテストケース(*1)を作成することが大事。あるべきかという振る舞い(Behaviour)として記述することで、それがつまりテストであり、仕様になるという結果を生む。「契約による設計」なんだね。「@context」で事前条件(クラスの作成、テストのための準備)「@spec」で事後条件(こういうメソッドを呼んだ後は、こうあるべき)を記述するようになっている。メモ渋川さんは、「開発者のためのテストケース」と、「テスターによるテストケース」とをいずれは一緒にしたいという夢があるらしい。うん、それは両者にとって理想の姿だ。「一緒」という定義には紛糾するかもしれないけれど。あと、MockとStubとは違うということは初めて知った。分かっていないので、これは渋川さんに聞いておかなければ。Mockは親(呼ぶ側)が何をするか、たとえばどういう順序で、どういう値を渡すかを判断し、検証してくれるもの、とのこと。逆にチェック機能のない、単なる木偶のようなものがStub。(検証機能)という関係。ちなみにJavaの開発・テストだと、Mockがないと話にならないらしい。あと、docstring内にインタプリタでの振る舞いを書くdoctestというモジュールの説明してくれたけれど、これはまあ、おまけみたいなものだからスルー。○:分かりやすい、気軽。○:他人のコードでも何を意図しているかがdocstringだけで分かる×:網羅的なテストは書けない×:各テストが別々にできない(シーケンシャルに実行)。ステートフルになってしまう。×:結果が毎回変わるようなものはテストできないというメリット・デメリットがあるとのこと。メモ時間が少ないのが残念だった。渋川さんとは時間をかけて、もっと色々と聞きたい。TODO:次にお会いするときまでに、もっと勉強しておこう。開発内にはハードを用いる必要がないところがある。その部分をWindowsだったりLinuxでシミュレーションできる環境を作り上げ、そこでテストを実行するといい。スタブ・ドライバ(=モック)をも持った環境。メモ:どこまでスタブ・ドライバを用意するか、作りこみが重要になりそう。組込みだとxUnitも適用し難いし、フレームワークがあるわけでもないし。テストサイクルを速くする為の仕組みづくりを工夫することが大事。Programming実践レポート」。開発に習熟してくると、テストする単位がどんどん大きくなっていきそうで不安。プログラムの中で、ネジ・クギに相当する部分やボトルネックになる部分はできるだけ粒度を細かくするよう意識している。逆に、ユーザーインタフェースなどの後からコロコロ変わる部分は疎にしている、とのこと。メモ:細かくすることができない、というテストがあった場合は、そもそも要求仕様の定義が不完全であることの気づきにもなるね。吉田さんPythonとは何かから始まって、インストール方法、基本的な特徴・操作方法を教えてくれた。すごく丁寧に、分かりやすく。いうリズムでデモが出来たらいいな。予約語が少ない記号が少ないで、つまりまとめると、「人生の敗北者でも使えるPython--2chのコメント」なんだってさ。2日に渡るセッションで、2日目はApacheログを解析するスクリプトを作成する例を紹介していた。Codeで「apachelog-analysis」として公開している。array[m:n]はインデックスmから(n-1)のことを意味する。ちなみにa[-1]は最後の値を返すし、array[m:n:s]とした場合はsステップずつの値を取り出せる。[1,3,5,7,9])■importしたモジュールを再評価したいPythonでは一度importしたモジュールは、再度importしても再評価してくれない。importされたモジュールの一部を変更・保存して再importさせたい場合には『reload(module名)』とすればOK。hoge」したものを再importすることには使えませんでした。この書式だとmoduleそのものとしてはインポートされていないためなんだそうです。■逆順列を求める順列のリストを求める場合、range(n)を使用するが、逆順のリスト「[(n-1),(n-2),...,1,0]」を得たい場合には次のように入力する。Pythonのリストがスライスできる、という機能を利用した方法だけれど、目からウロコ。■PerlのCPANに相当するPython向けサイト「PyPi(http://pypi.python.org/pypi)」というサイトがある。CPANほど有名ではないけれど、CPANは吉田さん曰く「あそこは何でもアリスギ」なんだそう。■rangeのイテレータ(正確にはジェネレータ)「xrange」というfor文などに使えるイテレータがあるので、これをストリームとして使える。いてレートするたびに次の要素を返してくれるため、余分なメモリを消費しない(遅延評価の一種、か)。UNIXのパイプのような概念。xrangeはrangeと異なり最初にリストを返さずジェネレータを返すだけなので、後からの変更が利かない(=xrange(n)[::-1]が不可能)。初期化時にジェネレータが生成するストリームを指定しておかないといけない。9→0の逆順列の場合は、xrange(9,-1,-1)(引数に注意!!)としてあげればよい。45}というような辞書があったときに、その値でソートしたいときの方法。いう方法を教えてもらいました。(keyn,valuen)]』というタプルの配列を返してくれる、と。jackさん、ありがとうございます。注意:2.4以降でないと動かないそうです。芝尾さんGainerを使って、その先のデバイスをPythonで動かすというクラス。ボクは参加できなかったけれど、みんなかなり面白そうに作業をしていた。Gainerは1チップマイコンなのに、USB接続して、LED直結で光らせたりすることができるなど、かなり高性能なチップだ。「ブラウザ」⇔「Webサーバ(Ajax)」⇔「Gainer」⇔「デジQのプロポ&Webカメラ」⇔「チョロQ」というように、ネット越しに映る画面でチョロQを操作するデモを見せてくれた。素人にも分かりやすいし、これはすごい!柴田さんのアップしたYouTube動画を載せておく。小田切さん、林さんすみません、ぜんぜん参加していないので分かりません。これはDjangoのようなWebフレームワークとのこと。独自の「島」が2日間、終日できて作業が進んでいたので、興味のある人が多く、熱意を持って臨んでいる感じが伝わっていた。今度、どんなものか調べてみよう。OSX(Leopard)で動作する、Pythonで簡単にCG・アニメーションを作成できる開発統合環境のこと。自分のPCがThinkPadだったので見るだけだったけれど、本当に簡単なコードできれいなCGを記述できていた。thing...」で紹介。Imageとの連携で動かしているらしい。メモとにかく、見た目とコード量の少なさとのギャップがすごいソフトだった。デスクトップだけど、Macユーザーで良かった。Jythonを作って公開していた。Jython(+SWING)をスクラッチから作ったとのこと。oval()しか載せていないとはいえ、すごい。←これがオリジナルなんだってば。これはちょっと頑張ってみたいな。6.1.Q&A案の定、Q&Aも多く出ていた。ソースコード中の値にマウスでポイントして、コマンド+クリックすると、値を動的に変更して、その結果を別のペインでダイナミックに確認できる。イメージなら何種類かの画像フォーマット、ムービーならQuickTimeで出力できる。今は無理だけれど、開発者たちが優先的に実装を進めているらしい。関数にしてしまえばできる。Windows版はあるけど、微妙とのこと。さとうさんがJythonでPython+Schemeで動くようなものをポーティング中。~.py」では動かない。会議室内に急遽「島」ができて独自に勉強会を進めることになってしまったほどインパクトがあるIDEだった。ボクも家に帰ったら使ってみよう。メモこのソースを他のPythonスクリプトに組み込んだりできたら最高だ。ImageのPythonインタフェースになるし。清水川さんWebサイト構築時のテストに特化したフレームワークBuildBotとSeleniumについての紹介。ごめんなさい、Webフレームワークに触ったこともないし触ることもないので良く分かっていませんが・・・BuildBotビルドサーバを用意しておき、コミットをフックにして、テストユニットを実行したり、ビルドしたりで結果を時系列情報とともに記憶、ブラウザで閲覧できるフレームワーク。Pythonスクリプトをきっかけにいろいろなことができる。SeleniumWebブラウザの操作を「録画」しておき、その再操作をテストケースとして「再生」できるフレームワーク。テキストボックスに何かを入力→ページ遷移→リンクをクリック→・・・を録画できる。ステップ実行なども可能。デバッグ環境の充実ぶりが、組み込み屋にとってはものすごくうらやましいセッションだった。メモこのテスト再生をリモートPCに行わせることも可能。Web操作が絡むものにはSeleniumってかなり便利なフレームワークだなあ・・・。僕ら組み込みの、パネルを操作しないといけないテストの、自動化フレームワークみたいなものはないのだろうか。小林さんすみません、内容が難しすぎてよく分かりませんでした。58歳にしてすごいパワーを持った人でした。kVerfier小林さん作成の、テスト用メタ言語によるプログラムテストのプログラム。元はC/C++向けのものだったのを、Pythonでも使えるようにしたとのこと。scipyhttp://www.scipy.orgで配布されている数値計算ライブラリ。なく頭の良い人たちが作ったすごいライブラリ、らしい。sf.py小林さん作成の電卓プログラム。電卓、とはいえ行列計算が得意なPythonモジュール。Python)というイメージが近い、かな(たぶん)。メモデモをするときに小さな字のコマンドラインとエディタの画面だけで説明するので、何をしているかが理解しにくかった。スライドとデモの組み合わせ、でやってほしかったかな。Pythonのムービー(あの'Spam'のオリジナルコントも!)を見ながらのイギリス英語とアメリカ英語の発音の違いを学ぶ、というセッション。~?」と言ったり、発音記号「ae(のくっついた記号)」をイギリス英語ではあまり使わなかったり、という違いがあることを知って、存外に(失礼)有意義だった。メモもう少し、発音のいろいろな違いの説明があると面白かったかな。Pythonはバカバカしくて面白かった。:さとうさんあんなに難しそうなアニメーションがこんな短いソースで書けるなんて!NodeBoxすごい!2.WebMailのおはなし:おおたにさんWebMailクライアントを実装してしまったらしい。大したことないということですが、普通の3ペインメールクライアントと同じような動作している!非同期で新着メールを受信してたり既読になると別ペインの数をデクリメントしたりしていた。3.RCG(RealtimeCG)とPython:a2cさん何でもタグをつけておきたいログインした各ユーザーが、Twitterのような簡単なメッセージ、検索してきたYouTubeやFlickerの情報(同じサイト内でサムネイルが一覧表示!しかもきれいに!)に対してタグをつけ、保存できるWebサービスの例を紹介。メモ帳が、Flicker,YouTubeの情報をタグと共に覚えておける、という技術。スムーズな画面展開が、見ていてとても心地よかった。デモではエラーが出てしまって見れなかったので、最終日に改めてお願いして見させてもらった。A2Cさん、ありがとう。リアルタイムに画像を作るBrainstormを使った画像のデモ。リアルタイム&オブジェクティブ指向な画像作成ソフトウェアの紹介。これはどういうソフトなんだろう?スペイン製だということだけど・・・。4.Pythonと電子工作:芝尾さんとGainerの皆さんの作品集3次元の加速度センサーでお絵かきするプログラム3次元の加速度センサーで画像を傾けたり、倒したり3次元の加速度センサーでブロック崩し3次元の加速度センサーでお絵かきするプログラムその22日間の作業なのに、皆さん色々と面白いものを作っていた。それにみんな楽しそう。5.isk-daemonについて:tokibitoさんGPLの、類似画像検索エンジン。Pythonで作られている。Queryingというアルゴリズムで類似画像を検索するとのこと。本当に似たデータが出てくるからすごい。ちなみにプレゼンツールはamachangのs6をベースにした自作Javascript。「ちなみに」どころじゃないよ、それ。6.WSGIの話:林さん「ウィスキー」と読むらしいPythonにおけるHTTPサーバとアプリケーションの間を規定した仕様とのこと。アプリ・ミドルウェア・サーバの仕様を知っていれば何とかなるらしい。それぞれの仕様のポイント説明が続いていたけれど、Webのことをよく分かっていないので分からなかった。Apacheでやっているようなこと+αを実現できるらしい。入出力の仕様をしっかり決めているので、その中を自由にできることが特徴とのこと。TODO調べておこう。7.virtualenv:小田切さん(aodag)試験環境を自分のPython環境で試したところ、いろんなものが変化してしまって困った、という人のための、virtualenvというPython専用の仮想環境構築ツール。easy_installでインストールできる。virtualenvで作った環境でPythonの実行環境を作れるので、sourceコマンドで仮想環境に入る。ここなら既存のPython環境にこだわらず、怪しいパッケージを試せる。メモdeactivateで汚れちまった仮想環境を削除できるとのこと8.IronPythonでWiiリモコンから値をとる話を10分でできるところまでライブコーディング:西尾さん本当にライブコーディングしている。説明も、途中途中でどこを参照したらよいかの説明があったり、すごいな。デモとしてもGを表現するため身体を(必死に)動かしていて面白かった。C拡張の書き方」であったdllを読み込むライブラリの組み合わせで作る、Pythonを使った情報の取得デモ。ユニークなIDのほかに、暗号化されていない領域(入出金管理や、SuiCaの入出履歴など)を読めていた。Macだとパソリとlibpasoriというモジュールさえあればいいらしい。Windowsの方はfelicalibとcpythonのセットで必要。EdyもSuiCaも互換性がないので、データはゴリゴリと読むしかないらしい。解読した鈴木さんはすごいな。結論みんなすごい!ボクも負けずにがんばるぞ!TODO:あとでちゃんと感想書け。鈴木さん曰く、pyUSBという低レイヤのライブラリがあるらしいUSBデバイスをダイレクトにいじれるみたいだから、組み込み屋にとっては面白そう。curlという1万x1万のテーブルも高速に使えるインターネットアプリ用DBがあるらしい(MITライセンスだけど、住商が販売権を握っている?)pythonコマンドで始まるPythonインタープリタよりも高機能なインタープリタ「IPython」があるとのこと。readlineさえ入っていれば大丈夫なので、自分の環境にも入れてみよう。Tabキーでメソッド補完ができたり(!)'メソッド名'+'?'でそのヘルプ(たぶんdocstring)が見れたりするらしい。PyScripterという、Delphiで作られたWindows専用のPython用IDEがあるとのこと。かなりの高機能なIDE。ツリー形式でファイルやメソッドを一覧表示したり、unittestと組み合わせたときにはどのテストを実行するか(そして結果はどうだったか)を表示してくれる。tokibitoさんが日本語化パッチを作っている。小林さんの車に同乗させてもらったときに知ったこと。Pythonは関数コールのたびにスタックフレームが確保される。Closureが実現できるのか!Closureは、作成したときの引数とそのときの環境がImmutableであることを保証してくれるから(書き換えも出来るけどね)、それこそがClosureを使うメリットになる。←Closureの使いどころに困っていた身としては目からウロコだった。最終日の朝の洋食、柴田さんだけが(間違えて)ごはんと味噌汁を自席に持ってきてしまい、洋風おかずと一緒に食べていた(ほかの人は食パン)。フォークで食べていた。GroupのページPyPi(http://pypi.python.org/pypi):PythonのCPANのようなところ。Indexをクリックしても辿り着くpySpec(http://www.codeplex.com/pyspec):渋川さん作成のPython用のビヘイビア(振る舞い)駆動開発フレームワーク。本人のユニットテストのセッションで使用。Gainer(http://gainer.cc/wiki/index.php?title=Main_Page/ja):高性能な1チップマイコン、Gainerのメインサイト。GAINER」が良いらしい。NodeBox(http://nodebox.net/code/index.php/Home):ユーザーサイトも活発なIDE。すごい、一度は使ってみよう。BuildBot(http://buildbot.net/trac):ビルド、テスト、レポート作成のBot環境。使いこなせれば、Webアプリ開発以外にも役立ちそうだ。Selenium(http://selenium.openqa.org):Webブラウザ上の操作を録画しテストケースとして作成、再生、コマ送りをしながらデバッグできるテストフレームワーク。scipy(http://www.scipy.org):数値計算に特化したPythonライブラリ。)コメントもしあれば、どうぞ。参加していた方は「誤解しているよ」などの突っ込みを期待します。NodeBoxについて補足。console'して色々とできることを知りました。21:04:29)そうなんですね。僕も色々試してみます。NodeBoxを知る機会を与えてくれて、ありがとうございました。15:45:54)ありがとうございます。参考にさせてもらいます(追記もしておきます)。