FAQ: 一般的な質問

Django というプロジェクトが作られた経緯を教えてください。

Djangoは、非常に実用的なニーズから成長しました。新聞のWebオペレーションであるWorld Onlineは、ジャーナリズムの締め切りに集中的なWebアプリケーションを構築する責任があります。 ペースの速いニュースルームでは、World Onlineが、複雑なWebアプリケーションをコンセプトから公開するまでにほんの数時間しかかからないことがよくあります。

At the same time, the World Online web developers have consistently been perfectionists when it comes to following best practices of web development.

In fall 2003, the World Online developers (Adrian Holovaty and Simon Willison) ditched PHP and began using Python to develop its websites. As they built intensive, richly interactive sites such as Lawrence.com, they began to extract a generic web development framework that let them build web applications more and more quickly. They tweaked this framework constantly, adding improvements over two years.

2005年の夏、World Online は、これまでの開発の成果を Django としてオープンソー ス化する決定を下しました。 Django は Apache, Python, そして PostgreSQL をはじめとする様々なオープンソースプロジェクトなしでは実現しませんでした。そして今、私たちはオープンソースコミュニティに多少なりともお返しできることにワクワクしているのです。

“Django” とはどういう意味で、どのように発音するのですか?

Django は、 1930 年代から 1950 年初頭に活躍した、ジャズの伝説のギタリスト Django Reinhardt にちなんで名付けられました。今日では、Django は史上最高のギタリストの 1 人と評価されています。

彼の曲を聞いてみてください。きっと気に入ることでしょう。

Django は JANG-oh (‘a’ は伸ばす) と発音します。韻は FANG-oh と同じです。 “D” は発音しません。

音声ファイル audio clip of the pronunciation に発音を録音しておいたので、参考にしてください。

Django は安定したプロジェクトですか?

はい、とても安定しています。Disqus、Instagram、Pinterest、Mozilla といった企業が、長年 Django を使っています。Django 上に構築されたサイトは、5万ヒット/秒を超えるトラフィックスパイクにも耐えることができます。

Django はスケールしますか?

はい。開発時間に比べて、ハードウェアというものは安いものですし、それゆえ Django はユーザが投入可能なハードウェアをできるだけ活用できるように設計されてい ます。

Django uses a "shared-nothing" architecture, which means you can add hardware at any level -- database servers, caching servers or web/application servers.

Django のフレームワークは、データベースレイヤやアプリケーションレイヤなどの各コンポーネントをきれいに分離しています。また、シンプルながら強力な キャッシュフレームワーク を備えています。

Django はどんな組織が支援しているのですか?

Django was originally developed at World Online, the web department of a newspaper in Lawrence, Kansas, USA. Django's now run by an international team of volunteers.

Djangoはどのようにライセンスされていますか?

Djangoは 3条項BSDライセンス の下で配布されています。これはオープンソースライセンスで、Djangoを修正して再配布するための幅広い権限を与えています。

DjangoにPythonのライセンスファイルが含まれているのはなぜですか?

DjangoにはPython標準ライブラリのコードが含まれています。Pythonは寛容なオープンソースライセンスの下で配布されています。 Pythonライセンスのコピー は、Pythonの規約に準拠するためにDjangoに含まれています。

Django を使っているサイトを教えてください。

DjangoSites.org を見ると、Django で作られたサイトのリストが見られます。このリストはどんどん長くなっています。

Django は MVC フレームワークのように思えるのですが、コントローラ (Controller) を「ビュー (view)」と呼び、ビュー (View) を「テンプレート (template)」と呼んでいます。なぜ標準的な呼び方をしないのですか?

たしかに、標準的な名前については議論の余地があるかもしれません。

Django の MVC の解釈では、「ビュー」はユーザに表示するデータを記述します。つまり、ビューにはデータの 見せ方 を書く必要はなく、表示したいデータの 選び方 を書くものだと考えます。 ユーザが見るのはどのデータなのか を書くのであって、ユーザに対するデータの表示の仕方 を書くわけではないということです。この二つは明らかに違います。

そのため、Django では「ビュー」は特定の URL に対する Python コールバック関数になっています。なぜなら、コールバック関数は、どのデータを提示するかということを書いているからです。

さらに、テンプレートによってコンテンツとプレゼンテーションの分離がはっきりしています。Django では、ビューはどのデータを提示するかを決めていますが、 ビューは通常、*どのように*データを提示するかをテンプレートに委ねます。

