『Djangoチュートリアルで学ぶWeb開発入門 by DjangoBrothers』が発売されました!!

DjangoBrothers BLOG

2018/03/01

このエントリーをはてなブックマークに追加
Django

Python製WebフレームワークDjangoのメリット・デメリット

Djangoとは、Python製のWebフレームワークです。

Webフレームワークとは、ウェブサービスをつくる際に必要な繰り返しの作業をまとめることで、簡単かつ迅速にウェブサービスを開発できるシステムのことです。ベースとなるプログラミング言語ごとにWebフレームワークはいくつかありますが、代表的なものとしては、Ruby製のRuby on RailsやPHP製のCakePHPなどがあります。

近年はAIの実装などにPythonが多用されており、Pythonユーザーが増えてきています。そこで、Python製のWebフレームワークであるDjangoでウェブサービスを作ってみたい、仕事で利用してみたいと考えている方も多いと思います。Djangoは海外では大きな人気を誇るフレームワークですが、現状では日本語の情報が少なく、あまり日本では活用されていない印象があります。

しかし、Djangoには他のWebフレームワークと比較しても大きなメリットがあり、Pythonを用いて最速でウェブサービスを開発するための機能が満載です。

このエントリーでは、Djangoのメリットとデメリットをまとめ、Djangoを学ぶことができるリソースもご紹介します。

Djangoのメリット

  1. フルスタックWebフレームワーク
  2. 高いセキュリティ
  3. 学びやすさ・メンテナビリティ
  4. デフォルトで作成されるAdminページ

一つずつみていきましょう。

フルスタックWebフレームワーク

Djangoはよく、フルスタックのWebフレームワークと言われています。これはどういうことかというと、ウェブサービスを作成する際に必要な基本的な機能はすべてDjangoを用いるだけで済んでしまうという意味です。例えば、「ユーザー認証」や「フォームの作成」、「管理ページ」などのよく利用する機能がすべて標準装備されているということなのです。これにより、そのほかのフレームワークと比較して、機能ごとに新しいモジュールを探して利用する必要がなくなります。Djangoだけを管理していればよいので、バージョンアップによるメンテナンスなども比較的楽になります。そういう意味では、特に初心者にとってもオススメのフレームワークと言えるでしょう。

もし、別途必要な機能が出てきたとしても、Djangoはサードパーティモジュールのコミュニティも充実しており、ほしい機能は調べればだいたい出てきます。こういった手軽さはDjangoの大きな魅力になります。

高いセキュリティ

ウェブサービスを開発する際にはセキュリティにも気をつける必要があります。ユーザー認証やサービス自体へのサイバー攻撃など、対応すべきところは数多くあります。しかし、特にウェブサービス開発の初心者の方にとっては、セキュリティ面での実装などにあまり気を配ることができなかったり、そもそもサービスの本質部分に関わるところではないとみなされて実装が後回しになることも多々あります。

Djangoでは、こういったセキュリティ面での実装も標準でサポートされています。SQLインジェクションやクロスサイトフォージェリ、クリックジャッキングなどのサイバー攻撃などにも堅牢であるように作成されています。こういったセキュリティ面についても大きく心配することもなく、ユーザー認証などの重要な機能を楽に実装できるのです。

学びやすさ・メンテナビリティ

DjangoはPythonで作られているフレームワークなので、Pythonを使ったことがあれば比較的簡単に理解することができます。近年、AIや機械学習の分野に多大な関心が集まっており、それらのツールを扱うためによく利用されているPythonのユーザーも増えてきています。このPythonを利用してそのままウェブ開発ができるというのは一つの大きなメリットです。

また、Pythonの特徴の一つとして、メンテナビリティがあります。Pythonは関数のスコープの定義などにインデントを用いており、他のプログラミング言語と比較してもコードが読みやすいです。同じ機能を実現するためにたくさんの書き方があるような言語もありますが、Pythonは、There should be one-- and preferably only one --obvious way to do it.(たったひとつの冴えたやりかたがあるはずだ。)という基本原則があり、誰が書いても大きく異なるような実装にはなりづらいと言えます。これにより、自分の過去の実装や、他のプログラマの実装したコードを読んでも理解がしやすく、ひいてはプロジェクトも進めやすくなります。

