無料のCopilotで作ったAutomatorを、課金したChatGPTに丸投げしてみた。

無料のCopilotで作ったAutomatorを、課金したChatGPTに丸投げしてみた。

AutomatorでMacに写真取り込み

 カメラ1 で撮った写真や動画は、撮影日ごとにフォルダ分けしてMacに取り込んでいます。取り込みには、以前Copilotに書かせたAutomatorのスクリプトを使っています。AutomatorはMacに標準搭載されている作業自動化アプリで、Windowsのバッチファイルのような簡単な処理を任せています。これくらいの単純作業であれば、Automatorを使うのが楽ちんなので。2

 ただ、α7C IIで撮影した動画のサムネイルが写真フォルダに移動されてしまうのが気になっていました。単純にファイルの拡張子でフォルダ分けしているからですね。サムネイル画像も動画のファイルの仲間として、動画フォルダにまとめておくべきでした。

ChatGPTに改修させる

 そこで、Copilotに作らせた元のAutomatorをChatGPTに渡して修正を依頼しました。ついでに、このAutomatorにほかにも問題がないか確認してもらいます。すると、mvで単純にファイルを移動するだけではデータ破損のおそれがあると怒られました。他にも、撮影日の判定にはファイル作成日時ではなくExifを使え、同名ファイルの重複対策やコピー後のデータ照合も必要だ、と。はい、じゃあ考慮してください。ファイルを直接移動するのをやめて、カメラからMacにコピーし、中身が一致したらカメラ側を削除する方式に変更。あなたが撮っているのは子どもの写真なのですから、もっと大切に扱いなさいと諭されました。3

Workで修正、実機テスト

 Automatorなんてテキストをコピペするだけで動くのですから、さくっとChatに修正を依頼。4 ちょちょっと書き直させます。ところが、dest_names[$i]: parameter not set というエラーが出ました。意味は分かりません。エラーを共有すると、こうこうこう操作をして修正を試してください、との回答。面倒くさくなったので、ChatGPTのWorkモードに切り替え、Macの操作ごと任せました。ちゃっちゃかAutomatorを修正し、アプリケーションフォルダへのインストールまで済ませてくれました。α7C IIでもLuna Ultraでも、RAWファイル、JPG、MP4、それに付属するサムネイルやプロキシ動画などを正しく振り分け、元データとの一致を確認。その後、カメラ側の元データも削除できました。

今度はChatGPTのコードをChatGPTで見直す

 ここまでやってもらっておいてなんですが、カメラからファイルを移動して、撮影日ごとにフォルダ分けするだけなのに、ちょっと複雑すぎません? ChatGPTが書いたスクリプトをChatGPTに改めて見直してもらいました。すると、同じファイルを何度も照合したり、動画の関連ファイルを探すたびにフォルダ全体を調べたりして無駄だらけ、個人の写真を移すだけなのに過剰設計過ぎるとのこと。自分で書いておきながら、人ごとみたいにボロクソ言うやん。

 指摘通り、今度は記述と処理をできるだけシンプルにするよう依頼しました。350行あったスクリプトは約270行に。動画とサムネイルなどの関連ファイルはまとめて扱い簡略化、コピーしたファイルと元データが一致してから削除する処理は残しています。また、撮影日時が取得できなければファイルの作成日時、それも取得できなければ変更日時を使うように変更しました。

 以前はAIに書かせたコードを自分で実行し、エラーが出るたびに内容を伝えて修正させていました。今回は最初の改修でWorkにMacの操作ごと丸投げ。修正も動作確認もやってもらえました。なるほど、課金した甲斐はありました。甘やかされることにします。

  1. Sony α7C IIとInsta360 Luna Ultra [↩]
  2. Commandで書く方がシンプルだった気がする。最初にCopilotがAutomatorを使ったために。 [↩]
  3. 他チャットで子ども撮影の相談をしたので、何を撮っているのかバレています。 [↩]
  4. Codexだとクレジットを食うので。 [↩]

ChatGPTでWordPressをメンテナンスしてみた。

ChatGPTでWordPressをメンテナンスしてみた。

 Google AdSenseの自動広告がブログのあちこちに表示されるようになっていたのが気になっていました。直そうとは思っていましたが、WordPressの設定やらCSSやらを調べ直すのが面倒で、そのまま放置していました。最近、ChatGPTからWordPressを直接操作できると知り、AIにやらせてみようと思い立ちました。

WPVibeを使いWordPressを直接操作

 これまでもChatGPTにCSSやPHPを書かすことはできましたが、ブログへの反映は自分で作業する必要がありました。WPVibeを使うと、設定の調査から修正まで任せられるようです。

 まずはGoogle AdSenseの自動広告をオフにして、広告位置を手動設定に変更。トップページでは2・4・6記事目の後に最大3枠、個別記事では本文の下に1枠と、最適な広告頻度と位置を判断させ、その位置になるよう設定変更させます。ついでに不要なプラグインも削除。人気記事ランキングやSNS共有ボタン、アイキャッチ画像の表示も修正しました。

 続いて、カテゴリーとタグも整理しました。公開済み204記事のカテゴリーをTechnology、Culture、Diary、Favorite、Cameraの5系統に再編。旧URLからの301リダイレクトも設定しました。

 ここで1点、問題が発生。古い記事には、投稿日時をそのまま使ったような数字だけのスラッグが残っていました。例えば「京都旅行7日目」という記事は 201109011314970753 という18桁の数字。カテゴリーの変更に伴いパーマリンクを変更すると、旧URLも新URLも404になってしまいました。数字だけのスラッグが原因かどうかは不明。そこで、スラッグを kyoto-trip-day-7 に変更し、カテゴリーと同時に更新したところ、新URLは正常に表示されました。ただし旧URLはキャッシュの影響で200のまま。WP-Optimizeのページキャッシュを削除して、無事301→200で転送されました。1

 タグも整理。現状、204記事中146記事が未設定でした。これもChatGPTに分類させ、全記事に付与しました。タグの種類は82から239へ。表記揺れを整理するだけのはずが3倍近くに増えました。

