全般的な FAQ

revision-up-to:17812 (1.4)

なぜこんなプロジェクトがあるのですか?

Django は極めて実践的な要請のもとで成長してきました。 Web 新聞を発行している WorldOnline では、効果的な Web アプリケーションを、ジャーナリズムとして成立 する締め切りに間に合うように構築せねばなりません。刻一刻と状況が変化するニュー スルームにあって、WorldOnline には、複雑な Web アプリケーションをコンセプト から立ち上げ公開にもっていくまで数時間の猶予しかないのです。

同時に、 WorldOnline の Web 開発者たちは、こと Web 開発の王道に関しては一貫 して完璧主義者です。

こうした理由から Django は Web アプリケーションをただ素早く作れるだけではな く、Web 開発の 王道 に従って作成できるように設計されているのです。 2003 年、WorldOnline の開発者 (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 は JANG-oh (‘a’ は伸ばす) と発音します。韻は FANG-oh と 同じです。 “D” は発音しません。

正しい発音の音声ファイル を作成してあるので参考にしてください。

Django は安定していますか?

はい。 World Online は 3 年以上にわたって Django を使ってきました。 Django で構築したサイトは、これまでに 100 万ヒット/時を超えるトラフィック スパイクに見舞われたことがあり、何度もスラッシュドット効果を喰らっています。 そうですね。きわめて安定です。

Django はスケールしますか?

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

Django は「レイヤ間で何も共有しない (shared-nothing)」アーキテクチャなので、 データベースサーバ、キャッシュサーバ、 Web/アプリケーションサーバのどのレベ ルにハードウェアを追加してもかまいません。

Django はアプリケーションレイヤからのデータベースレイヤを分離し、シンプルな がら強力な キャッシュフレームワーク を備えています。

Django の舞台裏には誰がいるのですか?

Django はもともと、World Online という、米国カンザス州ローレンス (Lawrence, Kansas, USA) のとある新聞の Web 部門で開発されました。今では、 Django は国 際的なボランティアのチームによって開発されています。 開発者たちの人となりは コミッタ一覧 で読めます。

どんなサイトが Django を使っているのですか?

DjangoSites.org には Django で作られたサイト一覧という特集ページがあり、 日々内容が増えています。

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

そうですね、呼び名には議論の余地があるでしょう。

我々の MVC の解釈では、「ビュー」とはユーザに提示されるデータのことをいいま す。つまり、データが どのように見えるか ということではなく、むしろ どの データを提示するか です。ビューには データがどのように見えるか ではなく どのデータが表示されるか が定義されています。この二つは明らかに違います。

というわけで、我々のケースでは、「ビュー」は特定の 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 のドキュメントをダウンロードしてオフラインで読めますか?

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

ドキュメントは バージョン管理システム下にある ので、コードの変更状況を閲 覧するのと同じようにしてドキュメントの変更状況を閲覧できます。

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

Django 開発者はどこで雇えますか?

求職中の開発者リスト には、喜んであなたの力になってくれる Django 開発者 のリストがあります。

また、求人を http://djangogigs.com/ に出してみるのもよいでしょう。 地元で Django を扱える人を探しているなら、 http://djangopeople.net/ を調べ てみてください。