二日目。土曜。レンタカーを走らせて,近くのスタバで朝食を買って会場入り。
Keynote : Premise: eLearning does not Belong in Public Schools
Adele Goldbergさんのお話し。アメリカの教育の現状について,沢山ドロップアウトする子供がいるとか,教育水準が下がってきているとか,そもそも公共の教育機関の質が云々とか。そのような状況を変えるために,いつでもどこでも,自分の好きなペースで学習できるeLerningは重要,というような話の流れの最後に,「CourseCloud」というツールの紹介を待ってやっとPythonとつながる。
CourseCloudはPythonで出来たeLerning構築ツール。一種のCMSのようなものらしく,XMLで問題の内容を定義するとWebブラウザで操作する教材ができあがる。CourseCloudのデモとして,Pythonを学ぶための教材を見せてくれました。Adeleさんは教育やeLerningについて豊富な経験を持っている方のようで,その経験がCourseCloudにも十二分に反映されているようです。
SQLAlchemy
Mark Rammさんのお話し。MarkさんはTurboGearsの作者Kevinさんのお友達で,TurboGearsではユーザ認証モジュールのidentityを作っていたり,また洋書のTurboGeras本の著者の一人でもあります。
SQLAlchemyの特徴は,データベースのテーブルを直接クラスにマッピングするのではなく間に1階層かましているという「構成」にあると思います。Rammさんのお話しでは,O/Rマッパーとはなにか,というところから始まって,SQLAlchemyならではの「うまみ」みたいなところまでジョークを交えながら解説をしていました。
会場は満員。こういうとんがったTalkが満員になるというのが,PyConのすごいところだと思う。日本でSQLAlchemyの話とかしても5人くらいしか来ないと思うよ。
TurboGearsの洋書に,KevinとMarkのサインもらった。
IronPython: Present and futures
もはやすっかり有名人,MicrosoftのJim HugnimさんによるIronPythonのTalk。.NET上で動くPython実装であるところのIronPythonは,もともと個人の興味から始めたものだったのが,いまやMicrosoftの公式プロジェクトとなり,昨今のLL人気と相まって.NETの実装自体にも影響をあたえるに至ったわけです。そのような経緯を「ネズミが象に闘いを挑むみたいなものだけど,今やまともに闘っている」などと表現していました。
FePyやIPCE(IronPython Community Edition)なども登場して,monoの連中など非Microsoftな開発者も巻き込みつつ活発な開発者コミュニティを形成するに至っています。IronPythonを取り巻く世界はとても大きくなりつつあります。
ここ数年のロードマップを発表していました。
- IronPython 1.1は2007年4月リリース予定
- IronPyton 2.0は2008年初頭にリリース予定
- CPython2.5相当の機能(IPy1.1は2.4+一部2.5)
- IronPython 3.0は2009年リリース予定
また,会場ではASP.NETやxna(ゲーム用フレームワーク),Microsoft Robotic Studio(!)などとIronPythonを組み合わせたデモをしてくれました。IronPythonでウインドウをダイナミックに作って,みたいなデモはよく見かけますが,こういうデモを見ると,IronPythonの可能性を感じますね。なお,IronPythonを動かすには.NETのCode Generationエンジンが必要で,現状Windows MobileやXBoxではIronPythonが動かず,今後解決すべき課題である,と言ってました。
Keynote 3 : Python 3000
Pythonの創始者Guido van Rossumさんのキーノート。アルファリリースが目前に迫ったPython 3000に関する内容。Python 3000の詳細につては,3月2日発売のムック最新Pythonエクスプローラの私の記事などをご覧いただくとして,ここでは書ききれなかったことや新情報を中心に紹介します。
タイムライン
- 2007年4月に仕様をFIX(PEPの完成)
- 2007年6月にα1
- 2008年6月にFinal
- 2.6α1は2007年12月
- 2.6 finalは2008年4月
- 2.7もリリース予定
言語の新機能
- Signature Annotation
- def foo(x: "whatever", y: list(range(3)))のようにして引数や戻り値に制約を設ける文法
- Keywork only parameters
- def foo(a, b=1, *, c=42)のように,パラメータリストの間に"*"を挟むことでキーワード指定のみ可能な引数を指定できる
- 今までだとdef foo(**kws)とかで受けて,kwsのキーを調べるなどする必要があった
- Set型のリテラル表記(!!!)
- 要素をブラケットで囲む。{1, 2, 3} = Set([1, 2, 3])
- Set comprehenshions(集合内包表記?)
- { f(x) for x in S }
- Set型はとても便利なので,これは嬉しい
- 文字列フォーマットの記法を追加
- "{0} {1[name]}".format("abc" {'name':'bar'})のように,出現順とキー,アトリビュートなどを埋め込んで指定できる
- これまでのCっぽいフォーマット記法より直感的で可読性が高いと思います
- nonlocal文
- globalに似た宣言文で,変数を一つ上のスコープのものと指定する
- 入れ子の関数内で一つ上のスコープにある変数に代入したりするときに便利
- 抽象基底クラス
- 抽象型(シーケンスとか辞書風とか)の判別に便利
Becoming an Open Source Developer: Lessons from the Django Project
午後イチのTalk。Django ProjectのJacob Kaplan-Mossさん。「アメリカの片田舎で新聞社用のCMSを作っていたボクが,今やTim Oreillyのキーノートに取り上げられるようになったんだ。これもオープンソースプロジェクトに関わっていたおかげだ」と嬉しそうに言ってました。
「よいツール(=Python)を使え」とか「頭のいい連中とつきあえ」とか「繰り返しは避けろ(DRY)」というような信条をいくつか上げながら,具体的な方策について解説していました。
IPython: getting the most out of working interactively in Python
Pythonの超便利なシェルIPythonのTalk。IPythonは単に「便利なシェル」を目指して作っているわけではなく,数学者や物理学者のような非プログラマにPythonを便利に使ってもらうことを目指して作ってるものだって始めて知った。
プロセスをまたいで使えるヒストリ機能とか,出力の参照とか,アトリビュートの補完とか,IPythonはシェルとしても十分便利なのですが,起動時にオプションを与えることで使えるプラグインを組み合わせるともっと便利に利用できます。たとえば,複数のサーバ上にあるPythonを一つのコンソールでコントロールするとか(グリッド環境で利用することを想定した機能らしい),GUIのイベントループ実行中にコンソールに制御を残したりとか。独自のプラグインを作って拡張することも可能。なかなか面白そうなので,機会があったら活用してみたいと思います。
A Program Transformation Tool for Python 3000
Jeremy Hyltonさんによる,Python 2.x -> Python 3000へのコードコンパートツールのお話し。JeremyさんはZODBの開発者で,2004年にZope corp.からGoogleに移籍した人です。
Python 2.6に搭載される予定のコンパートツールは,たんなるテキストパーサ+変換器ではなく,Pythonのパーサーを使ってASTの木構造を解析して,コードの変換を行ってるようです。正規表現とかに安易に逃げないところがPythonistaの素晴らしいところだと思います。なんでもPytnon 2.xのコードのうち,だいたい90%以上は問題なくコンバートできるらしい。
Lightning Talk
二日目の夜に行われたLightning Talkで喋ってきました。お題は「State of Python Community in Japan」。全米デビュー。笑いのツボが全然分からなくて,かつ英語のプレゼンなんて初めてなので超緊張したけれど,爆笑を取れたので一安心。PyJUGや「みんPy」の宣伝も出来たしね。笑いという点では,同じくネタ系のプレゼンをしていたIan Bickingに勝った!(当社比)ので大満足:-)。みんなのPythonを紹介したとき,そしてトークが終わった時に会場全員からもらった拍手はとても嬉しかった。LTで顔を出して話をすると,会場の人が話しかけてくれるので楽しいです。
PyConのLTで喋ることは,今年のPrimary missionでした。Secondary Missionについては,翌日達成されることになります。
夜
アクセンスの方々とGalleriaにお買い物。バナリパ,アバクロ,ホリスター。スケート場のある階で夕食を食べて帰ってきました。