見出し画像

Tkinterを学ばないと前に進めない。開発中止と基礎学習のスタート

今日、ZbrushプラグインYTマスクセーバーの英語UIをリリースした。そこで感じたGUIプログラミングの必要性と今の知識不足と、Tkinterの話。

(約 2,400文字の記事です。)



ChatGPT生成のソースコードをいじれない問題

まずTkinterについてほとんど知識がない状態でChatGPT先生のソースを使ってコーディングした。関数周りは自力実装できるがTkinterに入ると途端に分けが分からない。

挙げ句の果てに付け焼き刃で実装した部分が悪さをしてある時点からまともに動かなくなってロールバックしての検証という始末。もう無理。昨日で何とか英語UIの切り替えインターフェースを実装して今日リリースしたが、もうかなりのストレス。


要するにTkinterをよく知らないのでTkinterに関する不満を改善したりアイディアを実装したりできないのだ。全部ChatGPT任せになっている。なので拡張開発が不可能な状態。修正指示を出した結果、ChatGPTの答えがたった1箇所、1行の変更なだけなのにそれを自力で見つけられない・考えられない・実装できない歯がゆさ。

もう限界。Tkinterを採用すると決めたならTkinterを学ばなければならない。


TkinterによるGUIは基本イベントドリブン

親ウィンドウが開きっぱなしで、親ウィンドウにある各種ボタンを押した時に色んな機能が発動する。これは殆どの場合はイベントドリブン実装になる。だがZscriptでは関数ドリブン。なのでボタン押下時に発動する関数や処理を指定場所に書けばそれが動く。分かりやすい仕組み。

だがイベントドリブンは発想が違う。次のアクションが決まるまで無限ループで待機するスタイル。なので記述方法が関数ドリブンと違う。どこに書けばいいのか分からん。このボタンを押した時にどの関数が発動するのか分からん。

ま、要するにTkinterに付いて何一つ知らないまま、ChatGPTの力を借りて実装したのが現在の状況。それでも仕様通りに動く以上、ソフトとしては何の問題もない。バグが発生していない限り、それは正常動作であり正常なのだ。誰が書いたかは問題じゃない。

でも結局、いざといときに自力で何もできないじゃん?

これは間違いない😭なのでTkinterでPython版のGUIプログラミングの基礎を学ぶことにした。Udemyで教材を物色中。


バイリンガル対応は地味

これもずっと続く悩ましい問題。ソフトとしての機能が増えるわけでもないのにじみに労力と時間を持って行かれるのがバイリンガルUI実装。これこそまさにAIで自動的にソースコードを処理させた方がいい気がしている。

とはいえZscriptのときには半角英数縛りだったがPythonではUTF-8でいきなり全角文字が使えるのでPythonではまずは日本語メッセージで実装。そしてある程度安定したら英語UIを実装するという二段構えにすることにした。

そうしないと開発時点からバイリンガルにすると、メッセージの実装ごとに2倍も手間がかかる。開発中なのでメッセージや内容が二転三転するがその度に英語UIも取り替える必要がある。無駄な手間。

なのでリリース時期をずらすことで対応することにした。まずは日本語UIの公開版。

その後数日程度かけて英語UIを実装して、マイナーアプデ版として海外向けに公開。

https://artstn.co/m/7g88O

ArtStationはnoteでもWordPressのブログからでもなぜかブログカードにならない。画像引用をサーバで蹴っているっぽい。ポートフォリオサイトでそれは意味があるか?🤔

なので日本向けはBOOTHでまずは公開し、遅れてArtStationで英語UI対応版を公開する、という作戦をとることにした。そうすれば新機能実装も、実装部分はまだ日本語UIのみで、遅れて英語UI付きの完全版が登場するというスケジュールになる。

だがここで忘れてはいけないことは、UI以外の機能は日本公開時点と英語版公開時点でまったく変わらないという点。UIがどうなろうともソフトそのものの機能は増えも減りもしない。ここなんだよね、地味で辛いのは。労力が性能に関わらない作業、つまらない。高機能にも低機能もなっていない。ただ表示文字列が違うだけ。

つまらんことはAIにやらせたほうがいい。


【結論】地味にTkinterでGUIプログラミングを学ぶ

恐らくはクラスとかを駆使してイベントドリブン型の基礎を学ぶことになると思う。関数ドリブン型のアプリとは畑が違う。あとソースコードからは直感的に分かりにくいTkinterを使うことになる。避けたかったがついに避けられない状況に。かといってPySide6はもっと独特っぽいので、まずはTkinterでGUIの基礎を身につけてからでも遅くないっぽい。

というわけで今後の拡張開発のためにはもうTkinterを学ばないと前に進めなくなった

本当はもっと別にやりたいことがあるが、ここを突破しないと前に進めない。

1歩進んで3歩下がり、4歩進んで1歩下がり。1歩ずつ進んでようやくゴールに辿り着いたと思ったら、目の前には巨大な壁が立ちはだかっていましたとさ😭

プログラミングって、いつも大体こうだよね……。一難去ってまた一難。

なので新商品開発はいったんストップしてまた基礎学習からのリスタート。前に進めん……。



今回の創作活動は約1時間(累積 約3,879時間)
(1,127回目のnote更新)


読んでくれてありがとう。気長にマイペースに書いてます。この出会いに感謝😊