LinuxでClaunch 再現!! Zlaunch(ゼットローンチ)誕生
WindowsからZorinOS(Linux)への移行はつまづきながらも順調に進んでほぼ完了の状態。
“ほぼ”の理由はLinux使いこなしの問題ではなく、「ランチャー」への不満。
GUI 信者にとってはアプリランチャーはLinux生活であっても一度使ったら手放せなくなる必需品。
Windowsで長年愛用してきたツールの最後のピースが「Claunch」。どんなに探してもLinuxの世界ではこのような便利なアプリが存在しないようだと悟り、探すのをあきらめた。これがどんな機能なのかは一目瞭然だろう。

知ってる人は知ってると思うが、たしかWindows7時代以前から存在していた。
自分がいた界隈では自分しかユーザーがいなくて外部に発音する機会がなかったので、最初からずっと頭の中で「シーローンチ」と読んでいたが正しくは「クランチ」のようだ。でもあまり好きではない。( ´ー`)
そして今も現役らしい。Windows11では当初ウィルス扱いされて起動不能になり、いよいよ終焉なのかと寂しい思いをしていたが作者の執念(?)により、今は問題をクリアできたようだ。
サンプルのスクリーンショットは、少し古いバージョンの使用でWindowsのチェックを回避出来ることが分かって継続利用していた。それも出来なくなるのは時間の問題かもしれないし、既にLinux移行を真剣に考え出していた時期なので関心は薄れていた。
ランチャーってどういう意味?
スペルを見ると「ローンチ」としか読めないし日本語でも「〇〇をローンチする」なんて動詞として使われる。
じゃ同じ単語で「ランチャー」って? 自分でも知ってるようで知らなかったのでちょっと調べてみた。
どうも、名詞として読むと「ランチ」になるらしい。ミサイル発射装置の「ランチャー」など。
もちろん昼食の「ランチ」はまったく異なる単語。名詞としては「起動」というズバリそのものの意味にもなる。
すると「クランチ」という呼び名は何だ? 名称なんだから何でも良いではないかではあるが・・・
間違いがあるかもしれないが、今は有能なファクトチェッカーが原稿をみてくれるので不安はない(^。^)
Linuxにランチャーは存在しないのか?
さすがに「存在しない」は言い過ぎで、実際にはOSの機能としてちゃんと用意されている。
ZorinOSのメイン・メニューとアプリ一覧機能がそれ。

Zorinメニュー

アプリ一覧
これで良いではないか ? なのだが、Zorinのメイン・メニューは見通しが悪い上にカテゴリ分けが自分には不自然だしメニュー項目の追加や削除も出来ず表示順の変更にも制約があり、今ではほぼ使わなくなった。
アプリ一覧の方はフルスクリーンで情報量は十分。ページングやグルーピングも可能だし「これの何が不満?」というくらい機能的には充実しているのだが、「フルスクリーン」自体がいやだしカテゴリ分類整理にも限界がある。
古いことわざの「帯に短しタスキに長し」だっけ? もっとうまい比喩もあるはずだが思いつかない。(^。^;
「Claunchが恋しいなぁ・・・Windowsに戻ろうかな」などと一瞬でも感じたくらいだった。
Linux の世界ではランチャーの人気(需要)なんてないだろうとは容易に想像できる
しかし「Linuxの永遠の初心者」を自負する自分としてはやはりあきらめきれない。
ChatGPT にグチってみてランチャー風のものをリストアップされたが、どれもまったく魅力がなくて難航した。
「ところで。ほしいアプリがないなら自分で作れば良いじゃないですか?」とさらりとサジェストされ「せやな!!」と膝をたたいて自力開発計画を考えたのだった。「希望とイメージだけ伝えて AI に丸投げでいいじゃないか、と」
さっそくClaudeに相談すると快諾してくれた。当たり前だがね(^。^)
ここで「何でChatGPTに頼まない?」と引っかかった人は鋭い。GPTにはいろいろと不満がたまっていたのだ。
何より、当時の自分にはシステム開発能力はClaudeが完全に格上と評価していたためである。
ランチャーは一見カンタンそうにみえても実用品として仕上げるにはそれなりの高度な処理も必要になる。
自分のスキルでは太刀打ちできないだろうけど、ちょっとした修正くらい自分でもいじりたいので、馴染みのある FreeSimpleGUI(元PySimpleGUI)をUI ツールに指定した。Claudeなら基本形はいともカンタンに作ってくれるだろう。パネルにボタンを並べるだけなんだから10秒もかからんだろう・・・と甘く考えていた。
だが着手前、Claudeが多忙(?)だったため。セカンドオピニオンとして ChatGPT に開発ツールの相談をした。
全然甘くなかった AI 丸投げ
Zlaunchの計画案はもともと相談していたのだが、計画が具体的になって、たとえ基本版であっても「ボタンのドラッグ操作による移動」が必須条件と表明したら「FreeSimpleGUI の仕様では実現が極めて困難。Tkinterならその機能がある」と指摘され、急遽「Tkinter」に変更した。ドラッグ実装可能というだけの理由だった。
まさかそれが地獄の苦難の始まりになるとは想像すらしていなかった・・・AI とのコミュニケーションの難しさを思い知ったのだった。ChatGPT とは違って Claudeとの付き合いはまだ浅い。自分の言葉遣いや思考方法の機微までは把握されていない段階なのに十分調べてない状況で盲目的に信頼していたのが間違いの元だった。
他のツールの選択肢を事前に相談していなかったので不適切な条件でClaudeに不毛な努力を強いたのだ。
自分が正確に情報武装しないまま安易にAI に依頼すると、期待通りの成果が生まれず、不満を言われなくてもムダな工数と時間の浪費でかえって自分が苦労することになると学んだ。(´д`)
正確な指示を出さないと期待した結果は生まれない
相手が人間であれ、極めて有能で短時間で目的を達成できる能力が高いほど正確な指示が重要な条件になる。
完成後は「AI に実作業を丸投げで頼めばアプリ開発もラクなもんである」というブログ記事を書くつもりだったのだから、安易な発想に天罰がくだったのだった。
なんと、ちょっとした修正作業を繰り返したあげくにClaudeともあろうスペシャリストが「もうムリかも・・・」と投げ出す寸前にまでなってしまった。( ≧Д≦)
いやいや、待てよ。超高度なプログラムじゃあるまいし、たかが「タイル状に指定サイズのボタンを敷き詰めるだけ」なのだぞ。これまでに作ってもらったアプリのように 1分かからず出来上がると気軽に期待していたのに・・・
予想より時間がかかった末に最初に「出来ました」と上がった作品がこれだった ( ≧Д≦)
Q「なんで、なんで、なんでこうなる ??」
A「指示通りに作りましたが」
Q「これをボタンだというのか??」
A「指定された数で四角く描画して内部を
クリックするとボタンを押したような効果になります」
Q「なにをいってる? これはボタンじゃないやろ!?」
A「機能は満たしてるはずですが」
Q「お前は本当にあの有能なClaudeなのか? 何で分からない?」
A「どうすれば良かったのですか?」
Q「欲しいのはボタンそのものなのだ」

