# Django 5.0.9.dev20240806133106 ドキュメント

# FAQ: 一般的な質問

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

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

しかし同時に、WorldOnline の Web 開発者たちは、特に Web 開発のベストプラクティスに従うことに関しては、一貫して完璧主義者でした。

2003年の秋、World Online の開発者 (Adrian Holovaty と Simon Willison) は PHP に 見切りをつけ、Python による Web 開発に取り組みはじめました。集約的で高い双方向性を備えた Lawrence.com のようなサイトの開発の中で、彼らは Web アプリケーションをより迅速に開発できるように、サイトのコードから汎用の Web 開発フレー ムワークを切り出し、 2 年近くの間ずっと改良を加えながら使い込んできました。

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 は「レイヤ間で何も共有しない (shared-nothing)」アーキテクチャを採用しています。そのため、データベースサーバ、キャッシュサーバ、 Web/アプリケーションサーバのどのレベルにでもハードウェアを追加することができます。

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

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

Django はもともと、アメリカのカンザス州 Lawrence の新聞社のウェブ部門である World Online で開発されました。Django は現在、国際的な ボランティアチーム によって運営されています。

## 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 にはないのですか

世の中には他にも素晴らしい Web フレームワークがあるのは良く知っていますし、必要であればそこからアイデアを借りるのにやぶさかではありません。とはいえ、私たちが Django を開発した動機は、旧態然たる Web フレームワークに不満だったからこそなので、「<Framework X> でできるから」といって、同じ機能を Django に機能を追加する理由にはならないのです。

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

Django が最初に書かれた時、Adrian と Simon はかなりの時間をかけて、既存の Python ウェブフレームワークを調査しました。

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

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

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

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

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

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

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

いいえ。 Django は CMS ではありませんし、いわゆる「ターンキーシステム」のようなものでもありません。 Django は Web フレームワークであり、 Web サイトを構築する際に使えるプログラミングツールにすぎません。

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

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

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

Django のドキュメントは Django tarball リリースの docs ディレクトリに あります。これらのドキュメントは reST (reStructuredText) 形式で書かれており、 各テキストファイルが Django 公式サイトのページに対応しています。

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

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

## Django の引用に関して

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

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

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

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

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

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

Webアドレスが必要な場合は、https://www.djangoproject.com/ を使用してください。

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

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