はじめに
お久しぶりです。関根です。
最近社内でもPythonやDjangoに関する話題を耳にする事が多くなって来ました。
個人的にはとても嬉しいです。
Djangoは素晴らしいフレームワークで、公式サイトのドキュメントも非常に充実しています。
ただ一方で日本語の情報や、これからDjangoを初めてみようという方には、
若干敷居が高く、まだまだ情報が不足しているのでは無いかと思っています。
そこでDjangoの大まかな概要を把握したあとに、最新版のDjangoを利用して
開発の流れを理解できるような記事を書いていければと思いました。
今回から数回にわけてDjangoに関する記事を書いていきますので
是非一緒に手を動かしてアプリケーションを作って頂ければ幸いです。
今回はまずDjangoの大まかなイメージを掴めるように、概要の説明をさせて頂きます。
Djangoとは?
Django(ジャンゴ)とはPythonで書かれたオープンソースの
Webアプリケーションフレームワークです。
Python製のフレームワークとしては他にも、FlaskやPyramidなどが存在します。
もともとはニュース系のサイトを管理する為に開発され、2005年7月に公式にリリースされました。
今年は2014年なので既に9年の歴史があります。
公式サイトより
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
フレームワークとは
そもそもフレームワークとは何でしょうか?
簡単にいうとフレームワークとはその言葉通り、
作成するアプリケーションの設計や処理の骨格を提供する仕組みの事です。
開発者は決められたルールに基づいて、クラスやテンプレートを作成します。
そして開発者が作成したクラスやテンプレートを、
フレームワーク側が制御して実行する事により、アプリケーションが動作します。
Djangoの哲学
Djangoにはしっかりとした設計上の哲学があり、下記のページに記載されています。
ここでは簡単に要約した内容を紹介させて頂きます。
実際の内容を知りたい方は下記のページより原文を参照してください。
Loose coupling
疎結合であること。
Djangoでは基本的に疎結合であることがとても重要視されています。
フレームワークの主要なコンポーネントは独立しており、
お互いに他のコンポーネントの事を知る必要がありません。
Less code
Djangoのアプリケーションはより少ないコードで使用する事ができます。
Pythonの動的な特徴をとても有効に活用して、アプリケーションを作成する事ができます。
Quick development
Djangoは迅速な開発を提供します。
Don’t repeat yourself
DRY(繰り返しを避ける)
DRYについては下記を参照してください。
http://c2.com/cgi/wiki?DontRepeatYourself
Consistency
全てのレベルで一貫性が必要。
low-level(コーディングスタイル)からhigh-level(Djnagoを利用することで得る経験)まで
Explicit is better than implicit
暗黙よりも明示が良い。
Pythonの設計原則の一つです。
Djangoでは本当に必要な場合のみ、マジックを使用します。
ちなみにPythonの設計原則(Zen of Python)は
Pythonのインタプリタでimport thisを使用すると閲覧する事ができます。
すばらしいですね!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than <em>right</em> now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! |
機能
Djangoでは主に下記の機能をサポートしています。
- O/Rマッパー
- 正規表現ベースのURL管理
- 自動生成される管理画面
- テンプレートシステム
- キャッシュシステム
- 国際化サポート
事例
国内外で様々な事例があります。
有名なサイトだと下記のような実績があります。
参考リンク
終わりに
今回はDjangoの大まかな概要および設計哲学を説明させて頂きました。
次回からは実際にDjangoのフレームワークを使用してWebアプリケーションを作成して行きます。
ぜひお楽しみに!
Python、JavaScript関連の話題を中心に、ソフトウェア開発全般に関するお話を書いていこうと思います。