Flask

とりあえずFlaskというやつが新しく出てきたみたいなんで試してみる。

あ、僕は右も左もわからないさっきPythonをはじめたばかりの初心者なんでこのページを見に来た人はオフィシャルにいきましょう。Warning!僕は今自分が何をやっているのかすらわかっていません。

Flask v0.1 documentationを読んでみる。

Foreword読みました。が、まずわかってません。とりあえず小規模でいいならFlask使えば?みたいな感じなので触れてみることに。ただ僕はその小規模で何をやるのかすらわかってないですが。むしろ何が出来るの?みたいな。でも入れちゃえみたいな。

Installation
とりあえず環境を構築するのにvirtualenvとかいうやつが今はやりらしくて、それを使ってその上にFlask入れてねみたいな感じなのでそうしてみる。

ただ、もちろんこんなことをしたのは初めてなので、ちゃんとインストールできるのか不安である。また、ルーターを通して接続しているのでちゃんとWeb Developmentなるものが出来るのかとても不安である。別に常時起動じゃなくてもいいんだけど。ローカルにはさすがにつなげるだろ。どんな環境でも。と思って進めてみる。何もかもが手探りである。何故進めようと思った俺。それはただ今これが一番面白そうだから、それだけに過ぎない。まぁ、そんなものでいいのさ。きっと。

$ su
$ easy_install virtualenv

easy_installじゃなくてpip使ってみればよかったなぁ。
いや、debianだし、おそらくこれもあるのかsudo apt-get install python-virtualenv
一応、スナップショットはとってるので、後から色々試してみようかな。

$ mkdir myproject
$ cd myproject
$ virtualenv env
New python executable in env/bin/python
Installing setuptools............done.

myprojectどこに作ればいいのかわからないけど、とりあえずhomeディレクトリ直下に作成んで移動して、普通にこれも通っちゃって気持ち悪いです。

source env/bin/activate

これやったらシェルプロンプトが気持ち悪い(env)付のに変わりました。

easy_install Flask

env環境にて、Flask導入のためJinja2とWerkzeugも落としているようです。Flaskインストール完了されたっぽいです。もう書いてあることそのままです。はい。さすが4月の10日だかに発表されてるだけはあるわ。最新ね。

Quickstart お、やっとはじめられます。
ちなみに(env)ってなってるenv環境(env環境と呼んでいいのかすら不明)だからかわかりませんが、.bashrcに記述したはずのaliasとか吹き飛んでる予感です。emacsemacs -nwが起動する気持ち悪いalias動作が出来なくなってました。

A Minimal Application
とりあえず今Emacsにてhello.py手打ち中。

python hello.py
* Running on http://localhost:5000/

もうほんとそのまま。Icewiesel(笑)で起動。Hello World!おう、こんにちは。
やっぱりWindows環境では起動しないようだ、VirtualBox限定のようだ。ルーター挟んでネットに接続してるからどうとか思ってたけど、localhostがなんちゃー知らんが、localhostさんには関係ないらしい、むしろwinから見れたらいいのに、そう出来ないあたり期待してたより見えてる範囲少なそうだな。つうか、VirtualBoxDebianさんからしか見えないのかむしろ。これは。まぁ、いいや、進もう。個人的にはHello World!見れたら早くも満足なんだけど。
後はど素人がどこまで進めるかな。

と思っていたら早くもコードの解説ですよ。勘弁してくだちぃ。どう見てもそれなりにPython学んだ人の為のドキュメントというかツールでした、本当にありがとうございました。

だが、断る。というか進んでみる。初めてこういう本格的なのにまじめに触れてるだけあって割りと楽しいような気がする。

1. first we imported the Flask class. An instance of this class will be our WSGI application.
2. next we create an instance of it. We pass it the name of the module / package. This is needed so that Flask knows where it should look for templates, static files and so on.
3. Then we use the route() decorator to tell Flask what URL should trigger our function.
4. The function then has a name which is also used to generate URLs to that particular function, and returns the message we want to display in the user’s browser.
5. Finally we use the run() function to run the local server with our application. The if __name__ == '__main__': makes sure the server only runs if the script is executed directly from the Python interpreter and not used as imported module.

とりあえずこれは、マジで何を言ってるのかわからねえが……、状態。

To stop the server, hit control-C.

ここだけ理解できるな。うん、ていうかこれサーバーなのか。ふーん状態。マジでうぜえな俺なんでFlaskとかいう新しいのをこの段階ではじめようとしているのだろうw

今気づいたけど、このドキュメント割と短い気がするな、何から何まで手助けってわけじゃなくてFlaskの動き方を説明するだけのきっちりしたドキュメントか。じゃあなおさらなんで俺勉強してんだw

Debug Mode

app.debug = True
app.run()

上のこれはもはやどこに書けばいいのかわからない状態。なので華麗にスルー。

app.run(debug=True)

こっちはさっき書いたソースの一番最後の括弧の中にdebug=Trueでそれっぽいモードで起動した。
んで、その後に一回Terminal閉じたんだけど、その後env環境にどうやって入るん?と思ったけど、さっき作ったmyprojectのディレクトリからsource env/bin/activateでenv環境に入れた。なるほどねぇ。

さっきから気になってるんだけどユーザの画面でmitsuhikoってあるけど、そのみつひこさんどうもTwitterとかで見る限り外人なのよね、どうしてだ。

debugモードには入ってないけど、まぁ、いつか勝手にバグ作って入ることになるだろうからスルーアウト。

次へ参る。

Routing
と思ってここでさっき作った、hello.pyを編集しようと思ったらsuで色々してたからmyprojectとかhello.pyとか全部root権限で作って一般ユーザには書き込み権限がないようになってしまってたwちょw

後学のためにこの辺の権限周りのところをきっちり学んでおくかのう。
というわけでFlaskはこの辺で終了wはやかったw