図書館情報学を学ぶ

はてなダイアリーで公開していたブログ「図書館情報学を学ぶ」のはてなブログ移行版です。

Python+Djangoを学び始めました

卒業研究でWebベースのシステムを構築するにあたって、サーバーサイドのプログラミング言語をどれにするかで悩んでいたのですが、id:katz3さんに倣ってPythonとすることにしました。私の所属している研究室ではRubyPHPを選択する人が多いので物珍しい目で見られています。
フレームワークDjangoを選んだのですが、これが非常に使いやすいので少し紹介したいと思います。
Webフレームワークの多くはMVC(Model・View・Controller)という概念のもとに設計されています。Modelによって扱うデータを定義して、Viewによって取得したデータを表示するUIを作成し、Controllerによってユーザーがデータを入力・操作するUIを作成する、というのがMVCによるWebサービス構築の流れになります。プログラムの役割が適切に分割されている点は素晴らしいのですが、画面にプログラム結果を表示させるのにMVCすべてを定義する必要があるので、若干面倒に感じます。
Ruby On Railsは既にあるサンプルプログラムをコピー・修正して自分のサービスを構築するという方式でこの問題を解決しています。ただ、この場合プログラムの中身がブラックボックスになりがちで、自分でプログラムした実感が湧かないという問題があります。
Djangoでは、「Django Admin」というモデルを操作するインターフェースを備えた汎用的なアプリケーションが附属しており、Modelを定義するとすぐにAdminによってデータを追加したり表示させることができます。phpMyAdminをもっとWebサービス寄りにしたような感じですね。このAdminがあるので、データの定義をするだけでも、最低限のインターフェースを備えたシステムとして使用することが出来ます。なので、プログラムを自分で書きながら、サービスを構築している実感を得やすいという利点があると思います。
Ruby On Railsと比べると、Railsがすべて一旦作ってあげる方式なのに対して、DjangoはControllerやViewに行き着くまでの補助輪を付けてくれている方式であると言えます。
自分もまだModelの定義までしか勉強できていないのですが、自分の卒研日誌の記録システムを構築してAdmin上で利用しています。手作り感と達成感のバランスが良くて中々楽しく学習できています。
まだ自分の周囲では使われていないPython(+Django)ですが、これから学習しつつ、他の人々にアピールしていきたいなと思います。

関連書籍

Djangoについて解説した数少ない書籍。MVCの考えに沿って分かり易く解説されています。後半でブログツールをDjangoで作るチュートリアルがあります。