AI開発で注目を集める Python ですが、Webアプリ開発においても重宝される言語です。
本記事では Webアプリ開発用の Pythonフレームワーク「Django」について解説いたします。
Djangoとは?
Django(ジャンゴ)はフルスタックのWebアプリ開発用の Pythonフレームワークです。
Django を使うことで、高品質な Webアプリを簡単に、比較的少ない記述量で作れます。シンプルな Webアプリであれば、数分で作ることも可能ですが、機能を拡張すれば複雑なものも作ることができます。
もともと、Djangoは 2000年代初頭に新聞Webサイトの制作チームによって開発され、2005年7月にオープンソースの汎用 Webアプリ開発フレームワークへと発展しました。
無料のオープンソースで公開されているため、だれでも利用することができますよ。
Pythonとは?
Python はシンプルさに重点を置いて開発されたため、比較的に構文が少なく、コードの読み書きがしやすいため、初心者にもおすすめの言語です。統計処理や数値計算が得意で、機械学習や深層学習といった技術を活用した AI開発で実績があります。
Djangoの特徴
汎用性が高い
Django はコードが Linux、Windows、macOS Xといった多くのプラットフォームで動作する Python で書かれているため、OS に縛られないフレームワークであるといえます。
多機能
一般的なフレームワークに搭載されているような機能にとどまらず、管理画面や認証機能、データベース管理といった便利な機能など、Webアプリを開発するのに必要な機能が一通り搭載されています。シンプルな Webアプリであれば、数分で作ることも可能です。
管理画面が自動生成される
Django は、機能の作成や更新をする管理画面が自動で生成されます。また、管理画面からはデータの挿入や検証作業などもできます。自動生成された管理画面はカスタマイズもできるため、開発作業も効率的に行えます。
セキュリティが高い
Django は Webアプリに対するサイバー攻撃に対応できるよう考慮して開発されました。ユーザ認証システムでは、ユーザのアカウントやパスワードを安全に管理されています。
送信されたパスワードをそのままデータベースに保存せず、暗号化ハッシュ関数を介してハッシュ値(固定値)を保存することで、安全にパスワードを管理できるのです。
豊富なライブラリを流用できる
Django では、Python がもつ機械学習のライブラリを流用できます。
コンポーネント指向
Django はMTV(Model-Template-View)モデルというアーキテクチャを採用しており、役割ごとに切り分けて開発できるため、独立性が高く、可読性が高いのに加え、機能拡張にも柔軟に対応できます。
DjangoとほかのPythonフレームワークの違い
Flask
Django は多機能でWebアプリを開発するのに必要な機能が一通りそろっているため、学習時間もそれなりに要しますが、大規模な開発にも対応できます。
その一方で、Flaskは「マイクロフレームワーク」と称されることもあるように、手軽さとシンプルさに重点を置いて開発されたフレームワークです。Flask は Django と比べ、機能性こそ劣るものの、シンプルで使いやすいという利点もあります。小規模な WebアプリであればFlaskで作るのがおすすめです。
Bottle
Django は本格的な開発に向いたフレームワークです。一方で Bottle は、Webアプリ開発用の Pythonフレームワークのなかで最も軽量でシンプルなフレームワークです。そのため、機能面は Django に劣り、個人での利用や学習向けのフレームワークといえます。軽量さを求めるならば、Bottle の利用をおすすめです。
同じ Django のフレームワークでも以上のような違いがあるため、制作する Webアプリに合ったフレームワークを選ぶことが大事です。
Djangoでできること
管理画面の構築
Django では、管理者のみアクセス可能な管理画面「Django管理サイト(django.contrib.admin)」が自動生成されるため、テンプレートなどを用意せずともユーザの管理を行えます。
「localhost:8080/admin/」にアクセスすることで、管理サイトにログインできます。
ユーザ認証
ユーザ認証とは、システムが登録されているユーザを自動で識別する機能を指します。Django に標準搭載されて「django.contrib.auth」というユーザ認証機能に「django-allauth」という追加パッケージを導入することで、パスワード再設定や LINE や Twitter などの SNS アカウントを通してログインするソーシャルログイン機能も利用できます。Django ではセキュリティ面に配慮し、ミスのないよう構成されています。
案内ページの作成
DjangoではWebサイトの案内ページも比較的簡単に作成可能です。
他のプログラミング言語やフレームワークでも作成可能ですが、より簡単に効率的に作るならDjangoがおすすめです。
RSSフィードの作成
Django にはブログなどの更新情報を配信する文書フォーマットである RSSフィードを作成する機能も備わっています。
テンプレートエンジン
テンプレートエンジンとは、テンプレートやテンプレートを利用した工程をひとつにまとめたソフトウェアです。Django には「django Templates」というテンプレートエンジンが用意されており、これを利用すればプログラムと HTML 部分を分離でき、Webアプリのメンテナンスがしやすくなります。これに加え、外部テンプレートエンジンも追加可能です。
静的ファイルの公開
Django に搭載されている「django.contrib.staticfiles」という静的ファイルの管理を簡易化する仕組みが搭載されています。
Djangoを使って開発されたWebサービス
Djangoは、多くの企業や政府で管理システムをはじめとした幅広い用途で利用されています。
なかでも、有名なものを紹介します。
- Pinterest(画像共有サービス)
- NASA(アメリカ航空宇宙局のアプリ)
- Prezi(プレゼン作成ソフトのクラウドサービス)
- ワシントンポスト(米国の日刊紙のメディアアプリ)
Djangoのメリット/デメリット
メリット
ネット上に技術情報が多い
Django は日本をはじめとして世界中で人気のあるフレームワークで利用者数や導入企業が多いため、ネット上には Django に関するノウハウが豊富にあります。そのなかには、日本語の技術情報もあるため、Django についてわからないことが出てきても、検索すればほしい情報が得られるでしょう。
Python 経験者であれば学習コストが低い
Django は、Pythonで書かれているので、Python を習得した人にとっては Django の学習コストは低いでしょう。
運用が楽になる
Django は CMSツールを利用すれば複数のWebアプリを一元管理でき、運用が楽になります。
メンテナンスが容易にできる
先述したように、Django はモジュールの独立性が高く、メンテナンスや拡張がしやすくなります。
デメリット
学習コストがやや高め
Python についての基礎知識を身につけていない人にとっては、機能が豊富に搭載されたフルスタックフレームワークである Django の全容を理解し、使いこなせるようになるまでには時間がかかることもあるでしょう。
日本語の技術情報が少なめ
ネット上に技術情報が多いと先述しましたが、日本国内のコミュニティは、海外のコミュニティほど活発ではありません。