TkinterつまりはGUIプログラミングは沼。基礎知識の必要性
今日はGitに助けられた話。そしてTkinterで火傷した話。
(約 2,200文字の記事です。)
GUIは付け焼き刃では何ともならない
今日は結局Tkinterの実装で、たった1行の不足で3時間ぶっ飛んだ。知ってしまえばたったの1行、だが気付くまでに色んな無駄な試行錯誤をする羽目になった。
GUIプログラミングは、付け焼き刃では何ともならない。ちゃんとした教材で基礎を押さえないと永遠に脱出できない。近いうちに教材探しが必要。目星は付けてあるが。
早速Gitで右往左往
おっかなびっくり導入したGitだが、いきなり役に立った。昨日のある時点までは仕様が仕様通り動いていた。とあるGUIウィンドウのチェックボックスのON/OFFやファイルからの読み込み内容が正常反映されていた。
だが今日のある時点から、おや?チェックがOnなのに挙動がおかしいぞ?おや、JSONではTrueなのにチェックオフのまま読込完了?
などという怪奇現象ががががっ。
1つのファイルを何度眺めても、分からん。相当Undoしても直らん。もうお手上げ。ということで初めてGitでチェックアウトの大移動。もちろん教材では触って理解していたが、自分が苦労して生み出したソースコードを触るとなると真剣さが違う。
何はともあれ現状のファイルを全部コピーしてバックアップ。デジタルはコピーは楽。だが失ったデータを取り戻すことは地獄。なので転ばぬ先の杖ならぬコピーなのだ。
そしておそるおそるPyCharm上で右クリックからCheckout Revision。1秒もしないで切り替わった。まぁテキストのみだしね。
Gitリポジトリは軽くしておこう
実は今日すぐにGitの「除外ファイル」について学習して.gitignoreにバイナリファイルなど不要なファイルを指定して運用していた。Gitは結局テキストファイルの差分で色んなタイムリープができるので、バイナリファイルに用はない。なのでそれは除外したのが功を奏した。なのでサクサク切り替え可能。
Gitリポジトリは小さく軽くが基本だと改めて思った。テキストファイル以外置いちゃいけないんだな、と理解した。この切り替えのさくさく感が犠牲になるくらいなら、バイナリファイルはGitリポジトリに入れちゃいけない。
そして試行錯誤すること15分で、問題の場所を特定。
全然別のpyファイルだったが、Tkinterを「新規で自力で実装」した部分だった😭ChatGPTのコピペのほうがマシだった。まさか自分で手を入れたところが悪かったとは。
そして最初の話に戻る。Tkinterについて見よう見まねでChatGPTのソースコードを改造して実装したのが運の尽き。とっても大事な1行が抜けていた。それが後段のTkinterすべてに影響を与えていた。
Tkinter、実は沼。GUIは沼。
そもそもこれ以前に、「最前面に固定」が機能しない場面があった。通常であれば-topmostの1行コードで最前面に固定のはずが、どうにも上手く行かない。なのでChatGPTともみもみしながらようやく実装できた矢先。
アレ?昨日完成させた部分が仕様通りに動かないぞ?という悲劇。
これで悟った。プログラミングは「自力」が美しいとは限らない。他人のお手本コードのコピペだったり、論理的に正常なAIの答えのつぎはぎ、こっちの方が「まとも」だったりすることが分かった。
自力の価値とは?
自力の試行錯誤は、単なる自己満足だと悟った。非効率でしかない。例えばコーヒーを手で挽いて煎れるというような、ごく個人的な趣味だと思った。(その時間が本人にとって意味があって価値があるなら問題ない。)
だが効率重視、アウトプットがすべての世界では、そういうわびさびは必要ない。結果がすべて。手段は問わない。結果、自力での試行錯誤よりもChatGPTとの会話の数と検証作業の方が遥かに重要だと悟った。
逆に言うと、コーディング経験値の価値は、これからどんどん落ちていくということ。経験年数の価値が落ちていくと言うこと。さらに逆に言えば「コーディングなしでソフトを作れる人の創意工夫や手腕のほうにこそ価値がある」という時代が来ると思った。現に今自分で体験中。
如何に書かずに完成させるか、試行錯誤せずに完成させるか
これがポイントだろう。個人の試行錯誤の価値は、他人からすれば大したものでもない。結果がすべて。客観的な評価ができる成果物こそが評価対象。内面的な財産は、まぁ各自で後生大事にしまっとけ。他人は興味を示さない。
試行錯誤には時間とエネルギーを要する。そういう無駄な遠回りなしで成果物に辿り着ける手腕、これが重要だと思った。その重要な武器の一つがAIだ。これは間違いない。なので今後はAIの使いこなしと成果物への執着、この2つの煮詰め方が「人の個性」になると思う。
なのでサーバント(召使い)としてのAIの使役の仕方、これを覚える必要がある。月姫的な?w そうしないとそれができる人とできない人との差は秒で広がっていくと思う。1ヶ月も経てば劇的な差で、半年もすれば埋められない差になるだろう。1年後、恐ろしい。
今日も疲れた。だが確実に足跡を刻んだ。Gitのcommit履歴は裏切らない。
今回の創作活動は約30分(累積 約3,877時間)
(1,125回目のnote更新)
読んでくれてありがとう。気長にマイペースに書いてます。この出会いに感謝😊