見出し画像

Git, GitHubを学ぶことにした

とりあえずZbrushプラグインが完成し、いったんベータテスター様にお渡しした。なので今日は少しゆっくりできる。といっても明日からまたフルターボで稼働するが、今日は少し振り返りたい。

Git, GitHubを学ぶことにした

もうソースコードの管理の限界です。ファイル名管理だけで何とか乗り越えられてきたのはシンプルZscriptオンリーの場合だけ。PythonとAutoHotkeyとZscriptと3つも使っていたらもう管理対象が多すぎててんやわんや。

なのでUdemyでGitに関する手頃な教材を購入した。25時間の長時間教材。しかもまた英語。だが表面的な「数時間で使いこなせる系」の動画は、結局は深いところが分からずに遠回りになるので、数万人の受講者がいて驚異の★4.8のGit教材を選んだ。1日2時間でも2週間近くかかる。でもとりあえずは中級者までの中盤まで集中的に学べば5, 6日かな?と予想。

とにかくもうGitを使ってソースファイルを管理しないと頭が爆発するぅ🚀


0から1の違いは大きい

今回、PythonとAutoHotkeyとZscriptを組み合わせてZbrushプラグインを作るという新たな試み。0から開発スタート、0からのPythonとAutoHotkey v2、ゼロからのPyCharmとVS Code。とにかく何でもゼロからのスタートだった。Zscriptだけが突然Lv. 100なだけで、あとは全部Lv. 0。

とにかく産みの苦しみ。理屈は正しくてもエラーが直らないという、出口の見えないトンネル、しかも足元は泥。田んぼの中を歩いているようだ。辛かった。

そして色んな罠を乗り越えて、0から1を生み出した。ここまでで必要なことやノウハウ、それが1から2を生み出すときに全部生かせる。次は10倍速は間違いない。同じ内容を実装するのに検証が不要だから。いきなり実装できる。

次に作りたいプラグインのGUI周りの実装、そちらがまた泥の散歩になるが、そうでない部分はマッハで実装できる。そうやって自分の武器を増やしていく。

Web情報との連携

今回のプラグインから、Webサイトのタイトル更新と連動して「お知らせがあるよ!」ダイアログを自動でポップアップさせる実装ができた。Pythonのrequest, BeautifulSoup4の組み合わせでいけた。それらの処理の中にテキストファイルの読み書きと修正も含まれる。Pythonだから簡単に実装できる。これがahkやZscriptだと面倒臭い。だがPythonなら簡単。

AutoHotkeyでもZscriptでも「できなくはない」ものの、実装作業が面倒臭い。その労力が何倍もPythonと異なる。そしてマイナー言語なので習熟しても今後何の役に立つの?ということになる。だがPythonだと今後にも応用が効く。なので言語の持つポテンシャルの高さがまったく違う。


AutoHotkey v2とTkinter

こちらについては二転三転して、多分5回目くらいの再検討。

Windowsの他者ウィンドウ操作のためにはAutoHotkey必須なのでそれは問題ない。問題なのは自前でウィンドウを作る際にAutoHotkeyを使うべきかTkinterを使うべきかだ。

最初の作戦ではahkだった。だが途中で事情が変わった。Yes/Noボタンのうち、Yesを押した場合に「特定の条件が揃った場合のみ、追加でPythonで処理が必要」になったのだ。最初の仕様ではPythonからahkを呼び出すことは想定していたが、ahkからPythonを呼び出すことは想定していなかった。なのでahkからPythonに変数を渡す実装をしていない。

しかもやらせたいことは「外部のテキストファイルの中身の書き換え」なので、色々と検証が必要。要するにわざわざahkで実装したくない。Pythonで書き換えたいわけだ。Pythonなら3行で終わる。でもこれをahkとPythonで使い分けると、

  1. Pythonからahk呼び出し

  2. Yesのボタンを押したあと、ahkからPythonを呼び出し

  3. Pythonにファイルを操作させる

  4. メインルーチンのPythonに戻る

うん、まどろっこしい。これが他言語を同時に使うデメリットだ。

急きょ、Tkinterで実装

