こんにちは、プロダクト開発部 部長の松浦です。
すっかり春になり、心はパステルです。 春といえば新緑の季節、木々が色づいてきますよね。そんな季節に考えたことを綴ってみました。
- 口から出た音を、葉っぱに例えた人がいる
- 落ち葉を拾う仕組みを作った
- なんでこうなんだっけ? → なんでその記録がないんだっけ?
- 一人語りは、続かなかった
- 誰かがいると、刺激が続く
- 会話の先にあるもの
- おわりに
口から出た音を、葉っぱに例えた人がいる
「言葉」という文字を改めて見ると、ステキな情緒があります。「口から出た音を、葉っぱのようだ」と例えた人がいます。
言の葉が口から出て、そのまま地面に落ちていく。私たちの会話は、毎日そうやって生まれ、そしてすぐに散っていきます。 そんなことを考えていたら、ふと疑問が浮かびました。 もしその落ち葉をすべて拾ったら、それがどんな木についていたか、どんな樹木の姿だったか、復元し、想像できるのだろうか?
本当の樹木の話であれば、それはさすがに難しいでしょう。散った葉から、もとの木の姿を思い浮かべることは困難です。
でも、「言の葉」だとしたらどうでしょう。チームの会話の中に散った言葉を一つ一つ拾い集めていけば、そのとき何を考えていたのか?なぜその判断をしたのか?チーム内でどんな文脈があったのか?どんな木に、どんなふうについていたのか?意外と思い出せるのではないでしょうか。
そんなことを思い、落ち葉拾いをはじめてみました。
落ち葉を拾う仕組みを作った
私たち、コドモンのプロダクト開発部では、コミュニケーションにGatherを使っています。これはオンラインのワークスペースというか、言わば「職場」のようなツールです。物理的には別な場所にいるものの、あたかも同じ空間にいるかのような雰囲気を作ってくれる、不思議なツールです。 このおかげで、組織内のみなさんの「距離感」がちょうど良く、ふらっと誰かに話しかけやすいし、ちょっとした雑談から大事なアイデアが生まれたり、意思決定に至ることもあります。
ただ、リアルタイムな文字起こしの機能は備わっていません。 会話に花が咲いても、その言の葉はやがて散っていきます。
この落ち葉を拾ってみることにしました。世の中には良いツールがありそうなものだと思ったのですが、意外と無かったので作ってみました。 (作ってみたいという気持ちが強く、あまりちゃんと探さなかったというのはヒミツです)
実際、アプリと言っても、macOSのマイク音声、システム音声をキャプチャし、音声モデルによってテキスト化する、いわゆる「Speech To Text」です。 私がいままで経験したことのないRustやSwiftで、(Claude Codeが)アプリを作っていきました。 私がこだわりたかったのは「文字起こしが速いこと」と「外部通信が発生しないこと」でした。 色々と検討を経て、オフラインのmacOSネイティブアプリになりました。
実際に作ったツールは、自分のマイク入力と相手の声の2系統で録音するだけのシンプルなものです。生の会話ログさえあれば、LLMに依頼するだけで、良い感じに整形できます。 このあたりの技術詳細はさておき(Tech Blogなのに!)、ある程度満足なものが出来上がり、1か月間くらいドッグフーディングも兼ねて常用しています。とても便利です。

