Django (/ˈdʒæŋɡoʊ/ jang-goh) は、無料でオープンソースとして公開されているPythonを使用したWebアプリケーションフレームワークです。Webフレームワーク、つまり、Web対応のアプリケーション構築を早く簡単に開発する枠組みです。

ほら、Webサイトを構築する時、同じような構造が毎回必要になってきますよね。ユーザー認証(サインアップ、サインイン、サインアウト)、管理者用の画面、フォーム、ファイルのアップロードなど。

開発者たちはサイトを構築する度に同じ問題を抱えたため、みんなで力を合わせてフレームワークを開発しました。(Djangoはフレームワークのひとつです。)幸運なことに、私たちは、開発に必要な要素がすでに含まれているフレームワークを使って開発することができます。

フレームワークを使うことで、私たちは開発を土台から作り直すことを避けられます。また、新しいサイトを構築する際にかかる最初の準備に必要なコストを軽減します。

Why do you need a framework?

Djangoを本当に理解するために、サーバーの役割についてもう少し考えてみましょう。サーバーにWebページを配信してもらうようにするには、サーバーにそのような設定をする必要があります。

手紙が届くポストを想像してください。手紙はユーザからWebサーバーに送られるリクエストで、ポストはWebサーバーのポートのことです。Webサーバーはこのポストを監視して、手紙が届くとそれを読み、Webページから返事を送ります。送ろうとする時、コンテンツが必要ですね。Djangoは、あなたがそのコンテンツを作る手助けをするものです。

What happens when someone requests a website from your server?

Webサーバーにリクエストがあると、Djangoに伝えられ、リクエストの内容を把握しようとします。 まずWebページのアドレスを調べ、リクエストに対して何をするか決めます。これは、Djangoのurlresolverが行います。(WebサイトのアドレスはURLと呼ばれます。 Uniform Resource Locator の略です。-resolverとは「解決するもの」という意味ですので、urlresolver というのはうなずけますよね。)。あまり賢いとはいえません。Djangoは上から下にURLパターンを順に調べていきます。そこで何かがマッチすると、Djangoはビューと呼ばれる関数にリクエストを送ります。

郵便配達員を思い浮かべてください。配達員は、通りを歩き、ひとつひとつの家の番地と、手紙に書かれている番地を見比べて行きます。マッチする番地があったら、手紙をそこに置いていきます。urlresolverも同じ仕組みです。

ビュー関数では、面白いことが行われます。私たちは、データベースに情報を探しにいきます。時に、ユーザーがデータを変更するよう求めてきますよね?例えば、「私の仕事内容を変えて下さい」といった手紙のように。ビューは、まずあなたにその権限があるか確認します。次に、仕事内容を書き換えて、「完了しました!」というメッセージをあなたに送り返します。そして、ビューが反応を返して、DjangoがユーザーのWebブラウザに情報を送ります。

もちろん、上記の説明は、多少簡略化して説明しています。しかし、今ここでは、技術的なことを完璧に理解する必要はありません。概念が分かれば十分です。

これ以上詳細について深く説明するより、きっと、Djangoを使って実際に手を動かして作ってみる方がいいでしょう。重要な事はすべてその過程で学べますよ!