最近人気急上昇中のプログラム言語『Python(パイソン)』。
『機械学習』や『統計学』にめっぽう強いものの、
『Python』でWebアプリをつくろうとすると、
『Python』だと何かと手間がかかる・・・
そんな声にお応えしたのが、
『Python』のWebフレームワークである『Django(ジャンゴ)』。
この記事では、『Django』のメリットをまとめてみることにしました。
PythonでWebアプリならDjangoな理由1 機能たっぷり
Python(パイソン)のフレームワーク(便利な道具箱の詰め合わせ)といえば、
- Django(ジャンゴ) ・・弁当で例えれば幕の内弁当(豪華版)
- Flask(フラスク) ・・のり弁?(シンプルで使いやすい)
と他にも『Bottle(ボトル)』などあるのですが、
一番機能がたっぷり詰め込まれているのが『Django(ジャンゴ)』と言われています。
『Django(ジャンゴ)』でつくられている有名なサイトといえば、
- Youtube
- Dropbox
- インスタグラム
- Spotify(音楽ストリーミングサービス)
- Reddit(アメリカ最大のソーシャルニュースサイト)
- YahooMap
- Pinterest(画像シェアサービス)
- ワシントンポスト
- NASA
- Prezi (クラウド上のパワーポイントのようなサービス)
などなど、海外発の超有名サービスで多く使われています。
これらのWebサイトの多くに、
- コメントを追加できる
- 写真・記事・動画を投稿できる
- 会員ログイン機能がある
- シェアする機能がある
- 友人にメッセージできる
- 管理画面で設定ができる
といった機能が盛り込まれています。
それらの機能を個人が一からつくるとそれはそれは大変な手間がかかり、
かつ間違うリスクも、セキュリティが十分じゃないという危険もあり、
と世界中の天才たちが知恵を出し合った結果が『フレームワーク』であり、『Django(ジャンゴ)』なのです。
Djangoの機能は盛りだくさん。
- 管理画面
- ユーザー認証
- 開発用サーバー
- ORM(データベースと簡単にやりとりできる)
- キャッシュシステム(情報残して高速に表示)
- テンプレートエンジン(簡単にWeb画面が書ける)
- セッション(キャッシュより詳細な情報を一時保存できる)
- 管理コマンド
- ユニットテストフレームワーク
- プロジェクトテンプレート(コマンド1つで簡単作成)
- フォームウィジェット(よく使うフォームは簡単作成)
- URLディスパッチャー(URLの切り替え機能)
- ストレージシステム(データベースとの接続かな?)
- セキュリティミドルウェア
- フラッシュメッセージ配信(一時的なお知らせ(パスワード間違ってるよとか))
- 国際化(これが欲しかった・・!)
- メール送信フレームワーク
- 他にもあるよ
さらに、『Django(ジャンゴ)』だけでたりない機能は、
第3者(専門用語でサードパーティー)がつくった便利道具も盛りだくさん。
- django-debugbar(うまく動かない時に原因をわかりやすくする)
- django-restframework(これまたすごい機能・・!)
他にもブログ作成機能だったりショッピングカート機能だったり、とにかく盛りだくさん。
と思えるほどの盛りだくさんなラインナップなわけです。
PythonでWebアプリならDjangoな理由2 めっさわかりやすい
『Python(パイソン)』は一度やってみるとわかるんですが、とにかくわかりやすい。
ほとんど英単語だけでなりたってるんじゃないかというくらいシンプルな文法で、
さらに強制的にインデント(段落)をつけないと動かないという仕様のため、
誰が書いても見やすいような仕組みになっています。
そんな『Python(パイソン)』で書かれている『Django(ジャンゴ)』もまたとにかく見やすい。
個人的に、これまでPHPのフレームワーク『Laravel(ララベル)』を触っていた事もあって、
『Django(ジャンゴ)』の把握がしやすいというのもあるのですが、それにしたって『Django(ジャンゴ)』は見やすい。
PythonでWebアプリならDjangoな理由3 ライブラリがめっさ豊富
『Django(ジャンゴ)』の機能と、第3者(サードパーティー)の機能に加えて、
近年の人工知能ブームや機械学習の火付け役でもある、
『Python(パイソン)』のライブラリ(便利箱)がそのまま使えちゃいます。
- Numpy(ナンピー)・・C++で書かれている超高速な計算ツール
- Pandas(パンダス)・・いろんな計算をゴリゴリやっちゃう
- matplotlib(マットプロットリブ)・・いい感じにグラフ描画できる
- BeautifulSoup(ビューティフルスープ)・・Web情報の抽出ならおまかせ
などなど、他にも大量の『Python(パイソン)』ライブラリが存在してして、
天才たちがつくりだした便利箱をくっつけてちょっと調整するだけで
高機能なWebサイトが短時間でつくれるとなれば、そりゃあ人気出るよねってもんです。
知れば知るほど、なんで日本では認知度が低いんだろうかと不思議になってくるくらいです。
PythonでWebアプリならDjangoな理由4 なんとなく格好いい
えぇ、完全なイメージなんですけどね。
『Python(パイソン)』って本当にいろんな事ができるんですが、
不思議と難しいイメージを持たれている人が多いみたいで。
もちろん人工知能や機械学習となれば、高校・大学レベルの数学の知識が必要になるんですが、
- 微分積分
- 線形代数
- 行列
- その他難しい計算が盛りだくさん
Webサービスをつくるだけなら、
そこまで高度な知識がなくても、
とにかくググって試すを繰り返していくと自然とできあがるという印象です。
関連記事
PythonでWebアプリなDjangoの注意点
いいことばっかり書いてましたが、
『Django(ジャンゴ)』のデメリットももちろんあるので、まとめてご紹介。
- ある程度Pythonの知識が必要
- フレームワークの仕組みを覚える必要あり
- レンタルサーバーではだいたい動かない(HerokuやVPSが必要)
- 日本語の情報はちょっと少ない
- Go言語などに比べると遅いと言われている(作り方次第)
などかなと思いますが、
それを補ってでも、
世界で大人気な『Python(パイソン)』の機能をたっぷりと使える事はメリットかなと思っています。
PythonでWebアプリなDjangoを練習するならこのサイト
いざ『Django(ジャンゴ)』をやってみようと思ったら、まずはこの2つのサイトがおすすめかなと思います。
特にDjangoジャンゴガールズは、『Django(ジャンゴ)』やっている人は必ずと言っていいほど通る有名なチュートリアルのようです。
Djangoガールズに合わせて『Django(ジャンゴ)』をちょっとだけ補足すると、
Djangoガールズの中に、こういったフォルダ構成の説明がでてきます。
フレームワークの特徴として、ある程度ファイルの名前や場所、フォルダの名前は場所が決まっている事があり、
場所や名前を変えただけだと動かない(別途設定ファイルの書き換えが必要だったり。ものによってはとても面倒だったり)
となってしまうので、
最初のうちはフォルダ構成を間違えないようにしながら、
ちょっとずつメモでもとりながら進めていけばいいのかなと思います。
PHPの『Laravel(ララベル)』を独学した時も思い返せば、
最初のうちは、状況にもよると思いますが、
なんとなくわかるまで2週間〜1ヶ月くらいかかるんじゃないかと思うので、
厚めの本を一冊読むくらいの感覚で、
実際にコマンドを打ちながら真似してみるのが一番上達する方法なんじゃないかなと思います。
最後に
Web業界というのは、iPhoneが発売された頃から加速度的に進化していて、
どんどん新しい技術がでてきていますので、
新しい事やわからない事でも楽しんで習得できる人が
これからますます重宝されるのではと思います。
その頭の体操としても、『Django(ジャンゴ)』はいい選択肢の一つかもしれませんね。
『Python』関連ではこんな記事も読まれています。
1. 【Python】手軽に試す方法2つとwebフレームワークについて【初心者向け】2. 【Python(パイソン)】でできる事の実例 じゃらんや楽天トラベルからデータをとってゴニョゴニョできちゃうんです
3. 【Python(パイソン)】でホームページをつくった時の話【Flask/Vagrant/Heroku】
4. 【Python】Flaskのチュートリアルがもっとわかるようになるまとめ【初心者向け】
5. 【Python】用語集まとめてみた。~Webサービスをつくりたい人向け~【初心者向け】※随時更新中
6. 【Python】でWebアプリをがっつりやるならDjango一択な4つの理由【初心者向け】
7. 【Python/Django】Webアプリのテンプレートなら『cookiecutter』がよさげ【簡単で安心】
8. 【Python/Django】mysqlとの接続があまりにあっさりしすぎて拍子抜けした話
9. 【Python/Django】webフレームワークを使う6つのコツ〜最短距離でアプリをつくるために【初心者向け】
10. 【Django】Webアプリのフォルダ構成のアイデア〜違うアプリで同じテーブルを使いたい!
11. 【Django】【Laravel】【RubyOnRails】を比較してみた【初心者向け】【体験談】
アオキのツイッターアカウント。