WPVibeのクレジット数

 WPVibeの無料プランには利用回数の制限があります。ChatGPTに自由に作業させていると、ChatGPTにはクレジット節約するインセンティブないからかな、調査や動作確認を繰り返し、どんどんクレジットを消費してしまい、すぐに利用枠に引っかかりました。

 あかんと思い、「クレジットをできるだけ節約すること」と指示。すると、取得済みの情報は使い回し、調査や修正はできるだけまとめて実行するよう動作が変わりました。例えばタグの整理では、先にChatGPTで分類案を作成し、WordPressへの反映だけをWPVibeで行うようになりました。やればできる。どのようにクレジットを節約させるかの指示ではなく、クレジットを節約しろとだけ指示するのが大事っぽい。

ついでにWordPressのテーマも変更

 プラグインやカテゴリーの整理が進んだので、つぎのボトルネックを聞くと、長年使ってきたWordPressのテーマが重いと回答。じゃあ、テーマも変更してみました。現在使っているAzaleaは最終更新が2018年のテーマでした。デザインは気に入っていますが、今後のWordPressへの対応も気にすると、類似の現行テーマをベースにAzaleaにデザインを寄せた方がいい、GeneratePressをベースにするのが推奨と仰せ。じゃあ、やらせてみるかと、試してみました。

 元のAzaleaを参考に、GeneratePressの子テーマをChatGPTに作らせます。フォント、余白、ヘッダー、サイドバー、広告の配置など、気になるところを次々修正指示。CSSもPHPも実際の記載は全部お任せです。CSSはともかく、PHPは完全に忘れたので助かる。何度か修正を繰り返して切り替えました。

 ところが、どうにも見た目がしっくりきません。別に壊れているわけではないのですが、何か違う。結局、Azaleaに戻しました。計算資源の無駄遣いでした。

 とまあ、テーマは元どおりになりましたが、広告の設定やプラグインなど、気になっていたところは整理できました。結果オーライ。

 そういえば、2018年にWordPressを再インストールしたときも、過去の設定が分からなくなって困っていたようです。そんな備忘録を書いたことすら忘れていました。今度は忘れないように、改めて備忘録に残しておきます。

  1. 数字だけのスラッグのURL変更時は注意。備忘録。 [↩]

AI入力用に変換機能のない日本語IMEを作った “KanaPrompt”

AI入力用に変換機能のない日本語IMEを作った “KanaPrompt”

 フリック入力したひらがなを変換なしに入力するアプリを作りました。パソコンからローマ字のままAIに投げるように、スマホでも漢字かな変換を気にせず高速入力できるようになりました。

 以前、ローマ字のままAIに投げる方法が話題になっていました。実際に試してみると、漢字変換を一切意識せずに高速入力できるのが楽すぎます。1

 これをスマホでも同じように入力したいと思いました。ただ、スマホからはQWERTYよりフリック入力の方が速いので、フリックで入力しながら日本語変換によるロスをなくしたい。つまり、漢字変換機能を一切持たない日本語IMEが欲しい。

 同じことを考える人間はどこかにいると信じて、ChatGPTで検索させましたが、該当するアプリは見つからず。ただ、その程度ならすぐ作れるとChatGPTが言うので、任せてみることにしました。こっちは一切プログラミングできへんぞ。アプリを作るには初めに仕様を決める必要がありますが、仕様の決定に必要な項目もChatGPTから質問してくれます。それに答えていくだけでアプリの原型が書けたらしい。ここまでは通勤途中、スマホからのチャットだけです。

 帰宅後、Macで作業を再開。言われるままにAndroid Studioをインストールし、言われるとおりにマウスを操作してビルド〜実機へのインストールが完了しました。「AIの言うとおりにマウスを動かすだけなら、Android Studioの操作も任せたい(面倒くさい」と訊くと、Workを使うと自動操作もできると回答。ChatGPTのWorkに移行し、作業を任せることにしました。Workへの移行も全部任せる。

 途中で「こういうバイブコーディングってCodexでやるものでは?」と聞くと、Codexの方がおすすめ、引き継げるよと回答。引き継ぎも任せて以降はCodexで作業。正直、こちらからはチャットで質問しながら、ChatGPTにAndroid Studioを勝手に操作させているだけですので、ChatもCodexも違いは分からない。こちらの操作は、スマホをデバッグモードにしてMacとUSB接続するくらいです。そのまま、Gboardの画面レイアウトを参考に細部を調整するよう指示して完成しました。アプリ名もChatGPTに候補を出させて「KanaPrompt」に決定。そのままGitHubへの公開まで人任せ、AI任せです。

 ここまでコードを一切書いていないどころか、見てもいない。正直、何の言語で書いたのかさえ確認していません。細かい仕様や実装方法もほとんどAI任せで、こちらは動作確認をして、気になった操作感や見た目に対する要望を伝えるだけ。こんな感じのものが欲しい、というふわっとしたイメージから、具体化も実装も公開も任せられてしまう。結局、私が書いたのは「この」文章だけ。

 何を作りたいかすら具体的に考えず、何が欲しいかだけで何とでもなる時代です。

  1. 対面打ち合わせ中に一切画面を見ずに会話を続けながら、議事メモを取るのにもオススメ。最後にAIに投げる。マイクがない状況でも、オンライン打ち合わせの自動議事録と同じようなイメージで使えます。 [↩]