Python Webフレームワークどれにする?
仕事はピュアPython(おそらく)なのでフレームワークはついつい忘れていた Djangoしか聞いたことなかったので、軽くまとめます
Pythonフレームワーク
理解はフレームワークのリファレンス、入門記事を読んで理解できそうかってことです
FW | リファレンス | 特徴 | 向いている | 理解 |
---|---|---|---|---|
Django | ◎ | 認証機能が簡単に作れそう、メジャー | 全般 | 〇 |
bottle | 〇 | WSGI、シンプル | 全般 | 〇 |
Flask | 〇 | WSGI、Springに似ているらしい | 全般 | 〇 |
Tornado | △ | ノンブロッキングI/O | ポーリング処理 | △ |
Plone | △ | CMS | 企業向けCMS | × |
CherryPy | △ | 高速、安定 | 全般 | △ |
WSGIとは Web Server Gateway Interface Javaのサーブレット的な存在(Java Servletとは) Pythonは「フレームワーク×サーバ」の組み合わせで使えなくなる機能とかあったみたいですね WSGIであればサーバの種類問わずフレームワークの機能が思いっきり使えます!
ノンブロッキングI/Oとは ノンブロッキングI/Oとは ノンブロッキングI/Oと非同期I/Oの違いを理解する ノンブロック:一方の処理が完了していないときはエラーが返ってくる 非同期:一方の処理が完了していないときは待機 こんな感じで覚えておこう
CMSとは コンテンツマネジメントシステムとは HTMLやCSSなどのWebサイト制作の技術がなくてもWebサイトが作れるシステム CMSが導入されているとWeb担当者以外の人もサイト更新ができる → ニュース、プレスリリースの多いサイトに向いている
理解できそう?ちゃんと使えそう?
初心者にも理解できそうか、フレームワークの恩恵を授かれそうか、リファレンスを見てみた
Django ユーザー認証がお手軽にできそうなのが良さそう WSGI設定もできるのでサーバーによって機能が制限される心配もなさそう Model(Entity)クラスの準備ではコマンドでマイグレーションするところがPHPのLalavelとそっくり (あんまりPHP分かっていないからあれだけど) メジャーなフレームワークなので入門記事が豊富で安心
bottle bottle.pyファイルを配置するだけでフレームワークが使える フレームワーク導入でつまずいて、なかなかコード書くところまでたどり着かない!がなさそう コードはJavaのSpringのControllerクラスみたいで分かりやすかった (アノテーションでルーティングするところ) リファレンスもDjangoほどではないけれど、初心者には事足りそう
Flask bottleより機能が充実している感じ? Spring Controllerクラスに見える JSTLみたいにHTMLにif文を簡単に書けるのが良い こちらもリファレンスは事足りそう
Tornado ノンブロッキングI/Oを使いたいアプリならこれ!なんだろうな bottle、Flaskと同じく軽量 コードはピュアPythonに見える これまでのフレームワークよりもリファレンスが少ない感じがある
Plone リファレンスがとても少ない…! 導入・運用がしやすいとしか分からない
CherryPy ネーミングがいいですね bottleと同じく導入がお手軽そう レガシーなフレームワークっぽいけど、その割にリファレンスが少ない pythonコードからHTMLタグを返しているサンプルコードがあったけど。。。 (私、サーバサイドからHTMLタグ返すの好きじゃない)
Django、bottle、Flaskのどれかで入門したい!!