レポート

「PyCon US 2012」 イベントレポート

この記事を読むのに必要な時間:およそ 10.5 分

いまは世界中でPyConが開催されています。PyConというのはPython Conferenceのことです。それらの中でも一度は行ってみたいと思うのがPyCon(US)ではないでしょうか。

筆者が参加したPyCon 2012は,アメリカのカリフォルニア州サンタクララにあるSanta Clara Convention Centerというイベント会場で開催されました。ハイテク企業の聖地,いわゆるシリコンバレーと呼ばれる地域にあります。来年のPyConもサンタクララで開催されることが決定しています。

本稿の読者もPyConへ行こうと思ったときにその全体像が分かるよう,筆者視点でPyCon US 2012のレポートをお届けします。

Travel:旅行

参考までに渡航記録をまとめておきます。筆者は一人旅行だったのですが,カンファレンス期間のほとんどを,カンファレンス会場に併設されたホテルで宿泊しました。

海外のカンファレンスに参加した経験がない方は,カンファレンス会場と同じホテルに宿泊することを筆者はお奨めします。というのは,次のようなメリットがあります。

  • (特に初日は)移動や会場探しで迷う心配がない
  • 荷物が多くなったら部屋に置いてこれる ⁠受付後や展示ブースでパンフレットやノベルティをたくさんもらう)
  • 忘れものをしても取りに行ける
  • カンファレンス中に疲れたら部屋へ戻って休める
  • 遅くまで会場に残ってイベントに参加したり,他の参加者とやり取りできる

同じホテルに泊まることで移動やちょっとしたトラブルを避けることができるかもしれません。

筆者が本カンファレンスへ参加するのにかかった費用は次の通りです。

項目金額(円/ドル)
PyCon(Individual/Early Bird)\23,800/$300
チュートリアル\11,899/$150
ホテル宿泊費(8泊)\47,672/$577
往復航空券\62,900
その他諸税等・燃油サーチャージ等\55,720
成田空港施設使用料\2,040
成田旅客保安サービス料\500

合計すると204,531円になります。為替が1ドル80円程度でした。この中に食費は含まれていませんが,今回のカンファレンスでは,朝食・昼食共に提供されていました。カンファレンスの参加費は,企業/個人/学生の3つの区分に分かれています。私は個人で参加しましたが,⁠早期申し込みで)企業が支払う場合は$450,学生なら$200になります。

往路は成田 - ロサンゼルス - サンノゼと空路で移動しましたが,復路はサンタクララから電車でサンフランシスコへ移動し,サンフランシスコから成田への直行便にしました。サンタクララ - サンフランシスコ間は,カリフォルニア高速鉄道の普通電車で1時間20分でした。電車が空いていたのと,車窓からの眺めが良くてとても快適でした。

PyCon 2012 概要

PyCon 2012は,大きく3つのフェーズに分けられます。

3月7日,8日の2日間はチュートリアルです。チュートリアルというのは,有償のセミナーです(1つにつき$150)⁠3月9~11日の3日間がカンファレンスのメインとなる講演です。基調講演を始め,様々な講演やライトニングトークスがありました。3月12~16日の4日間がスプリントという参加者の有志によりグループ(プロジェクト)単位に分かれ,それぞれのテーマに取り組む開発イベントです。スプリントは主にその対象のプロジェクトのバグ修正や機能拡張を行います。

基調講演が行われたカンファレンス会場

基調講演が行われたカンファレンス会場

Tutorial:チュートリアル

チュートリアルは,8部屋 x 2(午前/午後)x 2日間 = 32個のセッションがありました。初心者向け,経験者向け,内容も様々なものが用意されています。

試しにGraph Analysis from the Ground Upという,初心者向けのグラフ解析のチュートリアルを受講してみました。講師はVan Lindbergです。時間は3時間20分,参加者は40人程でした。

