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, Kansas, USA) にある、World Online という新聞社の Web 開発部門で開発されました。現在は、国際的な ボランティアのチーム が開発を続けています。
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 の自動 admin サイトはすばらしく、開発時間の節約になります。 しかし、 admin サイトは Django というフレームワークのいちモジュールに過ぎません。もっと言うなら、 Django が「 CMS 的な」アプリケーションを作成する上でとりわけ便利な点を持ってはいますが、そのことが「 CMS 的でない」アプリケーショ ンの開発に向いていない、なんてことにつながったりはしないのです(とにかくDjangoはCMSじゃないってことです!)。
どうやれば Django のドキュメントをダウンロードしてオフラインで読めますか?¶
Django のドキュメントは Django tarball リリースの docs ディレクトリに あります。これらのドキュメントは reST (reStructuredText) 形式で書かれており、 各テキストファイルが Django 公式サイトのページに対応しています。
ドキュメントは バージョン管理システム下にある stored in revision control ので、コードの変更状況を閲覧するのと同じようにしてドキュメントの変更状況を閲覧できます。
技術的には、 Django サイトのドキュメントは最新の開発版の reST ドキュメントから生成されます、従って、 Django サイトにあるドキュメントの方が、最新の Django リリースのドキュメントよりも多くの情報を提供していることがあります。
Django の引用に関して¶
It’s difficult to give an official citation format, for two reasons: citation formats can vary wildly between publications, and citation standards for software are still a matter of some debate.
For example, APA style, would dictate something like:
Django (Version 1.5) [Computer Software]. (2013). Retrieved from https://djangoproject.com.
However, the only true guide is what your publisher will accept, so get a copy of those guidelines and fill in the gaps as best you can.
If your referencing style guide requires a publisher name, use “Django Software Foundation”.
If you need a publishing location, use “Lawrence, Kansas”.
If you need a web address, use https://djangoproject.com.
If you need a name, just use “Django”, without any tagline.
If you need a publication date, use the year of release of the version you’re referencing (e.g., 2013 for v1.5)