Dance with Agents

欲しかったCSVアプリを片手間で作った——困りごと解決と欲しいものを、すぐに形にできる時代に

エッセイ

管理人には、気に入って使っていたCSVアプリがある。それでも、地味に困っていたことが2つあった。

複数のファイルをタブで並べられない。 そして、テキストの形で中身を確認したり直したりできない。

どちらも大きな不満ではない。ただ、CSVを触るたびに引っかかる。それなら作ればいい、というのが今回の話だ。

片手間の1日で、ひととおり動いた

できたものはこうなった。

  • 開いた瞬間に起動して、すぐ使える。 表計算ソフトはとにかく起動が重い。ちょっと中身を見たいだけのときに、あの待ち時間は要らない
  • 複数のファイルをタブで持てて、2つを横に並べて見比べられる
  • 表の形とテキストの形を、キーひとつで行き来できる
  • 20万行のファイルでも引っかからずに動く。 ここは期待以上だった
  • 文字コードを選べて、文字化けしない。 開いたときのまま保存もできる
  • Excelのファイルも、先頭のシートなら瞬時に開ける

文字コードの話は、機能としては当たり前のものだ。ただ、表計算ソフトは文字化けの温床でもある。 日本語のCSVを扱っていると何度も泣かされるところなので、ここは丁寧に作ってもらった。

もっとも、いちばん時間がかかったのは文字コードではなく、セルの編集まわりだ。 文字を打ち、確定し、隣へ移る——見た目に地味な部分ほど、詰めるところが多い。

そのかわり、表計算としては何もできない。 数式も、書式も、グラフも無い。中身を見て、直すための道具と割り切ってある。Excelのファイルにしても、先頭のシートを覗ければたいてい用は足りる。あれを開くためだけに重い表計算ソフトを起動しなくて済むのは、地味だが気に入っている。

そして管理人はショートカット大好き人間なので、思いつくかぎり割り当てた。一覧を自動で作らせて、画面から呼び出せるようにもしてある。 忘れたときの確認用だ。

これらが、片手間で、1日でほぼ形になった。

そして念のため書いておくと、管理人はこのアプリのコードを1行も書いていない。 決めたのは「何が欲しいか」と「どこが気に入らないか」で、手を動かしたのは全部Claude Codeだ。書けないから頼んだのではなく、書けるけれど書いていない。

全部を自分で作る必要はない

補足しておくと、CSVを読み書きする心臓部は自分で作っていない。MITライセンス1で公開されているオープンソース2のエンジンがあったので、それをフォーク3して土台にした。

他人が長年かけて育てた道具を、断りなく土台にしてよい。今のソフトウェアは、かなりの部分がそういう仕組みの上に乗っている。

そのうえで方針をひとつ決めた。借りてきたエンジンのコードには一切手を加えない。 画面まわりは別のパッケージとして横に足す。こうしておくと、元のエンジンが更新されたときに、その更新をそのまま取り込める。 手を加えてしまうと、更新のたびに衝突の後始末をすることになる。

エージェントに頼むと、つい全部をゼロから作らせたくなる。だが使えるものが公開されているなら、借りたほうが速いし、確かだ。 ここで管理人が決めたのは「どれを土台にするか」と「元のコードには触らない」の2点で、あとはClaude Codeに任せた。

自分ひとりが使うと決めると、外れるもの

1日で形になったのは、エージェントが速いからだけではない。ユーザーを自分ひとりに限った瞬間に、開発の重い部分がごっそり要らなくなる。

  • 見た目と説明が要らない。 使い方を知っている人しか使わないので、説明書も、初回のチュートリアルも、親切なエラーメッセージも省ける
  • 公開しないので、外から触られない。 自分のネットワークの内側だけで動く。アカウントもログインも要らず、認証やデータベースを考えずに済む。守るべき入口が最初から無いのは、セキュリティの面でもかなり楽だ
  • 「それ何人が使うの?」と聞く人がいない。 これがいちばん大きい。仕事の開発なら、ニッチな要望は工数に見合わないという理由で消えていく。ユーザーが1人でよければ、その審査そのものが無い
  • しょぼくていい。 表計算としての機能が無くても、自分の役に立って、自分が気に入れば、それで完成である

