<?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/feed/" rel="self" type="application/rss+xml" />
	<link>https://jouniorsankosodate.com/category/learn/</link>
	<description>受験のその先へ｜子どもたちのより良い未来を育てる</description>
	<lastBuildDate>Sat, 02 May 2026 08:20:33 +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/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>英検５級 フラッシュ英単語 No.12｜前置詞（音声対応）</title>
		<link>https://jouniorsankosodate.com/n5-no-12/</link>
					<comments>https://jouniorsankosodate.com/n5-no-12/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:20:32 +0000</pubDate>
				<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=5327</guid>

					<description><![CDATA[<p>英検５級 フラッシュ英単語 No.12｜前置詞（音声対応） 英検５級 フラッシュ英単語 No.12 前置詞 日本語からスタート 🔊 音声ON — — 英語⇆日本語 ▶ 読み上げ わかった 👍 わからん！あとで復習 📌 🔀 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/n5-no-12/">英検５級 フラッシュ英単語 No.12｜前置詞（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>英検５級 フラッシュ英単語 No.12｜前置詞（音声対応）</title>

<style>
:root{
  --bg:#f7f7fb; --card:#ffffff; --ink:#111827; --muted:#6b7280;
  --accent:#6366f1; --accent-weak:#e0e7ff;
  --good:#22c55e; --review:#f59e0b;
  --shadow:0 6px 24px rgba(0,0,0,.08);
}
body{margin:0;background:var(--bg);}
.wrap{max-width:760px;margin:0 auto;padding:16px 16px 28px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial;color:var(--ink);}
header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 16px;flex-wrap:wrap;}
h1{font-size:18px;margin:0;font-weight:700;}
.badge{font-size:11px;color:var(--accent);background:var(--accent-weak);padding:3px 8px;border-radius:999px;}
.switches{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px;}
.switches input{accent-color:var(--accent);}
.card-outer{position:relative;perspective:1200px;margin:12px 0 8px;}
.card{position:relative;width:100%;min-height:190px;background:var(--card);border-radius:18px;box-shadow:var(--shadow);cursor:pointer;transform-style:preserve-3d;transition:transform .5s ease;}
.card.flipped{transform:rotateY(180deg);}
.face{position:absolute;inset:0;border-radius:18px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;padding:24px;text-align:center;}
.frontText{font-size:30px;font-weight:800;}
.backText{font-size:24px;font-weight:700;}
.card-face-back{transform:rotateY(180deg);}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}
.btn{appearance:none;border:1px solid #e5e7eb;background:#fff;padding:11px 12px;border-radius:13px;font-size:14px;font-weight:700;line-height:1.2;cursor:pointer;color:var(--ink);}
.btn:hover{background:#eef2ff;}
.btn:active{transform:translateY(1px);}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.good{background:var(--good);color:#fff;border-color:var(--good);}
.btn.review{background:var(--review);color:#fff;border-color:var(--review);}
.meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:13px;}
.progress{height:8px;background:var(--accent-weak);border-radius:999px;overflow:hidden;flex:1;}
.bar{height:100%;width:0;background:var(--accent);transition:.25s;}
.index{min-width:90px;text-align:right;}
.hint{margin-top:8px;color:var(--muted);font-size:12px;}
.result-box{display:none;background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:24px;text-align:center;margin-top:16px;}
.result-box h2{margin:0 0 10px;font-size:22px;}
.result-box p{color:#475569;font-weight:700;}
.series-nav-wrap{margin:32px 0 12px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap;}
.series-nav-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700;border-radius:999px;padding:10px 18px;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.08);transition:.2s;font-size:14px;}
.series-nav-btn.nav-back{color:#6366f1;border:2px solid #c7d2fe;}
.series-nav-btn.next{color:#4338ca;border:2px solid #c7d2fe;background:linear-gradient(135deg,#eef2ff,#e0e7ff);}
.series-nav-btn:hover{transform:translateY(-2px);}
@media (min-width:560px){.frontText{font-size:36px}.backText{font-size:26px}.card{min-height:220px}}
@media(max-width:480px){.controls{grid-template-columns:1fr}.series-nav-btn{width:100%;font-size:15px;padding:12px 18px}}
</style>
</head>

<body>
<div class="wrap" id="app" aria-live="polite">

<header>
  <h1>英検５級 フラッシュ英単語 <span class="badge">No.12 前置詞</span></h1>
  <div class="switches">
    <label><input type="checkbox" id="jpFirst"> 日本語からスタート</label>
    <label><input type="checkbox" id="speakOn"> 🔊 音声ON</label>
  </div>
</header>

<div id="studyArea">
  <div class="card-outer" aria-label="フラッシュカード" role="button" tabindex="0">
    <div class="card" id="card">
      <div class="face card-face-front"><div class="frontText" id="frontText">—</div></div>
      <div class="face card-face-back"><div class="backText" id="backText">—</div></div>
    </div>
  </div>

  <div class="controls">
    <button class="btn primary" id="flipBtn">英語⇆日本語</button>
    <button class="btn" id="speakBtn">▶ 読み上げ</button>
    <button class="btn good" id="knownBtn">わかった 👍</button>
    <button class="btn review" id="wrongBtn">わからん！あとで復習 📌</button>
    <button class="btn" id="shuffleBtn">🔀 シャッフル</button>
    <button class="btn" id="resetBtn">↩︎ はじめから</button>
  </div>

  <div class="meta">
    <div class="progress"><div class="bar" id="bar"></div></div>
    <div class="index"><span id="pos">1</span>/<span id="total">—</span></div>
  </div>

  <p class="hint">カードをタップして答えを確認。わかったら「わかった」、不安なら「あとで復習」を押してね。</p>
</div>

<div class="result-box" id="resultBox">
  <h2 id="resultTitle">おつかれさま！✨</h2>
  <p id="resultText"></p>
  <div class="controls">
    <button class="btn review" id="reviewBtn">復習する 🔁</button>
    <button class="btn" id="againBtn">もう一回やる</button>
  </div>
</div>

<div class="series-nav-wrap">
  <a href="https://jouniorsankosodate.com/eiken5-no11/" class="series-nav-btn nav-back">← 前のレッスンへ</a>
  <a href="https://jouniorsankosodate.com/category/learn/english-flash/" class="series-nav-btn nav-back">英単語フラッシュのカテゴリ一覧に戻る</a>
</div>

</div>

<script>
const ITEMS = [
  { word: "in", jp: "中に" },
  { word: "on", jp: "上に" },
  { word: "under", jp: "下に" },
  { word: "near", jp: "近くに" },
  { word: "by", jp: "そばに" },
  { word: "between", jp: "間に" },
  { word: "behind", jp: "後ろに" },
  { word: "in front of", jp: "前に" },
  { word: "to", jp: "〜へ" },
  { word: "from", jp: "〜から" },
  { word: "with", jp: "〜と一緒に／〜を使って" },
  { word: "for", jp: "〜のために" },
  { word: "at", jp: "〜で（場所・時）" },
  { word: "about", jp: "〜について" }
];

let _voice = null;

function pickVoice(){
  const voices = speechSynthesis.getVoices() || [];
  const femaleNames = ["Sonia","Serena","Susan","Kate","Libby","Maisie","Google UK English Female","Microsoft Sonia","Microsoft Libby","Microsoft Susan"];

  return voices.find(v => v.lang === "en-GB" && femaleNames.some(name => v.name.includes(name)))
  || voices.find(v => v.lang === "en-GB")
  || voices.find(v => (v.lang || "").startsWith("en"))
  || null;
}

(() => {
  const card = document.getElementById("card");
  const frontText = document.getElementById("frontText");
  const backText = document.getElementById("backText");
  const posEl = document.getElementById("pos");
  const totalEl = document.getElementById("total");
  const bar = document.getElementById("bar");
  const jpFirst = document.getElementById("jpFirst");
  const speakOnChk = document.getElementById("speakOn");
  const flipBtn = document.getElementById("flipBtn");
  const speakBtn = document.getElementById("speakBtn");
  const knownBtn = document.getElementById("knownBtn");
  const wrongBtn = document.getElementById("wrongBtn");
  const shuffleBtn = document.getElementById("shuffleBtn");
  const resetBtn = document.getElementById("resetBtn");
  const studyArea = document.getElementById("studyArea");
  const resultBox = document.getElementById("resultBox");
  const resultTitle = document.getElementById("resultTitle");
  const resultText = document.getElementById("resultText");
  const reviewBtn = document.getElementById("reviewBtn");
  const againBtn = document.getElementById("againBtn");

  let order = [...Array(ITEMS.length).keys()];
  let idx = 0;
  let isFlipped = false;
  let showJpFirst = false;
  let speakOn = false;
  let reviewList = [];

  totalEl.textContent = order.length;

  speechSynthesis.addEventListener("voiceschanged", () => {_voice = pickVoice();});

  function speak(text){
    try{
      if(!("speechSynthesis" in window)) return;
      if(!_voice) _voice = pickVoice();

      const u = new SpeechSynthesisUtterance(text.trim());
      if(_voice){
        u.voice = _voice;
        u.lang = _voice.lang || "en-GB";
      }else{
        u.lang = "en-GB";
      }

      u.rate = 0.9;
      u.pitch = 1.05;
      speechSynthesis.cancel();
      speechSynthesis.speak(u);
    }catch(e){}
  }

  function currentItem(){return ITEMS[order[idx]];}

  function render(){
    const it = currentItem();
    card.classList.remove("flipped");
    isFlipped = false;

    frontText.textContent = showJpFirst ? it.jp : it.word;
    backText.textContent = showJpFirst ? it.word : it.jp;

    posEl.textContent = idx + 1;
    totalEl.textContent = order.length;
    bar.style.width = `${((idx + 1) / order.length) * 100}%`;

    if(speakOn){speak(it.word);}
  }

  function flip(){
    isFlipped = !isFlipped;
    card.classList.toggle("flipped", isFlipped);
  }

  function nextCard(){
    if(idx >= order.length - 1){
      showResult();
      return;
    }
    idx++;
    render();
  }

  function showResult(){
    studyArea.style.display = "none";
    resultBox.style.display = "block";

    if(reviewList.length === 0){
      resultTitle.textContent = "ぜんぶできた！すごい！！🎉";
      resultText.textContent = "あとで復習する単語は 0こ です。";
      reviewBtn.style.display = "none";
    }else{
      resultTitle.textContent = "おつかれさま！✨";
      resultText.textContent = `あとで復習する単語は ${reviewList.length}こ あるよ。`;
      reviewBtn.style.display = "inline-block";
    }
  }

  function startStudy(newOrder){
    order = [...newOrder];
    idx = 0;
    studyArea.style.display = "block";
    resultBox.style.display = "none";
    render();
  }

  function resetAll(){
    reviewList = [];
    startStudy([...Array(ITEMS.length).keys()]);
  }

  function shuffleOrder(){
    for(let i = order.length - 1; i > 0; i--){
      const j = Math.floor(Math.random() * (i + 1));
      [order[i], order[j]] = [order[j], order[i]];
    }
    idx = 0;
    render();
  }

  card.addEventListener("click", flip);
  flipBtn.addEventListener("click", flip);
  speakBtn.addEventListener("click", () => speak(currentItem().word));
  knownBtn.addEventListener("click", nextCard);

  wrongBtn.addEventListener("click", () => {
    const currentIndex = order[idx];
    if(!reviewList.includes(currentIndex)){reviewList.push(currentIndex);}
    nextCard();
  });

  reviewBtn.addEventListener("click", () => {
    if(reviewList.length === 0) return;
    const list = [...reviewList];
    reviewList = [];
    startStudy(list);
  });

  againBtn.addEventListener("click", resetAll);
  shuffleBtn.addEventListener("click", shuffleOrder);
  resetBtn.addEventListener("click", resetAll);

  jpFirst.addEventListener("change", e => {
    showJpFirst = e.target.checked;
    render();
  });

  speakOnChk.addEventListener("change", e => {
    speakOn = e.target.checked;
    if(speakOn) speak(currentItem().word);
  });

  window.addEventListener("keydown", e => {
    if(e.key === " "){
      e.preventDefault();
      flip();
    }
  });

  render();
})();
</script>
</body>
</html>
<p>投稿 <a href="https://jouniorsankosodate.com/n5-no-12/">英検５級 フラッシュ英単語 No.12｜前置詞（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/n5-no-12/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>英検５級 フラッシュ英単語 No.11｜職業（音声対応）</title>
		<link>https://jouniorsankosodate.com/eiken5-no-11/</link>
					<comments>https://jouniorsankosodate.com/eiken5-no-11/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:19:03 +0000</pubDate>
				<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=5324</guid>

					<description><![CDATA[<p>英検５級 フラッシュ英単語 No.11｜職業・人を表すことば（音声対応） 英検５級 フラッシュ英単語 No.11 職業・人を表すことば 日本語からスタート 🔊 音声ON — — 英語⇆日本語 ▶ 読み上げ わかった 👍  [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-11/">英検５級 フラッシュ英単語 No.11｜職業（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>英検５級 フラッシュ英単語 No.11｜職業・人を表すことば（音声対応）</title>

<style>
:root{
  --bg:#f7f7fb; --card:#ffffff; --ink:#111827; --muted:#6b7280;
  --accent:#ec4899; --accent-weak:#fce7f3;
  --good:#22c55e; --review:#f59e0b;
  --shadow:0 6px 24px rgba(0,0,0,.08);
}
body{margin:0;background:var(--bg);}
.wrap{max-width:760px;margin:0 auto;padding:16px 16px 28px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial;color:var(--ink);}
header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 16px;flex-wrap:wrap;}
h1{font-size:18px;margin:0;font-weight:700;}
.badge{font-size:11px;color:var(--accent);background:var(--accent-weak);padding:3px 8px;border-radius:999px;}
.switches{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px;}
.switches input{accent-color:var(--accent);}
.card-outer{position:relative;perspective:1200px;margin:12px 0 8px;}
.card{position:relative;width:100%;min-height:190px;background:var(--card);border-radius:18px;box-shadow:var(--shadow);cursor:pointer;transform-style:preserve-3d;transition:transform .5s ease;}
.card.flipped{transform:rotateY(180deg);}
.face{position:absolute;inset:0;border-radius:18px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;padding:24px;text-align:center;}
.frontText{font-size:30px;font-weight:800;}
.backText{font-size:24px;font-weight:700;}
.card-face-back{transform:rotateY(180deg);}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}
.btn{appearance:none;border:1px solid #e5e7eb;background:#fff;padding:11px 12px;border-radius:13px;font-size:14px;font-weight:700;line-height:1.2;cursor:pointer;color:var(--ink);}
.btn:hover{background:#fdf2f8;}
.btn:active{transform:translateY(1px);}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.good{background:var(--good);color:#fff;border-color:var(--good);}
.btn.review{background:var(--review);color:#fff;border-color:var(--review);}
.meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:13px;}
.progress{height:8px;background:var(--accent-weak);border-radius:999px;overflow:hidden;flex:1;}
.bar{height:100%;width:0;background:var(--accent);transition:.25s;}
.index{min-width:90px;text-align:right;}
.hint{margin-top:8px;color:var(--muted);font-size:12px;}
.result-box{display:none;background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:24px;text-align:center;margin-top:16px;}
.result-box h2{margin:0 0 10px;font-size:22px;}
.result-box p{color:#475569;font-weight:700;}
.series-nav-wrap{margin:32px 0 12px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap;}
.series-nav-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700;border-radius:999px;padding:10px 18px;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.08);transition:.2s;font-size:14px;}
.series-nav-btn.nav-back{color:#ec4899;border:2px solid #fbcfe8;}
.series-nav-btn.next{color:#be185d;border:2px solid #fbcfe8;background:linear-gradient(135deg,#fdf2f8,#fce7f3);}
.series-nav-btn:hover{transform:translateY(-2px);}
@media (min-width:560px){.frontText{font-size:36px}.backText{font-size:26px}.card{min-height:220px}}
@media(max-width:480px){.controls{grid-template-columns:1fr}.series-nav-btn{width:100%;font-size:15px;padding:12px 18px}}
</style>
</head>

<body>
<div class="wrap" id="app" aria-live="polite">

<header>
  <h1>英検５級 フラッシュ英単語 <span class="badge">No.11 職業・人を表すことば</span></h1>
  <div class="switches">
    <label><input type="checkbox" id="jpFirst"> 日本語からスタート</label>
    <label><input type="checkbox" id="speakOn"> 🔊 音声ON</label>
  </div>
</header>

<div id="studyArea">
  <div class="card-outer" aria-label="フラッシュカード" role="button" tabindex="0">
    <div class="card" id="card">
      <div class="face card-face-front"><div class="frontText" id="frontText">—</div></div>
      <div class="face card-face-back"><div class="backText" id="backText">—</div></div>
    </div>
  </div>

  <div class="controls">
    <button class="btn primary" id="flipBtn">英語⇆日本語</button>
    <button class="btn" id="speakBtn">▶ 読み上げ</button>
    <button class="btn good" id="knownBtn">わかった 👍</button>
    <button class="btn review" id="wrongBtn">わからん！あとで復習 📌</button>
    <button class="btn" id="shuffleBtn">🔀 シャッフル</button>
    <button class="btn" id="resetBtn">↩︎ はじめから</button>
  </div>

  <div class="meta">
    <div class="progress"><div class="bar" id="bar"></div></div>
    <div class="index"><span id="pos">1</span>/<span id="total">—</span></div>
  </div>

  <p class="hint">カードをタップして答えを確認。わかったら「わかった」、不安なら「あとで復習」を押してね。</p>
</div>

<div class="result-box" id="resultBox">
  <h2 id="resultTitle">おつかれさま！✨</h2>
  <p id="resultText"></p>
  <div class="controls">
    <button class="btn review" id="reviewBtn">復習する 🔁</button>
    <button class="btn" id="againBtn">もう一回やる</button>
  </div>
</div>

<div class="series-nav-wrap">
  <a href="https://jouniorsankosodate.com/eiken5-no10/" class="series-nav-btn nav-back">← 前のレッスンへ</a>
  <a href="https://jouniorsankosodate.com/category/learn/english-flash/" class="series-nav-btn nav-back">英単語フラッシュのカテゴリ一覧に戻る</a>
  <a href="https://jouniorsankosodate.com/eiken5-no12/" class="series-nav-btn next">次のレッスンへ →</a>
</div>

</div>

<script>
const ITEMS = [
  { word: "teacher", jp: "先生" },
  { word: "doctor", jp: "医者" },
  { word: "nurse", jp: "看護師" },
  { word: "police officer", jp: "警察官" },
  { word: "firefighter", jp: "消防士" },
  { word: "cook", jp: "料理人" },
  { word: "driver", jp: "運転手" },
  { word: "farmer", jp: "農家" },
  { word: "shop clerk", jp: "店員" },
  { word: "student", jp: "生徒／学生" }
];

let _voice = null;

function pickVoice(){
  const voices = speechSynthesis.getVoices() || [];
  const femaleNames = ["Sonia","Serena","Susan","Kate","Libby","Maisie","Google UK English Female","Microsoft Sonia","Microsoft Libby","Microsoft Susan"];

  return voices.find(v => v.lang === "en-GB" && femaleNames.some(name => v.name.includes(name)))
  || voices.find(v => v.lang === "en-GB")
  || voices.find(v => (v.lang || "").startsWith("en"))
  || null;
}

(() => {
  const card = document.getElementById("card");
  const frontText = document.getElementById("frontText");
  const backText = document.getElementById("backText");
  const posEl = document.getElementById("pos");
  const totalEl = document.getElementById("total");
  const bar = document.getElementById("bar");
  const jpFirst = document.getElementById("jpFirst");
  const speakOnChk = document.getElementById("speakOn");
  const flipBtn = document.getElementById("flipBtn");
  const speakBtn = document.getElementById("speakBtn");
  const knownBtn = document.getElementById("knownBtn");
  const wrongBtn = document.getElementById("wrongBtn");
  const shuffleBtn = document.getElementById("shuffleBtn");
  const resetBtn = document.getElementById("resetBtn");
  const studyArea = document.getElementById("studyArea");
  const resultBox = document.getElementById("resultBox");
  const resultTitle = document.getElementById("resultTitle");
  const resultText = document.getElementById("resultText");
  const reviewBtn = document.getElementById("reviewBtn");
  const againBtn = document.getElementById("againBtn");

  let order = [...Array(ITEMS.length).keys()];
  let idx = 0;
  let isFlipped = false;
  let showJpFirst = false;
  let speakOn = false;
  let reviewList = [];

  totalEl.textContent = order.length;

  speechSynthesis.addEventListener("voiceschanged", () => {_voice = pickVoice();});

  function speak(text){
    try{
      if(!("speechSynthesis" in window)) return;
      if(!_voice) _voice = pickVoice();

      const u = new SpeechSynthesisUtterance(text.trim());
      if(_voice){
        u.voice = _voice;
        u.lang = _voice.lang || "en-GB";
      }else{
        u.lang = "en-GB";
      }

      u.rate = 0.9;
      u.pitch = 1.05;
      speechSynthesis.cancel();
      speechSynthesis.speak(u);
    }catch(e){}
  }

  function currentItem(){return ITEMS[order[idx]];}

  function render(){
    const it = currentItem();
    card.classList.remove("flipped");
    isFlipped = false;

    frontText.textContent = showJpFirst ? it.jp : it.word;
    backText.textContent = showJpFirst ? it.word : it.jp;

    posEl.textContent = idx + 1;
    totalEl.textContent = order.length;
    bar.style.width = `${((idx + 1) / order.length) * 100}%`;

    if(speakOn){speak(it.word);}
  }

  function flip(){
    isFlipped = !isFlipped;
    card.classList.toggle("flipped", isFlipped);
  }

  function nextCard(){
    if(idx >= order.length - 1){
      showResult();
      return;
    }
    idx++;
    render();
  }

  function showResult(){
    studyArea.style.display = "none";
    resultBox.style.display = "block";

    if(reviewList.length === 0){
      resultTitle.textContent = "ぜんぶできた！すごい！！🎉";
      resultText.textContent = "あとで復習する単語は 0こ です。";
      reviewBtn.style.display = "none";
    }else{
      resultTitle.textContent = "おつかれさま！✨";
      resultText.textContent = `あとで復習する単語は ${reviewList.length}こ あるよ。`;
      reviewBtn.style.display = "inline-block";
    }
  }

  function startStudy(newOrder){
    order = [...newOrder];
    idx = 0;
    studyArea.style.display = "block";
    resultBox.style.display = "none";
    render();
  }

  function resetAll(){
    reviewList = [];
    startStudy([...Array(ITEMS.length).keys()]);
  }

  function shuffleOrder(){
    for(let i = order.length - 1; i > 0; i--){
      const j = Math.floor(Math.random() * (i + 1));
      [order[i], order[j]] = [order[j], order[i]];
    }
    idx = 0;
    render();
  }

  card.addEventListener("click", flip);
  flipBtn.addEventListener("click", flip);
  speakBtn.addEventListener("click", () => speak(currentItem().word));
  knownBtn.addEventListener("click", nextCard);

  wrongBtn.addEventListener("click", () => {
    const currentIndex = order[idx];
    if(!reviewList.includes(currentIndex)){reviewList.push(currentIndex);}
    nextCard();
  });

  reviewBtn.addEventListener("click", () => {
    if(reviewList.length === 0) return;
    const list = [...reviewList];
    reviewList = [];
    startStudy(list);
  });

  againBtn.addEventListener("click", resetAll);
  shuffleBtn.addEventListener("click", shuffleOrder);
  resetBtn.addEventListener("click", resetAll);

  jpFirst.addEventListener("change", e => {
    showJpFirst = e.target.checked;
    render();
  });

  speakOnChk.addEventListener("change", e => {
    speakOn = e.target.checked;
    if(speakOn) speak(currentItem().word);
  });

  window.addEventListener("keydown", e => {
    if(e.key === " "){
      e.preventDefault();
      flip();
    }
  });

  render();
})();
</script>
</body>
</html>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-11/">英検５級 フラッシュ英単語 No.11｜職業（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/eiken5-no-11/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>英検５級 フラッシュ英単語 No.10｜場所・建物（音声対応）</title>
		<link>https://jouniorsankosodate.com/eiken5-no-10/</link>
					<comments>https://jouniorsankosodate.com/eiken5-no-10/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:17:31 +0000</pubDate>
				<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=5322</guid>

					<description><![CDATA[<p>英検５級 フラッシュ英単語 No.10｜場所・建物（音声対応） 英検５級 フラッシュ英単語 No.10 場所・建物 日本語からスタート 🔊 音声ON — — 英語⇆日本語 ▶ 読み上げ わかった 👍 わからん！あとで復習 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-10/">英検５級 フラッシュ英単語 No.10｜場所・建物（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>英検５級 フラッシュ英単語 No.10｜場所・建物（音声対応）</title>

<style>
:root{
  --bg:#f7f7fb; --card:#ffffff; --ink:#111827; --muted:#6b7280;
  --accent:#10b981; --accent-weak:#d1fae5;
  --good:#22c55e; --review:#f59e0b;
  --shadow:0 6px 24px rgba(0,0,0,.08);
}
body{margin:0;background:var(--bg);}
.wrap{max-width:760px;margin:0 auto;padding:16px 16px 28px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial;color:var(--ink);}
header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 16px;flex-wrap:wrap;}
h1{font-size:18px;margin:0;font-weight:700;}
.badge{font-size:11px;color:var(--accent);background:var(--accent-weak);padding:3px 8px;border-radius:999px;}
.switches{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px;}
.switches input{accent-color:var(--accent);}
.card-outer{position:relative;perspective:1200px;margin:12px 0 8px;}
.card{position:relative;width:100%;min-height:190px;background:var(--card);border-radius:18px;box-shadow:var(--shadow);cursor:pointer;transform-style:preserve-3d;transition:transform .5s ease;}
.card.flipped{transform:rotateY(180deg);}
.face{position:absolute;inset:0;border-radius:18px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;padding:24px;text-align:center;}
.frontText{font-size:30px;font-weight:800;}
.backText{font-size:24px;font-weight:700;}
.card-face-back{transform:rotateY(180deg);}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}
.btn{appearance:none;border:1px solid #e5e7eb;background:#fff;padding:11px 12px;border-radius:13px;font-size:14px;font-weight:700;line-height:1.2;cursor:pointer;color:var(--ink);}
.btn:hover{background:#ecfdf5;}
.btn:active{transform:translateY(1px);}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.good{background:var(--good);color:#fff;border-color:var(--good);}
.btn.review{background:var(--review);color:#fff;border-color:var(--review);}
.meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:13px;}
.progress{height:8px;background:var(--accent-weak);border-radius:999px;overflow:hidden;flex:1;}
.bar{height:100%;width:0;background:var(--accent);transition:.25s;}
.index{min-width:90px;text-align:right;}
.hint{margin-top:8px;color:var(--muted);font-size:12px;}
.result-box{display:none;background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:24px;text-align:center;margin-top:16px;}
.result-box h2{margin:0 0 10px;font-size:22px;}
.result-box p{color:#475569;font-weight:700;}
.series-nav-wrap{margin:32px 0 12px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap;}
.series-nav-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700;border-radius:999px;padding:10px 18px;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.08);transition:.2s;font-size:14px;}
.series-nav-btn.nav-back{color:#10b981;border:2px solid #a7f3d0;}
.series-nav-btn.next{color:#047857;border:2px solid #a7f3d0;background:linear-gradient(135deg,#ecfdf5,#d1fae5);}
.series-nav-btn:hover{transform:translateY(-2px);}
@media (min-width:560px){.frontText{font-size:36px}.backText{font-size:26px}.card{min-height:220px}}
@media(max-width:480px){.controls{grid-template-columns:1fr}.series-nav-btn{width:100%;font-size:15px;padding:12px 18px}}
</style>
</head>

<body>
<div class="wrap" id="app" aria-live="polite">

<header>
  <h1>英検５級 フラッシュ英単語 <span class="badge">No.10 場所・建物</span></h1>
  <div class="switches">
    <label><input type="checkbox" id="jpFirst"> 日本語からスタート</label>
    <label><input type="checkbox" id="speakOn"> 🔊 音声ON</label>
  </div>
</header>

<div id="studyArea">
  <div class="card-outer" aria-label="フラッシュカード" role="button" tabindex="0">
    <div class="card" id="card">
      <div class="face card-face-front"><div class="frontText" id="frontText">—</div></div>
      <div class="face card-face-back"><div class="backText" id="backText">—</div></div>
    </div>
  </div>

  <div class="controls">
    <button class="btn primary" id="flipBtn">英語⇆日本語</button>
    <button class="btn" id="speakBtn">▶ 読み上げ</button>
    <button class="btn good" id="knownBtn">わかった 👍</button>
    <button class="btn review" id="wrongBtn">わからん！あとで復習 📌</button>
    <button class="btn" id="shuffleBtn">🔀 シャッフル</button>
    <button class="btn" id="resetBtn">↩︎ はじめから</button>
  </div>

  <div class="meta">
    <div class="progress"><div class="bar" id="bar"></div></div>
    <div class="index"><span id="pos">1</span>/<span id="total">—</span></div>
  </div>

  <p class="hint">カードをタップして答えを確認。わかったら「わかった」、不安なら「あとで復習」を押してね。</p>
</div>

<div class="result-box" id="resultBox">
  <h2 id="resultTitle">おつかれさま！✨</h2>
  <p id="resultText"></p>
  <div class="controls">
    <button class="btn review" id="reviewBtn">復習する 🔁</button>
    <button class="btn" id="againBtn">もう一回やる</button>
  </div>
</div>

<div class="series-nav-wrap">
  <a href="https://jouniorsankosodate.com/eiken5-no9/" class="series-nav-btn nav-back">← 前のレッスンへ</a>
  <a href="https://jouniorsankosodate.com/category/learn/english-flash/" class="series-nav-btn nav-back">英単語フラッシュのカテゴリ一覧に戻る</a>
  <a href="https://jouniorsankosodate.com/eiken5-no11/" class="series-nav-btn next">次のレッスンへ →</a>
</div>

</div>

<script>
const ITEMS = [
  { word: "school", jp: "学校" },
  { word: "park", jp: "公園" },
  { word: "library", jp: "図書館" },
  { word: "station", jp: "駅" },
  { word: "hospital", jp: "病院" },
  { word: "store", jp: "店" },
  { word: "restaurant", jp: "レストラン" },
  { word: "house", jp: "家" },
  { word: "room", jp: "部屋" },
  { word: "city", jp: "都市／街" }
];

let _voice = null;

function pickVoice(){
  const voices = speechSynthesis.getVoices() || [];
  const femaleNames = ["Sonia","Serena","Susan","Kate","Libby","Maisie","Google UK English Female","Microsoft Sonia","Microsoft Libby","Microsoft Susan"];

  return voices.find(v => v.lang === "en-GB" && femaleNames.some(name => v.name.includes(name)))
  || voices.find(v => v.lang === "en-GB")
  || voices.find(v => (v.lang || "").startsWith("en"))
  || null;
}

(() => {
  const card = document.getElementById("card");
  const frontText = document.getElementById("frontText");
  const backText = document.getElementById("backText");
  const posEl = document.getElementById("pos");
  const totalEl = document.getElementById("total");
  const bar = document.getElementById("bar");
  const jpFirst = document.getElementById("jpFirst");
  const speakOnChk = document.getElementById("speakOn");
  const flipBtn = document.getElementById("flipBtn");
  const speakBtn = document.getElementById("speakBtn");
  const knownBtn = document.getElementById("knownBtn");
  const wrongBtn = document.getElementById("wrongBtn");
  const shuffleBtn = document.getElementById("shuffleBtn");
  const resetBtn = document.getElementById("resetBtn");
  const studyArea = document.getElementById("studyArea");
  const resultBox = document.getElementById("resultBox");
  const resultTitle = document.getElementById("resultTitle");
  const resultText = document.getElementById("resultText");
  const reviewBtn = document.getElementById("reviewBtn");
  const againBtn = document.getElementById("againBtn");

  let order = [...Array(ITEMS.length).keys()];
  let idx = 0;
  let isFlipped = false;
  let showJpFirst = false;
  let speakOn = false;
  let reviewList = [];

  totalEl.textContent = order.length;

  speechSynthesis.addEventListener("voiceschanged", () => {_voice = pickVoice();});

  function speak(text){
    try{
      if(!("speechSynthesis" in window)) return;
      if(!_voice) _voice = pickVoice();

      const u = new SpeechSynthesisUtterance(text.trim());
      if(_voice){
        u.voice = _voice;
        u.lang = _voice.lang || "en-GB";
      }else{
        u.lang = "en-GB";
      }

      u.rate = 0.9;
      u.pitch = 1.05;
      speechSynthesis.cancel();
      speechSynthesis.speak(u);
    }catch(e){}
  }

  function currentItem(){return ITEMS[order[idx]];}

  function render(){
    const it = currentItem();
    card.classList.remove("flipped");
    isFlipped = false;

    frontText.textContent = showJpFirst ? it.jp : it.word;
    backText.textContent = showJpFirst ? it.word : it.jp;

    posEl.textContent = idx + 1;
    totalEl.textContent = order.length;
    bar.style.width = `${((idx + 1) / order.length) * 100}%`;

    if(speakOn){speak(it.word);}
  }

  function flip(){
    isFlipped = !isFlipped;
    card.classList.toggle("flipped", isFlipped);
  }

  function nextCard(){
    if(idx >= order.length - 1){
      showResult();
      return;
    }
    idx++;
    render();
  }

  function showResult(){
    studyArea.style.display = "none";
    resultBox.style.display = "block";

    if(reviewList.length === 0){
      resultTitle.textContent = "ぜんぶできた！すごい！！🎉";
      resultText.textContent = "あとで復習する単語は 0こ です。";
      reviewBtn.style.display = "none";
    }else{
      resultTitle.textContent = "おつかれさま！✨";
      resultText.textContent = `あとで復習する単語は ${reviewList.length}こ あるよ。`;
      reviewBtn.style.display = "inline-block";
    }
  }

  function startStudy(newOrder){
    order = [...newOrder];
    idx = 0;
    studyArea.style.display = "block";
    resultBox.style.display = "none";
    render();
  }

  function resetAll(){
    reviewList = [];
    startStudy([...Array(ITEMS.length).keys()]);
  }

  function shuffleOrder(){
    for(let i = order.length - 1; i > 0; i--){
      const j = Math.floor(Math.random() * (i + 1));
      [order[i], order[j]] = [order[j], order[i]];
    }
    idx = 0;
    render();
  }

  card.addEventListener("click", flip);
  flipBtn.addEventListener("click", flip);
  speakBtn.addEventListener("click", () => speak(currentItem().word));
  knownBtn.addEventListener("click", nextCard);

  wrongBtn.addEventListener("click", () => {
    const currentIndex = order[idx];
    if(!reviewList.includes(currentIndex)){reviewList.push(currentIndex);}
    nextCard();
  });

  reviewBtn.addEventListener("click", () => {
    if(reviewList.length === 0) return;
    const list = [...reviewList];
    reviewList = [];
    startStudy(list);
  });

  againBtn.addEventListener("click", resetAll);
  shuffleBtn.addEventListener("click", shuffleOrder);
  resetBtn.addEventListener("click", resetAll);

  jpFirst.addEventListener("change", e => {
    showJpFirst = e.target.checked;
    render();
  });

  speakOnChk.addEventListener("change", e => {
    speakOn = e.target.checked;
    if(speakOn) speak(currentItem().word);
  });

  window.addEventListener("keydown", e => {
    if(e.key === " "){
      e.preventDefault();
      flip();
    }
  });

  render();
})();
</script>
</body>
</html>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-10/">英検５級 フラッシュ英単語 No.10｜場所・建物（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/eiken5-no-10/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>英検５級 フラッシュ英単語 No.9｜時間・曜日（音声対応）</title>
		<link>https://jouniorsankosodate.com/eiken5-no-9/</link>
					<comments>https://jouniorsankosodate.com/eiken5-no-9/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:15:58 +0000</pubDate>
				<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=5319</guid>

					<description><![CDATA[<p>英検５級 フラッシュ英単語 No.9｜時間・曜日（音声対応） 英検５級 フラッシュ英単語 No.9 時間・曜日 日本語からスタート 🔊 音声ON — — 英語⇆日本語 ▶ 読み上げ わかった 👍 わからん！あとで復習 📌 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-9/">英検５級 フラッシュ英単語 No.9｜時間・曜日（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>英検５級 フラッシュ英単語 No.9｜時間・曜日（音声対応）</title>

<style>
:root{
  --bg:#f7f7fb; --card:#ffffff; --ink:#111827; --muted:#6b7280;
  --accent:#f97316; --accent-weak:#ffedd5;
  --good:#22c55e; --review:#f59e0b;
  --shadow:0 6px 24px rgba(0,0,0,.08);
}
body{margin:0;background:var(--bg);}
.wrap{max-width:760px;margin:0 auto;padding:16px 16px 28px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial;color:var(--ink);}
header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 16px;flex-wrap:wrap;}
h1{font-size:18px;margin:0;font-weight:700;}
.badge{font-size:11px;color:var(--accent);background:var(--accent-weak);padding:3px 8px;border-radius:999px;}
.switches{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px;}
.switches input{accent-color:var(--accent);}
.card-outer{position:relative;perspective:1200px;margin:12px 0 8px;}
.card{position:relative;width:100%;min-height:190px;background:var(--card);border-radius:18px;box-shadow:var(--shadow);cursor:pointer;transform-style:preserve-3d;transition:transform .5s ease;}
.card.flipped{transform:rotateY(180deg);}
.face{position:absolute;inset:0;border-radius:18px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;padding:24px;text-align:center;}
.frontText{font-size:30px;font-weight:800;}
.backText{font-size:24px;font-weight:700;}
.card-face-back{transform:rotateY(180deg);}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}
.btn{appearance:none;border:1px solid #e5e7eb;background:#fff;padding:11px 12px;border-radius:13px;font-size:14px;font-weight:700;line-height:1.2;cursor:pointer;color:var(--ink);}
.btn:hover{background:#fff7ed;}
.btn:active{transform:translateY(1px);}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.good{background:var(--good);color:#fff;border-color:var(--good);}
.btn.review{background:var(--review);color:#fff;border-color:var(--review);}
.meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:13px;}
.progress{height:8px;background:var(--accent-weak);border-radius:999px;overflow:hidden;flex:1;}
.bar{height:100%;width:0;background:var(--accent);transition:.25s;}
.index{min-width:90px;text-align:right;}
.hint{margin-top:8px;color:var(--muted);font-size:12px;}
.result-box{display:none;background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:24px;text-align:center;margin-top:16px;}
.result-box h2{margin:0 0 10px;font-size:22px;}
.result-box p{color:#475569;font-weight:700;}
.series-nav-wrap{margin:32px 0 12px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap;}
.series-nav-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700;border-radius:999px;padding:10px 18px;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.08);transition:.2s;font-size:14px;}
.series-nav-btn.nav-back{color:#f97316;border:2px solid #fed7aa;}
.series-nav-btn.next{color:#ea580c;border:2px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffedd5);}
.series-nav-btn:hover{transform:translateY(-2px);}
@media (min-width:560px){.frontText{font-size:36px}.backText{font-size:26px}.card{min-height:220px}}
@media(max-width:480px){.controls{grid-template-columns:1fr}.series-nav-btn{width:100%;font-size:15px;padding:12px 18px}}
</style>
</head>

<body>
<div class="wrap" id="app" aria-live="polite">

<header>
  <h1>英検５級 フラッシュ英単語 <span class="badge">No.9 時間・曜日</span></h1>
  <div class="switches">
    <label><input type="checkbox" id="jpFirst"> 日本語からスタート</label>
    <label><input type="checkbox" id="speakOn"> 🔊 音声ON</label>
  </div>
</header>

<div id="studyArea">
  <div class="card-outer" aria-label="フラッシュカード" role="button" tabindex="0">
    <div class="card" id="card">
      <div class="face card-face-front"><div class="frontText" id="frontText">—</div></div>
      <div class="face card-face-back"><div class="backText" id="backText">—</div></div>
    </div>
  </div>

  <div class="controls">
    <button class="btn primary" id="flipBtn">英語⇆日本語</button>
    <button class="btn" id="speakBtn">▶ 読み上げ</button>
    <button class="btn good" id="knownBtn">わかった 👍</button>
    <button class="btn review" id="wrongBtn">わからん！あとで復習 📌</button>
    <button class="btn" id="shuffleBtn">🔀 シャッフル</button>
    <button class="btn" id="resetBtn">↩︎ はじめから</button>
  </div>

  <div class="meta">
    <div class="progress"><div class="bar" id="bar"></div></div>
    <div class="index"><span id="pos">1</span>/<span id="total">—</span></div>
  </div>

  <p class="hint">カードをタップして答えを確認。わかったら「わかった」、不安なら「あとで復習」を押してね。</p>
</div>

<div class="result-box" id="resultBox">
  <h2 id="resultTitle">おつかれさま！✨</h2>
  <p id="resultText"></p>
  <div class="controls">
    <button class="btn review" id="reviewBtn">復習する 🔁</button>
    <button class="btn" id="againBtn">もう一回やる</button>
  </div>
</div>

<div class="series-nav-wrap">
  <a href="https://jouniorsankosodate.com/eiken5-no8/" class="series-nav-btn nav-back">← 前のレッスンへ</a>
  <a href="https://jouniorsankosodate.com/category/learn/english-flash/" class="series-nav-btn nav-back">英単語フラッシュのカテゴリ一覧に戻る</a>
  <a href="https://jouniorsankosodate.com/eiken5-no10/" class="series-nav-btn next">次のレッスンへ →</a>
</div>

</div>

<script>
const ITEMS = [
  { word: "Sunday", jp: "日曜日" },
  { word: "Monday", jp: "月曜日" },
  { word: "Tuesday", jp: "火曜日" },
  { word: "Wednesday", jp: "水曜日" },
  { word: "Thursday", jp: "木曜日" },
  { word: "Friday", jp: "金曜日" },
  { word: "Saturday", jp: "土曜日" },
  { word: "today", jp: "今日" },
  { word: "tomorrow", jp: "明日" },
  { word: "yesterday", jp: "昨日" },
  { word: "morning", jp: "朝／午前" },
  { word: "afternoon", jp: "午後" },
  { word: "evening", jp: "夕方／晩" },
  { word: "night", jp: "夜" },
  { word: "time", jp: "時間" },
  { word: "hour", jp: "1時間" },
  { word: "minute", jp: "分" },
  { word: "o'clock", jp: "〜時" }
];

let _voice = null;

function pickVoice(){
  const voices = speechSynthesis.getVoices() || [];
  const femaleNames = ["Sonia","Serena","Susan","Kate","Libby","Maisie","Google UK English Female","Microsoft Sonia","Microsoft Libby","Microsoft Susan"];

  return voices.find(v => v.lang === "en-GB" && femaleNames.some(name => v.name.includes(name)))
  || voices.find(v => v.lang === "en-GB")
  || voices.find(v => (v.lang || "").startsWith("en"))
  || null;
}

(() => {
  const card = document.getElementById("card");
  const frontText = document.getElementById("frontText");
  const backText = document.getElementById("backText");
  const posEl = document.getElementById("pos");
  const totalEl = document.getElementById("total");
  const bar = document.getElementById("bar");
  const jpFirst = document.getElementById("jpFirst");
  const speakOnChk = document.getElementById("speakOn");
  const flipBtn = document.getElementById("flipBtn");
  const speakBtn = document.getElementById("speakBtn");
  const knownBtn = document.getElementById("knownBtn");
  const wrongBtn = document.getElementById("wrongBtn");
  const shuffleBtn = document.getElementById("shuffleBtn");
  const resetBtn = document.getElementById("resetBtn");
  const studyArea = document.getElementById("studyArea");
  const resultBox = document.getElementById("resultBox");
  const resultTitle = document.getElementById("resultTitle");
  const resultText = document.getElementById("resultText");
  const reviewBtn = document.getElementById("reviewBtn");
  const againBtn = document.getElementById("againBtn");

  let order = [...Array(ITEMS.length).keys()];
  let idx = 0;
  let isFlipped = false;
  let showJpFirst = false;
  let speakOn = false;
  let reviewList = [];

  totalEl.textContent = order.length;

  speechSynthesis.addEventListener("voiceschanged", () => {_voice = pickVoice();});

  function speak(text){
    try{
      if(!("speechSynthesis" in window)) return;
      if(!_voice) _voice = pickVoice();

      const u = new SpeechSynthesisUtterance(text.trim());
      if(_voice){
        u.voice = _voice;
        u.lang = _voice.lang || "en-GB";
      }else{
        u.lang = "en-GB";
      }

      u.rate = 0.9;
      u.pitch = 1.05;
      speechSynthesis.cancel();
      speechSynthesis.speak(u);
    }catch(e){}
  }

  function currentItem(){return ITEMS[order[idx]];}

  function render(){
    const it = currentItem();
    card.classList.remove("flipped");
    isFlipped = false;

    frontText.textContent = showJpFirst ? it.jp : it.word;
    backText.textContent = showJpFirst ? it.word : it.jp;

    posEl.textContent = idx + 1;
    totalEl.textContent = order.length;
    bar.style.width = `${((idx + 1) / order.length) * 100}%`;

    if(speakOn){speak(it.word);}
  }

  function flip(){
    isFlipped = !isFlipped;
    card.classList.toggle("flipped", isFlipped);
  }

  function nextCard(){
    if(idx >= order.length - 1){
      showResult();
      return;
    }
    idx++;
    render();
  }

  function showResult(){
    studyArea.style.display = "none";
    resultBox.style.display = "block";

    if(reviewList.length === 0){
      resultTitle.textContent = "ぜんぶできた！すごい！！🎉";
      resultText.textContent = "あとで復習する単語は 0こ です。";
      reviewBtn.style.display = "none";
    }else{
      resultTitle.textContent = "おつかれさま！✨";
      resultText.textContent = `あとで復習する単語は ${reviewList.length}こ あるよ。`;
      reviewBtn.style.display = "inline-block";
    }
  }

  function startStudy(newOrder){
    order = [...newOrder];
    idx = 0;
    studyArea.style.display = "block";
    resultBox.style.display = "none";
    render();
  }

  function resetAll(){
    reviewList = [];
    startStudy([...Array(ITEMS.length).keys()]);
  }

  function shuffleOrder(){
    for(let i = order.length - 1; i > 0; i--){
      const j = Math.floor(Math.random() * (i + 1));
      [order[i], order[j]] = [order[j], order[i]];
    }
    idx = 0;
    render();
  }

  card.addEventListener("click", flip);
  flipBtn.addEventListener("click", flip);
  speakBtn.addEventListener("click", () => speak(currentItem().word));
  knownBtn.addEventListener("click", nextCard);

  wrongBtn.addEventListener("click", () => {
    const currentIndex = order[idx];
    if(!reviewList.includes(currentIndex)){reviewList.push(currentIndex);}
    nextCard();
  });

  reviewBtn.addEventListener("click", () => {
    if(reviewList.length === 0) return;
    const list = [...reviewList];
    reviewList = [];
    startStudy(list);
  });

  againBtn.addEventListener("click", resetAll);
  shuffleBtn.addEventListener("click", shuffleOrder);
  resetBtn.addEventListener("click", resetAll);

  jpFirst.addEventListener("change", e => {
    showJpFirst = e.target.checked;
    render();
  });

  speakOnChk.addEventListener("change", e => {
    speakOn = e.target.checked;
    if(speakOn) speak(currentItem().word);
  });

  window.addEventListener("keydown", e => {
    if(e.key === " "){
      e.preventDefault();
      flip();
    }
  });

  render();
})();
</script>
</body>
</html>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-9/">英検５級 フラッシュ英単語 No.9｜時間・曜日（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/eiken5-no-9/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>英検５級 フラッシュ英単語 No.8｜教科・学校生活（音声対応）</title>
		<link>https://jouniorsankosodate.com/eiken5-no-8/</link>
					<comments>https://jouniorsankosodate.com/eiken5-no-8/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:14:49 +0000</pubDate>
				<category><![CDATA[🟧英検５級 英語シリーズ]]></category>
		<category><![CDATA[＃フラッシュ]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[#英単語]]></category>
		<category><![CDATA[＃英検５級]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=5317</guid>

					<description><![CDATA[<p>英検５級 フラッシュ英単語 No.8｜教科・学校生活（音声対応） 英検５級 フラッシュ英単語 No.8 教科・学校生活 日本語からスタート 🔊 音声ON — — 英語⇆日本語 ▶ 読み上げ わかった 👍 わからん！あとで [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-8/">英検５級 フラッシュ英単語 No.8｜教科・学校生活（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>英検５級 フラッシュ英単語 No.8｜教科・学校生活（音声対応）</title>

<style>
:root{
  --bg:#f7f7fb; --card:#ffffff; --ink:#111827; --muted:#6b7280;
  --accent:#3b82f6; --accent-weak:#dbeafe;
  --good:#22c55e; --review:#f59e0b;
  --shadow:0 6px 24px rgba(0,0,0,.08);
}
body{margin:0;background:var(--bg);}
.wrap{max-width:760px;margin:0 auto;padding:16px 16px 28px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial;color:var(--ink);}
header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 16px;flex-wrap:wrap;}
h1{font-size:18px;margin:0;font-weight:700;}
.badge{font-size:11px;color:var(--accent);background:var(--accent-weak);padding:3px 8px;border-radius:999px;}
.switches{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px;}
.switches input{accent-color:var(--accent);}
.card-outer{position:relative;perspective:1200px;margin:12px 0 8px;}
.card{position:relative;width:100%;min-height:190px;background:var(--card);border-radius:18px;box-shadow:var(--shadow);cursor:pointer;transform-style:preserve-3d;transition:transform .5s ease;}
.card.flipped{transform:rotateY(180deg);}
.face{position:absolute;inset:0;border-radius:18px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;padding:24px;text-align:center;}
.frontText{font-size:30px;font-weight:800;}
.backText{font-size:24px;font-weight:700;}
.card-face-back{transform:rotateY(180deg);}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}
.btn{appearance:none;border:1px solid #e5e7eb;background:#fff;padding:11px 12px;border-radius:13px;font-size:14px;font-weight:700;line-height:1.2;cursor:pointer;color:var(--ink);}
.btn:hover{background:#eff6ff;}
.btn:active{transform:translateY(1px);}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.good{background:var(--good);color:#fff;border-color:var(--good);}
.btn.review{background:var(--review);color:#fff;border-color:var(--review);}
.meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:13px;}
.progress{height:8px;background:var(--accent-weak);border-radius:999px;overflow:hidden;flex:1;}
.bar{height:100%;width:0;background:var(--accent);transition:.25s;}
.index{min-width:90px;text-align:right;}
.hint{margin-top:8px;color:var(--muted);font-size:12px;}
.result-box{display:none;background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:24px;text-align:center;margin-top:16px;}
.result-box h2{margin:0 0 10px;font-size:22px;}
.result-box p{color:#475569;font-weight:700;}
.series-nav-wrap{margin:32px 0 12px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap;}
.series-nav-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700;border-radius:999px;padding:10px 18px;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.08);transition:.2s;font-size:14px;}
.series-nav-btn.nav-back{color:#3b82f6;border:2px solid #bfdbfe;}
.series-nav-btn.next{color:#1d4ed8;border:2px solid #bfdbfe;background:linear-gradient(135deg,#eff6ff,#dbeafe);}
.series-nav-btn:hover{transform:translateY(-2px);}
@media (min-width:560px){.frontText{font-size:36px}.backText{font-size:26px}.card{min-height:220px}}
@media(max-width:480px){.controls{grid-template-columns:1fr}.series-nav-btn{width:100%;font-size:15px;padding:12px 18px}}
</style>
</head>

<body>
<div class="wrap" id="app" aria-live="polite">

<header>
  <h1>英検５級 フラッシュ英単語 <span class="badge">No.8 教科・学校生活</span></h1>
  <div class="switches">
    <label><input type="checkbox" id="jpFirst"> 日本語からスタート</label>
    <label><input type="checkbox" id="speakOn"> 🔊 音声ON</label>
  </div>
</header>

<div id="studyArea">
  <div class="card-outer" aria-label="フラッシュカード" role="button" tabindex="0">
    <div class="card" id="card">
      <div class="face card-face-front"><div class="frontText" id="frontText">—</div></div>
      <div class="face card-face-back"><div class="backText" id="backText">—</div></div>
    </div>
  </div>

  <div class="controls">
    <button class="btn primary" id="flipBtn">英語⇆日本語</button>
    <button class="btn" id="speakBtn">▶ 読み上げ</button>
    <button class="btn good" id="knownBtn">わかった 👍</button>
    <button class="btn review" id="wrongBtn">わからん！あとで復習 📌</button>
    <button class="btn" id="shuffleBtn">🔀 シャッフル</button>
    <button class="btn" id="resetBtn">↩︎ はじめから</button>
  </div>

  <div class="meta">
    <div class="progress"><div class="bar" id="bar"></div></div>
    <div class="index"><span id="pos">1</span>/<span id="total">—</span></div>
  </div>

  <p class="hint">カードをタップして答えを確認。わかったら「わかった」、不安なら「あとで復習」を押してね。</p>
</div>

<div class="result-box" id="resultBox">
  <h2 id="resultTitle">おつかれさま！✨</h2>
  <p id="resultText"></p>
  <div class="controls">
    <button class="btn review" id="reviewBtn">復習する 🔁</button>
    <button class="btn" id="againBtn">もう一回やる</button>
  </div>
</div>

<div class="series-nav-wrap">
  <a href="https://jouniorsankosodate.com/eiken5-no7/" class="series-nav-btn nav-back">← 前のレッスンへ</a>
  <a href="https://jouniorsankosodate.com/category/learn/english-flash/" class="series-nav-btn nav-back">英単語フラッシュのカテゴリ一覧に戻る</a>
  <a href="https://jouniorsankosodate.com/eiken5-no9/" class="series-nav-btn next">次のレッスンへ →</a>
</div>

</div>

<script>
const ITEMS = [
  { word: "English", jp: "英語" },
  { word: "math", jp: "算数" },
  { word: "science", jp: "理科" },
  { word: "music", jp: "音楽" },
  { word: "P.E.", jp: "体育" },
  { word: "art", jp: "図工／美術" },
  { word: "Japanese", jp: "国語" },
  { word: "class", jp: "授業／クラス" },
  { word: "lesson", jp: "レッスン／授業" },
  { word: "homework", jp: "宿題" },
  { word: "test", jp: "テスト" },
  { word: "question", jp: "質問／問題" },
  { word: "answer", jp: "答え" },
  { word: "notebook", jp: "ノート" },
  { word: "dictionary", jp: "辞書" }
];

let _voice = null;

function pickVoice(){
  const voices = speechSynthesis.getVoices() || [];
  const femaleNames = ["Sonia","Serena","Susan","Kate","Libby","Maisie","Google UK English Female","Microsoft Sonia","Microsoft Libby","Microsoft Susan"];

  return voices.find(v => v.lang === "en-GB" && femaleNames.some(name => v.name.includes(name)))
  || voices.find(v => v.lang === "en-GB")
  || voices.find(v => (v.lang || "").startsWith("en"))
  || null;
}

(() => {
  const card = document.getElementById("card");
  const frontText = document.getElementById("frontText");
  const backText = document.getElementById("backText");
  const posEl = document.getElementById("pos");
  const totalEl = document.getElementById("total");
  const bar = document.getElementById("bar");
  const jpFirst = document.getElementById("jpFirst");
  const speakOnChk = document.getElementById("speakOn");
  const flipBtn = document.getElementById("flipBtn");
  const speakBtn = document.getElementById("speakBtn");
  const knownBtn = document.getElementById("knownBtn");
  const wrongBtn = document.getElementById("wrongBtn");
  const shuffleBtn = document.getElementById("shuffleBtn");
  const resetBtn = document.getElementById("resetBtn");
  const studyArea = document.getElementById("studyArea");
  const resultBox = document.getElementById("resultBox");
  const resultTitle = document.getElementById("resultTitle");
  const resultText = document.getElementById("resultText");
  const reviewBtn = document.getElementById("reviewBtn");
  const againBtn = document.getElementById("againBtn");

  let order = [...Array(ITEMS.length).keys()];
  let idx = 0;
  let isFlipped = false;
  let showJpFirst = false;
  let speakOn = false;
  let reviewList = [];

  totalEl.textContent = order.length;

  speechSynthesis.addEventListener("voiceschanged", () => {_voice = pickVoice();});

  function speak(text){
    try{
      if(!("speechSynthesis" in window)) return;
      if(!_voice) _voice = pickVoice();

      const u = new SpeechSynthesisUtterance(text.trim());
      if(_voice){
        u.voice = _voice;
        u.lang = _voice.lang || "en-GB";
      }else{
        u.lang = "en-GB";
      }

      u.rate = 0.9;
      u.pitch = 1.05;
      speechSynthesis.cancel();
      speechSynthesis.speak(u);
    }catch(e){}
  }

  function currentItem(){return ITEMS[order[idx]];}

  function render(){
    const it = currentItem();
    card.classList.remove("flipped");
    isFlipped = false;

    frontText.textContent = showJpFirst ? it.jp : it.word;
    backText.textContent = showJpFirst ? it.word : it.jp;

    posEl.textContent = idx + 1;
    totalEl.textContent = order.length;
    bar.style.width = `${((idx + 1) / order.length) * 100}%`;

    if(speakOn){speak(it.word);}
  }

  function flip(){
    isFlipped = !isFlipped;
    card.classList.toggle("flipped", isFlipped);
  }

  function nextCard(){
    if(idx >= order.length - 1){
      showResult();
      return;
    }
    idx++;
    render();
  }

  function showResult(){
    studyArea.style.display = "none";
    resultBox.style.display = "block";

    if(reviewList.length === 0){
      resultTitle.textContent = "ぜんぶできた！すごい！！🎉";
      resultText.textContent = "あとで復習する単語は 0こ です。";
      reviewBtn.style.display = "none";
    }else{
      resultTitle.textContent = "おつかれさま！✨";
      resultText.textContent = `あとで復習する単語は ${reviewList.length}こ あるよ。`;
      reviewBtn.style.display = "inline-block";
    }
  }

  function startStudy(newOrder){
    order = [...newOrder];
    idx = 0;
    studyArea.style.display = "block";
    resultBox.style.display = "none";
    render();
  }

  function resetAll(){
    reviewList = [];
    startStudy([...Array(ITEMS.length).keys()]);
  }

  function shuffleOrder(){
    for(let i = order.length - 1; i > 0; i--){
      const j = Math.floor(Math.random() * (i + 1));
      [order[i], order[j]] = [order[j], order[i]];
    }
    idx = 0;
    render();
  }

  card.addEventListener("click", flip);
  flipBtn.addEventListener("click", flip);
  speakBtn.addEventListener("click", () => speak(currentItem().word));
  knownBtn.addEventListener("click", nextCard);

  wrongBtn.addEventListener("click", () => {
    const currentIndex = order[idx];
    if(!reviewList.includes(currentIndex)){reviewList.push(currentIndex);}
    nextCard();
  });

  reviewBtn.addEventListener("click", () => {
    if(reviewList.length === 0) return;
    const list = [...reviewList];
    reviewList = [];
    startStudy(list);
  });

  againBtn.addEventListener("click", resetAll);
  shuffleBtn.addEventListener("click", shuffleOrder);
  resetBtn.addEventListener("click", resetAll);

  jpFirst.addEventListener("change", e => {
    showJpFirst = e.target.checked;
    render();
  });

  speakOnChk.addEventListener("change", e => {
    speakOn = e.target.checked;
    if(speakOn) speak(currentItem().word);
  });

  window.addEventListener("keydown", e => {
    if(e.key === " "){
      e.preventDefault();
      flip();
    }
  });

  render();
})();
</script>
</body>
</html>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no-8/">英検５級 フラッシュ英単語 No.8｜教科・学校生活（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/eiken5-no-8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>英検５級 フラッシュ英単語 No.7｜季節・天気（音声対応）</title>
		<link>https://jouniorsankosodate.com/eiken5-no7/</link>
					<comments>https://jouniorsankosodate.com/eiken5-no7/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sat, 02 May 2026 08:14:11 +0000</pubDate>
				<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=5315</guid>

					<description><![CDATA[<p>英検５級 フラッシュ英単語 No.7｜季節・天気（音声対応） 英検５級 フラッシュ英単語 No.7 季節・天気 日本語からスタート 🔊 音声ON — — 英語⇆日本語 ▶ 読み上げ わかった 👍 わからん！あとで復習 📌 [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no7/">英検５級 フラッシュ英単語 No.7｜季節・天気（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>英検５級 フラッシュ英単語 No.7｜季節・天気（音声対応）</title>

<style>
:root{
  --bg:#f7f7fb; --card:#ffffff; --ink:#111827; --muted:#6b7280;
  --accent:#14b8a6; --accent-weak:#ccfbf1;
  --good:#22c55e; --review:#f59e0b;
  --shadow:0 6px 24px rgba(0,0,0,.08);
}
body{margin:0;background:var(--bg);}
.wrap{max-width:760px;margin:0 auto;padding:16px 16px 28px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial;color:var(--ink);}
header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 16px;flex-wrap:wrap;}
h1{font-size:18px;margin:0;font-weight:700;}
.badge{font-size:11px;color:var(--accent);background:var(--accent-weak);padding:3px 8px;border-radius:999px;}
.switches{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px;}
.switches input{accent-color:var(--accent);}
.card-outer{position:relative;perspective:1200px;margin:12px 0 8px;}
.card{position:relative;width:100%;min-height:190px;background:var(--card);border-radius:18px;box-shadow:var(--shadow);cursor:pointer;transform-style:preserve-3d;transition:transform .5s ease;}
.card.flipped{transform:rotateY(180deg);}
.face{position:absolute;inset:0;border-radius:18px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;padding:24px;text-align:center;}
.frontText{font-size:30px;font-weight:800;}
.backText{font-size:24px;font-weight:700;}
.card-face-back{transform:rotateY(180deg);}
.controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}
.btn{appearance:none;border:1px solid #e5e7eb;background:#fff;padding:11px 12px;border-radius:13px;font-size:14px;font-weight:700;line-height:1.2;cursor:pointer;color:var(--ink);}
.btn:hover{background:#f0fdfa;}
.btn:active{transform:translateY(1px);}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.good{background:var(--good);color:#fff;border-color:var(--good);}
.btn.review{background:var(--review);color:#fff;border-color:var(--review);}
.meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:var(--muted);font-size:13px;}
.progress{height:8px;background:var(--accent-weak);border-radius:999px;overflow:hidden;flex:1;}
.bar{height:100%;width:0;background:var(--accent);transition:.25s;}
.index{min-width:90px;text-align:right;}
.hint{margin-top:8px;color:var(--muted);font-size:12px;}
.result-box{display:none;background:#fff;border-radius:18px;box-shadow:var(--shadow);padding:24px;text-align:center;margin-top:16px;}
.result-box h2{margin:0 0 10px;font-size:22px;}
.result-box p{color:#475569;font-weight:700;}
.series-nav-wrap{margin:32px 0 12px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap;}
.series-nav-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700;border-radius:999px;padding:10px 18px;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.08);transition:.2s;font-size:14px;}
.series-nav-btn.nav-back{color:#14b8a6;border:2px solid #99f6e4;}
.series-nav-btn.next{color:#0f766e;border:2px solid #99f6e4;background:linear-gradient(135deg,#f0fdfa,#ccfbf1);}
.series-nav-btn:hover{transform:translateY(-2px);}
@media (min-width:560px){.frontText{font-size:36px}.backText{font-size:26px}.card{min-height:220px}}
@media(max-width:480px){.controls{grid-template-columns:1fr}.series-nav-btn{width:100%;font-size:15px;padding:12px 18px}}
</style>
</head>

<body>
<div class="wrap" id="app" aria-live="polite">

<header>
  <h1>英検５級 フラッシュ英単語 <span class="badge">No.7 季節・天気</span></h1>
  <div class="switches">
    <label><input type="checkbox" id="jpFirst"> 日本語からスタート</label>
    <label><input type="checkbox" id="speakOn"> 🔊 音声ON</label>
  </div>
</header>

<div id="studyArea">
  <div class="card-outer" aria-label="フラッシュカード" role="button" tabindex="0">
    <div class="card" id="card">
      <div class="face card-face-front"><div class="frontText" id="frontText">—</div></div>
      <div class="face card-face-back"><div class="backText" id="backText">—</div></div>
    </div>
  </div>

  <div class="controls">
    <button class="btn primary" id="flipBtn">英語⇆日本語</button>
    <button class="btn" id="speakBtn">▶ 読み上げ</button>
    <button class="btn good" id="knownBtn">わかった 👍</button>
    <button class="btn review" id="wrongBtn">わからん！あとで復習 📌</button>
    <button class="btn" id="shuffleBtn">🔀 シャッフル</button>
    <button class="btn" id="resetBtn">↩︎ はじめから</button>
  </div>

  <div class="meta">
    <div class="progress"><div class="bar" id="bar"></div></div>
    <div class="index"><span id="pos">1</span>/<span id="total">—</span></div>
  </div>

  <p class="hint">カードをタップして答えを確認。わかったら「わかった」、不安なら「あとで復習」を押してね。</p>
</div>

<div class="result-box" id="resultBox">
  <h2 id="resultTitle">おつかれさま！✨</h2>
  <p id="resultText"></p>
  <div class="controls">
    <button class="btn review" id="reviewBtn">復習する 🔁</button>
    <button class="btn" id="againBtn">もう一回やる</button>
  </div>
</div>

<div class="series-nav-wrap">
  <a href="https://jouniorsankosodate.com/eiken5-no6/" class="series-nav-btn nav-back">← 前のレッスンへ</a>
  <a href="https://jouniorsankosodate.com/category/learn/english-flash/" class="series-nav-btn nav-back">英単語フラッシュのカテゴリ一覧に戻る</a>
  <a href="https://jouniorsankosodate.com/eiken5-no8/" class="series-nav-btn next">次のレッスンへ →</a>
</div>

</div>

<script>
const ITEMS = [
  { word: "spring", jp: "春" },
  { word: "summer", jp: "夏" },
  { word: "fall", jp: "秋" },
  { word: "winter", jp: "冬" },
  { word: "season", jp: "季節" },
  { word: "weather", jp: "天気" },
  { word: "sunny", jp: "晴れた" },
  { word: "rainy", jp: "雨の" },
  { word: "cloudy", jp: "くもりの" },
  { word: "snowy", jp: "雪の" },
  { word: "hot", jp: "暑い" },
  { word: "cold", jp: "寒い" },
  { word: "warm", jp: "暖かい" },
  { word: "cool", jp: "涼しい" }
];

let _voice = null;

function pickVoice(){
  const voices = speechSynthesis.getVoices() || [];
  const femaleNames = ["Sonia","Serena","Susan","Kate","Libby","Maisie","Google UK English Female","Microsoft Sonia","Microsoft Libby","Microsoft Susan"];

  return voices.find(v => v.lang === "en-GB" && femaleNames.some(name => v.name.includes(name)))
  || voices.find(v => v.lang === "en-GB")
  || voices.find(v => (v.lang || "").startsWith("en"))
  || null;
}

(() => {
  const card = document.getElementById("card");
  const frontText = document.getElementById("frontText");
  const backText = document.getElementById("backText");
  const posEl = document.getElementById("pos");
  const totalEl = document.getElementById("total");
  const bar = document.getElementById("bar");
  const jpFirst = document.getElementById("jpFirst");
  const speakOnChk = document.getElementById("speakOn");
  const flipBtn = document.getElementById("flipBtn");
  const speakBtn = document.getElementById("speakBtn");
  const knownBtn = document.getElementById("knownBtn");
  const wrongBtn = document.getElementById("wrongBtn");
  const shuffleBtn = document.getElementById("shuffleBtn");
  const resetBtn = document.getElementById("resetBtn");
  const studyArea = document.getElementById("studyArea");
  const resultBox = document.getElementById("resultBox");
  const resultTitle = document.getElementById("resultTitle");
  const resultText = document.getElementById("resultText");
  const reviewBtn = document.getElementById("reviewBtn");
  const againBtn = document.getElementById("againBtn");

  let order = [...Array(ITEMS.length).keys()];
  let idx = 0;
  let isFlipped = false;
  let showJpFirst = false;
  let speakOn = false;
  let reviewList = [];

  totalEl.textContent = order.length;

  speechSynthesis.addEventListener("voiceschanged", () => {_voice = pickVoice();});

  function speak(text){
    try{
      if(!("speechSynthesis" in window)) return;
      if(!_voice) _voice = pickVoice();

      const u = new SpeechSynthesisUtterance(text.trim());
      if(_voice){
        u.voice = _voice;
        u.lang = _voice.lang || "en-GB";
      }else{
        u.lang = "en-GB";
      }

      u.rate = 0.9;
      u.pitch = 1.05;
      speechSynthesis.cancel();
      speechSynthesis.speak(u);
    }catch(e){}
  }

  function currentItem(){return ITEMS[order[idx]];}

  function render(){
    const it = currentItem();
    card.classList.remove("flipped");
    isFlipped = false;

    frontText.textContent = showJpFirst ? it.jp : it.word;
    backText.textContent = showJpFirst ? it.word : it.jp;

    posEl.textContent = idx + 1;
    totalEl.textContent = order.length;
    bar.style.width = `${((idx + 1) / order.length) * 100}%`;

    if(speakOn){speak(it.word);}
  }

  function flip(){
    isFlipped = !isFlipped;
    card.classList.toggle("flipped", isFlipped);
  }

  function nextCard(){
    if(idx >= order.length - 1){
      showResult();
      return;
    }
    idx++;
    render();
  }

  function showResult(){
    studyArea.style.display = "none";
    resultBox.style.display = "block";

    if(reviewList.length === 0){
      resultTitle.textContent = "ぜんぶできた！すごい！！🎉";
      resultText.textContent = "あとで復習する単語は 0こ です。";
      reviewBtn.style.display = "none";
    }else{
      resultTitle.textContent = "おつかれさま！✨";
      resultText.textContent = `あとで復習する単語は ${reviewList.length}こ あるよ。`;
      reviewBtn.style.display = "inline-block";
    }
  }

  function startStudy(newOrder){
    order = [...newOrder];
    idx = 0;
    studyArea.style.display = "block";
    resultBox.style.display = "none";
    render();
  }

  function resetAll(){
    reviewList = [];
    startStudy([...Array(ITEMS.length).keys()]);
  }

  function shuffleOrder(){
    for(let i = order.length - 1; i > 0; i--){
      const j = Math.floor(Math.random() * (i + 1));
      [order[i], order[j]] = [order[j], order[i]];
    }
    idx = 0;
    render();
  }

  card.addEventListener("click", flip);
  flipBtn.addEventListener("click", flip);
  speakBtn.addEventListener("click", () => speak(currentItem().word));
  knownBtn.addEventListener("click", nextCard);

  wrongBtn.addEventListener("click", () => {
    const currentIndex = order[idx];
    if(!reviewList.includes(currentIndex)){reviewList.push(currentIndex);}
    nextCard();
  });

  reviewBtn.addEventListener("click", () => {
    if(reviewList.length === 0) return;
    const list = [...reviewList];
    reviewList = [];
    startStudy(list);
  });

  againBtn.addEventListener("click", resetAll);
  shuffleBtn.addEventListener("click", shuffleOrder);
  resetBtn.addEventListener("click", resetAll);

  jpFirst.addEventListener("change", e => {
    showJpFirst = e.target.checked;
    render();
  });

  speakOnChk.addEventListener("change", e => {
    speakOn = e.target.checked;
    if(speakOn) speak(currentItem().word);
  });

  window.addEventListener("keydown", e => {
    if(e.key === " "){
      e.preventDefault();
      flip();
    }
  });

  render();
})();
</script>
</body>
</html>
<p>投稿 <a href="https://jouniorsankosodate.com/eiken5-no7/">英検５級 フラッシュ英単語 No.7｜季節・天気（音声対応）</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/eiken5-no7/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【英検4級】総まとめテスト50問｜ランダム出題＋復習機能つきで完全チェック🐙</title>
		<link>https://jouniorsankosodate.com/rule-grade4-12/</link>
					<comments>https://jouniorsankosodate.com/rule-grade4-12/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 12:32:18 +0000</pubDate>
				<category><![CDATA[🐙タコタの英文ルール📖]]></category>
		<category><![CDATA[#テスト]]></category>
		<category><![CDATA[＃わかりやすい]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[＃英語学習]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=5273</guid>

					<description><![CDATA[<p>目次 🐙 英検4級 総まとめテスト🎯 このテストでできること🔁 間違えた問題を復習しよう！🎉 テスト終了！ 🐙 英検4級 総まとめテスト ここまで学んだ英文ルールを、 50問のテストでチェックしよう✨ 👉 ランダム出題で [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-12/">【英検4級】総まとめテスト50問｜ランダム出題＋復習機能つきで完全チェック🐙</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<div style="background:#fff7ed;padding:20px;border-radius:16px;margin-bottom:25px;">

  
  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">🐙 英検4級 総まとめテスト</a><ol><li><a href="#toc2" tabindex="0">🎯 このテストでできること</a></li></ol></li><li><a href="#toc3" tabindex="0">🔁 間違えた問題を復習しよう！</a></li><li><a href="#toc4" tabindex="0">🎉 テスト終了！</a></li></ol>
    </div>
  </div>

<h2 style="margin-top:0;text-align:center;"><span id="toc1">🐙 英検4級 総まとめテスト</span></h2>

  <p style="text-align:center;line-height:1.8;">
    ここまで学んだ英文ルールを、<br>
    50問のテストでチェックしよう✨
  </p>

  <p style="background:#fff;padding:12px;border-radius:12px;text-align:center;">
    👉 ランダム出題で実力チェック！<br>
    👉 間違えた問題はあとで復習できるよ！
  </p>

</div>

<div style="background:#e8f6ff;padding:16px;border-radius:16px;margin-bottom:20px;">

  <h3 style="margin-top:0;"><span id="toc2">🎯 このテストでできること</span></h3>

  <ul style="line-height:1.8;">
    <li>✔ 文法がしっかり身についているかチェック</li>
    <li>✔ 苦手なところを見つける</li>
    <li>✔ 間違えた問題だけもう一度復習</li>
  </ul>

</div>

<div style="background:#fff;padding:14px;border-radius:12px;margin-bottom:20px;">
  🐙 上から順番に解いていこう！<br>
  わからなくても大丈夫✨チャレンジが大事！
</div>



<div id="ruleGrade4FinalQuiz"></div>

<style>
#ruleGrade4FinalQuiz{
  max-width:900px;
  margin:30px auto;
  padding:20px;
  border-radius:20px;
  background:#fffdf7;
  border:3px solid #ffd9b3;
  text-align:center;
}
#ruleGrade4FinalQuiz .q-box{
  font-size:22px;
  margin:20px 0;
  color:#4a88d8;
  font-weight:bold;
}
#ruleGrade4FinalQuiz .ja-box{
  font-size:16px;
  margin-bottom:15px;
}
#ruleGrade4FinalQuiz .choice{
  display:block;
  margin:10px auto;
  padding:12px;
  border-radius:20px;
  border:none;
  width:85%;
  cursor:pointer;
  background:linear-gradient(135deg,#ffe4ec,#fff7d6);
  font-weight:bold;
}
#ruleGrade4FinalQuiz .correct{background:#c8f7c5 !important;}
#ruleGrade4FinalQuiz .wrong{background:#ffd6d6 !important;}
#ruleGrade4FinalQuiz #result{
  margin-top:15px;
  font-size:18px;
  font-weight:bold;
}
#ruleGrade4FinalQuiz #nextBtn,
#ruleGrade4FinalQuiz .retryBtn{
  margin-top:20px;
  padding:12px 24px;
  border:none;
  background:#ff9d58;
  color:#fff;
  border-radius:999px;
  font-weight:bold;
  cursor:pointer;
}
</style>

<script>
(function(){

const quizAll = [
{q:"I ___ playing soccer now.",ja:"私は今サッカーをしています。",choices:["am","is","are","be"],answer:0},
{q:"He ___ reading a book.",ja:"彼は本を読んでいます。",choices:["am","is","are","do"],answer:1},
{q:"They ___ studying English.",ja:"彼らは英語を勉強しています。",choices:["am","is","are","does"],answer:2},
{q:"I am ___ TV.",ja:"私はテレビを見ています。",choices:["watch","watches","watching","watched"],answer:2},
{q:"___ you playing soccer?",ja:"あなたはサッカーをしていますか？",choices:["Am","Is","Are","Do"],answer:2},

{q:"I ___ soccer yesterday.",ja:"私は昨日サッカーをしました。",choices:["play","played","plays","playing"],answer:1},
{q:"She ___ TV last night.",ja:"彼女は昨夜テレビを見ました。",choices:["watch","watched","watches","watching"],answer:1},
{q:"Did you ___ soccer?",ja:"サッカーをしましたか？",choices:["play","played","plays","playing"],answer:0},
{q:"I did not ___ soccer.",ja:"私はサッカーをしませんでした。",choices:["play","played","plays","playing"],answer:0},
{q:"He ___ to school yesterday.",ja:"彼は昨日学校へ行きました。",choices:["go","went","goes","going"],answer:1},

{q:"I will ___ soccer.",ja:"私はサッカーをするつもりです。",choices:["play","plays","playing","played"],answer:0},
{q:"I will not ___ soccer.",ja:"私はサッカーをしません。",choices:["play","plays","playing","played"],answer:0},
{q:"___ you come tomorrow?",ja:"明日来ますか？",choices:["Do","Did","Will","Are"],answer:2},
{q:"No, I ___.",ja:"いいえ、しません。",choices:["won't","don't","am not","can't"],answer:0},
{q:"I ___ study English tomorrow.",ja:"私は明日英語を勉強するつもりです。",choices:["will","am","did","does"],answer:0},

{q:"You ___ study.",ja:"あなたは勉強したほうがいい。",choices:["should","may","would","are"],answer:0},
{q:"You ___ go now.",ja:"今行ってもいいよ。",choices:["may","should","would","must"],answer:0},
{q:"It ___ rain.",ja:"雨が降るかもしれない。",choices:["should","may","would","can"],answer:1},
{q:"I ___ like to drink water.",ja:"水を飲みたいです。",choices:["may","should","would","must"],answer:2},
{q:"I would like ___ eat sushi.",ja:"寿司を食べたいです。",choices:["to","for","at","on"],answer:0},

{q:"I want ___ play soccer.",ja:"私はサッカーをしたいです。",choices:["to","for","at","on"],answer:0},
{q:"She wants ___ English.",ja:"彼女は英語を勉強したいです。",choices:["study","to study","studies","studying"],answer:1},
{q:"I went to the park ___ play soccer.",ja:"サッカーをするために公園へ行きました。",choices:["to","for","at","in"],answer:0},
{q:"I have homework ___ do.",ja:"やるべき宿題があります。",choices:["to","for","at","on"],answer:0},
{q:"I like ___ books.",ja:"私は本を読むことが好きです。",choices:["read","to read","reads","reading"],answer:1},

{q:"This dog is ___ than that dog.",ja:"この犬はあの犬より大きい。",choices:["big","bigger","biggest","more big"],answer:1},
{q:"This is the ___ dog.",ja:"これは一番大きい犬です。",choices:["big","bigger","biggest","more big"],answer:2},
{q:"She is ___ than me.",ja:"彼女は私より背が高い。",choices:["tall","taller","tallest","more tall"],answer:1},
{q:"This book is ___ interesting than that one.",ja:"この本はあの本よりおもしろい。",choices:["more","most","many","much"],answer:0},
{q:"This is the ___ interesting book.",ja:"これは一番おもしろい本です。",choices:["more","most","many","much"],answer:1},

{q:"I like apples ___ bananas.",ja:"私はりんごとバナナが好きです。",choices:["and","but","because","so"],answer:0},
{q:"I like soccer ___ I don't like baseball.",ja:"サッカーは好きですが、野球は好きではありません。",choices:["and","but","because","so"],answer:1},
{q:"I am happy ___ I passed the test.",ja:"合格したのでうれしいです。",choices:["and","but","because","so"],answer:2},
{q:"I was tired, ___ I went to bed.",ja:"疲れていたので寝ました。",choices:["and","but","because","so"],answer:3},
{q:"Do you like tea ___ coffee?",ja:"紅茶かコーヒーどっちが好き？",choices:["and","but","or","because"],answer:2},

{q:"I study ___ I have time.",ja:"時間があるとき勉強します。",choices:["when","if","but","so"],answer:0},
{q:"___ it rains, I will stay home.",ja:"もし雨なら家にいます。",choices:["When","If","But","So"],answer:1},
{q:"I eat lunch ___ I am hungry.",ja:"おなかがすいたとき昼ごはんを食べます。",choices:["when","if","but","so"],answer:0},
{q:"___ you are tired, you should rest.",ja:"もし疲れているなら休んだほうがいい。",choices:["When","If","And","So"],answer:1},
{q:"I will go ___ it is sunny.",ja:"もし晴れなら行きます。",choices:["when","if","but","so"],answer:1},

{q:"There ___ a dog.",ja:"犬が1匹います。",choices:["is","are","am","be"],answer:0},
{q:"There ___ two cats.",ja:"猫が2匹います。",choices:["is","are","am","be"],answer:1},
{q:"There is ___ apple.",ja:"りんごが1つあります。",choices:["a","an","some","many"],answer:1},
{q:"There are ___ dogs.",ja:"犬が何匹かいます。",choices:["a","an","some","is"],answer:2},
{q:"___ there a dog?",ja:"犬はいますか？",choices:["Is","Are","Do","Will"],answer:0},

{q:"I ___ play soccer.",ja:"私はいつもサッカーをします。",choices:["always","never","sometimes","often"],answer:0},
{q:"I ___ watch TV.",ja:"私はぜったいテレビを見ません。",choices:["always","often","never","usually"],answer:2},
{q:"I am ___ happy.",ja:"私はたいてい幸せです。",choices:["usually","never","sometimes","often"],answer:0},
{q:"I ___ eat sushi.",ja:"私はときどき寿司を食べます。",choices:["always","never","sometimes","usually"],answer:2},
{q:"I ___ study English.",ja:"私はよく英語を勉強します。",choices:["often","never","always","sometimes"],answer:0}
];

let quiz = shuffleArray(quizAll.slice());
let current = 0;
let score = 0;
let mainScore = 0;
let wrongList = [];
let reviewMode = false;

const app = document.getElementById("ruleGrade4FinalQuiz");

function showQ(){
  const q = quiz[current];
  app.innerHTML = `
    <div>🐙 ${current + 1} / ${quiz.length}</div>
    <div class="q-box">${q.q}</div>
    <div class="ja-box">${q.ja}</div>
    ${q.choices.map(function(c,i){
      return `<button class="choice" onclick="ruleGrade4Check(${i})">${c}</button>`;
    }).join("")}
    <div id="result"></div>
    <button id="nextBtn" onclick="ruleGrade4Next()" style="display:none;">つぎへ ▶</button>
  `;
}

window.ruleGrade4Check = function(i){
  const buttons = app.querySelectorAll(".choice");
  const result = app.querySelector("#result");
  const q = quiz[current];

  buttons.forEach(function(b,index){
    if(index === q.answer){
      b.classList.add("correct");
    }else if(index === i){
      b.classList.add("wrong");
    }
    b.disabled = true;
  });

  if(i === q.answer){
    result.innerHTML = "⭕ 正解！";
    score++;
  }else{
    result.innerHTML = "❌ 不正解…";
    wrongList.push(q);
  }

  app.querySelector("#nextBtn").style.display = "inline-block";
};

window.ruleGrade4Next = function(){
  current++;

  if(current < quiz.length){
    showQ();
    return;
  }

  if(!reviewMode){
    mainScore = score;

    if(wrongList.length > 0){
      reviewMode = true;
      quiz = wrongList.slice().sort(() => Math.random() - 0.5);
      wrongList = [];
      current = 0;
      score = 0;

      app.innerHTML = `
        <h2><span id="toc3">🔁 間違えた問題を復習しよう！</span></h2>
        <p>本番スコア：${mainScore} / 50 正解</p>
        <p>間違えた問題だけもう一度出るよ🐙✨</p>
        <button class="retryBtn" onclick="ruleGrade4StartReview()">復習スタート ▶</button>
      `;
      return;
    }
  }

  app.innerHTML = `
    <h2><span id="toc4">🎉 テスト終了！</span></h2>
    <p>本番スコア：${mainScore || score} / 50 正解！</p>
    <p>ここまでできたら英検4級かなり仕上がってるよ🐙✨</p>
    <button class="retryBtn" onclick="location.reload()">もう一度チャレンジ</button>
  `;
};

window.ruleGrade4StartReview = function(){
  showQ();
};

showQ();

})();

function shuffleArray(array){
  for(let i = array.length - 1; i > 0; i--){
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}
</script>



<div style="margin-top:40px;padding:22px;border-radius:18px;background:#fff7ed;border:2px solid #fed7aa;box-shadow:0 6px 16px rgba(0,0,0,0.05);">

  <p style="text-align:center;font-weight:bold;font-size:18px;margin-bottom:15px;">
    🎉 4級コンプリート✨
  </p>

  <p style="text-align:center;font-size:14px;margin-bottom:18px;">
    ここまでできたらかなり力ついてるで！<br>
    復習もしながら次のステップへ🐙
  </p>

  <div style="display:flex;flex-direction:column;gap:12px;">

    <a href="https://jouniorsankosodate.com/rule-grade4-10/" style="text-decoration:none;">
      <div style="background:#e0f2fe;padding:14px;border-radius:12px;font-weight:bold;transition:0.2s;">
        ◀ 前にもどる：there is / are
      </div>
    </a>

    <a href="https://jouniorsankosodate.com/rule-grade4-index/" style="text-decoration:none;">
      <div style="background:#fff3c4;padding:14px;border-radius:12px;text-align:center;font-weight:bold;">
        📚 4級まとめページへ
      </div>
    </a>

  </div>

</div>



<p></p>



<a href="https://blogmura.com/profiles/11199271?p_cid=11199271"><img decoding="async" src="https://blogparts.blogmura.com/parts_image/user/pv11199271.gif" alt="PVアクセスランキング にほんブログ村" /></a>



<p>読んだよ！の応援クリック嬉しいです👇</p>



<a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank"><img fetchpriority="high" decoding="async" src="https://b.blogmura.com/original/1411682" width="240" height="240" border="0" alt="にほんブログ村 にほんブログ村へ" /></a><br /><a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank">にほんブログ村</a>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-12/">【英検4級】総まとめテスト50問｜ランダム出題＋復習機能つきで完全チェック🐙</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/rule-grade4-12/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【英検4級】there is / are｜「ある・いる」をやさしく理解🐙⑩</title>
		<link>https://jouniorsankosodate.com/rule-grade4-10/</link>
					<comments>https://jouniorsankosodate.com/rule-grade4-10/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 05:01:58 +0000</pubDate>
				<category><![CDATA[🐙タコタの英文ルール📖]]></category>
		<category><![CDATA[＃わかりやすい]]></category>
		<category><![CDATA[#文法]]></category>
		<category><![CDATA[＃英検４級]]></category>
		<category><![CDATA[＃英語学習]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=5255</guid>

					<description><![CDATA[<p>「〜がある」「〜がいる」を言うときの文を学ぼう🐙✨ 👉 物があるとき 👉 人や動物がいるとき there is / there are を使えば言えるようになるよ！ 🧠 there is / areとは？ 🐙 ポイント！ [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-10/">【英検4級】there is / are｜「ある・いる」をやさしく理解🐙⑩</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p>
「〜がある」「〜がいる」を言うときの文を学ぼう🐙✨<br><br>

👉 物があるとき<br>
👉 人や動物がいるとき<br><br>

there is / there are を使えば言えるようになるよ！
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🧠 there is / areとは？</h1>



<div style="background:#fff7ed;padding:12px;border-radius:12px;">
🐙 ポイント！<br>
<strong>何かが「ある・いる」ときに使う</strong>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 基本の文</h1>



<p>
There is a dog.<br>
（犬が1匹います）
</p>

<p>
There are two dogs.<br>
（犬が2匹います）
</p>



<p>👉 ポイント👇<br>　 <strong>1つ → is</strong><br> 　<strong>2つ以上 → are</strong></p>



<div style="background:#e8f6ff;padding:12px;border-radius:12px;margin:10px 0;">
🐙 ミニポイント！<br>
✔ 1つ → a / an（a dog / an apple）<br>
✔ 複数 → s（dogs / apples）
</div>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 否定文</h1>



<p>
There is not a dog.<br>
（犬はいません）
</p>

<p>
There are not dogs.<br>
（犬はいません）
</p>



<p>👉 there is not = there isn&#8217;t<br>👉 there are not = there aren&#8217;t</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 疑問文</h1>



<p>
Is there a dog?<br>
（犬はいますか？）
</p>

<p>
Are there dogs?<br>
（犬はいますか？）
</p>



<p>👉 is / are を前に出す</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 答え方</h1>



<p>
Yes, there is.<br>
No, there isn&#8217;t.
</p>

<p>
Yes, there are.<br>
No, there aren&#8217;t.
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🐙 イメージ</h1>



<p>👉 there → そこに<br>👉 is / are → ある・いる</p>



<p>👉 「そこにある！」って感じ</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🎯 まとめ</h1>



<ul>
<li>✔ there is → 1つ</li>
<li>✔ there are → 複数</li>
<li>✔ 否定 → not</li>
<li>✔ 疑問 → 前に出す</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🐙 クイズ</h1>



<div id="takotaQuiz"></div>

<style>
#takotaQuiz{
  max-width:820px;margin:30px auto;padding:20px;
  border-radius:20px;background:#fffdf7;
  border:3px solid #ffd9b3;text-align:center;
}
.q-box{font-size:22px;margin:20px 0;color:#4a88d8;font-weight:bold;}
.ja-box{font-size:16px;margin-bottom:15px;}
.choice{
  display:block;margin:10px auto;padding:12px;border-radius:20px;
  border:none;width:80%;cursor:pointer;
  background:linear-gradient(135deg,#ffe4ec,#fff7d6);font-weight:bold;
}
.correct{background:#c8f7c5 !important;}
.wrong{background:#ffd6d6 !important;}
#result{margin-top:15px;font-size:18px;font-weight:bold;}
#nextBtn{
  margin-top:20px;padding:12px 24px;border:none;
  background:#ff9d58;color:#fff;border-radius:999px;
}
</style>

<script>
(function(){

const quiz = [

{q:"There ___ a dog.",ja:"犬が1匹います。",choices:["is","are","am","be"],answer:0},

{q:"There ___ two cats.",ja:"猫が2匹います。",choices:["is","are","am","be"],answer:1},

{q:"There is ___ apple.",ja:"りんごが1つあります。",choices:["a","an","the","to"],answer:1},

{q:"There are ___ dogs.",ja:"犬が何匹かいます。",choices:["a","an","some","to"],answer:2},

{q:"There ___ not a dog.",ja:"犬はいません。",choices:["is","are","am","be"],answer:0},

{q:"There ___ not cats.",ja:"猫はいません。",choices:["is","are","am","be"],answer:1},

{q:"___ there a dog?",ja:"犬はいますか？",choices:["Is","Are","Do","Will"],answer:0},

{q:"___ there cats?",ja:"猫はいますか？",choices:["Is","Are","Do","Will"],answer:1},

{q:"Yes, there ___.",ja:"はい、います。",choices:["is","are","do","am"],answer:0},

{q:"No, there ___.",ja:"いいえ、いません。",choices:["isn't","aren't","don't","am not"],answer:0},

{q:"🔀 並べ替え",ja:"犬が1匹います。",choices:[
"There is a dog",
"There a dog is",
"There dog is a",
"Is there a dog"],answer:0},

{q:"🔀 並べ替え",ja:"猫が2匹います。",choices:[
"There are two cats",
"There two cats are",
"There cats are two",
"Are there two cats"],answer:0},

{q:"🔀 並べ替え",ja:"犬はいません。",choices:[
"There is not a dog",
"There not is a dog",
"There a dog is not",
"Is there not a dog"],answer:0},

{q:"🔀 並べ替え",ja:"犬はいますか？",choices:[
"Is there a dog",
"There is a dog",
"Is a dog there",
"There a dog is"],answer:0},

{q:"There ___ books.",ja:"本が何冊かあります。",choices:["is","are","am","be"],answer:1}

];

let current=0;
let score=0;
const app=document.getElementById("takotaQuiz");

function showQ(){
  const q=quiz[current];
  app.innerHTML=`
    <div>🐙 ${current+1} / ${quiz.length}</div>
    <div class="q-box">${q.q}</div>
    <div class="ja-box">${q.ja}</div>
    ${q.choices.map((c,i)=>`<div class="choice" onclick="check(${i})">${c}</div>`).join("")}
    <div id="result"></div>
    <button id="nextBtn" onclick="nextQ()" style="display:none;">つぎへ ▶</button>
  `;
}

window.check=function(i){
  const buttons=document.querySelectorAll(".choice");
  const result=document.getElementById("result");

  buttons.forEach((b,index)=>{
    if(index===quiz[current].answer){
      b.classList.add("correct");
    }else if(index===i){
      b.classList.add("wrong");
    }
    b.onclick=null;
  });

  result.innerHTML = (i===quiz[current].answer) ? "⭕ 正解！" : "❌ 不正解…";
  if(i===quiz[current].answer) score++;

  document.getElementById("nextBtn").style.display="inline-block";
}

window.nextQ=function(){
  current++;
  if(current<quiz.length){
    showQ();
  }else{
    app.innerHTML=`
      <h2>🎉 クイズ終了！</h2>
      <p>${score} / ${quiz.length} 正解！</p>
      <p>there is / are をしっかり復習しよう🐙</p>
      <button onclick="location.reload()">もう一度</button>
    `;
  }
}

showQ();

})();
</script>



<div style="margin-top:40px;padding:20px;border-radius:16px;background:#fff7ed;border:2px solid #fed7aa;">

  <p style="text-align:center;font-weight:bold;">
    👉 もうすぐ完成✨
  </p>

  <div style="display:flex;flex-direction:column;gap:12px;">

    <a href="https://jouniorsankosodate.com/rule-grade4-9/">
      <div style="background:#e0f2fe;padding:14px;border-radius:12px;">
        ◀ 前：助動詞（発展）
      </div>
    </a>

    <a href="https://jouniorsankosodate.com/rule-grade4-11/">
      <div style="background:#dcfce7;padding:14px;border-radius:12px;">
        次：接続詞（発展） ▶
      </div>
    </a>

  </div>

</div>



<a href="https://blogmura.com/profiles/11199271?p_cid=11199271"><img decoding="async" src="https://blogparts.blogmura.com/parts_image/user/pv11199271.gif" alt="PVアクセスランキング にほんブログ村" /></a>



<p>読んだよ！の応援クリック嬉しいです👇</p>



<a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank"><img decoding="async" src="https://b.blogmura.com/original/1411682" width="240" height="240" border="0" alt="にほんブログ村 にほんブログ村へ" /></a><br /><a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank">にほんブログ村</a>



<p></p>



<p></p>



<p></p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-10/">【英検4級】there is / are｜「ある・いる」をやさしく理解🐙⑩</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/rule-grade4-10/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【英検4級】will（未来）｜〜するつもり・これからのことをやさしく解説🐙⑧</title>
		<link>https://jouniorsankosodate.com/rule-grade4-8/</link>
					<comments>https://jouniorsankosodate.com/rule-grade4-8/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 01:14:07 +0000</pubDate>
				<category><![CDATA[🐙タコタの英文ルール📖]]></category>
		<category><![CDATA[＃わかりやすい]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[＃英検４級]]></category>
		<category><![CDATA[＃英語学習]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=5236</guid>

					<description><![CDATA[<p>これからのことを言うときに使う「will」を学ぼう🐙✨ 👉 これからすること 👉 予定や気持ち willを使えば未来の文が作れるよ！ 🧠 willとは？ 🐙 ポイント！ これからのこと（未来）を表す ✨ 基本の文 I w [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-8/">【英検4級】will（未来）｜〜するつもり・これからのことをやさしく解説🐙⑧</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[




<p>
これからのことを言うときに使う「will」を学ぼう🐙✨<br><br>

👉 これからすること<br>
👉 予定や気持ち<br><br>

willを使えば未来の文が作れるよ！
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🧠 willとは？</h1>



<div style="background:#fff7ed;padding:12px;border-radius:12px;">
🐙 ポイント！<br>
<strong>これからのこと（未来）を表す</strong>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 基本の文</h1>



<p>
I will play soccer.<br>
（私はサッカーをします）
</p>



<p>👉 willのあと👇<br>　<span class="fz-22px"> <strong>動詞の原形</strong></span></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 否定文</h1>



<p>
I will not play soccer.<br>
（私はサッカーをしません）
</p>



<p>👉 will not = won&#8217;t（短縮形）</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 疑問文</h1>



<p>
Will you play soccer?<br>
（サッカーをしますか？）
</p>



<p>👉 willを前に出す</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">✨ 答え方</h1>



<p>
Yes, I will.<br>
No, I won&#8217;t.
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🐙 イメージ</h1>



<p>👉 未来に進んでるタコタ<br>👉 ワクワクしてる感じ</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🎯 まとめ</h1>



<ul>
<li>✔ will → 未来</li>
<li>✔ 動詞は原形</li>
<li>✔ 否定 → will not</li>
<li>✔ 疑問 → 前に出す</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🐙 クイズ前導線</h1>



<h2><span id="toc1">🐙 クイズでチェック！</span></h2>
<p>
ここまでできたらOK✨<br>
未来の文を使ってみよう！
</p>



<div id="takotaQuiz"></div>

<style>
#takotaQuiz{
  max-width:820px;margin:30px auto;padding:20px;
  border-radius:20px;background:#fffdf7;
  border:3px solid #ffd9b3;text-align:center;
}
.q-box{font-size:22px;margin:20px 0;color:#4a88d8;font-weight:bold;}
.ja-box{font-size:16px;margin-bottom:15px;}
.choice{
  display:block;margin:10px auto;padding:12px;border-radius:20px;
  border:none;width:80%;cursor:pointer;
  background:linear-gradient(135deg,#ffe4ec,#fff7d6);font-weight:bold;
}
.correct{background:#c8f7c5 !important;}
.wrong{background:#ffd6d6 !important;}
#result{margin-top:15px;font-size:18px;font-weight:bold;}
#nextBtn{
  margin-top:20px;padding:12px 24px;border:none;
  background:#ff9d58;color:#fff;border-radius:999px;
}
</style>

<script>
(function(){

const quiz = [

{q:"I ___ play soccer.",ja:"私はサッカーをするつもりです。",choices:["will","am","do","can"],answer:0},

{q:"I will ___ soccer.",ja:"私はサッカーをするつもりです。",choices:["play","plays","playing","played"],answer:0},

{q:"I ___ not play soccer.",ja:"私はサッカーをしません。",choices:["will","am","do","can"],answer:0},

{q:"I ___ play soccer.",ja:"私はサッカーをしません。（短縮形）",choices:["won't","don't","can't","am not"],answer:0},

{q:"___ you play soccer?",ja:"あなたはサッカーをしますか？",choices:["Do","Will","Are","Can"],answer:1},

{q:"🔀 並べ替え",ja:"はい、私はテレビを見ます。",choices:[
"Yes, I will watch TV",
"Yes, will I watch TV",
"I yes will watch TV",
"Yes, I watch will TV"],answer:0},

{q:"🔀 並べ替え",ja:"いいえ、私は英語を勉強しません。",choices:[
"No, I won't study English",
"No, I will study not English",
"No, I don't will study English",
"No, won't I study English"],answer:0},

{q:"I will ___ TV.",ja:"私はテレビを見るつもりです。",choices:["watch","watches","watching","watched"],answer:0},

{q:"🔀 並べ替え",ja:"私は勉強しません。",choices:[
"I will not study",
"I study will not",
"I will study not",
"Will I not study"],answer:0},

{q:"🔀 並べ替え",ja:"あなたは来ますか？",choices:[
"Will you come",
"You will come",
"Come will you",
"Will come you"],answer:0},

{q:"🔀 並べ替え",ja:"私はサッカーをするつもりです。",choices:[
"I will play soccer",
"I play will soccer",
"I soccer will play",
"Will I play soccer"],answer:0},

{q:"Will you go? → Yes, I ___.",ja:"行きますか？→ はい、行きます。",choices:["will","do","am","can"],answer:0},

{q:"Will you go? → No, I ___.",ja:"行きますか？→ いいえ、行きません。",choices:["won't","don't","am not","can't"],answer:0},

{q:"I will ___ English.",ja:"私は英語を勉強するつもりです。",choices:["study","studies","studying","studied"],answer:0},

{q:"I ___ not go.",ja:"私は行きません。",choices:["will","am","do","can"],answer:0}

];

let current=0;
let score=0;
const app=document.getElementById("takotaQuiz");

function showQ(){
  const q=quiz[current];
  app.innerHTML=`
    <div>🐙 ${current+1} / ${quiz.length}</div>
    <div class="q-box">${q.q}</div>
    <div class="ja-box">${q.ja}</div>
    ${q.choices.map((c,i)=>`<div class="choice" onclick="check(${i})">${c}</div>`).join("")}
    <div id="result"></div>
    <button id="nextBtn" onclick="nextQ()" style="display:none;">つぎへ ▶</button>
  `;
}

window.check=function(i){
  const buttons=document.querySelectorAll(".choice");
  const result=document.getElementById("result");

  buttons.forEach((b,index)=>{
    if(index===quiz[current].answer){
      b.classList.add("correct");
    }else if(index===i){
      b.classList.add("wrong");
    }
    b.onclick=null;
  });

  result.innerHTML = (i===quiz[current].answer) ? "⭕ 正解！" : "❌ 不正解…";
  if(i===quiz[current].answer) score++;

  document.getElementById("nextBtn").style.display="inline-block";
}

window.nextQ=function(){
  current++;
  if(current<quiz.length){
    showQ();
  }else{
    app.innerHTML=`
      <h2><span id="toc2">🎉 クイズ終了！</span></h2>
      <p>${score} / ${quiz.length} 正解！</p>
      <p>will（未来）をしっかり復習しよう🐙</p>
      <button onclick="location.reload()">もう一度</button>
    `;
  }
}

showQ();

})();
</script>



<div style="margin-top:40px;padding:20px;border-radius:16px;background:#fff7ed;border:2px solid #fed7aa;">

  <p style="text-align:center;font-weight:bold;">
    👉 ステップアップしてるよ✨
  </p>

  <div style="display:flex;flex-direction:column;gap:12px;">

    <a href="https://jouniorsankosodate.com/rule-grade4-7/">
      <div style="background:#e0f2fe;padding:14px;border-radius:12px;">
        ◀ 前：頻度副詞
      </div>
    </a>

    <a href="https://jouniorsankosodate.com/rule-grade4-9/">
      <div style="background:#dcfce7;padding:14px;border-radius:12px;">
        次：助動詞（発展） ▶
      </div>
    </a>

  </div>

</div>



<a href="https://blogmura.com/profiles/11199271?p_cid=11199271"><img decoding="async" src="https://blogparts.blogmura.com/parts_image/user/pv11199271.gif" alt="PVアクセスランキング にほんブログ村" /></a>



<p>読んだよ！の応援クリック嬉しいです👇</p>



<a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank"><img decoding="async" src="https://b.blogmura.com/original/1411682" width="240" height="240" border="0" alt="にほんブログ村 にほんブログ村へ" /></a><br /><a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank">にほんブログ村</a>



<p></p>



<p></p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-8/">【英検4級】will（未来）｜〜するつもり・これからのことをやさしく解説🐙⑧</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/rule-grade4-8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【英検4級】頻度副詞（復習＋強化）｜always〜neverを使いこなそう🐙⑦</title>
		<link>https://jouniorsankosodate.com/rule-grade4-7/</link>
					<comments>https://jouniorsankosodate.com/rule-grade4-7/#respond</comments>
		
		<dc:creator><![CDATA[じゅにさん]]></dc:creator>
		<pubDate>Sun, 26 Apr 2026 09:34:07 +0000</pubDate>
				<category><![CDATA[🐙タコタの英文ルール📖]]></category>
		<category><![CDATA[#クイズ付き]]></category>
		<category><![CDATA[＃わかりやすい]]></category>
		<category><![CDATA[＃無料アプリ]]></category>
		<category><![CDATA[#英検４級]]></category>
		<guid isPermaLink="false">https://jouniorsankosodate.com/?p=5193</guid>

					<description><![CDATA[<p>前にやった副詞、覚えてる？🐙✨ 👉 always（いつも） 👉 sometimes（ときどき） 今回はそれをもう一回整理して、 ちゃんと使えるようにするよ！ 🧠 頻度副詞（おさらい） always（いつも） usuall [&#8230;]</p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-7/">【英検4級】頻度副詞（復習＋強化）｜always〜neverを使いこなそう🐙⑦</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[




<p>
前にやった副詞、覚えてる？🐙✨<br><br>

👉 always（いつも）<br>
👉 sometimes（ときどき）<br><br>

今回はそれをもう一回整理して、<br>
<strong>ちゃんと使えるようにするよ！</strong>
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🧠 頻度副詞（おさらい）</h1>



<ul>
<li>always（いつも）</li>
<li>usually（たいてい）</li>
<li>often（よく）</li>
<li>sometimes（ときどき）</li>
<li>never（ぜったいしない）</li>
</ul>



<p>👉 上ほど多い（これだけ覚えたらOK）<br>👉 <strong>頻度は100%〜0%のイメージで並ぶ</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🐙 イメージで覚える（ここ重要）</h1>



<p>
always → 100%<br>
usually → 75%くらい<br>
often → 50%くらい<br>
sometimes → 25％くらい<br>
never → 0%
</p>



<p>👉 ※だいたいの感覚でOK（テストでもこの感覚で出る）</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="683" height="1024" src="https://jouniorsankosodate.com/wp-content/uploads/2026/04/img_6626-683x1024.jpg" alt="" class="wp-image-4746" style="width:484px;height:auto" srcset="https://jouniorsankosodate.com/wp-content/uploads/2026/04/img_6626-683x1024.jpg 683w, https://jouniorsankosodate.com/wp-content/uploads/2026/04/img_6626-200x300.jpg 200w, https://jouniorsankosodate.com/wp-content/uploads/2026/04/img_6626-768x1152.jpg 768w, https://jouniorsankosodate.com/wp-content/uploads/2026/04/img_6626.jpg 843w" sizes="(max-width: 683px) 100vw, 683px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">⚠️ ここからが4級（強化ポイント）</h1>



<div style="background:#e0f2fe;padding:12px;border-radius:12px;">
🐙 ここ大事！<br>
<strong>位置ルール</strong>
</div>



<p>👉 頻度副詞は<strong>動詞の近くに置くのが基本</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🎯 まとめ</h1>



<ul>
<li>✔ 順番で覚える</li>
<li>✔ always → never</li>
<li>✔ 位置が4級ポイント！</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">🐙 クイズ</h1>



<h2><span id="toc1">🐙 最後のチェック！</span></h2>
<p>
ここまでできたら4級バッチリ✨<br>
クイズで仕上げよう！
</p>



<div id="takotaQuiz"></div>

<style>
#takotaQuiz{
  max-width:820px;
  margin:30px auto;
  padding:20px;
  border-radius:20px;
  background:#fffdf7;
  border:3px solid #ffd9b3;
  text-align:center;
  box-shadow:0 8px 20px rgba(0,0,0,0.08);
}
.q-box{font-size:22px;margin:20px 0;color:#4a88d8;font-weight:bold;}
.ja-box{font-size:16px;margin-bottom:15px;}
.choice{
  display:block;margin:10px auto;padding:12px;border-radius:20px;
  border:none;width:80%;cursor:pointer;
  background:linear-gradient(135deg,#ffe4ec,#fff7d6);font-weight:bold;
}
.choice:hover{transform:translateY(-2px);}
.correct{background:#c8f7c5 !important;}
.wrong{background:#ffd6d6 !important;}
#result{margin-top:15px;font-size:18px;font-weight:bold;}
#nextBtn{
  margin-top:20px;padding:12px 24px;border:none;background:#ff9d58;
  color:#fff;border-radius:999px;cursor:pointer;font-weight:bold;
}
</style>

<script>
(function(){

const quiz = [

{q:"I ___ play soccer.",ja:"私はいつもサッカーをします。",choices:["always","never","sometimes","often"],answer:0},

{q:"I am ___ happy.",ja:"私はたいてい幸せです。",choices:["usually","never","sometimes","often"],answer:0},

{q:"I ___ eat sushi.",ja:"私はときどき寿司を食べます。",choices:["always","never","sometimes","usually"],answer:2},

{q:"I ___ watch TV.",ja:"私はぜったいテレビを見ません。",choices:["always","often","never","sometimes"],answer:2},

{q:"I ___ study English.",ja:"私はよく英語を勉強します。",choices:["often","never","always","sometimes"],answer:0},

{q:"I always ___ soccer.",ja:"いつもサッカーをします。",choices:["play","plays","playing","played"],answer:0},

{q:"I am always ___.",ja:"私はいつも元気です。",choices:["happy","happies","happily","happied"],answer:0},

{q:"I ___ go to school.",ja:"私はたいてい学校へ行きます。",choices:["usually","never","sometimes","always"],answer:0},

{q:"🔀 並べ替え",ja:"私はいつもサッカーをします。",choices:[
"I always play soccer",
"I play always soccer",
"I soccer always play",
"Always I play soccer"],answer:0},

{q:"🔀 並べ替え",ja:"私はときどきテレビを見ます。",choices:[
"I sometimes watch TV",
"I watch sometimes TV",
"I TV sometimes watch",
"Sometimes I TV watch"],answer:0},

{q:"🔀 並べ替え",ja:"私はいつも幸せです。",choices:[
"I am always happy",
"I always am happy",
"I happy always am",
"Always I am happy"],answer:0},

{q:"Which is the most?",ja:"いちばん多いのはどれ？",choices:["always","sometimes","never","often"],answer:0},

{q:"Which is the least?",ja:"いちばん少ないのはどれ？",choices:["always","usually","never","often"],answer:2},

{q:"I ___ play games.",ja:"私はときどきゲームをします。",choices:["always","never","sometimes","usually"],answer:2},

{q:"I ___ go out.",ja:"私はぜったい外に出ません。",choices:["always","often","never","sometimes"],answer:2}

];

let current=0;
let score=0;
const app=document.getElementById("takotaQuiz");

function showQ(){
  const q=quiz[current];
  app.innerHTML=`
    <div>🐙 ${current+1} / ${quiz.length}</div>
    <div class="q-box">${q.q}</div>
    <div class="ja-box">${q.ja}</div>
    ${q.choices.map((c,i)=>`<div class="choice" onclick="check(${i})">${c}</div>`).join("")}
    <div id="result"></div>
    <button id="nextBtn" onclick="nextQ()" style="display:none;">つぎへ ▶</button>
  `;
}

window.check=function(i){
  const buttons=document.querySelectorAll(".choice");
  const result=document.getElementById("result");

  buttons.forEach((b,index)=>{
    if(index===quiz[current].answer){
      b.classList.add("correct");
    }else if(index===i){
      b.classList.add("wrong");
    }
    b.onclick=null;
  });

  result.innerHTML = (i===quiz[current].answer) ? "⭕ 正解！" : "❌ 不正解…";
  if(i===quiz[current].answer) score++;

  document.getElementById("nextBtn").style.display="inline-block";
}

window.nextQ=function(){
  current++;
  if(current<quiz.length){
    showQ();
  }else{
    app.innerHTML=`
      <h2><span id="toc2">🎉 クイズ終了！</span></h2>
      <p>${score} / ${quiz.length} 正解！</p>
      <p>always〜neverと位置を復習しよう🐙</p>
      <button onclick="location.reload()">もう一度</button>
    `;
  }
}

showQ();

})();
</script>



<a href="https://blogmura.com/profiles/11199271?p_cid=11199271"><img decoding="async" src="https://blogparts.blogmura.com/parts_image/user/pv11199271.gif" alt="PVアクセスランキング にほんブログ村" /></a>



<p>読んだよ！の応援クリック嬉しいです👇</p>



<a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank"><img decoding="async" src="https://b.blogmura.com/original/1411684" width="240" height="240" border="0" alt="にほんブログ村 にほんブログ村へ" /></a><br /><a rel="noopener" href="https://blogmura.com/ranking/in?p_cid=11199271" target="_blank">にほんブログ村</a>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>
<p>投稿 <a href="https://jouniorsankosodate.com/rule-grade4-7/">【英検4級】頻度副詞（復習＋強化）｜always〜neverを使いこなそう🐙⑦</a> は <a href="https://jouniorsankosodate.com">じゅにさん子育てブログ</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jouniorsankosodate.com/rule-grade4-7/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 />
