「これからの時代はPythonだね」と軽く思ったあのころ。
「GUI環境を作るんだったらkivyがいろいろ便利だね」と軽く思ったあのころ。
あれから、半年たって、あの軽く考えていたころが懐かしい。
このkivy戦記シリーズは、2週間ぐらいで終わるつもりが、半年もかかってしまった。
いくらなんでも時間がかかりすぎである。
実は、つい最近過去の「kivy戦記」を読み返してみたが、要は根本的にkivy(やPythonやGUIアプリの作り方)を知らなかったのが必要以上に時間がかかった原因なのである。
自分の力のなさを痛感した半年であった。
その半年間kivyをやっていたのだが、そもそもkivyというのは手段ではないか。どうもそれが目的化してしまっているきらいがある。こっちだってやりたいことはたくさんあるので、いずれはkivyから離れることもあるだろう。しかし、その半年間の苦労を水の泡にしないようにしなければならない。
今まで作ったものはアンチパターンの塊になってしまったが、問題点をひとつづつ考え、今後の製作の参考にしたい。
なお、当初予定していたfilelist.pyをもとにいろいろアプリを作る構想は、そのfilelist.pyの出来が惨憺たるものなので、少なくとも、これをベースにはできないのである。
設計手法の失敗
今回は、アジャイルのまねごとをしてみた。
つまり、思いついた小規模な仕様を何も考えずに開発する。ということだった。
結果、アジャイルをなめていたことを思い知らされたのである。
決めるべきところは、きっちり決めるべきだった。
過去分を読み返した。
当初は’Hello Wolrd’ならぬ’Hallo Foods’を出すだけだから、設計も何もかなったのだが、この後大まかな設計が示されたとき(kivy戦記(3) とりあえずの仕様 https://koh-sen.jp/blog/archives/6946)、果たして画面と画面のパーツ(当初計画のOpeSCNとResultSCN)を決めただけで果たしてよかったのかという疑問が残る。
kivy戦記終盤で採用したように、テスト用のロジックであらかたclass単位で分けて作ってしまうというやり方の方が要かったのかもしれない。
ただし、当初は、最初からkvファイルで(kivy戦記(4-2) とりあえず解決 https://koh-sen.jp/blog/archives/6978より)
<AllSCN>:
BoxLayout:
size: root.size
OpeSCN:
<OpeSCN>:
BoxLayout:
Label:
text: 'aaaa'
canvas.before:
Color:
rgba: 0,.5,0,1
Rectangle:
pos: self.pos
size: self.size
AllSCN:
で、子widgetが使えると何となく思っていたのだが、のちに当時の私のスキルでは行き詰まりを起こし、こういう構造をあきらめた経緯があるので、なかなかそういう手法が使えなかった。
私の当時のkivyのスキルもあるが、手探り状態で作っていたので、そこまで考え至らなかったのが実情である。
終盤にテスト用ロジックを作る手法ができたのは、心に余裕ができたからだと思う。
あとこれは、次項で詳しく述べるが、ボタン等の名前を決めていなかったので、最後まで混乱のもととなった。
いずれにせよ、TreeViewを仮実装(シンカリオン何たら)(kivy戦記(10) kvファイルを使ったTreeView https://koh-sen.jp/blog/archives/7182)をする前に、設計手法について再度見直すべきだったと思う。
そして、その時点では全体像が見えなかったとはいえ、popup採用など、ことあるごとに設計手法を見直すべきだった。