IT企業の営業が初めてPythonを学んでみた話③すごいよWebフレームワーク篇
2019-06-17
azblob://2022/11/11/eyecatch/2019-06-10-sales-python-challenge-ep3-000.jpeg

こんにちは。FIXER M&S 竹中です。 本連載も3回目になりました。
前回ではコーディングを学び始めた私がオブジェクト指向を学ぶ上で苦労した点や理解を書かせて頂きました。

なんやかんやでオブジェクト指向の入り口には立てた私ですが、一難去ってまた一難がこの世の常です。次に私の眼前に立ちふさがったのが、そう「Webアプリケーション開発」です。Webアプリケーションとは何ぞや、という方は多くはないかと思いますが、例によりPyQのインストラクションから引用してみましょう。私はこういう外部リファレンスをTTP(徹底的にパクる)するタイプです。ちなみに、さらにHardにTTPすることを頭文字を取ってHttpと言いまして、これが近代のサーバクライアント間通信のデフォルトになっている訳ですね。昔の人も先人に学んでいたという良い教訓です。
(※誰も信じてはいないと思いますが、Httpのくだりはジョークです。それ以外は本当です。正しくはこちら

アプリケーションとは、利用者のニーズや業務に応じて作成したプログラムの総称です。 ExcelやWord、メール送信のソフトなどがアプリケーションと呼ばれるものになります。
Web上にアプリケーションを展開して、Webブラウザーなどを利用して主にインターネット通信するアプリケーションのことを Webアプリケーション と言います。

https://pyq.jp/quests/web_basic_flask_hello/#1

このWebアプリケーションの開発をサポートするために用意されたツールのことをフレームワークといいまして、PyQでは主にFlaskとDjango(ジャンゴ)を学ぶことができます。前者は比較的軽量でシンプルなアプリ、後者はエンタープライズ仕様でも利用できるような充実の内容になっています。DjangoはかのGoogleも広く採用しており、Youtubeの構築にも使われています。その他はNASAのサイトなどにも実績があります。ちなみに当社にはDjangoとデカデカと書かれたTシャツを愛用するエンジニアや頭部を半分剃り上げたエンジニア、万華鏡のように毎週髪色が変わるエンジニアなど一度見たら忘れられないキャラが大勢いるため逆に忘れてしまうほどです。

このDjango、大変便利でWebアプリ開発に不可欠なものなのですが、なにせコーディング初学者にはその概念が難しい。というのもDjangoではコーディングの記述がMTV、すなわちModel 、Template、Viewの3つに別れているからです。
ModelはDBとの通信を担い、データの取り回しを担当します。ViewはModelで取ってきたデータを整形します。if分、for分、リスト、その他見せ方に類する処理はViewで定義でき、関数化したものをHTML+CSS+JS等で表示するのがTemplateとなります。

役割ごとに分類がされているのは結構なんですが、初心者には「どれにどういう処理を渡せばいいのかが分からない」のです。例えばそんなに複雑ではない処理を考えるとき、ついつい面倒がってTemplateから直接Modelの操作メソッドを呼んで、ちょちょっとTemplate側でデータ加工して表示…ということを私はやりがちだったのですがこれはちょっと考えると誤りなんですね。なぜならどこかの画面から謎にModelが更新されているという事態になってしまうので。後からふるまいを変えたりバグ修正するときにとても大変というわけです。

うーむ。どうやらMTVではViewからModelとTemplateを見張っておいて、何か起きた際にはViewにデータの処理を任せた方がよさそうです。そうすればModelはDBとのやり取りだけ、Templateは画面表示だけに集中できてWe are the worldという感じがします(Viewだけが膨大になってしまった場合はどうすればいいのか?まだ私にはわかりませんのでどなたか教えてください)。

さて、ここまでで十分に複雑なWebフレームワークですが、私個人にはもう一段混乱することがあったのです。当社でよく使う.NETではASP.NET MVCというものもあり、MTVと微妙に表現が異なるのですね。特にViewという言葉は共通なのに意味するところは違ったり…。

そういうところだぞ!!(ノンテクの叫び)

次回予告:実は一番やりたかった「④ばっちりデータ分析篇」。お楽しみに。