Djangoで遊んでみて。。。


少し前からDjangoというPythonで書かれているWebアプリケーションフレームワークをいじっている。チュートリアルを学んでからほんのちょっと自分の考えたアプリケーションを作ってみたりしてみて、なんとなく概略がわかってきたので自分の理解をまとめてみたりしている。

Djangoはとてもシンプルだ。MVCのControllerの部分は正規表現で書かれたURLのパターンとそのパターンにヒットしたときに呼び出されるViewの組み合わせによってurls.pyというファイルに記述される。Viewはviews.pyというファイルにPythonの関数の形で記述する。たいていはhttpのレスポンス(中にはFormが含まれたりする)を返したり、他のページへのリダイレクトによって関数から抜ける。それがブラウザになんらかの結果を表示することになる。Viewはその見てくれの部分をTemplateとして記述しておくこともできる。Viewの関数の中でModelを参照し、必要なフィルタリングを行ったりしてTemplateに渡してやるとTemplateの中でModelの各要素を参照することができるのだ。で、Modelはmodels.pyの中にモデルごとのクラスとして記述する。models.pyをきちんと記述したら、プロジェクトのsetting.pyに設定したDBにマッピングされる。通常プログラムはModelをアクセスするからDB表を意識することはない。ざっくりいってしまうとこれだけの機能でアプリケーションを作ることができる。

もちろん実用的なサイトを作るにはCSSだのJavaScriptだのを使って飾ってやる必要があるのだが、基幹的な部分はsettings.py,urls.py,models.py,views.pyを記述することなのだ。もうちょっと書きやすくするためにTemplateを使ったりFormクラスを使ったりすることもあるし、Modelのフィルタリングのメソッドを理解する必要はあるが、比較的少ないルールを覚えるだけである程度のWebアプリケーションを書くことができる。実際にやってみるとなかなか感動的だ。

DjangoはGoogle App Engineでも使うことができる。Javaでサーブレットを書くよりもずっと簡単にアプリケーションを書くことができそうだ。

残念なのはPython系に共通して言えることだけど、日本語のドキュメントが少ないことだ。特に書籍は絶望的。Google App EngineもJava人口が多いことを意識してか書籍はJavaベースのものばかりだ。まあ、英語のドキュメントを読むのが極端に苦手じゃなければ大元のドキュメントとあわせてコードを読むだけで大半の問題は解決できるだろうけど、英語が苦手な技術者というのもまた多いような気がするから、日本語のドキュメントがもっとあったらなあと思う。

日本にはRubyという優れた言語の開発者が居たりするのに、プログラムの開発といえばJavaだとかC++が本格的なのだと思っているシステム開発者が(特にメーカー系ソフト会社に)多いような気がする。もちろんこれらがダメだというわけではないのだが、もっとライトな開発に目を向けないとインターネットのスピードについていくのは難しいだろう。

デスマーチばかりのシステム業界の問題は勇気を持ってライトなフレームワークを使うということでかなりの部分が解決できるのではないだろうか?

残念ながら技術者に楽しくプログラミングに専念できる環境を与えているソフト会社は少ない。業界の問題の根っこは結局そのへんにあるというのもあながち言い過ぎではないのだけれどね。

だからDjangoのようなライトなフレームワークでちょちょいと遊ぶというのをやってみるのは良いことなのではないかな。

カテゴリー: おもしろ, 働き方, 学び, 技術 タグ: , , , , パーマリンク