2013.01.04
Pythonを始めるなら、1ファイルの軽量Webフレームワーク「Bottle」がおすすめ
全てのwebエンジニアがPythonを勉強するべき2013年到来」(2013-01-01)という記事が人気を集めているようだ。巳年(ヘビ年)にひっかけて、これからPythonを勉強したい人を対象に、書籍やライブラリなどを紹介している。有益な情報が多数含まれているが、ちょっとPythonを試してみたいという程度の人には、これだと敷居が高すぎるように思う。

Pythonに限らないが、あたらしい言語をはじめるとき、もっとも障害になるのは「環境構築」だろう。Pythonの場合、LinuxやMacであれば、Pythonインタプリタは最初から入っているので、Pythonそのものをインストールする必要はない。しかし、「そのあとどうするのか?」というのが、なかなかむずかしい。例えば、「Hello, World!」を出すWebアプリを書くには、そこからどうすればいいのか。なんらかのWebフレームワークを使うにしても、それをどうやって入れるのか。それを入れる「環境」は、どうやって作るのか。この「環境構築」こそ、あたらしい言語をはじめるときにブチあたる、最初のカベだろう。

Pythonの「環境構築」は、いまなら「virtualenv」を使うのが最有力のようだ。本格的にPythonをやるならば、virtualenvの設定方法や、pipの使い方などを知る必要があるだろう。しかし、単にPythonでWebアプリをちょっと書いてみたいという程度であれば、そこまでしなくても、軽量Webフレームワーク「Bottle」を使うのがいいと思う。

Bottle: Python Web Framework
http://bottlepy.org/

Bottle」は、「bottle.py」という1ファイルだけでできている。1ファイルだけなので、「インストール」する必要がなく、カレントディレクトリに置いておくだけでいい。「インストール」する必要がないから、「環境構築」が不要なのだ。これは、Python初心者にとって大きなメリットだろう。

Bottleを使って、「Hello, World!」を出すWebアプリを作るには、

1. Pythonインタプリタの確認
2. 適当な作業用ディレクトリを作って、そこに移動
3. 「bottle.py」を置く
4. 「hello.py」(自分のWebアプリ)を作成
5. 「python hello.py」で起動し、ブラウザで確認

のようにする。

1.のPythonインタプリタ確認は、ターミナルで「python」と打って、「Python 2.7.3 (中略)>>>」のように出ればOK。これは「対話モード」による起動なので、ここでは「exit()」などで終了しておく。

3.の「bottle.py」は、現時点でのBottleの最新版のページにある「bottle-0.11.4.tar.gz」を落として解凍すると、中に「bottle.py」が入っているので、それを使う。解凍が面倒な人は、GitHubにある開発版を直接落としてもOK。

4.の「hello.py」は、以下のようなものをテキストエディタで作成し、ファイル名を「hello.py」とする。

from bottle import route, run

@route('/hello')
def hello():
  return "Hello World!"

run(host='localhost', port=8080, debug=True)

(これは公式チュートリアルにあるサンプルコード)

これで、5.の「python hello.py」とターミナルで打てば、Webサーバが8080番ポートで起動する。ブラウザで「http://localhost:8080/hello」にアクセスして、「Hello World!」と出れば成功だ。

これがうまくいったら、チュートリアルの「Request Routing」などを参考にして、「hello.py」をいろいろ変えてみてほしい。

「bottle.py」自体も、Pythonの生きた教材になっている。Bottleはすべてを1ファイルに収めるというコンセプトのため、Pythonでコードを書くお手本にはあまり向いていないが、Pythonでよく使われる表現、テクニックが多数含まれている。「この__call__とか__get__とかいうのはなんだ?」というふうに、自分の知らないものを見つけて、ちょっとずつ勉強していくきっかけにする、というのがいいと思う。


関連エントリ:
Pythonで関数プログラミング入門
http://mojix.org/2009/04/26/python_functional
Pythonを使って、1行でファイル共有Webサーバを立ち上げる
http://mojix.org/2009/03/05/python_one_line_fileserver
Pythonモードがある日本製テキストエディタ 「JmEditor」
http://mojix.org/2008/07/18/jmeditor