では、「コントローラ」はどこに入るのでしょうか。 Django の場合、おそらくフレームワーク、すなわち URL 設定にしたがってリクエストを適切なビューに送信する機構自体がコントローラにあたるといえるでしょう。

略語がお好みなら、 Django を “MTV” フレームワークと呼んでもよいでしょう。つ まり、モデル "Model"、テンプレート "Template"、そしてビュー "View" です。 この分割の方がよりしっくりきます。

結局のところ、それは物事を成し遂げることに尽きるのです。そして、どのように名前が付けられようとも、Djangoは我々にとって最も論理的な方法で物事を成し遂げます。

<フレームワーク X> には <機能 Y> がありますが、なぜ Django にはないのですか

We're well aware that there are other awesome web frameworks out there, and we're not averse to borrowing ideas where appropriate. However, Django was developed precisely because we were unhappy with the status quo, so please be aware that "because <Framework X> does it" is not going to be sufficient reason to add a given feature to Django.

なぜ既存の Python ライブラリを使わずスクラッチで Django を作ったのですか?

When Django was originally written, Adrian and Simon spent quite a bit of time exploring the various Python web frameworks available.

その結果、十分なでき具合のものは一つもないという結論に達したのです。

私たちは好みにうるさいのです。(締め切りに追われる) 完璧主義者と呼んでもいいで しょう。

これまでずっと、私たちは自分たちがすでに実装済みの機能を実現するオープンソースライブラリに出会ってきました。そうしたライブラリに、他の人たちが同じ問題を同じ方法で解決しようとしているのを見ては元気づけられる思いでしたが、自分たちのコードの外側に組み込むにはもう遅すぎました。私たちはすでにいくつもの運用環境で独自のフレームワークを書き上げ、テストし、実装してきており、できたコードは快適なまでに要求を満たしていたのです。

しかし、ほとんどの場合、既存のフレームワークやツールには、ある種の基本的・致命的な不備があることがわかり、私たちは満足できませんでした。私たちの思想に 100% 合うものはなかったのです。

繰り返していいますが、私たちは好みにうるさいのです。

私たちの設計思想は、 設計思想のページ に詳しく書いてあります。

Django はコンテンツ管理システム (CMS) なのでしょうか?

No, Django is not a CMS, or any sort of "turnkey product" in and of itself. It's a web framework; it's a programming tool that lets you build websites.

例えば、 Django を Drupal のようなシステムと比較するのは無意味です。というのも、 Django はまさに Drupal のようなシステムを 作る ためのものだからで す。

そう、Django の自動管理サイトは素晴らしいし、時間の節約にもなりますが、管理サイトは Django のフレームワークの一つのモジュールです。さらに、Django は "CMS的" なアプリを構築するための特別な便利さを持っていますが、それは "CMS的でない" アプリを構築するのに適していないという意味ではありません(それがどういう意味であれ!)。

Django のドキュメントをダウンロードしてオフラインで読むにはどうすればいいですか?

The Django docs are available in the docs directory of each Django tarball release. These docs are in reST (reStructuredText) format, and each text file corresponds to a web page on the official Django site.

ドキュメントは:source:`リビジョン管理<docs>`に格納されているので、コードの変更を参照するのと同じようにドキュメントの変更を参照できます。

技術的には、 Django サイトのドキュメントは最新の開発版の reST ドキュメントから生成されます、したがって、 Django サイトにあるドキュメントの方が、最新の Django リリースのドキュメントよりも多くの情報を提供していることがあります。

Django の引用に関して

公式の引用フォーマットを提示するのは難しいです。理由は2つあります: 引用フォーマットは出版社によって大きく異なり、ソフトウェアの引用標準スタイルも議論が交わされているからです。

例えば APA スタイル, では次のようになるでしょう:

Django (Version 1.5) [Computer Software]. (2013). Retrieved from https://www.djangoproject.com/.

しかし、唯一正しいガイドは出版社が受け入れる書式であることであるので、出版社のガイドラインを確認し、可能な限り同じようにしてください。

引用スタイルガイドで出版社名が要求されていれば、 "Django Software Foundation" を使ってください。

出版社の都市表記が必要なら、「カンザス州ローレンス」 (Lawrence, Kansas) を使ってください。

If you need a web address, use https://www.djangoproject.com/.

名称が必要なら、何も加えずただ "Django" を使ってください。

出版年が必要ならば、参照するバージョンがリリースされた年を使ってください (例: バージョン 1.5 なら 2013年)。