これをTkinterのYes/Noボタンで実装なら話は早い。

  1. TkinterでYes/Noダイアログを表示させる

  2. Yesの場合の処理をPythonで書く(ファイルの書き換え)

これだけ。シンプルな内容なのでChatGPTでTkinterで実装したらうまく動いた。そして思わぬ収穫もあった。

Tkinterのボタンのフォーカスは正常動作

これ、Tkinterを使えばごく普通に矢印キーでボタンフォーカスが動き、Enter, Spaceキーで押下できた。

ところがPySimpleGUIというラッパーを使うとなぜかTkinterのボタンフォーカスがまともに動かない。動かなかったのだ。ということは原因はPySimpleGUIのバグぢゃん💢作者は適当ないいわけを言っていたが、Python 3.10付属のTkinterではちゃんとまともに動くよ。PySimpleGUIの作者の言に騙された。いや、騙された自分が悪い。検証しないで信じた自分が悪い。

だが今回の実験ではTkinterに罪はなかった。なのでTkinter、6周目に採用!復活であった。ただし評判通り、すこぶるソースコードの見通しが悪い。今回はたまたま1つのYes/NoボタンダイアログだけTkinterで実装したが、今後の複雑なUIではやっぱり無理。PySide6を学ばないといけない。

GUI制御もPython上で操作したほうが楽かも?

今回の一件で学んだことは、AutoHotkeyはどうやらウィンドウのGUI操作専門、あとはシンプルな動作しかないYes/Noボタンダイアログ。この2つだけahkに任せることにした。もし動作内容にPythonが入ってくるならTkinterの出番だ。

ahkの出番は割と減った。シンプルに他者GUI制御専用職人的な位置付けに変更。なので実は出番が少ないかも。他の理由としてはPyPi ahkでできるGUI関連がほとんど未実装だったこともある。となると必然的にPython上でのAutoHotkey実行になるため、Pythonとahkの往復は地獄w Pythonからahk呼び出しの一方通行なら、まぁ何とかなる。

Gitを学び終えたら次はPySide6かぁ。なかなか学びが終わらない。次から次へと学ぶべきことが噴出してくる。まぁ楽しいからいいけどね。


Pyarmorによるユーザー制御

Pythonアプリになってからこれができるようになったので色々思案中。Pyarmorでは難読化pyやexeに対して「利用可能期限」を設定できる。これは今までの私にはなかった新たな手段。なので作り手側が強制的にユーザーを制御できる仕組みが手に入ったことになる。

例えばアルファ版の配布、これを永遠に使って欲しくない場合、例えば今月末までの期限を設定して配布すれば、来月からはアルファ版は市場から消える。そして別期限のベータ版を配布すれば、使い続けたいユーザーはベータ版に強制的に移行するし、興味を失ったユーザーはそれでアルファ版を廃棄するだろう。要するにアルファ版の寿命を作り手側が積極的に、一方的に制御できる。これはこれで重要な手段だ。ソフトウェアは作り手の著作物であり、管理権限がある。

今回はPyarmorのマニュアルを熟読してPyarmorを使いこなしたい。Pyarmorも学ばなければならない。学ぶことだらけだ。


プログラミングは「理屈が理屈通り」動いているうちが楽しい

Python上ではこれが通じる。またエラーメッセージも丁寧だ。

だが他の言語間との連携だったり、AutoHotkeyやZscriptはちょっとキツい。Zscriptに至ってはZbrushの仕様が変わっていたりすると「動くはずが動かない」「想定とは違う挙動」に振り回される。理屈が理屈通り動いてくれない。これがストレス。まるで泥の中を歩いている気分になる。

Pythonにはそれがないから快適。それがPythonの魅力。って比較する言語が違いすぎるかw 


今回の創作活動は約1時間15分(累積 約3,872時間)
(1,120回目のnote更新)

筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonでお買物をするとその購入額の1~3%ほどのお小遣いが私に寄付されます。誰が何を買ったという情報は私には通知されませんのでご安心下さい😊 以下のリンクを経由して頂ければ紹介商品以外のご購入でもOKですよ~。


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