<?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>メンタル（試験前に必見） &#8211; 文系ラボ　</title>
	<atom:link href="https://lawcityblog.com/category/%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%EF%BC%88%E8%A9%A6%E9%A8%93%E5%89%8D%E3%81%AB%E5%BF%85%E8%A6%8B%EF%BC%89/feed/" rel="self" type="application/rss+xml" />
	<link>https://lawcityblog.com</link>
	<description>中学・高校・大学受験の文系学習サイト</description>
	<lastBuildDate>Wed, 25 Feb 2026 08:49:19 +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://lawcityblog.com/wp-content/uploads/2023/01/cropped-文系ラボ-1-32x32.png</url>
	<title>メンタル（試験前に必見） &#8211; 文系ラボ　</title>
	<link>https://lawcityblog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://lawcityblog.com/category/%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%EF%BC%88%E8%A9%A6%E9%A8%93%E5%89%8D%E3%81%AB%E5%BF%85%E8%A6%8B%EF%BC%89/feed/"/>
	<item>
		<title>【完全無料】受験生の集中力・勉強効率を上げる学習サポートツール8選</title>
		<link>https://lawcityblog.com/focus-tool/</link>
					<comments>https://lawcityblog.com/focus-tool/#respond</comments>
		
		<dc:creator><![CDATA[Mino]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 11:10:07 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[メンタル（試験前に必見）]]></category>
		<category><![CDATA[中学受験]]></category>
		<category><![CDATA[勉強法]]></category>
		<category><![CDATA[受験勉強]]></category>
		<category><![CDATA[大学受験]]></category>
		<category><![CDATA[学生生活]]></category>
		<category><![CDATA[高校受験]]></category>
		<category><![CDATA[BGM]]></category>
		<category><![CDATA[タイマー]]></category>
		<category><![CDATA[タイムマネジメント]]></category>
		<category><![CDATA[ポモドーロ]]></category>
		<category><![CDATA[メンタル]]></category>
		<category><![CDATA[勉強計画]]></category>
		<category><![CDATA[無料ツール]]></category>
		<category><![CDATA[集中力]]></category>
		<guid isPermaLink="false">https://lawcityblog.com/?p=3896</guid>

					<description><![CDATA[<p><img src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0799.jpeg" class="webfeedsFeaturedVisual" /></p>受験生の悩みで最も多いのは、実は勉強の「中身」ではなく「続け方」です。 この記事では、受験勉強の集中力・効率・メンタルをサポートする無料ツールを8つ紹介します。すべて登録など一切不要で、スマホからでもPCからでも今すぐ使 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0799.jpeg" class="webfeedsFeaturedVisual" /></p>
<div class="pb-iconbox" data-colset="y" data-icon="right"><div class="pb-iconbox__inner"><div class="pb-iconbox__head">この記事はこんな人におすすめ！</div><div class="pb-iconbox__body" data-align="center"><div class="pb-iconbox__content">
<ul class="pb-list -icon-check -border-on">
<li><strong>勉強を初めてもすぐにスマホを触ってしまう</strong></li>



<li><strong>長時間やっているのに、成果が出ている実感がない</strong></li>



<li><strong>模試や入試本番で緊張して実力が出せない</strong></li>



<li><strong>そもそも何をどの順番でやればいいかわからない</strong></li>



<li><strong>自分に合った勉強法がわからない</strong></li>
</ul>
</div><div class="pb-iconbox__innerIcon"><div class="pb-iconbox__comment -normal"><strong>全てのツールがここに詰まっています！</strong></div><figure class="pb-iconbox__figure" data-iconset="01"></figure></div></div></div></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="yellow"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://lawcityblog.com/wp-content/uploads/2021/12/b0627.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://lawcityblog.com/wp-content/uploads/2021/12/b0627.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">生徒</span></div><div class="c-balloon__body -thinking -border-on"><div class="c-balloon__text">
<p><strong>勉強しなきゃいけないのはわかっているけど、なかなか集中が続かない…</strong></p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p><strong><span class="swl-marker mark_yellow">受験生の悩みで最も多いのは、実は勉強の「中身」ではなく「続け方」です。</span></strong></p>



<p>この記事では、受験勉強の<strong>集中力・効率・メンタル</strong>をサポートする無料ツールを8つ紹介します。すべて登録など一切不要で、スマホからでもPCからでも今すぐ使えます。</p>


<div class="p-blogParts post_content" data-partsID="3442"><p>        <div class="bb-wrap" id="bb-battle-7"
             data-theme-id="7"
             data-color-a="#FF6B6B"
             data-color-b="#4ECDC4"
             data-label-a="運動部派"
             data-label-b="文化部派"
             data-max-comment-id="0"
             data-is-ended="0"
             data-my-choice=""
             style="--bb-color-a:#FF6B6B;--bb-color-b:#4ECDC4;--bb-bg:#F8F9FA">

                                    <div class="bb-last-week-banner">
                <div class="bb-lw-label"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4f0.png" alt="📰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 先週の結果</div>
                <div class="bb-lw-title">授業中の席、窓側と廊下側どっちが好き？</div>
                <div class="bb-lw-bar">
                    <div class="bb-lw-bar-a" style="width:50%;background:#FAD7A0">
                        窓側派 50%                    </div>
                    <div class="bb-lw-bar-b" style="width:50%;background:#D2B4DE">
                        廊下側派 50%                    </div>
                </div>
                            </div>
            
                        <div class="bb-header">
                <div class="bb-eyecatch">みんなはどっち？</div>
                                <div class="bb-title">部活、運動部と文化部どっちに入りたい？</div>
                                <div class="bb-countdown" data-end-ts="1776643199">
                    残り <span class="bb-count-days">6</span>日
                </div>
                                <div class="bb-total-count">現在 <span class="bb-total-num">5</span> 人が投票！</div>
            </div>

                                    <div class="bb-vote-area" id="bb-vote-area-7">
                <div class="bb-grade-select-wrap">
                    <div class="bb-grade-label">学年を選んでね</div>
                    <div class="bb-grade-buttons" id="bb-grade-7">
                                                <button class="bb-grade-btn" data-grade="中1">中1</button>
                                                <button class="bb-grade-btn" data-grade="中2">中2</button>
                                                <button class="bb-grade-btn" data-grade="中3">中3</button>
                                                <button class="bb-grade-btn" data-grade="高1">高1</button>
                                                <button class="bb-grade-btn" data-grade="高2">高2</button>
                                                <button class="bb-grade-btn" data-grade="高3">高3</button>
                                            </div>
                    <div class="bb-grade-error" id="bb-grade-error-7">先に学年を選んでください</div>
                </div>
                <div class="bb-choices">
                    <button class="bb-btn bb-btn-a" data-theme-id="7" data-choice="a">
                        <span class="bb-btn-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f448.png" alt="👈" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                        <span class="bb-btn-label">運動部派</span>
                    </button>
                    <div class="bb-vs">VS</div>
                    <button class="bb-btn bb-btn-b" data-theme-id="7" data-choice="b">
                        <span class="bb-btn-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                        <span class="bb-btn-label">文化部派</span>
                    </button>
                </div>
            </div>
            
                        <div class="bb-result-area bb-hidden" id="bb-result-area-7">
                
                <div class="bb-chart-area">
                    <div class="bb-donut-wrap">
                        <div class="bb-donut" id="bb-donut-7"
                             style="background:conic-gradient(#FF6B6B 0% 60%,#4ECDC4 60% 100%);">
                        </div>
                        <div class="bb-donut-center">
                            <span class="bb-donut-pct" id="bb-donut-pct-7">60%</span>
                            <span class="bb-donut-sub" id="bb-donut-sub-7">運動部派</span>
                        </div>
                    </div>
                    <div class="bb-chart-legend">
                        <div class="bb-legend-item">
                            <span class="bb-legend-dot" style="background:#FF6B6B"></span>
                            <span class="bb-legend-label">運動部派</span>
                            <span class="bb-legend-pct" id="bb-pct-a-7">60%</span>
                            <span class="bb-legend-cnt">（<span id="bb-cnt-a-7">3</span>票）</span>
                        </div>
                        <div class="bb-legend-item">
                            <span class="bb-legend-dot" style="background:#4ECDC4"></span>
                            <span class="bb-legend-label">文化部派</span>
                            <span class="bb-legend-pct" id="bb-pct-b-7">40%</span>
                            <span class="bb-legend-cnt">（<span id="bb-cnt-b-7">2</span>票）</span>
                        </div>
                    </div>
                </div>

                <div class="bb-grade-breakdown">
                    <div class="bb-breakdown-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 学年別の結果</div>
                    <div class="bb-breakdown-grid" id="bb-breakdown-7">
                                                <div class="bb-grade-row" data-grade="中1">
                            <span class="bb-grade-name">中1</span>
                            <div class="bb-grade-bar-wrap">
                                <div class="bb-grade-bar-a" style="width:100%;background:#FF6B6B">100%</div>
                                <div class="bb-grade-bar-b" style="width:0%;background:#4ECDC4"></div>
                            </div>
                            <span class="bb-grade-total">1票</span>
                        </div>
                                                <div class="bb-grade-row" data-grade="中2">
                            <span class="bb-grade-name">中2</span>
                            <div class="bb-grade-bar-wrap">
                                <div class="bb-grade-bar-a" style="width:100%;background:#FF6B6B">100%</div>
                                <div class="bb-grade-bar-b" style="width:0%;background:#4ECDC4"></div>
                            </div>
                            <span class="bb-grade-total">1票</span>
                        </div>
                                                <div class="bb-grade-row" data-grade="中3">
                            <span class="bb-grade-name">中3</span>
                            <div class="bb-grade-bar-wrap">
                                <div class="bb-grade-bar-a" style="width:0%;background:#FF6B6B"></div>
                                <div class="bb-grade-bar-b" style="width:100%;background:#4ECDC4">100%</div>
                            </div>
                            <span class="bb-grade-total">0票</span>
                        </div>
                                                <div class="bb-grade-row" data-grade="高1">
                            <span class="bb-grade-name">高1</span>
                            <div class="bb-grade-bar-wrap">
                                <div class="bb-grade-bar-a" style="width:0%;background:#FF6B6B"></div>
                                <div class="bb-grade-bar-b" style="width:100%;background:#4ECDC4">100%</div>
                            </div>
                            <span class="bb-grade-total">1票</span>
                        </div>
                                                <div class="bb-grade-row" data-grade="高2">
                            <span class="bb-grade-name">高2</span>
                            <div class="bb-grade-bar-wrap">
                                <div class="bb-grade-bar-a" style="width:0%;background:#FF6B6B"></div>
                                <div class="bb-grade-bar-b" style="width:100%;background:#4ECDC4">100%</div>
                            </div>
                            <span class="bb-grade-total">0票</span>
                        </div>
                                                <div class="bb-grade-row" data-grade="高3">
                            <span class="bb-grade-name">高3</span>
                            <div class="bb-grade-bar-wrap">
                                <div class="bb-grade-bar-a" style="width:50%;background:#FF6B6B">50%</div>
                                <div class="bb-grade-bar-b" style="width:50%;background:#4ECDC4">50%</div>
                            </div>
                            <span class="bb-grade-total">2票</span>
                        </div>
                                            </div>
                </div>
            </div>

                        <div class="bb-comment-section" id="bb-comment-section-7">

                                                <div class="bb-vote-first-msg"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b06.png" alt="⬆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 投票すると理由を書けるよ！</div>
                                
                                <div class="bb-no-comments" id="bb-no-comments-7">まだコメントがありません。最初に投稿しよう！</div>
                            </div>
        </div>

                <div class="bb-milestone-overlay" id="bb-milestone-overlay" style="display:none">
            <div class="bb-milestone-card">
                <div class="bb-milestone-emoji" id="bb-milestone-emoji"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                <div class="bb-milestone-msg" id="bb-milestone-msg"></div>
            </div>
        </div>
        </p>


<p>    <div class="juken-poll-container" id="poll-poll_study_place_01" data-id="poll_study_place_01">
        <div class="juken-poll-header">
            <span class="juken-poll-label">VOTE</span>
            <h3 class="juken-poll-question">主な勉強場所はどこ？</h3>
        </div>
        
        <div class="juken-poll-options ">
                            <div class="juken-poll-option" data-index="0">
                    <button class="poll-btn" >
                        <span class="poll-btn-text">自宅（自室）</span>
                        <span class="poll-btn-icon"></span>
                    </button>

                    <div class="poll-result-wrapper">
                        <div class="poll-result-info">
                            <span class="poll-result-label">自宅（自室）</span>
                            <span class="poll-result-percent"><strong>55%</strong></span>
                        </div>
                        <div class="poll-result-bar-bg">
                            <div class="poll-result-bar" style="width: 55%;"></div>
                        </div>
                        <div class="poll-result-votes">169 票</div>
                    </div>
                </div>
                            <div class="juken-poll-option" data-index="1">
                    <button class="poll-btn" >
                        <span class="poll-btn-text">自宅（リビング）</span>
                        <span class="poll-btn-icon"></span>
                    </button>

                    <div class="poll-result-wrapper">
                        <div class="poll-result-info">
                            <span class="poll-result-label">自宅（リビング）</span>
                            <span class="poll-result-percent"><strong>22%</strong></span>
                        </div>
                        <div class="poll-result-bar-bg">
                            <div class="poll-result-bar" style="width: 22%;"></div>
                        </div>
                        <div class="poll-result-votes">69 票</div>
                    </div>
                </div>
                            <div class="juken-poll-option" data-index="2">
                    <button class="poll-btn" >
                        <span class="poll-btn-text">学校の自習室</span>
                        <span class="poll-btn-icon"></span>
                    </button>

                    <div class="poll-result-wrapper">
                        <div class="poll-result-info">
                            <span class="poll-result-label">学校の自習室</span>
                            <span class="poll-result-percent"><strong>5%</strong></span>
                        </div>
                        <div class="poll-result-bar-bg">
                            <div class="poll-result-bar" style="width: 5%;"></div>
                        </div>
                        <div class="poll-result-votes">14 票</div>
                    </div>
                </div>
                            <div class="juken-poll-option" data-index="3">
                    <button class="poll-btn" >
                        <span class="poll-btn-text">塾・予備校の自習室</span>
                        <span class="poll-btn-icon"></span>
                    </button>

                    <div class="poll-result-wrapper">
                        <div class="poll-result-info">
                            <span class="poll-result-label">塾・予備校の自習室</span>
                            <span class="poll-result-percent"><strong>11%</strong></span>
                        </div>
                        <div class="poll-result-bar-bg">
                            <div class="poll-result-bar" style="width: 11%;"></div>
                        </div>
                        <div class="poll-result-votes">34 票</div>
                    </div>
                </div>
                            <div class="juken-poll-option" data-index="4">
                    <button class="poll-btn" >
                        <span class="poll-btn-text">カフェ・ファミレス</span>
                        <span class="poll-btn-icon"></span>
                    </button>

                    <div class="poll-result-wrapper">
                        <div class="poll-result-info">
                            <span class="poll-result-label">カフェ・ファミレス</span>
                            <span class="poll-result-percent"><strong>1%</strong></span>
                        </div>
                        <div class="poll-result-bar-bg">
                            <div class="poll-result-bar" style="width: 1%;"></div>
                        </div>
                        <div class="poll-result-votes">3 票</div>
                    </div>
                </div>
                            <div class="juken-poll-option" data-index="5">
                    <button class="poll-btn" >
                        <span class="poll-btn-text">図書館</span>
                        <span class="poll-btn-icon"></span>
                    </button>

                    <div class="poll-result-wrapper">
                        <div class="poll-result-info">
                            <span class="poll-result-label">図書館</span>
                            <span class="poll-result-percent"><strong>6%</strong></span>
                        </div>
                        <div class="poll-result-bar-bg">
                            <div class="poll-result-bar" style="width: 6%;"></div>
                        </div>
                        <div class="poll-result-votes">19 票</div>
                    </div>
                </div>
                    </div>
        <div class="poll-total-count">Total: 308 votes</div>
    </div>
    </p>
</div>

<div class="p-blogParts post_content" data-partsID="3598"><p>    
    <div id="sq_perfect_wrapper">
        <div class="sq-container">
            
            <div class="sq-bg-circle c1"></div>
            <div class="sq-bg-circle c2"></div>

            <div class="sq-screen active" id="sq-screen-title">
                <div class="sq-hero-card">
                    <div class="sq-badge">登録不要・無料</div>
                    <div class="sq-title">文系科目<br><span class="sq-highlight">実力診断クエスト</span></div>
                    <div class="sq-sub">30秒であなたの偏差値レベルを測定。<br>ゲーム感覚で苦手をチェックしよう！</div>
                    
                    <button type="button" class="sq-btn-start" data-act="to_grade">
                        診断をスタートする <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25b6.png" alt="▶" class="wp-smiley" style="height: 1em; max-height: 1em;" />
                    </button>
                </div>
                <div class="sq-hero-img"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f393.png" alt="🎓" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
            </div>

            <div class="sq-screen" id="sq-screen-grade">
                <div class="sq-header">
                    <button type="button" class="sq-back-btn" data-act="back_title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25c0.png" alt="◀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 戻る</button>
                    <div class="sq-step">STEP 1/2</div>
                </div>
                <div class="sq-q-title">学年を選んでね</div>
                
                <div class="sq-grid-2">
                    <button type="button" class="sq-select-card" data-act="grade" data-val="mid">
                        <div class="sq-icon-box blue"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/270f.png" alt="✏" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                        <div class="sq-card-txt">
                            <span class="sq-main-txt">中学生</span>
                            <span class="sq-sub-txt">高校受験</span>
                        </div>
                    </button>
                    <button type="button" class="sq-select-card" data-act="grade" data-val="high">
                        <div class="sq-icon-box orange"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4d6.png" alt="📖" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                        <div class="sq-card-txt">
                            <span class="sq-main-txt">高校生</span>
                            <span class="sq-sub-txt">大学受験</span>
                        </div>
                    </button>
                </div>
            </div>

            <div class="sq-screen" id="sq-screen-subj">
                <div class="sq-header">
                    <button type="button" class="sq-back-btn" data-act="back_grade"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25c0.png" alt="◀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 戻る</button>
                    <div class="sq-step">STEP 2/2</div>
                </div>
                <div class="sq-q-title">科目を選んでね</div>
                
                <div class="sq-list-menu">
                    <button type="button" class="sq-list-item" data-act="subject" data-val="eng">
                        <span class="sq-list-icon eng">A</span> 英語
                        <span class="sq-arrow">→</span>
                    </button>
                    <button type="button" class="sq-list-item" data-act="subject" data-val="kok">
                        <span class="sq-list-icon kok">文</span> 国語
                        <span class="sq-arrow">→</span>
                    </button>
                    <button type="button" class="sq-list-item" data-act="subject" data-val="soc">
                        <span class="sq-list-icon soc">地</span> 社会
                        <span class="sq-arrow">→</span>
                    </button>
                </div>
            </div>

            <div class="sq-screen" id="sq-screen-quiz">
                <div class="sq-status-bar">
                    <div class="sq-stage-badge">Q.<span id="sq-q-num">1</span></div>
                    <div class="sq-hp-container">
                        <div class="sq-hp-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                        <div class="sq-hp-bar"><div class="sq-hp-fill" id="sq-hp-bar"></div></div>
                    </div>
                </div>

                <div class="sq-quiz-area">
                    <div class="sq-mascot-area">
                        <div class="sq-mascot" id="sq-mascot"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f981.png" alt="🦁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                        <div class="sq-hit-effect" id="sq-hit-fx"></div>
                    </div>
                    
                    <div class="sq-question-bubble">
                        <div class="sq-q-text" id="sq-q-text">読み込み中&#8230;</div>
                    </div>
                </div>

                <div class="sq-options-grid" id="sq-options">
                    </div>
            </div>

            <div class="sq-overlay" id="sq-modal-exp">
                <div class="sq-modal-content">
                    <div class="sq-judge-area">
                        <div class="sq-judge-icon" id="sq-judge-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b55.png" alt="⭕" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                        <div class="sq-judge-text" id="sq-judge-text">正解！</div>
                    </div>
                    <div class="sq-exp-box">
                        <div class="sq-exp-label">解説</div>
                        <div class="sq-exp-body" id="sq-exp-text">&#8230;</div>
                    </div>
                    <button type="button" class="sq-btn-next" data-act="next_q">次へすすむ <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25b6.png" alt="▶" class="wp-smiley" style="height: 1em; max-height: 1em;" /></button>
                </div>
            </div>

            <div class="sq-screen" id="sq-screen-result">
                <div class="sq-result-card">
                    <div class="sq-congrats">診断完了！</div>
                    
                    <div class="sq-rank-area">
                        <div class="sq-rank-label">あなたのランク</div>
                        <div class="sq-rank-value" id="sq-res-rank">S</div>
                    </div>
                    
                    <div class="sq-score-text">正解数: <span id="sq-res-score">5</span>/5問</div>

                    <div class="sq-cta-area">
                        <div class="sq-cta-msg">▼ さらにレベルアップ！</div>
                        <a href="https://lawcityblog.com/" class="sq-btn-cta">
                            <span class="sq-cta-shine"></span>
                            <div class="sq-cta-inner">
                                <span class="sq-cta-main"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 完全版ツールを使う</span>
                                <span class="sq-cta-sub">高校・大学受験の全ツールを開放</span>
                            </div>
                        </a>
                        <div class="sq-tools-preview">
                            <span>英単語2022問</span> / <span>古文単語</span> / <span>日本史・世界史</span> / <span>小論文生成</span> etc&#8230;
                        </div>
                    </div>
                    
                    <button type="button" class="sq-retry-link" data-act="retry">トップに戻る</button>
                </div>
            </div>

        </div>
    </div>

    <style>
    /* --- Smart Pop Perfect Design --- */
    #sq_perfect_wrapper {
        width: 100%; margin: 3em 0;
        font-family: "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
        isolation: isolate;
        --sq-orange: #FF9F1C;
        --sq-blue: #2EC4B6;
        --sq-navy: #233D4D;
        --sq-red: #E71D36;
        --sq-bg: #FDFFFC;
        --sq-gray: #F1F5F9;
        --sq-shadow: 0 8px 24px rgba(35, 61, 77, 0.12);
    }
    #sq_perfect_wrapper * { box-sizing: border-box; user-select: none; -webkit-tap-highlight-color: transparent; }

    /* Container */
    .sq-container {
        max-width: 600px; margin: 0 auto;
        height: 620px;
        background: var(--sq-bg);
        border-radius: 24px;
        box-shadow: var(--sq-shadow);
        position: relative; overflow: hidden;
        border: 4px solid #FFF;
        display: flex; flex-direction: column;
        color: var(--sq-navy);
    }

    /* Background Deco */
    .sq-bg-circle { position: absolute; border-radius: 50%; opacity: 0.1; pointer-events: none; }
    .c1 { width: 300px; height: 300px; background: var(--sq-orange); top: -100px; right: -50px; }
    .c2 { width: 200px; height: 200px; background: var(--sq-blue); bottom: -50px; left: -50px; }

    /* Screens */
    .sq-screen {
        position: absolute; inset: 0;
        display: none; flex-direction: column; padding: 24px;
        transition: opacity 0.3s; z-index: 10;
        justify-content: center;
    }
    .sq-screen.active { display: flex; animation: sqFadeIn 0.4s ease; }

    /* 1. TITLE */
    #sq-screen-title { align-items: center; text-align: center; }
    .sq-hero-card {
        background: rgba(255,255,255,0.9); backdrop-filter: blur(5px);
        padding: 40px 20px; border-radius: 20px; width: 100%;
        box-shadow: var(--sq-shadow); margin-bottom: 20px;
        border: 2px solid #FFF;
    }
    .sq-badge { display: inline-block; background: var(--sq-blue); color: #FFF; font-size: 11px; font-weight: 700; padding: 4px 12px; border-radius: 20px; margin-bottom: 15px; }
    .sq-title { font-size: 32px; font-weight: 900; line-height: 1.2; margin: 0 0 15px 0; color: var(--sq-navy); }
    .sq-highlight { color: var(--sq-orange); display: inline-block; border-bottom: 4px solid rgba(255,159,28,0.2); }
    .sq-sub { font-size: 13px; color: #666; line-height: 1.6; margin-bottom: 30px; }
    
    .sq-btn-start {
        width: 100%; max-width: 280px; padding: 18px;
        background: linear-gradient(135deg, var(--sq-orange), #FFB74D);
        border: none; border-radius: 50px; color: #FFF; font-weight: 800; font-size: 16px;
        cursor: pointer; box-shadow: 0 4px 15px rgba(255,159,28,0.4);
        transition: transform 0.2s;
    }
    .sq-btn-start:hover { transform: translateY(-3px); }
    .sq-hero-img { font-size: 60px; animation: sqBounce 3s infinite; margin-top: 10px; }

    /* 2 & 3. SELECT SCREENS */
    .sq-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
    .sq-back-btn { background: none; border: none; color: #999; font-size: 12px; cursor: pointer; font-weight: 700; }
    .sq-step { font-size: 12px; color: var(--sq-blue); font-weight: 900; background: #E0F2F1; padding: 4px 10px; border-radius: 10px; }
    
    .sq-q-title { font-size: 20px; font-weight: 900; text-align: center; margin-bottom: 30px; }
    
    .sq-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
    .sq-select-card {
        background: #FFF; border: 2px solid #F0F0F0; border-radius: 16px; padding: 25px 10px;
        cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; align-items: center;
        box-shadow: 0 4px 0 #EDEFF1;
    }
    .sq-select-card:hover { border-color: var(--sq-blue); transform: translateY(-2px); box-shadow: 0 6px 0 #EDEFF1; }
    .sq-select-card:active { transform: translateY(2px); box-shadow: 0 2px 0 #EDEFF1; }
    
    .sq-icon-box { width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; margin-bottom: 10px; }
    .blue { background: #E0F7FA; } .orange { background: #FFF3E0; }
    .sq-main-txt { font-size: 16px; font-weight: 800; display: block; color: var(--sq-navy); }
    .sq-sub-txt { font-size: 10px; color: #999; margin-top: 4px; display: block; }

    .sq-list-menu { display: flex; flex-direction: column; gap: 12px; }
    .sq-list-item {
        width: 100%; padding: 16px 20px; background: #FFF; border: 2px solid #F0F0F0; border-radius: 14px;
        display: flex; align-items: center; cursor: pointer; transition: all 0.2s;
        text-align: left; font-weight: 700; color: var(--sq-navy); font-size: 15px;
        box-shadow: 0 4px 0 #EDEFF1;
    }
    .sq-list-item:hover { border-color: var(--sq-orange); transform: translateX(4px); }
    .sq-list-icon { display: inline-flex; width: 32px; height: 32px; align-items: center; justify-content: center; border-radius: 8px; color: #FFF; font-size: 10px; margin-right: 12px; }
    .eng { background: #FF9F1C; } .kok { background: #2EC4B6; } .soc { background: #E71D36; }
    .sq-arrow { margin-left: auto; color: #CCC; font-size: 12px; }

    /* 4. QUIZ SCREEN */
    #sq-screen-quiz { justify-content: flex-start; padding-top: 30px; }
    
    .sq-status-bar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
    .sq-stage-badge { background: var(--sq-navy); color: #FFF; padding: 4px 12px; border-radius: 20px; font-weight: 800; font-size: 12px; }
    
    .sq-hp-container { display: flex; align-items: center; flex: 1; margin-left: 15px; }
    .sq-hp-icon { font-size: 14px; margin-right: 5px; }
    .sq-hp-bar { flex: 1; height: 10px; background: #E0E0E0; border-radius: 5px; overflow: hidden; }
    .sq-hp-fill { width: 100%; height: 100%; background: var(--sq-red); transition: width 0.3s; }

    .sq-quiz-area { text-align: center; margin-bottom: 20px; }
    .sq-mascot-area { position: relative; height: 80px; display: flex; align-items: center; justify-content: center; margin-bottom: 10px; }
    .sq-mascot { font-size: 70px; animation: sqFloat 3s ease-in-out infinite; z-index: 2; filter: drop-shadow(0 4px 0 rgba(0,0,0,0.1)); }
    
    .sq-question-bubble {
        background: #FFF; border: 2px solid var(--sq-blue); border-radius: 16px; padding: 20px;
        position: relative; box-shadow: 0 4px 10px rgba(46,196,182,0.1); min-height: 80px;
        display: flex; align-items: center; justify-content: center;
    }
    .sq-question-bubble::before {
        content:''; position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
        border-left: 10px solid transparent; border-right: 10px solid transparent; border-bottom: 10px solid var(--sq-blue);
    }
    .sq-q-text { font-size: 16px; font-weight: 700; line-height: 1.8; color: var(--sq-navy); font-feature-settings: "palt"; }

    .sq-options-grid { display: grid; gap: 10px; width: 100%; }
    .sq-opt-btn {
        width: 100%; padding: 16px; background: #FFF; border: 2px solid #E2E8F0; border-radius: 12px;
        text-align: left; font-size: 14px; font-weight: 700; color: #555;
        cursor: pointer; transition: 0.1s; box-shadow: 0 4px 0 #E2E8F0;
        font-feature-settings: "palt";
    }
    .sq-opt-btn:active { transform: translateY(4px); box-shadow: none; }
    .sq-opt-btn:hover:not(:disabled) { background: #E0F7FA; border-color: var(--sq-blue); color: var(--sq-blue); }
    
    .sq-opt-btn.correct { background: #E8F5E9 !important; border-color: #4CAF50 !important; color: #2E7D32 !important; box-shadow: none !important; transform: translateY(4px); }
    .sq-opt-btn.wrong { background: #FFEBEE !important; border-color: #E71D36 !important; color: #C62828 !important; opacity: 0.7; }

    /* FX */
    .sq-hit-effect { position: absolute; font-size: 40px; font-weight: 900; color: var(--sq-orange); top: 0; right: 0; opacity: 0; pointer-events: none; }
    .sq-hit-effect.active { animation: sqPopUp 0.5s ease-out; content: "HIT!"; }

    /* 5. MODAL */
    .sq-overlay {
        position: absolute; inset: 0; z-index: 30; background: rgba(255,255,255,0.9);
        display: none; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.2s;
    }
    .sq-overlay.show { display: flex; opacity: 1; }
    
    .sq-modal-content { width: 90%; text-align: center; animation: sqSlideUp 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
    .sq-judge-area { margin-bottom: 20px; }
    .sq-judge-icon { font-size: 50px; animation: sqBounce 0.5s; }
    .sq-judge-text { font-size: 24px; font-weight: 900; color: var(--sq-blue); }
    .sq-judge-text.ng { color: var(--sq-red); }
    
    .sq-exp-box { background: #F8F9FA; border-radius: 12px; padding: 20px; text-align: left; margin-bottom: 24px; border: 1px dashed #CCC; }
    .sq-exp-label { font-size: 11px; font-weight: 700; color: var(--sq-blue); margin-bottom: 5px; }
    .sq-exp-body { font-size: 14px; line-height: 1.7; color: #333; font-feature-settings: "palt"; }
    
    .sq-btn-next {
        width: 100%; padding: 16px; background: var(--sq-blue); color: #FFF; border: none;
        border-radius: 50px; font-weight: 800; font-size: 16px; cursor: pointer;
        box-shadow: 0 4px 10px rgba(46,196,182,0.3); transition: transform 0.2s;
    }
    .sq-btn-next:hover { transform: translateY(-2px); }

    /* 6. RESULT */
    #sq-screen-result { justify-content: center; }
    .sq-result-card { width: 100%; background: #FFF; border-radius: 20px; padding: 30px 20px; text-align: center; box-shadow: var(--sq-shadow); border: 1px solid #EEE; }
    .sq-congrats { font-size: 18px; font-weight: 900; color: var(--sq-orange); margin-bottom: 20px; letter-spacing: 2px; }
    
    .sq-rank-area { width: 100px; height: 100px; background: var(--sq-navy); border-radius: 50%; margin: 0 auto 15px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #FFF; animation: sqPopIn 0.5s ease; }
    .sq-rank-label { font-size: 10px; opacity: 0.8; }
    .sq-rank-value { font-size: 40px; font-weight: 900; line-height: 1; }
    
    .sq-score-text { font-size: 16px; font-weight: 700; color: #555; margin-bottom: 20px; }
    
    .sq-cta-area { background: #FFFBEB; border: 2px dashed var(--sq-orange); border-radius: 12px; padding: 20px; margin-bottom: 20px; }
    .sq-cta-msg { font-size: 12px; font-weight: 700; color: var(--sq-orange); margin-bottom: 10px; }
    
    .sq-btn-cta {
        display: block; width: 100%; padding: 16px; background: linear-gradient(135deg, var(--sq-orange), #FFB74D);
        color: #FFF; text-decoration: none; border-radius: 12px;
        box-shadow: 0 8px 20px rgba(255,159,28,0.3); position: relative; overflow: hidden;
        transition: transform 0.2s; text-align: center;
    }
    .sq-btn-cta:hover { transform: translateY(-3px); }
    .sq-cta-shine { position: absolute; top: 0; left: -100%; width: 50%; height: 100%; background: rgba(255,255,255,0.4); transform: skewX(-25deg); animation: sqShine 3s infinite; }
    .sq-cta-main { font-size: 16px; font-weight: 800; display: block; }
    .sq-cta-sub { font-size: 10px; font-weight: 700; opacity: 0.9; display: block; }
    
    .sq-tools-preview { font-size: 10px; color: #666; margin-top: 10px; line-height: 1.4; }
    .sq-tools-preview span { font-weight: 700; color: var(--sq-navy); }

    .sq-retry-link { background: none; border: none; color: #999; text-decoration: underline; margin-top: 15px; cursor: pointer; font-size: 12px; }

    /* Animations */
    @keyframes sqFadeIn { from { opacity: 0; } to { opacity: 1; } }
    @keyframes sqBounce { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
    @keyframes sqFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
    @keyframes sqPopUp { 0% { transform: scale(0.5); opacity: 0; } 70% { transform: scale(1.2); opacity: 1; } 100% { transform: scale(1); opacity: 0; } }
    @keyframes sqSlideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
    @keyframes sqPopIn { 0% { transform: scale(0); } 70% { transform: scale(1.1); } 100% { transform: scale(1); } }
    @keyframes sqShine { 0% { left: -100%; } 20% { left: 200%; } 100% { left: 200%; } }

    @media(max-width:480px){
        .sq-container { height: 620px; }
    }
    </style>

    <script>
    (function(){
        "use strict";
        const ROOT = document.getElementById('sq_perfect_wrapper');
        const JSON_URL = 'https://lawcityblog.com/wp-content/uploads/2026/02/firststep2.json';
        
        let state = { data: [], grade: null, subject: null, questions: [], qIdx: 0, score: 0, enemyHp: 100 };

        const $ = (sel) => ROOT.querySelector(sel);
        const $$ = (sel) => ROOT.querySelectorAll(sel);
        const showScreen = (id) => {
            $$('.sq-screen').forEach(el => el.classList.remove('active'));
            $(id).classList.add('active');
        };

        fetch(JSON_URL).then(r=>r.json()).then(d=>{ state.data = d; })
        .catch(e=>console.error("Data Load Error"));

        // ★ TEXT FORMATTER v2 (Advanced Spacing)
        function formatText(text) {
            if(!text) return "";
            let t = text;
            // 1. English/Num <-> Japanese
            t = t.replace(/([a-zA-Z0-9])([\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF])/g, '$1 $2');
            t = t.replace(/([\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF])([a-zA-Z0-9])/g, '$1 $2');
            // 2. Parentheses () [] {}
            t = t.replace(/([a-zA-Z0-9\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF])([(\[{])/g, '$1 $2');
            t = t.replace(/([)\]}])([a-zA-Z0-9\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFFEF\u4E00-\u9FAF])/g, '$1 $2');
            // 3. Clean up
            t = t.replace(/\s+/g, ' ');
            return t;
        }

        ROOT.addEventListener('click', function(e){
            const btn = e.target.closest('button');
            if(!btn) return;
            const act = btn.getAttribute('data-act');

            if(act === 'to_grade') showScreen('#sq-screen-grade');
            else if(act === 'back_title') showScreen('#sq-screen-title');
            else if(act === 'grade') {
                state.grade = btn.getAttribute('data-val');
                showScreen('#sq-screen-subj');
            }
            else if(act === 'back_grade') showScreen('#sq-screen-grade');
            else if(act === 'subject') {
                state.subject = btn.getAttribute('data-val');
                startQuiz();
            }
            else if(act === 'opt') {
                const txt = btn.getAttribute('data-val');
                handleAnswer(btn, txt);
            }
            else if(act === 'next_q') {
                $('#sq-modal-exp').classList.remove('show');
                state.qIdx++;
                nextTurn();
            }
            else if(act === 'retry') {
                state.grade = null;
                showScreen('#sq-screen-title');
            }
        });

        function startQuiz() {
            const prefix = (state.grade === 'mid') ? 'hs_' : 'uni_';
            const cat = prefix + state.subject; 
            const qs = state.data.filter(d => d.category === cat);
            if(!qs.length) { alert('準備中です'); return; }

            state.questions = qs.sort(() => 0.5 - Math.random()).slice(0, 5);
            state.qIdx = 0;
            state.score = 0;
            state.enemyHp = 5;

            // Character Setting (Cool & Strong)
            const mascots = { eng: '&#x1f981;', kok: '&#x1f985;', soc: '&#x1f409;' };
            $('#sq-mascot').innerText = mascots[state.subject] || '&#x1f393;';

            showScreen('#sq-screen-quiz');
            nextTurn();
        }

        function nextTurn() {
            if(state.qIdx >= 5) { showResult(); return; }

            const q = state.questions[state.qIdx];
            updateHud();
            
            $('#sq-q-text').innerText = formatText(q.question);

            const optsDiv = $('#sq-options');
            optsDiv.innerHTML = '';
            const choices = [q.option1, q.option2, q.option3, q.option4].sort(()=>0.5-Math.random());
            
            choices.forEach(c => {
                const b = document.createElement('button');
                b.type = 'button';
                b.className = 'sq-opt-btn';
                b.setAttribute('data-act', 'opt');
                b.setAttribute('data-val', c);
                b.innerText = formatText(c);
                optsDiv.appendChild(b);
            });
        }

        function handleAnswer(btn, ansTxt) {
            $$('.sq-opt-btn').forEach(b => b.disabled = true);
            const q = state.questions[state.qIdx];
            const isCorrect = (ansTxt === q.answer);

            if(isCorrect) {
                state.score++;
                state.enemyHp--;
                updateHud();
                btn.classList.add('correct');
                
                const fx = $('#sq-hit-fx');
                fx.innerText = "HIT!";
                fx.classList.remove('active');
                void fx.offsetWidth; 
                fx.classList.add('active');
            } else {
                btn.classList.add('wrong');
                $$('.sq-opt-btn').forEach(b => {
                    if(b.innerText === formatText(q.answer)) b.style.borderColor = '#4CAF50';
                });
            }

            setTimeout(() => {
                const icon = $('#sq-judge-icon');
                const title = $('#sq-judge-text');
                if(isCorrect) {
                    icon.innerText = "&#x2b55;";
                    title.innerText = "正解！";
                    title.className = "sq-judge-text";
                } else {
                    icon.innerText = "&#x274c;";
                    title.innerText = "ドンマイ！";
                    title.className = "sq-judge-text ng";
                }
                
                $('#sq-exp-text').innerText = formatText(q.explanation || "解説はありません");
                $('#sq-modal-exp').classList.add('show');
            }, 600);
        }

        function updateHud() {
            $('#sq-q-num').innerText = state.qIdx + 1;
            const pct = (state.enemyHp / 5) * 100;
            $('#sq-hp-bar').style.width = pct + '%';
        }

        function showResult() {
            showScreen('#sq-screen-result');
            
            let rank = 'C';
            if(state.score === 5) rank = 'S';
            else if(state.score === 4) rank = 'A';
            else if(state.score >= 2) rank = 'B';

            $('#sq-res-rank').innerText = rank;
            $('#sq-res-score').innerText = state.score;
        }

    })();
    </script>
    
    </p>
</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0783-500x273.jpeg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://lawcityblog.com/english-test-maker/">【無料】大学受験　英単語テスト2022問 ４択クイズで実力診断</a>
						<span class="p-blogCard__excerpt">英単語2022問、全部ここにある。 共通テストから難関私大まで。4択クイズを解くだけで、あなたの弱点が見える。 【今すぐテストを始める ▼】 単語帳は3周したのに、模試&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0784-500x273.jpeg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://lawcityblog.com/kobun-test-maker/">【無料・大学受験】高校古文単語テスト 501問　ダンジョン形式の4択クイズで完全攻略</a>
						<span class="p-blogCard__excerpt">楽しみながら古文単語を完全攻略しよう 古文単語501問。ダンジョンを攻略するように、一語ずつ倒していきましょう。 【ダンジョンに挑む ▼】 古文の文法が苦手な人はこ&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0790-500x273.jpeg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://lawcityblog.com/japanese-history-maker/">【無料・大学受験】高校日本史 一問一答 1500問 時代×レベルで弱点をピンポイント攻略</a>
						<span class="p-blogCard__excerpt">日本史1500問。時代とレベルを選んで、今日から弱点を潰そう。 教科書レベルから早慶・難関国公立まで。あなた専用のテストを何度でも。 「通史は一通りやったのに、模&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0788-500x273.jpeg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://lawcityblog.com/high-school-english-test/">【無料・高校受験】中学英単語テスト1000問 入試頻出単語を4択クイズで完全攻略</a>
						<span class="p-blogCard__excerpt">入試に出る英単語1000問。全部ここで今すぐ覚えよう。 4択クイズを解くだけ。入試本番で「この単語、知ってる！」を増やしていこう。 「英語は単語がわからないと何もで&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0791-500x273.jpeg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://lawcityblog.com/high-school-grammar/">【無料・高校受験】中学国語文法・知識テスト 400問 品詞・敬語・古文・漢文を完全網羅</a>
						<span class="p-blogCard__excerpt">国語の「知識問題」、全てをここで完成。 対義語・敬語・文法・古文・漢文・四字熟語。400問で入試の知識分野を完全制覇。 「読解はなんとかなるけど、知識問題で毎回落&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h2 class="wp-block-heading">８つの学習サポートツール</h2>



<figure class="wp-block-image size-full"><img decoding="async" width="780" height="426" src="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0798.jpeg" alt="８つの学習サポートツール" class="wp-image-3890" srcset="https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0798.jpeg 780w, https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0798-500x273.jpeg 500w, https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0798-300x164.jpeg 300w, https://lawcityblog.com/wp-content/uploads/2026/02/IMG_0798-768x419.jpeg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-center" data-align="center">ツール名</th><th class="has-text-align-center" data-align="center">解決する悩み</th><th class="has-text-align-center" data-align="center">使用場面</th></tr></thead><tbody><tr><th class="has-text-align-center" data-align="center">ポモドーロタイマー</th><td class="has-text-align-center" data-align="center">集中が続かない</td><td class="has-text-align-center" data-align="center">毎日の自習</td></tr><tr><th class="has-text-align-center" data-align="center">学習用タイマー</th><td class="has-text-align-center" data-align="center">時間感覚がつかめない</td><td class="has-text-align-center" data-align="center">過去問演習・小テスト</td></tr><tr><th class="has-text-align-center" data-align="center">集中用BGM</th><td class="has-text-align-center" data-align="center">周囲の音が気になる</td><td class="has-text-align-center" data-align="center">自宅学習・カフェ</td></tr><tr><th class="has-text-align-center" data-align="center">1日の勉強記録</th><td class="has-text-align-center" data-align="center">勉強量が見えない</td><td class="has-text-align-center" data-align="center">毎日の振り返り</td></tr><tr><th class="has-text-align-center" data-align="center">緊張をほぐす呼吸法</th><td class="has-text-align-center" data-align="center">試験前の不安</td><td class="has-text-align-center" data-align="center">模試・入試当日</td></tr><tr><th class="has-text-align-center" data-align="center">学習タイプ別診断</th><td class="has-text-align-center" data-align="center">自分に合う勉強法がわからない</td><td class="has-text-align-center" data-align="center">勉強法の見直し時</td></tr><tr><th class="has-text-align-center" data-align="center">合格ロードマップ</th><td class="has-text-align-center" data-align="center">計画が立てられない</td><td class="has-text-align-center" data-align="center">受験勉強の開始時</td></tr><tr><th class="has-text-align-center" data-align="center">試験時間計算機</th><td class="has-text-align-center" data-align="center">時間配分がわからない</td><td class="has-text-align-center" data-align="center">過去問演習・本番前</td></tr></tbody></table></figure>




    <style>
        .memo-wrapper {
            border: 1px solid #ddd;
            border-top: 4px solid #fdd835; /* 黄色のアクセント（付箋風） */
            background: #fffcf5;
            padding: 10px;
            border-radius: 4px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.05);
            margin: 20px 0;
        }
        .memo-header {
            font-size: 0.9em;
            font-weight: bold;
            color: #bfa006;
            margin-bottom: 5px;
            display: flex;
            justify-content: space-between;
        }
        .memo-area {
            width: 100%;
            height: 150px;
            border: 1px solid #eee;
            background: transparent;
            resize: vertical;
            font-family: inherit;
            padding: 8px;
            box-sizing: border-box;
            font-size: 0.95em;
            line-height: 1.5;
            outline: none;
        }
        .memo-area:focus {
            border-color: #fdd835;
        }
        .memo-status {
            font-size: 0.7em;
            color: #999;
            text-align: right;
            margin-top: 3px;
        }
    </style>

    <div class="memo-wrapper">
        <div class="memo-header">
            <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> マイ・メモ帳</span>
            <span style="cursor:pointer;" onclick="document.getElementById('area-memo-69de1c84e95fb').value=''; document.getElementById('area-memo-69de1c84e95fb').dispatchEvent(new Event('input'));"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5d1.png" alt="🗑" class="wp-smiley" style="height: 1em; max-height: 1em;" /> クリア</span>
        </div>
        <textarea id="area-memo-69de1c84e95fb" class="memo-area" placeholder="ここにメモを残せます（自動保存されます）..."></textarea>
        <div id="status-memo-69de1c84e95fb" class="memo-status">保存済み</div>
    </div>

    <script>
    (function() {
        var key = "study_memo_main";
        var area = document.getElementById("area-memo-69de1c84e95fb");
        var status = document.getElementById("status-memo-69de1c84e95fb");

        // 読み込み時に復元
        var saved = localStorage.getItem(key);
        if (saved) {
            area.value = saved;
        }

        // 入力するたびに保存
        area.addEventListener("input", function() {
            localStorage.setItem(key, area.value);
            status.innerText = "保存中...";
            setTimeout(function(){ status.innerText = "保存済み"; }, 500);
        });
    })();
    </script>
    



<h2 class="wp-block-heading">① ポモドーロタイマー</h2>




    <style>
        /* デザイン変数：北欧ミニマル */
        #zn-69de1c84e962f-wrap {
            --zn-bg: #fdfdfd;       /* 背景：ほぼ白に近い生成り */
            --zn-text: #4a4a4a;     /* 文字：チャコールグレー */
            --zn-accent: #8FA79A;   /* アクセント：セージグリーン */
            --zn-accent-h: #768f82; /* ホバー時のグリーン */
            --zn-border: #eeeeee;   /* 境界線 */
            --zn-shadow: 0 20px 60px -10px rgba(0,0,0,0.05); /* ふんわりした影 */
            font-family: "Helvetica Neue", "Hiragino Kaku Gothic ProN", sans-serif;
            margin: 40px auto;
            max-width: 400px;
            background: var(--zn-bg);
            border-radius: 24px;
            box-shadow: var(--zn-shadow);
            color: var(--zn-text);
            overflow: hidden;
            border: 1px solid #fcfcfc;
        }

        /* ヘッダー・タブ */
        .zn-tabs {
            display: flex;
            justify-content: center;
            padding: 25px 0 10px;
            gap: 15px;
        }
        .zn-tab {
            font-size: 0.75em;
            letter-spacing: 1px;
            cursor: pointer;
            padding: 6px 14px;
            border-radius: 20px;
            color: #bbb;
            transition: all 0.3s ease;
            background: transparent;
        }
        .zn-tab.active {
            background: #f4f6f5;
            color: var(--zn-accent);
            font-weight: bold;
        }

        /* タイマー円グラフ */
        .zn-timer-container {
            position: relative;
            width: 200px;
            height: 200px;
            margin: 20px auto 30px;
        }
        .zn-svg {
            transform: rotate(-90deg);
            width: 100%; height: 100%;
        }
        .zn-circle-track {
            fill: none;
            stroke: #f7f7f7;
            stroke-width: 3;
        }
        .zn-circle-bar {
            fill: none;
            stroke: var(--zn-accent);
            stroke-width: 3;
            stroke-linecap: round;
            stroke-dasharray: 628; /* 2 * PI * 100 */
            stroke-dashoffset: 0;
            transition: stroke-dashoffset 1s linear;
        }
        .zn-time-display {
            position: absolute;
            top: 50%; left: 50%;
            transform: translate(-50%, -50%);
            text-align: center;
        }
        .zn-time {
            font-size: 3.5em;
            font-weight: 200; /* 極細フォントで洗練させる */
            line-height: 1;
            letter-spacing: -1px;
            color: var(--zn-text);
        }
        .zn-status {
            font-size: 0.7em;
            letter-spacing: 2px;
            color: #aaa;
            margin-top: 8px;
            text-transform: uppercase;
        }

        /* コントロールボタン */
        .zn-controls {
            display: flex;
            justify-content: center;
            gap: 15px;
            margin-bottom: 40px;
        }
        .zn-btn {
            border: none;
            padding: 12px 32px;
            border-radius: 50px;
            cursor: pointer;
            font-size: 0.9em;
            letter-spacing: 1px;
            transition: all 0.3s;
        }
        .zn-btn-main {
            background: var(--zn-accent);
            color: #fff;
            box-shadow: 0 4px 15px rgba(143, 167, 154, 0.3);
        }
        .zn-btn-main:hover {
            background: var(--zn-accent-h);
            transform: translateY(-2px);
        }
        .zn-btn-sub {
            background: transparent;
            border: 1px solid var(--zn-border);
            color: #aaa;
        }
        .zn-btn-sub:hover {
            border-color: var(--zn-text);
            color: var(--zn-text);
        }

        /* ToDoリストエリア */
        .zn-todo-wrap {
            border-top: 1px solid var(--zn-border);
            padding: 30px;
            background: #fdfdfd;
        }
        .zn-input-group {
            display: flex;
            align-items: center;
            background: #f9f9f9;
            border-radius: 12px;
            padding: 8px 15px;
            margin-bottom: 20px;
        }
        .zn-input {
            flex: 1;
            border: none;
            background: transparent;
            padding: 5px;
            font-size: 0.95em;
            color: var(--zn-text);
            outline: none;
        }
        .zn-add-btn {
            border: none;
            background: transparent;
            color: var(--zn-accent);
            font-size: 1.4em;
            cursor: pointer;
            line-height: 1;
        }
        
        .zn-list { list-style: none; padding: 0; margin: 0; }
        .zn-item {
            display: flex;
            align-items: center;
            padding: 12px 0;
            border-bottom: 1px solid #fcfcfc;
            transition: all 0.4s ease;
        }
        .zn-item.completed {
            opacity: 0;
            transform: translateX(20px);
            pointer-events: none;
        }
        
        /* カスタムチェックボックス */
        .zn-chk-label {
            position: relative; cursor: pointer; display: flex; align-items: center; margin-right: 12px;
        }
        .zn-chk-input { display: none; }
        .zn-chk-viz {
            width: 18px; height: 18px;
            border: 1px solid #ddd; border-radius: 50%;
            display: flex; align-items: center; justify-content: center;
            transition: all 0.2s;
        }
        .zn-chk-input:checked + .zn-chk-viz {
            background: var(--zn-accent); border-color: var(--zn-accent);
        }
        .zn-chk-viz::after {
            content: "✓"; color: #fff; font-size: 10px; display: none;
        }
        .zn-chk-input:checked + .zn-chk-viz::after { display: block; }
        .zn-item-text { font-size: 0.95em; color: var(--zn-text); }

    </style>

    <div id="zn-69de1c84e962f-wrap">
        <div class="zn-tabs">
            <span id="tab-focus-zn-69de1c84e962f" class="zn-tab active" onclick="znApp.setMode('zn-69de1c84e962f', 'focus')">FOCUS</span>
            <span id="tab-short-zn-69de1c84e962f" class="zn-tab" onclick="znApp.setMode('zn-69de1c84e962f', 'short')">SHORT</span>
            <span id="tab-long-zn-69de1c84e962f" class="zn-tab" onclick="znApp.setMode('zn-69de1c84e962f', 'long')">LONG</span>
        </div>

        <div class="zn-timer-container">
            <svg class="zn-svg" viewBox="0 0 220 220">
                <circle class="zn-circle-track" cx="110" cy="110" r="100"></circle>
                <circle id="ring-zn-69de1c84e962f" class="zn-circle-bar" cx="110" cy="110" r="100"></circle>
            </svg>
            <div class="zn-time-display">
                <div id="time-zn-69de1c84e962f" class="zn-time">25:00</div>
                <div id="status-zn-69de1c84e962f" class="zn-status">READY</div>
            </div>
        </div>

        <div class="zn-controls">
            <button id="btn-main-zn-69de1c84e962f" class="zn-btn zn-btn-main" onclick="znApp.toggle('zn-69de1c84e962f')">START</button>
            <button class="zn-btn zn-btn-sub" onclick="znApp.reset('zn-69de1c84e962f')">RESET</button>
        </div>

        <div class="zn-todo-wrap">
            <div class="zn-input-group">
                <input type="text" id="inp-zn-69de1c84e962f" class="zn-input" placeholder="タスクを入力..." onkeydown="if(event.key==='Enter') znApp.addTask('zn-69de1c84e962f')">
                <button class="zn-add-btn" onclick="znApp.addTask('zn-69de1c84e962f')">＋</button>
            </div>
            <ul id="list-zn-69de1c84e962f" class="zn-list"></ul>
        </div>
    </div>

    <script>
    // グローバル汚染を防ぐための名前空間
    var znApp = window.znApp || (function() {
        var state = {}; // 状態管理
        
        function init(uid) {
            state[uid] = {
                timeLeft: 1500, // 25分
                duration: 1500,
                timerId: null,
                mode: 'focus'
            };
            loadTasks(uid);
            render(uid);
        }

        // モード切替
        function setMode(uid, mode) {
            var s = state[uid];
            clearInterval(s.timerId);
            s.timerId = null;
            s.mode = mode;

            // タブの見た目
            document.querySelectorAll('#' + uid + '-wrap .zn-tab').forEach(function(el){
                el.classList.remove('active');
            });
            document.getElementById('tab-' + mode + '-' + uid).classList.add('active');

            // 時間設定
            if(mode === 'focus') s.duration = 1500; // 25分
            else if(mode === 'short') s.duration = 300; // 5分
            else s.duration = 900; // 15分

            s.timeLeft = s.duration;
            document.getElementById('btn-main-' + uid).innerText = "START";
            document.getElementById('status-' + uid).innerText = "READY";
            render(uid);
        }

        // スタート/ストップ
        function toggle(uid) {
            var s = state[uid];
            var btn = document.getElementById('btn-main-' + uid);
            var status = document.getElementById('status-' + uid);
            
            // 初回タップ時にオーディオコンテキストを準備（ブラウザ制限対策）
            prepareAudio();

            if(s.timerId) {
                // 停止
                clearInterval(s.timerId);
                s.timerId = null;
                btn.innerText = "RESUME";
                status.innerText = "PAUSED";
            } else {
                // 開始
                btn.innerText = "PAUSE";
                status.innerText = "FOCUSING";
                s.timerId = setInterval(function() {
                    s.timeLeft--;
                    render(uid);
                    if(s.timeLeft <= 0) {
                        clearInterval(s.timerId);
                        s.timerId = null;
                        playBell(); // 終了音
                        status.innerText = "FINISHED";
                        btn.innerText = "START";
                    }
                }, 1000);
            }
        }

        // リセット
        function reset(uid) {
            var s = state[uid];
            clearInterval(s.timerId);
            s.timerId = null;
            s.timeLeft = s.duration;
            document.getElementById('btn-main-' + uid).innerText = "START";
            document.getElementById('status-' + uid).innerText = "READY";
            render(uid);
        }

        // 描画
        function render(uid) {
            var s = state[uid];
            var m = Math.floor(s.timeLeft / 60);
            var sec = s.timeLeft % 60;
            // ゼロ埋め
            var str = (m < 10 ? '0'+m : m) + ':' + (sec < 10 ? '0'+sec : sec);
            document.getElementById('time-' + uid).innerText = str;

            // リング
            var ring = document.getElementById('ring-' + uid);
            var total = 628;
            var offset = total - (s.timeLeft / s.duration) * total;
            ring.style.strokeDashoffset = offset;
        }

        // --- ToDo ---
        function getTasks(uid) {
            return JSON.parse(localStorage.getItem('zn_tasks_' + uid) || '[]');
        }
        function saveTasks(uid, list) {
            localStorage.setItem('zn_tasks_' + uid, JSON.stringify(list));
        }

        function addTask(uid) {
            var inp = document.getElementById('inp-' + uid);
            var val = inp.value.trim();
            if(!val) return;
            
            var list = getTasks(uid);
            list.push({ text: val });
            saveTasks(uid, list);
            inp.value = '';
            renderList(uid);
        }

        function doneTask(uid, idx) {
            var ul = document.getElementById('list-' + uid);
            var li = ul.children[idx];
            li.classList.add('completed');
            
            setTimeout(function() {
                var list = getTasks(uid);
                list.splice(idx, 1);
                saveTasks(uid, list);
                renderList(uid);
            }, 400);
        }

        function renderList(uid) {
            var list = getTasks(uid);
            var ul = document.getElementById('list-' + uid);
            ul.innerHTML = '';
            list.forEach(function(item, idx) {
                var li = document.createElement('li');
                li.className = 'zn-item';
                li.innerHTML = 
                    '<label class="zn-chk-label">' +
                        '<input type="checkbox" class="zn-chk-input" onchange="znApp.doneTask(\'' + uid + '\', ' + idx + ')">' +
                        '<span class="zn-chk-viz"></span>' +
                    '</label>' +
                    '<span class="zn-item-text">' + item.text + '</span>';
                ul.appendChild(li);
            });
        }
        
        function loadTasks(uid) {
            renderList(uid);
        }

        // --- サウンド ---
        var audioCtx = null;
        function prepareAudio() {
            if(!audioCtx && (window.AudioContext || window.webkitAudioContext)) {
                audioCtx = new (window.AudioContext || window.webkitAudioContext)();
            }
            if(audioCtx && audioCtx.state === 'suspended') {
                audioCtx.resume();
            }
        }

        function playBell() {
            if(!audioCtx) prepareAudio();
            if(!audioCtx) return;

            var osc = audioCtx.createOscillator();
            var gain = audioCtx.createGain();
            osc.connect(gain);
            gain.connect(audioCtx.destination);

            osc.type = 'sine';
            osc.frequency.setValueAtTime(440, audioCtx.currentTime);
            osc.frequency.exponentialRampToValueAtTime(420, audioCtx.currentTime + 2);

            gain.gain.setValueAtTime(0.3, audioCtx.currentTime);
            gain.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 3.5);

            osc.start();
            osc.stop(audioCtx.currentTime + 3.5);
        }

        return {
            init: init,
            setMode: setMode,
            toggle: toggle,
            reset: reset,
            addTask: addTask,
            doneTask: doneTask
        };
    })();

    // 読み込み完了後に初期化
    window.addEventListener('load', function() {
        znApp.init('zn-69de1c84e962f');
    });
    </script>

    



<div class="wp-block-group has-border -border02"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p><strong>解決する悩み：</strong> 集中が続かない、ダラダラ勉強してしまう </p>



<p><strong>使う場面：</strong> 毎日の自習時間</p>
</div></div>



<p>「3時間勉強するぞ」と思って机に向かっても、30分で集中力が切れてスマホに手が伸びる——そんな経験がある人にこそ使ってほしいツールです。</p>



<p>ポモドーロ・テクニックとは、<strong><span class="swl-marker mark_yellow">「25分の集中＋5分の休憩」を1セットにして繰り返す</span></strong>学習法です。</p>



<p>脳科学の研究でも、人間の集中力が持続するのは20〜30分程度とされており、この時間単位で区切ることで、長時間でもパフォーマンスを落とさずに勉強できます。</p>



<p>このツールはスタートボタンを押すだけで25分のカウントダウンが始まり、終了時にアラームが鳴るように設計されています。<br>5分の休憩タイマーも自動で続くので、いちいち時計を見る必要がない点がメリットです。</p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> 25分間は「この科目のこの範囲だけやる」と決めてから始めること。やることが曖昧だと、25分の中でも迷いが生じます。<br>「英単語テストを50問解く」「日本史の鎌倉時代をSランクで10問やる」のように、具体的なタスクを設定してからスタートボタンを押すのがポイントです。</p>


		<div class="pochipp-box"
			data-id="4241"
			data-img="l"
			data-lyt-pc="big"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="on"
			data-sale-effect="flash"
			 data-cvkey="443d59b1"		>
							<div class="pochipp-box__image">
					<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Fikurun%2F127815%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" rel="nofollow noopener" target="_blank">
						<img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/ikurun/cabinet/2024/2024_1/127815_1.jpg?_ex=400x400" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Fikurun%2F127815%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" rel="nofollow noopener" target="_blank">
						タイマー 勉強 かわいい 子供 学習 小学生 ビジュアルバータイマー VBT10-W ホワイト 白 キングジム KING JIM ポモドーロタイマー シンプル ナチュラル リビング 目盛り（メール便2点まで）					</a>
				</div>

									<div class="pochipp-box__info">いくるん</div>
				
									<div class="pochipp-box__price">
						¥2,380						<span>（2026/04/10 03:37時点 | 楽天市場調べ）</span>
					</div>
				
									<div class="pochipp-box__review">
						<a href="https://af.moshimo.com/af/c/click?a_id=3112857&amp;p_id=170&amp;pc_id=185&amp;pl_id=4062&amp;url=https%3A%2F%2Fwww.amazon.co.jp%2Fproduct-reviews%2FB0CWR2368W" rel="nofollow noopener" target="_blank">
							<img decoding="async" src="https://lawcityblog.com/wp-content/plugins/pochipp/assets/img/review.svg" alt="" width="16" height="16" />
							<span>口コミを見る</span>
						</a>
					</div>
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a href="https://af.moshimo.com/af/c/click?a_id=3112857&#038;p_id=170&#038;pc_id=185&#038;pl_id=4062&#038;url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0CWR2368W" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Amazonで見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3112857&#038;p_id=170&#038;pc_id=185&#038;pl_id=4062" width="1" height="1" style="border:none;">				</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Fikurun%2F127815%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						楽天市場で見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616" width="1" height="1" style="border:none;">				</a>
			</div>
										<div class="pochipp-box__btnwrap -yahoo -long-text">
								<a href="https://af.moshimo.com/af/c/click?a_id=3079280&#038;p_id=1225&#038;pc_id=1925&#038;pl_id=18502&#038;url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fikurun0810%2F127815.html" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Yahooショッピングで見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3079280&#038;p_id=1225&#038;pc_id=1925&#038;pl_id=18502" width="1" height="1" style="border:none;">				</a>
			</div>
						  <div class="pochipp-box__btnwrap -mercari">
								<a href="https://jp.mercari.com/search?keyword=%E3%83%9D%E3%83%A2%E3%83%89%E3%83%BC%E3%83%AD%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&#038;afid=3074709195&#038;utm_source=pochipp" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						メルカリ					</span>
								</a>
		  </div>
							</div>
								<div class="pochipp-box__logo">
					<img decoding="async" src="https://lawcityblog.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<h2 class="wp-block-heading">② 学習用タイマー</h2>




    <style>
        .st-wrapper {
            border: 2px solid #ccc;
            background-color: #fdfdfd;
            border-radius: 12px;
            padding: 25px;
            text-align: center;
            max-width: 500px;
            margin: 30px auto;
            box-shadow: 0 4px 15px rgba(0,0,0,0.05);
            font-family: "Helvetica Neue", Arial, sans-serif;
            transition: background-color 0.3s, border-color 0.3s;
        }
        /* タイムアップ時のスタイル */
        .st-wrapper.time-up {
            background-color: #ffebee; /* 薄い赤 */
            border-color: #ef5350;     /* 赤 */
        }
        
        .st-display {
            font-size: 4em;
            font-weight: bold;
            font-family: "Roboto Mono", monospace; /* 等幅フォントで見やすく */
            color: #333;
            margin: 10px 0;
            line-height: 1;
        }
        .st-wrapper.time-up .st-display {
            color: #d32f2f;
        }

        /* 入力エリア */
        .st-inputs {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 10px;
            margin-bottom: 20px;
        }
        .st-input {
            width: 70px;
            padding: 8px;
            font-size: 1.2em;
            text-align: center;
            border: 1px solid #ddd;
            border-radius: 6px;
        }
        .st-label {
            font-weight: bold;
            color: #555;
        }

        /* プリセットボタン（よく使う時間） */
        .st-presets {
            margin-bottom: 20px;
            display: flex;
            justify-content: center;
            flex-wrap: wrap;
            gap: 8px;
        }
        .st-preset-btn {
            background: #e3f2fd;
            color: #0277bd;
            border: none;
            padding: 6px 12px;
            border-radius: 20px;
            font-size: 0.9em;
            cursor: pointer;
            transition: background 0.2s;
        }
        .st-preset-btn:hover { background: #b3e5fc; }

        /* コントロールボタン */
        .st-controls {
            display: flex;
            justify-content: center;
            gap: 15px;
        }
        .st-btn {
            padding: 10px 30px;
            font-size: 1.1em;
            border: none;
            border-radius: 6px;
            cursor: pointer;
            font-weight: bold;
            color: #fff;
            transition: opacity 0.2s;
        }
        .st-btn:hover { opacity: 0.9; }
        .btn-start { background-color: #2e7d32; } /* 緑 */
        .btn-stop  { background-color: #f9a825; } /* 黄色 */
        .btn-reset { background-color: #757575; } /* グレー */
        
        /* 進行状況バー */
        .st-progress-bg {
            height: 6px;
            background: #eee;
            border-radius: 3px;
            margin-top: 20px;
            overflow: hidden;
        }
        .st-progress-bar {
            height: 100%;
            background: #2e7d32;
            width: 100%;
            transition: width 1s linear;
        }
    </style>

    <div id="wrapper-st-69de1c84e964e" class="st-wrapper">
        <div class="st-presets">
            <button class="st-preset-btn" onclick="setTimer('st-69de1c84e964e', 3)">3分(復習)</button>
            <button class="st-preset-btn" onclick="setTimer('st-69de1c84e964e', 10)">10分(小テスト)</button>
            <button class="st-preset-btn" onclick="setTimer('st-69de1c84e964e', 60)">60分(共通テスト)</button>
            <button class="st-preset-btn" onclick="setTimer('st-69de1c84e964e', 80)">80分(個別試験)</button>
        </div>

        <div class="st-inputs">
            <input type="number" id="min-st-69de1c84e964e" class="st-input" value="60" min="0">
            <span class="st-label">分</span>
            <input type="number" id="sec-st-69de1c84e964e" class="st-input" value="0" min="0" max="59">
            <span class="st-label">秒</span>
        </div>

        <div id="display-st-69de1c84e964e" class="st-display">60:00</div>

        <div class="st-controls">
            <button id="btn-start-st-69de1c84e964e" class="st-btn btn-start" onclick="startStudyTimer('st-69de1c84e964e')">スタート</button>
            <button id="btn-stop-st-69de1c84e964e" class="st-btn btn-stop" onclick="stopStudyTimer('st-69de1c84e964e')" style="display:none;">一時停止</button>
            <button class="st-btn btn-reset" onclick="resetStudyTimer('st-69de1c84e964e')">リセット</button>
        </div>

        <div class="st-progress-bg">
            <div id="progress-st-69de1c84e964e" class="st-progress-bar"></div>
        </div>
        
        </div>

    <script>
    if (typeof studyTimerData === "undefined") {
        var studyTimerData = {};

        // 時間をセットする（プリセットボタン用）
        function setTimer(uid, min) {
            document.getElementById("min-" + uid).value = min;
            document.getElementById("sec-" + uid).value = 0;
            resetStudyTimer(uid);
        }

        // 表示を更新する
        function updateDisplay(uid) {
            var data = studyTimerData[uid];
            var totalSec = data.timeLeft;
            
            var m = Math.floor(totalSec / 60);
            var s = totalSec % 60;
            var timeStr = (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s;
            
            document.getElementById("display-" + uid).innerText = timeStr;
            
            // プログレスバー更新
            var percentage = 0;
            if (data.initialTime > 0) {
                percentage = (totalSec / data.initialTime) * 100;
            }
            document.getElementById("progress-" + uid).style.width = percentage + "%";
        }

        function startStudyTimer(uid) {
            var minInput = document.getElementById("min-" + uid);
            var secInput = document.getElementById("sec-" + uid);
            var wrapper = document.getElementById("wrapper-" + uid);

            // 初期化（初回またはリセット後）
            if (!studyTimerData[uid] || !studyTimerData[uid].running) {
                // 初回スタート時のみ時間を取得
                if (!studyTimerData[uid] || studyTimerData[uid].timeLeft === undefined) {
                    var m = parseInt(minInput.value) || 0;
                    var s = parseInt(secInput.value) || 0;
                    var total = (m * 60) + s;
                    
                    if (total <= 0) return; // 0秒なら開始しない

                    studyTimerData[uid] = {
                        timeLeft: total,
                        initialTime: total,
                        running: true,
                        interval: null
                    };
                } else {
                    // 一時停止からの再開
                    studyTimerData[uid].running = true;
                }
                
                // UI切り替え
                minInput.disabled = true;
                secInput.disabled = true;
                document.getElementById("btn-start-" + uid).style.display = "none";
                document.getElementById("btn-stop-" + uid).style.display = "inline-block";
                wrapper.classList.remove("time-up");

                // タイマー処理
                studyTimerData[uid].interval = setInterval(function() {
                    studyTimerData[uid].timeLeft--;
                    updateDisplay(uid);

                    // 終了判定
                    if (studyTimerData[uid].timeLeft <= 0) {
                        stopStudyTimer(uid, true); // trueは完了フラグ
                    }
                }, 1000);
            }
        }

        function stopStudyTimer(uid, isFinished = false) {
            if (studyTimerData[uid] && studyTimerData[uid].interval) {
                clearInterval(studyTimerData[uid].interval);
                studyTimerData[uid].running = false;
                
                document.getElementById("btn-start-" + uid).style.display = "inline-block";
                document.getElementById("btn-stop-" + uid).style.display = "none";

                if (isFinished) {
                    // 完了時の処理
                    var wrapper = document.getElementById("wrapper-" + uid);
                    wrapper.classList.add("time-up");
                    document.getElementById("display-" + uid).innerText = "FINISH";
                    studyTimerData[uid].timeLeft = undefined; // 完了したらリセット待ちにする
                    
                    // アラートを出すならここ（自習室用にデフォルトは視覚のみ）
                    // alert("時間です！");
                } else {
                    // 一時停止の場合、ボタンの文字を「再開」にする
                    document.getElementById("btn-start-" + uid).innerText = "再開";
                }
            }
        }

        function resetStudyTimer(uid) {
            // タイマー停止
            if (studyTimerData[uid] && studyTimerData[uid].interval) {
                clearInterval(studyTimerData[uid].interval);
            }
            studyTimerData[uid] = { running: false, timeLeft: undefined };

            // UIを初期状態に戻す
            var wrapper = document.getElementById("wrapper-" + uid);
            wrapper.classList.remove("time-up");
            
            var min = document.getElementById("min-" + uid);
            var sec = document.getElementById("sec-" + uid);
            min.disabled = false;
            sec.disabled = false;

            document.getElementById("btn-start-" + uid).innerText = "スタート";
            document.getElementById("btn-start-" + uid).style.display = "inline-block";
            document.getElementById("btn-stop-" + uid).style.display = "none";
            document.getElementById("progress-" + uid).style.width = "100%";

            // 表示を入力値に戻す
            var m = parseInt(min.value) || 0;
            var s = parseInt(sec.value) || 0;
            document.getElementById("display-" + uid).innerText = (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s;
        }
    }
    </script>
    



<div class="wp-block-group has-border -border02"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p><strong>解決する悩み：</strong> 過去問を解くとき時間感覚がつかめない、試験で時間が足りなくなる </p>



<p><strong>使う場面：</strong> 過去問演習、小テスト、制限時間つきの学習</p>
</div></div>



<p>テスト本番で「時間が足りなかった」ということは誰しもあると思います。</p>



<p>いくら実力があっても、ペース配分ができなければ点数に結びつきません。</p>



<p>このタイマーには、頻出の制限時間がプリセットで用意されています。</p>



<p><strong><span class="swl-marker mark_yellow">3分（復習用）、10分（小テスト用）、60分（共通テスト用）、80分（個別試験用）をワンタッチで設定可能です。</span></strong></p>



<p>もちろん任意の時間も自由に設定できます。</p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> 過去問演習では、必ず本番と同じ制限時間で解きましょう。<br>「時間を計らずにゆっくり解く」練習は理解度の確認にはなるが、本番力は身につきません。最初は時間内に終わらなくても構わないです。繰り返すうちに、自然とペース配分の感覚がつかめるようになります。</p>


		<div class="pochipp-box"
			data-id="4281"
			data-img="l"
			data-lyt-pc="big"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="on"
			data-sale-effect="flash"
			 data-cvkey="25314d1f"		>
							<div class="pochipp-box__image">
					<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Ferikaland%2Ferak5732%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" rel="nofollow noopener" target="_blank">
						<img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/erikaland/cabinet/5732n1.jpg?_ex=400x400" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Ferikaland%2Ferak5732%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" rel="nofollow noopener" target="_blank">
						[100円OFFクーポンあり]ドリテック ラーニングタイマー 学習タイマー 白 ピンク パープル グリーン ブルー ブラック T-587 子ども キッズ 大人 小学生　中学生 高校生 大学生 タイマー 受験 勉強 学習 日付 カウントダウン 消音 アラーム 集中 時計 プレゼント 送料無料					</a>
				</div>

									<div class="pochipp-box__info">エリカランド楽天市場店</div>
				
									<div class="pochipp-box__price">
						¥1,429						<span>（2026/04/10 04:43時点 | 楽天市場調べ）</span>
					</div>
				
									<div class="pochipp-box__review">
						<a href="https://af.moshimo.com/af/c/click?a_id=3112857&amp;p_id=170&amp;pc_id=185&amp;pl_id=4062&amp;url=https%3A%2F%2Fwww.amazon.co.jp%2Fproduct-reviews%2FB07YLQCW27" rel="nofollow noopener" target="_blank">
							<img decoding="async" src="https://lawcityblog.com/wp-content/plugins/pochipp/assets/img/review.svg" alt="" width="16" height="16" />
							<span>口コミを見る</span>
						</a>
					</div>
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a href="https://af.moshimo.com/af/c/click?a_id=3112857&#038;p_id=170&#038;pc_id=185&#038;pl_id=4062&#038;url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB07YLQCW27" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Amazonで見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3112857&#038;p_id=170&#038;pc_id=185&#038;pl_id=4062" width="1" height="1" style="border:none;">				</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Ferikaland%2Ferak5732%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						楽天市場で見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616" width="1" height="1" style="border:none;">				</a>
			</div>
										<div class="pochipp-box__btnwrap -yahoo -long-text">
								<a href="https://af.moshimo.com/af/c/click?a_id=3079280&#038;p_id=1225&#038;pc_id=1925&#038;pl_id=18502&#038;url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Ferikaland-store%2Ferak5732.html" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Yahooショッピングで見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3079280&#038;p_id=1225&#038;pc_id=1925&#038;pl_id=18502" width="1" height="1" style="border:none;">				</a>
			</div>
						  <div class="pochipp-box__btnwrap -mercari">
								<a href="https://jp.mercari.com/search?keyword=%E3%83%89%E3%83%AA%E3%83%86%E3%83%83%E3%82%AF%E3%80%80%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&#038;afid=3074709195&#038;utm_source=pochipp" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						メルカリ					</span>
								</a>
		  </div>
							</div>
								<div class="pochipp-box__logo">
					<img decoding="async" src="https://lawcityblog.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<h2 class="wp-block-heading">③ 集中用BGM</h2>




    <style>
        /* --- デザイン変数 --- */
        #fm-69de1c84e9665-wrap {
            --fm-bg: #ffffff;
            --fm-text: #4a5568;
            --fm-accent: #667eea;
            --fm-border: #e2e8f0;
            --fm-card-bg: #f7fafc;
            --fm-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06);
            
            font-family: "Helvetica Neue", Arial, sans-serif;
            background: var(--fm-bg);
            border-radius: 20px;
            padding: 30px;
            max-width: 500px;
            margin: 40px auto;
            box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
            border: 1px solid var(--fm-border);
            color: var(--fm-text);
        }

        /* ヘッダー */
        .fm-header {
            text-align: center;
            margin-bottom: 30px;
        }
        .fm-title {
            font-size: 1.2em;
            font-weight: bold;
            color: #2d3748;
            letter-spacing: 1px;
            display: flex; align-items: center; justify-content: center; gap: 10px;
        }
        .fm-status {
            font-size: 0.8em;
            color: #a0aec0;
            margin-top: 5px;
            height: 1.2em;
        }

        /* サウンドグリッド */
        .fm-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 15px;
            margin-bottom: 30px;
        }

        /* 個別のサウンドカード */
        .fm-card {
            background: var(--fm-card-bg);
            border: 2px solid transparent;
            border-radius: 12px;
            padding: 15px;
            text-align: center;
            transition: all 0.2s;
            cursor: pointer;
            position: relative;
        }
        .fm-card:hover { transform: translateY(-2px); }
        .fm-card.active {
            border-color: var(--fm-accent);
            background: #ebf4ff;
            box-shadow: var(--fm-shadow);
        }

        .fm-icon { font-size: 2em; margin-bottom: 5px; display: block; }
        .fm-name { font-size: 0.9em; font-weight: bold; display: block; margin-bottom: 10px; }

        /* ボリュームスライダー */
        .fm-slider-wrap {
            display: flex;
            align-items: center;
            gap: 5px;
            opacity: 0.5;
            transition: opacity 0.2s;
        }
        .fm-card.active .fm-slider-wrap { opacity: 1; }

        .fm-slider {
            -webkit-appearance: none;
            width: 100%; height: 4px;
            background: #cbd5e0;
            border-radius: 2px;
            outline: none;
        }
        .fm-slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            width: 14px; height: 14px;
            background: var(--fm-accent);
            border-radius: 50%;
            cursor: pointer;
        }

        /* マスターコントロール */
        .fm-controls { text-align: center; border-top: 1px solid var(--fm-border); padding-top: 20px; }
        .fm-main-btn {
            background: var(--fm-accent);
            color: white;
            border: none;
            padding: 12px 40px;
            border-radius: 50px;
            font-size: 1em;
            font-weight: bold;
            cursor: pointer;
            box-shadow: 0 4px 14px 0 rgba(102, 126, 234, 0.39);
            transition: all 0.2s;
        }
        .fm-main-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.23); }
        .fm-main-btn.playing { background: #fc8181; box-shadow: 0 4px 14px 0 rgba(252, 129, 129, 0.39); }

        /* スマホ対応 */
        @media(max-width: 480px){
            .fm-grid { grid-template-columns: 1fr; }
            .fm-card { display: flex; align-items: center; justify-content: space-between; padding: 10px 20px; }
            .fm-icon { font-size: 1.5em; margin: 0; margin-right: 15px; }
            .fm-name { margin: 0; margin-right: auto; }
            .fm-slider-wrap { width: 100px; }
        }
    </style>

    <div id="fm-69de1c84e9665-wrap">
        <div class="fm-header">
            <div class="fm-title"><span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f39b.png" alt="🎛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> FOCUS MIXER</div>
            <div id="status-fm-69de1c84e9665" class="fm-status">Ready to focus</div>
        </div>

        <div class="fm-grid">
            <div id="card-rain-fm-69de1c84e9665" class="fm-card" onclick="fmApp.toggleChannel('fm-69de1c84e9665', 'rain')">
                <span class="fm-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f327.png" alt="🌧" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                <span class="fm-name">Rain</span>
                <div class="fm-slider-wrap" onclick="event.stopPropagation()">
                    <input type="range" class="fm-slider" min="0" max="1" step="0.01" value="0.5" 
                           oninput="fmApp.setVolume('fm-69de1c84e9665', 'rain', this.value)">
                </div>
            </div>

            <div id="card-brown-fm-69de1c84e9665" class="fm-card" onclick="fmApp.toggleChannel('fm-69de1c84e9665', 'brown')">
                <span class="fm-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2708.png" alt="✈" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                <span class="fm-name">Deep</span>
                <div class="fm-slider-wrap" onclick="event.stopPropagation()">
                    <input type="range" class="fm-slider" min="0" max="1" step="0.01" value="0.5" 
                           oninput="fmApp.setVolume('fm-69de1c84e9665', 'brown', this.value)">
                </div>
            </div>

            <div id="card-white-fm-69de1c84e9665" class="fm-card" onclick="fmApp.toggleChannel('fm-69de1c84e9665', 'white')">
                <span class="fm-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f343.png" alt="🍃" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                <span class="fm-name">Wind</span>
                <div class="fm-slider-wrap" onclick="event.stopPropagation()">
                    <input type="range" class="fm-slider" min="0" max="1" step="0.01" value="0.3" 
                           oninput="fmApp.setVolume('fm-69de1c84e9665', 'white', this.value)">
                </div>
            </div>

            <div id="card-binaural-fm-69de1c84e9665" class="fm-card" onclick="fmApp.toggleChannel('fm-69de1c84e9665', 'binaural')">
                <span class="fm-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                <span class="fm-name">Neural</span>
                <div class="fm-slider-wrap" onclick="event.stopPropagation()">
                    <input type="range" class="fm-slider" min="0" max="1" step="0.01" value="0.2" 
                           oninput="fmApp.setVolume('fm-69de1c84e9665', 'binaural', this.value)">
                </div>
            </div>
        </div>

        <div class="fm-controls">
            <button id="btn-master-fm-69de1c84e9665" class="fm-main-btn" onclick="fmApp.toggleMaster('fm-69de1c84e9665')">
                PLAY ALL
            </button>
        </div>
    </div>

    <script>
    var fmApp = window.fmApp || (function() {
        var ctx = null; // AudioContext
        var state = {}; // インスタンスごとの状態

        function init(uid) {
            state[uid] = {
                isPlaying: false,
                channels: {
                    rain: { active: false, vol: 0.5, node: null, gain: null },
                    brown: { active: false, vol: 0.5, node: null, gain: null },
                    white: { active: false, vol: 0.3, node: null, gain: null },
                    binaural: { active: false, vol: 0.2, nodes: [], gain: null }
                }
            };
        }

        function getCtx() {
            if(!ctx) {
                var AudioContext = window.AudioContext || window.webkitAudioContext;
                ctx = new AudioContext();
            }
            if(ctx.state === 'suspended') ctx.resume();
            return ctx;
        }

        // --- 音源生成ロジック ---
        function createNoise(type) {
            var context = getCtx();
            var bufferSize = 2 * context.sampleRate; // 2秒分のバッファ
            var buffer = context.createBuffer(1, bufferSize, context.sampleRate);
            var output = buffer.getChannelData(0);
            
            var lastOut = 0;
            for (var i = 0; i < bufferSize; i++) {
                var white = Math.random() * 2 - 1;
                if(type === 'white') {
                    output[i] = white;
                } else if (type === 'pink') { // Rain
                    var b0, b1, b2, b3, b4, b5, b6;
                    b0 = b1 = b2 = b3 = b4 = b5 = b6 = 0.0;
                    b0 = 0.99886 * b0 + white * 0.0555179;
                    b1 = 0.99332 * b1 + white * 0.0750759;
                    b2 = 0.96900 * b2 + white * 0.1538520;
                    b3 = 0.86650 * b3 + white * 0.3104856;
                    b4 = 0.55000 * b4 + white * 0.5329522;
                    b5 = -0.7616 * b5 - white * 0.0168980;
                    output[i] = b0 + b1 + b2 + b3 + b4 + b5 + b6 + white * 0.5362;
                    output[i] *= 0.11; 
                    b6 = white * 0.115926;
                } else if (type === 'brown') { // Deep
                    output[i] = (lastOut + (0.02 * white)) / 1.02;
                    lastOut = output[i];
                    output[i] *= 3.5; 
                }
            }
            var noise = context.createBufferSource();
            noise.buffer = buffer;
            noise.loop = true;
            return noise;
        }

        function createBinaural() {
            var context = getCtx();
            var osc1 = context.createOscillator();
            var osc2 = context.createOscillator();
            // 40Hz差 (Gamma波)
            osc1.frequency.value = 400; 
            osc2.frequency.value = 440;
            
            // ステレオ分離
            var merger = context.createChannelMerger(2);
            osc1.connect(merger, 0, 0);
            osc2.connect(merger, 0, 1);
            
            osc1.start(); osc2.start();
            return { nodes: [osc1, osc2], output: merger };
        }

        // --- チャンネル制御 ---
        function toggleChannel(uid, type) {
            var s = state[uid];
            var ch = s.channels[type];
            var card = document.getElementById('card-' + type + '-' + uid);

            ch.active = !ch.active;

            if(ch.active) {
                card.classList.add('active');
                if(s.isPlaying) startSound(uid, type); // 再生中なら音も出す
            } else {
                card.classList.remove('active');
                stopSound(uid, type);
            }
            updateStatus(uid);
        }

        function setVolume(uid, type, val) {
            var s = state[uid];
            s.channels[type].vol = val;
            if(s.channels[type].gain) {
                s.channels[type].gain.gain.value = val;
            }
        }

        function startSound(uid, type) {
            var context = getCtx();
            var ch = state[uid].channels[type];

            if(ch.gain) return; // 既に再生中

            var gain = context.createGain();
            gain.gain.value = ch.vol;
            gain.connect(context.destination);
            ch.gain = gain;

            if(type === 'binaural') {
                var bin = createBinaural();
                bin.output.connect(gain);
                ch.nodes = bin.nodes;
            } else {
                var noiseType = type === 'rain' ? 'pink' : (type === 'brown' ? 'brown' : 'white');
                var source = createNoise(noiseType);
                source.connect(gain);
                source.start(0);
                ch.node = source;
            }
        }

        function stopSound(uid, type) {
            var ch = state[uid].channels[type];
            if(!ch.gain) return;

            // フェードアウト
            ch.gain.gain.exponentialRampToValueAtTime(0.001, getCtx().currentTime + 0.5);
            
            setTimeout(function(){
                if(type === 'binaural') {
                    ch.nodes.forEach(function(n){ n.stop(); });
                    ch.nodes = [];
                } else {
                    if(ch.node) ch.node.stop();
                    ch.node = null;
                }
                if(ch.gain) ch.gain.disconnect();
                ch.gain = null;
            }, 500);
        }

        // --- マスター制御 ---
        function toggleMaster(uid) {
            var s = state[uid];
            var btn = document.getElementById('btn-master-' + uid);
            getCtx(); // コンテキスト起動

            if(s.isPlaying) {
                // 全停止
                Object.keys(s.channels).forEach(function(key) {
                    stopSound(uid, key);
                });
                s.isPlaying = false;
                btn.innerText = "PLAY ALL";
                btn.classList.remove('playing');
                updateStatus(uid);
            } else {
                // アクティブなものだけ再生
                var hasActive = false;
                Object.keys(s.channels).forEach(function(key) {
                    if(s.channels[key].active) {
                        startSound(uid, key);
                        hasActive = true;
                    }
                });
                
                if(!hasActive) {
                    // 何も選ばれてなければRainをデフォルトで再生
                    toggleChannel(uid, 'rain');
                    startSound(uid, 'rain');
                }

                s.isPlaying = true;
                btn.innerText = "STOP ALL";
                btn.classList.add('playing');
                updateStatus(uid);
            }
        }

        function updateStatus(uid) {
            var s = state[uid];
            var el = document.getElementById('status-' + uid);
            if(s.isPlaying) {
                el.innerText = "Generating soundscape...";
                el.style.color = "#667eea";
            } else {
                el.innerText = "Select sounds to mix";
                el.style.color = "#a0aec0";
            }
        }

        return {
            init: init,
            toggleChannel: toggleChannel,
            setVolume: setVolume,
            toggleMaster: toggleMaster
        };
    })();

    window.addEventListener('load', function() {
        fmApp.init('fm-69de1c84e9665');
    });
    </script>
    



<p class="has-border -border02"><strong>解決する悩み：</strong> 周囲の雑音が気になる、無音だと逆に集中できない、やる気のスイッチが入らない <br><strong>使う場面：</strong> 自宅学習、カフェでの勉強、図書館で周囲の音が気になるとき</p>



<p>勉強中の「音環境」は、集中力に大きく影響します。</p>



<p>完全な無音だとかえって些細な物音が気になり、かといって音楽をかけると歌詞に意識を持っていかれ集中力が続きません。</p>



<p>このツールは、集中状態に入りやすいとされる<strong>環境音4種類</strong>を搭載しています。</p>



<p><strong><span class="swl-marker mark_yellow">雨音、ディープサウンド、風の音、ニューラルサウンドを用意しており、それぞれの音量を個別に調整できます。</span></strong></p>



<p>複数の音を組み合わせて、自分好みの「集中BGM」をカスタマイズすることが可能です。</p>



<p>歌詞のある音楽と違い、環境音は言語処理を妨げないため、英語の長文読解や国語の読解問題に取り組んでいるときでも集中力を維持しやすいです。</p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> 「勉強するときはこのBGMを流す」というルーティンを作ると、BGMを流した瞬間に脳が「集中モード」に切り替わるようになります。これはパブロフの犬と同じ原理で、「条件づけ」と呼ばれる心理学的なテクニックです。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://lawcityblog.com/wp-content/uploads/2023/03/1-14-500x281.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://lawcityblog.com/study-space/">【無料付・ランキング】中学・高校生におすすめの勉強場所を徹底解説！</a>
						<span class="p-blogCard__excerpt">この記事からわかること 集中できる勉強場所の特徴・選び方 最適な勉強場所がランキング付きで紹介 その勉強場所はどんな人にとって最適なのか一つずつ解説 中学・高校&#8230;</span>					</div>
				</div>
			</div>
		</div>

		<div class="pochipp-box"
			data-id="4282"
			data-img="l"
			data-lyt-pc="big"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="on"
			data-sale-effect="flash"
			 data-cvkey="9c270dc6"		>
							<div class="pochipp-box__image">
					<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenmobile-store%2Fapple-rm2509012%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" rel="nofollow noopener" target="_blank">
						<img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/rakutenmobile-store/cabinet/item/apple-rm2509012/main.jpg?_ex=400x400" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenmobile-store%2Fapple-rm2509012%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" rel="nofollow noopener" target="_blank">
						AirPods Pro 3 Apple認定店 新品 国内正規品 アクセサリー MagSafe対応 ワイヤレスイヤホン アクティブノイズキャンセリング 楽天モバイル公式 エアポッズ 2025年販売 ヒアリング補助機能 USB-C					</a>
				</div>

									<div class="pochipp-box__info">楽天モバイル公式 楽天市場店</div>
				
									<div class="pochipp-box__price">
						¥39,800						<span>（2026/04/10 04:43時点 | 楽天市場調べ）</span>
					</div>
				
									<div class="pochipp-box__review">
						<a href="https://af.moshimo.com/af/c/click?a_id=3112857&amp;p_id=170&amp;pc_id=185&amp;pl_id=4062&amp;url=https%3A%2F%2Fwww.amazon.co.jp%2Fproduct-reviews%2FB0FQFQDN6K" rel="nofollow noopener" target="_blank">
							<img decoding="async" src="https://lawcityblog.com/wp-content/plugins/pochipp/assets/img/review.svg" alt="" width="16" height="16" />
							<span>口コミを見る</span>
						</a>
					</div>
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a href="https://af.moshimo.com/af/c/click?a_id=3112857&#038;p_id=170&#038;pc_id=185&#038;pl_id=4062&#038;url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0FQFQDN6K" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Amazonで見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3112857&#038;p_id=170&#038;pc_id=185&#038;pl_id=4062" width="1" height="1" style="border:none;">				</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a href="https://af.moshimo.com/af/c/click?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenmobile-store%2Fapple-rm2509012%2F%3Frafcid%3Dwsc_i_is_e7ab3fe1-d7f3-4130-bdaa-7b8912e2c481" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						楽天市場で見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3076199&#038;p_id=54&#038;pc_id=54&#038;pl_id=616" width="1" height="1" style="border:none;">				</a>
			</div>
										<div class="pochipp-box__btnwrap -yahoo -long-text">
								<a href="https://af.moshimo.com/af/c/click?a_id=3079280&#038;p_id=1225&#038;pc_id=1925&#038;pl_id=18502&#038;url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fthrift-webshop%2Fu-093-u30177-16.html" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						Yahooショッピングで見る					</span>
					<img decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3079280&#038;p_id=1225&#038;pc_id=1925&#038;pl_id=18502" width="1" height="1" style="border:none;">				</a>
			</div>
						  <div class="pochipp-box__btnwrap -mercari">
								<a href="https://jp.mercari.com/search?keyword=air%20pods%20pro&#038;afid=3074709195&#038;utm_source=pochipp" class="pochipp-box__btn" rel="nofollow noopener" target="_blank">
					<span>
						メルカリ					</span>
								</a>
		  </div>
							</div>
								<div class="pochipp-box__logo">
					<img decoding="async" src="https://lawcityblog.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<h2 class="wp-block-heading">④ 1日の勉強記録</h2>




    <style>
        /* --- デザイン変数：Classic & Intelligence --- */
        #stv-69de1c84e9678-wrap {
            --sv-bg: #f9f9f7;       /* 羊皮紙のようなオフホワイト */
            --sv-panel: #ffffff;
            --sv-text: #2c3e50;     /* インクブルー */
            --sv-sub: #95a5a6;
            --sv-gold: #c5a059;     /* アンティークゴールド */
            --sv-accent: #34495e;
            --sv-line: #e6e6e6;
            --sv-shadow: 0 10px 40px rgba(44, 62, 80, 0.08);
            
            /* グラフ用カラーパレット（落ち着いたトーン） */
            --c-1: #5d6d7e; --c-2: #85929e; --c-3: #aeb6bf;
            --c-4: #c5a059; --c-5: #d6b883; --c-6: #eaddcf;

            font-family: "Yu Mincho", "YuMincho", "Hiragino Mincho ProN", serif;
            margin: 40px auto;
            max-width: 500px;
            background: var(--sv-bg);
            border-radius: 12px;
            box-shadow: var(--sv-shadow);
            color: var(--sv-text);
            overflow: hidden;
            border: 1px solid rgba(0,0,0,0.05);
            position: relative;
        }

        /* 上部の装飾ライン */
        #stv-69de1c84e9678-wrap::before {
            content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 5px;
            background: linear-gradient(to right, var(--sv-text), var(--sv-gold));
            z-index: 2;
        }

        /* タブ切り替えエリア */
        .sv-tabs {
            display: flex; background: var(--sv-panel);
            border-bottom: 1px solid var(--sv-line);
        }
        .sv-tab {
            flex: 1; padding: 20px 0; text-align: center; cursor: pointer;
            font-family: "Helvetica Neue", sans-serif; font-size: 0.8em; letter-spacing: 2px;
            font-weight: bold; color: var(--sv-sub); transition: all 0.3s;
            border-bottom: 3px solid transparent;
        }
        .sv-tab:hover { color: var(--sv-text); }
        .sv-tab.active { color: var(--sv-text); border-bottom-color: var(--sv-gold); }

        /* コンテンツエリア切り替え */
        .sv-content { display: none; animation: fadeIn 0.4s ease; }
        .sv-content.active { display: block; }
        @keyframes fadeIn { from{opacity:0;} to{opacity:1;} }

        /* ========================
           RECORD (入力) 画面
           ======================== */
        .sv-record-header {
            text-align: center; padding: 30px 20px 10px;
        }
        .sv-label {
            font-family: "Helvetica Neue", sans-serif; font-size: 0.7em; letter-spacing: 2px;
            color: var(--sv-gold); text-transform: uppercase; font-weight: bold;
        }
        .sv-total-display {
            font-family: "Helvetica Neue", sans-serif; font-size: 3.5em; font-weight: 200;
            line-height: 1; color: var(--sv-text); margin-top: 5px;
        }

        .sv-input-box { padding: 30px; }
        .sv-input-row { display: flex; gap: 15px; margin-bottom: 20px; }
        
        .sv-input {
            border: none; border-bottom: 1px solid #ccc; background: transparent;
            padding: 10px 0; font-family: inherit; font-size: 1em; color: var(--sv-text);
            outline: none; transition: border-color 0.3s; border-radius: 0;
        }
        .sv-input:focus { border-bottom-color: var(--sv-gold); }
        .sv-subj-input { flex: 2; }
        .sv-time-input { flex: 1; text-align: center; font-family: "Helvetica Neue", sans-serif; }

        .sv-btn {
            width: 100%; padding: 12px; background: var(--sv-text); color: #fff;
            border: none; border-radius: 4px; cursor: pointer;
            font-family: "Helvetica Neue", sans-serif; font-size: 0.85em; letter-spacing: 1px;
            transition: all 0.3s; box-shadow: 0 4px 10px rgba(44, 62, 80, 0.2);
        }
        .sv-btn:hover { background: var(--sv-gold); transform: translateY(-2px); }

        .sv-list-wrap {
            border-top: 1px solid var(--sv-line); background: #fff; padding: 0 25px 30px;
        }
        .sv-list-title {
            text-align: center; font-size: 0.8em; color: var(--sv-sub); margin: 25px 0 15px; letter-spacing: 1px;
        }
        .sv-list { list-style: none; padding: 0; margin: 0; }
        .sv-item {
            display: flex; justify-content: space-between; align-items: center;
            padding: 12px 0; border-bottom: 1px solid #f9f9f9;
        }
        .sv-item-name { font-weight: bold; font-size: 0.95em; }
        .sv-item-time { font-family: "Helvetica Neue", sans-serif; font-weight: bold; color: var(--sv-gold); }
        .sv-del-btn {
            border: none; background: transparent; color: #e74c3c; font-size: 1.2em;
            cursor: pointer; opacity: 0.3; margin-left: 10px;
        }
        .sv-del-btn:hover { opacity: 1; }

        /* ========================
           REPORT (グラフ) 画面
           ======================== */
        .sv-report-area { padding: 30px 25px; background: #fff; min-height: 400px; }
        
        .sv-chart-section { margin-bottom: 40px; }
        .sv-chart-title {
            font-size: 0.9em; font-weight: bold; color: var(--sv-text); 
            border-left: 3px solid var(--sv-gold); padding-left: 10px; margin-bottom: 20px;
        }

        /* 棒グラフ (CSS Flex) */
        .sv-bar-chart {
            display: flex; justify-content: space-between; align-items: flex-end;
            height: 150px; border-bottom: 1px solid var(--sv-line); padding-bottom: 5px;
            gap: 5px;
        }
        .sv-bar-col {
            flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
            height: 100%; position: relative;
        }
        .sv-bar-val {
            font-family: "Helvetica Neue", sans-serif; font-size: 0.7em; color: var(--sv-gold);
            margin-bottom: 5px; opacity: 0; transition: opacity 0.2s; position: absolute; top: -20px;
        }
        .sv-bar-col:hover .sv-bar-val { opacity: 1; }
        
        .sv-bar {
            width: 70%; background: var(--sv-text); border-radius: 3px 3px 0 0;
            transition: height 0.5s ease; min-height: 2px; opacity: 0.8;
        }
        .sv-bar:hover { opacity: 1; background: var(--sv-gold); }
        
        .sv-bar-label {
            font-family: "Helvetica Neue", sans-serif; font-size: 0.7em; color: var(--sv-sub);
            margin-top: 8px; text-transform: uppercase;
        }

        /* 円グラフ (CSS Conic Gradient) */
        .sv-pie-wrap {
            display: flex; align-items: center; justify-content: center; gap: 30px;
        }
        .sv-pie {
            width: 140px; height: 140px; border-radius: 50%;
            background: #eee; position: relative;
            box-shadow: 0 5px 15px rgba(0,0,0,0.05);
        }
        .sv-pie::after {
            content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
            width: 90px; height: 90px; background: #fff; border-radius: 50%;
        }
        .sv-pie-center {
            position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
            z-index: 2; font-family: "Helvetica Neue", sans-serif; font-size: 0.8em; color: var(--sv-sub);
            text-align: center;
        }

        .sv-legend {
            font-size: 0.8em; color: var(--sv-text); display: flex; flex-direction: column; gap: 8px;
        }
        .sv-legend-item { display: flex; align-items: center; gap: 8px; }
        .sv-legend-color { width: 10px; height: 10px; border-radius: 2px; }

        /* スマホ対応 */
        @media (max-width: 480px) {
            .sv-input-row { flex-direction: column; gap: 15px; }
            .sv-pie-wrap { flex-direction: column; }
        }
    </style>

    <div id="stv-69de1c84e9678-wrap">
        <div class="sv-tabs">
            <div id="tab-rec-stv-69de1c84e9678" class="sv-tab active" onclick="svApp.switchTab('stv-69de1c84e9678', 'rec')">RECORD</div>
            <div id="tab-rep-stv-69de1c84e9678" class="sv-tab" onclick="svApp.switchTab('stv-69de1c84e9678', 'rep')">REPORT</div>
        </div>

        <div id="content-rec-stv-69de1c84e9678" class="sv-content active">
            <div class="sv-record-header">
                <div class="sv-label">Total Time Today</div>
                <div id="total-stv-69de1c84e9678" class="sv-total-display">00:00</div>
            </div>

            <div class="sv-input-box">
                <div class="sv-input-row">
                    <input type="text" id="subj-stv-69de1c84e9678" class="sv-input sv-subj-input" placeholder="科目 (例: 数学)" list="subjs-stv-69de1c84e9678">
                    <datalist id="subjs-stv-69de1c84e9678">
                        <option value="英語"><option value="数学"><option value="国語"><option value="理科"><option value="社会">
                    </datalist>
                    <input type="number" id="time-stv-69de1c84e9678" class="sv-input sv-time-input" placeholder="分" min="1">
                </div>
                <button class="sv-btn" onclick="svApp.add('stv-69de1c84e9678')">記録を保存</button>
            </div>

            <div class="sv-list-wrap">
                <div class="sv-list-title">TODAY'S LOG</div>
                <ul id="list-stv-69de1c84e9678" class="sv-list"></ul>
            </div>
        </div>

        <div id="content-rep-stv-69de1c84e9678" class="sv-content">
            <div class="sv-report-area">
                
                <div class="sv-chart-section">
                    <div class="sv-chart-title">Weekly Flow (過去7日間)</div>
                    <div id="bar-chart-stv-69de1c84e9678" class="sv-bar-chart">
                        </div>
                </div>

                <div class="sv-chart-section">
                    <div class="sv-chart-title">Subject Ratio (全期間)</div>
                    <div class="sv-pie-wrap">
                        <div id="pie-chart-stv-69de1c84e9678" class="sv-pie">
                            <div class="sv-pie-center">Total<br>Ratio</div>
                        </div>
                        <div id="pie-legend-stv-69de1c84e9678" class="sv-legend">
                            </div>
                    </div>
                </div>

            </div>
        </div>
    </div>

    <script>
    var svApp = window.svApp || (function() {
        
        // 色パレット
        var colors = ["#5d6d7e", "#85929e", "#aeb6bf", "#c5a059", "#d6b883", "#eaddcf"];

        // 日付ヘルパー
        function getTodayStr() {
            var d = new Date();
            return d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate();
        }
        function getPastDateStr(daysAgo) {
            var d = new Date();
            d.setDate(d.getDate() - daysAgo);
            return d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate();
        }
        function getDayLabel(dateStr) {
            var d = new Date(dateStr);
            var days = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
            return days[d.getDay()];
        }

        // 初期化
        function init(uid) {
            renderRecord(uid);
        }

        // データ操作
        function getData(uid) {
            return JSON.parse(localStorage.getItem('stv_data_' + uid) || '[]');
        }
        function saveData(uid, data) {
            localStorage.setItem('stv_data_' + uid, JSON.stringify(data));
        }

        // タブ切り替え
        function switchTab(uid, tabName) {
            // タブの見た目
            document.getElementById('tab-rec-' + uid).classList.remove('active');
            document.getElementById('tab-rep-' + uid).classList.remove('active');
            document.getElementById('tab-' + tabName + '-' + uid).classList.add('active');

            // コンテンツ表示
            document.getElementById('content-rec-' + uid).classList.remove('active');
            document.getElementById('content-rep-' + uid).classList.remove('active');
            document.getElementById('content-' + tabName + '-' + uid).classList.add('active');

            if (tabName === 'rep') {
                renderReport(uid);
            }
        }

        // 記録追加
        function add(uid) {
            var sVal = document.getElementById('subj-' + uid).value.trim();
            var tVal = parseInt(document.getElementById('time-' + uid).value);
            if(!sVal || !tVal || tVal <= 0) return;

            var data = getData(uid);
            data.unshift({
                id: Date.now(),
                date: getTodayStr(),
                subject: sVal,
                minutes: tVal
            });
            saveData(uid, data);

            // クリア
            document.getElementById('subj-' + uid).value = "";
            document.getElementById('time-' + uid).value = "";
            renderRecord(uid);
        }

        function remove(uid, id) {
            if(!confirm("削除しますか？")) return;
            var data = getData(uid);
            var newData = data.filter(function(d){ return d.id !== id; });
            saveData(uid, newData);
            renderRecord(uid);
        }

        // 記録画面描画
        function renderRecord(uid) {
            var data = getData(uid);
            var today = getTodayStr();
            var todayData = data.filter(function(d){ return d.date === today; });

            // 合計
            var totalMin = todayData.reduce(function(sum, d){ return sum + d.minutes; }, 0);
            var h = Math.floor(totalMin / 60);
            var m = totalMin % 60;
            document.getElementById('total-' + uid).innerText = (h<10?'0'+h:h) + ':' + (m<10?'0'+m:m);

            // リスト
            var ul = document.getElementById('list-' + uid);
            ul.innerHTML = "";
            todayData.forEach(function(d){
                var li = document.createElement('li');
                li.className = 'sv-item';
                li.innerHTML = `
                    <span class="sv-item-name">${d.subject}</span>
                    <div style="display:flex;align-items:center;">
                        <span class="sv-item-time">${d.minutes} min</span>
                        <button class="sv-del-btn" onclick="svApp.remove('${uid}', ${d.id})">×</button>
                    </div>
                `;
                ul.appendChild(li);
            });
        }

        // レポート画面描画
        function renderReport(uid) {
            var data = getData(uid);

            /* --- 1. 棒グラフ (週間) --- */
            var barContainer = document.getElementById('bar-chart-' + uid);
            barContainer.innerHTML = "";
            
            // 過去7日分のデータを集計
            var weekData = [];
            var maxVal = 0;
            for(var i=6; i>=0; i--) {
                var dStr = getPastDateStr(i);
                var dayTotal = data.filter(function(d){ return d.date === dStr; })
                                   .reduce(function(sum, d){ return sum + d.minutes; }, 0);
                if(dayTotal > maxVal) maxVal = dayTotal;
                weekData.push({ date: dStr, val: dayTotal, label: getDayLabel(dStr) });
            }

            // 描画
            weekData.forEach(function(item){
                var heightPercent = maxVal === 0 ? 0 : (item.val / maxVal) * 100;
                // 見栄えのため最低高さを確保
                var hStyle = Math.max(heightPercent, 1) + "%"; 
                
                var col = document.createElement('div');
                col.className = 'sv-bar-col';
                col.innerHTML = `
                    <div class="sv-bar-val" style="bottom:${hStyle}">${item.val}</div>
                    <div class="sv-bar" style="height:${hStyle}"></div>
                    <div class="sv-bar-label">${item.label}</div>
                `;
                barContainer.appendChild(col);
            });

            /* --- 2. 円グラフ (科目比率) --- */
            // 科目集計
            var subjStats = {};
            var totalAll = 0;
            data.forEach(function(d){
                if(!subjStats[d.subject]) subjStats[d.subject] = 0;
                subjStats[d.subject] += d.minutes;
                totalAll += d.minutes;
            });

            // 配列に変換してソート
            var subjArr = Object.keys(subjStats).map(function(k){
                return { name: k, val: subjStats[k] };
            }).sort(function(a,b){ return b.val - a.val; }); // 多い順

            // 上位5つ + その他にまとめる
            if(subjArr.length > 5) {
                var othersVal = 0;
                for(var i=5; i<subjArr.length; i++) othersVal += subjArr[i].val;
                subjArr = subjArr.slice(0, 5);
                subjArr.push({ name: 'Others', val: othersVal });
            }

            // グラデーション生成
            var gradStr = "";
            var startDeg = 0;
            var legendHtml = "";

            subjArr.forEach(function(item, idx){
                var deg = (item.val / totalAll) * 360;
                var endDeg = startDeg + deg;
                var color = colors[idx % colors.length];

                gradStr += `${color} ${startDeg}deg ${endDeg}deg, `;
                startDeg = endDeg;

                // 凡例
                var percent = Math.round((item.val / totalAll) * 100);
                legendHtml += `
                    <div class="sv-legend-item">
                        <div class="sv-legend-color" style="background:${color}"></div>
                        <div>${item.name} (${percent}%)</div>
                    </div>
                `;
            });

            // 最後のカンマ削除
            gradStr = gradStr.slice(0, -2);
            if(!gradStr) gradStr = "#eee 0deg 360deg"; // データなしの場合

            document.getElementById('pie-chart-' + uid).style.background = `conic-gradient(${gradStr})`;
            document.getElementById('pie-legend-' + uid).innerHTML = legendHtml;
        }

        return { init: init, switchTab: switchTab, add: add, remove: remove };
    })();

    window.addEventListener('load', function() {
        svApp.init('stv-69de1c84e9678');
    });
    </script>

    



<p class="has-border -border02"><strong>解決する悩み：</strong> 勉強した実感がない、自分が頑張れているのか不安、モチベーションが続かない <br><strong>使う場面：</strong> 毎日の勉強終了後の振り返り</p>



<p>受験勉強を続けていると、ふとした瞬間に「本当にこれで大丈夫なのか」と不安になることがあります。</p>



<p>特に試験直前期は、この不安が一気に押し寄せてきます。</p>



<p>そんなとき、最も効果的な精神安定剤は<strong><span class="swl-marker mark_yellow">「自分がどれだけやったかの記録」</span></strong>です。</p>



<p>このツールでは、勉強した科目と時間を記録し、日別・週別のグラフとして可視化できます。</p>



<p>1日の合計学習時間はもちろん、科目ごとの比率も表示されるため、「英語に時間をかけすぎていて社会が手薄」といったバランスの偏りにも気づけます。</p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> 記録は「勉強を終えた直後」につけましょう。翌日にまとめてつけようとすると、正確な時間がわからなくなります。<br>また、記録が溜まってきたら週に1回「今週は合計何時間やったか」を振り返る時間を設けると、勉強のペースを客観的に把握できます。</p>



<h2 class="wp-block-heading">⑤ 緊張をほぐす呼吸法ガイド</h2>



    <style>
        /* --- 変数定義 --- */
        :root {
            --bg-v2-bg: linear-gradient(135deg, #0f2027 0%, #203a43 50%, #2c5364 100%); /* 深海グラデ */
            --bg-v2-accent: #4facfe; /* 明るい水色 */
            --bg-v2-text: #ffffff;
        }

        /* --- 開始ボタン --- */
        .breath-v2-start-btn {
            background: linear-gradient(to right, #4facfe 0%, #00f2fe 100%);
            color: #fff;
            border: none;
            padding: 12px 30px;
            border-radius: 50px;
            font-size: 1em;
            font-weight: bold;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            gap: 10px;
            box-shadow: 0 4px 15px rgba(79, 172, 254, 0.4);
            transition: all 0.3s ease;
            letter-spacing: 1px;
        }
        .breath-v2-start-btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(79, 172, 254, 0.6);
        }
        .breath-v2-icon { font-size: 1.4em; }

        /* --- モーダル全体 --- */
        .breath-v2-modal {
            display: none; /* 初期は非表示 */
            position: fixed;
            top: 0; left: 0; width: 100%; height: 100%;
            background: var(--bg-v2-bg);
            z-index: 9999;
            justify-content: center;
            align-items: center;
            flex-direction: column;
            opacity: 0;
            transition: opacity 0.5s ease;
        }
        .breath-v2-modal.active {
            display: flex;
            opacity: 1;
        }

        /* --- 呼吸ビジュアル（円のアニメーション部分） --- */
        .breath-v2-visual {
            position: relative;
            width: 300px;
            height: 300px;
            display: flex;
            justify-content: center;
            align-items: center;
            margin-bottom: 40px;
        }
        
        /* 中心円と波紋の共通スタイル */
        .breath-v2-circle {
            position: absolute;
            border-radius: 50%;
            box-shadow: 0 0 20px var(--bg-v2-accent), inset 0 0 20px var(--bg-v2-accent);
            opacity: 0.3;
            mix-blend-mode: screen; /* 光を重ねる表現 */
        }
        /* 中心のコア */
        .breath-v2-core {
            width: 100px; height: 100px;
            background: var(--bg-v2-accent);
            opacity: 0.8;
            z-index: 10;
            box-shadow: 0 0 40px var(--bg-v2-accent);
        }

        /* --- テキスト --- */
        .breath-v2-text-wrap {
            height: 50px; /* 高さ確保 */
            display: flex; justify-content: center; align-items: center;
        }
        .breath-v2-text {
            font-size: 2.2em;
            font-weight: 300;
            color: var(--bg-v2-text);
            letter-spacing: 4px;
            text-shadow: 0 2px 10px rgba(0,0,0,0.3);
            opacity: 0;
            transform: translateY(10px);
            transition: all 0.5s ease;
        }
        .breath-v2-text.active { opacity: 1; transform: translateY(0); }

        /* --- 終了ボタン --- */
        .breath-v2-close-btn {
            margin-top: 50px;
            background: transparent;
            border: 1px solid rgba(255,255,255,0.3);
            color: rgba(255,255,255,0.7);
            padding: 10px 30px;
            border-radius: 30px;
            cursor: pointer;
            transition: all 0.3s;
            font-size: 0.9em;
        }
        .breath-v2-close-btn:hover {
            border-color: #fff;
            color: #fff;
            background: rgba(255,255,255,0.1);
        }

        /* ====== アニメーション定義 ====== */
        /* 4秒吸う -> 4秒止める -> 4秒吐く -> 4秒止める (計16秒サイクル) */
        
        /* 吸う（拡大＆明るく） */
        .inhale .breath-v2-circle, .inhale .breath-v2-core {
            animation: breathIn 4s cubic-bezier(0.4, 0.0, 0.2, 1) forwards;
        }
        @keyframes breathIn {
            from { transform: scale(1); opacity: 0.3; }
            to { transform: scale(2.5); opacity: 0.6; }
        }
        .inhale .breath-v2-core {
             animation-name: coreIn;
        }
         @keyframes coreIn {
            from { transform: scale(1); opacity: 0.8; }
            to { transform: scale(1.5); opacity: 1; box-shadow: 0 0 60px var(--bg-v2-accent); }
        }

        /* 止める（その状態で維持＆微振動） */
        .hold .breath-v2-circle, .hold .breath-v2-core {
            animation: breathHold 4s ease-in-out infinite alternate;
        }
        @keyframes breathHold {
            from { transform: scale(2.5); opacity: 0.6; }
            to { transform: scale(2.55); opacity: 0.7; } /* わずかに揺らす */
        }
         .hold .breath-v2-core {
             animation-name: coreHold;
        }
        @keyframes coreHold {
             from { transform: scale(1.5); opacity: 1; }
             to { transform: scale(1.52); opacity: 1; }
        }

        /* 吐く（縮小＆落ち着く） */
        .exhale .breath-v2-circle, .exhale .breath-v2-core {
            animation: breathOut 4s cubic-bezier(0.4, 0.0, 0.2, 1) forwards;
        }
        @keyframes breathOut {
            from { transform: scale(2.5); opacity: 0.6; }
            to { transform: scale(1); opacity: 0.3; }
        }
         .exhale .breath-v2-core {
             animation-name: coreOut;
        }
         @keyframes coreOut {
            from { transform: scale(1.5); opacity: 1; box-shadow: 0 0 60px var(--bg-v2-accent); }
            to { transform: scale(1); opacity: 0.8; box-shadow: 0 0 40px var(--bg-v2-accent); }
        }
        
        /* 止める（吐いた後） */
         .hold-empty .breath-v2-circle, .hold-empty .breath-v2-core {
            animation: breathHoldEmpty 4s ease-in-out infinite alternate;
        }
        @keyframes breathHoldEmpty {
            from { transform: scale(1); opacity: 0.3; }
            to { transform: scale(1.05); opacity: 0.4; }
        }
        .hold-empty .breath-v2-core {
             animation-name: coreHoldEmpty;
        }
         @keyframes coreHoldEmpty {
            from { transform: scale(1); opacity: 0.8; }
            to { transform: scale(1.02); opacity: 0.8; }
        }

        /* 波紋の遅延演出 */
        .breath-v2-circle:nth-child(1) { width: 100px; height: 100px; animation-delay: 0s; }
        .breath-v2-circle:nth-child(2) { width: 120px; height: 120px; animation-delay: 0.1s; }
        .breath-v2-circle:nth-child(3) { width: 140px; height: 140px; animation-delay: 0.2s; }

    </style>

    <button class="breath-v2-start-btn" onclick="bgV2App.start('breath-v2-69de1c84e968c')">
        <span class="breath-v2-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a7.png" alt="💧" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
        <span>心を整える呼吸ガイド</span>
    </button>

    <div id="modal-breath-v2-69de1c84e968c" class="breath-v2-modal">
        <div id="visual-breath-v2-69de1c84e968c" class="breath-v2-visual">
            <div class="breath-v2-circle"></div>
            <div class="breath-v2-circle"></div>
            <div class="breath-v2-circle"></div>
            <div class="breath-v2-circle breath-v2-core"></div>
        </div>

        <div class="breath-v2-text-wrap">
            <div id="text-breath-v2-69de1c84e968c" class="breath-v2-text">準備...</div>
        </div>
        
        <button class="breath-v2-close-btn" onclick="bgV2App.stop('breath-v2-69de1c84e968c')">終了する</button>
    </div>

    <script>
    var bgV2App = window.bgV2App || (function() {
        var timers = {};

        function setText(uid, text) {
            var el = document.getElementById('text-' + uid);
            el.classList.remove('active');
            setTimeout(function(){
                el.innerText = text;
                el.classList.add('active');
            }, 500); // フェードアウトを待って切り替え
        }

        function setPhase(uid, phaseClass, text) {
            var visual = document.getElementById('visual-' + uid);
            // クラスをリセットして新しいフェーズのクラスを付与
            visual.className = 'breath-v2-visual ' + phaseClass;
            setText(uid, text);
        }

        function start(uid) {
            var modal = document.getElementById('modal-' + uid);
            modal.classList.add('active');
            
            setText(uid, "準備...");

            // 最初の準備時間
            timers[uid] = setTimeout(function(){
                cycle(uid);
            }, 2000);
        }
        
        function cycle(uid) {
            var modal = document.getElementById('modal-' + uid);
            if (!modal.classList.contains('active')) return;

            // 1. 吸う (4秒)
            setPhase(uid, 'inhale', '吸って...');
            
            timers[uid] = setTimeout(function(){
                if (!modal.classList.contains('active')) return;
                // 2. 止める (4秒)
                setPhase(uid, 'hold', '止めて...');
                
                timers[uid] = setTimeout(function(){
                    if (!modal.classList.contains('active')) return;
                    // 3. 吐く (4秒)
                    setPhase(uid, 'exhale', '吐いて...');
                    
                    timers[uid] = setTimeout(function(){
                        if (!modal.classList.contains('active')) return;
                         // 4. 止める (4秒)
                        setPhase(uid, 'hold-empty', '止めて...');
                        
                         timers[uid] = setTimeout(function(){
                             // 次のサイクルへ
                             cycle(uid);
                         }, 4000);

                    }, 4000);
                }, 4000);
            }, 4000);
        }

        function stop(uid) {
            var modal = document.getElementById('modal-' + uid);
            modal.classList.remove('active');
            clearTimeout(timers[uid]);
            
            // リセット
            setTimeout(function(){
                 var visual = document.getElementById('visual-' + uid);
                 visual.className = 'breath-v2-visual';
                 var text = document.getElementById('text-' + uid);
                 text.innerText = '準備...';
                 text.classList.remove('active');
            }, 500);
        }

        return { start: start, stop: stop };
    })();
    </script>
    



<p class="has-border -border02"><strong>解決する悩み：</strong> 模試や入試で緊張しすぎて頭が真っ白になる、手が震える<br><strong>使う場面：</strong> 模試直前、入試当日、緊張で勉強に集中できないとき</p>



<p>試験前の緊張は、人によって様々です。</p>



<p>適度な緊張はパフォーマンスを上げますが、過度な緊張は思考を止めてしまいます。</p>



<p><strong><span class="swl-marker mark_yellow">このツールは、画面に表示されるガイドに合わせて呼吸をするだけで、乱れた自律神経を整えるように設計されています。</span></strong></p>



<p>医学的にも、深くゆっくりとした呼吸には副交感神経を活性化させる効果があるとされており、緊張状態からリラックス状態への切り替えを促します。</p>



<p><strong><span class="swl-marker mark_yellow">操作はシンプルで、画面の指示に従って「吸う→止める→吐く」を繰り返すだけです。</span></strong></p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> <strong><span class="swl-marker mark_yellow">本番でいきなり使うのではなく、普段から練習しておきましょう。</span></strong>模試の前や学校の定期テストの前など、「少し緊張する場面」で繰り返し使っておくと、本番でも同じ効果が得られます。</p>



<h2 class="wp-block-heading">⑥ 学習タイプ別診断</h2>




    <style>
        /* コンテナデザイン */
        .dv2-card {
            background: #fff;
            border-radius: 16px;
            box-shadow: 0 10px 40px rgba(0,0,0,0.1);
            padding: 40px 30px;
            max-width: 550px;
            margin: 30px auto;
            font-family: "Helvetica Neue", Arial, sans-serif;
            position: relative;
            overflow: hidden;
            border: 1px solid #f0f0f0;
        }
        
        /* スタート画面 */
        .dv2-start { text-align: center; animation: dv2FadeIn 0.5s; }
        .dv2-title { font-size: 1.6em; font-weight: bold; color: #333; margin-bottom: 10px; }
        .dv2-desc { color: #666; margin-bottom: 30px; line-height: 1.6; font-size: 0.95em; }
        .dv2-icon-lg { font-size: 4em; margin-bottom: 20px; display: inline-block; }

        /* 質問画面 */
        .dv2-quiz { display: none; opacity: 0; transition: opacity 0.3s; }
        .dv2-progress-bg { background: #eee; height: 6px; border-radius: 3px; margin-bottom: 30px; overflow: hidden; }
        .dv2-progress-bar { height: 100%; background: #0073aa; width: 0%; transition: width 0.4s ease; }
        
        .dv2-q-text { font-size: 1.3em; font-weight: bold; color: #333; margin-bottom: 30px; text-align: center; min-height: 3em; display: flex; align-items: center; justify-content: center; }
        
        .dv2-options { display: flex; flex-direction: column; gap: 15px; }
        .dv2-btn {
            padding: 15px 20px;
            border: 2px solid #e0e0e0;
            background: #fff;
            border-radius: 12px;
            cursor: pointer;
            font-size: 1em;
            font-weight: bold;
            color: #555;
            transition: all 0.2s;
            text-align: left;
            position: relative;
            padding-left: 50px;
        }
        .dv2-btn:hover { border-color: #0073aa; background: #f0f9ff; color: #0073aa; transform: translateY(-2px); }
        .dv2-btn::before {
            content: "";
            position: absolute; left: 20px; top: 50%; transform: translateY(-50%);
            width: 12px; height: 12px; border-radius: 50%; border: 2px solid #ccc;
        }
        .dv2-btn:hover::before { border-color: #0073aa; background: #0073aa; }

        /* プライマリボタン（スタート用） */
        .dv2-btn-primary {
            background: linear-gradient(135deg, #0073aa 0%, #00aaff 100%);
            color: #fff; border: none; padding: 15px 40px; border-radius: 30px;
            font-size: 1.1em; cursor: pointer; font-weight: bold; box-shadow: 0 4px 15px rgba(0,115,170,0.3);
            transition: all 0.2s;
        }
        .dv2-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,115,170,0.4); }

        /* ローディング画面 */
        .dv2-loading { display: none; text-align: center; padding: 40px 0; }
        .dv2-spinner {
            width: 50px; height: 50px; border: 5px solid #eee; border-top: 5px solid #0073aa;
            border-radius: 50%; margin: 0 auto 20px auto; animation: dv2Spin 1s linear infinite;
        }

        /* 結果画面 */
        .dv2-result { display: none; text-align: center; animation: dv2FadeIn 0.8s; }
        .dv2-type-label { font-size: 0.9em; color: #888; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 5px; }
        .dv2-type-name { font-size: 2em; font-weight: bold; color: #0073aa; margin-bottom: 20px; }
        .dv2-box { background: #f9f9f9; padding: 20px; border-radius: 10px; text-align: left; margin-bottom: 20px; }
        .dv2-box h4 { margin: 0 0 10px 0; color: #333; border-left: 4px solid #0073aa; padding-left: 10px; }
        .dv2-box p { font-size: 0.95em; color: #555; margin: 0; line-height: 1.6; }
        .dv2-restart { background: transparent; border: none; color: #999; text-decoration: underline; cursor: pointer; margin-top: 10px; }

        /* アニメーション定義 */
        @keyframes dv2FadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        @keyframes dv2Spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

        /* スマホ対応 */
        @media(max-width: 480px) {
            .dv2-card { padding: 30px 20px; }
            .dv2-title { font-size: 1.4em; }
            .dv2-q-text { font-size: 1.1em; }
        }
    </style>

    <div class="dv2-card" id="app-diag-v2-69de1c84e9699">
        <div id="start-diag-v2-69de1c84e9699" class="dv2-start">
            <div class="dv2-icon-lg"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
            <div class="dv2-title">学習スタイル診断</div>
            <div class="dv2-desc">
                あなたの脳のクセを知れば、勉強効率は劇的に上がります。<br>
                5つの質問に答えて、最適な勉強法を見つけましょう。
            </div>
            <button class="dv2-btn-primary" onclick="startDiagV2('diag-v2-69de1c84e9699')">診断を始める</button>
        </div>

        <div id="quiz-diag-v2-69de1c84e9699" class="dv2-quiz">
            <div class="dv2-progress-bg">
                <div id="bar-diag-v2-69de1c84e9699" class="dv2-progress-bar"></div>
            </div>
            <div id="q-text-diag-v2-69de1c84e9699" class="dv2-q-text">質問テキスト</div>
            <div id="opts-diag-v2-69de1c84e9699" class="dv2-options">
                </div>
        </div>

        <div id="load-diag-v2-69de1c84e9699" class="dv2-loading">
            <div class="dv2-spinner"></div>
            <div style="font-weight:bold; color:#555;">あなたのタイプを分析中...</div>
        </div>

        <div id="result-diag-v2-69de1c84e9699" class="dv2-result">
            <div class="dv2-type-label">YOUR TYPE</div>
            <div id="res-name-diag-v2-69de1c84e9699" class="dv2-type-name"></div>
            
            <div class="dv2-box">
                <h4>特徴</h4>
                <p id="res-desc-diag-v2-69de1c84e9699"></p>
            </div>
            <div class="dv2-box" style="background:#e3f2fd;">
                <h4>おすすめ勉強法</h4>
                <p id="res-advice-diag-v2-69de1c84e9699"></p>
            </div>
            
            <br>
            <button class="dv2-restart" onclick="resetDiagV2('diag-v2-69de1c84e9699')">最初からやり直す</button>
        </div>
    </div>

    <script>
    if (typeof diagV2 === "undefined") {
        var diagV2 = {};

        // 質問データ（type: visual=視覚, audio=聴覚, logic=論理・実践）
        var questionsV2 = [
            {
                q: "新しい英単語を覚えるとき、どうする？",
                opts: [
                    { t: "書いてスペルを目で見て覚える", type: "visual" },
                    { t: "何度も声に出して音で覚える", type: "audio" },
                    { t: "例文を作ったり実際に使ってみる", type: "logic" }
                ]
            },
            {
                q: "先生の授業、どこに注目する？",
                opts: [
                    { t: "黒板の板書や配られた図解プリント", type: "visual" },
                    { t: "先生の話し方や声のトーン", type: "audio" },
                    { t: "演習問題を解く時間", type: "logic" }
                ]
            },
            {
                q: "新しい家電を買った。使い方はどう覚える？",
                opts: [
                    { t: "説明書をしっかり読む", type: "visual" },
                    { t: "詳しい人に口頭で教えてもらう", type: "audio" },
                    { t: "とりあえずボタンを押して触ってみる", type: "logic" }
                ]
            },
            {
                q: "集中したいとき、気になるのは？",
                opts: [
                    { t: "机の上が散らかっていること", type: "visual" },
                    { t: "周りの雑音や話し声", type: "audio" },
                    { t: "椅子が座りにくいこと", type: "logic" }
                ]
            },
            {
                q: "友人に道順を教えるなら？",
                opts: [
                    { t: "地図を描いて渡す", type: "visual" },
                    { t: "言葉で「右に曲がって…」と伝える", type: "audio" },
                    { t: "一緒に行って案内する", type: "logic" }
                ]
            }
        ];

        // 結果データ
        var resultsV2 = {
            "visual": {
                name: "&#x1f4f8; 視覚・グラフィック型",
                desc: "目からの情報処理が得意なタイプ。図解、色分け、グラフなどを瞬時に記憶に残すことができます。",
                advice: "色ペンを活用したまとめノート作成や、図解の多い参考書がおすすめ。「マインドマップ」を使うのも効果的です。単語帳はイラスト付きを選びましょう。"
            },
            "audio": {
                name: "&#x1f3a7; 聴覚・リスニング型",
                desc: "耳からの情報処理に優れたタイプ。講義を聞いたり、音読することで深く理解することができます。",
                advice: "「講義系動画」を見たり、覚えたことを自分で「録音」して聞くのが最強の勉強法。静かな場所で、ブツブツと音読しながら暗記しましょう。"
            },
            "logic": {
                name: "&#x26a1; 実践・ロジック型",
                desc: "体験や行動を通して学ぶタイプ。手を動かしたり、理屈を納得することで記憶が定着します。",
                advice: "「アウトプット」重視でいきましょう。教科書を読むより先に問題を解く。また、「なぜそうなるのか？」を友人に教えるごっこ遊びも効果的です。"
            }
        };

        function startDiagV2(uid) {
            diagV2[uid] = { current: 0, scores: { visual:0, audio:0, logic:0 } };
            document.getElementById("start-" + uid).style.display = "none";
            
            var quizEl = document.getElementById("quiz-" + uid);
            quizEl.style.display = "block";
            // 少し遅れてフェードイン
            setTimeout(function(){ quizEl.style.opacity = 1; }, 50);
            
            renderQuestionV2(uid);
        }

        function renderQuestionV2(uid) {
            var state = diagV2[uid];
            var qData = questionsV2[state.current];
            
            // 進捗バー更新
            var progress = ((state.current) / questionsV2.length) * 100;
            document.getElementById("bar-" + uid).style.width = progress + "%";

            // 質問表示（フェード効果付き）
            var qText = document.getElementById("q-text-" + uid);
            var optsDiv = document.getElementById("opts-" + uid);
            
            qText.innerText = qData.q;
            optsDiv.innerHTML = ""; // クリア

            qData.opts.forEach(function(opt) {
                var btn = document.createElement("button");
                btn.className = "dv2-btn";
                btn.innerText = opt.t;
                btn.onclick = function() { answerV2(uid, opt.type); };
                optsDiv.appendChild(btn);
            });
        }

        function answerV2(uid, type) {
            var state = diagV2[uid];
            state.scores[type]++; // スコア加算
            
            state.current++;
            
            if (state.current >= questionsV2.length) {
                // 終了 -> 計算へ
                document.getElementById("bar-" + uid).style.width = "100%";
                finishDiagV2(uid);
            } else {
                // 次の質問へ
                renderQuestionV2(uid);
            }
        }

        function finishDiagV2(uid) {
            // クイズ画面を隠す
            document.getElementById("quiz-" + uid).style.display = "none";
            // ローディング表示
            document.getElementById("load-" + uid).style.display = "block";

            // 1.5秒待って結果表示（計算してる感を演出）
            setTimeout(function() {
                document.getElementById("load-" + uid).style.display = "none";
                showResultV2(uid);
            }, 1500);
        }

        function showResultV2(uid) {
            var scores = diagV2[uid].scores;
            // 最も高いスコアを探す
            var maxType = Object.keys(scores).reduce(function(a, b){ 
                return scores[a] > scores[b] ? a : b 
            });
            
            var data = resultsV2[maxType];
            
            document.getElementById("res-name-" + uid).innerText = data.name;
            document.getElementById("res-desc-" + uid).innerText = data.desc;
            document.getElementById("res-advice-" + uid).innerText = data.advice;
            
            document.getElementById("result-" + uid).style.display = "block";
        }

        function resetDiagV2(uid) {
            document.getElementById("result-" + uid).style.display = "none";
            document.getElementById("quiz-" + uid).style.opacity = 0;
            document.getElementById("start-" + uid).style.display = "block";
        }
    }
    </script>
    



<p class="has-border -border02"><strong>解決する悩み：</strong> 友達と同じ勉強法を試しても成績が上がらない、自分に合った勉強法がわからない <br><strong>使う場面：</strong> 受験勉強を始めるとき、勉強法を見直したいとき</p>



<p>「先輩がやっていた勉強法を真似してみたけど、自分には合わなかった」</p>



<p>人にはそれぞれ得意な情報処理のタイプがあり、<strong><span class="swl-marker mark_yellow">自分のタイプに合った方法で勉強した方が効率は圧倒的によいです。</span></strong></p>



<p>この診断ツールは、5つの簡単な質問に答えるだけで、あなたの学習タイプを判定します。</p>



<p>診断結果には、タイプごとの特徴と、そのタイプに最適な具体的な勉強法が表示されます。</p>



<p>万人に通用する「最強の勉強法」は存在しませんが、大切なのは、<strong><span class="swl-marker mark_yellow">自分の脳の特性を知り、それに合ったやり方を選ぶことです。</span></strong></p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> 診断結果を鵜呑みにするのではなく、「提案された方法を2週間試してみて、効果を検証する」というスタンスが理想的です。合わなければ別の要素を取り入れてカスタマイズしてください。</p>



<h2 class="wp-block-heading">⑦ 合格ロードマップ</h2>




    <style>
        /* --- デザイン変数 --- */
        :root {
            --rm-bg: #1e3a8a; /* 信頼のネイビー */
            --rm-card-bg: #ffffff;
            --rm-accent: #fbbf24; /* 勝利のゴールド */
            --rm-text-main: #1f2937;
            --rm-text-sub: #6b7280;
        }

        /* --- 全体コンテナ --- */
        .rm-container {
            font-family: "Helvetica Neue", Arial, sans-serif;
            max-width: 500px;
            margin: 40px auto;
            background: var(--rm-card-bg);
            border-radius: 20px;
            box-shadow: 0 20px 50px rgba(30, 58, 138, 0.15);
            overflow: hidden;
            border: 1px solid #e5e7eb;
        }

        /* --- ヘッダー --- */
        .rm-header {
            background: var(--rm-bg);
            padding: 30px 20px;
            text-align: center;
            color: #fff;
            position: relative;
        }
        .rm-header::after {
            content: ""; position: absolute; bottom: -10px; left: 50%; transform: translateX(-50%);
            border-left: 10px solid transparent; border-right: 10px solid transparent;
            border-top: 10px solid var(--rm-bg);
        }
        .rm-title { font-size: 1.4em; font-weight: bold; margin-bottom: 5px; letter-spacing: 1px; }
        .rm-subtitle { font-size: 0.8em; opacity: 0.8; }

        /* --- 入力エリア --- */
        .rm-input-area {
            padding: 40px 30px;
            text-align: center;
            transition: all 0.3s;
        }
        .rm-label { display: block; text-align: left; font-weight: bold; color: var(--rm-text-main); margin-bottom: 5px; font-size: 0.9em; }
        .rm-input {
            width: 100%; padding: 12px; margin-bottom: 20px;
            border: 2px solid #e5e7eb; border-radius: 8px; font-size: 1em;
            box-sizing: border-box; transition: border 0.3s;
        }
        .rm-input:focus { border-color: var(--rm-bg); outline: none; }
        
        .rm-btn {
            background: linear-gradient(135deg, var(--rm-bg) 0%, #3b82f6 100%);
            color: #fff; border: none; padding: 15px 40px; border-radius: 50px;
            font-size: 1.1em; font-weight: bold; cursor: pointer;
            box-shadow: 0 5px 15px rgba(59, 130, 246, 0.4);
            transition: transform 0.2s; width: 100%;
        }
        .rm-btn:hover { transform: translateY(-2px); }

        /* --- ロードマップ表示エリア --- */
        .rm-result-area {
            display: none; padding: 30px;
            background: #f9fafb;
        }
        .rm-target-school {
            text-align: center; font-size: 1.5em; font-weight: bold; color: var(--rm-bg);
            margin-bottom: 5px; border-bottom: 2px solid var(--rm-accent);
            display: inline-block; padding-bottom: 5px;
        }
        .rm-days-left {
            text-align: center; font-size: 0.9em; color: var(--rm-text-sub); margin-bottom: 30px;
        }

        /* --- タイムライン --- */
        .rm-timeline {
            position: relative; padding-left: 30px;
            border-left: 3px solid #e5e7eb;
        }
        .rm-phase {
            position: relative; margin-bottom: 40px;
            opacity: 0; transform: translateX(20px);
            animation: rmSlideIn 0.5s ease forwards;
        }
        .rm-phase:last-child { margin-bottom: 0; }
        
        /* 点（ドット） */
        .rm-dot {
            position: absolute; left: -39px; top: 0;
            width: 16px; height: 16px; background: #fff;
            border: 3px solid var(--rm-bg); border-radius: 50%;
            z-index: 2;
        }
        .rm-phase.final .rm-dot { border-color: var(--rm-accent); background: var(--rm-accent); }

        /* コンテンツ */
        .rm-date { font-size: 0.85em; color: var(--rm-text-sub); font-weight: bold; display: block; margin-bottom: 3px; }
        .rm-phase-title { font-size: 1.1em; font-weight: bold; color: var(--rm-text-main); margin-bottom: 5px; }
        .rm-phase-desc { font-size: 0.85em; color: #555; line-height: 1.5; background: #fff; padding: 10px; border-radius: 8px; border: 1px solid #eee; }

        @keyframes rmSlideIn { to { opacity: 1; transform: translateX(0); } }

        /* --- 完了ボタン --- */
        .rm-reset-link {
            display: block; text-align: center; margin-top: 30px;
            color: var(--rm-text-sub); font-size: 0.8em; text-decoration: underline; cursor: pointer;
        }
    </style>

    <div class="rm-container" id="rm-app-roadmap-69de1c84e96d8">
        <div class="rm-header">
            <div class="rm-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c5.png" alt="📅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 合格ロードマップ</div>
            <div class="rm-subtitle">あなただけの戦略スケジュールを生成</div>
        </div>

        <div id="input-area-roadmap-69de1c84e96d8" class="rm-input-area">
            <label class="rm-label">第一志望校</label>
            <input type="text" id="school-roadmap-69de1c84e96d8" class="rm-input" placeholder="例：〇〇大学">
            
            <label class="rm-label">入試日（目標日）</label>
            <input type="date" id="date-roadmap-69de1c84e96d8" class="rm-input">
            
            <button class="rm-btn" onclick="generateRoadmap('roadmap-69de1c84e96d8')">戦略を作成する</button>
        </div>

        <div id="result-area-roadmap-69de1c84e96d8" class="rm-result-area">
            <div style="text-align:center;">
                <div id="res-school-roadmap-69de1c84e96d8" class="rm-target-school"></div>
                <div id="res-days-roadmap-69de1c84e96d8" class="rm-days-left"></div>
            </div>

            <div class="rm-timeline" id="timeline-roadmap-69de1c84e96d8">
                </div>

            <div class="rm-reset-link" onclick="resetRoadmap('roadmap-69de1c84e96d8')">条件を変更する</div>
        </div>
    </div>

    <script>
    if (typeof rmData === "undefined") {
        var rmData = {};

        function generateRoadmap(uid) {
            var school = document.getElementById("school-" + uid).value;
            var dateVal = document.getElementById("date-" + uid).value;
            
            if (!school || !dateVal) {
                alert("志望校と入試日を入力してください");
                return;
            }

            // 日付計算
            var today = new Date();
            var examDate = new Date(dateVal);
            var diffTime = examDate - today;
            var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

            if (diffDays <= 0) {
                alert("入試日は未来の日付を指定してください");
                return;
            }

            // 期間の配分計算 (基礎50% -> 演習30% -> 直前20%)
            var phase1Days = Math.floor(diffDays * 0.5);
            var phase2Days = Math.floor(diffDays * 0.3);
            
            var datePhase1End = new Date(today);
            datePhase1End.setDate(today.getDate() + phase1Days);
            
            var datePhase2End = new Date(datePhase1End);
            datePhase2End.setDate(datePhase1End.getDate() + phase2Days);

            // 日付フォーマット関数
            var fmt = function(d) { return (d.getMonth()+1) + "/" + d.getDate(); };

            // タイムラインHTML生成
            var html = "";
            
            // Phase 1: 基礎完成
            html += createPhaseHtml(0, "今日", "基礎固め・苦手克服", "全ての土台を作る期間。教科書レベルを完璧にし、苦手分野を潰しきる。", "0s");
            
            // Phase 2: 応用演習
            html += createPhaseHtml(1, fmt(datePhase1End) + "~", "過去問演習・応用", "実戦形式に移行する期間。志望校の傾向を知り、時間配分の感覚を掴む。", "0.2s");
            
            // Phase 3: 直前完成
            html += createPhaseHtml(2, fmt(datePhase2End) + "~", "最終調整・メンタル", "新しいことには手を出さない。復習と体調管理で本番のピークを作る。", "0.4s");
            
            // Goal
            html += createPhaseHtml(3, fmt(examDate), "入試本番", "これまでの努力をぶつける日。自信を持って。", "0.6s", true);

            // 表示切り替え
            document.getElementById("res-school-" + uid).innerText = school + " 合格作戦";
            document.getElementById("res-days-" + uid).innerText = "本番まであと " + diffDays + " 日";
            document.getElementById("timeline-" + uid).innerHTML = html;
            
            document.getElementById("input-area-" + uid).style.display = "none";
            document.getElementById("result-area-" + uid).style.display = "block";
        }

        function createPhaseHtml(idx, date, title, desc, delay, isFinal) {
            var finalClass = isFinal ? "final" : "";
            return `
            <div class="rm-phase ${finalClass}" style="animation-delay: ${delay}">
                <div class="rm-dot"></div>
                <span class="rm-date">${date}</span>
                <div class="rm-phase-title">${title}</div>
                <div class="rm-phase-desc">${desc}</div>
            </div>`;
        }

        function resetRoadmap(uid) {
            document.getElementById("result-area-" + uid).style.display = "none";
            document.getElementById("input-area-" + uid).style.display = "block";
            // タイムラインをクリア
            document.getElementById("timeline-" + uid).innerHTML = "";
        }
    }
    </script>
    



<p class="has-border -border02"><strong>解決する悩み：</strong> 受験までに何をどの順番でやればいいかわからない、漠然とした不安がある <br><strong>使う場面：</strong> 受験勉強を本格的に始めるとき、志望校を決めたとき</p>



<p>「あと何日あるのか」「いつまでに何を終わらせるべきか」</p>



<p>これがわからないまま勉強を続けるのは、地図を持たずに旅に出るようなものです。</p>



<p>このツールは、<strong><span class="swl-marker mark_yellow">志望校と入試日を入力すると、残り日数を自動計算し、合格に必要な学習のマイルストーンを提示してくれます。</span></strong></p>



<p>「いつまでに基礎を固めるべきか」「いつから過去問に入るべきか」が可視化されるので、日々の勉強に迷いがなくなります。</p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> 一度作ったロードマップは定期的に見直しましょう。模試の結果や進捗状況に応じて、計画を微調整するのが上手な使い方です。計画は「守るもの」ではなく「調整するもの」という意識を持っておきましょう。</p>



<h2 class="wp-block-heading">⑧ 試験時間計算機</h2>




    <style>
        /* --- デザイン変数：Calm Intelligence --- */
        #nav-69de1c84e96ed-wrap {
            --nav-bg: #fcfdfd;       /* ほぼ白に近い寒色系ホワイト */
            --nav-panel: #ffffff;    /* パネル背景 */
            --nav-text: #455a64;     /* 知的なブルーグレー */
            --nav-sub: #90a4ae;      /* 薄いグレー */
            --nav-accent: #546e7a;   /* アクセント */
            --nav-line: #eceff1;     /* 境界線 */
            --nav-shadow: 0 10px 40px rgba(69, 90, 100, 0.08);
            
            font-family: "Helvetica Neue", "Hiragino Kaku Gothic ProN", Arial, sans-serif;
            background: var(--nav-bg);
            max-width: 480px;
            margin: 40px auto;
            border-radius: 16px;
            box-shadow: var(--nav-shadow);
            color: var(--nav-text);
            overflow: hidden;
            border: 1px solid #f0f4f5;
        }

        /* ヘッダーエリア */
        .nav-header {
            background: var(--nav-panel);
            padding: 30px 30px 20px;
            text-align: center;
            border-bottom: 1px solid var(--nav-line);
        }
        .nav-title {
            font-size: 1.1em; letter-spacing: 2px; font-weight: 600;
            color: var(--nav-accent); text-transform: uppercase;
            display: flex; align-items: center; justify-content: center; gap: 8px;
        }
        .nav-desc { font-size: 0.8em; color: var(--nav-sub); margin-top: 5px; }

        /* 入力フォームエリア */
        .nav-input-area {
            padding: 30px;
            background: var(--nav-panel);
        }
        
        .nav-row {
            display: flex; justify-content: space-between; align-items: center;
            margin-bottom: 20px;
        }
        .nav-label { font-size: 0.9em; font-weight: bold; color: var(--nav-text); }
        .nav-sub-label { font-size: 0.75em; color: var(--nav-sub); display: block; margin-top: 2px;}

        /* 美しい入力フィールド */
        .nav-input, .nav-select {
            border: 1px solid var(--nav-line);
            background: #fcfcfc;
            border-radius: 8px;
            padding: 10px;
            font-size: 1em;
            color: var(--nav-text);
            text-align: right;
            width: 100px;
            outline: none;
            transition: all 0.3s;
            font-family: monospace; /* 数字を見やすく */
        }
        .nav-input:focus { border-color: var(--nav-accent); background: #fff; }
        
        /* ボタン */
        .nav-btn {
            width: 100%;
            padding: 14px;
            background: var(--nav-accent);
            color: #fff;
            border: none;
            border-radius: 8px;
            font-size: 1em;
            font-weight: bold;
            letter-spacing: 1px;
            cursor: pointer;
            transition: all 0.2s;
            box-shadow: 0 4px 10px rgba(84, 110, 122, 0.2);
        }
        .nav-btn:hover { background: #455a64; transform: translateY(-1px); }

        /* 結果表示エリア（タイムライン） */
        .nav-result {
            display: none; /* 初期は非表示 */
            background: #f9fbfc;
            padding: 30px;
            border-top: 1px solid var(--nav-line);
        }
        
        /* タイムラインのデザイン */
        .nav-timeline {
            position: relative;
            padding-left: 20px;
            border-left: 2px solid var(--nav-line);
        }
        .nav-item {
            position: relative;
            margin-bottom: 25px;
            padding-left: 20px;
            animation: navFadeIn 0.5s ease forwards;
            opacity: 0;
        }
        .nav-item:last-child { margin-bottom: 0; }
        
        /* ドット */
        .nav-dot {
            position: absolute; left: -26px; top: 5px;
            width: 10px; height: 10px;
            background: #fff;
            border: 2px solid var(--nav-sub);
            border-radius: 50%;
            z-index: 2;
        }
        .nav-item.start .nav-dot { border-color: var(--nav-accent); background: var(--nav-accent); }
        .nav-item.check .nav-dot { border-color: #ffb74d; background: #ffb74d; } /* 黄色：見直し */
        .nav-item.finish .nav-dot { border-color: #ef5350; background: #ef5350; } /* 赤：終了 */

        /* テキスト */
        .nav-time { font-family: monospace; font-size: 1.4em; font-weight: bold; color: var(--nav-text); line-height: 1; }
        .nav-task { font-size: 0.85em; font-weight: bold; color: var(--nav-sub); margin-top: 4px; text-transform: uppercase; letter-spacing: 1px; }
        .nav-duration { font-size: 0.75em; color: #b0bec5; margin-left: 10px; font-weight: normal; }

        @keyframes navFadeIn { to { opacity: 1; transform: translateY(0); } from { opacity: 0; transform: translateY(10px); } }

        /* コピーボタン */
        .nav-copy-link {
            text-align: center; margin-top: 20px; font-size: 0.8em; 
            color: var(--nav-sub); text-decoration: underline; cursor: pointer;
        }

        /* スマホ対応 */
        @media (max-width: 480px) {
            .nav-input { width: 80px; }
        }
    </style>

    <div id="nav-69de1c84e96ed-wrap">
        <div class="nav-header">
            <div class="nav-title"><span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ed.png" alt="🧭" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> Exam Navigator</div>
            <div class="nav-desc">試験当日のペース配分計算機</div>
        </div>

        <div class="nav-input-area">
            <div class="nav-row">
                <div>
                    <div class="nav-label">開始時刻</div>
                    <span class="nav-sub-label">Start Time</span>
                </div>
                <input type="time" id="start-nav-69de1c84e96ed" class="nav-input" value="09:30">
            </div>

            <div class="nav-row">
                <div>
                    <div class="nav-label">試験時間</div>
                    <span class="nav-sub-label">Duration (min)</span>
                </div>
                <input type="number" id="duration-nav-69de1c84e96ed" class="nav-input" value="60">
            </div>

            <div class="nav-row">
                <div>
                    <div class="nav-label">大問数</div>
                    <span class="nav-sub-label">Questions</span>
                </div>
                <input type="number" id="qnum-nav-69de1c84e96ed" class="nav-input" value="4">
            </div>

            <div class="nav-row">
                <div>
                    <div class="nav-label">見直し時間</div>
                    <span class="nav-sub-label">Buffer (min)</span>
                </div>
                <input type="number" id="buffer-nav-69de1c84e96ed" class="nav-input" value="5">
            </div>

            <button class="nav-btn" onclick="navApp.calc('nav-69de1c84e96ed')">CREATE SCHEDULE</button>
        </div>

        <div id="res-nav-69de1c84e96ed" class="nav-result">
            <div id="timeline-nav-69de1c84e96ed" class="nav-timeline">
                </div>
            <div class="nav-copy-link" onclick="navApp.copy('nav-69de1c84e96ed')">クリップボードにコピー</div>
        </div>
    </div>

    <script>
    var navApp = window.navApp || (function() {
        
        function calc(uid) {
            // 値の取得
            var startStr = document.getElementById('start-' + uid).value; // "09:30"
            var duration = parseInt(document.getElementById('duration-' + uid).value);
            var qnum = parseInt(document.getElementById('qnum-' + uid).value);
            var buffer = parseInt(document.getElementById('buffer-' + uid).value);

            if(!startStr || duration <= 0 || qnum <= 0) return;

            // 時間計算の準備
            var parts = startStr.split(':');
            var startHour = parseInt(parts[0]);
            var startMin = parseInt(parts[1]);
            
            // 開始時間をDateオブジェクト化
            var baseTime = new Date();
            baseTime.setHours(startHour, startMin, 0, 0);

            // 実際に使える時間
            var workingTime = duration - buffer;
            if(workingTime <= 0) {
                alert("見直し時間が長すぎます");
                return;
            }
            
            // 1問あたりの時間（分）
            var perQ = workingTime / qnum;

            // HTML生成
            var html = '';
            var currentTime = new Date(baseTime);

            // 1. START
            html += makeItem(formatTime(currentTime), "試験開始", "", "start", 0);

            // 2. 各問題の終了時刻
            for(var i=1; i<=qnum; i++) {
                // 時間を加算（ミリ秒）
                currentTime = new Date(baseTime.getTime() + (perQ * i * 60000));
                
                // 表示用テキスト
                var label = "第" + i + "問 完了";
                var durText = Math.floor(perQ) + " min";
                
                html += makeItem(formatTime(currentTime), label, durText, "", i * 0.1);
            }

            // 3. 見直し開始 (もしバッファがあれば)
            if(buffer > 0) {
                // 見直しは、最後の問題が終わった瞬間から始まるので、表示上の時刻は最後の大問終了と同じだが
                // ここでは「終了時刻」＝「見直し時間終了」へ向かう
                var endTime = new Date(baseTime.getTime() + (duration * 60000));
                
                html += makeItem(formatTime(endTime), "見直し・最終確認", buffer + " min", "check", (qnum+1)*0.1);
            }

            // 出力
            document.getElementById('timeline-' + uid).innerHTML = html;
            document.getElementById('res-' + uid).style.display = 'block';
        }

        function makeItem(timeStr, label, sub, type, delay) {
            var style = 'style="animation-delay:' + delay + 's"';
            var clz = type ? 'nav-item ' + type : 'nav-item';
            
            return `
            <div class="${clz}" ${style}>
                <div class="nav-dot"></div>
                <div class="nav-time">${timeStr} <span class="nav-duration">${sub}</span></div>
                <div class="nav-task">${label}</div>
            </div>`;
        }

        function formatTime(date) {
            var h = date.getHours();
            var m = date.getMinutes();
            return (h < 10 ? '0'+h : h) + ':' + (m < 10 ? '0'+m : m);
        }

        function copy(uid) {
            var timeline = document.getElementById('timeline-' + uid);
            var text = timeline.innerText.replace(/\n\n/g, '\n'); // 整形
            navigator.clipboard.writeText(text).then(function() {
                alert("スケジュールをコピーしました");
            });
        }

        return { calc: calc, copy: copy };
    })();
    </script>
    



<p class="has-border -border02"><strong>解決する悩み：</strong> 試験で最後まで解ききれない、大問ごとの時間配分がわからない <br><strong>使う場面：</strong> 過去問演習の前、入試本番の前日</p>



<p>「大問1に時間をかけすぎて、大問4に10分しか残らなかった」</p>



<p>これは戦略の問題であり、実力の問題ではありません。<br>事前に時間配分を決めておけば十分に防げる問題です。</p>



<p>このツールは、<strong><span class="swl-marker mark_yellow">試験の開始時刻・制限時間・大問数・見直し時間を入力するだけで、各大問に割り当てるべき最適な時間を自動計算し</span></strong>ます。</p>



<p>計算結果はコピーできるので、メモに貼って過去問演習のたびに参照することもできます。</p>



<p class="is-style-big_icon_check"><strong>効果的な使い方のコツ：</strong> すべての大問に均等に時間を割り振るのではなく、「配点が高い大問」や「自分が得意な大問」に多めの時間を配分することをおすすめします。<br>このツールで基本の配分を出した後、自分の得意・不得意に応じて微調整しましょう。</p>



<h2 class="wp-block-heading">どのツールから使えばいい？ 目的別おすすめ</h2>



<figure class="wp-block-image size-full"><img decoding="async" width="780" height="410" src="https://lawcityblog.com/wp-content/uploads/2023/02/1-9.jpg" alt="" class="wp-image-2238" srcset="https://lawcityblog.com/wp-content/uploads/2023/02/1-9.jpg 780w, https://lawcityblog.com/wp-content/uploads/2023/02/1-9-500x263.jpg 500w, https://lawcityblog.com/wp-content/uploads/2023/02/1-9-300x158.jpg 300w, https://lawcityblog.com/wp-content/uploads/2023/02/1-9-768x404.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li><strong>「とにかく集中力を上げたい」</strong><br> → まずポモドーロタイマーと集中用BGMを組み合わせて使いましょう。この2つだけで勉強の質は大きく変わります。</li>



<li><strong>「受験勉強を始めたばかりで何からやればいいかわからない」</strong> <br>→ 合格ロードマップで全体の見通しを立て、学習タイプ別診断で自分に合った方法を把握してから、具体的な勉強に入りましょう。</li>



<li><strong>「模試や本番の緊張が心配」</strong><br>→ 呼吸法ガイドを今日から毎日1回練習しておこう。本番でいきなり使っても効果は薄いので、普段から慣れておくことが大切です。</li>



<li><strong>「勉強は続けているのに成果が見えなくて不安」</strong> <br>→ 1日の勉強記録をつけ始めましょう。「今日もちゃんとやった」という記録の積み重ねが、試験直前のあなたを支えてくれるはずです。</li>
</ul>



<h2 class="wp-block-heading">勉強の&#8221;中身&#8221;を鍛えるツール</h2>



<figure class="wp-block-image size-full"><img decoding="async" width="780" height="408" src="https://lawcityblog.com/wp-content/uploads/2022/02/My-project-60.jpg" alt="" class="wp-image-1830" srcset="https://lawcityblog.com/wp-content/uploads/2022/02/My-project-60.jpg 780w, https://lawcityblog.com/wp-content/uploads/2022/02/My-project-60-500x262.jpg 500w, https://lawcityblog.com/wp-content/uploads/2022/02/My-project-60-300x157.jpg 300w, https://lawcityblog.com/wp-content/uploads/2022/02/My-project-60-768x402.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<p>この記事で紹介した8つは、勉強の「環境・方法・メンタル」を整えるツールです。</p>



<p>勉強の&#8221;中身&#8221;である<strong><span class="swl-marker mark_orange">文系科目の英語・国語・社会の知識を鍛えるツールも、当サイトに無料で揃っています。</span></strong></p>



<p class="is-style-balloon_box"><strong>大学受験生向け</strong></p>



<ul class="wp-block-list -list-under-dashed is-style-num_circle">
<li><a href="https://lawcityblog.com/english-test-maker/" data-type="post" data-id="3791">英単語テスト（全2022問）</a> — 共通テスト〜難関私大対応の4択クイズ</li>



<li><a href="https://lawcityblog.com/kobun-test-maker/" data-type="post" data-id="3797">古文単語ダンジョン（全501問）</a> — ゲーム感覚で古文単語を攻略</li>



<li><a href="https://lawcityblog.com/kobun-grammar/" data-type="post" data-id="3806">古文文法 識別マスタードリル（全311問</a>） — 助動詞の識別を徹底特訓</li>



<li><a href="https://lawcityblog.com/japanese-history-maker/" data-type="post" data-id="3813">日本史 一問一答（全1500問）</a> — 時代×レベルで弱点をピンポイント攻略</li>



<li><a href="https://lawcityblog.com/world-history-maker/" data-type="post" data-id="3818">世界史 一問一答（全1500問）</a> — 地域×時代×レベルでカスタマイズ</li>



<li><a href="https://lawcityblog.com/english-theme-maker/" data-type="post" data-id="3864">英作文テーマ生成メーカー（全300問）</a> — 構成ヒント付きで独学を支援</li>



<li><a href="https://lawcityblog.com/essay-maker/" data-type="post" data-id="3870">小論文テーマ生成メーカー（全500問）</a> — 志望学部別に自動出題</li>
</ul>



<p class="is-style-balloon_box"><strong>高校受験生向け</strong></p>



<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li><a href="https://lawcityblog.com/high-school-english-test/" data-type="post" data-id="3827">英単語テスト（全1000問）</a> — 高校入試頻出単語を完全網羅</li>



<li><a href="https://lawcityblog.com/high-school-grammar-test/" data-type="post" data-id="3833">英文法クエスト（全1000問</a>） — 全単元を基礎から超難関まで</li>



<li><a href="https://lawcityblog.com/high-school-grammar/" data-type="post" data-id="3842">国語 文法・知識テスト（全400問）</a> — 対義語・敬語・品詞・古文・漢文</li>



<li><a href="https://lawcityblog.com/high-school-society-test/" data-type="post" data-id="3851">社会 完全攻略クエスト（全800問）</a> — 地理・歴史・公民を横断学習</li>
</ul>



<div class="wp-block-group is-style-big_icon_point"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p><strong><span class="swl-marker mark_orange">「環境を整えるツール」と「知識を鍛えるツール」を組み合わせて使うことで、勉強の効率は格段に上がります。</span></strong></p>



<p><strong>すべて無料で使えるので、気になったものから試してみてください！</strong></p>
</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://lawcityblog.com/focus-tool/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
