PythonとAutoHotkeyとZscriptでのZbrushプラグイン開発、佳境に入る
あと数日でお披露目できそうなZbrushプラグインですがまだベールに包まれております。中身の話は今後に期待。めっちゃ地味。ワンクリック発動が2組。めっちゃ地味。地味すぎて、めっちゃ地味。
今日もPythonプログラミングとZscript、AutoHotkeyの話。
さて、今日までで大きなブレークスルーはたくさんあった。そしてそれ以上にたくさんの地雷を踏み抜いた。もう感覚的には地雷原を裸足で全力疾走した気分だ。命がいくつあっても足りない。それくらい、あらゆる罠にはまって爆発してきた。主に頭が😅
(約 3,300文字の記事です。)
Pythonの罠
まず、一番手堅いはずのPythonだが、ここにもかなりの罠があった。とはいえ、PyCharmの強力補正機能があるので手堅い。そして最もストレスの少ない時間だった。むしろ快適、未来を感じられる時間が多かった。その理由としてはChatGPTによるサポートが大きい。だがぽつぽつとどでかい罠があった。今日はそれを一つブレークスルーした。
んで何が罠だったか、振り返ってみる。順不同。思い出せる順から。
パスに半角スペースがあると仮想環境で地獄を見る。やめとけ(実験してみたけどやっぱりひどかった。特にPower shell君がまったく機能しない。だがPythonは動く。謎)
仮想環境って、何ですか?今日、地味に深く真面目に学んだ。PyCharmを使っていれば何となく下に出てくる黒いエリア?何となく環境を切り替えられる仕組み?と思っていた。
今日、cmdできちんと触ってみてようやく理解。知らなくてもいじれる分、タチが悪い。cmdから初めて.venvに入ったよ。(.venv)という表示がコマンドプロンプトでも表示できるとは、知らなかった。PyCharmだとパワーシェルだし(というかパワーシェルVer.7を設定したのを忘れていた)
パワーシェルとコマンドプロンプトでは微妙に違う。何だかんだで活躍するのはコマンドプロンプトな気がする。Windowsの場合。PyCharmの設定を変えようかなぁ。それともPSの方がいいのかなぁ。謎……、あら、GUI上で選択&切り替えできたのね。
BlenderのPython学習時に通したパスが残っていて大混乱。pip、見ていたフォルダの場所が違ったという恐怖。そこはグローバル環境ではなくてBlender3.6のフォルダだったよ、と。
ラスボスは「PyInstallerの罠」アンチウィルスソフトのESETが干渉しまくって正しくexeコンパイルできなかった。たまに正しくコンパイルできる分だけタチが悪い。そしてたまに「理屈上動くはずのahkコードが発動しない」という、謎の挙動で今日4時間持って行かれた。
また、持って行かれたぁ。手足がいくつあっても足りないよ、アルフォンス。(パトレイバーの方じゃない、鉄の鎧のほう)
*.py, *.pywのときと*.exeになったときでは取得できるパスが変わる。これが結構厄介。自作関数を挟んで対処しているが、すっかり忘れて生のファイルを指定すると動かず。
Tkinter単体ではまともに動作するが、手抜きをしようとして手を出したPySimpleGUIではフォーカスが正常動作しない。だがTkinterを使い込むメリットはほとんどない。かといってPySide6はハードルが高い。つまりPythonでGUI操作はかなり苦行
でも総合的にはとても気に入っている。特にPyCharmの便利機能を少しずつ理解して使い始めている。だんだんと作業を効率化できていく楽しみがある。テキストエディタオンリーで開発していた頃からすればもはや天国と言える。
地味に痛いAutoHotkey+Pythonの罠
AutoHotkeyのみ、Pythonのみなら問題にならないが両者を連携させると出てくる罠。これが地味に痛かった。
文字列扱いでPythonはバックスラッシュ×2が必須
(またはr"hoge\foo")、だがAutoHotkeyでは普通にバックスラッシュ1個でいける。ファイルパスの受け渡しでハマる。PyPi ahkではPyCharmエディタ上で生のAutoHotkeyソースコードを操作できる。だが実行環境はPythonなのでバックスラッシュ×2が必須。だがVS Code上でAutoHotkeyとして編集すると逆にバックスラッシュ2個がahkさんから見れば謎になるようでエラー。どっちやねん、を決めないとカオス。
PyPi ahk、実はGUI周りでかなり不完全。なので色々工夫しないとAutoHotkeyをPython上で扱うにはちょっと癖がある。じゃじゃ馬。フェラーリかよ。あれは跳ね馬。
PyInstallerを自前環境でコンパイルしたオリジナル版を使わないと、アンチウィルスソフトがコンパイル時に干渉してえらいことになる😱ahkの動作がexe化したときに超絶不安定。動いたり動かなかったり。だがpy, pywでは安定動作。そしてソースコードが不変なのにexeの挙動が変わる?パニックになる。ここ数日間で一番の沼だった。
ChatGPTが「AutoHotkey v2」指定をしてもさらりとv1のソースコードを教えてくれる。修正指示を出せばv2になるが、ここは油断してはいけない。
AutoHotkeyのコマンドでv1かv2かを明示的にしているするコマンド「#Requires」、これ、Pythonだとコメントアウトの#+半角スペース、ここにハマる。ahkで#に半角スペースが付くと「ナニソレ?エラー」になる。だがエラーメッセージは謎の文字列になる。深い罠だった。気が付けなかったよ。IDEの自動補正の、数少ない罠。PEP 8に逆らわなければならない日もある。
IFの後ろの{、これの位置で、PyPiに読ませたときにエラーになる。連続1行だとエラーで改行後の{だとOK。謎。C言語的な感覚で行くとハマる。
Tryの次がPythonと異なるのでごっちゃになる。AutoHotkeyではTry, CatchだがPythonではTry, Except。よくまぜこぜになる。混ぜるな危険。
AutoHotkeyについてはv2になってからかなりPythonっぽいっというかイマドキのプログラミング言語だと思う。逆にv1はカオス過ぎる。おすすめしない。あと2年もすればv2一色になると思うのでこれからの人はv1ではなくてv2からスタートした方がいい。他言語の学習にも相性がいい。
AutoHotkeyはPythonで苦手なGUI操作と、Pythonではほぼ絶望的なWindowsのGUI操作の自動化ができる。ここが強み。TkinterではなくてAutoHotkeyを私が採用した理由もここ。GUI表示とGUI操作の両方をAutoHotkeyに任せるため。Pythonと使うための癖は幾つかあるがほぼ満足。Tkinterと同じかそれ以上のことができる。
ただしWindows限定。まぁ仕方がない。
Zscript、カオスwww
Zscriptは地獄しかなかった。他に語る言葉を持たない言語だ。
赤い海だ。まるで血の海だ。
立体造形は心を潤してくれる。リリンの生み出した文化の極みだよ。
潔癖症はね、辛いわよ、プログラミング言語の間で生きて行くのが。
逃げちゃダメだ、逃げちゃダメだ、逃げちゃダメだ。
ランタイムエラー、襲来
直らない、バグ
これもゼーレのシナリオ通りですか?
キーボードを遠くに放り投げる選手権があったら参加したい。それだけのカオスがあった。もう、確実な分野でしか使いたくない。新たな挑戦はカオスになる。地獄を見る。Zscriptは触り方に気を付けないと、時間を無限の彼方に溶かすことになる。ブラックホールとはまさにこのこと。シシュバルツシルト半径ガガガッ。
来週もサービスさーびすぅ😍
エヴァももう四半世紀前の作品ですか。年は取りたくないものだ。
今回の創作活動は約1時間(累積 約3,869時間)
(1,118回目のnote更新)