ことづて

ひとつの言葉が、別の誰かの言葉を生んでいく場所。

言伝(ことづて)= 人から人へ託されて運ばれる言葉

はじまり

「掃除しろ」
「普通はやるものでしょ」

母と、何度も衝突しました。

整理してみると

家は回復する場所

— 私の前提

家は共同生活の基盤

— 母の前提

掃除の問題ではなく、前提がズレていただけでした。

価値があったのは、自分の当たり前が、初めて目に見えたこと。

課題

自分の「当たり前」は、
自分では見えない。

見えるのは、違う考えに触れたときだけ。

でも — 違う考えに触れる場所は、いま、いちばんそれを必要とする人にとって 安全ではありません。

誰のためのサービスか

自分の中で考えすぎる人。
人に気を使いすぎて、
言いたいことを飲み込む人。

会議で違和感を持っても「まあいいか」で終わらせてしまう

友達が誰かの悪口を言っているとき、否定も肯定もできず黙る

SNSに書こうとして、投稿する直前に全部消す

その人にとって、いまある場所は効かない

SNS・掲示板 自分に宛てて返信が来る。自分に向けて言われると身構えるし、 名前を出して表明した意見は引っ込めにくい
名言アプリ 受け取って終わり。自分の側は何も動かない
日記アプリ 自分の中だけで完結する。自分の当たり前は、自分では見えない
人に相談する 相手にも気を使う。そもそもそれができない人の話をしています

必要なのは、自分と関係のないところで生きている、他人の世界にふれること。

このサービスの価値

誰の

自分の中で考えすぎる人。
気を使って言葉を飲み込む人。

どんな課題を

自分の当たり前が見えない。
それに気づける安全な場所がない。

どう解決し

誰にも宛てられていない他人の言葉が、1日1回だけ届く。
心が動いたら書く。返信も評価も来ない。

どんな効果があるか

自分の当たり前が見える。さらに、自分の言葉が誰かの当たり前を動かしたことが返ってくる。

解決策 — ひとつの循環

① 言葉が届く 1日1回 ② 自分の言葉を書く 心が動いたら ③ 誰かに届く 明日 ④ 心が動く また、誰かの①になる

コメントも、いいねも、フォローも、通知もありません。この輪だけでできています。

デモ

ことづてのデモ:言葉が届き、来歴をたどり、自分の言葉を託し、それが誰かの言葉を生むまで

※ 実演が動かないときだけ、この録画を再生する

使うと、何が変わるか

これまで

会議で違和感を持っても、
「まあいいか」で終わらせる。
モヤモヤは言葉にならないまま消える。

ことづて

「黙るのは中立じゃない」という
他人の一文が届く。
先月の自分が、見える。

そして書いた言葉が、明日、別の誰かの当たり前を動かします。

デモで見た4世代

芥川龍之介

危険思想と常識の関係について

のらねこ

黙ってきたのは常識のためではなく、波風を避けたかっただけ

三日坊主

会議で黙ることは、賛成したことになっていた

こもれび

友達の悪口に、黙っていた自分

内容は、全部違います。

残っているのは「この言葉がなければ、この言葉は生まれなかった」という関係だけ。

リツイートは、内容が変わらずに広がる。

ここでは、内容が変わらないと成立しない。

転送ボタンを置いていないのではなく、
転送が原理的に不可能な構造です。

独自性は、1カラムに集約されている

parent_word_id

血統でも継承でもなく、「この言葉がなければ、この言葉は生まれなかった」を記録する。

名言アプリ 持っていない
日記アプリ 持っていない
匿名SNS 持っていない
ことづて 4世代の系譜が、再帰クエリ1回で取れる

アーキテクチャ

ブラウザ Next.js (App Router) / Vercel Server Components 画面を組み立てる Server Actions 受け取る / 託す lib/queries.ts SQL はすべてここに閉じる Postgres — users / words / deliveries

Server Components と Server Actions で、APIサーバーなしの1プロジェクト構成。
ブラウザからDBへの直接アクセスはなく、SQLは全部サーバー側に閉じています。

データ構造 — テーブルは3つだけ

users id / nickname deliveries 誰に何が届いたか words text 言葉そのもの source_type classic / user author_user_id 書いた人 parent_word_id この言葉を生んだ言葉 source_url / original 出典と原文 書く 届ける 自己参照

偉人の言葉もユーザーの言葉も、同じテーブルに同じ形式で並びます。
「誰もが思想家になりうる」という思想を、データ構造で表現しました。

工夫・苦労した点

  1. 引用の正しさを、データ構造で担保した

    48件すべて原典から手作業で採取。全件に出典URL、訳出27件に原文を併記。 実行時にAIは1回も呼んでいない。

  2. 抽選を、運任せにしなかった

    初めての1語は必ず来歴つき。配信回数の少ない言葉を優先し、 書いた言葉が誰にも読まれずに沈まないことを保証。

  3. 紙を捨てて、点と線にした

    最初は手紙のメタファーで作り、途中で全部捨てた。 ことづては口頭で運ばれる言葉で、紙ではないから。

できていること

  • 3画面 + デモ用画面すべて実装済み、本番にデプロイ済み(Vercel + Supabase)
  • 偉人の言葉48件、全件に出典URL、訳出27件に原文を併記
  • 4世代の系譜が、モックではなく実データで動いている
  • 実行時にAIを呼ぶ処理はゼロ。配信も抽選も来歴もSQLだけ

作らなかったもの

コメント 返信 いいね 通知

全部、意図して作りませんでした。

人がオンラインで変われないのは、言葉が自分に宛てられているから。
自分に向けて言われると身構える。だから誰にも宛てられない構造にしました。

これから作りたいもの

再会

同じ言葉が数年後にもう一度届いたとき、当時の自分が書いた言葉を添えて見せる。
過去の点と今の点が、同じ言葉の上で向き合う。

軌跡というメタファーの完成形で、実装は既存データを引くだけです。

ことづて

いま、この場で私が書いた言葉は、
明日、誰かに届きます。

できるのは、衝突が起きる前に、
自分の当たり前が見える機会を1日1回つくることだけ。
それで十分価値があると、私は思っています。

0:00 0:00
→ ↓ Space
次へ
← ↑
前へ
T
タイマーの開始 / 一時停止
R
タイマーをリセット
N
話す内容のメモを開閉(既定は非表示)
F
全画面
?
この一覧