デフォルトで作成されるAdminページ

先ほどDjangoはフルスタックのWebフレームワークと説明しました。そのDjangoの機能のうち特に人気のものとして、Adminページ(管理画面)があります。

Djangoでは、Webサービスに必要なデータベースを作成すると、管理者用のページを自動で作成してくれます。本来であれば、管理者がデータを入力するためのページを別で作成しなければならないのですが、データベースのスキーマを作成するだけで、データの作成・修正・削除などができる管理ページまでまとめてできあがり、すぐにでもテストデータを入力して動作を試すことができるのです。もちろん、管理者権限でしか入ることのできないようになっており、ユーザーの認証手続きを作成する必要さえありません。

少し高度な内容になりますが、Django REST FrameworkというDjangoベースのAPI開発ツールを利用すると、最速でREST Frameworkを作成することができます。このフレームワークのメリットとして、APIのレスポンスをすぐにでも管理画面からチェックすることができます。このように、標準で管理画面がついていることで、サービス開発段階での手間を大幅に削減することができるのです。非常に便利ですよね。

Djangoのデメリット

一方で、Djangoにも多少なりともデメリットは存在しますので、少し列挙します。。(デメリットと言っても、ほかのフレームワークなどと比較した際に少し見劣りする程度なので、あまり気にする必要はないかと思いますが。)

  1. レスポンスが比較的遅い
  2. 日本語の情報が少ない
  3. 扱える日本人エンジニアが少ない

レスポンスが比較的遅い

フルスタックフレームワークということでコードベースが大きいため、他のマイクロサービスアーキテクチャのフレームワークと比較して、ユーザーのリクエストに対してのレスポンスが遅くなります。これに関しては遅いといっても、それほど気にするレベルではなく、高速なレスポンスが必要なアプリケーションを作成する必要があるなどの事情がなければ、実質無視できるレベルではあります。また、高速化するための実装方法もいくつか存在します。

日本語の情報が少ない

Djangoは海外で非常に人気の高いWebフレームワークですが、日本語の情報が少ないです。それゆえに、英語があまり得意でない開発者にとっては学習コストが少し高いと言えます。日本では日本生まれのプログラミング言語であるRubyのコミュニティが活発であり、そのため、WebフレームワークとしてRuby on Railsがウェブサービス開発によく利用されることも一因かと思います。

しかし最近では、機械学習やAIに利用されることの多いPythonを学ぶ人が増え、そのPythonをそのままウェブサービス開発に応用できる手軽さから、日本でもDjangoの人気が少しずつ高まってきたように思います。日本での利用企業が増えることも多いに予想されますので、まさに今学ぶべきWebフレームワークと言えるのではないでしょうか。

私たちDjango Brothersでは、Djangoを学ぶためのチュートリアルも提供しているので、ぜひここからDjangoでのウェブサービス開発をスタートさせてみてください。

扱える日本人エンジニアが少ない

これは日本語情報が少ないということとも関係していると思いますが、そもそも日本ではスクリプト型言語としてはRubyの人気が圧倒的で、Pythonエンジニアは比較的少ないと言えます。また、日本の企業でPythonを主として扱っている企業も現状では少ないため、自社プロジェクトとして採用すると、エンジニアの採用に多少苦労する可能性があります。

しかし、何度も申し上げているように、Pythonへの注目が高まっている現在、Pythonを活用したい・Pythonで開発をしたいというエンジニアは増加傾向にあり、DjangoのようなPythonベースの人気のあるウェブフレームワークを採用するメリットは十分にあると言えると思います。

以上、簡単でしたが、Djangoのメリット・デメリットをご紹介しました。Djangoはスケーラビリティにも長けており、InstagramやPinterestなどの世界的なサービスのバックエンドでも利用されるほど、メジャーかつ信頼性の高いウェブフレームワークです。ぜひ、ご自身のサービスもDjangoをベースに作成してみてください。

Django Brothersでは、Djangoを効率的に学ぶためのチュートリアルを提供しています。ぜひ参考にして見てください。

SHARE ! Tweet