「Tkinterだってカンタンにボタンを作れるはずなのに・・・」としつこく問い詰めると「指定のサイズ(ピクセル)に合わせることがWindowsと違って難しいのです」と来た。
いってることが良くわからない。数値でサイズ指定出来るはずなのに。
「ピクセル指定が出来なくてもパネル全体のサイズと配置数が決まってるのだから、単純計算で割り出せるではないか」とやりこめたら修正版を出したきたがやはり全然イメージが違う。
「ボタンを描くんじゃなくてオブジェクトとして配置すれば済むことではないか ?」





ここまで来ると「遊ばれてるのか?」と勘ぐるしかない・・・( ≧Д≦)
半日以上も費やして、ついには巨大なポタンだけという信じられない事態にまでなった。
Claudeとは最近 ChatGPTよりもかなり厳しいトークンのセッション制限になっていて、会話もスムーズに出来ない状態なのでなおさらストレスが溜まっていった。
※スクリーンショットのタイトルバーが改称前の「Zloanch」となっているが正しくは「Zlaunch」
さすがに業を煮やしたClaudeが「これでどうや」とばかりにエビデンス付きの試作を出してきた。



スクリーンショットと実際の画像サイズを比較してまで調整を繰り返すという涙ぐましいまでの地道な努力が延々と続く。「これが人間相手だったらどうなってただろう??」とまで考えて、ひらめくものがあった。
「Claudeがふざけてこんなことするはずがない。間違ってるのはオレの方だったかも・・・」
発端からのやり取りを思い返してみて「Tkinterでボタン(ウィジェット)は作れるがサイズ指定がピクセル単位でなく文字単位なので・・・」という説明が何度かあった。
そういえば、FreeSimpleGUI だって、ボタン生成だけでなくウィジェットのサイズはすべて文字単位だったし、間隔ゼロでタイルとして密着させるのも難しかったな。するとずっと古臭い設計の Tkinter ならさらに・・・

とはいえ、七転八倒の末にここまでは来た。この後のトークン制限があるので、いったん現場から離れて気分転換して発想も転換。あらためて Python のGUI ライブラリについて調べてみた。あまり有力なツールはあまり見当たらない気がしたが、じっくり調べて見比べた結果自分の理想に近い金の卵を発見した !!
いや根本の発想を変えたので「コロンブスの卵」の方が正確である。ヾ(o´∀`o)

答えは 「PySide6」 だった
長くなりすぎたので、PySide6 の紹介は省略する。知ってる人は知ってるはずだし。
「Tkinterじゃなくて Qt (通称)の方が良くない?」と水を向けてみた。
すると「賢明な判断です。ずっとスムーズにつくれます」と悪びれずに試作品を出してくれた。

これやこれ、これがほしかったのだ !!ヾ(o´∀`o)ノ
「ではゼロから作り直します」と宣言後 わずか3秒でこれが出来上がった。
前から分かってたけど、これがClaudeの実力や (@。@)
基本形さえ出来てしまえばあとは早いのも分かってた。なんどか細かな注文のやり取りの結果ほぼ完成品に仕上がるまで 1日かからなかった。しかもこの間なんどもセッション制限で数時間中断している中でだ。
生みの苦しみ後にあっという間の「Zlaunch(ゼットローンチ)」Ver.1 完成である。既に完全な実用品になった。



生みの苦しみについて本人の回想録もある。それは次回のお楽しみ。(^。^)
コメント