永遠にリリースできないねぇ…。
現在公開に向けて作っているアプリにファイラ風味の画像Webビューアがある。ローカルのフォルダにある画像を一覧で表示するWebベースのビューアアプリ。アクションとしては、画像の全画面表示と削除機能がある。個人的にはスライドショーと確認モーダルなしの削除を、LAN内のあらゆるデバイスからやれる、というだけで実用的だったので、それでよかったんだが、さすがに公開アプリとするにはちょっと淋しいようにも思っていた。
で、この削除機能を拡張して、「ユーザが自由に処理内容を定義できるアクションボタン」とした。つまり、削除とはrm -f {file}のことである、と解釈するわけだ。
これによって、ユーザは「90度右回転させる」「.webpに変換する」「リサイズする」「別のフォルダに移動する」「サーバにアップロードする」など、あらゆるカスタムアクションを定義可能だ。
また、これは結局のところスクリプトであるので、スクリプトの仕様をAIに伝えることで、自分のやりたいことを書くだけでコマンドの生成までできるようにした。たとえば、以下の画像のような感じだ。

「90度反転させるコマンドを作りたい」という簡単な指示で、magick "{file" -rotate 90 "{dir}/{basename}_rotated{ext}"というコマンドが生成されている(なおプロバイダはOpenAIでモデルはgpt-5.6-luna)。このコマンドはそのまま使うことができる。
このように、AIに相談することで自分のやりたい処理を簡単にボタン作成できて、画像を見ながらポチポチと処理をしていくことができるようになった。
この機能は強烈で、非常に強力である反面、要検証である。「処理時間の長いものがあっても安定してかつ使いやすく動かせるか」「Windowsの対応も問題ないか」「複雑な処理にも対応できるか」「インストールしているかどうかわからない外部コマンドや、API連携が必要なコマンドにどう対応するか」など、色々と課題がある(そもそもmagickがインストール必要な外部コマンドだし)。
これは技術的な問題もあるが、どちらかというと本質はインタフェースでありコミュニケーションといえる。どこまでをユーザの責務とし、かつユーザがそれを正しく理解と納得し、使いやすくできるのか、という問題だ。
この問題に正解はなく、また今回の機能を入れたことでだいぶ設計が難しくなってしまったのだが、個人的にはシンプルながら僕らしさがあるような気もしており、真面目に作り込みたい。つくづく、開発設計にはその人の人生観、人間観が出るものと思う。何か気恥ずかしい感じもする。
コメント