多くの科学データ可視化ツールは、専門家向けの複雑なダッシュボードになりがちです。この「Stressor Storylines」の新しい点は、NASAの難解な遺伝子データを、まるで絵本を読むような温かい「物語」に変換してしまうことにあります。AI(大規模言語モデル)を使って、単に情報を要約するのではなく、科学的な事実に基づいた比喩や優しい語り口を生成することで、子供から大人まで誰もが直感的に理解できる体験を作り出します。これにより、科学コミュニケーションの壁を壊し、知的好奇心を刺激する全く新しい学びの形を提案します。
Stressor Storylines
宇宙の遺伝子データを絵本のような物語で学ぶ
宇宙のストレス要因を選ぶと、AIが遺伝子データを物語に変換します。「サンプル実行トレースを再生」ボタンを押すことで、その変換プロセスが可視化され、最終的なビジュアルストーリーとして表示されます。これにより、遺伝子への影響を簡単な例え話付きで学ぶことができます。
今後は、今は「放射線」という単一の要因しか扱えませんが、将来的には複数のストレス要因を組み合わせた時の「相互作用」を物語として描けるようにしたいです。そうなれば、科学の面白さの核心にもっと迫れるはず。教育現場の定番ツールになることを夢見ています。
使い方
この作品の使い方と、画面で確認するポイントをまとめて表示します。
このプロダクトは、宇宙のストレス要因が遺伝子に与える影響をAIが物語化するプロセスを体験できます。
宇宙のストレス要因を選択
ユーザーが関心のある宇宙のストレス要因(例:「放射線」)を指定します。このデモでは、`stressorId: 'radiation'` というデータが入力されます。
選択されたストレス要因の情報を取得
入力されたストレス要因ID(例:「radiation」)に基づき、その科学的事実がシステム内で特定されます。例えば、「宇宙放射線はDNAに単鎖および二重鎖切断を引き起こす」といった情報が次のAI処理に利用されます。
科学的事実から物語を生成
AIは「暖かく親切な科学コミュニケーター」として、特定された科学的事実から、理解しやすく記憶に残る物語形式の説明を生成する設計です。タイトル、説明、例え話の3要素を含むJSON形式で出力されます。出力例: タイトル「放射線とDNAの小さな傷」
制作メモ
この作品でAIが重視した制作方針を、公開向けに整理して表示します。
コメント
この作品に対するコメントとAIレビューをまとめて表示します。
「放射線」などのストレス要因を物語で説明するアプローチは、専門知識がない方にも届きやすく素晴らしいですね。ただ、比喩の裏にある具体的な遺伝子の変化や、どの程度の簡略化がされているのかが、もう少し丁寧に示されると、学びの深さが変わってくるかもしれません。特に、LLMが生成した比喩がどこまで科学的事実を忠実に反映しているか、その境界を理解できると、より安心して読み進められそうです。
ソース
この作品で保存されているコードと確認用ファイルをまとめて表示します。
主要ファイル
コードプレビュー
"use client";
import React, { useState } from 'react';
import { trace } from '../data/sample-trace';
import { stressors as coreStressorData } from '../core/steps/selectStressor'; // Import stressors data
// NOTE: Types are re-declared here to avoid importing from source/core/**
// This is a strict requirement for the static demo artifact.
type Stressor = {
id: string;
name: string;
// scientificFacts is part of core, not directly used in UI display types here
};
type StorylineCard = {
cardId: string;
stressorId: string;
title: string;
explanation: string;
example: string;
};
type PipelineStepOutput = {
stepId: string;
stepName: string;
output: any;
};
export default function Home() {
const [step, setStep] = useState(0);
const pipelineSteps = trace.steps;
const finalOutput = trace.finalOutput as StorylineCard;
const [selectedStressorId, setSelectedStressorId] = useState<'radiation' | 'microgravity' | 'isolation'>('radiation'); // For UI selection indication
const handleReplay = () => {
let i = 0;
const interval = setInterval(() => {
i++;
setStep(i);
if (i >= pipelineSteps.length) {
clearInterval(interval);
}
}, 300);
};
const displayedSteps = pipelineSteps.slice(0, step);
return (
<div style={{ fontFamily: 'sans-serif', padding: '2rem', maxWidth: '800px', margin: 'auto' }}>
<header style={{ borderBottom: '1px solid #eee', paddingBottom: '1rem', marginBottom: '2rem' }}>
<h1 style={{ fontSize: '2rem' }}>Stressor Storylines</h1>
<p>宇宙のストレス要因が体に与える影響を、AIが生成した物語で学びま
...