今週の音楽「slow steps」はいかが?
PythonとVisual Studio Code

 自作のphpスクリプトを、Pythonに移植しました。

 いきなり余談ですいませんが、マックの期間限定商品「NYバーガーズ」を食べました。左から肉厚ビーフ&ポテトデリ シュリンプタルタルバッファローチキン。どれもコクがあって食べ応えがありました。
 でもやっぱり、普通のハンバーガーが一番美味しいですけどね(笑) まあ、たまに食べるぶんには、こういう変化球もまた嬉し。です。

 さて本題。Pythonには前々から興味があり、何度か挑戦したのですが全敗……。でも今回こそ掴んでやる! という意気込みで、自作のphpスクリプトをPythonへ移植することにしました。

 まずは、Pythonを書くにあたってのエディタをどうするか。これまで使っていたCoda2でも良かったのですが、開発はすでに終了しnovaへと転生してる。なので、この機会に別のエディタに乗り換えたい。
 そこで、各所で勧められていたVisual Studio Codeを試してみました。エディタがターミナルと連携しているのか、エディタ上でPythonを実行できるのが大変魅力的に感じました。
 「Pythonって、コードを走らせるために毎回ターミナルでコマンドを打たなければならないんでしょ?」「結果もターミナル上に垂れ流されるんでしょ?」僕はこんなふうにPythonへのイメージを抱いていて、これがPythonへの敷居を高めてもいました。
 が、そういった煩わしさから解放され、エディタ画面に集中できるのなら最高じゃないか! VS Codeに決定! phpやJSも、今後はVS Codeを使うことにします。

 ところが、ここで問題発生。なぜか4回に1回くらいVS Codeが落ちるのです。
 具体的にはーー
 Finder上で、Pythonファイルをダブルクリック
 ↓
 VS Codeが起動
 ↓
 Pythonファイルが開く
 ↓
 その瞬間、VS Codeが落ちる
 ただし、VS Codeを直接起動した場合は落ちない。

< 試したこと >

    • 別の形式のファイル、具体的にはテキストファイル、HTMLファイル、PHPファイルを開いて確認。→どの形式も落ちる。
    • 再インストール。→効果なし。
    • 最新バージョンへアプデ。→効果なし。
    • Pythonの拡張ライブラリを外す。→効果なし。それどころか、一切のショトカがなくなりめっちゃ不便になってしまった!
    • VS Codeの日本語化ライブラリを外す。→効果なし。

 もはや、お手上げ(笑)

 VS Codeを終了したあとにふとドックを見ると、VS Codeのアイコンが残っていることに気づく。視線を上げると、メニューバーもVS Codeのまま。と思ったら、数秒後にドック上のアイコンが消え、メニューバーもFinderに。
 これはもしや!? そう、単にVS Codeの終了処理が遅いだけだったのです(笑) そりゃあ、終了処理中にファイルを開いても、終了のタイミングで閉じますよね。落ちてたわけではなく、むしろ正常な終了だったわけです。
 まあ、普通なら「終了処理中なので開けません」とか「終了処理を中断しますか?」的なダイアログが出るべきなのですが、Win産のソフトなので過度なユーザビリティは求めません。
 ちなみにナレーションは、ひろゆき氏です(笑)

 問題が解決したので、移植作業を開始。VS Code上でPythonコードを打っていったわけですが、Python固有のルールになかなか慣れません。
 例えばインデント。僕はタブで整えるのですが、Pythonでは非推奨。半角スペース4個が推奨とのこと。
 他にも「phpやjsでいうところのxxxは、Pythonだとなんなんだろう?」そんなことの連続で、なかなか移植が捗らない。

 そんな中で感動したのが、tkinterというGUIアプリを作るための標準ライブラリ。しかもMac版、Win版、両方のアプリを作ることができる!
 移植については、Pythonデビュー第1作目ということもありCUIで進めようと思ってました。が、こうなったらオリジナルのphpスクリプトと同じインターフェイスを目指すことに。
 さらに調べると、このtkinter、プログレスバーも備えていらっしゃる。そんなに至れり尽くせりなら、是非とも利用させてもらおうではありませんか!
 ちなみに今回はあえて実装しませんでしたが、ドラッグ&ドロップにも対応しているようです。

 そんなわけで、試行錯誤しつつもphpスクリプトを無事Pythonスクリプトに移植することができました。
 機能については割愛しますが(笑)、UIはこんな感じです。プログレスバーもちゃんと動作します。
 ついでにphp版には実装していなかった、誤動作防止のパスコード機能を実装。自分しか使わないアプリなのでそんな機能は必要なさそうですが、頻繁に使うアプリではないので間違えていろいろやってしまうと大惨事なので念には念を。

 Pythonをマスターするには、とにかくコードを書いて書いて書きまくることなんだけど、今のところPythonじゃなきゃならないスクリプトが存在しないんですよねえ。しかもこれ、夏頃の話なので、実はすでにコツを忘れつつあります(笑)

 ちなみに、今回もAIさんに画像を描いてもらいました。今回のAIさんは、今話題、そして急成長中のDall-E3。
 今までは、自分で画像のイメージをプロンプトとしてAIに伝えていました。一方、ChatGTP4の場合は、文章を理解してくれるのでAI自身が要点からプロンプトを作成しDall-E3に伝えてくれるという。結果、よりイメージにマッチした画像を得られます。
 ちなみに、画像は16:9で描いてもらいましたが、たまに正方形だったりすることがありました。そういった画像は、Adobeの生成AIに両端を描き足してもらうことで対処。
 Dall-E3も指示すれば描き足してくれるのですが、画像全体が似て非なるものに変質してしまうので、そこが難点。そういう用途であれば、AdobeのAIに軍配が上がります。
 まあ、Dall-E3は対話形式で画像のイメージを詰めていけるところが大きな強みであり、しばらくはこのAIをいじり倒そうと思ってます。

11/8/2023 23:47 note etc.

comments & TB (0)

name

trackback URL