Django 2.0リリース記念【2018年度おすすめ最新!PythonのWebアプリケーションフレームワーク】

この春休みや新学期、東京コミックショーを超える真の大蛇使いとなるべく蛇使い訓練を開始する皆様に向けて、あらためて、Django 2.0リリース記念【2018年度おすすめ最新!PythonのWebアプリケーションフレームワーク】をお届けします。







あなた・・・とうとう出ちゃった・・・

・・・?・・・何が?

ほらこの子



うわぁぁぁぁぁぁ



・・・ということで、あの少ない文字数でもビッグな働きをしてくれる、初心者から上級者まで大満足の言語~大蛇Pythonを、より扱いやすく手名付けてくれる荒野の野犬Djangoの新バージョンが2017年12月、多くの企業が年末対応の闇ワークで忙しい中、こっそり世に放たれていました。

で、こんな時に気になるのが、「既存のツールと新Django、どっちが使いやすいねん?」っていうあたりです。



既に、大手各メディアなどでは、特に言及するまでもないほど話題にもなっていないネタですが、春休みや新学期、東京コミックショーを超えるべく蛇使い訓練を開始する皆様に向け、改めてDjango 2.0リリース記念【2018年度おすすめ最新!PythonのWebアプリケーションフレームワーク】のまとめ をお届けします。









人工知能やデータ分析などが非常に進み、それを自動でサイト構成などに反映させる機能実装も増えたことから、さまざまなライブラリが充実したPythonが、とくに各方面で脚光を浴びています。

テキストのみならず、データ、座標などを扱わせても、非常に使えるPython。


それをさらに簡単に扱うためのフレームワーク中、最も有名で利用されることが多いといわれてきた、2005年から使われている「Django」が2017年12月にメジャーチェンジ。

「みんなの乗り換え状況は?」「使い勝手は?」「覚えること多そうかな?」「で、最近どれが流行ってるの?」なんて気になる方も多いかもしれません。







Web仕事の多い私ですが、これまでほとんどPythonを使う機会がない「れがしい」というより「のすたるじー」「昭和ロマン」「IT界の骨董感」の漂うシステム周りだったこともあり、Pythonの生うちが多かったわけです。

たまたま偶然ですが、今日ちなみに初めてアナコンダを使った(今更か)わけですが「何、この使いやすさ!」という・・・もう本気でPython技術者目指そうか(今更か)と思うほどの感動でした。



この感動を逃さず、だからこそなんとなく、このPythonをさらに使いやすくするさまざまな技術をお伝えしたくなりました。



(使ってる人には今更かもしれませんが・・・)











【Pythonとは】









簡単に覚えられ、かつ使いこなせるにも関わらず、非常に汎用性が高い「Python」。

たとえば、サーバや通信系インフラなどの処理を自動化させ、その自動レポーティングと配布などの用途にも使える程。

日本でも多く利用されている大型のWebサービスサイトや、高い安定性が求められる公共案件のWebでも、Pythonは非常に良く利用されています。



そんなこともあり、当初より各ツールが非常に発達。結果、プロトタイプ作成が、ものの数分でできるといわれるほど「さらに」各種環境が充実。

Web系、それ以外系のいずれでも、「一週間でできる」系の初心者向けの入門書1冊を読めば、あとはフレームワーク任せ。この習得と使いこなしまでが時短!

ブラウザ経由でコーディング&出力というものも多く、初心者でも存分に使いたおせます。


正直、習得にあたって一切スクールを使う必要がない言語の1つかもしれません。


常に求人なども豊富で、いまから何か一芸を増やしたい方、週末にさらっと取り組むPythonは、激短で高収入につながるかも!





各フレームワークまとめ

まずは主役から【Django】2.0







Pythonの中では、もっともよく知られているWEBフレームワークのDjango。2005年にデビューし、この2017年12月にVersion2.0がリリースされました。

非常に多機能なオープンソース。

これまでには、「Instagram」や「Pinterest」といったアクセス高負荷でデータも大きく、さらに利用に応じてバックエンド拡張なども必要なサイトを中心としたWEBアプリケーション作成にも使われてきました。


2.0特徴は?

他のツールに比較しても、「全部入り」「強靭」「拡大するときはもちろん、一部機能を整理したいときにも削りやすい」点が、本当に開発者想い!

ほら、どうしても作業後のデータ量の推移だけで、プログラミング改変時の業務を計る企業ってあるじゃないですか。サーバ内占有領域だけを評価対象にしてくるような・・・こんな無茶ぶり尺度の企業相手でも、無駄がそぎ落とされている分非常に対応しやすいソースになります。

