Flask始めました
ここのところ忙しくてPythonとScalaの両方を触る(主に心の)余裕がなさなさなので、スキマ時間を見つけてはPython製のマイクロフレームワークであるFlask触っておりますデス
Flaskを触るまで
当初はDjangoでイロイロとやろうとしてたのですが...
- Djangoの枠組みに乗っかればいいところを無理やり俺俺ルール(User modelを自分で定義したいとか云々)でやろうとしたり...etc
- そして当然のように発生した(自業自得的な)Djangoルール回避コードが増えてきたり...etc
- なにかやるたびにDjangoの壁が立ちはだかるようになったり...etc
という、正直言ってDjangoを使いこなせていない…という状況が重たくなってきたところで、次のような記事を見かけて、これ幸い!とあっさりと乗り換えてしまったのです。
Flaskが好きな(暫定的で個人的な)6つの理由
以下、Flaskをお気に入りっている理由を羅列してみます、結論としてはコンパクトで必要十分ってことにまとまってしまうのですが…一応ソレっぽく書いてみますよ(`・ω・´)
独自ルールが少ない
乱暴に言ってしまえば、Flaskが提供するのはViewを呼び出すためのルールとその周辺ツールなので、ソレ以外に関するモロモロのルールは自分で定義することができます。
そのため、私のようなマイペース人間でも思いつきをフレームワークのルールによって遮られないので、実装のストレスがかなり少ないです…まあ、ここらへんは人間性にもヨルと思いますが…やりたいことを素直にやれないのはストレスになる性質なので(´・ω・`)
必要最低限のコンパクトなサイズ
マイクロフレームワークと銘うってあるとおり、Flask自身はとてもコンパクトサイズのため、必然的に覚える内容が少なくて済むのです。
また、これは個人的な相性の問題だと思うのですが、用意されている機能やツールが本当にかゆいところに手が届く親切設計だと思います…うん、Djangoにも同じような機能は用意されているから単純にDjangoを使いこなせていなかっただけかも知れないけども(´・ω・`)
ただ、この機能一覧をざらっと読む気になれる学習コストの低さはここしばらく求めていた手軽さだなぁ…と、一人で悦にはいっております。
拡張もできますよ
Flask自身はコンパクトでも追加モジュール的にExtensionsが多数用意されているので、足りない機能は補うことが出来ますデス(´・ω・`)
しかもPyPI対応しているものも多いのでsetuptoolsで楽ちんインストール出来ますね(`・ω・´)virtualenv使えば環境管理もお手軽ですし
オフィシャルをザザッと眺めると、たとえば次のようなExtensionsが用意されていますな
- ORMapper : Flask-SQLAlchemy
- Testing : Flask-Testing
- Form : Flask-WTF
- etc...
とりあえず上記のようなExtensionsを組み合わせるだけで、それなりに高機能な開発フレームワークにクラスチェンジ出来る感じです。
サイズが小さいのでソースコードを読みたくなる
まだ日本語を含めた情報が多くないので、つまずいたときには大元のソースコードにあたることが多いのですが、フレームワーク自体のサイズが大きくないので、余り苦にならないのデス
良いソースコードを読むのは勉強になるので、これはいい傾向ですな(`・ω・´)
それなりの規模にも対応できそう
機能のモジュール分割に関する仕組みも用意されているので、中規模程度のアプリケーションには十分対応できそうな感じです。設計次第では大規模アプリも作れるんじゃないかな?パフォーマンスでるのか試してみたいところですが(´・ω・`)
少なくてもモジュールに分割できるので、数人で共同開発なんていうことも十分可能な仕組みが提供されていますデス。
そんな感じでちょこちょこいじっております
なかなか日本語の情報が見つからないですが、時には英語と格闘しつつ、時にはソースを読みつついじって楽しんでおりますデス
久しぶりに、チョットした時間ができたら無理やりにでもコード書いてる&思考の空き時間にFlask使ったコード設計を自然に行なっている、くらいお気に入りを見つけました(`・ω・´)
Flaskが気になった人は
Flaskオフィシャルの内容に沿ってHello Worldしてみてください、そしてQuick Startでお試しアプリを書いてみてください(`・ω・´)この手軽さはとても癖になりますよ(゚∀゚)
ちなみにドキュメントの日本語訳版はこちらにありました
http://a2c.bitbucket.org/flask/
個人的には素敵な相棒を見つけた気分
そんなわけで、ちょこちょこFlaskを使ったアプリを書いているところ(正確に言うとDjangoで作りかけてたものをFlaskに移植中)なので、進行形でボロボロでてきているちょっとしたつまずきや小ネタなんかを時間を見つけてブログっていきたいと思います(`・ω・´)
それではHave a nice Flask!