なんでこうなんだっけ? → なんでその記録がないんだっけ?
コドモンではいままで、ペアプログラミングを実践してきました。プロダクトや開発で必要な知識はチーム内で循環していたし、コードにも蓄積されていました。ドキュメントもありました。
でも、人の記憶の量と比べると、記録として残っているものはやはり少ないです。
当たり前ですが、時間は有限です。プロダクト開発では時間と余裕はなぜか少なくなりがちです。過去の意思決定の背景は、きちんと記録できていませんでした。なぜその設計にしたのか?なぜその選択をしたのか?そういった「Why」の部分です。ある程度の粒度や大きさの意思決定の記録はあるものの、口頭のコミュニケーションで生まれた「小さな決定」や「背景」は抜け落ちていました。
これは「開発あるある」ですし、仕方がない部分もあります。エンジニアとしては、ユーザーのみなさんへ早く価値を届けたい気持ちが先行しますし、この気持ちを優先してしまいます。私もその一人です。 いちいちキーボードで入力し、整形し、共有のために文章を書くのも大変です。実際にやれば数分で出来るはずなのに、気持ち的には30分かかる作業に思えてしまいます。
チームでは毎朝会話はしているのです。ペアでの会話も常時あります。その中で自然と生まれる文脈、判断の背景、「あのときこう考えたよね」という議論や合意。 ユーザーのことを考え、言の葉を重ね、会話に花を咲かせる。開発における最も素敵な瞬間の一つです。 このような素敵な瞬間は、記憶にはあるものの、記録されていないだけなのです。良いアイデアはすぐに形にしたい。コードで表現したい。結局きちんと意思決定を記録できず、「どうしてこうしたんだっけ?」とあとで思い出しにくくなる。このような連鎖が続いてしまいます。
チームでの活動の思い出と共に、散りゆく花と葉。こう思うと、風情はあります。しかし、プロダクトの開発という目線だと、意思決定の記録が存在しないのは、風情よりも不便が上回ってしまいます。
一人語りは、続かなかった
せっかく作った文字起こしアプリ、最初は一人語りでも使ってみました。思考が整理されるのもありますし、音声入力の代わりにもなりそうですし。
ただ、どうもしっくり来ません。言葉が続かないのです。
「うー」とか「あー、えっと、まー」のようなフィラーが増えていく。話し始めても、すぐに詰まる。これはシンプルに、私の「ひとりごとスキル」が低いのかもしれません。
でも、なぜ言葉が続かないのか考えてみると、一人だと自分の視点でしか話さないからだと気づきました。数日後、一旦忘れてしまうと、そのコンテキストを復元できません。当時の自分の視点もどこかに固定されていて、「何を前提にこの話をしたんだっけ?」が思い出せなくなります。
一人語りの文字起こしを見返しても、「で、何が言いたかったんだ?」となってしまいます。他者の視点がなく、アイデアの広がりもありません。言の葉を集めてみても、痩せた木しか見えてこないのです。
誰かがいると、刺激が続く
他にも気づいたことがあります。ペアプロからもらっていたものは、「言葉が続く」だけではありませんでした。
このブログを書く前に、開発部内で私が作った文字起こしアプリを披露(自慢)してみました。すると、それに触発されて、チームで使う開発ツールを自作してくれるエンジニアがいました。
私もそれに刺激を受け、次回作を考えています。
こうやって互いに影響し合えるのは、エンジニア冥利に尽きます。やりゃいいことは、やればいい。
会話の先にあるもの
AI時代、今後の開発がどこまで速くなるかを考えたとき、その答えは「会話が最速」なのではないかと思っています。 (逆に、会話を超える速度の情報理解に、私はついていく自信がありません。)
会話したものがまとめられ、構造化され、コードとして出てくる。そのサイクルがどれだけ速く回るか。それが開発の速さに繋がりそうです。
会話の速度を超えるとしたら、過去の会話がAI用のコンテキストとして整い、AIがスッと推論して出してくる状態なのではないでしょうか。そこに到達できたとき、はじめて会話の壁を越えられるような気がしています。
今まで書いた通り、コドモンには「ペアでの会話」という習慣があります。これは意外と、生成AI時代においても活きるのではないかと思っています。ペアプロをやってきたからこそ、その仕組みとメリットをもっと増幅したい。 チームの会話が自然と記録になり、コンテキストが残り、次の判断に使える。そういう流れを作れたらいいなと思っています。 (きっとこのあたりについて、そのうち誰かがブログを書いてくれるでしょう)
おわりに
落ち葉を拾う仕組みを作ったら、思わぬ発見がありました。
一人じゃ、言葉が続きませんでした。 誰かがいると、言葉が続きました。刺激も続きました。 このような循環は、AIのトークンでは生成できません。やはり人間同士のトークから生まれるものです。
ペアプロの価値を再発見した、そんな春の出来事でした。