ホーム Topics Djangoとは Djangoとは
Django Webフレームワークは、無料のオープンソース・フレームワークのことであり、Pythonプログラミング言語で構築されているWebアプリケーションの開発を加速することができます。
黒と青の背景画像
Djangoとは

Django Webフレームワークは、無料のオープンソース・フレームワークのことであり、Pythonプログラミング言語で構築されているWebアプリケーションの開発を加速することができます。 

「ジャンゴ」と発音されるDjangoは、有名なジャズ・ギタリストであるDjango Reinhardt氏にちなんだ名称で、2005年に初めて一般公開された無料のオープンソース・フレームワークです。 Djangoは、「迅速な開発とクリーンで実用的なデザイン」を促進します。 Webサーバーに導入されたDjango Webフレームワークを使用すると、開発者は、機能が豊富でセキュアかつ拡張可能なWebフロントエンドを迅速に作り出すことができます。

Django Webフレームワークの使用を開始すると、ゼロから始めてバックエンド、API、JavaScript、サイトマップを構築する必要はなく、より効率的にWebアプリを構築できます。 Django Webフレームワークを使用すると、Web開発者は独自のアプリケーションの作成に集中でき、Web開発ツールを使うよりも多くの柔軟性を享受できます。

Django Webフレームワークについて

Djangoについて、またその使い方について詳しくご説明します。 Django Webフレームワークで作成したWebアプリを使用して、実践的な作業をご希望ですか。 IBMでは、IBM Cloud のサービスを使用して、Django Webフレームワークを使用して記述された、IBM Cloudで実行されているPythonベースの Kubernetes アプリケーションのアクティビティーをトラッキングし、健全性を監視するステップバイステップのチュートリアル を提供しています。

あらゆるPython Webフレームワークを選択できる中で、Django Webフレームワークを選ぶ理由は何でしょうか。 Django Webフレームワークは、最も使いやすく最新であるとは必ずしも言えない場合があります。 それでも、クロスサイト・スクリプティングが関わり、API接続やユーザー認証などの複雑な機能セットや、多数のユーザーの処理が予想されるWebアプリを構築する際には、Django Webフレームワークが適切である場合があります。 GitHubでのプロジェクト数によれば、非常に人気のあるフレームワークでもあります。

Pythonプログラミング言語とその構文に精通している人であれば誰でも、Django Webフレームワークを使用して Webアプリの構築を開始できます。 (注:Djangoコアの多くはPythonですが、管理およびgis contribアプリにはJavaScriptコードが含まれています。) ただし、中級から上級のDjango開発者であれば、より洗練された機能であるDjangoモデルを有効に活用できます。

必要不可欠な機能のパッケージ化

Dhango Webフレームワークは10年以上にわたって使用されており、非常に活発なコミュニティーによって徹底的にテストされ、強化されています。 このコミュニティーには、非営利団体のDjango Software Foundation もあり、Django Webフレームワークを促進し、サポートし、進化させています。 Djangoの最大の強みは、大規模な機能セットです。Djangoパッケージは1万を超え、フレームワークはWebアプリケーションに必要なものほぼすべてを網羅しています。 パッケージには、API、 コンテンツ管理システム、ユーザー認証、フォーム検証とCAPTCHA保護が含まれています。

Django Webフレームワークのユーザー層は、支援的で献身的かつ才能にあふれたDjango開発者であり、自分の時間や知識を自発的に提供してDjango Software Foundationを発展・向上させ、パッチを提供しています。 Djangoを使用して構築をするすべての人が利用できる優れた構成パッケージを利用することで、アプリケーションは、こういったコミットメントからメリットを得られます。

メリット

Pythonにより近いデータベース管理

Djangoプロジェクトを起動すると、SQLを使用することなくアプリケーションのデータ・モデル全体をPythonで構築できます。 Djangoは、オブジェクト関係マッピング(ORM)を使用して従来のデータベース構造をPythonクラスに変換し、完全なPython環境での作業を容易にします。 Django-MySQLは、JSONデータ型と関連機能をサポートします。

Djangoでは、お客様のデータベース表がPythonクラスになります。 Webアプリケーションは、Djangoモデルを介してデータにアクセスし、管理します。 データベースのフィールドは、単純にクラス属性に変換されます。 Pythonでのクラス属性定義に慣れていれば、Djangoデータベースを簡単に設計し、管理できます。

Django Webフレームワークは、アプリケーションのデータベースとの完全統合への近道を提供します。 また、CRUD(作成、読み取り、更新、削除)機能、HttpResponse、クロスサイト・スクリプティング、ユーザー管理、ソフトウェア管理機能などを提供します。 パッケージをインポートし、データベースに接続してから、製品が独自のものとなるようなアプリケーションのパーツの開発に戻ります。

テンプレートを使用した動的ページの作成

DjangoはWebアプリ開発用に設計されているため、ユーザー独自のデータを表示するダイナミックHTMLを簡単に作成する方法が必要です。 Djangoアプリケーションは、Djangoテンプレート言語(DTL)と呼ばれる内蔵のテンプレート作成エンジンを使ってダイナミックHTMLを作り出します。

