みなさんはPythonを何のために勉強していますか?
大半の人が「機械学習がやりやすい」という答えになるのではないでしょうか。
Pythonにはnumpy,scikit-learn,TensorFlowなど機械学習の問題を解決することに特化したライブラリが豊富にあり、ユーザーは実装を意識しなくてもこれらのライブラリを「使う」だけである程度のアウトプットを出すことができる環境が出来ています。
ところで、PythonでもWeb開発ができるって、知っていましたか?
Pythonでできることは、機械学習だけじゃないのです。
Contents
Pythonで書けるWebフレームワーク
さて、本段落ではPythonWebフレームワークのよく使われているものから2つを紹介します。Webフレームワークはこれだけではないので、気になった方は各自調べてみましょう。
これ一つでWeb開発全部揃う、Django
「一つのフレームワークの使い方を学ぶだけでWeb開発が一通りできるようになりたい!」
という方には、Djangoというフレームワークをオススメします。
もし、すでにRuby on Railsを触った経験者が見たら、すぐにどういう設計か理解できるのではないでしょうか。
jDangoには、
- ブラウザからのアクセスを受け取る
- ログイン・ログアウトといったユーザー認証をする
- WebページのHTMLを描画する
- データベースと通信して、データの読み込み・書き込みを行う
といった、Webシステム開発で絶対に必要になる機能が標準で搭載されています。位置づけとしては「フルスタックフレームワーク」になります。
実運用プロダクトへの運用実績もあり、InstagramやPinterestなど有名海外WebサービスでDjangoが採用されています。
日本語のドキュメントも充実しているようです。https://docs.djangoproject.com/ja/2.1/
読み方は「ジャンゴ」と読みます。
Django公式サイト:http://djangoproject.jp/
小さく始めるWeb開発ならFlask
こちらは前段で紹介したDjangoと違い、FlaskコアはHTTPリクエストの振り分けのみになります。
MVCアーキテクチャのうち、Cの部分であるControllerのみの役割を持つのがFlaskです。
規模が小さいFWなので、プロトタイプ開発などにとても役立ちます。
データベースとのやりとりの仕組み、HTMLをレンダリングする仕組みは自分で選択する必要があります。
一見Djangoに比べてこの点はデメリットに見えますが、逆に言えば「データベースとの接続ライブラリ」「HTMLのレンダリング方法」を選択する自由が開発者に与えられている、といえます。
昨今のWeb開発ではサーバーサイドはHTMLを返さず、軽いJSONを返すだけのAPIを作るだけ、という要件のこともままあります。これならFlaskにデータベース通信ライブラリを組み込んでしまえば完成しますよね。
マイクロで取り回しのききやすさを重視するなら、Flaskが良い選択肢になるでしょう。
ドキュメントが日本語対応のものがなく、英語なので頑張って読んでください。
Flask公式サイト:http://flask.pocoo.org/
まとめ
いかがでしたでしょうか?今回はWeb開発ができるWebフレームワークに焦点を当てて解説していきました。
Pythonは一昔前は仕事も少なかったのですが、このようなWebフレームワークの浸透、同時に機械学習の発展によって徐々に案件需要が増してきています。
トレンドなフレームワークも学習していろいろなプロダクトを作れるようになれるとよいですね。
- Pythonは機械学習だけでなくWeb開発もできる
- Djangoは全部のせフレームワーク
- Flaskはマイクロフレームワーク。好みに合わせてカスタマイズを