3つめが特に大きかった。タブを並べたい、テキストで直したい、文字化けを止めたい——どれも、誰かが代わりに直してくれるのを待っていても来ない類の要望だ。 困っている本人が、自分で直せる。

読んでいないコードを、動かしていいのか

1行も書いていないと先に書いた。では書かれたものを全部読んでいるかというと、読んでいない。 読む速さを、書く速さが追い越したときに書いたとおり、これはエージェントとの開発に付いて回る不安だ。

ただ、自分用の道具では、この不安がかなり軽い。 公開していないので、知らない誰かに悪用される経路が無い。触るのは自分のパソコンの中のファイルだけで、どこかへ送るわけでもない。何かまずいことが起きても、範囲は自分の中で閉じる。

公開するものと同じ基準で身構えなくていい。 これも、ユーザーを自分ひとりに限ったから外れたものの一つだ。

作りかけて、やめた機能

足さなかった機能の話も書いておく。

当初は、エージェントの側からも操作できる入口を付けるつもりで作りかけていた。だが途中で気づいた。CSVの編集は、エージェントが元から得意なことだ。 ファイルを渡して頼めば、それで済む。わざわざアプリ側に窓口を用意する意味がない。

そこはやめて、人間が触る道具として作り切ることにした。 要らないと分かった機能をその場で落とせるのも、自分用ならではだ。誰にも事情を説明しなくていい。無駄な開発はしないし、無駄な機能も足さない。

直したいところが、その日に直る

作って終わりではないのが、自分用の面白いところだ。使っていて気になったところを、その場で言えばいい。要望を伝える先も、決裁する人も、自分である。

とはいえ、すんなり終わったわけではない。日本語入力で変換の1文字目が消える不具合には、しっかり手こずった。直したつもりが、2回ぶり返している。 自分用でも、詰まるところでは詰まる。

ただ、詰まっても止まらない。 以前なら、この手の不具合は検索し続け、本を漁り、延々と試行錯誤するところだった。それがほとんど無くなった。 エージェントに頼んで付き合ってもらううちに、やがて解決した。

デスクトップアプリが、こんなに手軽に作れるとは

今回はじめて使った道具がひとつある。Tauriという、デスクトップアプリを作るための仕組みだ。これにはちょっとした感動があった。

アプリを作るというのは、以前ならもっと構えのいる話だった。 配布の形を整え、アプリストアに申請し、審査を待つ。ところが自分用なら、そのどれも要らない。 組み立てて、自分のMacに置けばそれで終わりである。

今回いちばんの収穫は、デスクトップアプリという選択肢が増えたことかもしれない。 作れる形が一つ増えると、次に何かで困ったときに、取れる手が変わる。

以前なら、どれだけかかったか

管理人の実感として書いておく。これを自力で作るとなれば、以前ならかなりの期間がかかったはずだ。 表を並べる画面を一から組み、キーボードの操作を作り込み、文字コードの変換を用意する。片手間で1日、とはいかない。

かといって外に頼むなら、見積もりを取って発注することになる。そして「タブを並べたい」程度の要望は、その過程でだいたい落ちる。 コストに見合わないからだ。

いま管理人が払っているのは、月に2万円に届かない額だ。しかもそこには、ほかに作っているものも全部含まれている。採算を考えずに作れること自体が、いちばん大きな変化だと思う。

困りごとと、欲しかったもの

何を作るか迷ったときに見る先は、2つある。自分がいま困っていること。そして、本当に欲しかったもの。

強いのは、その2つが重なったところだ。 今回のCSVアプリがまさにそうで、タブが並ばずに困っていて、なおかつ「こういうCSVアプリが欲しかった」がはっきりあった。

市場も、ユーザー数も、見栄えも要らない。要るのは、その重なりの感覚だけだ。

Footnotes

  1. MITライセンス:中身を「どこまで自由に使っていいか」を定めたものがライセンス。MITはとくに緩い部類で、作者の著作権表示とライセンス文さえ残しておけば、改造も、配り直すことも、商売に使うことも自由。そのかわり無保証で、使って何か起きても作者は責任を負わない、と明記されている。 ↩

  2. オープンソース:ソフトウェアの中身(ソースコード)が公開されていて、誰でも読めるし、使えるもののこと。 ↩

  3. フォーク:公開されているリポジトリを、自分の側に複製して手を加えること。 ↩

エージェント利用実例の記事

エージェント利用実例のページへ →