HTMLテンプレートでは、Django開発者は静的要素(色、ロゴ、テキストなどのデザイン要素を含む)をデータ(ユーザー名や場所など)と組み合わせてその場で新しいWebページを作り出すことができます。 モデル・ビュー・コントローラー(MVC)を使用すると、ユーザーのログイン時にアプリケーションがユーザーに名前で話しかけるようにしたい場合に、静的テキスト(「Xさん、サイトへようこそ」)を表示し、続いて動的プレースホルダーを使用してデータベースからユーザーの名前を表示するテンプレートを自動的に構築できます。 ページのレンダリング時に動的要素が静的要素と組み合わされ、シームレスなユーザー体験が作り出されます。

セキュリティーの向上

「Djangoとは何か」という問いに答える場合、Djangoがセキュリティー対策のために提供している特別機能について説明する必要があります。 Webアプリ、特にユーザーのログイン情報や金融データを保存するアプリケーションは、しばしばハッカーの標的となります。 Djangoは、お客様のアプリケーションとユーザーの保護に役立つ機能を提供しています。

ユーザーが入力するデータを受け入れるサイトにとって、最大のリスクの1つは、悪意のあるユーザーがデータと共にシステムに破滅的な影響を及ぼす可能性のあるコードを注入することです。 このような攻撃から保護するためにDjangoテンプレートは、ユーザーが入力するフィールドで、一般的なHTML文字を自動的にエスケープ処理します。 例えば、「<」を自動的に「&lt;」に変換して、お客様のプログラムに悪意のあるコードを投入することを困難にします。 同様にして、DjangoはSQLインジェクションからも保護し、ユーザーが独自のコードをデータベースに潜り込ませることができないよう、許可されていないコマンドを再解釈します。

Web開発者も、Django APIはクロスサイト・リクエスト・フォージェリー(CSRF)保護を自動的に使用して、ユーザー固有の秘密トークンをPOSTリクエストに挿入すると期待できます。 その結果、Web開発者は、悪意のあるユーザーが、他のPOSTリクエストを複製して認証されているユーザーになりすますことを防げます。

Djangoの保護は、明確なセキュリティー機能にとどまりません。セキュリティー対策は、Djangoユーザー層の広範囲にわたる経験と知識によって強化されています。 ゼロからWebアプリを構築する場合には、誤ってモジュールにセキュリティーの脆弱性を導入してしまうリスクがあります。 Djangoのパッケージは、幅広く使用され、オープンソースであると共にWeb開発者から良いレビューも受けているため、お客様はデータ保護への自信を持つことができます。

Djangoの拡張

Web開発の最大の課題の1つは、拡張性です。 アプリケーションは、任意の時間に要求されるアクティブな接続数を正確に処理できる必要があります。 接続が推定を超えると、ユーザーは遅延とダウンタイムを経験します。 推定が保守的すぎると、使用しない帯域幅とウェブサーバーにお金をかけることになります。 必要なのは、ユーザー数の増加とともに拡大できるアプリケーションです。

DjangoのWebフレームワークは、簡単に拡張できます。 Djangoアプリはユーザー・セッションを管理できるため、アプリケーションのインスタンスをさらに追加し、データを失うことなくユーザー体験をインスタンス間で移動させることが可能です。 また多くのDjangoプロジェクト開発者は、ユーザーに対するサイトの静的要素を事前に読み込んでおくために、Varnishなどのキャッシュ・マネージャーも使用しています。

誤ってサイト全体をキャッシュしないようにするため、動的要素など、キャッシュ・マネージャーは慎重に設定する必要があります。 キャッシュがきちんと設定されていないと、ユーザー間でデータが共有されてしまうことがあります。 外部キャッシュ・マネージャーと併せてDjangoのネイティブ・キャッシュ・フレームワーク(ただし制限あり)を使用すると、オーバー・キャッシングを回避することができ、何を保存するかを選択しながら、性能リソースを解放できます。

「Djangoとは何か」という質問に回答するとき、答えの1つとなるのが、拡張性の高いWebフレームワークです。 どのように拡張できるのでしょうか。 InstagramとDisqusは、Djangoを使用して膨大なユーザー層をサポートしている超大型サイトの例です。

関連ソリューション
IBM Cloud

IBM CloudはRed Hatとともに、市場をリードするセキュリティー、企業向けの拡張性、オープン・イノベーションを提供し、クラウドとAIの可能性を最大限に引き出します。

IBM Cloudの詳細はこちら
参考情報 チュートリアル:ログの分析とアプリケーションの正常性の監視

IBMでは、IBM Cloudサービスを使用して、Djangoを使用して記述された、IBM Cloudで実行されているPythonベースのKubernetesアプリケーションのアクティビティーをトラッキングし、健全性を監視する、Web開発者向けのステップバイステップのチュートリアルを提供しています。

Kubernetesとは

Kubernetesは、アプリケーションのデプロイメント、管理、スケーリングを自動化する、オープンソースのコンテナ・オーケストレーション・プラットフォームです。 Kubernetesが、どのようにコスト効率に優れたクラウドネイティブ開発を実現するかをご覧ください。

詳細情報はこちら

IBM Cloudは、データ、コンテナ、AI、IoT、ブロックチェーンなどを網羅する170以上の製品・サービスを提供しているフルスタックのクラウド・プラットフォームです。エッジであれ、他のパブリッククラウドであれ、既存のインフラストラクチャーを、IBM Cloudのサービス、API、アクセス・ポリシー、セキュリティー制御とともに使用でき、IBM Cloud Satelliteに準拠しています。

IBM Cloudの詳細はこちら