/* ========================================================= 英文解釈ラボ — app (React, mounts #app) ========================================================= */ const { useState, useMemo } = React; const K = window.KAISHAKU; const R = K.roles; /* ---------- shared bits ---------- */ function RoleChip({ role, sub, big }) { const m = R[role]; return ( {m.key}{sub ? ·{sub} : null} {m.jp} ); } function Legend() { return (
{Object.values(R).map(m => ( {m.key} {m.jp} ))}
); } function TypeBadge({ s }) { return ( {s.typeJp} {s.type.split('').join(' ')} ); } /* ---------- INTERACTIVE ---------- */ function Interactive() { const [si, setSi] = useState(0); const [show, setShow] = useState(false); const [sel, setSel] = useState(null); const [trans, setTrans] = useState(false); const s = K.sentences[si]; function pick(i) { setSi(i); setSel(null); setShow(false); setTrans(false); } const active = sel != null ? s.chunks[sel] : null; return (

語句をクリックして、文の骨格を体感する。

英文をタップすると、それぞれの語句が文の中で果たす役割(SVOC)と訳が浮かび上がります。「構造を表示」で全体の設計図を一気に確認。

{K.sentences.map((x, i) => ( ))}
{s.level} {s.theme}
{s.chunks.map((c, i) => { const m = R[c.role]; const on = sel === i; const reveal = show || on; return ( ); })}
{trans &&
{s.jp}
}
{active ? (
{active.text}
{active.jp}

{active.note}

) : (
語句をクリックすると、役割・訳・解説が表示されます。
)}
読解のコツ

{s.point}

); } /* ---------- ARTICLE ---------- */ function Article() { const [si, setSi] = useState(0); const s = K.sentences[si]; return (

例文を構造で色分けして、一文を分解する。

骨格(SVOC)を色で示し、語句ごとに「訳」と「文法の理由」を順に読み解く記事形式。じっくり腰を据えて理解したい人へ。

{K.sentences.map((x, i) => ( ))}
{s.level} {s.theme}
{s.chunks.map((c, i) => { const m = R[c.role]; return ( {m.key}{c.sub?'·'+c.sub:''} {c.text} ); })}
{s.jp}
語句ごとの読み解き
{s.chunks.map((c, i) => (
{c.text} — {c.jp}

{c.note}

))}
読解のコツ

{s.point}

); } /* ---------- QUIZ ---------- */ function Quiz() { const [qi, setQi] = useState(0); const [ans, setAns] = useState(null); const q = K.quizzes[qi]; const answered = ans != null; function choose(id) { if (!answered) setAns(id); } function next() { setQi((qi + 1) % K.quizzes.length); setAns(null); } function reset() { setAns(null); } return (

なぜ「その選択肢」が正解か?

複雑に見える問題も、文の型と品詞の役割で仕分ければ、正解の根拠が明確になります。選んでから理由を確認しましょう。

{K.quizzes.map((_, i) => ( ))} Q{qi + 1} / {K.quizzes.length}
{q.stemBefore && {q.stemBefore} } {answered ? K.quizzes[qi].choices.find(c=>c.correct).word : '_____'} {q.stemAfter}
Q.{q.prompt} {q.typeHint}
{q.choices.map(c => { let cls = 'choice'; if (answered) { if (c.correct) cls += ' correct'; else if (c.id === ans) cls += ' wrong'; else cls += ' dim'; } return ( ); })}
{answered && (
解説

{q.explain}

)}
); } /* ---------- APP ---------- */ const MODES = [ { key: 'interactive', label: 'インタラクティブ', sub: 'クリックで構造を体感' }, { key: 'article', label: '記事型', sub: '色分けで一文を分解' }, { key: 'quiz', label: 'クイズ型', sub: '4択で根拠を確認' }, ]; function App() { const [mode, setMode] = useState('interactive'); return (

英文解釈ラボ

英語は「単語」ではなく
「構造」で読む。

文の型(5文型)と品詞の役割が見えれば、長い一文もパズルのように明快になる。3つのモードで、構造で読む力を鍛えるトレーニングページです。

{MODES.map(m => ( ))}
{mode === 'interactive' && } {mode === 'article' &&
} {mode === 'quiz' && }

TOEIC Business Training

「読み流す」から卒業し、
理詰めで解く快感を。

🔗 無料トライアルはこちら

biz-toeic990.com

); } ReactDOM.createRoot(document.getElementById('app')).render();