本記事ではpythonのフレームワーク「django」に興味を持った方に向けて、以下の内容
- pythonのフレームワーク「django」とは何か?
- djangoのメリット・デメリットは何か?
- djangoで何ができるのか?
- djangoの学び方の紹介
について紹介・解説していきます。
pythonを学んでいる方なら一度は聞いたことがある「django 」。
「django 」はpythonのフレームワークの一つです。
さて、本記事ではpythonのdjangoの方を、初めてdjangoを知った方、djangoについて気になっているけどまだ手を出していない方に向けたdjango紹介記事です。
本記事を読んで、djangoに少しでも関心や興味を持ってもらい、django人口が増えるといいなと思っています。
djangoとは何か?
まず、djangoとは何かを紹介します。
結論から言うと前述した通り、
djangoとはpythonを利用してwebアプリを作るためのフレームワークの一つです。
では、ここで出てきたフレームワークとは何か?
フレームワークは特定の機能を作るために、作りやすくした仕組みのことです。
つまり、ある程度の仕組みがフレームワークとして、すでに出来上がっており、あとはユーザー(開発者)が機能を付け加えて完成させます。
ある程度出来上がっているフレームワークなのですが、なぜそんな途中のものを使うのか?
次になぜフレームワークが必要とされているのかを解説します。
なぜフレームワークが必要か?
なぜフレームワークが必要とされるのか。を紹介します。
djangoなどのフレームワークがなければ、webアプリケーションを作るために多くの手間を必要とします。
例えば・・・
- requestオブジェクトを作り、
- データベースの環境設定をして、
- URLのルーティングを整理し…etc
など、作るための手順がとても多くなります。
簡単なアプリケーションを作るだけなのに、おそらく予想する以上に必要な工程が増えてしまいます。
その手間を簡潔にしてくれるのがフレームワークです。
フレームワークを使えば、requestオブジェクトは既に作られてあり、データベースはモデルの設定のみ、URLも urls.pyを作るだけでルーティングは勝手にやってくれます。楽ですね。
もっと分かりやすくするために簡単に例えると、フレームワークはレトルト食品に例えることができます。
作りたい料理のために具材を一から集めて、切って、調理して、好みの味付けして、器を用意して、取り付けて…とフレームワークを使わないと全てを一から用意してやらないといけません。
これは非常に大変です。
全てを一からでやるよりも、レトルト食品(フレームワーク)を使って、すでに調理までしてあるものに、あとは味付けと盛り付けだけする方がよほど楽です。
このようにフレームワークはある程度用意してある仕組みで、あとは少し付け加えるだけで完成するようになっています。
これは開発者の手間を極端に減らすことができるため、フレームワークは重宝され続けています。
djangoのメリット・デメリットは何か?
djangoのメリット・デメリットについて紹介します。
まず、djangoのメリットとして3つ挙げます。
多様な機能が既に備わっている
まず一つ目のメリットです。
djangoで用意されているのは、URLを入力するとページが表示される機能だけではないです。以下のような機能もあります。
管理者画面
webアプリケーションの管理者としてデータの整理ができる機能がすでに備わってます。追加・読み込み・更新・削除がかんたんにできます。
ユーザー認証
SNSのようにユーザー登録、ログイン、ログアウト、ユーザーごとの情報管理の機能があります。一から作ると大変な機能ですが、既にあるのはとてもありがたいです。
メッセージフレーム
ユーザーに”エラーが生じました”や”登録が完了しました”など画面情報にメッセージを出してユーザーに知らせる機能です。
フォームの作成
ユーザーが何をアウトプットするか決めることができます。Twitterのように文字か、instagramのように写真をアウトプットするか決め、それらに合わせたアウトプットのフォームも用意できます。
このようにdjangoにはさまざまなことができるように、既に多くの機能が付いています。これらを利用すれば開発がさらに楽になります。
単純な構成で分かりやすく素早く作れる様に配慮されている
djangoの特徴とも言える部分です。djangoは構成が非常に単純でわかりやすいです。
メインとされる構成は以下の4つです。
- URLを設定するurls.py
- データベースに保存する型を設定するmodels.py
- フォームを設定するforms.py
- 各ページの処理を決めるviews.py
たったこの4つのみで簡単なwebアプリが作れます。webサイトだけならurls.pyとviews.pyの2つだけでできます。ただし、HTMLの記述はwebサイト、webアプリどちらも必要です。
他にもdjangoの設定を決めるsettings.pyなどもありますが、上記の4つと比べるとコードの追加量は少ないです。
高いセキュリティ性
djangoはセキュリティに関して、作成したサイトが安全になるようにいくつかの対策を設けています。
公式サイトにはdjangoは以下に関してセキュリティ対策を施しています。
- クロス・サイト・リクエスト・フォージェリ(CSRF)
- クロス・サイト・スクリプティング (XSS)
- SQLインジェクション
- クリックジャッキング
- SSL/HTTPSインジェクション
- Host ヘッダーの検証
- ユーザーがアップロードしたコンテンツ
例えば、一番最初のCSRFに関しては、テンプレートのフォーム部分に {% csrf_token %} をつけるだけでサイトの安全性を高める設定です。
このようにdjangoでは既にセキュリティを高める方法が準備されてます。
では反対にデメリットに関して2つ紹介します。
日本語の情報が少ない
これが一番痛いデメリットです。
django公式サイトは翻訳が進んでるものの、まだ大半が英語のまま解説されています。
重要な部分、よく使われる部分は日本語翻訳されていますが、ここを詳しく知りたいと言う部分に限って英語しかない場合が多いです。
しかし、最近は徐々に本サイトのようなdjangoのプログラミングブログや記事も増えているため、公式サイトで英語のままでも個人ブログで解説されていることもあります。
動作がそこまで速くない
djangoを触ってみると動作速度に優位性を感じないと思います。
djangoで作った同じサイト内の別のURLに飛ぶ場合やデータベースにデータを登録する場合などでも、動作がすぐ完了しません。多少の時間を必要とします。データによりますが、数ミリ〜数秒程度です。
django自体も高速性は一切謳ってないが、動作速度を重要視しないなら特にデメリットにはならないでしょう。
djangoで何ができるのか?
djangoで何ができるか紹介します。djangoができることは非常に幅広いです。
企業や組織のホームページなどの一般的なサイトの作成はもちろん作成できます。
サイトだけでなく、InstagramのようなソーシャルネットワークやDropboxのようなコンテンツ管理プログラムなどのアプリケーションの作成までできます。
ちなみにdjangoで作られたwebアプリケーションは以下のようなものがあります。
有名なものもチラホラありますね。
- Youtube (動画共有プラットフォーム)
- Dropbox(オンラインストレージサービス)
- Spotify(音楽ストリーミングサービス)
- YahooMap(地図アプリ)
- Udemy(オンライン学習プラットフォーム)
- NASA(サイト)
- Disqus(オンラインコメント機能サービス)
- Instagram(写真・動画のSNS)
- Knight Foundation(サイト)
- MacArthur Foundation(サイト)
- Mozilla
- National Geographic(サイト)
- Open Knowledge Foundation(サイト)
- Pinterest(写真共有サービス)
これらのサイトやサービスは全てをdjangoで作っているわけではありません。djangoで作られている部分は一部であったり、多くの部分であったりなど、サイトやサービスに依ります。
また、当たり前ですがHTMLやJavaScriptなどのフロント部分の言語や知識も必要となってきます。
djangoの学び方の紹介
djangoの学び方には複数の方法があります。
webサイトを見ながら無料で学ぶ方法から書籍・動画、スクールを通して有料で方法などさまざまです。
それぞれの方法を紹介しつつメリット、デメリットを解説していきます。
Webサイトで学ぶ方法
Webサイトで学ぶ方法を紹介します。初心者向きのチュートリアルがあるサイトは以下のサイトがあります。
メリットとして、Webサイトでの学習方法の多くが無料で学べます。(PyQのみ有料)
また、簡単なアプリを作るまでに必要な全体的な流れを知ることができます。
デメリットとしては、やはり独学になるため、モチベの維持と努力が必要です。
文章のみ、時々画像があるだけなので、解読までに時間を費やします。
追加情報ですが、django公式サイトチュートリアルは解説がやや難解なため、初心者には少し難易度が高いかもしれません。
書籍で学ぶ方法
初心者が書籍で学ぶにおすすめなレベルの本を以下に紹介します。
メリットとして、Webサイトのチュートリアルで学ぶより学習内容が豊富な書籍が多いです。
目次で内容全体が把握しやすく、何が学べるか、復習したい部分をすぐに読むことができます。
デメリットは、質問がすぐにできないため、つまづくと自分で解読する努力が必要になります。
また、1冊の本で書かれていることは限定されるため、初心者以上のレベルを学ぶためには、他の本を読むなどの次の学習に向けた準備が必要です。
動画サービスで学ぶ方法
動画サービスで学ぶ方法としてはUdemyが一番種類が多く、学びやすいです。
そのUdemyの中でも以下の講義をお勧めします。
「【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!(Django2版 / 3版を同時公開中です)」
このの動画はタイトル通り3つのアプリを作成します。
1つ目は簡単なアプリですが、2つ目、3つ目はToDoタスクアプリとSNSアプリです。
そのため、たった3つのアプリ作成ですが、非常に幅広く学ぶことができます。
動画を元に学習するメリットとしては、動画なので繰り返し再生や再生速度を遅くすることで開発手順をなぞりやすいです。
また、動画の内容はアップデートが可能であるため、最新の情報を得やすいのも特徴です。
質問して回答が得られる場合が多く、学びを止めずに進めやすいことも特徴です。
今までの学び方について、さらに詳しい解説は以下の記事でも紹介しています。
参考にしてみてください。
最後に
以上がpythonのフレームワーク「django」の 解説とdjangoで何ができるかの紹介と、メリット、デメリットと学び方についてでした。
この記事を通して、これからdjangoを学んでいきたい!という方が少しでも増えていったら嬉しいです。
以上。