Djangoでできること
Django(ジャンゴ)とは、Pythonのプログラミング言語で実装されたWebアプリケーションフレームワークを指します。なおフレームワークとは、アプリ開発を行うときに土台として機能させるソフトウェアのことです。Djangoはオープンソースで公開されているため、誰でも無償で利用することが可能です。
ここでは、入門者向けにDjangoを使用してできることについてわかりやすく解説します。
Webアプリケーションの開発
Djangoでできることとして、Webアプリケーションの開発が挙げられます。例えばニュースサイトやコンテンツ管理システムなど、様々なWebアプリケーションを作成することが可能です。Djangoには豊富な機能が搭載されており、複雑なコードにも対応できるため、簡単なWebアプリケーションであれば短時間で開発できます。Djangoで作られたサイトには、YouTube・Dropbox・Instagram・Spotify・Pinterestなどがあります。
WebAPIの開発
Djangoの利用例として、WebAPIの開発も挙げられます。Djangoには「Django REST framework」というライブラリが搭載されているため、「REST」という設計原則を満たしたRESTful APIを簡単に作成することが可能です。なお、RESTとは「REpresentational State Transfer」の略称で、分散システムにおいて複数のソフトウェアを連携させるのに適した設計原則を指します。
Djangoの機能一覧
Djangoでできることや、Djangoには豊富な機能があることは理解できたでしょうか。Djangoに標準搭載されている機能には、主に管理画面・ユーザー認証・モデル情報の取り扱い・セッション管理・メッセージ表示処理・静的ファイルの公開があります。ここでは、Djangoの機能についていくつか紹介します。
管理画面
Djangoでは機能の作成・読込・更新を行う管理画面が自動生成され、ユーザーの管理などを行うことができます。また表示するデータの変更を行うことも可能です。さらに、新規のページ追加など柔軟にカスタマイズできるため、開発効率の向上が期待できます。
フレームワークによっては管理画面を作成する機能を搭載していることもありますが、自動生成されることはほとんどありませんでした。Djangoでは一般的に「localhost:8080/admin/」にアクセスすれば、管理サイトにログインすることができます。
ユーザー認証機能
Djangoにはユーザー認証機能も標準装備されています。「django-allauth」というパッケージを追加で利用すれば、パスワードからソーシャルログインまで簡単に設定することが可能です。なおソーシャルログインとは、LINEやTwitterなどのSNSのアカウントを活用してログインする仕組みを指します。
ユーザー認証についてはセキュリティ面がよく気にされますが、Djangoではセキュリティにもよく配慮されているのが特徴です。例えばセクション情報の配置場所や、パスワードの保存方法にセキュリティの対策がされています。また脆弱性への対策も念入りにされています。
Djangoを導入するメリット
Djangoには豊富な機能が標準搭載されていることは理解できたでしょうか。ここでは、Djangoを導入するメリットについて詳しく紹介します。
汎用性が高い
Djangoはフルスタックフレームワークと呼ばれるほど、万能なWebアプリケーションフレームワークです。なおフルスタックフレームワークとは、Webアプリケーションフレームワークの分類の1つであり、Webシステム開発に必要な機能がほとんど用意されているものを指します。
Djangoでは、WebサイトやWebアプリケーションの開発・保守・運用に必要な機能がほとんど網羅されているため、汎用性の高さがDjangoを導入するメリットの1つです。
市場シェアが拡大傾向にある
Webアプリケーションフレームワークには、「Ruby on Rails」「Laravel」など他にも数多くあります。Stack Overflow Trendsを参考に、「Ruby on Rails」「Laravel」「Django」のトレンドを調査すると、かつてはRuby on Railsが主流であったことがわかります。
しかし現在では3者ともに拮抗しているのが理解できるでしょう。またLaravelは急激に成長を遂げており、Djangoは徐々にシェアが拡大していると言えます。このようにDjangoの市場シェアは拡大傾向にあるため、今後はDjangoを使用した開発案件などが増加していくことも予想できます。 ( 参考:https://insights.stackoverflow.com/trends?tags=laravel%2Cruby-on-rails%2Cdjango )
Python経験者であれば学習コストが低い
Djangoで使用するファイルやコマンドは、Pythonで記述されています。そのためPythonを勉強した経験がある方であれば、Djangoの使い方を身に付けるための学習コストは低いでしょう。ただしDjangoはフルスタックフレームワークであり、「MTV(モデル・テンプレート・ビュー)」というアーキテクチャを採用しています。一方PHPフレームワーク「Laravel」やRubyフレームワーク「Ruby on Rails」では、「MVC(モデル・ビュー・コントローラー)」というアーキテクチャが採用されています。
「MTV」は「MVC」と比較しながら学習することも少なくありませんが、厳密には同じ役割ではないため、学び始めは混乱してしまう可能性もあるでしょう。またフルスタックフレームワークは搭載されている機能が豊富にあるため、全ての使い方を理解し、使いこなせるようになるまでには時間がかかることもあります。
Djangoと他のフレームワークとの違い
Djangoを導入するメリットは理解できたでしょうか。Pythonのフレームワークには「Django」の他に「Flask」「Bottle」「Tornado」などがあります。ここでは、DjangoとこれらのPythonフレームワークとの違いについて詳しく紹介します。
Flask
Flaskは軽量なフレームワークであり、小規模や中規模のWebアプリケーションの開発に向いています。Flaskはマイクロフレームワークと呼ばれることもあり、動作が軽量で、覚えることも多くはありません。そのためFlaskには、必要最低限の機能しか搭載されていません。このようにFlaskはDjangoと比較して、軽量でカスタマイズしやすく、簡単なサイトであれば素早く構築できるのが特徴と言えます。 ( 参考:https://flask.palletsprojects.com/en/2.0.x/ )
Bottle
BottleはFlaskと同様で軽量であり、シンプルなフレームワークです。一般的に「bottle.py」という1つのファイルだけで構成されているのが特徴であり、サーバへのデプロイも簡単に行うことができます。ただしBottleはDjangoと比較して、拡張性に劣るため、開発したいものに合わせて使い分けるのが大切です。そのため商用目的ではなく、勉強目的で使用する方も多いです。なお、Bottleで実用的なWebアプリケーションを作成することももちろん可能です。 ( 参考:http://bottlepy.org/docs/dev/index.html )
Tornado
Tornadoは、FriendFeedにより開発され、Facebookに買収された後に2009年9月にオープンソースソフトウェアとして公開されています。フレームワークとしての機能だけではなく、Webサーバとしての側面もあるのが特徴です。非同期処理や同時接続処理が得意であり、シンプルな記述で高速な処理を行うことができます。ただし国内でTornadoのフレームワークを利用した求人・案件はほとんどないため、学習目的で利用するのがおすすめです。 ( 参考:https://www.tornadoweb.org/en/stable/ )
Djangoは豊富な機能が標準搭載されたフルスタックフレームワーク!
これまでにDjangoでできることや、Djangoの機能一覧・メリット、Djangoと他のフレームワークとの違いについて入門者向けに解説しました。Djangoとは、Pythonで実装されたWebアプリケーションフレームワークのことです。Djangoでできることとして、WebアプリケーションやWebAPIの開発が挙げられます。
またDjangoはフルスタックフレームワークとも呼ばれ、豊富な機能が搭載されているため、汎用性やセキュリティ強度の高さなどが特徴です。Djangoは他のPythonフレームワークと比較して人気が高く、大規模な開発で使用される傾向にあります。まずは書籍やWebサイトでDjangoの知識を深め、ポートフォリオとして役立つ成果物を作成してみましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから