アプリにパターン発見を教える

意味のまとまりで束ねる仕組みを作ったのは、私自身の課題でもあったからです。音声メモは増えるほど振り返りづらくなる。

Building

Reso の初期使い手の一人がこう言いました。「音声メモが 200 件あるのに、半分は何の話か思い出せない。」

それを聞いて、私自身のアーカイブも同じだとすぐに分かりました。capture 重視ツールは記録を簡単にする一方で、その後にデータへ埋もれやすくなります。

私は Reso に、手動タグ付けやフォルダ整理なしで、時間を通じて思考のパターンを見つける役割を持たせたかった。

コアアイデア

各転写は semantic representation(embedding)に変換されます。embedding が近いノート同士は関連が高い。

関連ノートが十分にたまると、自動生成名つきの「テーマ」として浮かび上がります。

: 2週間で「API design」について5つ録音したとします。Reso は自動でまとめて「API Design Patterns」というテーマ名を付けます。

クラスタリングの難しさ

アルゴリズム自体は単純です。ただチューニングが厄介でした。

  • 攻めすぎ: 何でも1つの巨大テーマになる(「仕事全般」)
  • 守りすぎ: 1メモ1テーマになる(実用性がない)

類似度しきい値を何日も調整して、やっと分かりました。完璧なしきい値は存在しない

効いたのは Adaptive clustering です。

固定値ではなく、類似度スコアの分布を見る。自然なギャップ(例: >0.75 と <0.3 に分かれる)があれば、その境界をカットオフに使う。

つまり「正しい」しきい値は、私の主観ではなく、データ側から現れます。

テーマ名の生成

ここは意外に難題でした。複数ノートからどうテーマ名を作るか。

試したのは以下です。
1. LLM summaries: 精度は高いが遅くて高い
2. Keyword extraction: 速いが汎用的すぎる("Project Update #47")
3. First note title: 単純だが誤誘導しやすい

最終的に選んだのは Hybrid approach

頻出キーワードを抽出し、軽量な LLM 呼び出しで自然なフレーズにまとめる。コストはテーマあたり約 ~$0.001。オンデマンド実行に十分な速さです。

学んだこと

良い AI 機能は、AI っぽく見えません。アプリがただ…注意深く見ていてくれる感覚になります。

テーマが出たとき、使い手は「すごいクラスタリングだ」とは思わない。「あ、確かに最近こればかり考えてた」と思う。

見えなかったものを見えるようにする。それが魔法です。

これは宣伝ではなく、作りながら実際にはまった落とし穴の記録です。

macOS 版 Reso をダウンロード

Reso 開発ログをもっと読む