昨年の約2倍の480人超の参加者
DjangoかPyramidか!? 火花散るパネルに注目のPyCon JPレポート
2012/09/24
Pythonコミュニティが開催する「PyCon JP 2012」が、東京の産業技術大学院大学で2012年9月15日から17日まで開催された。PyCon JPは世界中で行われてるPython Conference(PyCon)の日本版で、今回は2回目。「つながるPython」のテーマのもと初の併設イベントも開催され、東京開催にも関わらずヨーロッパ、オーストラリア、台湾など各国のPythonistaが集うなど、前年のほぼ倍の480人を超える参加者が集まり盛り上がった(レポート:タイムインターメディア・飯野卓見)
PyCon JP本編ではPython製サービスの事例として写真共有サービス「SnapDish」やNIFTY Cloudに新しく加わったPaaSの「C4SA」のアーキテクチャ紹介、Pythonの非同期IOフレームワーク、「Gevent」と「Tornado」の発表、Pythonとハードウェア親和性の良さからArduinoを使ったミニ四駆の制御など、様々な分野のセッションが行われた。
併設イベントでは、Webフレームワークのデファクトスタンダードである「Django」と、いち早くPython3に対応した「Pyramid」の合同カンファレンス「Django & Pyramid Con JP」が開催されたほか、Python製のドキュメント作成支援ツール「Sphinx」のカンファレンスとして「SphinxCon JP」が、またスクリーンリーダー「NVDA」の「NVDA WorkShop in Japan」なども開催。開発プラットフォームとして、Google App Engineの「App Engine Conference」も行われ、個性豊かな面々がそろった。
ここでは、筆者が参加者として気になったセッションとして、1日目の基調講演と2日目最後のセッションであるWebフレームワークパネルディスカッションをレポートする。
基調講演: Happiness Through Ignorance
基調講演はArmin Ronacher(@mitsuhiko)氏による、ソフトウェア開発における幸せについての話だった。彼は、Pythonで人気のあるWebフレームワーク「Flask」の作者であり、SphinxやJinja2を作成してるpocooチームの創設メンバーの1人だ。
なぜ幸せが必要か? その話から講演は始まった(発表スライド:Why Ignorance Matters.)。プログラミングが大好きだからこそ幸せであることが重要だ、Pythonを使う理由は、Pythonによって自分たちが幸せになれるからであるというメッセージが伝わってくる講演だった。
無知であることも幸せであるとArmin氏は説く。教育を受けて大人になると、「誰かが答えを持っているのではないか」、「これから始めることはすでに解決されているのではないか」と不安になりがち。これでは新しいチャレンジを始められない。無知な方がチャレンジができるとArmin氏はいう。
無知であるほうがチャレンジができるということの例としてArmin氏は、Wolfireの「Lugaru」というオープンソースの3Dゲームを挙げる。Lugaruというゲームは、とても効率の悪いスクリーンショットメソッドや、各フレームの毎に呼び出される1万行、12レベルのインデントの関数があるという。ただ、ソフトウェアアーキテクチャはメチャクチャであるものの、このゲームは成功した。ソフトウェアアーキテクチャに関して無知であっても成功する3Dゲームは作れる、というわけだ。
情報過多の時代、シンプルな技術を選べ
では実際に不安を感じながらも一歩踏み出すには、具体的にどうすれば良いのだろうか。Armin氏は、とにかく1つテクノロジーを選んでスタートすべきだと言う。手を動かして、ステップ・バイ・ステップで進むのが成長の道。このとき、なるべくシンプルな技術を選ぶべきだとも言う。複雑な技術を選択した場合、それだけ覚えることが多くて大変で、幸せになれないからだ。
ソフトウェア開発で幸せになるアドバイス
ソフトウェア開発で幸せになるためには具体的にどうすれば良いのか。Armin氏の個人的な経験から、以下のように、いくつかのアドバイスをしている。
- 具体的な問題と実際の問題の違い
Armin氏はIRCでよく間違った質問を受けるという。例えば「FlaskとGeventを組み合わせるにはどうすれば良いか」という質問だ。この質問の本質は「ブラウザのリアルタイムのイベントをどう扱えば良いか」だ。実装ありきではなく問題点ありきであることを忘れないようにしたい。
- グローバルステートを避ける
グローバルステートは可能な限り避けるべきと言う。ゼロからプログラムを書く場合は利用しがちだが、密結合になりライブラリ化の妨げになるし、依存関係から壊れやすく修正が難しいプログラムになりがちだからだ。今回の基調講演の内容とは外れるが、ソフトウェア開発の重要な設計思想として紹介した。
- 1年前の作品を見て成長を感じる
成長を感じないと不安になり、ストレスもたまる。時折、過去の作品を見て自分の成長を感じるとモチベーションにつながる。
新しいことを始めるとき、作っても無駄ではないか、すでに同じ物があるのではないか、と不安になりチャレンジできなくなることがある。今回の基調講演ではそんな不安について「そんなことは気にしないで、間違ってもいい、一歩一歩進んでいこう」と、強く勇気付けられた。
Webフレームワークパネルディスカッション
PyCon JPの2日目の最後のセッションは、Webフレームワークのパネルディスカッションで、いわゆる“モヒカン”が多いと揶揄されるPythonistaならではの緊張感あふれるやりとりが繰り広げられた。
パネルディスカッションに参加したのは、Pythonで使える代表的なWebフレームワークとしてDjango、Flask、Pyramidの代表者の3人。それに加え、プラットフォームとしてGoogle App Engineの代表者がパネラーとして集まった。
Django 露木 誠(@everes)氏。日本のDjangoの第一人者。Djangoコントリビュータ
Flask Armin Ronacher(@mitsuhiko)氏。基調講演者でFlaskの開発者
Pyramid 小田切 篤(@aodag)氏。Pyramidコントリビュータで 併設イベント「Django & Pyramid Con JP」スタッフ
Google App Engine 松尾 貴史(@tmatsuo)氏。Developer Advocate on Google App Engineで、併設イベント「App Engine Conference」スタッフ
ほかのフレームワークのイケてないところは?
モヒカンの多いPythonならではのやり取りは、例えば以下のとおりだ。
比較的新しいフレームワークであるPyramidやFlask側から、Djangoに対しては「DjangoはPythonとしておかしい(Pyramid)」、「Djangoは1.4でマシになったが、開発スピードが遅くて、トレンドから3年くらい遅れている(Flask)」という剛速球が飛び出した。これに対してDjango側は、「Djangoの開発メーリングリストでも同様の指摘はあるが、誕生してから7年の歴史があることを考えてほしい。Pythonとして正統な流れはPyramidだと思うが、使うのが難しい。使いやすいのはDjango」と反論。軽量フレームワークであるFlaskに対しては「Flaskはフルスタックでない」とバッサリと切り捨てるなど、火花が散るようなやりとりが行われた。
また、Google App Engineに対して、Flask側から「俺のすばらしいライブラリJinja2が長い間利用出来なかった」などフレームワーク開発者にしかできないような発言も飛び出した。
ほかのフレームワークを使ってみたいとき
ほかのフレームワークに対して「ここがイケてない」と激しいやり取りを行ったパネラー陣だが、逆に、こういう場合にはお気に入りのフレームワークではなく、ほかのフレームワークを使いたくなるという話も出た。
例えば、Flaskからは「Djangoは良い作りをしているし、開発チームが活発で他のフレームワークより改善され続ける可能性が高い」という意見が出た。また、Google App Engineからも「地理情報を扱う場合はGeoDjangoがよい」というように、ユーザーベースが多いDjangoを支持する意見が多く出ていた。
比較的新しいPyramidからは、「メンバーがFlaskを使いたい場合は使う。仕事ならDjango。Pyramidは全員の了承を得られないと開発中のトラブルをPyramidのせいにされる」という弱気な意見が出た。Pyramidは比較的先進的なプロジェクトで、まだまだユーザー数が少ないという辛さが出た格好だ。
実際のフレームワークの棲み分けは?
パネラーや会場の大まかな結論、PythonのWebフレームワークの棲み分けは次の通りだ。
- 比較的大きなシステムを作成したり、メンバーの確保を含めた保守性を考えた場合、定石はDjango
- 小さなアプリケーションの作成や柔軟さを求める場合はFlask
- Python3を使いたい場合や、Pythonとして筋が良いフレームワークを使いたい場合、ハッカー向けはPyramid
- Google App Engineは、どのフレームワークも動くが、特にロードが速いFlaskが有利
気になる各フレームワークのPython3対応
気になるWebフレームワークのPython3対応だが、現状は以下のとおりという。
- Pyramidはすでに対応済み
- Djangoは次の1.5で実験的に対応し、1.6で本格対応予定
- FlaskとGoogle App Engineは現在対応予定なし
FlaskとGoogle App Engineについては、全く対応する気がないわけではなく、要望が少ないので優先順位が低いという状態だ。要望が多ければ対応時期は早まる可能性はあるということなので、使いたい人はぜひフレームワークのイシュートラッカーに要望を上げてみてはいかがだろうか。
2日目最後のパネルディスカッションは、きわどいお題もあったが、フレームワークを熟知したエンジニアの深い意見が飛び出す勉強になるディスカッションだった。筆者は今回のパネルディスカッションで筋が良いと言われるPyramidのアーキテクチャにとても興味が湧いた。PythonでWebアプリケーションを作成する際のフレームワークの選定で参考にしてみてほしい。
PyCon JP 2012に参加してみて
筆者は前回のPyCon JP 2011にも参加したが、日程もセッション数も参加人数も前回の規模を大きく上回り、Python界の勢いを強く感じた。スポンサーも多く付き、ノベルティが充実していたのも嬉しかったところだ。
Pythonista同士の交流も活発で、1日目の夜に行われたPyCon JP PartyではDJブースが用意されたり、ボルダリング(#kabepy)や、ナイロン製の紐の上を歩くスポーツ、スラックライン(#himopy)などのサークルの宣伝が行われた。最近、新しくカレーを食べるサークル(#currypy)も出てきたり、Pythonを通した人のつながりと、その輪は広がり続けている。この自由さもPython界の魅力だ。
来年のPyCon JPは日本限定のPyCon JP 2013ではなく、PyCon Asia Pacificの開催を目指すということで、この勢いはどんどん加速していきそうだ。
情報をお寄せください:
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|
キャリアアップ
- - PR -
転職/派遣情報を探す
「ITmedia マーケティング」新着記事
「ECプラットフォーム」売れ筋TOP10(2025年1月)
今週は、ECプラットフォーム製品(ECサイト構築ツール)の国内売れ筋TOP10を紹介します。
Hakuhodo DY ONEのDMP「AudienceOne」とTrue Dataが連携 何ができる?
ドラッグストアや食品スーパーマーケットの購買データを活用した精緻なターゲティングや...
転売目的の不正注文を出荷前にAIが判別 売れるネット広告社がD2C事業者向けにツールを提供
売れるネット広告社は、不正注文によるD2C事業者の損失を防ぐ新たなサービスを提供開始し...