2011年8月27日(土)に、産業技術大学院大学にて「PyCon JP 2011」 が開催されました。本記事では、同カンファレンスに参加した筆者が、PyCon JP 2011のセッションについて2回に渡ってレポートします。前編ではおもに午前中のセッションの模様をお届けします。なおスペースの都合上、筆者の気になったセッションを選んでお伝えします。
PyCon JPとは?
PyCon JPは、アメリカやヨーロッパをはじめとした10ヵ国以上で行われているPythonのカンファレンス、PyCon の日本版です。日本各地のPythonistaはもちろん、台湾、そしてフランスなど海外からも参加者が訪れました。
参加前
筆者は参加前にguidebookをiPhoneにインストールし、それを使って自分オリジナルのスケジュールを組んで参加しました。これは全体のスケジュールから自分の見たい講演をセレクトすることで、自分だけのスケジュールを作ることができるもので、大変便利でした。次回もぜひ用意して欲しいと思います。
事前に配布されたguideapp。自分好みのスケジュールが作れる
受付
会場に到着して受付をすませました。はがきサイズの名札にマジックで自分の名前と書きます。今回は海外からの参加者も意識してか、英語OKか日本語OKかを示す箇所もありました。
自分の名前を大きく書きます
さらに、お土産としてPythonステッカーと金太郎飴、さらにバッジが配布されました。後で発覚したのですが、この金太郎飴を舐めると舌が真っ赤になるようです。
参加者へのお土産です
Keynote ─Tarek Ziade氏
さっそくカンファレンススタートです。まず最初は、『 エキスパートPythonプログラミング』の原著者であるTarek Ziade氏がはるばるフランスから来日し、パッケージングとPython3について話してくれました。
講演するTarek氏
パッケージングについて
まずパッケージングにおける依存関係、setup.pyの役割、パッケージ管理システム、バージョン管理の仕組み、データファイルの定義についてひと通り問題点と解決法を示した後で、パッケージングについて以下のようにまとめました。
PEP386 準拠のバージョン体系を使うこと
できるだけひとまとめにsetup.pyを作ること
インストーラの利用を前提としないこと
PyPIには不安定版をリリースしないこと
データファイルに気をつけること
パッケージングにはあまり縁のない筆者でしたが、なんだか「Pythonらしさ」を感じたような気がしました。
Python3について
次は、Python3への移行についてでした。
講演当日の段階でPython3系は3.2までリリースされており、パッケージは少しずつではあるが、コンスタントにPython3への対応を進めているとのことでした。Python2系のアップデートでは機能追加はもうしないことを強調していました。
DistributeやNumpy/Scipy、SQLAlchemyなどのパッケージがPython3対応をする中で、Djangoなどの大きなフレームワークがまだ移行できていないことが、Python3への移行が進まない原因なのではないかと語りました。また、PyPyがPython2しか対応していないのもPython3への移行が進まない原因と示唆しました。
Python3への移行を気にせずPythonを使ってきた筆者ですが、個人的に利用しているライブラリなどはほとんどPython3対応してきていることを知り、パッケージングの状況なども含めてPython3への移行をはじめようと思う良いきっかけになるセッションでした。
C APIへの誘(いざな)い
次はPython公式ドキュメントの翻訳で知られる@cocoatomoさんによる、Python C/APIのセッションをご紹介します。PythonからCを使えたり、CからPythonを使えるようになっていることは知っていても、実際の使い方などについてはよく知らないという人も多いのではないでしょうか。
講演する@cocoatomo氏
C API
C APIは、CからPythonが使えるだけでなく、PythonからもCが使える機能です。Cからは、GCにメモリ開放を任せることができたり、文字列操作などができたりと、便利ライブラリとして使うことができるようでした。Pythonからは、インタプリタの拡張として、さらにモジュールの拡張としてCで記述することで高速化できるとのことです。ちなみに、CPython自体もこのC APIを使って実装されています。
C APIの使い方
使い方ですが、公式ドキュメントや、チュートリアルが整備されているので、そちらを参考にするのが良いとのことでした。また、cocoatomoさんのスライド もわかりやすくまとまっているので、そちらを参考になると思います。講演の録画 もUstreamで視聴できますので、そちらもご覧ください!
CによるOOP
Pythonはいわゆるオブジェクト指向プログラミング言語ですが、Cにその機能はありません。クラスを構造体に、メソッドを関数ポインタに置き換えることでその実装を可能にしているとのことでした。とても素直ですね。
Pythonのメソッド宣言で書くことになるselfについて、「 Cにはメソッド呼び出しが無いため、selfを第一引数に入れる必要があるのは自然だと感じられた」とスピーカーのcocoatomoさんは語っていました。
Python/C APIは遠い存在だと思っていた筆者ですが、今回のセッションで身近に感じることができ、何か機会があれば使ってみたいと思うようになりました。
Pythonエンジニアの作り方
次はblockdiagシリーズで知られる@tk0miyaさんによるセッション、「 Pythonエンジニアの作り方」をご紹介します。
講演する@tk0miya氏
Pythonとの出会い
高校からC言語を始め、RubyやPerlなどの言語に触れていた@tk0miyaさん。自身のことを「ギークになりたいギーク見習い」と称していました。筆者もちょうど今そんな心境でいたのて、その言葉にとても共感しました。そして@tk0miyaさんは同僚のPythonエンジニアの清水川さんに勧められ、付き合いで使ってみたのがPythonとの出会いだったようです。
Pythonでの開発
仕事で画面遷移図をVisioで作る機会があった@tk0miyaさんですが、とても時間がかかるので、ツールを作ってみようと思い、せっかくならPythonで作ることにしたようです。「 せっかくアイディアを思いついたので作ろう、必ずリリースしよう、そして新しい技術を取り入れよう」という決心をして開発に取り組んでみることにしたといいます。そうして開発したのがblockdiag シリーズでした。
リリース≠公開
「実際にアップロードしただけじゃ、使ってもらえない」と気づき、勉強会などで作ったツールを発表することを繰り返し、9ヵ月で14回もの発表をしたといいます。それは日本だけではなく、世界まで飛び出し、ヨーロッパのカンファレンス「EuroPython」 でも発表したとのことでした。
その時気をつけたことは、Demonstrableな発表。「 百見は一見にしかずで、デモが重要。皆さんにもおすすめしたい。」と、デモを発表に組み込むことを勧めていました。筆者も何かリリースする際には心がけてみようと思いました。
blockdiag開発をして得たもの
そして、blockdiag開発を通して得たものについて語ってくれました。本やWebで技術について「勉強」することと、実際に「開発」することの違いや、自分からコミュニティにアウトプットしたことで、何か知りたい時に情報を教えてくれるようになった、そして何よりも開発者が物を作り、ユーザが開発者にフィードバックするサイクルを得られたなど、得たものは大きかったと言います。
blockdiag開発をして得たものについて語る@tk0miya氏
まとめ
最後に@tk0miyaさんは「一歩踏み始めれば、次の一歩、もう一歩が続いていく」と語った上で、次のようにまとめました。
ソフトウェアを開発しよう:アイディアのない人は、既存のOSSへの参加を
発信しよう:得た情報はブログや勉強会でアウトプット「アウトプットする時、絶対に否定されない、バカにされない」
楽しくなくなったら、辞めても良いのでは
勉強会やSprint、Hack-a-thonなどで仲間を作ろう
この項が長くなってしまったのは、共感できる部分が多く、皆さんにお伝えしたいと思ったからです。筆者はまだ良いアイディアを思いつかないので、既存のOSSへ何かコミットできたらいいな、と思いました。
ランチとコーヒーブレイク
さて、お昼ごはんの時間です。PyCon JPでは、食堂に参加者が集まりお昼ごはんを共に食べます。今回はこちらのサンドイッチと、飲み物が参加者に手渡されました。
昼食として出たサンドイッチ 美味しかったです
3時にはコーヒーブレイクも開かれ、お昼に昼食を食べた場所でおやつとコーヒーや紅茶を楽しみながら、参加者と会話する時間も1時間ほどたっぷりと設けられました。「 出会い系Python」のテーマに基づいてさまざまな工夫がされているのがわかります。
参加者は自由にお茶やコーヒーが飲める
PCを開いて議論を始める参加者も
Guido氏への5つの質問
本イベントの開催前、イベントの参加者からPython開発者のGuidoさんへ答えて欲しい質問が募集され、このセクション内でそれらの質問の回答が発表されました。質問の内容は「Python以外で言語を勧めるなら何?」や「Python3に移行する上で重要なことは?」などがありました。スペースの都合上紹介はしませんが、詳細な回答はこちら にありますので、興味のある方はぜひ読んでみてください。