2021.03.12tkinterはPythonでデスクトップアプリを構築するライブラリです。比較的簡単(GUIが簡単という意味です)なアプリを構築するのに使われています。tkinterで開発しろと言われても、システム全体の構造までtkinterは決めてくれません。システム全体の構造は開発者の手に委ねられることになります。そんなときに、アーキテクチャの知識があるとシステムが見通しのいいものになります。この記事では、前編後編に分けて、tkinterで少し処理が込み入ったアプリを構築する際に必要なMVCアーキテクチャの解説と、MVCアーキテクチャをどうtkinterで実現するのかについて書いていきます。実際の処理はじめに:何も考えずtkinterで作るとネットの記事で多いのが、tkinter自体のコーディングの仕方を解説するだけの記事です。tkinterのウィジットの使い方について調べたいときはこれでいいのですが、何も考えずにtkinterだけを使うと、一つのソースコードにtkinterの処理とデータの処理が混在し、処理対象がソースコードの部分部分によってまちまちで、見通しの悪いコードになります。開発するときはそれでも動くのでいいかもしれませんが、問題は保守のときです。自分の書いたコードがどこで何をやっているのか分からなくなり、保守に難儀します。そこで、tkinterを使いつつシステム全体はきちんとした構造をもったものにする必要があります。そんなときに考え方の基本としたいのがMVCアーキテクチャです。MVCアーキテクチャとは?MVCアーキテクチャとは、Model:データとデータを処理するロジックView:画面と画面を処理するロジックContoroller:全体の制御に分けてシステムを構築するアーキテクチャです。ContorollerがModelとViewを制御します。通信はContorollerとModelの間、ContorollerとViewの間で行われ、ModelとViewは互いのことを知りません。めんどくさそうだ...と思うかもしれませんが、実はこの構造でシステムを構築すると、大変見通しの良いシステムになります。最近はCの代わりにVM(ViewModel)という呼称を導入しMVVMというものも出てきていますが、本質的にはMVCと変わりません。サンプル1:アプリ制御と実際の処理の分離それでは、さっそく例を見ていきます。ViewとContorollerを分離した例です。全体構造このシステムは画面で指定したパラメータに従って処理を行わせるものです。全体の一部を抜粋します。'抽出処理が終了しました')#メイン。クラスを作って呼んでいるだけ。...処理...それぞれについて見ていきます。アプリ制御まず、desktop.pyです。Viewというか、アプリ本体の制御ですね。このファイルにはクラスApplicationが一つあります。これがアプリのクラスです。Application(master=win)app.mainloop()でウィンドゥを生成してイベントループを回します。Applicationには関数が2つあります。column=1)これが初期化関数です。ApplicationはFrameの派生クラスなので、Frameを初期化するために、まずsuper()の__init__を呼びます。その後、ウィンドゥタイトルや部品を描画します。ボタンには押下時のイベントハンドラを紐づけます。それがextract関数です。extract関数は次のようになっています。'抽出処理が終了しました')処理関数であるextractionのextractを呼び出します。呼び出すとき、自身のメンバ(各入力部品に紐づけられたメンバです)の値を引数として渡します。処理が終わったらメッセージボックスを表示します。実際の処理contoroller、実際の処理を行う関数は、次のようになっています。...処理...ここにtkinterの影響は全くありません。tkinterの処理は、全てdesktop.py内で完結しています。別にこの関数はこのアプリでだけ使えるというものでもありません。import文を見てもらえば分かる通り、tkinterの影響は全くないのですから、処理だけを切り離すことができます。これが、構造を分ける利点です。各モジュールはモジュールの本来の目的に専念することができます。見通しの良いシステムとは、このようなシステムのことを指すのです。このシステムではModelは出てきませんが、extraction.pyのコードにあるように、Modelは現実のExcelファイルそのものになっています。後編では、もう一つ例を見ます。次へ12エージェントへの登録はお済みですか?今すぐフリーランスになる気がなくても、エージェントへの登録は済ませておくことをお勧めします。理由はストレスや疲労が限界に達してからだと遅いから。現在の自身のフリーランスとしての価値・単価相場を把握できますし、条件にあった案件をキャッチできるようになるので、いざフリーランスになろうとした際に早期に手が打てます。エージェント登録は無料なので、今はフリーランスにならなくとも登録だけはしておくべきです。真っ先に登録すべきエージェントは、圧倒的に多くのクライアントを開拓しているDYMテック。2500社の優良な取引先と、条件交渉力が強く高条件で仕事を紹介してくれるエージェントです。案件紹介のみでなく、エンジニアとしてのキャリア相談や業界動向のキャッチアップなど、フリーランス対してのサポートも充実していますので、初めてフリーランスに挑戦する方も安心です。STOCKフォスターフリーランス担当スタッフが業界歴平均10年とIT業界に精通。Reserved.ホーム検索トップサイドバ。