さて、特徴ですが・・・
  • DRY:Don’t Repeat Yourself!
  • ややMVC:ゆるめのMVCモデル利用
  • 最初から全部入り:管理画面、ユーザ認証、RSSとAtomフィードなど、必須といわれるものは大体最初から入ってます(開発&テスト用のスタンドアロンWebサーバとかいうものも含まれます)
  • ユーザー認証などのセキュリティが強固:とくにセキュリティ系は、最初からなんでも入っているため、あとはなにをプラスしようかという感覚で開発できます
  • 豊富なDBサポート:Oracle 、MySQL 、PostgreSQL、SQLite
  • 強靭なのでWEBから管理系システムなどのアプリにも使える:セキュリティ面でも、またシステム上も強固なので、SNSや計算機系などにOK
  • 各パーツが独立しているから拡張性も切り離しなどの更改時も時短でOK:一般のCGIやWPのようなタイプでは、各パーツに相互依存している部分も多く、よく理解しないと各部が切り分けられないため、切り離しとテストが大量に必要。ですがDjangoでは役割がほぼ固定されたうえ独立性が高いパーツがほとんど。楽です!

・・・などなど。

日程的にタイトな環境で結果を出すために開発されたフレームワークというだけあって、本当にさくさく作れます。

大きな変更点では、Python3.4/3.5/3.6だけサポ
URLルーティング構文 Pathのインクルードがさらに短く!
admin画面がレスポンシブな感じ!

また、いろいろと新たに禁止された変更箇所も!https://docs.djangoproject.com/en/2.0/releases/2.0/

【Tornade】





Node.jsの代替としても使われているTornado。フレームワーク&非同期通信ライブラリで、現在はFacebookが買収したFriendFeedが開発しています。

Jupyter Notebookでも使われています。




特徴は?


  • 万単位のコネクション数を「ノンブロッキングI/O」で一気にOpenに:長時間のコネクションが必要なWebSocketのようなものに特にぴったり
  • 非同期NWライブラリの上、高速処理:シンプルで処理が高速。かつノンブロッキングなのでリクエスト処理だけをじゃんじゃん行わせることができます。単体でWebサーバとして使える点も人気。
  • 非同期NWライブラリだからメンテナンスが楽:前述のように非同期~&ノンブロッキングなので、大規模サーバで後進にかかるI/O処理を後回しにして、リクエスト処理などを行う更新も可能。なので、稼働状態のそのままメンテナンスが行いやすいという特徴があります。
・・・などなど。

非常にシンプルということが売りでテンプレもシンプル。これで開発を進めて運用を開始した後、主要な部分をオリジナルのフレームなどに移し替える時にも、開発部分の理解がしやすく、手数も少ないところも好まれています。
(ただし、企業で使う際はBottleなどのほうが、より好まれる傾向が ※後述)





【Bottle】





がっちり作りこむ人にとってはシンプルで使いやすく、そして学習者でも簡単に理解できるほどの単純&シンプルさが売りのBottle。

本当にシンプルで、他のライブラリ依存が全くないほど。なにより、ファイルたった1つで構成されており、その機能のほとんどもルーティングと呼ばれるもの

ソース全体について、ありとあらゆる部分を、すべて把握しながら追加していきたいときのベースなんかにも使いやすいことと、シンプルなので、初心者が技術習得のために始めるのにも、よくおすすめされています。そもそも読み込んで理解するまでが非常に時短で済んでしまいます。


特徴は?


  • 他ライブラリへの依存がない:シンプル過ぎ
  • Pythonファイルたった1つ:シンプル過ぎ
  • 本体 ごく軽量:シンプル過ぎだから
  • メンテナンスらくらく:コード自体がわかりやすいほど洗練されてシンプル、そして1ファイルなので、手を加えやすいです
  • Bottleのルーティングって?:NWのルーティングではなく、このファイルに対してWeb上でアクセス設定を行って、さらに附属する機能を追加していくという方法のこと。

・・・などなど。



シンプルっていうだけで何に使われているか、そしてどのくらい有意かわからないという方が多いのですが、比較的大きなデータで動的なデータをプロットしたいときなど・・・アクセス解析や人工知能などのデータを解析しながら何らかのビューを得たいときなどに使えるテンプレートエンジンという機能があります。これはサーバアプリの中に、. htmlのひな形があらかじめ入っているもの。その中で引数部分を置き換えたページメモリにキャッシュして表示するので速さが抜群。





【Flask】





