Allied ArchitectsAllied ArchitectsEngineer Blog

DjangoによるWebアプリケーション開発(その1)

2014/04/30 Python

はじめに

お久しぶりです。関根です。
最近社内でもPythonDjangoに関する話題を耳にする事が多くなって来ました。
個人的にはとても嬉しいです。

Djangoは素晴らしいフレームワークで、公式サイトのドキュメントも非常に充実しています。
ただ一方で日本語の情報や、これからDjangoを初めてみようという方には、
若干敷居が高く、まだまだ情報が不足しているのでは無いかと思っています。

そこでDjangoの大まかな概要を把握したあとに、最新版のDjangoを利用して
開発の流れを理解できるような記事を書いていければと思いました。

今回から数回にわけてDjangoに関する記事を書いていきますので
是非一緒に手を動かしてアプリケーションを作って頂ければ幸いです。

今回はまずDjangoの大まかなイメージを掴めるように、概要の説明をさせて頂きます。

Djangoとは?

Django(ジャンゴ)とはPythonで書かれたオープンソースの
Webアプリケーションフレームワークです。
Python製のフレームワークとしては他にも、FlaskPyramidなどが存在します。

もともとはニュース系のサイトを管理する為に開発され、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を使用すると閲覧する事ができます。
すばらしいですね!

機能

Djangoでは主に下記の機能をサポートしています。

  • O/Rマッパー
  • 正規表現ベースのURL管理
  • 自動生成される管理画面
  • テンプレートシステム
  • キャッシュシステム
  • 国際化サポート

事例

国内外で様々な事例があります。
有名なサイトだと下記のような実績があります。

参考リンク

終わりに

今回はDjangoの大まかな概要および設計哲学を説明させて頂きました。
次回からは実際にDjangoのフレームワークを使用してWebアプリケーションを作成して行きます。
ぜひお楽しみに!

sekine
  • sekine
  • ソフトウェアエンジニア
  • Python、JavaScript関連の話題を中心に、ソフトウェア開発全般に関するお話を書いていこうと思います。

RELATION ENTRY

「Pythonエンジニア養成読本」を執筆しました

「Pythonエンジニア養成読本」を執筆...

2015/04/20 Python

こんにちは。関根です。 このたび機会を頂き、共著にて「Pythonエンジニア養成読本」を執筆させて頂きました。 技術評論社のサイト * 「Pythonエンジニア養成読本」 「Pythonエンジニア養成読本」は、Pythonによる開発を行うために知っておきたい知識を1冊にまとめた書籍です。...

続きを読む

Pythonの軽量WebフレームワークBottleを試してみた(その1) – ルーティング編 (Advent Calendar 23日目)

Pythonの軽量WebフレームワークB...

2014/12/23 Python

この記事はPython Advent Calendar 2014 - Qiita 23日目 兼 アライドアーキテクツ Advent Calendar 23日目の記事です。 こんにちは。関根です。 最近は社内の有志でPythonの勉強会を開いたり、 また定期的にPythonもくもく会などを開催し...

続きを読む

sekineの記事一覧へ

ページTOPへ