PyCon JP 2012参加レポート

第2回 17歳のVPS構築記,Python3の最新情報からソーシャルゲーム,WebフレームワークとPythonの話

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

Webフレームワークパネル

Flask作者でPyCon JP 2012で初日キーノートを行ったArmin Ronacher氏,django-ja設立メンバーのひとりである露木誠氏,Pylonsproject.jp代表の小田切篤氏,Google App EngineのAdvocateである松尾貴史氏がそれぞれFlask, Django, Pyramid, Google App Engineの利点と欠点について激論を交わしました。

Webフレームワーク自己紹介

まずは,各Webフレームワークの自己紹介が行われました。

Flask

Flask開発のきっかけはエイプリルフールのジョークとして作ったフレームワークでした。もともとジョークであったこのフレームワークの後に,まともなフレームワークを開発しようということでFlaskを開発しました。Flaskは開発者に使い方を強いることなく柔軟に,自由に使えるフレームワークになることを目指して開発しました。

Django

Djangoの大きな功績はWebの開発事情を変えたことだと思います。

Djangoはフルスタックのアプリケーションで,このフルスタックというのはMVCのレベルにとどまらず,世界各国の郵便番号のバリデーションができるなど,アプリケーションを開発する上で必要な機能が詰め込まれているという意味だそうです。

InstagramやPinterestなどで使われるなど数多くの実績を持っていることも特徴です。また,PyCon JP 2012の参加登録のために使われたconnpassというサービスもDjangoを使って実装されているため,PyCon JP 2012来場者の全員はDjango製アプリケーションを利用したことになります,ともおっしゃっていました。

Pyramid

PyramidはDjangoの用に世界各国の郵便番号のバリデーションを持っていませんし,本当にコアになる部分しか持っていませんが,そのコアになる部分のテストカバレッジは100%に保ち続けられている上,ドキュメンテーションのカバレッジも100%に近づける努力がされている質実剛健なフレームワークです。

Djangoなどのようにあっという間にアプリケーションが作れてすごい,という事はありませんが,内部から外側までフレームワークとしてよく作りこまれている上,いたるところに手を入れていけるとても拡張性の高いフレームワークです。

また,Python 3対応は早々に終わらせています。

Google App Engine

Google App Engineは言わずと知れたGoogleが提供するPaaSです。

Google App Engineには2つの面があって,それはプラットフォームとしての面,ウェブアプリケーション作成に必要なライブラリが揃っている面です。Google App Engineの利用を勧めたいのはシステム管理にリソースを割きたくない人や団体で,逆にインフラエンジニアのリソースをすでに持っていたり,ものすごく速い性能を求める場合には向かないのだそうです。

左から,小田切氏(Pyramid⁠⁠,松尾氏(App Engine⁠⁠,Armin Ronacher氏(Flask⁠⁠,露木氏(Django⁠⁠,Ian Lewis氏(通訳⁠⁠,山口氏(司会)

左から,小田切氏(Pyramid),松尾氏(App Engine),Armin Ronacher氏(Flask),露木氏(Django),Ian Lewis氏(通訳),山口氏(司会)

フレームワークを開発する/プッシュするようになったきっかけ

次に,それぞれのフレームワークの開発を始めたり,プッシュしだすようになったきっかけが紹介されました。

Flask

もともとはDjangoなどを使っていましたが,もっと柔軟性のあるフレームワークが欲しくなりました。自分で開発したテンプレートエンジンのJinja2とWSGIライブラリのWerkzeugでウェブアプリケーションを開発していました。

このころにマイクロフレームワークが流行しだしました。この当時の多くのマイクロフレームワークは,ライブラリに依存することは良くない,という風潮により,すでにライブラリとして実装されているものをフレームワークで再実装しているのが多く見られました。このことは良くない,と思いエイプリルフールに記事を書き,ジョークのフレームワークを公開したところ,多くの人の支持されたため,これがFlask の開発につながりました。

Django

Railsが2004年に発表されて猛威を振るっていました。この頃のPython にはWebのフレームワークが100個くらいあり,言い換えればよくわからないものが100個もありました。有名どころはZope, Ploneでしたが,これは簡単に触れるものではありませんでした。そんな折,2005年の4月にDjangoがオープンソース化されました。Djangoにはリーズナブルな機能が現実的に用意されていました。簡単に言いかえれば,簡単に触れるのに普通なものが手元にある,このことからDjango推しになったそうです。

Pyramid

小田切氏がPythonを始めたころはすでにWebアプリケーションならZopeを使う,という流れになっていてZopeを使っていましたが,Ploneが出てきたあたりから追いきれなくなり脱落したそうです。

TurboGearsが出てきたことから,再びPythonでのウェブ開発に戻って来て,WSGIライブラリなどを追っかけている内に,TurboGearsがPylons上に移植されました。

RepozeというZopeのコンセプトやコンポーネントをWSGIでも使えるようにしようというプロジェクトが出てきたことにより,再びZopeをやれると思いましたが,Repozeで使われていたフレームワークがPylons Projectに合流した事によって,小田切氏が追っかけていたフレームワークがすべてPylons Projectに合流し,必然的にPyramidを推すことになったそうです。

Google App Engine

SIerをやっていたころにGoogle App Engine が公開され,インフラ以下のことを開発者が気にする必要がないことを魅力に感じて,Google App Engineを好きになりずっとウォッチしていました。インフラの重荷を開発者が背負うこと無く,コードに集中して開発できることで開発者の能力を高められることを素晴らしいと思っているそうです。

自分のフレームワークについてこれだけは言いたいこと

ディスカッションの最後に自分が推すフレームワークについて,これだけは言っておきたい,ということをみなさんが話しました。

Pyramid

PyramidはPython 3に対応しています。

Django

DjangoはまだPython 3に対応していません。しかし,クリスマスに公開される予定のDjango 1.5ではSixを使いイクスペリメンタルなPython 3対応がされます。Sixというのは,Python 2とPython 3の違いを吸収して,どちらの環境でも使えるようにする仕組みのことで,2かける3でSixと呼ばれています。

Flask

現在のところ自分がPython 3を使っているわけでもなく,Python 3でFlaskを使いたいといっているユーザ数も少ないので,Python 3に対応する予定はありませんが,多くのユーザからの要望が寄せられればPython 3への対応が早まります。

Google App Engine

Flaskと同様で,Python 3を使いたいという要望が多くあればPython 3対応が早まります。

まとめ

他にも,互いのフレームワークのイケていない点を指摘し合うなどのとても面白いやり取りが繰り広げられました。しかし,紙面の都合上すべてをお伝えすることができません。セッションの録画がYouTube に公開されていますので,ぜひご覧になることをお勧めします。

筆者は今回取り上げられたすべてのフレームワークをひと通りさわり,その結果Pyramid に落ち着いています。互いのフレームワークのイケてないところを指摘しあうお話の中では,多く共感する部分がありました。各フレームワーク代表者同士の議論がヒートアップしていく様子もとても楽しめました。

著者プロフィール

吉田昂平(よしだこうへい)

高校2年生。小学6年生の時に同級生からウェブサイト制作を依頼されたことからプログラミングの世界に足を踏み入れる。得意とする言語はPython。PyCon JP 2012では,「ナウでヤングな17歳のVPS構築記」というタイトルでセッションをしたことに加え,運営スタッフも務めた。

URL:http://yosida95.com/

Twitter:@yosida95