Pythonの軽量フレームワークの中では2018年1月現在1番人気のブツ。まだ多くの技術者は、新Djangoに対応してないってことですかね?

Jinja2とWerkzeugから作られており、開発者が先ほど紹介の「Bottle」をもじり、冗談で作ったものです。


その特徴は?


  • シンプルで使いこなしやすい:短時間開発による小規模サイトやプロトタイプ作成にとくにピッタリ
  • 自称マイクロフレームワーク:機能を最小限にして、なんとなく冗談で作ったというもの、だからフォーム価検証やDB抽象化レイヤはありません
  • 高い拡張性…だが…:依存度が少ないので機能切り離しなどもしやすく、かつマイクロサイズだからこそ、拡張性もさまざま。ですが自由度が高いために、何をどんなふうに加えたのかの、自身のコーディング部分の記録がしっかり残っていないと、次のメンテナンス時に担当者が毎日スパゲティ漬けとなります。プロ開発者を自認するタイプには、この自由度がなければ使えないなんていう方も多いです

・・・などなど。

ほんの数行でWEBアプリが作れるほど本当にお手軽。そして自由過ぎることでしょうか。







【Pyramid】





小規模から大規模システムまで、全てに使いやすいシンプルさと柔軟性。

Djangoは「はじめから全部入ってる」感が強いのですが、Pyramidの場合、自分で各種ライブラリをもってきて、構成する必要があります。

それだけ無駄のないソースが「より効率的に作れる」


その特徴は?


  • フレームワーク側が各種ライブラリを持っていない:自分で理解した、最適なライブラリだけを組み込むことで、無駄のないソースが作れる
  • シンプルすぎる構成ゆえに、柔軟性が高い:前述のように作りこみベースのような部分があるため、当然に柔軟性が高い+堅牢さがあり大規模システムまで対応できます

・・・などなど。

他にもたとえば、
  • 外部依存がないオブジェクト指向のWebアプリケーションフレームワークの「CherryPY」
  • フレームワークとして扱われていますが、実際はコンテンツマネジメントシステム故、文書なども扱え、業務ソフト等としても対応可能な「Plone」
なんていうフレームワークも人気です。

【まとめ】









ほら、こんな簡単に手名付けられましたが、いかがでしたか?



ごく静的WEBでもなんでもテキストエディタ打ちする派(今更何を的な人材)である私が「いやー今まで一体なにをやってきたんだろう」と確実に打ちのめされるフレームワークたちをご紹介しました。


もちろん、なにか複雑なことをしたくなったり、セキュリティや版権関連を考えて自社で0からオリジナルのものを作ることが課せられてるとか、めんどくさい機能拡張を無駄なく組み込むとかいうことがあるケースでは、自前で作る部分が増えるわけですが。

でも、これだけ便利なものが入ってるなら、やはりプロトタイプなどではがんがん使っておくべき。工期や予算がプラスされてから、こうしたフレームワーク部分をクリアさせるといった方式で、書き換えるほうが断然効率はいいんですけどね・・・



いやー、10年以上前から使っておいても良かったよなあ・・・(今更)



よく、「たとえばRubyだってCで開発されてるだろ・・・こういったフレームワークを使うために覚えることは、単に本来のCみたいな万能言語に対して遠回りをさせられているだけだ」なんていうお年寄りがいるんです。

でも、Cではやっぱりお手軽なモックアップを創るとか、社内で使うツールなど予算や時間をかけなくていいものを、どんなベテランが作るとしても、かなりの手間がかかるのは避けられないわけです。

で、覚えるのは、こうした言語の基本がわかっていれば、ちょっと説明を聞いただけでするっと頭に入る・・・

さらにはこうした便利なあれこれをつかって出来上がったコードは、フレームワークなどによって差はあれど、一定の制約を受けるため、誰にとってもある程度は読みやすいコードとなるのです。

単にパートに分かれたコーディング作業をしているとこういう気づきって、なかなか得られなかったり、あるいは誰かの作業に合わせすぎて、そしてフェーズごとに人員が入れ替わるから、直属の上司の指示で、コーディング上の優先順位に揺れが出たり・・・

となれば、単に常になにか整然としたコードを生成することで、全体の作業のちょっとした時短にも寄与できるという意味で、やっぱりこれも、使えておいたほうがいいと思うんですよねえ。

Additional Images




Comments

Loading…

We use cookies and other technologies to improve your experience on our website and to analyze our traffic. By browsing our website, you consent to our use of cookies and other tracking technologies.

Accept cookies and close this message