背景
日記を続けたいと思いつつ、続いたためしがありませんでした。白紙のページに向かって「今日は何を書こう」と考える時間が、そもそも億劫なのです。
一方で、誰かに話すのは苦になりません。話しているうちに、自分でも気づいていなかったことが出てくることもあります。
それなら、書くのではなく話す。そして話した結果として日記が溜まっていくという形にすればいいのではないか。そう考えて作ったのが「はく」です。AIと対話するだけで、その日の記録が自動的に積み上がっていきます。
名前について
「はく」というひらがな3文字に、3つの意味を重ねています。
- 拍 — 一拍、裏拍。日々のビートを刻むこと。毎日話すと日記が溜まっていく、という時間の刻みそのものです
- 吐く — 本音を吐き出すこと。今日あったことを聞いてもらう、というこのアプリの中心の体験です
- 白 — 余白、空白。静けさの世界観です
「溜める(拍)・出す(吐く)・受けとめる余白(白)」が一語に同居している。日記と対話のアプリの名前として、これ以上ないと思いました。
ひらがな1音なので口頭では聞き返されやすく、検索にも弱い名前です。それは分かったうえで、自分のためのアプリなので意味の重なりを取りました。
機能
- 3人のキャラクターと対話:きく🌙(共感して聴く)・とく🧩(構造で整理する)・たく🔥(背中を押す)を切り替えられます。会話は共通なので、途中で相手を変えると次の返事から反応が変わります
- 日記にする:ボタンひとつで、その日の会話から出来事・気分・気づきを400字程度にまとめて保存します
- わたし:仕事・家族・性格・好みなどのプロフィールを登録しておくと、AIが前提として踏まえて話します
- 記憶:会話の中で覚えておくべきことが出てくると、AIが「これを記憶する?」とカードで提案してきます
- 音声入力:マイクボタンで話した内容が入力欄に流し込まれます
- パスコード認証:自分以外が使えないようにしています
使ってみて分かったこと
キーボードだと没入できません。 実際に使い始めてすぐ、これに気づきました。仕事の作業ならキーボードで何の問題もないのですが、その日あったことを話すという行為とタイピングは、どうにも相性が悪いのです。指を動かしている感覚が邪魔をして、話している気分になれません。音声入力を優先して実装したのは、この実感からでした。
キャラは3人もいらないかもしれません。 共感・傾聴・構造化・挑戦と、性格の違う3人を用意したのですが、実際に使ってみると自分が求めているのはほぼ「きく」でした。落ち込んでいるときに論理で整理されたり発破をかけられたりするのは、少なくとも日記を続けるという目的には向いていません。ただ、これはまだ使い始めたばかりの印象なので、しばらく実績を見てから決めるつもりです。
記憶は勝手にさせない方が安心でした。 AIが会話から自動で覚えていく形も考えましたが、提案されたものを自分が承認したときだけ記録する方式にしました。何を覚えられているか分からない状態は、話しにくくなります。
技術的なポイント
Next.js(App Router)にVercel AI SDK、モデルはClaudeを使っています。キャラクターごとにシステムプロンプトとモデルを変えていて、たとえば聴き役のきくは応答の速いHaiku、整理役のとくは思考力の要るSonnetという振り分けです。
日記のデータはアプリの中に置いていません。 GitHubのプライベートリポジトリを1つ作り、会話ログと日記とプロフィールはすべてそこに保存しています。アプリが壊れてもデータは残りますし、GitHub上で直接読み書きもできます。自分の記録を、特定のアプリに閉じ込めたくありませんでした。
音声入力はWeb Speech APIで、認識結果は入力欄に溜めるだけにして送信は手動にしています。話し終わった瞬間に勝手に送られると、言い直しができないからです。
つまずいたところ
いちばん手こずったのは、記憶の提案カードを放置したまま次の発言を送ると、以降まったく返事が来なくなるというバグでした。
原因は、決定していないカードが会話履歴に残っているとAIへのリクエスト自体が組み立てられない、という仕組み上の制約でした。厄介だったのは画面に何のエラーも出なかったことです。送信ボタンは押せるのに何も起きない、という症状に見えていました。
修正のついでに、応答に失敗したら画面に出るようにしました。自分ひとりで使うアプリでも、失敗が見えることは大事だと分かりました。
現状
Vercelで公開して、iPhoneからも使っています(パスコードを知らないと中には入れません)。
従量課金のAPIを使うので、公開URLを出すことと課金リスクが直結します。認証を入れるまでデプロイしない、というのは最初から決めていました。使用量の上限とアラートも設定してあります。今のところ月1ドル未満です。
これから焚き火のサイト「ゆとり」と統合するかもしれません。「ゆとり」と「はく」で、よ・はく(余白)。名前を決めたあとに気づいたことですが、そうなったら気持ちがいいなと思っています。