いい波立ってんね~

https://github.com/Tanakee/hackz-20263-iinamitattenne

PHP

Docker

Node.js

Vue

HTML

議論を物理現象で可視化するSNS風議論プラットフォーム

isekin

たなけー

伊藤ゆうき

推しアイデア

「議論の物理化] 意見に熱量・質量・風化を与え、投じられた石が波紋を生むという表現は唯一無二。 いいねを稼げる風化しない意見を投じよう!

作った背景

お題に沿うようなことを考えていたら、「"波風"立てる議論プラットフォームを作ろう!」に行き着いた。

推し技術

cannon-es + Three.js の物理演算 石が水面に落ちる挙動をリアル物理で再現してるのが没入感を爆上げしてる。

プロジェクト詳細


🌊 いい波立ってんね~

女は海、男は財布


1. 課題意識

今のSNSでは、どんな意見も同じタイムラインに流れ、すぐに消費される。

「人類は進化を止めるべきだ」という壮大な問いかけも、「僕はラーメンが好きだ」というつぶやきも、同じ1投 稿として扱われる。

それっておかしくない?


2. コアアイデア:主語がデカいほど、石がデカくなる

「いい波立ってんね~」は、あなたの意見をとして池に投じる議論プラットフォームです。

投稿すると、言葉は石になって池に飛んでいき、着水し、波紋を広げ、水底に沈んでいく。

そして——主語がデカいほど、石がデカくなる。

入力主語スケール石のサイズ
僕はラーメンが好きだ15小さい
女は海70中くらい
人類は進化を止めるべきだ人類100でかい

主語がデカい石は、大きな波紋を生み、重い着水音を響かせ、高い水柱を立てる。

そして、なかなか風化しない。大きな問いかけは、長く池に残り続ける。


3. 主語スケールの判定:GiNZA(日本語NLP)+ 階層探索

スケール判定の核心は、日本語の自然言語処理エンジン GiNZA(spaCy + 日本語モデル)。

GiNZAの依存関係ラベル dislocated(は-トピック)と nsubj(が-主語)を区別し、正しく「僕」を主語として抽出する。

抽出した主語を、スケール辞書と上位概念の階層探索で0〜100にスコアリングする。

辞書にない単語でも、「エンジニア → 大人 → 人間」「猫 → 動物 → 生物 → 地球」のようにis-a関係を辿って上位 概念のスコアから推定する。距離1ごとに5%減衰させることで、上位概念そのものより少し小さいスケールになる。

さらに、固有表現認識(地名・組織名・人名)と修飾語ボーナス(「すべての」+30、「一部の」-10)で精度を高 める。


4. 石はただ沈むだけじゃない

積み重なる

cannon-es による物理演算で、石は水底に沈み、先に投じられた石の上に本当に積み重なっていく。議論が積み上がる様子を、物理として体感できる。

熱を帯びる

いいねされた石は熱量が上がり、赤く光り始める。 水中では泡がぶくぶくと湧き出す。

風化する

議論されなくなった石はゆっくり透明になり、脈動しながら消えていく。主語がデカい石ほど風化は遅く、池の中 に長く存在し続ける。

風になる

熱量が高い投稿群を「風」として池の上に流す。議論の潮流が自然言語で可視化される。


5. 池を泳ぐ魚たち——これは近代SNSの風刺だ

池には2種類の魚が泳いでいる。

🔵 冷笑魚(青) と 🔴 熱笑魚(赤) だ。

魚が石に近づくと、熱量に変化が起きる。

そして——「サメ襲来」。

画面を横切るカットイン演出のあと、🦈 サメが池に現れる。サメは熱血魚だけを狙って食い尽くし、「まじサメるわ〜」と吐き捨てて去っていく。

熱量を上げようとする声が、冷笑によって消えていく。これは今のSNSそのものだ。


6. VRで石を投げる

Pico 4 Ultra に対応した WebXR 機能も搭載。

池にかかる木製の橋の上に立ち、目の前に浮かび上がる光る石を手で掴み、振りかぶって池に投げ込む。振りの強 さで飛距離が変わり、腕の方向で着水位置が変わる。

VR空間内のスマホ型UIパネルからひらがなキーボードで文章を入力し、意見を打ち込んで自分の手で池に投じる体 験をVR内で完結させた。

両手のハンドモデルはグリップに連動して指が握り込み、サメ襲来時には映画的な黒帯カットイン演出が視界を覆 う。WebSocketによるリアルタイム同期で、他のデバイスと同じ池を共有できる。


7. システムアーキテクチャ

┌─────────────────────────────────────────────────────┐ │ Frontend (Vue.js + Three.js + cannon-es + WebXR) │ │ │ │ ┌──────────┐ ┌───────────┐ ┌──────────────────┐ │ │ │ 3D池 │ │ 物理演算 │ │ WebXR / VR UI │ │ │ │ (Three) │ │(cannon-es)│ │ (Pico 4 Ultra) │ │ │ └──────────┘ └───────────┘ └──────────────────┘ │ └───────┬────────────────┬────────────────────────────┘ │ HTTP │ WebSocket ▼ ▼ ┌───────────────────────────────┐ │ Gravity API │ │ (Node/Express) │ │ │ │ ・質量計算 ・AI要約(風) │ │ ・VRリモート ・WS中継(同期) │◄───► NLP API (FastAPI + GiNZA) │ │ ・主語抽出 └───────────┬───────────────────┘ ・階層探索スケール判定 │ HTTP ・固有表現認識 ▼ ┌───────────────┐ ┌──────────────────┐ │ Logic API │◄─────►│ MySQL │ │ (PHP) │ │ │ │ │ │ ・posts │ │ ・風化判定 │ │ ・interactions │ │ ・熱量計算 │ │ ・winds │ │ ・DB管理 │ └──────────────────┘ └───────────────┘

5つのサービスを Docker Compose でオーケストレーション。


8. 今後の展望

  • 波紋の干渉: 複数の石が生む波紋が物理的に干渉し合う演算
  • 階層辞書の自動拡張: コーパスやWordNetから上位概念ツリーを自動構築
  • 常設展示: 公共空間に池を設置し、来場者が石を投じ続ける

主語がデカいほど、大きな波紋を生む。

あなたの意見は、どれくらいの波紋を広げるだろう?

isekin

@8a896d99d4dce583