コピーしたものが一つずつ蓄積され、あとから選んで使える macOS 用クリップボードマネージャーです。
収益化を念頭に置いて作りました。初日にすでに価格の話が出て、3日後にはどんなモデルで販売するかを決めたので、趣味で作っていて成り行きで公開した、という類いではありません。ところが作ってみると、自分がいちばん使っています。その点がいちばん満足しています。
いちばん良かったのは、AI と作業するときでした。プロンプトを複数回したり、結果をクリップボードに出力するよう指示しておくと、順に蓄積され、その間に別の作業をしていても取りこぼしません。
蓄積された内容は編集できます。ほとんどのクリップボードマネージャーは読み取り専用の履歴ですが、ここでは項目を開いてすぐ修正し、⌘S で保存できます。行番号があり、⌘F の検索と ⌘R の置換ができます。コピーしたものをエディタに移して直し、またコピーし直す往復がなくなるのは、思った以上に大きいです。
開発中に細かく必要になるものも中に入れました。JSON・SQL・Mongo のフォーマット、XML↔YAML、JWT デコード、Base64/URL エンコード、Unix タイムスタンプ、SHA-256、AES、カードを2つ選んで ⌘D で行単位 diff。ブラウザのタブを開くのが面倒で作ったものです。
デフォルト状態ではシステム権限を一切要求しません。データはすべて暗号化されてローカルにのみ保存され、分析・トラッキング・サーバーはありません。
24日間の記録
Claude Code で作りました。会話履歴が残っていたので開いてみると、24日間で310件あり、性質を数えてみると欠陥の指摘が28件、提案を拒否したり差し戻したりしたものが15件でした。時系列で整理するとこうなります。
7/5(30件) — 最初の指示は「要件を私に質問しながら具体化して」でした。その日のうちに名前・Bundle ID を決め、base64・ビューティファイを入れ、⌘⏎ の詳細表示を付けました。「$4.99 で App Store 販売ではないか」という話もこの日に出ました。そして自動ペースト機能を外しました。「意図しないペーストが起きそうだから外そう」
7/6〜7/7 — 「クリップボードの内容はどこに保存されるの?」と聞いたことが、ローカル暗号化の導入につながりました。Excel からコピーすると画像として認識されるバグを直し、⌘⇧V ショートカットが効かない問題を2日にわたって追跡しました。log show を自分で取ってログを渡すようなやり方でした。
7/8 — どのモデルで販売するかを確定しました。最初から有料にするか、無料で配ってアプリ内で課金するかをめぐって「いっそ最初から有料だけで売る? 30日間の利用だけ無料にして」→ 30日間トライアルに決めました。そして3日前に外した自動ペーストを復活させました。実際に使ってみると「選択したときにすぐ貼り付けられないのが不便」だったからです。
7/11 — スニペット機能を作ってから廃止しました。「使い勝手がひどい」→「改善方針を提案してみて、微妙なら機能削除にする」→「いや削除して」。作ったものを捨てる判断がいちばん難しかったです。
7/12〜7/16 — ライセンス配布を Lemon Squeezy・PayPal まで検討した末、App Store に整理しました。その後は住所検証の失敗、銀行コード、W-8BEN、事業者登録の悩みの連続でした。コードを書く時間よりこちらのほうが長かったです。
7/19 — すでに審査に提出した後でしたが、ランチャーのスクリーンショットを見ていて、アプリ名が DevClip-AppStore としてインストールされていることに気づきました。提出を取り消して再ビルドしました。
7/25 — リジェクト。Guideline 2.4.5(Performance: Hardware Compatibility)でした。
リジェクト、そして24日で決着した判断
リジェクト理由になったのは、よりによってその機能でした。7月5日に危険だと自分で外し、3日後に使ってみると不便で復活させた「即時ペースト」。アクセシビリティ権限を使うのですが、Apple はこれを「アクセシビリティ目的ではない使用」と見なしました。
機能を外せば簡単でしたが、すでに一度外したあと必要で復活させた機能なので、今回は守ることにしました。その代わり、リクエスト方法を変えました。
もともとデフォルトではオフで、ユーザーが自分でオンにするときだけ要求していました。問題は、レビュアーがその事実を確認する方法が画面のどこにもなかったことでした。そこでトグルをオンにすると、すぐシステム権限ダイアログに行かず、アプリ内で先に説明する画面を表示するようにしました。「項目を選んだ直後に ⌘V を一度送るためにだけ使い、他のアプリの内容は読み取りません」といった内容で、「続ける」を押して初めてシステム権限ダイアログに進みます。
審査メモに「設定 > 一般で直接押してみると確認できます」と再現手順を書いて再提出し、通過しました。
「すでにそう動作している」ことと、「ユーザーがそれを確認できる」ことは別問題なのですね。
AI との働き方
コードはほとんど自分では書きませんでした。プロンプトで実装されて出てきたものを読み、判断する立場にいて、エンジニアではあるものの、今回は事実上、企画と QA に専念した形です。
うまくいくだけではありませんでした。画像ドラッグができない問題を3回も推測で直し、そのたびに確認は私の役目でした。「テストを少しはしろ、私がいちいち確認しなくて済むように」と言ってから、実データで検証してから直すやり方に変わりました。その後は手で見つけたバグをその都度テストとして固定し、現在270個あるテストのかなりの数がそうして生まれたものです。
最終的にコミット87個、Swift 約1万行、テスト3,700行です。
30日間は全機能が無料です。その後も基本機能は引き続き無料で、Pro はサブスクリプションではなく買い切りです。
2件のコメント
Raycast にある機能はほとんど対応しているようですが、何か違う点はあるのでしょうか?
そうですね、クリップボード履歴だけを見れば重なる部分は多いです。ただ、Raycast はクリップボードだけでなくほかの機能も多くて、少し過剰に感じていました。
私が気を配ったのはこういう点です。
まず軽量で、クリップボード履歴だけを管理するようにしています。現在は 2MB ほどですね。
そして保存した内容は詳細画面で編集して貼り付けられます。いくつものプロンプトを見直して事前に少しずつ手直ししたいときに便利でした。
検索とフォルダ分けにも気を配りました。仕事で必要な情報のうち、一度きりのものや、また探すのが面倒なものを解消できるように工夫しました。
本文、タグ、タイトルなどで検索できるようにしました。
将来的にはプラグインで機能や配置を直接追加できるようにしたいのですが、これはまだ具体化できていません。
Raycast も良いアプリだと思っていますし、好みに応じた選択肢になれるように頑張りたいと思っています。
ご意見ありがとうございます