グラフとは,点と線から成り,点に名前を付けて,それらを紐付ける線に意味付けしたものだと説明していました。この考え方は,世の中の色んなものごとに対して適用できて便利なツールになります。データを解析するにあたってグラフでモデリングして解くという考え方そのものが,筆者にとってはこれまで触れたことがないもので新鮮でした。

チュートリアルでは,グラフ理論の基礎,身近な例の紹介,networkxを使ったPythonでのプログラミングなどを行いました。例えば,networkxを使って,ディレクトリ構造をグラフで表現すると次のようになります。

ファイルシステムのグラフ表現

ファイルシステムのグラフ表現

$ tree foo
foo
├── bar
│   ├── baz
│   │   └── f1
│   └── f1
├── f1
├── f2
├── f3
└── hoge
     ├── f1
          └── f2
import os
import networkx as nx
import matplotlib.pyplot as plt

def build_fs_graph(directory):
    g = nx.Graph()
    for root, dirs, files in os.walk(directory):
        for node in dirs + files:
            g.add_edge(root, os.path.join(root, node))
    return g

g = build_fs_graph("foo")
nx.draw(g)
plt.show()

講師のVan Lindbergは一般の講演も行っていて,そのセッションではPython-Devメーリングリストの以下のような事柄に対して,どのようにグラフでモデリングして解析するかを解説していました。

  • 誰と誰がよく話しているか
  • メーリングリストの中で関心の高い話題は何か
  • “最適化”という話題に対して最もコメントしている人は誰か

以下から講演内容とビデオが参照できます。

PyWeb Summit:PyWebサミット

3月9日にチュートリアルとは別にPYTHON WEBDEV SUMMITというパネルディスカッションがありました。PythonによるWeb開発に関する様々な話題について,それぞれのプロダクトの開発者が集まって議論するイベントでした。

Python Web Development Summit

丸1日に渡り,6つの話題について議論されていました。一番最初のWebアプリケーションのデプロイについて紹介します。このパネルディスカッションのパネリストには,PyCon JP 2011で基調講演をしているTarek Ziadeもいます。

パネリスト(左から Jim Fulton,Tarek Ziade,Kenneth Reitz,Ian Bicking,Nate Aune)

パネリスト(左から Jim Fulton,Tarek Ziade,Kenneth Reitz,Ian Bicking,Nate Aune)

モデレーターのJacobからJavaのWARファイルでデプロイするような仕組みがPythonにはないという話しから議論が始まりました。

それに対してIan BickingのPython application packageのアイディアという記事を受けて,Pythonアプリケーションのデプロイで標準的な方法を確立するための議論がなされました。設定ファイル,依存関係,エントリーポイントの定義をどうするかという観点で,この話題はWebアプリケーションに限ったものではないという意見もありました。

また,Pythonパッケージではない外部ライブラリの依存関係をどうするかについて,Python 3.3で導入されるpackagingライブラリでは,Requires-Externalというメタデータでそのヒントを与えられます。ただし,RedHatのRPMやDebianのdebパッケージでは,そのパッケージ名が違うためにRequires-Externalを使ってインストールを自動化できるかどうかは懐疑的なようです。

またC拡張ライブラリを必要としないPythonアプリケーションであれば,比較的デプロイは簡単ですが,そうではない場合だとコンパイルが必要だったり,依存関係が複雑になったりするため,なかなか難しいです。

最終的にパネルディスカッションのまとめとしては,多くの人が興味をもっている話題なので,デプロイの標準方法の仕様の草案に取り組もうといったものでした。

興味のある方は,TarekによるWebDev Summit Reportも参考にしてください。

著者プロフィール

森本哲也(もりもとてつや)

一介のプログラマ。

自分で設計して,自分で開発して,自分で直せるような独立したプログラマを目指している。OSSコミュニティのゆるい人のつながりが性にあっていてPythonプログラミングが好き。共訳書に『エキスパート Pythonプログラミング』(アスキーメディアワークス)がある。

Twitter:@t2y

ブログ:http://d.hatena.ne.jp/t2y-1979/

コメント

コメントの記入