<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>🐙英単語スペル練習 アーカイブ - じゅにさん子育てブログ</title>
	<atom:link href="https://jouniorsankosodate.com/category/learn/english-flash/takota-spell/feed/" rel="self" type="application/rss+xml" />
	<link>https://jouniorsankosodate.com/category/learn/english-flash/takota-spell/</link>
	<description>受験のその先へ｜子どもたちのより良い未来を育てる</description>
	<lastBuildDate>Sun, 19 Apr 2026 06:33:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://jouniorsankosodate.com/wp-content/uploads/2025/02/cropped-image0-1-32x32.jpeg</url>
	<title>🐙英単語スペル練習 アーカイブ - じゅにさん子育てブログ</title>
	<link>https://jouniorsankosodate.com/category/learn/english-flash/takota-spell/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>🐙タコタのスペルレッスン｜不規則動詞をマスター【後編】</title>
		<link>https://jouniorsankosodate.com/takota-irregular-b/</link>
					<comments>https://jouniorsankosodate.com/takota-irregular-b/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 21 Feb 2026 13:16:00 +0000</pubDate>
				<category><![CDATA[🏫中学英語シリーズ]]></category>
		<category><![CDATA[🐙英単語スペル練習]]></category>
		<category><![CDATA[#スペル練習]]></category>
		<category><![CDATA[#テスト対策]]></category>
		<category><![CDATA[＃フラッシュ]]></category>
		<category><![CDATA[#不規則動詞]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=3604</guid>

					<description><![CDATA[<p>🐙 TacoTa Spell 不規則動詞｜過去形スペル（後編） 音声は 過去形 が流れるよ（ヒント） 1 / 23 ✅ 正解済み：0 / 23 🔀 🔁 🟢 穴抜きヒント：ON 正解で自動で次へ 現在形 mean 過去形（ [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-irregular-b/">🐙タコタのスペルレッスン｜不規則動詞をマスター【後編】</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!-- 🐙 タコタ｜不規則動詞 後編（23語）カード型・音声=過去形ヒント・UK女性優先・全問正解でクリア -->
<div id="takotaSpellCardB" class="tsc-wrap">
  <div class="tsc-card">
    <div class="tsc-top">
      <div>
        <div class="tsc-badge">🐙 TacoTa Spell</div>
        <h2 class="tsc-title">不規則動詞｜過去形スペル（後編）</h2>
        <div class="tsc-sub">音声は <b>過去形</b> が流れるよ（ヒント）</div>
      </div>
      <div class="tsc-progress">
        <div class="tsc-count"><span id="tscBIdx">1</span> / <span id="tscBTotal">23</span></div>
        <div class="tsc-done">✅ 正解済み：<span id="tscBDone">0</span> / <span id="tscBTotal2">23</span></div>
        <div class="tsc-minirow">
          <button class="tsc-btn tsc-btn-ghost" id="tscBShuffle">🔀</button>
          <button class="tsc-btn tsc-btn-ghost" id="tscBReset">🔁</button>
        </div>
      </div>
    </div>

    <div class="tsc-modeRow">
      <button class="tsc-chip" id="tscBMode">🟢 穴抜きヒント：ON</button>
      <label class="tsc-toggle">
        <input type="checkbox" id="tscBAutoNext" checked>
        <span>正解で自動で次へ</span>
      </label>
    </div>

    <div id="tscBGameArea">
      <div class="tsc-qArea">
        <div class="tsc-qLabel">現在形</div>
        <div class="tsc-qWord" id="tscBBase">mean</div>

        <div class="tsc-qLabel">過去形（ヒント表示）</div>
        <div class="tsc-hint" id="tscBHint">m _ a n t</div>
      </div>

      <div class="tsc-inputRow">
        <input id="tscBInput" class="tsc-input" inputmode="latin" autocomplete="off" autocapitalize="none" spellcheck="false"
               placeholder="過去形を入力（例: meant）">
        <button class="tsc-btn" id="tscBCheck">✅ 判定</button>
      </div>

      <div class="tsc-actions">
        <button class="tsc-btn tsc-btn-ghost" id="tscBAudio">🔊 ヒント音声（過去形）</button>
        <button class="tsc-btn tsc-btn-ghost" id="tscBShow">👀 こたえ表示</button>
        <button class="tsc-btn" id="tscBNext">次へ ▶︎</button>
      </div>

      <div class="tsc-feedback" id="tscBFb">ここに結果が出るよ。</div>
    </div>

    <!-- ✅ クリア画面 -->
    <div id="tscBClear" class="tsc-clear" style="display:none;">
      <div class="tsc-clearInner">
        <div class="tsc-clearTitle">🎉 後編クリア！</div>
        <div class="tsc-clearText">全<span id="tscBTotal3">23</span>語コンプリート！</div>
        <div class="tsc-clearBtns">
          <button class="tsc-btn" id="tscBPlayAgain">🔁 もう一回（同じ順番）</button>
          <button class="tsc-btn tsc-btn-ghost" id="tscBPlayShuffle">🔀 シャッフルして再挑戦</button>
          <!-- 前編ページURLに変えてね -->
          <a class="tsc-btn tsc-btn-ghost" href="/takota-irregular-a/" style="text-decoration:none;display:inline-block;">◀︎ 前編へ</a>
        </div>
      </div>
    </div>

    <details class="tsc-note">
      <summary>使い方（おすすめ）</summary>
      <ul>
        <li>まず「穴抜きON」＋「音声（過去形）」で思い出す</li>
        <li>慣れたら「穴抜きOFF」にして完全入力</li>
        <li>スマホは「正解で自動で次へ」をONがおすすめ</li>
      </ul>
    </details>
  </div>
</div>

<!-- ※CSSは前編と同じ。後編ページにも同じCSSを貼ってOK -->
<style>
  .tsc-wrap{max-width:820px;margin:18px auto;padding:12px;}
  .tsc-card{
    border-radius:20px;padding:18px 16px;border:2px solid #e7e7ff;
    background:
      radial-gradient(1000px 240px at 10% 0%, rgba(120,92,255,.18), transparent 55%),
      radial-gradient(900px 260px at 90% 10%, rgba(0,196,255,.18), transparent 55%),
      #ffffff;
    box-shadow: 0 10px 30px rgba(0,0,0,.08);
    font-family: system-ui,-apple-system,"Hiragino Kaku Gothic ProN","Noto Sans JP","Segoe UI",sans-serif;
  }
  .tsc-top{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;}
  .tsc-badge{
    display:inline-block;padding:6px 10px;border-radius:999px;font-weight:800;
    background: rgba(120,92,255,.12);border:1px solid rgba(120,92,255,.25);
    color:#2b245f;font-size:13px;
  }
  .tsc-title{margin:8px 0 4px;font-size:20px;letter-spacing:.2px;}
  .tsc-sub{color:#374151;font-size:13.5px;line-height:1.4;}
  .tsc-progress{min-width:160px;text-align:right;}
  .tsc-count{font-weight:900;font-size:14px;color:#111827;}
  .tsc-done{margin-top:4px;font-weight:900;font-size:13px;color:#111827;}
  .tsc-minirow{display:flex;gap:8px;justify-content:flex-end;margin-top:8px;}

  .tsc-modeRow{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:14px 0 6px;}
  .tsc-chip{
    border:1px solid rgba(120,92,255,.35);
    background: rgba(120,92,255,.10);
    color:#1f1b4a;font-weight:900;padding:10px 12px;border-radius:999px;cursor:pointer;
  }
  .tsc-toggle{display:flex;gap:8px;align-items:center;font-weight:800;color:#111827;font-size:13.5px;}
  .tsc-toggle input{transform:scale(1.15);}

  .tsc-qArea{
    margin:10px 0 14px;padding:14px;border-radius:16px;
    background: rgba(255,255,255,.8);border:1px solid #e5e7eb;
  }
  .tsc-qLabel{font-size:12px;color:#6b7280;font-weight:900;margin-top:6px;}
  .tsc-qWord{
    font-size:34px;font-weight:1000;letter-spacing:.6px;color:#111827;margin:2px 0 8px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  }
  .tsc-hint{
    font-size:22px;font-weight:1000;letter-spacing:2px;color:#1f2937;margin-top:6px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  }

  .tsc-inputRow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
  .tsc-input{
    flex:1;min-width:200px;padding:12px 12px;border-radius:14px;border:2px solid #e5e7eb;
    font-size:18px;background:#fff;
  }
  .tsc-input:focus{outline:none;border-color:rgba(120,92,255,.55);box-shadow:0 0 0 4px rgba(120,92,255,.12);}

  .tsc-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px;}
  .tsc-btn{
    border:none;border-radius:14px;padding:11px 12px;font-weight:1000;cursor:pointer;
    background: linear-gradient(135deg, rgba(120,92,255,.95), rgba(0,196,255,.90));
    color:#fff;box-shadow: 0 10px 18px rgba(120,92,255,.18);
  }
  .tsc-btn:hover{filter:brightness(1.02);}
  .tsc-btn:active{transform:translateY(1px);}
  .tsc-btn-ghost{
    background:#fff;color:#111827;border:2px solid #e5e7eb;box-shadow:none;
  }

  .tsc-feedback{
    margin-top:12px;padding:12px 12px;border-radius:14px;border:1px dashed #d1d5db;
    background: rgba(255,255,255,.85);font-weight:1000;color:#111827;
  }
  .tsc-ok{color:#059669;}
  .tsc-ng{color:#dc2626;}

  .tsc-clear{
    margin-top:14px;padding:14px;border-radius:16px;border:2px solid rgba(120,92,255,.25);
    background: rgba(255,255,255,.9);text-align:center;
  }
  .tsc-clearInner{padding:14px;border-radius:14px;background:rgba(120,92,255,.08);}
  .tsc-clearTitle{font-size:24px;font-weight:1000;color:#111827;margin-bottom:6px;}
  .tsc-clearText{font-size:14.5px;font-weight:900;color:#374151;line-height:1.6;}
  .tsc-clearBtns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:12px;}

  .tsc-note{margin-top:10px;color:#374151;}
  .tsc-note summary{cursor:pointer;font-weight:900;}
  .tsc-note ul{margin:8px 0 0 18px;}

  @media (max-width:520px){
    .tsc-qWord{font-size:30px;}
    .tsc-hint{font-size:20px;}
    .tsc-progress{text-align:left;}
  }
</style>

<script>
(() => {
  const WORDS = [
    {base:"mean", past:"meant"},
    {base:"meet", past:"met"},
    {base:"put", past:"put"},
    {base:"read", past:"read"},
    {base:"ride", past:"rode"},
    {base:"run", past:"ran"},
    {base:"say", past:"said"},
    {base:"see", past:"saw"},
    {base:"set", past:"set"},
    {base:"shoot", past:"shot"},
    {base:"sing", past:"sang"},
    {base:"sit", past:"sat"},
    {base:"sleep", past:"slept"},
    {base:"speak", past:"spoke"},
    {base:"stand", past:"stood"},
    {base:"swim", past:"swam"},
    {base:"take", past:"took"},
    {base:"teach", past:"taught"},
    {base:"tell", past:"told"},
    {base:"think", past:"thought"},
    {base:"understand", past:"understood"},
    {base:"wear", past:"wore"},
    {base:"win", past:"won"},
    {base:"write", past:"wrote"},
  ];

  const elIdx = document.getElementById("tscBIdx");
  const elTotal = document.getElementById("tscBTotal");
  const elTotal2 = document.getElementById("tscBTotal2");
  const elTotal3 = document.getElementById("tscBTotal3");
  const elDone = document.getElementById("tscBDone");

  const elBase = document.getElementById("tscBBase");
  const elHint = document.getElementById("tscBHint");
  const elInput = document.getElementById("tscBInput");
  const elFb = document.getElementById("tscBFb");

  const btnMode = document.getElementById("tscBMode");
  const btnShuffle = document.getElementById("tscBShuffle");
  const btnReset = document.getElementById("tscBReset");
  const btnCheck = document.getElementById("tscBCheck");
  const btnNext = document.getElementById("tscBNext");
  const btnAudio = document.getElementById("tscBAudio");
  const btnShow = document.getElementById("tscBShow");
  const autoNext = document.getElementById("tscBAutoNext");

  const gameArea = document.getElementById("tscBGameArea");
  const clearArea = document.getElementById("tscBClear");
  const btnPlayAgain = document.getElementById("tscBPlayAgain");
  const btnPlayShuffle = document.getElementById("tscBPlayShuffle");

  const STORAGE_KEY = "takota_spell_B_v1";
  const state = { order: [], i: 0, hintOn: true, showAnswer: false, cleared: {} };

  function save(){ try{ localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); }catch(e){} }
  function load(){
    try{
      const raw = localStorage.getItem(STORAGE_KEY);
      if(!raw) return;
      const obj = JSON.parse(raw);
      if(obj && typeof obj === "object") Object.assign(state, obj);
      if(!state.cleared || typeof state.cleared !== "object") state.cleared = {};
    }catch(e){}
  }
  function shuffle(arr){ for(let k=arr.length-1;k>0;k--){ const j=Math.floor(Math.random()*(k+1)); [arr[k],arr[j]]=[arr[j],arr[k]]; } return arr; }
  function ensureOrder(){ if(Array.isArray(state.order) && state.order.length===WORDS.length) return; state.order=shuffle(WORDS.map((_,idx)=>idx)); }
  function cur(){ ensureOrder(); return WORDS[state.order[state.i]]; }
  function norm(s){ return (s||"").trim().toLowerCase(); }
  function isCorrect(input,past){ const val=norm(input); const ans=past.split("/").map(x=>norm(x)); return ans.includes(val); }

  function maskWord(w){
    const chars=[...w];
    const alphaIdx=chars.map((c,idx)=>/[a-zA-Z]/.test(c)?idx:-1).filter(x=>x>=0);
    if(alphaIdx.length<=2) return w;
    const first=alphaIdx[0], last=alphaIdx[alphaIdx.length-1];
    const mid=alphaIdx.slice(1,-1);
    const hideN=Math.max(1,Math.floor(mid.length*0.55));
    const pick=shuffle([...mid]).slice(0,hideN);
    const hide=new Set(pick);
    return chars.map((c,idx)=> (idx===first||idx===last)?c:(hide.has(idx)?"_":c)).join("");
  }
  function makeHint(past){
    const parts=past.split("/").map(s=>s.trim());
    return parts.map(p=>maskWord(p)).join(" / ");
  }

  function pickUKVoice(){
    const voices=speechSynthesis.getVoices()||[];
    const uk=voices.filter(v=>(v.lang||"").toLowerCase().startsWith("en-gb"));
    if(!uk.length) return null;
    const prefer=["Google UK English Female","Sonia","Libby","Hazel","Susan","Serena","Kate","Emma"];
    for(const p of prefer){
      const v=uk.find(x=>(x.name||"").toLowerCase().includes(p.toLowerCase()));
      if(v) return v;
    }
    const female=uk.find(x=>(x.name||"").toLowerCase().includes("female"));
    return female||uk[0];
  }

  function speakPast(){
    const w=cur();
    // ✅ read（過去）は "red" と読ませる（端末差対策）
    let text=w.past.replace(/\s*\/\s*/g," or ");
    if (w.base === "read" && w.past.trim().toLowerCase() === "read") text = "red";
    const u=new SpeechSynthesisUtterance(text);
    u.lang="en-GB";
    const v=pickUKVoice(); if(v) u.voice=v;
    try{ speechSynthesis.cancel(); }catch(e){}
    speechSynthesis.speak(u);
  }

  function clearedCount(){ return Object.keys(state.cleared||{}).length; }
  function showClearIfDone(){
    const done=clearedCount();
    if(done>=WORDS.length){
      gameArea.style.display="none"; clearArea.style.display="block";
      elDone.textContent=WORDS.length.toString();
      save(); return true;
    }
    gameArea.style.display="block"; clearArea.style.display="none"; return false;
  }

  function render(){
    const w=cur();
    elTotal.textContent=WORDS.length.toString();
    elTotal2.textContent=WORDS.length.toString();
    elTotal3.textContent=WORDS.length.toString();

    elIdx.textContent=(state.i+1).toString();
    elBase.textContent=w.base;

    const done=clearedCount();
    elDone.textContent=done.toString();

    if(state.showAnswer){
      elHint.textContent=w.past; elHint.style.opacity="1";
    }else{
      elHint.textContent=state.hintOn?makeHint(w.past):"（ヒントなし）";
      elHint.style.opacity=state.hintOn?"1":".65";
    }

    btnMode.textContent=state.hintOn?"🟢 穴抜きヒント：ON":"⚪️ 穴抜きヒント：OFF（完全入力）";
    btnShow.textContent=state.showAnswer?"🙈 こたえ非表示":"👀 こたえ表示";

    elInput.value="";
    elInput.focus({preventScroll:true});
    elFb.className="tsc-feedback";
    elFb.textContent=`正解済み：${done} / ${WORDS.length}（Enterでも判定OK）`;

    save();
    showClearIfDone();
  }

  function next(){
    state.i=(state.i+1)%WORDS.length;
    state.showAnswer=false;
    render();
  }

  function check(){
    const w=cur();
    const input=elInput.value;
    if(norm(input).length===0){
      elFb.className="tsc-feedback tsc-ng";
      elFb.textContent="入力してね！";
      return false;
    }
    const ok=isCorrect(input,w.past);
    if(ok){
      if(!state.cleared[w.base]) state.cleared[w.base]=true;
      const done=clearedCount();
      elDone.textContent=done.toString();
      elFb.className="tsc-feedback tsc-ok";
      elFb.textContent=`⭕ 正解！ 正解済み：${done} / ${WORDS.length}`;
      save();
      if(done>=WORDS.length){
        setTimeout(()=>{ showClearIfDone(); }, 300);
        return true;
      }
      if(autoNext.checked) setTimeout(next, 450);
      return true;
    }else{
      elFb.className="tsc-feedback tsc-ng";
      elFb.textContent="✖ ちがうかも… 音声（過去形）をヒントにしてもう一回！";
      return false;
    }
  }

  btnMode.addEventListener("click",()=>{ state.hintOn=!state.hintOn; state.showAnswer=false; render(); });
  btnShuffle.addEventListener("click",()=>{ state.order=shuffle(WORDS.map((_,idx)=>idx)); state.i=0; state.showAnswer=false; render(); });
  btnReset.addEventListener("click",()=>{
    if(!confirm("シャッフル順と表示をリセットする？（正解済みは残す）")) return;
    state.order=shuffle(WORDS.map((_,idx)=>idx)); state.i=0; state.hintOn=true; state.showAnswer=false; render();
  });
  btnCheck.addEventListener("click",check);
  btnNext.addEventListener("click",next);
  btnAudio.addEventListener("click",()=>{
    if(!("speechSynthesis" in window)){
      elFb.className="tsc-feedback tsc-ng";
      elFb.textContent="この端末は音声読み上げに対応していないかも…";
      return;
    }
    speakPast();
    elFb.className="tsc-feedback";
    elFb.textContent="🔊 過去形の音声を流したよ（ヒント）";
  });
  btnShow.addEventListener("click",()=>{ state.showAnswer=!state.showAnswer; render(); });
  elInput.addEventListener("keydown",(e)=>{ if(e.key==="Enter"){ e.preventDefault(); check(); }});

  btnPlayAgain.addEventListener("click",()=>{ state.cleared={}; state.i=0; state.showAnswer=false; render(); });
  btnPlayShuffle.addEventListener("click",()=>{ state.cleared={}; state.order=shuffle(WORDS.map((_,idx)=>idx)); state.i=0; state.showAnswer=false; render(); });

  load(); ensureOrder(); if(state.i<0||state.i>=WORDS.length) state.i=0; render();
})();
</script>



<p></p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-irregular-b/">🐙タコタのスペルレッスン｜不規則動詞をマスター【後編】</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/takota-irregular-b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🐙タコタのスペルレッスン｜不規則動詞をマスター【前編】</title>
		<link>https://jouniorsankosodate.com/takota-irregular-a/</link>
					<comments>https://jouniorsankosodate.com/takota-irregular-a/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 21 Feb 2026 13:15:02 +0000</pubDate>
				<category><![CDATA[🏫中学英語シリーズ]]></category>
		<category><![CDATA[🐙英単語スペル練習]]></category>
		<category><![CDATA[#スペル練習]]></category>
		<category><![CDATA[＃フラッシュ]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=3597</guid>

					<description><![CDATA[<p>🐙 TacoTa Spell 不規則動詞｜過去形スペル（前編） 音声は 過去形 が流れるよ（ヒント） 1 / 23 ✅ 正解済み：0 / 23 🔀 🔁 🟢 穴抜きヒント：ON 正解で自動で次へ 現在形 go 過去形（ヒン [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-irregular-a/">🐙タコタのスペルレッスン｜不規則動詞をマスター【前編】</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!-- 🐙 タコタ｜不規則動詞 前編（23語）カード型・音声=過去形ヒント・UK女性優先・全問正解でクリア -->
<div id="takotaSpellCardA" class="tsc-wrap">
  <div class="tsc-card">
    <div class="tsc-top">
      <div>
        <div class="tsc-badge">🐙 TacoTa Spell</div>
        <h2 class="tsc-title">不規則動詞｜過去形スペル（前編）</h2>
        <div class="tsc-sub">音声は <b>過去形</b> が流れるよ（ヒント）</div>
      </div>
      <div class="tsc-progress">
        <div class="tsc-count"><span id="tscAIdx">1</span> / <span id="tscATotal">23</span></div>
        <div class="tsc-done">✅ 正解済み：<span id="tscADone">0</span> / <span id="tscATotal2">23</span></div>
        <div class="tsc-minirow">
          <button class="tsc-btn tsc-btn-ghost" id="tscAShuffle">🔀</button>
          <button class="tsc-btn tsc-btn-ghost" id="tscAReset">🔁</button>
        </div>
      </div>
    </div>

    <div class="tsc-modeRow">
      <button class="tsc-chip" id="tscAMode">🟢 穴抜きヒント：ON</button>
      <label class="tsc-toggle">
        <input type="checkbox" id="tscAAutoNext" checked>
        <span>正解で自動で次へ</span>
      </label>
    </div>

    <div id="tscAGameArea">
      <div class="tsc-qArea">
        <div class="tsc-qLabel">現在形</div>
        <div class="tsc-qWord" id="tscABase">go</div>

        <div class="tsc-qLabel">過去形（ヒント表示）</div>
        <div class="tsc-hint" id="tscAHint">w _ n t</div>
      </div>

      <div class="tsc-inputRow">
        <input id="tscAInput" class="tsc-input" inputmode="latin" autocomplete="off" autocapitalize="none" spellcheck="false"
               placeholder="過去形を入力（例: went）">
        <button class="tsc-btn" id="tscACheck">✅ 判定</button>
      </div>

      <div class="tsc-actions">
        <button class="tsc-btn tsc-btn-ghost" id="tscAAudio">🔊 ヒント音声（過去形）</button>
        <button class="tsc-btn tsc-btn-ghost" id="tscAShow">👀 こたえ表示</button>
        <button class="tsc-btn" id="tscANext">次へ ▶︎</button>
      </div>

      <div class="tsc-feedback" id="tscAFb">ここに結果が出るよ。</div>
    </div>

    <!-- ✅ クリア画面 -->
    <div id="tscAClear" class="tsc-clear" style="display:none;">
      <div class="tsc-clearInner">
        <div class="tsc-clearTitle">🎉 前編クリア！</div>
        <div class="tsc-clearText">全<span id="tscATotal3">23</span>語コンプリート！</div>
        <div class="tsc-clearBtns">
          <button class="tsc-btn" id="tscAPlayAgain">🔁 もう一回（同じ順番）</button>
          <button class="tsc-btn tsc-btn-ghost" id="tscAPlayShuffle">🔀 シャッフルして再挑戦</button>
          <!-- 後編ページURLに変えてね -->
          <a class="tsc-btn tsc-btn-ghost" href="/takota-irregular-b/" style="text-decoration:none;display:inline-block;">▶︎ 後編へ</a>
        </div>
      </div>
    </div>

    <details class="tsc-note">
      <summary>使い方（おすすめ）</summary>
      <ul>
        <li>まず「穴抜きON」＋「音声（過去形）」で思い出す</li>
        <li>慣れたら「穴抜きOFF」にして完全入力</li>
        <li>スマホは「正解で自動で次へ」をONがおすすめ</li>
      </ul>
    </details>
  </div>
</div>

<style>
  .tsc-wrap{max-width:820px;margin:18px auto;padding:12px;}
  .tsc-card{
    border-radius:20px;padding:18px 16px;border:2px solid #e7e7ff;
    background:
      radial-gradient(1000px 240px at 10% 0%, rgba(120,92,255,.18), transparent 55%),
      radial-gradient(900px 260px at 90% 10%, rgba(0,196,255,.18), transparent 55%),
      #ffffff;
    box-shadow: 0 10px 30px rgba(0,0,0,.08);
    font-family: system-ui,-apple-system,"Hiragino Kaku Gothic ProN","Noto Sans JP","Segoe UI",sans-serif;
  }
  .tsc-top{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;}
  .tsc-badge{
    display:inline-block;padding:6px 10px;border-radius:999px;font-weight:800;
    background: rgba(120,92,255,.12);border:1px solid rgba(120,92,255,.25);
    color:#2b245f;font-size:13px;
  }
  .tsc-title{margin:8px 0 4px;font-size:20px;letter-spacing:.2px;}
  .tsc-sub{color:#374151;font-size:13.5px;line-height:1.4;}
  .tsc-progress{min-width:160px;text-align:right;}
  .tsc-count{font-weight:900;font-size:14px;color:#111827;}
  .tsc-done{margin-top:4px;font-weight:900;font-size:13px;color:#111827;}
  .tsc-minirow{display:flex;gap:8px;justify-content:flex-end;margin-top:8px;}

  .tsc-modeRow{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:14px 0 6px;}
  .tsc-chip{
    border:1px solid rgba(120,92,255,.35);
    background: rgba(120,92,255,.10);
    color:#1f1b4a;font-weight:900;padding:10px 12px;border-radius:999px;cursor:pointer;
  }
  .tsc-toggle{display:flex;gap:8px;align-items:center;font-weight:800;color:#111827;font-size:13.5px;}
  .tsc-toggle input{transform:scale(1.15);}

  .tsc-qArea{
    margin:10px 0 14px;padding:14px;border-radius:16px;
    background: rgba(255,255,255,.8);border:1px solid #e5e7eb;
  }
  .tsc-qLabel{font-size:12px;color:#6b7280;font-weight:900;margin-top:6px;}
  .tsc-qWord{
    font-size:34px;font-weight:1000;letter-spacing:.6px;color:#111827;margin:2px 0 8px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  }
  .tsc-hint{
    font-size:22px;font-weight:1000;letter-spacing:2px;color:#1f2937;margin-top:6px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  }

  .tsc-inputRow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
  .tsc-input{
    flex:1;min-width:200px;padding:12px 12px;border-radius:14px;border:2px solid #e5e7eb;
    font-size:18px;background:#fff;
  }
  .tsc-input:focus{outline:none;border-color:rgba(120,92,255,.55);box-shadow:0 0 0 4px rgba(120,92,255,.12);}

  .tsc-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px;}
  .tsc-btn{
    border:none;border-radius:14px;padding:11px 12px;font-weight:1000;cursor:pointer;
    background: linear-gradient(135deg, rgba(120,92,255,.95), rgba(0,196,255,.90));
    color:#fff;box-shadow: 0 10px 18px rgba(120,92,255,.18);
  }
  .tsc-btn:hover{filter:brightness(1.02);}
  .tsc-btn:active{transform:translateY(1px);}
  .tsc-btn-ghost{
    background:#fff;color:#111827;border:2px solid #e5e7eb;box-shadow:none;
  }

  .tsc-feedback{
    margin-top:12px;padding:12px 12px;border-radius:14px;border:1px dashed #d1d5db;
    background: rgba(255,255,255,.85);font-weight:1000;color:#111827;
  }
  .tsc-ok{color:#059669;}
  .tsc-ng{color:#dc2626;}

  .tsc-clear{
    margin-top:14px;padding:14px;border-radius:16px;border:2px solid rgba(120,92,255,.25);
    background: rgba(255,255,255,.9);text-align:center;
  }
  .tsc-clearInner{padding:14px;border-radius:14px;background:rgba(120,92,255,.08);}
  .tsc-clearTitle{font-size:24px;font-weight:1000;color:#111827;margin-bottom:6px;}
  .tsc-clearText{font-size:14.5px;font-weight:900;color:#374151;line-height:1.6;}
  .tsc-clearBtns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:12px;}

  .tsc-note{margin-top:10px;color:#374151;}
  .tsc-note summary{cursor:pointer;font-weight:900;}
  .tsc-note ul{margin:8px 0 0 18px;}

  @media (max-width:520px){
    .tsc-qWord{font-size:30px;}
    .tsc-hint{font-size:20px;}
    .tsc-progress{text-align:left;}
  }
</style>

<script>
(() => {
  const WORDS = [
    {base:"be", past:"was / were"},
    {base:"buy", past:"bought"},
    {base:"catch", past:"caught"},
    {base:"come", past:"came"},
    {base:"cut", past:"cut"},
    {base:"dive", past:"dived / dove"},
    {base:"do", past:"did"},
    {base:"draw", past:"drew"},
    {base:"drink", past:"drank"},
    {base:"eat", past:"ate"},
    {base:"feel", past:"felt"},
    {base:"find", past:"found"},
    {base:"fly", past:"flew"},
    {base:"forget", past:"forgot"},
    {base:"get", past:"got"},
    {base:"go", past:"went"},
    {base:"grow", past:"grew"},
    {base:"have", past:"had"},
    {base:"hear", past:"heard"},
    {base:"hold", past:"held"},
    {base:"keep", past:"kept"},
    {base:"know", past:"knew"},
    {base:"make", past:"made"},
  ];

  const elIdx = document.getElementById("tscAIdx");
  const elTotal = document.getElementById("tscATotal");
  const elTotal2 = document.getElementById("tscATotal2");
  const elTotal3 = document.getElementById("tscATotal3");
  const elDone = document.getElementById("tscADone");

  const elBase = document.getElementById("tscABase");
  const elHint = document.getElementById("tscAHint");
  const elInput = document.getElementById("tscAInput");
  const elFb = document.getElementById("tscAFb");

  const btnMode = document.getElementById("tscAMode");
  const btnShuffle = document.getElementById("tscAShuffle");
  const btnReset = document.getElementById("tscAReset");
  const btnCheck = document.getElementById("tscACheck");
  const btnNext = document.getElementById("tscANext");
  const btnAudio = document.getElementById("tscAAudio");
  const btnShow = document.getElementById("tscAShow");
  const autoNext = document.getElementById("tscAAutoNext");

  const gameArea = document.getElementById("tscAGameArea");
  const clearArea = document.getElementById("tscAClear");
  const btnPlayAgain = document.getElementById("tscAPlayAgain");
  const btnPlayShuffle = document.getElementById("tscAPlayShuffle");

  const STORAGE_KEY = "takota_spell_A_v1";
  const state = { order: [], i: 0, hintOn: true, showAnswer: false, cleared: {} };

  function save(){ try{ localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); }catch(e){} }
  function load(){
    try{
      const raw = localStorage.getItem(STORAGE_KEY);
      if(!raw) return;
      const obj = JSON.parse(raw);
      if(obj && typeof obj === "object") Object.assign(state, obj);
      if(!state.cleared || typeof state.cleared !== "object") state.cleared = {};
    }catch(e){}
  }
  function shuffle(arr){ for(let k=arr.length-1;k>0;k--){ const j=Math.floor(Math.random()*(k+1)); [arr[k],arr[j]]=[arr[j],arr[k]]; } return arr; }
  function ensureOrder(){ if(Array.isArray(state.order) && state.order.length===WORDS.length) return; state.order=shuffle(WORDS.map((_,idx)=>idx)); }
  function cur(){ ensureOrder(); return WORDS[state.order[state.i]]; }
  function norm(s){ return (s||"").trim().toLowerCase(); }
  function isCorrect(input,past){ const val=norm(input); const ans=past.split("/").map(x=>norm(x)); return ans.includes(val); }

  function maskWord(w){
    const chars=[...w];
    const alphaIdx=chars.map((c,idx)=>/[a-zA-Z]/.test(c)?idx:-1).filter(x=>x>=0);
    if(alphaIdx.length<=2) return w;
    const first=alphaIdx[0], last=alphaIdx[alphaIdx.length-1];
    const mid=alphaIdx.slice(1,-1);
    const hideN=Math.max(1,Math.floor(mid.length*0.55));
    const pick=shuffle([...mid]).slice(0,hideN);
    const hide=new Set(pick);
    return chars.map((c,idx)=> (idx===first||idx===last)?c:(hide.has(idx)?"_":c)).join("");
  }
  function makeHint(past){
    const parts=past.split("/").map(s=>s.trim());
    return parts.map(p=>maskWord(p)).join(" / ");
  }

  function pickUKVoice(){
    const voices=speechSynthesis.getVoices()||[];
    const uk=voices.filter(v=>(v.lang||"").toLowerCase().startsWith("en-gb"));
    if(!uk.length) return null;
    const prefer=["Google UK English Female","Sonia","Libby","Hazel","Susan","Serena","Kate","Emma"];
    for(const p of prefer){
      const v=uk.find(x=>(x.name||"").toLowerCase().includes(p.toLowerCase()));
      if(v) return v;
    }
    const female=uk.find(x=>(x.name||"").toLowerCase().includes("female"));
    return female||uk[0];
  }
  function speakPast(){
    const w=cur();
    let text=w.past.replace(/\s*\/\s*/g," or ");
    const u=new SpeechSynthesisUtterance(text);
    u.lang="en-GB";
    const v=pickUKVoice(); if(v) u.voice=v;
    try{ speechSynthesis.cancel(); }catch(e){}
    speechSynthesis.speak(u);
  }

  function clearedCount(){ return Object.keys(state.cleared||{}).length; }
  function showClearIfDone(){
    const done=clearedCount();
    if(done>=WORDS.length){
      gameArea.style.display="none"; clearArea.style.display="block";
      elDone.textContent=WORDS.length.toString();
      save(); return true;
    }
    gameArea.style.display="block"; clearArea.style.display="none"; return false;
  }

  function render(){
    const w=cur();
    elTotal.textContent=WORDS.length.toString();
    elTotal2.textContent=WORDS.length.toString();
    elTotal3.textContent=WORDS.length.toString();

    elIdx.textContent=(state.i+1).toString();
    elBase.textContent=w.base;

    const done=clearedCount();
    elDone.textContent=done.toString();

    if(state.showAnswer){
      elHint.textContent=w.past; elHint.style.opacity="1";
    }else{
      elHint.textContent=state.hintOn?makeHint(w.past):"（ヒントなし）";
      elHint.style.opacity=state.hintOn?"1":".65";
    }

    btnMode.textContent=state.hintOn?"🟢 穴抜きヒント：ON":"⚪️ 穴抜きヒント：OFF（完全入力）";
    btnShow.textContent=state.showAnswer?"🙈 こたえ非表示":"👀 こたえ表示";

    elInput.value="";
    elInput.focus({preventScroll:true});
    elFb.className="tsc-feedback";
    elFb.textContent=`正解済み：${done} / ${WORDS.length}（Enterでも判定OK）`;

    save();
    showClearIfDone();
  }

  function next(){
    state.i=(state.i+1)%WORDS.length;
    state.showAnswer=false;
    render();
  }

  function check(){
    const w=cur();
    const input=elInput.value;
    if(norm(input).length===0){
      elFb.className="tsc-feedback tsc-ng";
      elFb.textContent="入力してね！";
      return false;
    }
    const ok=isCorrect(input,w.past);
    if(ok){
      if(!state.cleared[w.base]) state.cleared[w.base]=true;
      const done=clearedCount();
      elDone.textContent=done.toString();
      elFb.className="tsc-feedback tsc-ok";
      elFb.textContent=`⭕ 正解！ 正解済み：${done} / ${WORDS.length}`;
      save();
      if(done>=WORDS.length){
        setTimeout(()=>{ showClearIfDone(); }, 300);
        return true;
      }
      if(autoNext.checked) setTimeout(next, 450);
      return true;
    }else{
      elFb.className="tsc-feedback tsc-ng";
      elFb.textContent="✖ ちがうかも… 音声（過去形）をヒントにしてもう一回！";
      return false;
    }
  }

  btnMode.addEventListener("click",()=>{ state.hintOn=!state.hintOn; state.showAnswer=false; render(); });
  btnShuffle.addEventListener("click",()=>{ state.order=shuffle(WORDS.map((_,idx)=>idx)); state.i=0; state.showAnswer=false; render(); });
  btnReset.addEventListener("click",()=>{
    if(!confirm("シャッフル順と表示をリセットする？（正解済みは残す）")) return;
    state.order=shuffle(WORDS.map((_,idx)=>idx)); state.i=0; state.hintOn=true; state.showAnswer=false; render();
  });
  btnCheck.addEventListener("click",check);
  btnNext.addEventListener("click",next);
  btnAudio.addEventListener("click",()=>{
    if(!("speechSynthesis" in window)){
      elFb.className="tsc-feedback tsc-ng";
      elFb.textContent="この端末は音声読み上げに対応していないかも…";
      return;
    }
    speakPast();
    elFb.className="tsc-feedback";
    elFb.textContent="🔊 過去形の音声を流したよ（ヒント）";
  });
  btnShow.addEventListener("click",()=>{ state.showAnswer=!state.showAnswer; render(); });
  elInput.addEventListener("keydown",(e)=>{ if(e.key==="Enter"){ e.preventDefault(); check(); }});

  btnPlayAgain.addEventListener("click",()=>{ state.cleared={}; state.i=0; state.showAnswer=false; render(); });
  btnPlayShuffle.addEventListener("click",()=>{ state.cleared={}; state.order=shuffle(WORDS.map((_,idx)=>idx)); state.i=0; state.showAnswer=false; render(); });

  load(); ensureOrder(); if(state.i<0||state.i>=WORDS.length) state.i=0; render();
})();
</script>



<p></p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-irregular-a/">🐙タコタのスペルレッスン｜不規則動詞をマスター【前編】</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/takota-irregular-a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🐙タコタ式スペル練習② 行動・生活（20語）</title>
		<link>https://jouniorsankosodate.com/takota-spell-2-action-life/</link>
					<comments>https://jouniorsankosodate.com/takota-spell-2-action-life/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 06 Nov 2025 03:19:18 +0000</pubDate>
				<category><![CDATA[🐙英単語スペル練習]]></category>
		<category><![CDATA[🟦 英検3級 英語シリーズ]]></category>
		<category><![CDATA[🟩 英検4級 英語シリーズ]]></category>
		<category><![CDATA[#スペル練習]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[#英作文]]></category>
		<category><![CDATA[#英単語スペル練習]]></category>
		<category><![CDATA[#英単語学習]]></category>
		<category><![CDATA[#英検3級]]></category>
		<category><![CDATA[＃英検４級]]></category>
		<category><![CDATA[＃英検５級]]></category>
		<category><![CDATA[#英語学習アプリ]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=1773</guid>

					<description><![CDATA[<p>英語学習シリーズ： 📗5級フラッシュ 📘4級フラッシュ 🏫中学英単語 🐙タコタ式スペル練習 💬タコタ英語レッスン タコタ式スペル練習② 行動・生活（20語） go, play, study など “毎日の行動”を表す基本 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-2-action-life/">🐙タコタ式スペル練習② 行動・生活（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!-- 🔗 英語学習シリーズ 回遊ナビ（パンくず風） -->
<style>
.series-nav-wrap{
  max-width:920px;margin:18px auto 14px;padding:8px 10px;
  background:#f8fafc;border-radius:999px;
  box-shadow:0 2px 6px rgba(0,0,0,.04);
  font-size:12px;color:#475569;
}
.series-nav-label{
  font-weight:700;margin-right:6px;
  display:inline-flex;align-items:center;gap:4px;
}
.series-nav-label::before{content:"🚩";}
.series-nav-links{
  display:inline-flex;flex-wrap:wrap;gap:6px;
}
.series-nav-link{
  padding:4px 10px;border-radius:999px;
  background:#e5e7eb;text-decoration:none;
  color:#334155;display:inline-flex;align-items:center;gap:4px;
  transition:all .2s ease;
}
.series-nav-link span{font-size:14px;}
.series-nav-link:hover,
.series-nav-link:focus-visible{
  background:#dbeafe;color:#1f2937;
}
.series-nav-link.is-current{
  background:#bfdbfe;font-weight:700;color:#111827;
}
@media(max-width:480px){
  .series-nav-wrap{border-radius:16px;font-size:11px;}
}

/* 🔙 戻るボタン共通 */
.series-back-wrap{margin:18px 0 8px;text-align:center;}
.series-back-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:linear-gradient(135deg,#e0f2fe,#cffafe);
  color:#0f172a;font-weight:700;font-size:14px;text-decoration:none;
  box-shadow:0 3px 8px rgba(0,0,0,.08);
  transition:all .28s cubic-bezier(.22,.61,.36,1);
}
.series-back-btn span{font-size:18px;}
.series-back-btn:hover,
.series-back-btn:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 8px 14px rgba(0,0,0,.12);
  background:linear-gradient(135deg,#dbeafe,#bae6fd);
}
@media(max-width:480px){
  .series-back-btn{width:100%;font-size:15px;padding:12px 18px;}
}

/* ⏮⏭ レッスン前後ナビ */
.lesson-nav{
  display:flex;justify-content:center;gap:10px;
  margin:26px 0 6px;flex-wrap:wrap;
}
.lesson-nav a{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:#06b6d4;color:#fff;font-weight:700;
  text-decoration:none;font-size:14px;
  box-shadow:0 2px 8px rgba(0,0,0,.15);
  transition:.2s;
}
.lesson-nav a:hover{transform:translateY(-2px);box-shadow:0 6px 12px rgba(0,0,0,.18);}
</style>

<div class="series-nav-wrap">
  <span class="series-nav-label">英語学習シリーズ：</span>
  <div class="series-nav-links">
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken5-flash/"><span>📗</span>5級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken4-series/"><span>📘</span>4級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/junior-flash-list/"><span>🏫</span>中学英単語</a>
    <a class="series-nav-link is-current" href="https://jouniorsankosodate.com/takota-spell/"><span>🐙</span>タコタ式スペル練習</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/takota-lesson/"><span>💬</span>タコタ英語レッスン</a>
  </div>
</div>

<!-- 💚 タイトル・説明 -->
<div class="takota-desc" style="max-width:820px;margin:0 auto 18px;padding:16px 18px;background:#f0fdf4;border:2px solid #86efac;border-radius:14px;">
  <div style="display:flex;align-items:center;gap:10px;margin-bottom:8px;">
    <img decoding="async" src="https://jouniorsankosodate.com/wp-content/uploads/2025/11/5dca7321798b10fda919243235cffbda.jpg" alt="タコタ" style="width:58px;height:auto;border-radius:50%;">
    <h2 style="font-weight:900;font-size:1.4em;margin:0;">タコタ式スペル練習② 行動・生活（20語）</h2>
  </div>
  <p style="margin:0;line-height:1.8;font-size:15px;">
    go, play, study など “毎日の行動”を表す基本動詞20語。<br>
    「自分の一日」「週末の過ごし方」を書ける力をタコタと一緒に育てよう🐙🚶
  </p>
</div>

<!-- 🎧 タコタ音声 -->
<script>
let TAKOTA_VOICE=null;
function pickTakotaVoice(){
  const v=speechSynthesis.getVoices()||[];
  const pref=["en-US","en-GB","en-AU","en-CA","en-IN"];
  return v.find(x=>pref.includes(x.lang))
      || v.find(x=>(x.lang||"").startsWith("en"))
      || null;
}
if("speechSynthesis"in window){
  speechSynthesis.addEventListener("voiceschanged",()=>{TAKOTA_VOICE=pickTakotaVoice();});
}
function speakTakota(t){
  if(!("speechSynthesis"in window))return;
  if(!TAKOTA_VOICE)TAKOTA_VOICE=pickTakotaVoice();
  const u=new SpeechSynthesisUtterance(t);
  if(TAKOTA_VOICE){u.voice=TAKOTA_VOICE;u.lang=TAKOTA_VOICE.lang||"en-US";}
  else u.lang="en-US";
  u.rate=0.95;u.pitch=1.0;
  speechSynthesis.cancel();speechSynthesis.speak(u);
}
</script>

<!-- 🐙 スペル練習② 本体 -->
<div class="takota-strict" id="takotaStrict2">
  <style>
    .takota-strict{--ink:#111;--muted:#667;--bg:#f6f7fb;--card:#fff;--accent:#06b6d4;--ok:#16a34a;--ng:#ef4444}
    .takota-strict{max-width:820px;margin:16px auto;padding:16px;background:var(--bg);border-radius:16px;color:var(--ink);}
    .tk-card{background:var(--card);border-radius:16px;padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.06);}
    .tk-head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;}
    .tk-title{font-size:clamp(18px,2.6vw,22px);font-weight:900;margin:0;}
    .tk-problem{font-size:clamp(20px,2.8vw,24px);font-weight:900;margin:6px 0 0;}
    .tk-wordprev{font-size:clamp(18px,2.6vw,22px);margin-top:6px;font-weight:800;opacity:.95;}
    .tk-ime{font-size:13px;color:#b91c1c;display:none;margin-top:6px;}
    .tk-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
    .tk-slots{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0;}
    .tk-slot{width:46px;height:54px;border:2px solid #e5e7eb;border-radius:12px;
      display:grid;place-items:center;font-size:24px;font-weight:800;}
    .tk-slot.filled{border-color:#cbd5e1;background:#ffffff;}
    .tk-slot.error{border-color:var(--ng);animation:shake .18s linear 0s 2;}
    @keyframes shake{
      0%,100%{transform:translateX(0);}
      25%{transform:translateX(-2px);}
      50%{transform:translateX(2px);}
      75%{transform:translateX(-2px);}
    }
    .tk-keys{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;}
    .tk-key{padding:10px 12px;border-radius:10px;border:1px solid #e5e7eb;
      background:#fff;font-weight:800;cursor:pointer;}
    .tk-key[disabled]{opacity:.5;cursor:not-allowed;}
    .tk-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;}
    .tk-btn{padding:10px 14px;border-radius:12px;border:0;
      background:var(--accent);color:#fff;font-weight:800;cursor:pointer;}
    .tk-btn.ghost{background:#fff;color:#111;border:1px solid #e5e7eb;}
    .tk-btn.warn{background:#f59e0b;}
    .tk-btn.ok{background:var(--ok);}
    .tk-msg{font-weight:800;margin:8px 0;}
    .tk-msg.ok{color:var(--ok);}
    .tk-msg.ng{color:var(--ng);}
    .tk-progress{height:8px;background:#e5e7eb;border-radius:999px;
      overflow:hidden;margin-top:10px;}
    .tk-bar{height:100%;width:0;background:var(--accent);}
    .tk-mini{font-size:12px;color:var(--muted);}
  </style>

  <div class="tk-card">
    <div class="tk-head">
      <div>
        <div class="tk-title">タコタ式スペル練習② 行動・生活</div>
        <div class="tk-problem" id="tkProblem2">問題：—</div>
        <div class="tk-wordprev" id="tkWordPrev2"></div>
        <div class="tk-ime" id="tkImeWarn2">※ 日本語入力かも。キーボードを<strong>半角英数</strong>にしてね。</div>
      </div>
      <div class="tk-row">
        <button class="tk-btn ghost" id="speakBtn2">🔊 読む</button>
        <button class="tk-btn ghost" id="revealBtn2">🙈 隠す</button>
        <button class="tk-btn ghost" id="hintBtn2">ヒント</button>
        <button class="tk-btn warn" id="resetBtn2">リセット</button>
        <button class="tk-btn" id="restartBtn2" style="background:#334155">はじめから</button>
      </div>
    </div>

    <div class="tk-slots" id="slots2"></div>
    <div class="tk-keys" id="keys2"></div>

    <div class="tk-btns">
      <button class="tk-btn ghost" id="skipBtn2">スキップ</button>
      <button class="tk-btn ok" id="nextBtn2" disabled>つぎへ</button>
    </div>

    <div class="tk-msg" id="tkMsg2"></div>
    <div class="tk-progress"><div class="tk-bar" id="bar2"></div></div>
    <div class="tk-mini"><span id="count2">0</span> / <span id="total2">0</span></div>
  </div>
</div>

<script>
(() => {
  const WORDS = [
    {word:"go",jp:"行く"},{word:"come",jp:"来る"},{word:"play",jp:"遊ぶ／（スポーツを）する"},
    {word:"study",jp:"勉強する"},{word:"make",jp:"作る"},{word:"take",jp:"取る／連れていく"},
    {word:"do",jp:"する"},{word:"have",jp:"持っている／食べる"},{word:"eat",jp:"食べる"},
    {word:"drink",jp:"飲む"},{word:"read",jp:"読む"},{word:"watch",jp:"見る"},
    {word:"listen",jp:"聞く"},{word:"write",jp:"書く"},{word:"open",jp:"開ける"},
    {word:"close",jp:"閉める"},{word:"start",jp:"始める"},{word:"finish",jp:"終える"},
    {word:"visit",jp:"訪れる"},{word:"work",jp:"働く／作動する"}
  ];
  const REVEAL=true; const KEY='takota_strict_set2_v2';
  const speak = speakTakota;

  const $=id=>document.getElementById(id);
  const tkProblem=$('tkProblem2'),tkWordPrev=$('tkWordPrev2'),tkImeWarn=$('tkImeWarn2');
  const slotsEl=$('slots2'),keysEl=$('keys2');
  const hintBtn=$('hintBtn2'),resetBtn=$('resetBtn2'),restartBtn=$('restartBtn2');
  const nextBtn=$('nextBtn2'),skipBtn=$('skipBtn2'),speakBtn=$('speakBtn2'),revealBtn=$('revealBtn2');
  const tkMsg=$('tkMsg2'),bar=$('bar2'),count=$('count2'),total=$('total2');

  let state;try{state=JSON.parse(localStorage.getItem(KEY))||{i:0,reveal:REVEAL}}catch(_){state={i:0,reveal:REVEAL}}
  if(state.i>=WORDS.length)state.i=0;
  let cur=null,idx=0,locked=[],inputs=[];

  function prog(solved=false){
    total.textContent=WORDS.length;
    if(solved&&state.i===WORDS.length-1){
      count.textContent=WORDS.length;bar.style.width='100%';return;
    }
    count.textContent=Math.min(state.i+1,WORDS.length);
    bar.style.width=Math.round((state.i/WORDS.length)*100)+'%';
  }
  function slots(w){
    slotsEl.innerHTML='';inputs=[];
    locked=Array.from({length:w.length},()=> '');
    for(let i=0;i<w.length;i++){
      const el=document.createElement('div');
      el.className='tk-slot';el.textContent='•';
      el.addEventListener('click',()=>{idx=i;active();});
      slotsEl.appendChild(el);inputs.push(el);
    }
    idx=0;active();
  }
  function active(){
    inputs.forEach((el,i)=>{el.style.outline=(i===idx)?'3px solid rgba(14,165,233,.35)':'none';});
  }
  function keys(w){
    keysEl.innerHTML='';
    [...new Set(w.toLowerCase().split(''))].sort().forEach(ch=>{
      const b=document.createElement('button');
      b.className='tk-key';b.textContent=ch;
      b.addEventListener('click',()=>put(ch));
      keysEl.appendChild(b);
    });
  }
  function preview(){
    if(state.reveal){tkWordPrev.textContent=cur.word;revealBtn.textContent='🙈 隠す';}
    else{tkWordPrev.textContent='•'.repeat(cur.word.length);revealBtn.textContent='👁 単語表示';}
  }
  function show(i){
    cur=WORDS[i];
    tkProblem.textContent='問題：'+cur.jp;
    tkMsg.textContent='';
    slots(cur.word);keys(cur.word);preview();
    nextBtn.disabled=true;prog(false);
  }
  function done(){
    if(locked.join('')===cur.word.toLowerCase()){
      tkMsg.textContent='🎉 正解！ Good job!';
      tkMsg.className='tk-msg ok';
      nextBtn.disabled=false;prog(true);return true;
    }
    return false;
  }
  function put(chRaw){
    const t=cur.word.toLowerCase();
    if(idx>=t.length)return;
    const ch=(chRaw||'').toLowerCase();
    const exp=t[idx];
    if(ch===exp){
      locked[idx]=exp;
      inputs[idx].textContent=exp;
      inputs[idx].classList.add('filled');
      idx=Math.min(idx+1,t.length-1);
      active();tkImeWarn.style.display='none';
      done();
    }else{
      inputs[idx].classList.add('error');
      setTimeout(()=>inputs[idx].classList.remove('error'),220);
      tkMsg.textContent='❌ ちがうよ';
      tkMsg.className='tk-msg ng';
    }
  }
  document.addEventListener('keydown',e=>{
    if(!cur)return;
    const k=e.key;
    if(k==='Backspace'){
      if(locked[idx]){
        locked[idx]='';
        inputs[idx].textContent='•';
        inputs[idx].classList.remove('filled');
        tkMsg.textContent='';
      }else if(idx>0){
        idx--;active();
        locked[idx]='';
        inputs[idx].textContent='•';
        inputs[idx].classList.remove('filled');
      }
      e.preventDefault();return;
    }
    if(k.length===1){
      if(!/[a-zA-Z]/.test(k)){
        tkImeWarn.style.display='block';return;
      }
      tkImeWarn.style.display='none';
      put(k);e.preventDefault();return;
    }
    if(k==='Enter'&&!nextBtn.disabled){next();}
  });
  function reset(){slots(cur.word);tkMsg.textContent='';nextBtn.disabled=true;}
  function restart(){state.i=0;save();show(state.i);}
  function hint(){
    const t=cur.word.toLowerCase();
    const n=t.length>=6?2:1;
    for(let i=0;i<n;i++){
      if(!locked[i]){idx=i;active();put(t[i]);}
    }
  }
  function skip(){show(state.i);save();}
  function next(){
    state.i++;save();
    if(state.i>=WORDS.length){
      tkMsg.textContent='🎉 全問クリア！おめでとう！';
      tkMsg.className='tk-msg ok';
      nextBtn.disabled=true;
      count.textContent=WORDS.length;
      bar.style.width='100%';return;
    }
    show(state.i);
  }
  function save(){localStorage.setItem(KEY,JSON.stringify(state));}

  hintBtn.addEventListener('click',hint);
  resetBtn.addEventListener('click',reset);
  restartBtn.addEventListener('click',restart);
  skipBtn.addEventListener('click',skip);
  nextBtn.addEventListener('click',next);
  speakBtn.addEventListener('click',()=>speak(cur.word));
  revealBtn.addEventListener('click',()=>{
    state.reveal=!state.reveal;save();preview();
  });

  show(state.i);
})();
</script>

<!-- ⏮⏭ 前後レッスンナビ＋一覧 -->
<div class="lesson-nav">
  <a href="https://jouniorsankosodate.com/takota-spell-1-feelings-thoughts/">← レッスン① 感情・思考へ</a>
  <a href="https://jouniorsankosodate.com/takota-spell-3-school-family/">▶ レッスン③ 学校・友達へ</a>
</div>
<div class="series-back-wrap">
  <a class="series-back-btn" href="https://jouniorsankosodate.com/takota-spell/">
    <span>🐙</span>タコタ式スペル練習 一覧にもどる
  </a>
</div>

<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-2-action-life/">🐙タコタ式スペル練習② 行動・生活（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/takota-spell-2-action-life/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🐙 タコタ式スペル練習⑤ つなぎ・前置詞・形容詞（20語）</title>
		<link>https://jouniorsankosodate.com/takota-spell-5-link-prep-adj/</link>
					<comments>https://jouniorsankosodate.com/takota-spell-5-link-prep-adj/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 06 Nov 2025 03:18:58 +0000</pubDate>
				<category><![CDATA[🐙英単語スペル練習]]></category>
		<category><![CDATA[🟦 英検3級 英語シリーズ]]></category>
		<category><![CDATA[🟩 英検4級 英語シリーズ]]></category>
		<category><![CDATA[#スペル練習]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[#英作文]]></category>
		<category><![CDATA[#英単語スペル練習]]></category>
		<category><![CDATA[#英単語学習]]></category>
		<category><![CDATA[#英検3級]]></category>
		<category><![CDATA[＃英検４級]]></category>
		<category><![CDATA[＃英検５級]]></category>
		<category><![CDATA[#英語学習アプリ]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=1776</guid>

					<description><![CDATA[<p>英語学習シリーズ： 📗5級フラッシュ 📘4級フラッシュ 🏫中学英単語 🐙タコタ式スペル練習 💬タコタ英語レッスン タコタ式スペル練習⑤ つなぎ・前置詞・形容詞（20語） 文と文をつなぐ語・前置詞・よく使う形容詞20語。  [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-5-link-prep-adj/">🐙 タコタ式スペル練習⑤ つなぎ・前置詞・形容詞（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!-- 🐙タコタ式スペル練習⑤ つなぎ・前置詞・形容詞（20語） -->

<!-- 🔗 英語学習シリーズ 回遊ナビ（パンくず風） -->
<!-- 🧩 タコタ式共通ボタンスタイル -->
<style>
.tk-btn{
  appearance:none;
  border:none;
  border-radius:999px;
  padding:10px 16px;
  font-weight:700;
  font-size:14px;
  cursor:pointer;
  background:#fff;
  color:#111;
  transition:all .25s ease;
  box-shadow:0 2px 6px rgba(0,0,0,.05);
}
.tk-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 6px 10px rgba(0,0,0,.08);
}
.tk-btn.ghost{
  background:#fff;
  border:1px solid #e5e7eb;
}
.tk-btn.warn{
  background:#fee2e2;
  color:#991b1b;
}
.tk-btn.ok{
  background:#16a34a;
  color:#fff;
}
.tk-btn:disabled{
  opacity:0.5;
  cursor:not-allowed;
}
</style>

<style>
.series-nav-wrap{
  max-width:920px;margin:18px auto 14px;padding:8px 10px;
  background:#f8fafc;border-radius:999px;
  box-shadow:0 2px 6px rgba(0,0,0,.04);
  font-size:12px;color:#475569;
}
.series-nav-label{font-weight:700;margin-right:6px;display:inline-flex;align-items:center;gap:4px;}
.series-nav-label::before{content:"🚩";}
.series-nav-links{display:inline-flex;flex-wrap:wrap;gap:6px;}
.series-nav-link{
  padding:4px 10px;border-radius:999px;background:#e5e7eb;text-decoration:none;
  color:#334155;display:inline-flex;align-items:center;gap:4px;transition:all .2s ease;
}
.series-nav-link span{font-size:14px;}
.series-nav-link:hover,.series-nav-link:focus-visible{background:#dbeafe;color:#1f2937;}
.series-nav-link.is-current{background:#bfdbfe;font-weight:700;color:#111827;}
@media(max-width:480px){.series-nav-wrap{border-radius:16px;font-size:11px;}}

/* 🔙 戻るボタン共通 */
.series-back-wrap{margin:18px 0 8px;text-align:center;}
.series-back-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:linear-gradient(135deg,#e0f2fe,#cffafe);
  color:#0f172a;font-weight:700;font-size:14px;text-decoration:none;
  box-shadow:0 3px 8px rgba(0,0,0,.08);
  transition:all .28s cubic-bezier(.22,.61,.36,1);
}
.series-back-btn span{font-size:18px;}
.series-back-btn:hover,.series-back-btn:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 8px 14px rgba(0,0,0,.12);
  background:linear-gradient(135deg,#dbeafe,#bae6fd);
}
@media(max-width:480px){.series-back-btn{width:100%;font-size:15px;padding:12px 18px;}}

/* ⏮⏭ レッスン前後ナビ */
.lesson-nav{display:flex;justify-content:center;gap:10px;margin:26px 0 6px;flex-wrap:wrap;}
.lesson-nav a{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:#06b6d4;color:#fff;font-weight:700;text-decoration:none;font-size:14px;
  box-shadow:0 2px 8px rgba(0,0,0,.15);transition:.2s;
}
.lesson-nav a:hover{transform:translateY(-2px);box-shadow:0 6px 12px rgba(0,0,0,.18);}
</style>

<div class="series-nav-wrap">
  <span class="series-nav-label">英語学習シリーズ：</span>
  <div class="series-nav-links">
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken5-flash/"><span>📗</span>5級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken4-series/"><span>📘</span>4級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/junior-flash-list/"><span>🏫</span>中学英単語</a>
    <a class="series-nav-link is-current" href="https://jouniorsankosodate.com/takota-spell/"><span>🐙</span>タコタ式スペル練習</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/takota-lesson/"><span>💬</span>タコタ英語レッスン</a>
  </div>
</div>

<!-- 💚 タイトル・説明 -->
<div class="takota-desc" style="max-width:820px;margin:0 auto 18px;padding:16px 18px;background:#f0fdf4;border:2px solid #86efac;border-radius:14px;">
  <div style="display:flex;align-items:center;gap:10px;margin-bottom:8px;">
    <img decoding="async" src="https://jouniorsankosodate.com/wp-content/uploads/2025/11/5dca7321798b10fda919243235cffbda.jpg" alt="タコタ" style="width:58px;height:auto;border-radius:50%;">
    <h2 style="font-weight:900;font-size:1.4em;margin:0;">タコタ式スペル練習⑤ つなぎ・前置詞・形容詞（20語）</h2>
  </div>
  <p style="margin:0;line-height:1.8;font-size:15px;">
    文と文をつなぐ語・前置詞・よく使う形容詞20語。<br>
    because, with, important など、英検3級の英作文で「文をふくらませる」カギになる語をおさえよう✏️
  </p>
</div>

<!-- 🎧 タコタ音声（共通ロジック） -->
<script>
let TAKOTA_VOICE=null;
function pickTakotaVoice(){
  const v=speechSynthesis.getVoices()||[];
  const pref=["en-US","en-GB","en-AU","en-CA","en-IN"];
  return v.find(x=>pref.includes(x.lang))
      || v.find(x=>(x.lang||"").startsWith("en"))
      || null;
}
if("speechSynthesis"in window){
  speechSynthesis.addEventListener("voiceschanged",()=>{TAKOTA_VOICE=pickTakotaVoice();});
}
function speakTakota(t){
  if(!("speechSynthesis"in window))return;
  if(!TAKOTA_VOICE)TAKOTA_VOICE=pickTakotaVoice();
  const u=new SpeechSynthesisUtterance(t);
  if(TAKOTA_VOICE){u.voice=TAKOTA_VOICE;u.lang=TAKOTA_VOICE.lang||"en-US";}
  else u.lang="en-US";
  u.rate=0.95;u.pitch=1.0;
  speechSynthesis.cancel();speechSynthesis.speak(u);
}
</script>

<!-- 🐙 スペル練習⑤ 本体 -->
<script>
(() => {
  const WORDS = [
    {word:"because",jp:"〜だから"},{word:"and",jp:"そして"},{word:"but",jp:"しかし"},
    {word:"so",jp:"だから／それで"},{word:"then",jp:"それから"},{word:"in",jp:"〜の中に／で"},
    {word:"on",jp:"〜の上に／で"},{word:"at",jp:"〜で（場所・時刻）"},{word:"to",jp:"〜へ／〜に"},
    {word:"from",jp:"〜から"},{word:"for",jp:"〜のために"},{word:"with",jp:"〜といっしょに"},
    {word:"about",jp:"〜について"},{word:"by",jp:"〜で（手段）／そばに"},{word:"happy",jp:"うれしい"},
    {word:"busy",jp:"いそがしい"},{word:"fun",jp:"楽しい（名詞/形容）"},{word:"interesting",jp:"おもしろい"},
    {word:"favorite",jp:"いちばん好きな"},{word:"important",jp:"大切な"}
  ];
  const REVEAL=true;const KEY='takota_strict_set5_v1';
  const speak=speakTakota;

  const $=id=>document.getElementById(id);
  document.write(`
  <div class="takota-strict" id="takotaStrict5" style="max-width:820px;margin:16px auto;padding:16px;background:#f6f7fb;border-radius:16px;color:#111;">
    <div class="tk-card" style="background:#fff;border-radius:16px;padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.06);">
      <div class="tk-head" style="display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;">
        <div>
          <div class="tk-title" style="font-weight:900;font-size:22px;">タコタ式スペル練習⑤ つなぎ・前置詞・形容詞</div>
          <div class="tk-problem" id="tkProblem5" style="font-weight:900;font-size:24px;">問題：—</div>
          <div class="tk-wordprev" id="tkWordPrev5" style="font-weight:800;font-size:22px;opacity:.95;"></div>
          <div class="tk-ime" id="tkImeWarn5" style="font-size:13px;color:#b91c1c;display:none;margin-top:6px;">※日本語入力かも。<strong>半角英数</strong>にしてね。</div>
        </div>
        <div class="tk-row" style="display:flex;gap:10px;flex-wrap:wrap;">
          <button class="tk-btn ghost" id="speakBtn5">🔊読む</button>
          <button class="tk-btn ghost" id="revealBtn5">🙈隠す</button>
          <button class="tk-btn ghost" id="hintBtn5">ヒント</button>
          <button class="tk-btn warn" id="resetBtn5">リセット</button>
          <button class="tk-btn" id="restartBtn5" style="background:#334155;color:#fff;">はじめから</button>
        </div>
      </div>
      <div class="tk-slots" id="slots5" style="display:flex;gap:10px;flex-wrap:wrap;margin:14px 0;"></div>
      <div class="tk-keys" id="keys5" style="display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;"></div>
      <div class="tk-btns" style="display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;">
        <button class="tk-btn ghost" id="skipBtn5">スキップ</button>
        <button class="tk-btn ok" id="nextBtn5" style="background:#16a34a;" disabled>つぎへ</button>
      </div>
      <div class="tk-msg" id="tkMsg5" style="font-weight:800;margin:8px 0;"></div>
      <div class="tk-progress" style="height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin-top:10px;">
        <div class="tk-bar" id="bar5" style="height:100%;width:0;background:#06b6d4;"></div>
      </div>
      <div class="tk-mini" style="font-size:12px;color:#667;"> <span id="count5">0</span> / <span id="total5">0</span> </div>
    </div>
  </div>`);

  let state;try{state=JSON.parse(localStorage.getItem(KEY))||{i:0,reveal:REVEAL}}catch(_){state={i:0,reveal:REVEAL}}
  if(state.i>=WORDS.length)state.i=0;
  let cur=null,idx=0,locked=[],inputs=[];

  function prog(solved=false){
    const c=$("count5"),t=$("total5"),b=$("bar5");
    t.textContent=WORDS.length;
    if(solved&&state.i===WORDS.length-1){c.textContent=WORDS.length;b.style.width='100%';return;}
    c.textContent=Math.min(state.i+1,WORDS.length);
    b.style.width=Math.round((state.i/WORDS.length)*100)+'%';
  }
  function slots(w){
    const s=$("slots5");s.innerHTML='';inputs=[];
    locked=Array.from({length:w.length},()=>'');
    for(let i=0;i<w.length;i++){
      const el=document.createElement("div");
      el.className="tk-slot";
      el.style.cssText="width:46px;height:54px;border:2px solid #e5e7eb;border-radius:12px;display:grid;place-items:center;font-size:24px;font-weight:800;";
      el.textContent='•';
      el.addEventListener('click',()=>{idx=i;active();});
      s.appendChild(el);inputs.push(el);
    }
    idx=0;active();
  }
  function active(){
    inputs.forEach((el,i)=>{el.style.outline=(i===idx)?'3px solid rgba(14,165,233,.35)':'none';});
  }
  function keys(w){
    const k=$("keys5");k.innerHTML='';
    [...new Set(w.toLowerCase().split(''))].sort().forEach(ch=>{
      const b=document.createElement("button");
      b.className="tk-key";b.textContent=ch;
      b.style.cssText="padding:10px 12px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;font-weight:800;cursor:pointer;";
      b.addEventListener('click',()=>put(ch));
      k.appendChild(b);
    });
  }
  function preview(){
    const w=$("tkWordPrev5"),r=$("revealBtn5");
    if(state.reveal){w.textContent=cur.word;r.textContent='🙈隠す';}
    else{w.textContent='•'.repeat(cur.word.length);r.textContent='👁単語表示';}
  }
  function show(i){
    cur=WORDS[i];
    $("tkProblem5").textContent='問題：'+cur.jp;
    $("tkMsg5").textContent='';
    slots(cur.word);keys(cur.word);preview();
    $("nextBtn5").disabled=true;
    prog(false);
  }
  function done(){
    if(locked.join('')===cur.word.toLowerCase()){
      $("tkMsg5").textContent='🎉 正解！Good job!';
      $("tkMsg5").style.color='#16a34a';
      $("nextBtn5").disabled=false;
      prog(true);
      return true;
    }
    return false;
  }
  function put(chRaw){
    const t=cur.word.toLowerCase();
    if(idx>=t.length)return;
    const ch=(chRaw||'').toLowerCase();
    const exp=t[idx];
    if(ch===exp){
      locked[idx]=exp;
      inputs[idx].textContent=exp;
      inputs[idx].classList.add('filled');
      idx=Math.min(idx+1,t.length-1);
      active();
      done();
    }else{
      inputs[idx].style.borderColor='#ef4444';
      setTimeout(()=>inputs[idx].style.borderColor='#e5e7eb',220);
      $("tkMsg5").textContent='❌ちがうよ';
      $("tkMsg5").style.color='#ef4444';
    }
  }
  document.addEventListener("keydown",e=>{
    if(!cur)return;
    const k=e.key;
    if(k==='Backspace'){
      if(locked[idx]){
        locked[idx]='';inputs[idx].textContent='•';
      }else if(idx>0){
        idx--;active();locked[idx]='';inputs[idx].textContent='•';
      }
      e.preventDefault();return;
    }
    if(k.length===1){
      if(!/[a-zA-Z]/.test(k))return;
      put(k);e.preventDefault();return;
    }
    if(k==='Enter'&&!$("nextBtn5").disabled){next();}
  });
  function next(){
    state.i++;save();
    if(state.i>=WORDS.length){
      $("tkMsg5").textContent='🎉 全問クリア！おめでとう！';
      $("tkMsg5").style.color='#16a34a';
      $("nextBtn5").disabled=true;
      return;
    }
    show(state.i);
  }
  function save(){localStorage.setItem(KEY,JSON.stringify(state));}

  $("hintBtn5").addEventListener("click",()=>{
    const t=cur.word.toLowerCase();
    const n=t.length>=6?2:1;
    for(let i=0;i<n;i++){
      if(!locked[i]){idx=i;put(t[i]);}
    }
  });
  $("resetBtn5").addEventListener("click",()=>{slots(cur.word);$("tkMsg5").textContent='';$("nextBtn5").disabled=true;});
  $("restartBtn5").addEventListener("click",()=>{state.i=0;save();show(state.i);});
  $("skipBtn5").addEventListener("click",()=>show(state.i));
  $("nextBtn5").addEventListener("click",next);
  $("speakBtn5").addEventListener("click",()=>speak(cur.word));
  $("revealBtn5").addEventListener("click",()=>{state.reveal=!state.reveal;save();preview();});

  show(state.i);
})();
</script>

<!-- ⏮⏭ 前レッスン＋一覧 -->
<div class="lesson-nav">
  <a href="https://jouniorsankosodate.com/takota-spell-4-time-frequency/">← レッスン④ 時間・頻度・季節へ</a>
  <a href="https://jouniorsankosodate.com/takota-spell/">🐙 全セット一覧を見る</a>
</div>
<div class="series-back-wrap">
  <a class="series-back-btn" href="https://jouniorsankosodate.com/takota-spell/">
    <span>🐙</span>タコタ式スペル練習 一覧にもどる
  </a>
</div>

<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-5-link-prep-adj/">🐙 タコタ式スペル練習⑤ つなぎ・前置詞・形容詞（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/takota-spell-5-link-prep-adj/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🐙 タコタ式スペル練習④ 時間・頻度・季節（20語）</title>
		<link>https://jouniorsankosodate.com/takota-spell-4-time-frequency/</link>
					<comments>https://jouniorsankosodate.com/takota-spell-4-time-frequency/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 06 Nov 2025 03:18:55 +0000</pubDate>
				<category><![CDATA[🐙英単語スペル練習]]></category>
		<category><![CDATA[🟦 英検3級 英語シリーズ]]></category>
		<category><![CDATA[🟩 英検4級 英語シリーズ]]></category>
		<category><![CDATA[#スペル練習]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[#英作文]]></category>
		<category><![CDATA[#英単語スペル練習]]></category>
		<category><![CDATA[#英単語学習]]></category>
		<category><![CDATA[#英検3級]]></category>
		<category><![CDATA[＃英検４級]]></category>
		<category><![CDATA[＃英検５級]]></category>
		<category><![CDATA[#英語学習アプリ]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=1775</guid>

					<description><![CDATA[<p>英語学習シリーズ： 📗5級フラッシュ 📘4級フラッシュ 🏫中学英単語 🐙タコタ式スペル練習 💬タコタ英語レッスン タコタ式スペル練習④ 時間・頻度・季節（20語） 朝・夜・週末・季節など、時間や頻度をあらわす20語。 「 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-4-time-frequency/">🐙 タコタ式スペル練習④ 時間・頻度・季節（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!-- 🔗 英語学習シリーズ 回遊ナビ（パンくず風） -->
<!-- 🧩 タコタ式共通ボタンスタイル -->
<style>
.tk-btn{
  appearance:none;
  border:none;
  border-radius:999px;
  padding:10px 16px;
  font-weight:700;
  font-size:14px;
  cursor:pointer;
  background:#fff;
  color:#111;
  transition:all .25s ease;
  box-shadow:0 2px 6px rgba(0,0,0,.05);
}
.tk-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 6px 10px rgba(0,0,0,.08);
}
.tk-btn.ghost{
  background:#fff;
  border:1px solid #e5e7eb;
}
.tk-btn.warn{
  background:#fee2e2;
  color:#991b1b;
}
.tk-btn.ok{
  background:#16a34a;
  color:#fff;
}
.tk-btn:disabled{
  opacity:0.5;
  cursor:not-allowed;
}
</style>

<style>
.series-nav-wrap{
  max-width:920px;margin:18px auto 14px;padding:8px 10px;
  background:#f8fafc;border-radius:999px;
  box-shadow:0 2px 6px rgba(0,0,0,.04);
  font-size:12px;color:#475569;
}
.series-nav-label{font-weight:700;margin-right:6px;display:inline-flex;align-items:center;gap:4px;}
.series-nav-label::before{content:"🚩";}
.series-nav-links{display:inline-flex;flex-wrap:wrap;gap:6px;}
.series-nav-link{
  padding:4px 10px;border-radius:999px;background:#e5e7eb;text-decoration:none;
  color:#334155;display:inline-flex;align-items:center;gap:4px;transition:all .2s ease;
}
.series-nav-link span{font-size:14px;}
.series-nav-link:hover,.series-nav-link:focus-visible{background:#dbeafe;color:#1f2937;}
.series-nav-link.is-current{background:#bfdbfe;font-weight:700;color:#111827;}
@media(max-width:480px){.series-nav-wrap{border-radius:16px;font-size:11px;}}

/* 🔙 戻るボタン共通 */
.series-back-wrap{margin:18px 0 8px;text-align:center;}
.series-back-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:linear-gradient(135deg,#e0f2fe,#cffafe);
  color:#0f172a;font-weight:700;font-size:14px;text-decoration:none;
  box-shadow:0 3px 8px rgba(0,0,0,.08);
  transition:all .28s cubic-bezier(.22,.61,.36,1);
}
.series-back-btn span{font-size:18px;}
.series-back-btn:hover,.series-back-btn:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 8px 14px rgba(0,0,0,.12);
  background:linear-gradient(135deg,#dbeafe,#bae6fd);
}
@media(max-width:480px){.series-back-btn{width:100%;font-size:15px;padding:12px 18px;}}

/* ⏮⏭ レッスン前後ナビ */
.lesson-nav{display:flex;justify-content:center;gap:10px;margin:26px 0 6px;flex-wrap:wrap;}
.lesson-nav a{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:#06b6d4;color:#fff;font-weight:700;text-decoration:none;font-size:14px;
  box-shadow:0 2px 8px rgba(0,0,0,.15);transition:.2s;
}
.lesson-nav a:hover{transform:translateY(-2px);box-shadow:0 6px 12px rgba(0,0,0,.18);}
</style>

<div class="series-nav-wrap">
  <span class="series-nav-label">英語学習シリーズ：</span>
  <div class="series-nav-links">
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken5-flash/"><span>📗</span>5級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken4-series/"><span>📘</span>4級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/junior-flash-list/"><span>🏫</span>中学英単語</a>
    <a class="series-nav-link is-current" href="https://jouniorsankosodate.com/takota-spell/"><span>🐙</span>タコタ式スペル練習</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/takota-lesson/"><span>💬</span>タコタ英語レッスン</a>
  </div>
</div>

<!-- 💚 タイトル・説明 -->
<div class="takota-desc" style="max-width:820px;margin:0 auto 18px;padding:16px 18px;background:#f0fdf4;border:2px solid #86efac;border-radius:14px;">
  <div style="display:flex;align-items:center;gap:10px;margin-bottom:8px;">
    <img decoding="async" src="https://jouniorsankosodate.com/wp-content/uploads/2025/11/5dca7321798b10fda919243235cffbda.jpg" alt="タコタ" style="width:58px;height:auto;border-radius:50%;">
    <h2 style="font-weight:900;font-size:1.4em;margin:0;">タコタ式スペル練習④ 時間・頻度・季節（20語）</h2>
  </div>
  <p style="margin:0;line-height:1.8;font-size:15px;">
    朝・夜・週末・季節など、時間や頻度をあらわす20語。<br>
    「いつ？」「どれくらい？」を英語で言えるようにしよう🕒🌸☀️🍁❄️
  </p>
</div>

<!-- 🎧 タコタ音声 -->
<script>
let TAKOTA_VOICE=null;
function pickTakotaVoice(){
  const v=speechSynthesis.getVoices()||[];
  const pref=["en-US","en-GB","en-AU","en-CA","en-IN"];
  return v.find(x=>pref.includes(x.lang))
      || v.find(x=>(x.lang||"").startsWith("en"))
      || null;
}
if("speechSynthesis"in window){
  speechSynthesis.addEventListener("voiceschanged",()=>{TAKOTA_VOICE=pickTakotaVoice();});
}
function speakTakota(t){
  if(!("speechSynthesis"in window))return;
  if(!TAKOTA_VOICE)TAKOTA_VOICE=pickTakotaVoice();
  const u=new SpeechSynthesisUtterance(t);
  if(TAKOTA_VOICE){u.voice=TAKOTA_VOICE;u.lang=TAKOTA_VOICE.lang||"en-US";}
  else u.lang="en-US";
  u.rate=0.95;u.pitch=1.0;
  speechSynthesis.cancel();speechSynthesis.speak(u);
}
</script>

<!-- 🐙 スペル練習④ 本体 -->
<script>
(() => {
  const WORDS = [
    {word:"morning",jp:"朝"},{word:"afternoon",jp:"午後"},{word:"evening",jp:"夕方／夜"},
    {word:"night",jp:"夜"},{word:"weekend",jp:"週末"},{word:"holiday",jp:"休日"},
    {word:"vacation",jp:"休暇"},{word:"spring",jp:"春"},{word:"summer",jp:"夏"},
    {word:"fall",jp:"秋"},{word:"winter",jp:"冬"},{word:"today",jp:"今日"},
    {word:"tomorrow",jp:"明日"},{word:"yesterday",jp:"昨日"},{word:"always",jp:"いつも"},
    {word:"usually",jp:"ふつうは"},{word:"often",jp:"よく"},{word:"sometimes",jp:"ときどき"},
    {word:"before",jp:"〜の前に"},{word:"after",jp:"〜の後で"}
  ];
  const REVEAL=true;const KEY='takota_strict_set4_v1';
  const speak=speakTakota;

  const $=id=>document.getElementById(id);
  document.write(`
  <div class="takota-strict" id="takotaStrict4" style="max-width:820px;margin:16px auto;padding:16px;background:#f6f7fb;border-radius:16px;color:#111;">
    <div class="tk-card" style="background:#fff;border-radius:16px;padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.06);">
      <div class="tk-head" style="display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;">
        <div>
          <div class="tk-title" style="font-weight:900;font-size:22px;">タコタ式スペル練習④ 時間・頻度・季節</div>
          <div class="tk-problem" id="tkProblem4" style="font-weight:900;font-size:24px;">問題：—</div>
          <div class="tk-wordprev" id="tkWordPrev4" style="font-weight:800;font-size:22px;opacity:.95;"></div>
          <div class="tk-ime" id="tkImeWarn4" style="font-size:13px;color:#b91c1c;display:none;margin-top:6px;">※日本語入力かも。<strong>半角英数</strong>にしてね。</div>
        </div>
        <div class="tk-row" style="display:flex;gap:10px;flex-wrap:wrap;">
          <button class="tk-btn ghost" id="speakBtn4">🔊読む</button>
          <button class="tk-btn ghost" id="revealBtn4">🙈隠す</button>
          <button class="tk-btn ghost" id="hintBtn4">ヒント</button>
          <button class="tk-btn warn" id="resetBtn4">リセット</button>
          <button class="tk-btn" id="restartBtn4" style="background:#334155;color:#fff;">はじめから</button>
        </div>
      </div>
      <div class="tk-slots" id="slots4" style="display:flex;gap:10px;flex-wrap:wrap;margin:14px 0;"></div>
      <div class="tk-keys" id="keys4" style="display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;"></div>
      <div class="tk-btns" style="display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;">
        <button class="tk-btn ghost" id="skipBtn4">スキップ</button>
        <button class="tk-btn ok" id="nextBtn4" style="background:#16a34a;" disabled>つぎへ</button>
      </div>
      <div class="tk-msg" id="tkMsg4" style="font-weight:800;margin:8px 0;"></div>
      <div class="tk-progress" style="height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin-top:10px;">
        <div class="tk-bar" id="bar4" style="height:100%;width:0;background:#06b6d4;"></div>
      </div>
      <div class="tk-mini" style="font-size:12px;color:#667;"> <span id="count4">0</span> / <span id="total4">0</span> </div>
    </div>
  </div>`);

  // ②③と同じロジック
  let state;try{state=JSON.parse(localStorage.getItem(KEY))||{i:0,reveal:REVEAL}}catch(_){state={i:0,reveal:REVEAL}}
  if(state.i>=WORDS.length)state.i=0;
  let cur=null,idx=0,locked=[],inputs=[];

  function prog(solved=false){const c=$("count4"),t=$("total4"),b=$("bar4");
    t.textContent=WORDS.length;if(solved&&state.i===WORDS.length-1){c.textContent=WORDS.length;b.style.width='100%';return;}
    c.textContent=Math.min(state.i+1,WORDS.length);b.style.width=Math.round((state.i/WORDS.length)*100)+'%';}
  function slots(w){const s=$("slots4");s.innerHTML='';inputs=[];locked=Array.from({length:w.length},()=>'');
    for(let i=0;i<w.length;i++){const el=document.createElement("div");el.className="tk-slot";
      el.style.cssText="width:46px;height:54px;border:2px solid #e5e7eb;border-radius:12px;display:grid;place-items:center;font-size:24px;font-weight:800;";
      el.textContent='•';el.addEventListener('click',()=>{idx=i;active();});s.appendChild(el);inputs.push(el);}
    idx=0;active();}
  function active(){inputs.forEach((el,i)=>{el.style.outline=(i===idx)?'3px solid rgba(14,165,233,.35)':'none';});}
  function keys(w){const k=$("keys4");k.innerHTML='';[...new Set(w.toLowerCase().split(''))].sort().forEach(ch=>{
    const b=document.createElement("button");b.className="tk-key";b.textContent=ch;b.style.cssText="padding:10px 12px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;font-weight:800;cursor:pointer;";
    b.addEventListener('click',()=>put(ch));k.appendChild(b);});}
  function preview(){const w=$("tkWordPrev4"),r=$("revealBtn4");if(state.reveal){w.textContent=cur.word;r.textContent='🙈隠す';}
    else{w.textContent='•'.repeat(cur.word.length);r.textContent='👁単語表示';}}
  function show(i){cur=WORDS[i];$("tkProblem4").textContent='問題：'+cur.jp;$("tkMsg4").textContent='';
    slots(cur.word);keys(cur.word);preview();$("nextBtn4").disabled=true;prog(false);}
  function done(){if(locked.join('')===cur.word.toLowerCase()){$("tkMsg4").textContent='🎉 正解！Good job!';$("tkMsg4").style.color='#16a34a';$("nextBtn4").disabled=false;prog(true);return true}return false;}
  function put(chRaw){const t=cur.word.toLowerCase();if(idx>=t.length)return;const ch=(chRaw||'').toLowerCase();const exp=t[idx];
    if(ch===exp){locked[idx]=exp;inputs[idx].textContent=exp;inputs[idx].classList.add('filled');idx=Math.min(idx+1,t.length-1);active();done();}
    else{inputs[idx].style.borderColor='#ef4444';setTimeout(()=>inputs[idx].style.borderColor='#e5e7eb',220);$("tkMsg4").textContent='❌ちがうよ';$("tkMsg4").style.color='#ef4444';}}
  document.addEventListener("keydown",e=>{if(!cur)return;const k=e.key;
    if(k==='Backspace'){if(locked[idx]){locked[idx]='';inputs[idx].textContent='•';}
      else if(idx>0){idx--;active();locked[idx]='';inputs[idx].textContent='•';}
      e.preventDefault();return;}
    if(k.length===1){if(!/[a-zA-Z]/.test(k))return;put(k);e.preventDefault();return;}
    if(k==='Enter'&&!$("nextBtn4").disabled){next();}});
  function next(){state.i++;save();if(state.i>=WORDS.length){$("tkMsg4").textContent='🎉 全問クリア！おめでとう！';$("tkMsg4").style.color='#16a34a';$("nextBtn4").disabled=true;return;}show(state.i);}
  function save(){localStorage.setItem(KEY,JSON.stringify(state));}
  $("hintBtn4").addEventListener("click",()=>{const t=cur.word.toLowerCase();const n=t.length>=6?2:1;for(let i=0;i<n;i++){if(!locked[i]){idx=i;put(t[i]);}}});
  $("resetBtn4").addEventListener("click",()=>{slots(cur.word);$("tkMsg4").textContent='';$("nextBtn4").disabled=true;});
  $("restartBtn4").addEventListener("click",()=>{state.i=0;save();show(state.i);});
  $("skipBtn4").addEventListener("click",()=>show(state.i));
  $("nextBtn4").addEventListener("click",next);
  $("speakBtn4").addEventListener("click",()=>speak(cur.word));
  $("revealBtn4").addEventListener("click",()=>{state.reveal=!state.reveal;save();preview();});
  show(state.i);
})();
</script>

<!-- ⏮⏭ 前後レッスンナビ＋一覧 -->
<div class="lesson-nav">
  <a href="https://jouniorsankosodate.com/takota-spell-3-school-family/">← レッスン③ 学校・友達へ</a>
  <a href="https://jouniorsankosodate.com/takota-spell-5-link-prep-adj/">▶ レッスン⑤ つなぎ・前置詞へ</a>
</div>
<div class="series-back-wrap">
  <a class="series-back-btn" href="https://jouniorsankosodate.com/takota-spell/">
    <span>🐙</span>タコタ式スペル練習 一覧にもどる
  </a>
</div>

<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-4-time-frequency/">🐙 タコタ式スペル練習④ 時間・頻度・季節（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/takota-spell-4-time-frequency/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🐙タコタ式スペル練習③ 学校・友達・家庭（20語）</title>
		<link>https://jouniorsankosodate.com/takota-spell-3-school-family/</link>
					<comments>https://jouniorsankosodate.com/takota-spell-3-school-family/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 06 Nov 2025 03:18:50 +0000</pubDate>
				<category><![CDATA[🐙英単語スペル練習]]></category>
		<category><![CDATA[🟦 英検3級 英語シリーズ]]></category>
		<category><![CDATA[🟩 英検4級 英語シリーズ]]></category>
		<category><![CDATA[#スペル練習]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[#英作文]]></category>
		<category><![CDATA[#英単語スペル練習]]></category>
		<category><![CDATA[#英単語学習]]></category>
		<category><![CDATA[#英検3級]]></category>
		<category><![CDATA[＃英検４級]]></category>
		<category><![CDATA[＃英検５級]]></category>
		<category><![CDATA[#英語学習アプリ]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=1774</guid>

					<description><![CDATA[<p>英語学習シリーズ： 📗5級フラッシュ 📘4級フラッシュ 🏫中学英単語 🐙タコタ式スペル練習 💬タコタ英語レッスン タコタ式スペル練習③ 学校・友達・家庭（20語） 学校生活・家族・友達との会話でよく使う単語を集めた20語 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-3-school-family/">🐙タコタ式スペル練習③ 学校・友達・家庭（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!-- 🔗 英語学習シリーズ 回遊ナビ（パンくず風） -->
<!-- 🧩 タコタ式共通ボタンスタイル -->
<style>
.tk-btn{
  appearance:none;
  border:none;
  border-radius:999px;
  padding:10px 16px;
  font-weight:700;
  font-size:14px;
  cursor:pointer;
  background:#fff;
  color:#111;
  transition:all .25s ease;
  box-shadow:0 2px 6px rgba(0,0,0,.05);
}
.tk-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 6px 10px rgba(0,0,0,.08);
}
.tk-btn.ghost{
  background:#fff;
  border:1px solid #e5e7eb;
}
.tk-btn.warn{
  background:#fee2e2;
  color:#991b1b;
}
.tk-btn.ok{
  background:#16a34a;
  color:#fff;
}
.tk-btn:disabled{
  opacity:0.5;
  cursor:not-allowed;
}
</style>

<style>
.series-nav-wrap{
  max-width:920px;margin:18px auto 14px;padding:8px 10px;
  background:#f8fafc;border-radius:999px;
  box-shadow:0 2px 6px rgba(0,0,0,.04);
  font-size:12px;color:#475569;
}
.series-nav-label{font-weight:700;margin-right:6px;display:inline-flex;align-items:center;gap:4px;}
.series-nav-label::before{content:"🚩";}
.series-nav-links{display:inline-flex;flex-wrap:wrap;gap:6px;}
.series-nav-link{
  padding:4px 10px;border-radius:999px;background:#e5e7eb;text-decoration:none;
  color:#334155;display:inline-flex;align-items:center;gap:4px;transition:all .2s ease;
}
.series-nav-link span{font-size:14px;}
.series-nav-link:hover,.series-nav-link:focus-visible{background:#dbeafe;color:#1f2937;}
.series-nav-link.is-current{background:#bfdbfe;font-weight:700;color:#111827;}
@media(max-width:480px){.series-nav-wrap{border-radius:16px;font-size:11px;}}

/* 🔙 戻るボタン共通 */
.series-back-wrap{margin:18px 0 8px;text-align:center;}
.series-back-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:linear-gradient(135deg,#e0f2fe,#cffafe);
  color:#0f172a;font-weight:700;font-size:14px;text-decoration:none;
  box-shadow:0 3px 8px rgba(0,0,0,.08);
  transition:all .28s cubic-bezier(.22,.61,.36,1);
}
.series-back-btn span{font-size:18px;}
.series-back-btn:hover,.series-back-btn:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 8px 14px rgba(0,0,0,.12);
  background:linear-gradient(135deg,#dbeafe,#bae6fd);
}
@media(max-width:480px){.series-back-btn{width:100%;font-size:15px;padding:12px 18px;}}

/* ⏮⏭ レッスン前後ナビ */
.lesson-nav{display:flex;justify-content:center;gap:10px;margin:26px 0 6px;flex-wrap:wrap;}
.lesson-nav a{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 18px;border-radius:999px;
  background:#06b6d4;color:#fff;font-weight:700;text-decoration:none;font-size:14px;
  box-shadow:0 2px 8px rgba(0,0,0,.15);transition:.2s;
}
.lesson-nav a:hover{transform:translateY(-2px);box-shadow:0 6px 12px rgba(0,0,0,.18);}
</style>

<div class="series-nav-wrap">
  <span class="series-nav-label">英語学習シリーズ：</span>
  <div class="series-nav-links">
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken5-flash/"><span>📗</span>5級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken4-series/"><span>📘</span>4級フラッシュ</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/junior-flash-list/"><span>🏫</span>中学英単語</a>
    <a class="series-nav-link is-current" href="https://jouniorsankosodate.com/takota-spell/"><span>🐙</span>タコタ式スペル練習</a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/takota-lesson/"><span>💬</span>タコタ英語レッスン</a>
  </div>
</div>

<!-- 💚 タイトル・説明 -->
<div class="takota-desc" style="max-width:820px;margin:0 auto 18px;padding:16px 18px;background:#f0fdf4;border:2px solid #86efac;border-radius:14px;">
  <div style="display:flex;align-items:center;gap:10px;margin-bottom:8px;">
    <img decoding="async" src="https://jouniorsankosodate.com/wp-content/uploads/2025/11/5dca7321798b10fda919243235cffbda.jpg" alt="タコタ" style="width:58px;height:auto;border-radius:50%;">
    <h2 style="font-weight:900;font-size:1.4em;margin:0;">タコタ式スペル練習③ 学校・友達・家庭（20語）</h2>
  </div>
  <p style="margin:0;line-height:1.8;font-size:15px;">
    学校生活・家族・友達との会話でよく使う単語を集めた20語。<br>
    school や family、friendなど、日常会話で使える語を覚えよう🏫👨‍👩‍👧‍👦
  </p>
</div>

<!-- 🎧 タコタ音声 -->
<script>
let TAKOTA_VOICE=null;
function pickTakotaVoice(){
  const v=speechSynthesis.getVoices()||[];
  const pref=["en-US","en-GB","en-AU","en-CA","en-IN"];
  return v.find(x=>pref.includes(x.lang))
      || v.find(x=>(x.lang||"").startsWith("en"))
      || null;
}
if("speechSynthesis"in window){
  speechSynthesis.addEventListener("voiceschanged",()=>{TAKOTA_VOICE=pickTakotaVoice();});
}
function speakTakota(t){
  if(!("speechSynthesis"in window))return;
  if(!TAKOTA_VOICE)TAKOTA_VOICE=pickTakotaVoice();
  const u=new SpeechSynthesisUtterance(t);
  if(TAKOTA_VOICE){u.voice=TAKOTA_VOICE;u.lang=TAKOTA_VOICE.lang||"en-US";}
  else u.lang="en-US";
  u.rate=0.95;u.pitch=1.0;
  speechSynthesis.cancel();speechSynthesis.speak(u);
}
</script>

<!-- 🐙 スペル練習③ 本体 -->
<script>
(() => {
  const WORDS = [
    {word:"school",jp:"学校"},{word:"class",jp:"授業／クラス"},{word:"teacher",jp:"先生"},
    {word:"student",jp:"生徒"},{word:"subject",jp:"教科"},{word:"English",jp:"英語"},
    {word:"math",jp:"数学"},{word:"science",jp:"理科"},{word:"club",jp:"クラブ"},
    {word:"homework",jp:"宿題"},{word:"test",jp:"テスト"},{word:"lesson",jp:"レッスン"},
    {word:"lunch",jp:"昼食"},{word:"friend",jp:"友だち"},{word:"library",jp:"図書館"},
    {word:"uniform",jp:"制服"},{word:"family",jp:"家族"},{word:"room",jp:"部屋"},
    {word:"home",jp:"自宅／家"},{word:"house",jp:"家（建物）"}
  ];
  const REVEAL=true;const KEY='takota_strict_set3_v1';
  const speak=speakTakota;

  const $=id=>document.getElementById(id);
  document.write(`
  <div class="takota-strict" id="takotaStrict3" style="max-width:820px;margin:16px auto;padding:16px;background:#f6f7fb;border-radius:16px;color:#111;">
    <div class="tk-card" style="background:#fff;border-radius:16px;padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.06);">
      <div class="tk-head" style="display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;">
        <div>
          <div class="tk-title" style="font-weight:900;font-size:22px;">タコタ式スペル練習③ 学校・友達・家庭</div>
          <div class="tk-problem" id="tkProblem3" style="font-weight:900;font-size:24px;">問題：—</div>
          <div class="tk-wordprev" id="tkWordPrev3" style="font-weight:800;font-size:22px;opacity:.95;"></div>
          <div class="tk-ime" id="tkImeWarn3" style="font-size:13px;color:#b91c1c;display:none;margin-top:6px;">※日本語入力かも。<strong>半角英数</strong>にしてね。</div>
        </div>
        <div class="tk-row" style="display:flex;gap:10px;flex-wrap:wrap;">
          <button class="tk-btn ghost" id="speakBtn3">🔊読む</button>
          <button class="tk-btn ghost" id="revealBtn3">🙈隠す</button>
          <button class="tk-btn ghost" id="hintBtn3">ヒント</button>
          <button class="tk-btn warn" id="resetBtn3">リセット</button>
          <button class="tk-btn" id="restartBtn3" style="background:#334155;color:#fff;">はじめから</button>
        </div>
      </div>
      <div class="tk-slots" id="slots3" style="display:flex;gap:10px;flex-wrap:wrap;margin:14px 0;"></div>
      <div class="tk-keys" id="keys3" style="display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;"></div>
      <div class="tk-btns" style="display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;">
        <button class="tk-btn ghost" id="skipBtn3">スキップ</button>
        <button class="tk-btn ok" id="nextBtn3" style="background:#16a34a;" disabled>つぎへ</button>
      </div>
      <div class="tk-msg" id="tkMsg3" style="font-weight:800;margin:8px 0;"></div>
      <div class="tk-progress" style="height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin-top:10px;">
        <div class="tk-bar" id="bar3" style="height:100%;width:0;background:#06b6d4;"></div>
      </div>
      <div class="tk-mini" style="font-size:12px;color:#667;"> <span id="count3">0</span> / <span id="total3">0</span> </div>
    </div>
  </div>`);

  // 機能ロジック（②と同じ）
  let state;try{state=JSON.parse(localStorage.getItem(KEY))||{i:0,reveal:REVEAL}}catch(_){state={i:0,reveal:REVEAL}}
  if(state.i>=WORDS.length)state.i=0;
  let cur=null,idx=0,locked=[],inputs=[];

  function prog(solved=false){const c=$("count3"),t=$("total3"),b=$("bar3");
    t.textContent=WORDS.length;if(solved&&state.i===WORDS.length-1){c.textContent=WORDS.length;b.style.width='100%';return;}
    c.textContent=Math.min(state.i+1,WORDS.length);b.style.width=Math.round((state.i/WORDS.length)*100)+'%';}
  function slots(w){const s=$("slots3");s.innerHTML='';inputs=[];locked=Array.from({length:w.length},()=>'');
    for(let i=0;i<w.length;i++){const el=document.createElement("div");el.className="tk-slot";
      el.style.cssText="width:46px;height:54px;border:2px solid #e5e7eb;border-radius:12px;display:grid;place-items:center;font-size:24px;font-weight:800;";
      el.textContent='•';el.addEventListener('click',()=>{idx=i;active();});s.appendChild(el);inputs.push(el);}
    idx=0;active();}
  function active(){inputs.forEach((el,i)=>{el.style.outline=(i===idx)?'3px solid rgba(14,165,233,.35)':'none';});}
  function keys(w){const k=$("keys3");k.innerHTML='';[...new Set(w.toLowerCase().split(''))].sort().forEach(ch=>{
    const b=document.createElement("button");b.className="tk-key";b.textContent=ch;b.style.cssText="padding:10px 12px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;font-weight:800;cursor:pointer;";
    b.addEventListener('click',()=>put(ch));k.appendChild(b);});}
  function preview(){const w=$("tkWordPrev3"),r=$("revealBtn3");if(state.reveal){w.textContent=cur.word;r.textContent='🙈隠す';}
    else{w.textContent='•'.repeat(cur.word.length);r.textContent='👁単語表示';}}
  function show(i){cur=WORDS[i];$("tkProblem3").textContent='問題：'+cur.jp;$("tkMsg3").textContent='';
    slots(cur.word);keys(cur.word);preview();$("nextBtn3").disabled=true;prog(false);}
  function done(){if(locked.join('')===cur.word.toLowerCase()){$("tkMsg3").textContent='🎉 正解！Good job!';$("tkMsg3").style.color='#16a34a';$("nextBtn3").disabled=false;prog(true);return true}return false;}
  function put(chRaw){const t=cur.word.toLowerCase();if(idx>=t.length)return;const ch=(chRaw||'').toLowerCase();const exp=t[idx];
    if(ch===exp){locked[idx]=exp;inputs[idx].textContent=exp;inputs[idx].classList.add('filled');idx=Math.min(idx+1,t.length-1);active();done();}
    else{inputs[idx].style.borderColor='#ef4444';setTimeout(()=>inputs[idx].style.borderColor='#e5e7eb',220);$("tkMsg3").textContent='❌ちがうよ';$("tkMsg3").style.color='#ef4444';}}
  document.addEventListener("keydown",e=>{if(!cur)return;const k=e.key;
    if(k==='Backspace'){if(locked[idx]){locked[idx]='';inputs[idx].textContent='•';}
      else if(idx>0){idx--;active();locked[idx]='';inputs[idx].textContent='•';}
      e.preventDefault();return;}
    if(k.length===1){if(!/[a-zA-Z]/.test(k))return;put(k);e.preventDefault();return;}
    if(k==='Enter'&&!$("nextBtn3").disabled){next();}});
  function next(){state.i++;save();if(state.i>=WORDS.length){$("tkMsg3").textContent='🎉 全問クリア！おめでとう！';$("tkMsg3").style.color='#16a34a';$("nextBtn3").disabled=true;return;}show(state.i);}
  function save(){localStorage.setItem(KEY,JSON.stringify(state));}
  $("hintBtn3").addEventListener("click",()=>{const t=cur.word.toLowerCase();const n=t.length>=6?2:1;for(let i=0;i<n;i++){if(!locked[i]){idx=i;put(t[i]);}}});
  $("resetBtn3").addEventListener("click",()=>{slots(cur.word);$("tkMsg3").textContent='';$("nextBtn3").disabled=true;});
  $("restartBtn3").addEventListener("click",()=>{state.i=0;save();show(state.i);});
  $("skipBtn3").addEventListener("click",()=>show(state.i));
  $("nextBtn3").addEventListener("click",next);
  $("speakBtn3").addEventListener("click",()=>speak(cur.word));
  $("revealBtn3").addEventListener("click",()=>{state.reveal=!state.reveal;save();preview();});
  show(state.i);
})();
</script>

<!-- ⏮⏭ 前後レッスンナビ＋一覧 -->
<div class="lesson-nav">
  <a href="https://jouniorsankosodate.com/takota-spell-2-action-life/">← レッスン② 行動・生活へ</a>
  <a href="https://jouniorsankosodate.com/takota-spell-4-time-frequency/">▶ レッスン④ 時間・頻度へ</a>
</div>
<div class="series-back-wrap">
  <a class="series-back-btn" href="https://jouniorsankosodate.com/takota-spell/">
    <span>🐙</span>タコタ式スペル練習 一覧にもどる
  </a>
</div>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-3-school-family/">🐙タコタ式スペル練習③ 学校・友達・家庭（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/takota-spell-3-school-family/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🐙タコタ式スペル練習① 感情・思考・表現（20語）</title>
		<link>https://jouniorsankosodate.com/takota-spell-1-feelings-thoughts/</link>
					<comments>https://jouniorsankosodate.com/takota-spell-1-feelings-thoughts/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 06 Nov 2025 03:18:44 +0000</pubDate>
				<category><![CDATA[🐙英単語スペル練習]]></category>
		<category><![CDATA[🟦 英検3級 英語シリーズ]]></category>
		<category><![CDATA[🟩 英検4級 英語シリーズ]]></category>
		<category><![CDATA[#スペル練習]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[#英作文]]></category>
		<category><![CDATA[#英単語スペル練習]]></category>
		<category><![CDATA[#英単語学習]]></category>
		<category><![CDATA[#英検3級]]></category>
		<category><![CDATA[＃英検４級]]></category>
		<category><![CDATA[＃英検５級]]></category>
		<category><![CDATA[#英語学習アプリ]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=1760</guid>

					<description><![CDATA[<p>英語学習シリーズ： 📗5級フラッシュ 📘4級フラッシュ 🏫中学英単語 🐙タコタ式スペル練習 💬タコタ英語レッスン 🐙タコタ式スペル練習 一覧にもどる 英単語スペル練習｜タコタと一緒にスペルマスター！ タコタといっしょに、 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-1-feelings-thoughts/">🐙タコタ式スペル練習① 感情・思考・表現（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!-- 🔗 英語学習シリーズ 回遊ナビ（タコタ式スペル練習ページ用） -->
<style>
.series-nav-wrap{
  max-width:920px;
  margin:18px auto 14px;
  padding:8px 10px;
  background:#f8fafc;
  border-radius:999px;
  box-shadow:0 2px 6px rgba(0,0,0,.04);
  font-size:12px;
  color:#475569;
}
.series-nav-label{
  font-weight:700;
  margin-right:6px;
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.series-nav-label::before{content:"🚩";}
.series-nav-links{
  display:inline-flex;
  flex-wrap:wrap;
  gap:6px;
}
.series-nav-link{
  padding:4px 10px;
  border-radius:999px;
  background:#e5e7eb;
  text-decoration:none;
  color:#334155;
  display:inline-flex;
  align-items:center;
  gap:4px;
  transition:all .2s ease;
}
.series-nav-link span{font-size:14px;}
.series-nav-link:hover,
.series-nav-link:focus-visible{
  background:#dbeafe;
  color:#1f2937;
}
.series-nav-link.is-current{
  background:#bfdbfe;
  font-weight:700;
  color:#111827;
}
@media(max-width:480px){
  .series-nav-wrap{
    border-radius:16px;
    font-size:11px;
  }
}

/* 🔙 戻るボタン共通 */
.series-back-wrap{
  margin:28px 0 12px;
  text-align:center;
}
.series-back-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:10px 18px;
  border-radius:999px;
  background:linear-gradient(135deg,#e0f2fe,#cffafe);
  color:#0f172a;
  font-weight:700;
  font-size:14px;
  text-decoration:none;
  box-shadow:0 3px 8px rgba(0,0,0,.08);
  transition:all .28s cubic-bezier(.22,.61,.36,1);
}
.series-back-btn span{font-size:18px;}
.series-back-btn:hover,
.series-back-btn:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 8px 14px rgba(0,0,0,.12);
  background:linear-gradient(135deg,#dbeafe,#bae6fd);
}
@media(max-width:480px){
  .series-back-btn{
    width:100%;
    font-size:15px;
    padding:12px 18px;
  }
}
</style>

<div class="series-nav-wrap">
  <span class="series-nav-label">英語学習シリーズ：</span>
  <div class="series-nav-links">
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken5-flash/">
      <span>📗</span>5級フラッシュ
    </a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/eiken4-series/">
      <span>📘</span>4級フラッシュ
    </a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/junior-flash-list/">
      <span>🏫</span>中学英単語
    </a>
    <a class="series-nav-link is-current" href="https://jouniorsankosodate.com/takota-spell/">
      <span>🐙</span>タコタ式スペル練習
    </a>
    <a class="series-nav-link" href="https://jouniorsankosodate.com/takota-lesson/">
      <span>💬</span>タコタ英語レッスン
    </a>
  </div>
</div>


<!-- 🌟 ここから下に「タコタ式スペル練習」の既存コンテンツ一式を入れてください -->
<!-- タイトル画像、説明文、スペル練習ゲームのHTML＋JSなど -->

<!-- 🔙 タコタ式スペル練習一覧に戻るボタン -->
<div class="series-back-wrap">
  <a class="series-back-btn" href="https://jouniorsankosodate.com/takota-spell/">
    <span>🐙</span>タコタ式スペル練習 一覧にもどる
  </a>
</div>

<!-- 🔊 タコタ用：英検フラッシュと同じ方式で英語ボイスを選ぶ -->
<script>
let TAKOTA_VOICE = null;

// 英語ボイス優先で1つつかむ（女性固定ではなく「英語らしい声」を優先：4級と同じ考え方）
function pickTakotaVoice(){
  const voices = speechSynthesis.getVoices() || [];
  const pref = ["en-US","en-GB","en-AU","en-CA","en-IN"];
  return voices.find(v => pref.includes(v.lang))
      || voices.find(v => (v.lang || "").startsWith("en"))
      || null;
}

// ブラウザがvoicesを読み込んだら取得
if ("speechSynthesis" in window) {
  speechSynthesis.addEventListener("voiceschanged", () => {
    TAKOTA_VOICE = pickTakotaVoice();
  });
}

function speakTakota(text){
  try{
    if (!("speechSynthesis" in window)) return;

    if (!TAKOTA_VOICE) {
      TAKOTA_VOICE = pickTakotaVoice();
    }

    const u = new SpeechSynthesisUtterance(text);

    if (TAKOTA_VOICE){
      u.voice = TAKOTA_VOICE;
      u.lang  = TAKOTA_VOICE.lang || "en-US";
    } else {
      // それでも取れない場合も「英語」に固定（日本語声にしない）
      u.lang = "en-US";
    }

    u.rate = 0.95;
    u.pitch = 1.0;

    speechSynthesis.cancel();
    speechSynthesis.speak(u);
  }catch(e){
    console.log(e);
  }
}
</script>






<div class="takota-desc" style="max-width:820px;margin:0 auto 18px;padding:16px 18px;background:#f0fdf4;border:2px solid #86efac;border-radius:14px;">
  <div style="display:flex;align-items:center;gap:10px;margin-bottom:8px;">
    <img decoding="async" src="https://jouniorsankosodate.com/wp-content/uploads/2025/11/5dca7321798b10fda919243235cffbda.jpg" alt="タコタ" style="width:58px;height:auto;border-radius:50%;">
    <h2 style="font-weight:900;font-size:1.4em;margin:0;">英単語スペル練習｜タコタと一緒にスペルマスター！</h2>
  </div>
  <p style="margin:0;line-height:1.8;font-size:15px;">
    タコタといっしょに、英単語を「読める」から「書ける」に！<br>
    英検5級・4級で習う単語を中心に、3級筆記でも使える“よく出る語”を厳選。<br>
    音声つき・誤字拒否型スペル練習で、正しい綴りを楽しくマスターしよう🐙✨
  </p>
  <div style="margin-top:14px;display:grid;gap:10px;">
    <a href="https://jouniorsankosodate.com/takota-spell-1-feelings-thoughts/" style="text-decoration:none;padding:14px 16px;border-radius:12px;border:1px solid #e5e7eb;background:#fff;display:flex;justify-content:space-between;align-items:center;">
      <span>① 感情・思考・表現（20語）</span><span>→</span>
    </a>
    <a href="https://jouniorsankosodate.com/takota-spell-2-action-life/" style="text-decoration:none;padding:14px 16px;border-radius:12px;border:1px solid #e5e7eb;background:#fff;display:flex;justify-content:space-between;align-items:center;">
      <span>② 行動・生活（20語）</span><span>→</span>
    </a>
    <a href="https://jouniorsankosodate.com/takota-spell-3-school-family/" style="text-decoration:none;padding:14px 16px;border-radius:12px;border:1px solid #e5e7eb;background:#fff;display:flex;justify-content:space-between;align-items:center;">
      <span>③ 学校・友達・家庭（20語）</span><span>→</span>
    </a>
    <a href="https://jouniorsankosodate.com/takota-spell-4-time-frequency/" style="text-decoration:none;padding:14px 16px;border-radius:12px;border:1px solid #e5e7eb;background:#fff;display:flex;justify-content:space-between;align-items:center;">
      <span>④ 時間・頻度・季節（20語）</span><span>→</span>
    </a>
    <a href="https://jouniorsankosodate.com/takota-spell-5-link-prep-adj/" style="text-decoration:none;padding:14px 16px;border-radius:12px;border:1px solid #e5e7eb;background:#fff;display:flex;justify-content:space-between;align-items:center;">
      <span>⑤ つなぎ・前置詞・形容詞（20語）</span><span>→</span>
    </a>
  </div>
</div>



<!-- 🐙 タコタ式スペル練習① 感情・思考・表現（3級筆記にも使える20語） -->
<div class="takota-strict" id="takotaStrict1">
  <style>
    .takota-strict{--ink:#111;--muted:#667;--bg:#f6f7fb;--card:#fff;--accent:#06b6d4;--ok:#16a34a;--ng:#ef4444}
    .takota-strict{max-width:820px;margin:16px auto;padding:16px;background:var(--bg);border-radius:16px;color:var(--ink)}
    .tk-card{background:var(--card);border-radius:16px;padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.06)}
    .tk-head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
    .tk-title{font-size:clamp(18px,2.6vw,22px);font-weight:900;margin:0}
    .tk-problem{font-size:clamp(20px,2.8vw,24px);font-weight:900;margin:6px 0 0}
    .tk-wordprev{font-size:clamp(18px,2.6vw,22px);margin-top:6px;font-weight:800;opacity:.95}
    .tk-ime{font-size:13px;color:#b91c1c;display:none;margin-top:6px}
    .tk-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
    .tk-select{padding:8px 10px;border:1px solid #e5e7eb;border-radius:10px;font-weight:700}
    .tk-slots{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}
    .tk-slot{width:46px;height:54px;border:2px solid #e5e7eb;border-radius:12px;display:grid;place-items:center;font-size:24px;font-weight:800}
    .tk-slot.filled{border-color:#cbd5e1;background:#ffffff}
    .tk-slot.error{border-color:var(--ng);animation:shake .18s linear 0s 2}
    @keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-2px)}50%{transform:translateX(2px)}75%{transform:translateX(-2px)}}
    .tk-keys{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
    .tk-key{padding:10px 12px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;font-weight:800;cursor:pointer}
    .tk-key[disabled]{opacity:.5;cursor:not-allowed}
    .tk-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
    .tk-btn{padding:10px 14px;border-radius:12px;border:0;background:var(--accent);color:#fff;font-weight:800;cursor:pointer}
    .tk-btn.ghost{background:#fff;color:#111;border:1px solid #e5e7eb}
    .tk-btn.warn{background:#f59e0b}
    .tk-btn.ok{background:var(--ok)}
    .tk-msg{font-weight:800;margin:8px 0}
    .tk-msg.ok{color:var(--ok)} .tk-msg.ng{color:var(--ng)}
    .tk-progress{height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin-top:10px}
    .tk-bar{height:100%;width:0;background:var(--accent)}
    .tk-mini{font-size:12px;color:var(--muted)}
  </style>

  <div class="tk-card">
    <div class="tk-head">
      <div>
        <div class="tk-title">タコタ式スペル練習① 感情・思考・表現</div>
        <div class="tk-problem" id="tkProblem1">問題：—</div>
        <div class="tk-wordprev" id="tkWordPrev1"></div>
        <div class="tk-ime" id="tkImeWarn1">※ 日本語入力かも。キーボードを<strong>半角英数</strong>にしてね。</div>
      </div>
      <div class="tk-row">
        <button class="tk-btn ghost" id="speakBtn1" title="音声">🔊 読む</button>
        <button class="tk-btn ghost" id="revealBtn1">🙈 隠す</button>
        <button class="tk-btn ghost" id="hintBtn1">ヒント</button>
        <button class="tk-btn warn" id="resetBtn1">リセット</button>
        <button class="tk-btn" id="restartBtn1" style="background:#334155">はじめから</button>
      </div>
    </div>

    <div class="tk-slots" id="slots1"></div>
    <div class="tk-keys" id="keys1"></div>

    <div class="tk-btns">
      <button class="tk-btn ghost" id="skipBtn1">スキップ</button>
      <button class="tk-btn ok" id="nextBtn1" disabled>つぎへ</button>
    </div>

    <div class="tk-msg" id="tkMsg1"></div>

    <div class="tk-progress"><div class="tk-bar" id="bar1"></div></div>
    <div class="tk-mini"><span id="count1">0</span> / <span id="total1">0</span></div>
  </div>
</div>

<script>
(() => {
  const WORDS = [
    {word:"like",jp:"〜が好き"},{word:"want",jp:"〜が欲しい／〜したい"},{word:"think",jp:"思う"},
    {word:"know",jp:"知っている"},{word:"believe",jp:"信じる"},{word:"need",jp:"必要とする"},
    {word:"try",jp:"試みる／努力する"},{word:"hope",jp:"望む"},{word:"love",jp:"愛する／大好き"},
    {word:"hate",jp:"嫌う"},{word:"feel",jp:"感じる"},{word:"remember",jp:"覚えている"},
    {word:"forget",jp:"忘れる"},{word:"surprise",jp:"驚かせる"},{word:"excite",jp:"わくわくさせる"},
    {word:"enjoy",jp:"楽しむ"},{word:"choose",jp:"選ぶ"},{word:"decide",jp:"決める"},
    {word:"plan",jp:"計画する"},{word:"understand",jp:"理解する"}
  ];
  const REVEAL = true; const KEY = 'takota_strict_set1_v1';

// タコタ共通音声関数を使用
  const speak = speakTakota;

  // --- DOM要素取得 ---
  const $=id=>document.getElementById(id);
  const tkProblem=$('tkProblem1'), tkWordPrev=$('tkWordPrev1'), tkImeWarn=$('tkImeWarn1');
  const slotsEl=$('slots1'), keysEl=$('keys1');
  const hintBtn=$('hintBtn1'), resetBtn=$('resetBtn1'), restartBtn=$('restartBtn1');
  const nextBtn=$('nextBtn1'), skipBtn=$('skipBtn1'), speakBtn=$('speakBtn1'), revealBtn=$('revealBtn1');
  const tkMsg=$('tkMsg1'), bar=$('bar1'), count=$('count1'), total=$('total1');

  // --- 状態管理 ---
  let state; try{state=JSON.parse(localStorage.getItem(KEY))||{i:0,reveal:REVEAL}}catch(_){state={i:0,reveal:REVEAL}}
  if(state.i>=WORDS.length)state.i=0;
  let cur=null, idx=0, locked=[], inputs=[];
  function prog(solved=false){total.textContent=WORDS.length;if(solved&&state.i===WORDS.length-1){count.textContent=WORDS.length;bar.style.width='100%';return;}
    count.textContent=Math.min(state.i+1,WORDS.length);bar.style.width=Math.round((state.i/WORDS.length)*100)+'%';}
  function slots(w){slotsEl.innerHTML='';inputs=[];locked=Array.from({length:w.length},()=> '');for(let i=0;i<w.length;i++){const el=document.createElement('div');el.className='tk-slot';el.textContent='•';el.addEventListener('click',()=>{idx=i;active();});slotsEl.appendChild(el);inputs.push(el);}idx=0;active();}
  function active(){inputs.forEach((el,i)=>{el.style.outline=(i===idx)?'3px solid rgba(14,165,233,.35)':'none';});}
  function keys(w){keysEl.innerHTML='';[...new Set(w.toLowerCase().split(''))].sort().forEach(ch=>{const b=document.createElement('button');b.className='tk-key';b.textContent=ch;b.addEventListener('click',()=>put(ch));keysEl.appendChild(b);});}
  function preview(){if(state.reveal){tkWordPrev.textContent=cur.word;revealBtn.textContent='🙈 隠す'}else{tkWordPrev.textContent='•'.repeat(cur.word.length);revealBtn.textContent='👁 単語表示'}}
  function show(i){cur=WORDS[i];tkProblem.textContent='問題：'+cur.jp;tkMsg.textContent='';slots(cur.word);keys(cur.word);preview();nextBtn.disabled=true;prog(false);}
  function done(){if(locked.join('')===cur.word.toLowerCase()){tkMsg.textContent='🎉 正解！ Good job!';tkMsg.className='tk-msg ok';nextBtn.disabled=false;prog(true);return true}return false}
  function put(chRaw){const t=cur.word.toLowerCase();if(idx>=t.length)return;const ch=(chRaw||'').toLowerCase();const exp=t[idx];
    if(ch===exp){locked[idx]=exp;inputs[idx].textContent=exp;inputs[idx].classList.add('filled');idx=Math.min(idx+1,t.length-1);active();tkImeWarn.style.display='none';done();}
    else{inputs[idx].classList.add('error');setTimeout(()=>inputs[idx].classList.remove('error'),220);tkMsg.textContent='❌ ちがうよ';tkMsg.className='tk-msg ng';}}
  document.addEventListener('keydown',e=>{if(!cur)return;const k=e.key;if(k==='Backspace'){if(locked[idx]){locked[idx]='';inputs[idx].textContent='•';inputs[idx].classList.remove('filled');}
    else if(idx>0){idx--;active();locked[idx]='';inputs[idx].textContent='•';inputs[idx].classList.remove('filled');}e.preventDefault();return;}
    if(k.length===1){if(!/[a-zA-Z]/.test(k)){tkImeWarn.style.display='block';return;}tkImeWarn.style.display='none';put(k);e.preventDefault();return;}
    if(k==='Enter'&&!nextBtn.disabled){next();}});
  function reset(){slots(cur.word);tkMsg.textContent='';nextBtn.disabled=true;}
  function restart(){state.i=0;save();show(state.i);}
  function hint(){const t=cur.word.toLowerCase();const n=t.length>=6?2:1;for(let i=0;i<n;i++){if(!locked[i]){idx=i;active();put(t[i]);}}}
  function skip(){show(state.i);save();}
  function next(){state.i++;save();if(state.i>=WORDS.length){tkMsg.textContent='🎉 全問クリア！おめでとう！';tkMsg.className='tk-msg ok';nextBtn.disabled=true;count.textContent=WORDS.length;bar.style.width='100%';return;}show(state.i);}
  function save(){localStorage.setItem(KEY,JSON.stringify(state));}
  hintBtn.addEventListener('click',hint); resetBtn.addEventListener('click',reset); restartBtn.addEventListener('click',restart);
  skipBtn.addEventListener('click',skip); nextBtn.addEventListener('click',next); speakBtn.addEventListener('click',()=>speak(cur.word));
  revealBtn.addEventListener('click',()=>{state.reveal=!state.reveal;save();preview();});
  show(state.i);
})();
</script>
html<br><div class="next-lesson" style="text-align:center;margin:28px 0;"><a href="https://jouniorsankosodate.com/takota-spell-2-action-life/" style="display:inline-block;padding:14px 28px;border-radius:999px;background:#06b6d4;color:#fff;font-weight:800;text-decoration:none;font-size:17px;box-shadow:0 2px 8px rgba(0,0,0,0.15);transition:0.2s;">▶ 次のレッスンへ進む</a></div>



<!-- 🔙 タコタ式スペル練習一覧に戻るボタン -->
<div class="series-back-wrap">
  <a class="series-back-btn" href="https://jouniorsankosodate.com/takota-spell/">
    <span>🐙</span>タコタ式スペル練習 一覧にもどる
  </a>
</div>


<p>投稿 <a href="https://jouniorsankosodate.com/takota-spell-1-feelings-thoughts/">🐙タコタ式スペル練習① 感情・思考・表現（20語）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/takota-spell-1-feelings-thoughts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
<br />
<b>Fatal error</b>:  Uncaught Error: Call to undefined function wp_parse_auth_cookie() in /home/c3987459/public_html/jouniorsankosodate.com/wp-includes/user.php:3632
Stack trace:
#0 /home/c3987459/public_html/jouniorsankosodate.com/wp-content/plugins/microsoft-clarity/clarity-server-analytics.php(58): wp_get_session_token()
#1 /home/c3987459/public_html/jouniorsankosodate.com/wp-content/plugins/microsoft-clarity/clarity-server-analytics.php(35): clarity_construct_collect_event()
#2 /home/c3987459/public_html/jouniorsankosodate.com/wp-includes/class-wp-hook.php(341): clarity_collect_event()
#3 /home/c3987459/public_html/jouniorsankosodate.com/wp-includes/class-wp-hook.php(365): WP_Hook-&gt;apply_filters()
#4 /home/c3987459/public_html/jouniorsankosodate.com/wp-includes/plugin.php(522): WP_Hook-&gt;do_action()
#5 /home/c3987459/public_html/jouniorsankosodate.com/wp-includes/load.php(1308): do_action()
#6 [internal function]: shutdown_action_hook()
#7 {main}
  thrown in <b>/home/c3987459/public_html/jouniorsankosodate.com/wp-includes/user.php</b> on line <b>3632</b><br />
