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

<channel>
	<title>アリッシアの朝</title>
	<atom:link href="https://alicia-ing.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://alicia-ing.com</link>
	<description></description>
	<lastBuildDate>Sun, 04 Oct 2026 15:44:02 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://alicia-ing.com/wp-content/uploads/2023/05/cropped-alicia-32x32.webp</url>
	<title>アリッシアの朝</title>
	<link>https://alicia-ing.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【NordVPN】買い方から解約・返金まで｜実際に契約した感想</title>
		<link>https://alicia-ing.com/life/best-buy/nordvpn-contract/</link>
					<comments>https://alicia-ing.com/life/best-buy/nordvpn-contract/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sun, 04 Oct 2026 15:39:34 +0000</pubDate>
				<category><![CDATA[買ってよかったもの]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8993</guid>

					<description><![CDATA[海外でTVerやU-NEXTなど動画コンテンツを楽しみたい。そこでVPNを契約したいけど、こんなことで迷っていませんか？ この記事ではそうした疑問に答えるために、契約からiPhoneで接続するまでの手順と、自動更新の止め [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">海外でTVerやU-NEXTなど動画コンテンツを楽しみたい。<br>そこでVPNを契約したいけど、こんなことで迷っていませんか？</p>



<ul class="wp-block-list">
<li>契約の手順が分からず、どのようにすればよいか分からない</li>



<li>契約したあとにやめたくなったとき、きちんと解約できるのか不安</li>



<li>「30日間返金保証」があると聞くけれど、条件がよく分からない</li>



<li>iPhoneで使うには、何をすればいいのか知りたい</li>
</ul>



<p class="wp-block-paragraph">この記事ではそうした疑問に答えるために、<strong>契約からiPhoneで接続するまでの手順</strong>と、<strong>自動更新の止め方</strong>、<strong>返金の条件</strong>を、実際の画面でまとめます。</p>



<p class="wp-block-paragraph">筆者は、飛行機搭乗の数十分前から契約を始めましたが離陸前までに契約できました。スマホから短い時間で簡単ですので是非契約をしてみて下さい。</p>



<div class="wp-block-cocoon-blocks-button-wrap-1 aligncenter btn-wrap btn-wrap-block button-block btn-wrap-m btn-wrap-circle btn-wrap-shine has-background has-light-green-background-color"><a rel="nofollow" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+66OZ6">NordVPNを見てみる</a>
<img decoding="async" border="0" width="1" height="1" src="https://www13.a8.net/0.gif?a8mat=4B88ST+198YR6+3YFI+66OZ6" alt=""></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8993" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">NordVPNを契約した理由</a></li><li class="rtoc-item"><a href="#rtoc-2">契約前に確認すること</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-3">契約手順（ステップごと）</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-4">解約・自動更新停止を止める方法</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-5">公式サイト経由で契約した場合</a></li><li class="rtoc-item"><a href="#rtoc-6">30日間返金保証を使うには</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-7">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">NordVPNを契約した理由</h2>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson.webp" alt="" class="wp-image-8999" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-reson-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">私がVPNを契約したきっかけはドイツへの留学です。</p>



<p class="wp-block-paragraph">ドイツへは研究のために留学をしましたが、そこで研究をする前に一度研究室へのあいさつ回りでドイツへ渡航しました。</p>



<p class="wp-block-paragraph">しかし現地ではU-NEXTやTVerを始め日本の動画サービスが使えませんでした。YouTube、Twitter、Instagramは見られても、それ以外のアプリは見られず、不便に感じました。</p>



<p class="wp-block-paragraph">そこで<strong>ドイツでの接続が安定して接続できる</strong>情報を知り、2回目の渡航では<a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>を契約しました。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box alert-box">
<p class="wp-block-paragraph">日本の動画配信サービスを海外から見られるかどうかは、各サービスの利用規約や配信地域の決まりによって変わります。利用する前に、各サービスの規約を確認してください。</p>
</div>



<h2 id="rtoc-2"  class="wp-block-heading">契約前に確認すること</h2>



<figure class="wp-block-image size-full"><img decoding="async" width="1376" height="768" src="https://alicia-ing.com/wp-content/uploads/2026/10/contact-ways.webp" alt="" class="wp-image-9000" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/contact-ways.webp 1376w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-ways-300x167.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-ways-767x428.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-ways-1024x572.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-ways-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-ways-320x180.webp 320w" sizes="(max-width: 1376px) 100vw, 1376px" /></figure>



<p class="wp-block-paragraph">契約の前に、次の3つを用意しておくとスムーズです。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">項目</th><th class="has-text-align-left" data-align="left">内容</th></tr></thead><tbody><tr><td>メールアドレス</td><td>アカウント作成とログインに使います</td></tr><tr><td>支払い方法</td><td>契約時に選びます（使える支払い方法は公式サイトで確認してください）</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">&nbsp;どこで契約したかによって、あとで解約や返金をする場所が変わります。公式サイトで契約すれば手続きは<a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>側で行えますが、Apple（App Store）などを経由して契約すると、解約や返金は購入元で行う必要があります。</p>



<p class="wp-block-paragraph">詳しくは後半の「解約・返金」で説明します。</p>



<p class="wp-block-paragraph">私は、あとで気に入らなかったときに30日以内に返金してもらえるよう、アプリを入れる前にブラウザで「NordVPN」と検索して、<strong>公式サイトから直接契約</strong>しました。App Store経由だと、返金の手続きが<a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>ではなくAppleになるためです。</p>



<p class="wp-block-paragraph">スマホで契約する人は、先にアプリを入れず、公式サイトから契約することをおすすめします。</p>



<h3 id="rtoc-3"  class="wp-block-heading">契約手順（ステップごと）</h3>



<p class="wp-block-paragraph"><a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>を契約する方法を各ステップごとに説明をします。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">スマホでアクセスする方法</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step1</div><div class="timeline-item-content cf"><div class="timeline-item-title">ページにアクセスしプランを選ぶ</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"></p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step2</div><div class="timeline-item-content cf"><div class="timeline-item-title">アカウント作成</div><div class="timeline-item-snippet"></div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step3</div><div class="timeline-item-content cf"><div class="timeline-item-title">支払い方法を選ぶ</div><div class="timeline-item-snippet"></div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step4</div><div class="timeline-item-content cf"><div class="timeline-item-title">アプリを入れてログイン</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"></p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step5</div><div class="timeline-item-content cf"><div class="timeline-item-title">VPN接続</div><div class="timeline-item-snippet"></div></div></li>
</ul></div>



<h4 class="wp-block-heading">プランを選ぶ</h4>



<p class="wp-block-paragraph">公式サイトの料金ページを開き、使いたい期間のプランを選びます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="1078" src="https://alicia-ing.com/wp-content/uploads/2026/10/plan.webp" alt="" class="wp-image-9004" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/plan.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/10/plan-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/plan-766x431.webp 766w, https://alicia-ing.com/wp-content/uploads/2026/10/plan-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/plan-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/10/plan-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/10/plan-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/10/plan-640x360.webp 640w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<p class="wp-block-paragraph">上の画面は、2026年9月に開いたときの料金ページです。<br>「<strong>1か月プラン</strong>」を選ぶと、ベーシックプランが<strong>月額2,280円</strong>と表示されていました。<br>画面には「<strong>30日間返金保証</strong>」の表示もあります。</p>



<p class="wp-block-paragraph"><strong>私は1か月プランを契約</strong>しました。ドイツには1年もいないため、滞在期間に合わせて月額のプランにしました。</p>



<p class="wp-block-paragraph"><strong>プランは1か月・1年・2年</strong>があり、<strong>長期になるほど割引</strong>が大きくなります。公式サイトで見ると、ベーシックプランの2年プランは月額580円（最初の27か月分。3か月延長つき）でした。ドイツに長く滞在する人は、長期プランのほうがお得だと思います。</p>



<p class="wp-block-paragraph">ただし、これは最初の期間の価格で、更新後は料金が変わる点には注意してください。</p>



<h4 class="wp-block-heading">アカウントを作成する</h4>



<p class="wp-block-paragraph">プランを選んだら、メールアドレスを入力してアカウントを作成します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="1078" src="https://alicia-ing.com/wp-content/uploads/2026/10/account.webp" alt="" class="wp-image-9005" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/account.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/10/account-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/account-766x431.webp 766w, https://alicia-ing.com/wp-content/uploads/2026/10/account-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/account-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/10/account-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/10/account-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/10/account-640x360.webp 640w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<p class="wp-block-paragraph">このメールアドレスは、ログインや契約内容の確認メールの受け取りに使われます。</p>



<h4 class="wp-block-heading">支払い方法を選ぶ</h4>



<p class="wp-block-paragraph">次に支払い方法を選んで支払い情報を入力します。確定ボタンを押すと契約が完了します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="1078" src="https://alicia-ing.com/wp-content/uploads/2026/10/payment.webp" alt="" class="wp-image-9006" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/payment.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/10/payment-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/payment-766x431.webp 766w, https://alicia-ing.com/wp-content/uploads/2026/10/payment-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/payment-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/10/payment-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/10/payment-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/10/payment-640x360.webp 640w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<p class="wp-block-paragraph">&nbsp;支払い方法は<strong>クレジットカード</strong>にしました。返金保証が使えなくなるのが不安で、クレジットカードを選びました。</p>



<p class="wp-block-paragraph">ただ、公式の料金ページやヘルプを確認したところ、返金の条件は「初回購入から30日以内」で、支払い方法によって返金できるかが変わるという記載は見当たりませんでした。</p>



<p class="wp-block-paragraph">支払い方法は、<strong>クレジットカードのほか、PayPalやGoogle Pay、Apple Pay</strong>などが案内されています。入力で迷う場面はありませんでした。</p>



<h4 class="wp-block-heading">アプリを入れてログインする</h4>



<p class="wp-block-paragraph">契約が終わったら、アプリストアで「NordVPN」を検索してインストールします。WindowsやMacでもアプリがあるのでインストールしてください。完了後、先ほど作ったアカウントでログインします。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="1013" src="https://alicia-ing.com/wp-content/uploads/2026/10/Before_connect.webp" alt="" class="wp-image-9007" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/Before_connect.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/10/Before_connect-300x159.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/Before_connect-766x405.webp 766w, https://alicia-ing.com/wp-content/uploads/2026/10/Before_connect-1024x541.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/Before_connect-1536x812.webp 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<p class="wp-block-paragraph">この時点ではまだVPNにつながっていないため「保護されていません」と表示されています。VPNの接続は簡単で、<strong>「すべてのロケーションで検索」で日本を選択</strong>するか、<strong>最近の履歴</strong>から選んでください。</p>



<p class="wp-block-paragraph">ホーム画面の<strong>青いVPNで接続を保護ボタン</strong>を押すと、VPNに接続されます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="1027" src="https://alicia-ing.com/wp-content/uploads/2026/10/connectVPN.webp" alt="" class="wp-image-9008" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/connectVPN.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/10/connectVPN-300x161.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/connectVPN-767x411.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/10/connectVPN-1024x549.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/connectVPN-1536x823.webp 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<p class="wp-block-paragraph">&nbsp;契約したあとすぐに飛行機に乗ったため事前に接続を試すことはできませんでした。それでも、日本のサーバーへの接続は<strong>1回のタップ</strong>でできてとても楽でした。</p>



<p class="wp-block-paragraph">インストールとログインも、ほかのサービスと同じ感覚でできます。パソコンの場合も、アプリ（ファイル）を入れて実行すれば接続できます。私はiPhoneとノートパソコンで、おもに動画を見るときに使っています。</p>



<p class="wp-block-paragraph">他にも外出先Wifiにつなぐとき海外では見ている内容が筒抜けで個人情報が抜き取られてしまうといった問題が起きやすいです。（日本でも野良Wifiにつなぐと被害に遭います。）</p>



<p class="wp-block-paragraph">そこで、<a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>を契約しておくと安全に接続ができます。</p>



<h2 id="rtoc-4"  class="wp-block-heading">解約・自動更新停止を止める方法</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1376" height="768" src="https://alicia-ing.com/wp-content/uploads/2026/10/contact-day.webp" alt="" class="wp-image-9001" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/contact-day.webp 1376w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-day-300x167.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-day-767x428.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-day-1024x572.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-day-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-day-320x180.webp 320w" sizes="(max-width: 1376px) 100vw, 1376px" /></figure>



<p class="wp-block-paragraph"><a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>は、期間が終わると自動的に更新される仕組みです。使わなくなったら更新される前に<strong>自動更新を止める</strong>必要があります。</p>



<p class="wp-block-paragraph">自動更新を止めてもお金が戻るわけではありません。自動更新を止めるとすでに払った期間の終わりまではそのまま使えてその後に更新されなくなります。</p>



<p class="wp-block-paragraph">お金を戻してもらうには、次の「返金」の手続きが別に必要です。</p>



<h3 id="rtoc-5"  class="wp-block-heading">公式サイト経由で契約した場合</h3>



<p class="wp-block-paragraph"><a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>の公式ヘルプによると、手順は次のとおりです。パソコンでもiPhoneでも、アプリではなくブラウザ（iPhoneならSafariなど）でNordアカウントにログインして行います。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="1078" src="https://alicia-ing.com/wp-content/uploads/2026/10/contact.webp" alt="" class="wp-image-9009" srcset="https://alicia-ing.com/wp-content/uploads/2026/10/contact.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-766x431.webp 766w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/10/contact-640x360.webp 640w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<ol class="wp-block-list">
<li>パソコンやスマホのブラウザで、Nordアカウント（my.nordaccount.com）にログインします。</li>



<li>「請求」（billing）のタブを開きます。</li>



<li>自動更新の横にある「キャンセル」を押します。</li>



<li>「自動更新をキャンセル」を選びます。</li>



<li>自動更新の表示が「オフ」に変わります。</li>
</ol>



<h3 id="rtoc-6"  class="wp-block-heading">30日間返金保証を使うには</h3>



<p class="wp-block-paragraph"><a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>には、新しく契約したときに使える<strong>30日間の返金保証</strong>があります。公式ヘルプによる条件は次のとおりです。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">項目</th><th class="has-text-align-left" data-align="left">内容</th></tr></thead><tbody><tr><td>対象</td><td>最初の契約（新規契約）のみ</td></tr><tr><td>期間</td><td>契約から30日以内</td></tr><tr><td>対象外（英語版ヘルプの記載）</td><td>支払いから30日を過ぎた場合／最初の支払いについてすでに返金済みの場合／更新後の支払い</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">&nbsp;日本語版のヘルプには、返金できない理由として「月間サブスクリプションを利用している」という項目もあります。英語版のヘルプには、この項目はありません。一方、料金ページには「すべてのプランには30日間の返金保証が付いています」とあり、1か月プランにも「30日間返金保証」と表示されていました。</p>



<p class="wp-block-paragraph"><strong>1か月プランで返金を考えている人は、申請する前にライブチャットで対象になるか確認する</strong>ことをおすすめします。</p>



<h2 id="rtoc-7"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph"><a rel="nofollow sponsored" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+674EQ">NordVPN</a>は、公式サイトでプランを選び、アカウントを作って支払いをすれば契約できます。契約後はアプリを入れてログインし、「VPNで接続を保護」を押すだけで接続できます。</p>



<p class="wp-block-paragraph">返金を望む場合は契約前に以下の内容を押さえておきたいです。</p>



<ul class="wp-block-list">
<li>自動更新を止めても、返金はされない</li>



<li>返金保証が使えるのは、新規契約から30日以内</li>



<li>契約した場所（公式サイトかApp Storeか）で、解約・返金の手続きをする場所が変わる</li>
</ul>



<div class="wp-block-cocoon-blocks-button-wrap-1 aligncenter btn-wrap btn-wrap-block button-block btn-wrap-m btn-wrap-circle btn-wrap-shine has-background has-light-green-background-color"><a rel="nofollow" target="_self" href="https://px.a8.net/svt/ejp?a8mat=4B88ST+198YR6+3YFI+66OZ6">NordVPNを見てみる</a>
<img decoding="async" border="0" width="1" height="1" src="https://www13.a8.net/0.gif?a8mat=4B88ST+198YR6+3YFI+66OZ6" alt=""></div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/life/best-buy/nordvpn-contract/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity】矢印キーで2Dプレイヤーを1マスずつ移動</title>
		<link>https://alicia-ing.com/programming/unity/2dplayermove/</link>
					<comments>https://alicia-ing.com/programming/unity/2dplayermove/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sun, 27 Sep 2026 04:43:53 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[タイルマップ]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8971</guid>

					<description><![CDATA[昔のRPGのように、キャラクターがマス目にそってカクカクと動く移動するゲームは3Dゲームよりも制作の負担もなく現在もレトロゲームや同人ゲームとして人気が強いです。 Tilemapでマップを作ったあと、「プレイヤーを1マス [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text">本記事を読むと以下の実行ができます</span></div><div class="label-box-content block-box-content box-content">
<p class="wp-block-paragraph">矢印キーで2Dプレイヤーをタイル1マスずつ動かし、長押しでの連続移動と、進む方向に合わせた向きの画像の切り替えができるようになります。</p>



<figure class="wp-block-image size-full"><img decoding="async" src="https://alicia-ing.com/wp-content/uploads/2026/09/complete-1.webp" alt=""/></figure>
</div></div>



<p class="wp-block-paragraph">昔のRPGのように、<strong>キャラクターがマス目にそってカクカクと動く移動するゲーム</strong>は3Dゲームよりも制作の負担もなく現在もレトロゲームや同人ゲームとして人気が強いです。</p>



<p class="wp-block-paragraph">Tilemapでマップを作ったあと、「プレイヤーを1マスずつ動かすにはどうすればいいの？」とつまずく人も多いはずです。</p>



<p class="wp-block-paragraph">本記事では、2dキャラクターの実装として、Input.GetKeyを使ったキー入力から1マスずつの移動・向きの切り替えまでを解説します。キーを押しっぱなしにしたときの連続移動や、2つのキーを同時に押したときの優先順位など、実際に遊ぶと気になる動きにも対応しています。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>3Dのキャラクター移動を解説しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/3dplayermove/" title="【Unity】Rigidbody+CapsuleColliderを用いたプレイヤー移動" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-320x180.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-640x360.webp 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】Rigidbody+CapsuleColliderを用いたプレイヤー移動</div><div class="blogcard-snippet internal-blogcard-snippet">UnityでCharacterControllerからRigidbody+CapsuleColliderへ移動処理を移行する方法を解説。カメラ相対移動、FixedUpdateでの速度制御、移行の判断基準まで紹介します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>
</div>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>矢印キーで2Dキャラクターを1マスずつ動かしたい人</li>



<li>Tilemapで作ったマップの上をプレイヤーに歩かせたい人</li>



<li>unity キー 入力（GetKey・GetKeyDown）の違いと使い分けを知りたい人</li>



<li>キーを押しっぱなしにしたときに、ちょうど良い速さで連続移動させたい人</li>



<li>進む方向に合わせてキャラクターの画像を上下左右に切り替えたい人</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8971" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">Input.GetKey（キー入力）</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-2">GetKey・GetKeyDown・GetKeyUpの違い</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-3">event Action（C#のイベント）で処理をつなぐ</a></li><li class="rtoc-item"><a href="#rtoc-4">SpriteRenderer.spriteで画像を差し替える</a></li><li class="rtoc-item"><a href="#rtoc-5">矢印キーで1マスずつ動く2Dプレイヤー移動</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-6">ソースコード</a></li><li class="rtoc-item"><a href="#rtoc-7">解説</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-8">実装</a></li><li class="rtoc-item"><a href="#rtoc-9">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">Input.GetKey（キー入力）</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey.webp" alt="" class="wp-image-8981" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/input-getkey-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">Input.GetKeyは、<strong>キーボードのキーが押されているかどうか</strong>を調べる関数です。矢印キーでキャラクターを動かす、スペースキーでジャンプする、Escキーでメニューを開くなど、<strong>キーボードで操作するゲーム</strong>のほとんどで使われます。</p>



<p class="wp-block-paragraph">使い方は、調べたいキーをKeyCodeで指定するだけです。矢印キーはそれぞれ次のKeyCodeに対応しています。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>キー</th><th>Keycode</th></tr></thead><tbody><tr><td>↑　上</td><td>KeyCode.UpArrow</td></tr><tr><td>↓　下</td><td>KeyCode.DownArrow</td></tr><tr><td>→　右</td><td>KeyCode.RightArrow</td></tr><tr><td>←　左</td><td>KeyCode.LeftArrow</td></tr></tbody></table></div></figure>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>if (Input.GetKey(KeyCode.RightArrow))
{
    // →キーが押されている間、毎フレーム実行される
}</code></pre></div>



<p class="wp-block-paragraph">キー入力の処理は、毎フレーム呼ばれるUpdate()の中に書きます。</p>



<p class="wp-block-paragraph">参考：<a target="_self" href="https://docs.unity3d.com/ja/current/ScriptReference/Input.GetKey.html">Input.GetKey &#8211; Unity スクリプトリファレンス</a></p>



<h3 id="rtoc-2"  class="wp-block-heading">GetKey・GetKeyDown・GetKeyUpの違い</h3>



<p class="wp-block-paragraph">キー入力を調べる関数は3種類あり、trueを返すタイミングが違います。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">関数</th><th class="has-text-align-left" data-align="left">trueになるタイミング</th><th class="has-text-align-left" data-align="left">主な用途</th></tr></thead><tbody><tr><td>Input.GetKey</td><td>キーを押している間ずっと（毎フレーム）</td><td>押しっぱなしで動き続ける移動・ダッシュ</td></tr><tr><td>Input.GetKeyDown</td><td>キーを押した瞬間の1フレームだけ</td><td>ジャンプ・決定・1回だけの移動</td></tr><tr><td>Input.GetKeyUp</td><td>キーを離した瞬間の1フレームだけ</td><td>ため攻撃の発射・長押しの終了</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">1マスずつ動かしたい場合、GetKeyだけを使うと毎フレーム1マス進んでしまい、一瞬で画面の端まで飛んでいってしまいます。反対にGetKeyDownだけを使うと、押すたびに1マスしか進まず、長い距離を歩くときにキーを何度も叩くことになります。</p>



<p class="wp-block-paragraph">そこで本記事のコードでは、2つを組み合わせています。</p>



<ul class="wp-block-list">
<li><strong>GetKeyDown：</strong> どのキーが「新しく押されたか」を調べる</li>



<li><strong>GetKey：</strong> そのキーが「まだ押され続けているか」を調べ、一定の間隔で連続移動する</li>
</ul>



<h2 id="rtoc-3"  class="wp-block-heading">event Action（C#のイベント）で処理をつなぐ</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/09/event-action.webp" alt="" class="wp-image-8982" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/event-action.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/event-action-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/event-action-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/event-action-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/event-action-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/event-action-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/event-action-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/event-action-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">eventは、<strong>「何かが起きたこと」を他のスクリプトに知らせるためのC#の仕組み</strong>です。Actionと組み合わせると、知らせるときに値（移動方向など）も一緒に渡せます。</p>



<p class="wp-block-paragraph">例えば「キーが押された」ことを入力のスクリプトが知らせ、それを受け取った移動のスクリプトがプレイヤーを動かす、という使い方をします。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>// 知らせる側
public event Action&lt;Vector3&gt; MoveRequested;   // Vector3（方向）を一緒に渡すイベント
MoveRequested?.Invoke(Vector3.up);            // 登録されている処理をまとめて呼ぶ

// 受け取る側
input.MoveRequested += OnMoveRequested;       // 登録
input.MoveRequested -= OnMoveRequested;       // 解除</code></pre></div>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">書き方</th><th class="has-text-align-left" data-align="left">意味</th></tr></thead><tbody><tr><td>event Action</td><td>値を渡さないイベント</td></tr><tr><td>event Action&lt;T></td><td>値を1つ渡すイベント</td></tr><tr><td>event Action&lt;T1, T2></td><td>値を2つ渡すイベント</td></tr><tr><td>?.Invoke(&#8230;)</td><td>登録している処理があれば呼び出す（誰も登録していなければ何もしない）</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">イベントを使うと、入力・移動・画像の切り替えを別々のスクリプトに分けられます。それぞれのスクリプトはお互いの中身を知らなくてよいため、後から「NPCにも同じ移動を使いたい」「入力をゲームパッドに変えたい」となったときに、一部だけを差し替えられます。</p>



<p class="wp-block-paragraph">なお、Unityには<strong>Inspectorから登録できるUnityEvent</strong>もあります。本記事ではコードの中だけで完結させるため、C#のeventを使っています。</p>



<p class="wp-block-paragraph">参考：<a target="_self" href="https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/events/">イベント &#8211; C# プログラミング ガイド（Microsoft Learn）</a></p>



<h2 id="rtoc-4"  class="wp-block-heading">SpriteRenderer.spriteで画像を差し替える</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer.webp" alt="" class="wp-image-8983" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/spriteRenderer-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">SpriteRendererは、<strong>2Dの画像（スプライト）を画面に表示するコンポーネント</strong>です。<br>spriteプロパティに別のスプライトを代入すると、表示している画像をその場で差し替えられます。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>playerRenderer.sprite = spriteUp;   // 上向きの画像に切り替える</code></pre></div>



<p class="wp-block-paragraph">キャラクターの向きを変える方法には、ほかにAnimatorでアニメーションを切り替える方法もあります。</p>



<p class="wp-block-paragraph"><strong>歩きのアニメーションまで作り込みたい場合はAnimatorが向いています</strong>が、上下左右の4枚の画像を切り替えるだけなら、spriteを差し替える方法の方が設定が少なく済みます。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">方法</th><th class="has-text-align-left" data-align="left">向いている場面</th></tr></thead><tbody><tr><td>SpriteRenderer.spriteの差し替え</td><td>上下左右の静止画を切り替えるだけのとき（本記事）</td></tr><tr><td>Animator（Blend Tree）</td><td>方向ごとに歩きのアニメーションを付けたいとき</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>オブジェクトが表示されないエラーについて紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/render-camera/" title="【Unity】2D/3Dオブジェクトが表示されない原因と対処方法" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2024/06/Screen-Space-Camera-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2024/06/Screen-Space-Camera-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2024/06/Screen-Space-Camera-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2024/06/Screen-Space-Camera-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】2D/3Dオブジェクトが表示されない原因と対処方法</div><div class="blogcard-snippet internal-blogcard-snippet">2D/3Dオブジェクトが表示されない原因は、カメラワークの不具合が考えられます。「Screen Space - Camera」にして、MainCameraをアタッチすると正しく表示されます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.11.10</div></div></div></div></a>
</div>



<p class="wp-block-paragraph">参考：<a target="_self" href="https://docs.unity3d.com/ja/current/ScriptReference/SpriteRenderer-sprite.html">SpriteRenderer.sprite &#8211; Unity スクリプトリファレンス</a></p>



<h2 id="rtoc-5"  class="wp-block-heading">矢印キーで1マスずつ動く2Dプレイヤー移動</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/09/keymove.webp" alt="" class="wp-image-8984" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/keymove.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/keymove-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/keymove-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/keymove-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/keymove-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/keymove-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/keymove-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/keymove-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">ここまでに説明したInput.GetKey・event Action・SpriteRenderer.spriteを組み合わせて、Tilemapの上を1マスずつ歩く2Dプレイヤーを作ります。実装する動きは次のとおりです。</p>



<ul class="wp-block-list">
<li><strong>1マスずつ移動：</strong> 矢印キーを押すと、上下左右に1マス分だけ移動する</li>



<li><strong>長押しで連続移動：</strong> キーを押しっぱなしにすると、少し待ってから一定の間隔で進み続ける</li>



<li><strong>同時押しの優先：</strong> 2つのキーを押したときは、後から押したキーの方向へ進む（斜めには進まない）</li>



<li><strong>向きの切り替え：</strong> 進む方向に合わせて、キャラクターの画像を上下左右に切り替える</li>



<li><strong>止まったときの表示：</strong> キーを離したら「待機画像」か「最後に向いた方向」のどちらかを表示する</li>
</ul>



<p class="wp-block-paragraph">処理は役割ごとに5つのスクリプトに分けています。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">スクリプト</th><th class="has-text-align-left" data-align="left">役割</th></tr></thead><tbody><tr><td>PlayerInput.cs</td><td>矢印キーの入力から動く方向を決める</td></tr><tr><td>GridMover.cs</td><td>対象を1マス動かし「動こうとした」「動いた」と知らせる</td></tr><tr><td>PlayerDirectionSprite.cs</td><td>向きに合わせて画像を差し替える</td></tr><tr><td>PlayerSpawner.cs</td><td>ゲーム開始時の位置と向きを決める</td></tr><tr><td>PlayerController.cs</td><td>上の4つをイベントでつなぐ</td></tr></tbody></table></div></figure>



<h3 id="rtoc-6"  class="wp-block-heading">ソースコード</h3>



<h4 class="wp-block-heading">PlayerInput.cs</h4>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using System;
using System.Collections.Generic;
using UnityEngine;

/// &lt;summary&gt;
/// 矢印キーから移動の要求
/// &lt;/summary&gt;
public class PlayerInput : MonoBehaviour
{
    [SerializeField] private float repeatDelay = 0.2f;     
    [SerializeField] private float repeatInterval = 0.1f;  
    private float repeatTimer;      

    public event Action&lt;Vector3&gt; MoveRequested; 
    public event Action Released;              
    //入力キーと方向を対応させる
    private static readonly (KeyCode key, Vector3 direction)[] bindings =
    {
        (KeyCode.UpArrow, Vector3.up),
        (KeyCode.DownArrow, Vector3.down),
        (KeyCode.RightArrow, Vector3.right),
        (KeyCode.LeftArrow, Vector3.left),
    };

    // 押された順に並べたbindingsの添字。最後が現在有効なキー
    private readonly List&lt;int&gt; heldKeys = new List&lt;int&gt;();
    private const int None = -1;  // キーを押していない
    private int CurrentIndex =&gt; heldKeys.Count &gt; 0 ? heldKeys[heldKeys.Count - 1] : None;

    private void Update()
    {
        int previousIndex = CurrentIndex;

        heldKeys.RemoveAll(i =&gt; !Input.GetKey(bindings[i].key));
        for (int i = 0; i &lt; bindings.Length; i++)
        {
            if (Input.GetKeyDown(bindings[i].key) && !heldKeys.Contains(i))
                heldKeys.Add(i);
        }
        
        int currentIndex = CurrentIndex;
        if (currentIndex == None)
        {
            if (previousIndex != None) Released?.Invoke();
            return;
        }

        if (currentIndex != previousIndex)
        {
            repeatTimer = repeatDelay;
            MoveRequested?.Invoke(bindings[currentIndex].direction);
            return;
        }

        repeatTimer -= Time.deltaTime;
        if (repeatTimer &lt;= 0f)
        {
            repeatTimer = repeatInterval;
            MoveRequested?.Invoke(bindings[currentIndex].direction);
        }
    }
}</code></pre></div>



<h4 class="wp-block-heading">GridMover.cs</h4>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using System;
using UnityEngine;

/// &lt;summary&gt;
/// 対象を1マスずつ動かす。向き・移動の通知を行う
/// &lt;/summary&gt;
public class GridMover : MonoBehaviour
{
    [SerializeField] private Transform target;
    [SerializeField] private float gridSize = 1f;

    public event Action&lt;Vector3&gt; MoveAttempted;
    public event Action&lt;Vector3, Vector3&gt; Moved;

    //移動処理
    public bool TryMove(Vector3 direction)
    {
        if (direction == Vector3.zero || target == null) return false;

        MoveAttempted?.Invoke(direction);

        Vector3 nextPos = target.position + direction * gridSize; //移動先

        target.position = nextPos;  //位置更新
        Moved?.Invoke(nextPos, direction);
        return true;
    }
}
</code></pre></div>



<h4 class="wp-block-heading">PlayerDirectionSprite.cs</h4>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using UnityEngine;

/// &lt;summary&gt;
/// プレイヤーの進行で画像差し替え
/// &lt;/summary&gt;
public class PlayerDirectionSprite : MonoBehaviour
{
    //止まっているときの状態
    private enum IdleFacingMode
    {
        IdleSprite, //待機
        LastDirection //最後に向いている方向
    }

    [SerializeField] private SpriteRenderer playerRenderer;
    [SerializeField] private Sprite spriteIdle;
    [SerializeField] private Sprite spriteUp;
    [SerializeField] private Sprite spriteDown;
    [SerializeField] private Sprite spriteLeft;
    [SerializeField] private Sprite spriteRight;
    [SerializeField] private IdleFacingMode idleFacingMode = IdleFacingMode.LastDirection;

    private Vector3 lastFacingDirection = Vector3.zero;

    //指定した方向を向く
    public void Face(Vector3 direction)
    {
        if (direction == Vector3.zero) return; 

        lastFacingDirection = direction;
        SetSprite(GetSpriteForDirection(direction));
    }

    //止まったときの画像にする
    public void ShowIdle()
    {
        bool hasLastFacing = lastFacingDirection != Vector3.zero;
        bool keepLastFacing = idleFacingMode == IdleFacingMode.LastDirection && hasLastFacing;

        SetSprite(keepLastFacing ? GetSpriteForDirection(lastFacingDirection) : null);
    }

    //画像の差し替え
    private void SetSprite(Sprite sprite)
    {
        if (playerRenderer == null) return;

        Sprite nextSprite = sprite ?? spriteIdle;
        if (nextSprite != null && playerRenderer.sprite != nextSprite)
            playerRenderer.sprite = nextSprite;
    }

    //対応する画像を呼び出す
    private Sprite GetSpriteForDirection(Vector3 direction)
    {
        if (direction == Vector3.up && spriteUp != null) return spriteUp;
        if (direction == Vector3.down && spriteDown != null) return spriteDown;
        if (direction == Vector3.left && spriteLeft != null) return spriteLeft;
        if (direction == Vector3.right && spriteRight != null) return spriteRight;
    
        return null;
    }
}
</code></pre></div>



<h4 class="wp-block-heading">PlayerSpawner.cs</h4>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using UnityEngine;

/// &lt;summary&gt;
/// シーン開始時のプレイヤーの位置と向きを決める
/// &lt;/summary&gt;
public class PlayerSpawner : MonoBehaviour
{
    [SerializeField] private Transform target;
    [SerializeField] private Vector3 startPosition = new Vector3(0.5f, 0.5f, 0f); 

    // 開始位置に置き、開始時の向きを startFacing に入れる
    public void Spawn(out Vector3 startFacing)
    {
        if (target == null) target = transform;

        target.position = startPosition;
        startFacing = Vector3.zero;
    }
}
</code></pre></div>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">PlayerController.cs</h4>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using UnityEngine;

/// &lt;summary&gt;
/// プレイヤーの各コンポーネントの接続
/// 入力 → 移動 → 向きの画像
/// &lt;/summary&gt;
public class PlayerController : MonoBehaviour
{
    [SerializeField] private PlayerInput input;
    [SerializeField] private GridMover mover;
    [SerializeField] private PlayerSpawner spawner;
    [SerializeField] private PlayerDirectionSprite directionSprite; // 向きスプライト制御

    // イベントの登録/解除
    private void OnEnable()
    {
        if (input != null)
        {
            input.MoveRequested += OnMoveRequested; 
            input.Released += OnReleased;
        }
        if (mover != null)
        {
            mover.MoveAttempted += OnMoveAttempted;
        }
    }

    private void OnDisable()
    {
        if (input != null)
        {
            input.MoveRequested -= OnMoveRequested;
            input.Released -= OnReleased;
        }
        if (mover != null)
        {
            mover.MoveAttempted -= OnMoveAttempted;
        }
    }

    private void Start()
    {
        Vector3 startFacing = Vector3.zero;
        if (spawner != null) spawner.Spawn(out startFacing);

        if (directionSprite == null) return;
        if (startFacing == Vector3.zero) directionSprite.ShowIdle();
        else directionSprite.Face(startFacing);
    }

    ///イベントを受け取る
    private void OnMoveRequested(Vector3 direction) =&gt; mover?.TryMove(direction);
    private void OnReleased() =&gt; directionSprite?.ShowIdle();
    private void OnMoveAttempted(Vector3 direction) =&gt; directionSprite?.Face(direction);
}
</code></pre></div>



<h3 id="rtoc-7"  class="wp-block-heading">解説</h3>



<ul class="wp-block-list">
<li><strong>名前空間（モジュール）</strong></li>
</ul>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">名前空間</th><th class="has-text-align-left" data-align="left">使っている理由</th></tr></thead><tbody><tr><td>UnityEngine</td><td>MonoBehaviour・Input・Vector3・SpriteRendererなど、Unityの基本機能を使うため</td></tr><tr><td>System</td><td>イベントの型Actionを使うため（PlayerInput・GridMover）</td></tr><tr><td>System.Collections.Generic</td><td>押しているキーを順番に覚えるList&lt;int>を使うため（PlayerInput）</td></tr></tbody></table></div></figure>



<ul class="wp-block-list">
<li><strong><strong>イベント</strong></strong></li>
</ul>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">スクリプト</th><th class="has-text-align-left" data-align="left">イベント</th><th class="has-text-align-left" data-align="left">知らせる内容</th></tr></thead><tbody><tr><td>PlayerInput</td><td>MoveRequested</td><td>「この方向に動きたい」（方向）</td></tr><tr><td>PlayerInput</td><td>Released</td><td>「矢印キーがすべて離された」</td></tr><tr><td>GridMover</td><td>MoveAttempted</td><td>「この方向に動こうとした」（方向）</td></tr><tr><td>GridMover</td><td>Moved</td><td>「動いた」（移動後の位置・方向）</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">処理の流れをまとめると、次のようになります。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-plain"><code>[PlayerInput] 矢印キーを押す → MoveRequested
      ↓
[PlayerController] OnMoveRequested → GridMover.TryMove()
      ↓
[GridMover] MoveAttempted → 1マス移動 → Moved
      ↓
[PlayerController] OnMoveAttempted → PlayerDirectionSprite.Face()（画像を切り替え）

[PlayerInput] キーを離す → Released → PlayerDirectionSprite.ShowIdle()</code></pre></div>



<h4 class="wp-block-heading">キー長押しで連続移動する（repeatDelay・repeatInterval）</h4>



<p class="wp-block-paragraph">PlayerInputのUpdate()では、キーを押したときと、押し続けているときで処理を分けています。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>// 有効なキーが変わった：即移動
if (currentIndex != previousIndex)
{
    repeatTimer = repeatDelay;
    MoveRequested?.Invoke(bindings[currentIndex].direction);
    return;
}

//同じキーを押し続ける
repeatTimer -= Time.deltaTime;
if (repeatTimer &lt;= 0f)
{
    repeatTimer = repeatInterval;
    MoveRequested?.Invoke(bindings[currentIndex].direction);
}
</code></pre></div>



<p class="wp-block-paragraph">キーを押した瞬間はすぐに1マス進み、タイマーにrepeatDelay（0.2秒）をセットします。そのまま押し続けると、タイマーが0になったところで次の1マスに進み、以降はrepeatInterval（0.1秒）ごとに進みます。</p>



<p class="wp-block-paragraph">パソコンでキーを押しっぱなしにしたとき、1文字目のあとに少し間が空いてから文字が連続で入力されるのと同じ仕組みです。最初に少し待つことで、<strong>「1マスだけ動きたかったのに2マス進んでしまった」という誤操作を防げます。</strong></p>



<p class="wp-block-paragraph">Time.deltaTime（前のフレームからの経過時間）を引いているため、フレームレートが変わっても同じ速さで進みます。<strong>歩く速さを変えたいときは、InspectorでRepeat Intervalの値を調整</strong>してください。値を小さくするほど速く歩きます。</p>



<h4 class="wp-block-heading">キー同時押しの優先度</h4>



<p class="wp-block-paragraph">2つの矢印キーを同時に押したときにどちらへ進むかは、heldKeysリストで決めています。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>//リスト更新（離されたキーを外し、新しく押されたキーを末尾に追加）
heldKeys.RemoveAll(i =&gt; !Input.GetKey(bindings[i].key));
for (int i = 0; i &lt; bindings.Length; i++)
{
    if (Input.GetKeyDown(bindings[i].key) && !heldKeys.Contains(i))
        heldKeys.Add(i);
}</code></pre></div>



<ol class="wp-block-list">
<li>RemoveAllで、もう押されていないキーをリストから外す</li>



<li>GetKeyDownで新しく押されたキーを見つけ、リストの<strong>末尾</strong>に追加する</li>
</ol>



<p class="wp-block-paragraph">リストの末尾が「一番最後に押したキー」になり、CurrentIndexはこの末尾のキーを返します。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>private int CurrentIndex =&gt; heldKeys.Count &gt; 0 ? heldKeys[heldKeys.Count - 1] : None;</code></pre></div>



<p class="wp-block-paragraph">例えば、→キーを押しながら↑キーを押すと↑方向へ進みます。そのあと↑キーだけを離すと、リストには→キーが残っているため、すぐに→方向へ戻って進みます。</p>



<p class="wp-block-paragraph">入力をif文で上から順に調べる書き方だと、「↑と→を同時に押すと、いつも↑が勝つ」「同時に押すと斜めに進む」といった動きになりがちです。押した順番を覚えておくことで、プレイヤーの操作に素直に反応する移動になります。</p>



<h2 id="rtoc-8"  class="wp-block-heading">実装</h2>



<p class="wp-block-paragraph">5つのスクリプトは、プレイヤーのオブジェクトと、画像を表示するオブジェクトにアタッチします。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="967" src="https://alicia-ing.com/wp-content/uploads/2026/09/attach-2.webp" alt="" class="wp-image-8990" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/attach-2.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-2-300x151.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-2-767x387.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-2-1024x517.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-2-1536x775.webp 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<p class="wp-block-paragraph">各スクリプトは[RequireComponent]を使っていないため、必要なコンポーネントは自動で追加されません。SpriteRendererの追加と、PlayerControllerの参照の設定は、忘れずに手動で行ってください。</p>



<h2 id="rtoc-9"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">本記事では、Tilemapの上で2Dプレイヤーを矢印キーで1マスずつ動かす方法として、次の内容を解説しました。</p>



<ul class="wp-block-list">
<li>Input.GetKeyとGetKeyDownを組み合わせて、押した瞬間の移動と長押しの連続移動を作る</li>



<li>押したキーの順番をListで覚えて、同時押しでは後から押したキーを優先する</li>



<li>SpriteRenderer.spriteを差し替えて、進む方向に合わせて画像を切り替える</li>
</ul>



<p class="wp-block-paragraph">スクリプトを役割ごとに分けているため、ここから機能を足していくのも簡単です。次のステップとして、GridMoverに壁の判定を加えて「壁の方を向くだけで進めない」動きにしたり、Movedイベントを使ってマップの端で別のシーンへ切り替えたりすると、<strong>RPGのマップ移動らしく</strong>なります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/unity/2dplayermove/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity】Input Systemでゲームパッド対応</title>
		<link>https://alicia-ing.com/programming/unity/gamepad-player/</link>
					<comments>https://alicia-ing.com/programming/unity/gamepad-player/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sat, 26 Sep 2026 12:01:56 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8956</guid>

					<description><![CDATA[Unityでプレイヤー操作実装する際に、キーボード操作だけでなく「ゲームパッド（コントローラー）にも対応したい」という場面が出てきます。 特にアクションゲームやプラットフォーマーでは、スティックでの移動とボタンでのジャン [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text">本記事を読むと以下の実行ができます</span></div><div class="label-box-content block-box-content box-content">
<p class="wp-block-paragraph">Input SystemのInputActionReferenceを使って、ゲームパッドでキャラクターの移動とジャンプを操作できるようになります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="960" height="540" src="https://alicia-ing.com/wp-content/uploads/2026/09/complete.webp" alt="" class="wp-image-8967" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/complete.webp 960w, https://alicia-ing.com/wp-content/uploads/2026/09/complete-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/complete-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/complete-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/complete-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/complete-640x360.webp 640w" sizes="(max-width: 960px) 100vw, 960px" /></figure>
</div></div>



<p class="wp-block-paragraph">Unityでプレイヤー操作実装する際に、キーボード操作だけでなく「ゲームパッド（コントローラー）にも対応したい」という場面が出てきます。</p>



<p class="wp-block-paragraph">特にアクションゲームやプラットフォーマーでは、スティックでの移動とボタンでのジャンプはほぼ必須の操作です。</p>



<p class="wp-block-paragraph">本記事では、Unityの新しいInput SystemとInputActionReferenceを使い、移動・ジャンプという最小構成でゲームパッド対応を実装する方法を分かりやすく解説します。</p>



<p class="wp-block-paragraph">Gamepad.currentを直接参照する方法やPlayerInputコンポーネントに依存する方法とは違う、疎結合で使い回しやすい設計です。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>マウス操作の導入を紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/mouse-input/" title="【Unity】マウス操作をゲームに導入する画面クリックで処理" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2022/12/mouse-input-1-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2022/12/mouse-input-1-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2022/12/mouse-input-1-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2022/12/mouse-input-1-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】マウス操作をゲームに導入する画面クリックで処理</div><div class="blogcard-snippet internal-blogcard-snippet">UnityでCSVのテキストをマウスクリックで１つずつ進めるには、if文でメソッド「Input.GetMouseButtonDown(0)」を使用します。ノベルゲームは画面のクリック回数に応じてテキストを表示するシステムに近づきます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Unityでゲームパッド（コントローラー）対応を実装したい人</li>



<li>新しいUnity Input Systemの基本的な使い方を知りたい人</li>



<li>InputActionReferenceを使った疎結合な入力処理の設計を学びたい人</li>



<li>Gamepad.currentを直接参照するコードから卒業したい人</li>



<li>ジャンプ入力の判定でバグが起きて困っている人</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8956" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">Input System</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-2">Input Systemパッケージの導入</a></li><li class="rtoc-item"><a href="#rtoc-3">Input Actionsアセットとゲームパッドのバインディング設定</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-4">InputActionReference</a></li><li class="rtoc-item"><a href="#rtoc-5">InputActionReferenceで実装する移動・ジャンプ入力</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-6">ソースコード</a></li><li class="rtoc-item"><a href="#rtoc-7">解説</a></li><li class="rtoc-item"><a href="#rtoc-8">InputActionReferenceでアクションを参照</a></li><li class="rtoc-item"><a href="#rtoc-9">移動入力をVector2で取得する</a></li><li class="rtoc-item"><a href="#rtoc-10">ジャンプ入力を1フレームだけ検知する（WasPressedThisFrame）</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-11">実演</a></li><li class="rtoc-item"><a href="#rtoc-12">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">Input System</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/09/Input-System.webp" alt="" class="wp-image-8960" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/Input-System.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-System-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-System-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-System-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-System-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-System-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-System-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-System-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">Input Systemは、キーボード・マウス・ゲームパッドなどの入力をまとめて扱える、Unityの新しい入力の仕組みです。</p>



<p class="wp-block-paragraph">XboxコントローラーやPlayStationコントローラー（DualSense）などのゲームパッドに対応したいときや、同じ操作をキーボードとゲームパッドの両方で行えるようにしたいときに使います。</p>



<p class="wp-block-paragraph">従来の<strong>Input.GetAxis()</strong>などを使う古い入力システム（Input Manager）でもある程度のゲームパッド対応は可能でしたが、デバイスごとの差異を吸収しづらく、<strong>コードが複雑になりがち</strong>でした。</p>



<p class="wp-block-paragraph">Input Systemでは、実際の入力デバイスと、ゲーム内の意味（「移動する」「ジャンプする」）を<strong>Input Actionという単位</strong>で分けられます。そのため、デバイスが変わってもコード側を変更せずに済みます。</p>



<p class="wp-block-paragraph">Input Systemを使うには、パッケージの導入と、入力を定義するInput Actionsアセットの作成が必要です。</p>



<p class="wp-block-paragraph">参考：<a target="_self" href="https://docs.unity3d.com/ja/current/Manual/com.unity.inputsystem.html">Input System &#8211; Unity マニュアル</a></p>



<h3 id="rtoc-2"  class="wp-block-heading">Input Systemパッケージの導入</h3>



<p class="wp-block-paragraph">Unity Input Systemは標準では有効になっていないため、<strong>Package Managerからインストール</strong>する必要があります。</p>



<ol class="wp-block-list">
<li>メニューから&nbsp;Window &gt; Package Manager&nbsp;を開きます</li>



<li>検索欄で「Input System」を検索し、Install&nbsp;をクリックします</li>



<li>インストール後、「新しい入力システムに切り替えますか？」という確認ダイアログが表示されるので&nbsp;Yes&nbsp;を選択します（Unityの再起動が必要です）</li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="980" src="https://alicia-ing.com/wp-content/uploads/2026/09/packageManager.webp" alt="" class="wp-image-8961" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/packageManager.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/09/packageManager-300x153.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/packageManager-767x392.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/09/packageManager-1024x523.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/packageManager-1536x785.webp 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box alert-box">
<p class="wp-block-paragraph">Yesを選ぶと、Edit &gt; Project Settings &gt; Player &gt; Active Input Handling が Input System Package (New) に切り替わります。従来のInput Managerを使うコードが他にある場合は、動作しなくなる点に注意してください。両方を併用したい場合は Both を選択します。</p>
</div>



<h3 id="rtoc-3"  class="wp-block-heading">Input Actionsアセットとゲームパッドのバインディング設定</h3>



<p class="wp-block-paragraph">次に、実際の入力を定義するInput Actionsアセットを作成します。</p>



<ol class="wp-block-list">
<li>Projectウィンドウで右クリックし、Create &gt; Input Actions を選択してアセットを作成します</li>



<li>作成したアセットをダブルクリックしてエディタを開きます</li>



<li>Action Mapsに「Player」などの名前でマップを作成します</li>
</ol>



<p class="wp-block-paragraph">各アクションの+ボタンからバインディングを追加し、Listen機能を使って実際にゲームパッドを操作するとバインディング候補が自動検出されるので、それを選択すると設定が楽になります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1360" height="562" src="https://alicia-ing.com/wp-content/uploads/2026/09/Input-Actions.webp" alt="" class="wp-image-8962" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/Input-Actions.webp 1360w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-Actions-300x124.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-Actions-767x317.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/09/Input-Actions-1024x423.webp 1024w" sizes="(max-width: 1360px) 100vw, 1360px" /></figure>



<p class="wp-block-paragraph">設定が終わったら忘れずにSave Assetをクリックしてください。</p>



<h2 id="rtoc-4"  class="wp-block-heading">InputActionReference</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference.webp" alt="" class="wp-image-8963" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/InputActionReference-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">InputActionReferenceは、Input Actionsアセットの中にある特定のInput Actionを、Inspectorから参照するための型です。スクリプトにアクション名を文字列で書かずに、「どのアクションを使うか」をInspectorで選べます。</p>



<figure class="wp-block-table is-style-regular"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>方法</th><th>特徴</th></tr></thead><tbody><tr><td>Gamepad.currentを直接参照</td><td>コード量は少ないが、デバイスの差し替えや複数デバイス対応がしづらい</td></tr><tr><td>PlayerInputコンポーネント</td><td>イベント駆動で扱いやすいが、コンポーネントへの依存度が高くなる</td></tr><tr><td>InputActionReference</td><td>Inspector上でアクションを差し替え可能。専用の入力ハンドラークラスに集約でき、疎結合な設計にしやすい</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">InputActionReferenceは、同じ入力ハンドラークラスを別のキャラクターやプレハブで使い回したり、テスト用に別のInput Actionsアセットへ差し替えたりしやすくなります。</p>



<p class="wp-block-paragraph">参考：<a target="_self" href="https://docs.unity3d.com/Packages/com.unity.inputsystem@1.14/api/UnityEngine.InputSystem.InputActionReference.html">InputActionReference &#8211; Input System ドキュメント</a></p>



<h2 id="rtoc-5"  class="wp-block-heading">InputActionReferenceで実装する移動・ジャンプ入力</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller.webp" alt="" class="wp-image-8964" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/gamepad_Controller-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">本記事では、InputActionReferenceを使って、ゲームパッドの移動（左スティック）とジャンプ（ボタン）を取得する入力ハンドラーを実装します。</p>



<p class="wp-block-paragraph">入力の取得だけを専用クラス（PlayerInputHandler）に切り出し、実際の移動処理・ジャンプ処理からはMoveInput・JumpWasPressedThisFrameという2つのプロパティを参照するだけで済むようにすることで、<strong>キーボードやマウスなど他の入力方式にも差し替えやすい設計</strong>を目指します。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>実装にはこちらのゲームパッドを使用しました。手ごろで普段のゲームでも使うことができます。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/life/best-buy/f310r/" title="F310r-Windows11で使えるゲームパッド実機レビュー" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/08/logi-f310r-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/08/logi-f310r-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/08/logi-f310r-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/08/logi-f310r-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">F310r-Windows11で使えるゲームパッド実機レビュー</div><div class="blogcard-snippet internal-blogcard-snippet">Logicool F310ゲームパッドの実機レビュー。Windows 11対応の設定方法やドライバ情報を解説。スペックや操作手順を紹介。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.03.28</div></div></div></div></a>
</div>


		<div class="pochipp-box"
			data-id="8031"
			data-img="l"
			data-lyt-pc="dflt"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="off"
			data-sale-effect="flash"
			 data-cvkey="ffbaab34"		>
							<div class="pochipp-box__image">
					<a rel="nofollow" target="_self" href="https://www.amazon.co.jp/dp/B00CDG799E?tag=b0420e-22">
						<img loading="lazy" decoding="async" src="https://m.media-amazon.com/images/I/519-CQdsB+L._SL400_.jpg" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a rel="nofollow" target="_self" href="https://www.amazon.co.jp/dp/B00CDG799E?tag=b0420e-22">
						Logicool G ゲームパッド F310r ゲーム コントローラー 有線 USB 接続 FF14 steam PC PS5 PS4 windows F310 国内正規品 【 ファイナルファンタジー XIV 推奨モデル 】					</a>
				</div>

				
									<div class="pochipp-box__price">
						¥2,527						<span>（2026/09/26 19:01時点 | Amazon調べ）</span>
					</div>
				
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a rel="nofollow" target="_self" href="https://www.amazon.co.jp/dp/B00CDG799E?tag=b0420e-22" class="pochipp-box__btn">
					<span>
						Amazon					</span>
									</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a rel="nofollow" target="_self" href="https://af.moshimo.com/af/c/click?a_id=4016319&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FF310r" class="pochipp-box__btn">
					<span>
						楽天市場					</span>
					<img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=4016319&#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 rel="nofollow" target="_self" href="https://shopping.yahoo.co.jp/search?p=F310r" class="pochipp-box__btn">
					<span>
						Yahooショッピング					</span>
									</a>
			</div>
									</div>
								<div class="pochipp-box__logo">
					<img loading="lazy" decoding="async" src="https://alicia-ing.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<h3 id="rtoc-6"  class="wp-block-heading">ソースコード</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerInputHandler : MonoBehaviour
{
    [SerializeField] private InputActionReference moveAction;
    [SerializeField] private InputActionReference jumpAction;

    public Vector2 MoveInput { get; private set; }
    public bool JumpWasPressedThisFrame { get; private set; }

    private void OnEnable()
    {
        moveAction.action.Enable();
        jumpAction.action.Enable();
    }

    private void OnDisable()
    {
        moveAction.action.Disable();
        jumpAction.action.Disable();
    }

    private void Update()
    {
        MoveInput = moveAction.action.ReadValue&lt;Vector2&gt;();
        JumpWasPressedThisFrame = jumpAction.action.WasPressedThisFrame();
    }
}
</code></pre></div>



<h3 id="rtoc-7"  class="wp-block-heading">解説</h3>



<ul class="wp-block-list">
<li><strong>名前空間</strong></li>
</ul>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><tbody><tr><td>UnityEngine</td><td>MonoBehaviour・Vector2など、Unityの基本機能を使うため</td></tr><tr><td>UnityEngine.InputSystem</td><td>InputActionReferenceなど、Input Systemの機能を使うため（パッケージの導入が必要）</td></tr></tbody></table></div></figure>



<ul class="wp-block-list">
<li><strong><strong>フィールド・プロパティ</strong></strong></li>
</ul>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><tbody><tr><td>moveAction</td><td>移動に使うMoveアクションの参照。Inspectorで設定する</td></tr><tr><td>jumpAction</td><td>ジャンプに使うJumpアクションの参照。Inspectorで設定する</td></tr><tr><td>MoveInput</td><td>スティックの傾き（-1〜1のVector2）。ほかのスクリプトから読み取る</td></tr><tr><td>JumpWasPressedThisFrame</td><td>このフレームでジャンプボタンが押されたか。ほかのスクリプトから読み取る</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">MoveInput・JumpWasPressedThisFrameは{ get; private set; }としているため、ほかのスクリプトからは読み取りだけができ、書き換えはできません。</p>



<h3 id="rtoc-8"  class="wp-block-heading">InputActionReferenceでアクションを参照</h3>



<p class="wp-block-paragraph">InputActionReferenceは、Input Actionsアセット内の特定のInput ActionをInspector上から参照できる型です。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>[SerializeField] private InputActionReference moveAction;
[SerializeField] private InputActionReference jumpAction;</code></pre></div>



<p class="wp-block-paragraph">コード内に直接アクション名を文字列で書く必要がなく、Inspectorから見た目でどのアクションを使っているか確認できます。</p>



<p class="wp-block-paragraph">Gamepad.currentを直接参照する実装と違って、キーボード用のInput ActionsアセットとゲームパッドMap用のアセットを差し替えるだけで入力元を切り替えられます。</p>



<p class="wp-block-paragraph">同じPlayerInputHandlerを別のプレハブで使い回す際にも、参照先のアクションを変えるだけで対応できる点が疎結合設計のメリットです。</p>



<h3 id="rtoc-9"  class="wp-block-heading">移動入力をVector2で取得する</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>MoveInput = moveAction.action.ReadValue&lt;Vector2&gt;();</code></pre></div>



<p class="wp-block-paragraph">MoveアクションはAction TypeをValue（Vector2）に設定しているため、ReadValue()でスティックの<strong>傾き具合をVector2として取得</strong>できます。x軸が左右、y軸が上下の入力値（-1〜1の範囲）です。</p>



<p class="wp-block-paragraph">取得したMoveInputは、別のスクリプト（プレイヤーの移動処理を担うクラスなど）からplayerInputHandler.MoveInputとして参照し、transform.TranslateやRigidbody.linearVelocityなどに渡してキャラクターを動かすといった使い方をします。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>Rigidbodyで移動させる処理はこちらで解説しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/3dplayermove/" title="【Unity】Rigidbody+CapsuleColliderを用いたプレイヤー移動" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-320x180.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/3dplayermove-640x360.webp 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】Rigidbody+CapsuleColliderを用いたプレイヤー移動</div><div class="blogcard-snippet internal-blogcard-snippet">UnityでCharacterControllerからRigidbody+CapsuleColliderへ移動処理を移行する方法を解説。カメラ相対移動、FixedUpdateでの速度制御、移行の判断基準まで紹介します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.07.13</div></div></div></div></a>
</div>



<h3 id="rtoc-10"  class="wp-block-heading">ジャンプ入力を1フレームだけ検知する（WasPressedThisFrame）</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>JumpWasPressedThisFrame = jumpAction.action.WasPressedThisFrame();</code></pre></div>



<p class="wp-block-paragraph">WasPressedThisFrame()は、そのボタンが「このフレームで押された瞬間」かどうかを返すメソッドです。</p>



<p class="wp-block-paragraph">ジャンプのように「押した瞬間に1回だけ処理を実行したい」動作には、このWasPressedThisFrame()を使うのが適切です。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>キャラクターのジャンプ処理はこちらで解説しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/player-jump/" title="【Unity】キャラクターをジャンプさせる自然な動きを実装" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://alicia-ing.com/wp-content/uploads/2026/09/player-jump-320x180.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/player-jump-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/player-jump-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/player-jump-640x360.webp 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】キャラクターをジャンプさせる自然な動きを実装</div><div class="blogcard-snippet internal-blogcard-snippet">本記事を読むと以下の実行ができますRigidbodyを使ったキャラクターのジャンプ実装と、SphereCastによる正確...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.09.20</div></div></div></div></a>
</div>



<h4 class="wp-block-heading">isPressedにしない理由</h4>



<p class="wp-block-paragraph">InputActionにはisPressed（現在押されているかどうか）とWasPressedThisFrame()（このフレームで押された瞬間かどうか）という似た名前のプロパティ・メソッドがあります。</p>



<p class="wp-block-paragraph">ジャンプ処理をisPressedで判定してしまうと、<strong>ボタンを押し続けている間、毎フレーム「押されている」と判定</strong>され続けてしまいます。その結果、Update()が呼ばれるたびにジャンプ処理が実行され、意図せず連続ジャンプしてしまうバグにつながります。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>// 悪い例：ボタンを押している間ずっとtrueになる
if (jumpAction.action.IsPressed())
{
    Jump(); // 毎フレーム呼ばれてしまう
}

// 良い例：押した瞬間の1フレームだけtrueになる
if (jumpAction.action.WasPressedThisFrame())
{
    Jump(); // 1回だけ呼ばれる
}</code></pre></div>



<p class="wp-block-paragraph">ジャンプやポーズメニューの開閉など、「1回の入力につき1回だけ処理したい」動作では、必ずWasPressedThisFrame()を使うようにしましょう。</p>



<p class="wp-block-paragraph">逆に、ダッシュのように「押している間だけ継続する」動作にはisPressedが向いています。用途によって使い分けることが重要です。</p>



<h2 id="rtoc-11"  class="wp-block-heading">実演</h2>



<p class="wp-block-paragraph">空のGameObject、またはプレイヤーオブジェクトにアタッチします。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1917" height="966" src="https://alicia-ing.com/wp-content/uploads/2026/09/Attach-1.webp" alt="" class="wp-image-8965" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/Attach-1.webp 1917w, https://alicia-ing.com/wp-content/uploads/2026/09/Attach-1-300x151.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/Attach-1-768x387.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/09/Attach-1-1024x516.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/Attach-1-1536x774.webp 1536w" sizes="(max-width: 1917px) 100vw, 1917px" /></figure>



<p class="wp-block-paragraph">設定が完了すると、他のスクリプトからplayerInputHandler.MoveInput・playerInputHandler.JumpWasPressedThisFrameを参照するだけで、ゲームパッドからの入力を取得できるようになります。</p>



<h2 id="rtoc-12"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">本記事では、Unity Input SystemのInputActionReferenceを使い、ゲームパッドでの移動とジャンプを実装する方法を解説しました。</p>



<ul class="wp-block-list">
<li>InputActionReferenceをInspectorで参照することで、入力元を差し替えやすい疎結合な設計にできる</li>



<li>移動はReadValue()、ジャンプはWasPressedThisFrame()で取得する</li>



<li>ジャンプなど「1回だけ処理したい」入力はisPressedではなくWasPressedThisFrame()を使う</li>
</ul>



<p class="wp-block-paragraph">今回紹介したPlayerInputHandlerは移動とジャンプの最小構成ですが、同じ考え方でダッシュ・攻撃・ポーズメニューの開閉など他のアクションにも応用できます。</p>



<p class="wp-block-paragraph">まずはこの最小構成で「ゲームパッドで動くもの」を作り、そこから少しずつアクションを増やしていくと理解が深まるのでおすすめです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/unity/gamepad-player/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity】キャラクターをジャンプさせる自然な動きを実装</title>
		<link>https://alicia-ing.com/programming/unity/player-jump/</link>
					<comments>https://alicia-ing.com/programming/unity/player-jump/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sun, 20 Sep 2026 06:10:09 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8940</guid>

					<description><![CDATA[Unityでキャラクターをジャンプさせることはゲーム開発での基礎ですが、「ボタンを押しても反応しない」「空中で何度もジャンプできてしまう」といった問題によくぶつかります。 これは多くの場合、接地判定（キャラクターが地面に [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text">本記事を読むと以下の実行ができます</span></div><div class="label-box-content block-box-content box-content">
<p class="wp-block-paragraph">Rigidbodyを使ったキャラクターのジャンプ実装と、SphereCastによる正確な接地判定を組み合わせて、二段ジャンプや無限ジャンプを起こさない自然なジャンプ動作</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://alicia-ing.com/wp-content/uploads/2026/09/complete.gif" alt="" class="wp-image-8946"/></figure>
</div></div>



<p class="wp-block-paragraph">Unityでキャラクターをジャンプさせることはゲーム開発での基礎ですが、「ボタンを押しても反応しない」「空中で何度もジャンプできてしまう」といった問題によくぶつかります。</p>



<p class="wp-block-paragraph">これは多くの場合、接地判定（キャラクターが地面に着いているかどうかの判定）が不十分なことが原因です。</p>



<p class="wp-block-paragraph">本記事では、RigidbodyとPhysics.SphereCastを使い、CapsuleColliderの実際のサイズに連動した接地判定と、目標到達高さから逆算したジャンプ初速の計算方法をあわせて解説します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Unityでキャラクターのジャンプ処理を実装したい人</li>



<li>AddForceやvelocity直接指定でジャンプを作ったが、二段ジャンプ・無限ジャンプが直らず困っている人</li>



<li>タグ判定やisGroundedだけの簡易な接地判定から、より正確な判定方法にステップアップしたい人</li>



<li>ジャンプの高さを感覚ではなく数値（目標到達高さ）から計算して設定したい人</li>



<li>UpdateとFixedUpdateの役割分担を理解して、物理挙動が絡む処理を正しく設計したい人</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8940" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">ジャンプ実装に必要な要素（SphereCast）とは？</a></li><li class="rtoc-item"><a href="#rtoc-2">SphereCastを使ったジャンプ処理</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-3">ソースコード</a></li><li class="rtoc-item"><a href="#rtoc-4">解説</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-5">実演</a></li><li class="rtoc-item"><a href="#rtoc-6">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">ジャンプ実装に必要な要素（SphereCast）とは？</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="940" src="https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump.webp" alt="" class="wp-image-8947" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump-767x431.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/sphereCast_jump-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">Unityでジャンプ実装を検索すると、「unity rigidbody ジャンプ」「unity 接地判定」といったキーワードで多くの記事がヒットしますが、実装方式は大きく2つの系統に分かれます。</p>



<ol class="wp-block-list">
<li><strong>ジャンプそのものの実装</strong>（AddForceやvelocityでY方向に力・速度を加える）</li>



<li><strong>接地判定の実装</strong>（タグ判定・Raycast・CheckSphere・SphereCast・isGroundedなど）</li>
</ol>



<p class="wp-block-paragraph">この2つは別々に解説されがちですが、実際に「ちゃんと動くジャンプ」を作るには両方を組み合わせる必要があります。</p>



<p class="wp-block-paragraph">特に接地判定が甘いと、空中にいるのにジャンプ入力を受け付けてしまい、二段ジャンプ・無限ジャンプというよくあるバグにつながります。</p>



<p class="wp-block-paragraph">本記事で採用するPhysics.SphereCastは、球（Sphere）を指定方向に飛ばして衝突を検出するUnityの物理判定です。</p>



<p class="wp-block-paragraph">単純なRaycast（線を1本飛ばすだけ）と違い、球という「太さ」を持つ判定なので、地面のわずかな段差や傾斜でも安定して接地を検出できます。</p>



<h2 id="rtoc-2"  class="wp-block-heading">SphereCastを使ったジャンプ処理</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="940" src="https://alicia-ing.com/wp-content/uploads/2026/09/jump.webp" alt="" class="wp-image-8948" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/jump.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/09/jump-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/jump-767x431.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/09/jump-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/jump-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/jump-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/09/jump-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/09/jump-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">今回のジャンプ実装は、以下の4ステップで構成されています。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">ジャンプ処理の実装</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">step1</div><div class="timeline-item-content cf"><div class="timeline-item-title">入力で、ジャンプボタンが押されたかどうかをUpdateで検知する</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"></p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">step2</div><div class="timeline-item-content cf"><div class="timeline-item-title">SphereCastを使い接地判定を行う</div><div class="timeline-item-snippet"></div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">step3</div><div class="timeline-item-content cf"><div class="timeline-item-title">地面以外のコライダーやトリガーを誤検知しないようにする<br></div><div class="timeline-item-snippet"></div></div></li>
</ul></div>



<h3 id="rtoc-3"  class="wp-block-heading">ソースコード</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using UnityEngine;

[RequireComponent(typeof(Rigidbody), typeof(CapsuleCollider), typeof(PlayerInputHandler))]
public class PlayerJump : MonoBehaviour
{
    [SerializeField] private float jumpHeight = 1.5f;
    [SerializeField] private LayerMask groundMask = ~0;

    private Rigidbody rb;
    private CapsuleCollider capsule;
    private PlayerInputHandler input;
    private bool jumpRequested;

    private void Awake()
    {
        rb = GetComponent&lt;Rigidbody&gt;();
        capsule = GetComponent&lt;CapsuleCollider&gt;();
        input = GetComponent&lt;PlayerInputHandler&gt;();
    }

    private void Update()
    {
        if (input.JumpWasPressedThisFrame)
        {
            jumpRequested = true;
        }
    }

    private void FixedUpdate()
    {
        Vector3 velocity = rb.linearVelocity;

        if (jumpRequested && IsGrounded())
        {
            velocity.y = Mathf.Sqrt(jumpHeight * -2f * Physics.gravity.y);
        }
        jumpRequested = false;

        rb.linearVelocity = velocity;
    }

    private bool IsGrounded()
    {
        Vector3 origin = transform.TransformPoint(capsule.center);
        float castRadius = capsule.radius * 0.9f;
        float castDistance = capsule.height * 0.5f + 0.15f;
        return Physics.SphereCast(origin, castRadius, Vector3.down, out _, castDistance, groundMask, QueryTriggerInteraction.Ignore);
    }
}
</code></pre></div>



<h3 id="rtoc-4"  class="wp-block-heading">解説</h3>



<ul class="wp-block-list">
<li><strong>入力の検知とFixedUpdateでの物理処理を分離する設計</strong></li>
</ul>



<p class="wp-block-paragraph">ジャンプボタンの入力検知をUpdate、実際の速度変更をFixedUpdateに分けています。</p>



<ul class="wp-block-list">
<li>Updateはフレームごとに呼ばれる（フレームレートに依存する）ため、入力の取りこぼしを防ぐのに向いています。</li>



<li>FixedUpdateは一定の時間間隔で呼ばれる（物理エンジンの更新タイミングに同期する）ため、Rigidbodyを操作する処理はここで行うのが基本です。</li>
</ul>



<p class="wp-block-paragraph">Update内で直接Rigidbodyの速度を書き換えてしまうと、フレームレートによって物理挙動が不安定になることがあります。そこで、UpdateではjumpRequestedというフラグを立てるだけにとどめ、実際の速度変更はFixedUpdateでまとめて行うように設計しています。</p>



<p class="wp-block-paragraph">FixedUpdateの先頭でjumpRequestedを判定した後、必ずfalseにリセットしている点もポイントです。これにより、1回のボタン入力に対してジャンプが1回だけ発生するようになります。</p>



<ul class="wp-block-list">
<li><strong>SphereCastでCapsuleColliderに連動した接地判定を行う</strong></li>
</ul>



<p class="wp-block-paragraph">IsGrounded()メソッドが接地判定の中心部分です。単純に固定の半径・距離を指定するのではなく、CapsuleColliderのプロパティから動的に計算しています。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>Vector3 origin = transform.TransformPoint(capsule.center);
float castRadius = capsule.radius * 0.9f;
float castDistance = capsule.height * 0.5f + 0.15f;</code></pre></div>



<ul class="wp-block-list">
<li>origin：capsule.center（ローカル座標）をTransformPointでワールド座標に変換し、キャラクターの中心からキャストを開始します。</li>



<li>castRadius：コライダーの半径そのままだと壁際でわずかに引っかかることがあるため、0.9fを掛けて少し小さめに設定しています。</li>



<li>castDistance：カプセルの半分の高さ（中心から底面まで）に、地面との間に余裕を持たせる0.15fを加えています。</li>
</ul>



<p class="wp-block-paragraph">この値をキャラクターのサイズ（CapsuleCollider）から計算する設計にしておくことで、キャラクターモデルを差し替えてCapsuleColliderのサイズが変わっても、接地判定のコードを書き直す必要がありません。</p>



<ul class="wp-block-list">
<li><strong>ジャンプの初速を目標到達高さから逆算する</strong></li>
</ul>



<p class="wp-block-paragraph">ジャンプの高さを「なんとなくの数値」で調整すると、意図した高さにならず何度も微調整することになります。本実装では、到達させたい高さ（jumpHeight）から必要な初速を逆算しています。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>velocity.y = Mathf.Sqrt(jumpHeight * -2f * Physics.gravity.y);</code></pre></div>



<p class="wp-block-paragraph">これは物理の等加速度運動の公式 v0 = √(2gH) をそのままコードにしたものです。Physics.gravity.yは通常マイナスの値（デフォルトは-9.81）なので、符号を合わせるために-2fを掛けています。</p>



<ul class="wp-block-list">
<li>H：到達させたい高さ（jumpHeight、インスペクターで調整可能）</li>



<li>g：重力加速度（Physics.gravity.yの絶対値）</li>



<li>v0：地面を離れる瞬間に必要な初速（Y方向の速度）</li>
</ul>



<p class="wp-block-paragraph">インスペクター上でjumpHeightの値を1.5から2.0に変えるだけで、「ちょうど2m飛び上がるジャンプ」を数値ベースで作れるようになります。感覚での調整に頼らず、狙った高さを確実に再現できるのがこの計算式の利点です。</p>



<ul class="wp-block-list">
<li>レイヤーマスクとQueryTriggerInteraction.Ignoreで誤検知を防ぐ</li>
</ul>



<p class="wp-block-paragraph">SphereCastはデフォルトのままだと、地面以外のコライダー（アイテムの当たり判定やエフェクト用のトリガーなど）にも反応してしまうことがあります。これを防ぐために2つの仕組みを併用しています。</p>



<ul class="wp-block-list">
<li>groundMask（レイヤーマスク）： SphereCastの判定対象を、あらかじめ設定した「地面」レイヤーのみに絞り込みます。プレイヤー自身や敵、アイテムなどのレイヤーを対象外にできます。</li>



<li>QueryTriggerInteraction.Ignore： IsTriggerが有効なコライダー（当たり判定はあるが物理的にすり抜けるコライダー）を接地判定の対象から除外します。これを指定しないと、トリガーに触れただけで「地面に着地した」と誤判定されることがあります。</li>
</ul>



<p class="wp-block-paragraph">この2つを組み合わせることで、地面用のコライダーだけを確実に検出できるようになります。レイヤーマスクの活用に触れていない競合記事も多いため、意図しない誤検知を防ぎたい場合は必ず設定しておきましょう。</p>



<h2 id="rtoc-5"  class="wp-block-heading">実演</h2>



<p class="wp-block-paragraph">Rigidbody・CapsuleCollider・PlayerInputHandlerを設定済みのプレイヤーオブジェクトにアタッチします（RequireComponentにより、この3つが未設定のオブジェクトにはアタッチできません）。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">アタッチの流れ</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP1</div><div class="timeline-item-content cf"><div class="timeline-item-title">プレイヤーオブジェクトにRigidbody・CapsuleColliderを追加</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"></p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP2</div><div class="timeline-item-content cf"><div class="timeline-item-title">同じオブジェクトにスクリプトをアタッチする</div><div class="timeline-item-snippet"></div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP3</div><div class="timeline-item-content cf"><div class="timeline-item-title">InspectorでJump Height（到達させたい高さ）を設定する</div><div class="timeline-item-snippet"></div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step 4</div><div class="timeline-item-content cf"><div class="timeline-item-title">InspectorでGround Maskに地面用のレイヤーを指定する</div><div class="timeline-item-snippet"></div></div></li>
</ul></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2560" height="1299" src="https://alicia-ing.com/wp-content/uploads/2026/09/attach-scaled.webp" alt="" class="wp-image-8944" srcset="https://alicia-ing.com/wp-content/uploads/2026/09/attach-scaled.webp 2560w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-300x152.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-766x389.webp 766w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-1024x520.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-1536x780.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/09/attach-2048x1039.webp 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></figure>



<h2 id="rtoc-6"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">本記事では、Rigidbodyを使ったUnityのジャンプ実装を、以下の4つのポイントに分けて解説しました。</p>



<ul class="wp-block-list">
<li>入力検知（Update）と物理処理（FixedUpdate）を分離する設計</li>



<li>CapsuleColliderの実サイズに連動したSphereCast接地判定</li>



<li>目標到達高さから初速を逆算するv0 = √(2gH)の計算式</li>



<li>レイヤーマスクとQueryTriggerInteraction.Ignoreによる誤検知防止</li>
</ul>



<p class="wp-block-paragraph"><br>これらを組み合わせることで、二段ジャンプ・無限ジャンプといった典型的なバグを防ぎつつ、狙った高さに正確に跳ぶジャンプ処理を作れます。</p>



<p class="wp-block-paragraph">まずは本記事のコードをそのまま自分のプロジェクトに組み込み、jumpHeightやgroundMaskの値を自分のキャラクターに合わせて調整するところから始めてみてください。</p>



<p class="wp-block-paragraph">接地判定の考え方は壁ジャンプや二段ジャンプなど、他のアクションを追加する際の土台にもなります。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/unity/player-jump/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity】三人称視点を滑らかに追従処理｜Lerp（位置）とSlerp（回転）</title>
		<link>https://alicia-ing.com/programming/unity/third-person-view-player/</link>
					<comments>https://alicia-ing.com/programming/unity/third-person-view-player/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Thu, 16 Jul 2026 09:46:20 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8909</guid>

					<description><![CDATA[3人称視点（TPS/TPP）のゲームを作っていると、カメラをプレイヤーにそのまま追従させただけではカクついたり、キャラクターの動きに機械的に張り付いてしまったりして、なめらかさに欠ける映像になってしまうことがあります。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text">本記事を読むと以下の実行ができます</span></div><div class="label-box-content block-box-content box-content">
<p class="wp-block-paragraph">プレイヤーの後ろから滑らかに追従する、カクつきのない三人称カメラの実装</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://alicia-ing.com/wp-content/uploads/2026/07/complete-1.gif" alt="" class="wp-image-8927"/></figure>
</div></div>



<p class="wp-block-paragraph">3人称視点（TPS/TPP）のゲームを作っていると、カメラをプレイヤーにそのまま追従させただけではカクついたり、キャラクターの動きに機械的に張り付いてしまったりして、なめらかさに欠ける映像になってしまうことがあります。 </p>



<p class="wp-block-paragraph">本記事では、位置はVector3.Lerp、回転はQuaternion.Slerpという2つの異なる補間関数を組み合わせて、自然な三人称カメラの追従処理を実装する方法を解説します。</p>



<p class="wp-block-paragraph"> followSpeedやrotationSpeedなどのパラメータ調整方法や、カメラの動きが不自然になったときのチェックポイントまで、実際に手を動かしながら理解できる内容になっています。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Unityで三人称視点（TPS/TPP）のカメラを実装したい人</li>



<li>Unityのカメラ追従を実装したがカクつく・不自然な動きになって困っている人</li>



<li>Vector3.LerpとQuaternion.Slerpの違いや使い分けを知りたい人</li>



<li>followSpeedやrotationSpeedなどのパラメータをどう調整すればいいか分からない人</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8909" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">三人称カメラの追従処理とは？</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-2">Vector3.LerpとQuaternion.Slerpで実装する三人称カメラ</a></li><li class="rtoc-item"><a href="#rtoc-3">ソースコード</a></li><li class="rtoc-item"><a href="#rtoc-4">解説</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-5">実装</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-6">パラメータ調整ガイド</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-7">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">三人称カメラの追従処理とは？</h2>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking.webp" alt="" class="wp-image-8930" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/camera-tracking-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">三人称カメラ（TPS/TPPカメラ）とは、プレイヤーが操作するキャラクターの背後や斜め上から映すカメラのことです。アクションゲームやオープンワールドゲームなど、多くの3Dゲームで採用されている視点です。</p>



<p class="wp-block-paragraph">三人称カメラの追従処理を作るとき、意識すべきポイントは大きく分けて2つあります。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>要素</th><th>内容</th></tr></thead><tbody><tr><td>位置追従</td><td>カメラのキャラクターを一定距離後ろに保ちつづける処理</td></tr><tr><td>回転の追従</td><td>カメラ向きをcharacter（注視点）へ向け続ける処理</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">transform.positionをそのままキャラクターの位置に代入するだけでは、カメラが一瞬でキャラクターの真後ろにワープしたような、機械的で不自然な映像になってしまいます。</p>



<p class="wp-block-paragraph">そこで、位置と回転それぞれに<strong>補間（インターポレーション）</strong>をかけることで、カメラがワンテンポ遅れてついてくるような、滑らかな追従感を演出します。</p>



<p class="wp-block-paragraph">このとき重要なのが、位置の補間にはVector3.Lerp、回転の補間にはQuaternion.Slerpという異なる関数を使うという点です。</p>



<p class="wp-block-paragraph">位置は直線的な移動なので線形補間（Lerp）で十分ですが、回転は「角度」を扱うため、球面線形補間（Slerp）を使わないと不自然な回転になってしまいます。</p>



<p class="wp-block-paragraph">この違いについてはコードを解説するセクションで詳しく説明します。</p>



<h3 id="rtoc-2"  class="wp-block-heading">Vector3.LerpとQuaternion.Slerpで実装する三人称カメラ</h3>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp.webp" alt="" class="wp-image-8931" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/lerp-slerp-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">三人称カメラの追従処理は、以下の3ステップで実装できます。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">実装までの流れ</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">step1</div><div class="timeline-item-content cf"><div class="timeline-item-title">オブジェクトの配置</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">カメラをキャラクターの子オブジェクトにせず、独立したオブジェクトとして配置する</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">step2</div><div class="timeline-item-content cf"><div class="timeline-item-title">カメラ追従</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">LateUpdate内で、キャラクター位置＋オフセットへVector3.Lerpでカメラを追従させる</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">step3</div><div class="timeline-item-content cf"><div class="timeline-item-title">回転によるカメラ向き合わせる</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">LateUpdate内で、注視点をQuaternion.LookRotationで計算し、Quaternion.Slerpでカメラの向きを滑らかに合わせる</p>
</div></div></li>
</ul></div>



<p class="wp-block-paragraph">カメラをキャラクターの子オブジェクトにしてしまうと、キャラクターの回転がそのままカメラの回転に伝わってしまい、独立した滑らかな動きを付けられなくなります。</p>



<p class="wp-block-paragraph">そのため、カメラはシーン上の独立したオブジェクトとして配置し、スクリプトで位置・回転を毎フレーム計算する構成にします。</p>



<h3 id="rtoc-3"  class="wp-block-heading">ソースコード</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    [SerializeField] private Transform target;
    [SerializeField] private Vector3 offset = new Vector3(0f, 3.2f, -7f);
    [SerializeField] private float followSpeed = 5f;
    [SerializeField] private float rotationSpeed = 5f;
    [SerializeField] private float lookHeight = 1.5f;

    private void LateUpdate()
    {
        if (target == null)
        {
            return;
        }
        Vector3 desiredPosition = target.position + offset;
        transform.position = Vector3.Lerp(transform.position, desiredPosition, followSpeed * Time.deltaTime);

        Vector3 lookPoint = target.position + Vector3.up * lookHeight;
        Quaternion desiredRotation = Quaternion.LookRotation(lookPoint - transform.position);
        transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, rotationSpeed * Time.deltaTime);
    }
}</code></pre></div>



<h3 id="rtoc-4"  class="wp-block-heading">解説</h3>



<ul class="wp-block-list">
<li><strong>位置の追従処理（Vector3.Lerp）</strong></li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>Vector3 desiredPosition = target.position + offset;
transform.position = Vector3.Lerp(transform.position, desiredPosition, followSpeed * Time.deltaTime);</code></pre></div>



<p class="wp-block-paragraph">まずtarget.position + offsetで、「カメラが本来いるべき理想の位置（desiredPosition）」を計算します。</p>



<p class="wp-block-paragraph">offsetは(0, 3.2, -7)のように、キャラクターから見て「上に3.2、後ろに7」といった相対位置を指定するベクトルです。</p>



<p class="wp-block-paragraph">次にVector3.Lerp(現在位置, 理想位置, 割合)で、現在のカメラ位置から理想位置へ少しずつ近づけます。第3引数のfollowSpeed * Time.deltaTimeが「1フレームでどれだけ理想位置に近づくか」の割合です。</p>



<p class="wp-block-paragraph">Time.deltaTimeを掛けることで、フレームレートが変わっても同じ速度で追従するようになります。</p>



<p class="wp-block-paragraph">Vector3.Lerpは2点間を直線的に補間する関数なので、位置の移動には自然にマッチします。<br>これが、いきなりtransform.position = desiredPositionと代入せず、Lerpを使う理由です。</p>



<ul class="wp-block-list">
<li><strong>注視点の回転処理（Quaternion.Slerp）</strong></li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>Vector3 lookPoint = target.position + Vector3.up * lookHeight;
Quaternion desiredRotation = Quaternion.LookRotation(lookPoint - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, rotationSpeed * Time.deltaTime);</code></pre></div>



<p class="wp-block-paragraph">回転の処理も基本的な流れは位置と同じで、「理想の回転（desiredRotation）」を計算してから、現在の回転を少しずつ近づけます。</p>



<p class="wp-block-paragraph">ただし、回転を補間する際はVector3.Lerpではなく<strong>Quaternion.Slerp（球面線形補間）</strong>を使う点に注意してください。</p>



<p class="wp-block-paragraph">回転は「角度」という性質上、直線的な補間（Lerp）をそのまま当てはめると、回転速度にムラが出たり、経由地点でおかしな姿勢を取ったりすることがあります。</p>



<p class="wp-block-paragraph">Quaternion.Slerpは球面上を一定の角速度で補間するため、回転が常に自然な速さで進みます。位置はLerp、回転はSlerpという使い分けは、Unityのカメラ制御において基本となる考え方です。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>Vector3を使った補間・イージングの考え方を紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/easing/" title="【Unity】Vectorを使ったイージング、アニメーション動作" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/03/vector-easing-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/03/vector-easing-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/03/vector-easing-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/03/vector-easing-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】Vectorを使ったイージング、アニメーション動作</div><div class="blogcard-snippet internal-blogcard-snippet">Vector2を使ったスクリプトでアニメーションを作成します。RectTransformで座標を決めて、線形補間「Leap」を実行します。本記事では、マウスのポインターの位置でアニメーションを稼働させるソースコードを公開・解説しています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<ul class="wp-block-list">
<li><strong>LookRotationで注視点を計算する仕組み</strong></li>
</ul>



<p class="wp-block-paragraph">Quaternion.LookRotation(方向ベクトル)は、指定した方向を向く回転（Quaternion）を返す関数です。</p>



<p class="wp-block-paragraph">ここでは、lookPoint &#8211; transform.position（カメラから注視点への方向ベクトル）を渡すことで、「カメラから見て、注視点の方向を向いた回転」を計算しています。</p>



<p class="wp-block-paragraph">lookPointはtarget.position + Vector3.up * lookHeight、つまりキャラクターの位置から少し上にずらした点です。</p>



<p class="wp-block-paragraph">キャラクターの足元をそのまま注視点にすると、カメラが常に下向きになり圧迫感のある画になってしまうため、lookHeightで見上げるような角度にならないよう調整しています。</p>



<ul class="wp-block-list">
<li><strong>LateUpdateを使う理由</strong></li>
</ul>



<p class="wp-block-paragraph">このスクリプトでは、UpdateではなくLateUpdateを使っています。これは三人称カメラの実装において非常に重要なポイントです。</p>



<p class="wp-block-paragraph">Unityでは、シーン内の複数のUpdateがどの順番で実行されるかは保証されていません。もしキャラクターの移動処理と、カメラの追従処理が両方ともUpdateに書かれていた場合、カメラのUpdateがキャラクターのUpdateより先に実行されてしまうことがあります。</p>



<p class="wp-block-paragraph">それにより、カメラは「1フレーム前のキャラクター位置」を基準に追従することになり、映像がカクつく原因になります。</p>



<p class="wp-block-paragraph">LateUpdateは、シーン内のすべてのUpdateが終わった後に必ず呼ばれることが保証されています。そのため、キャラクターの移動処理が確実に終わった後の最新位置を使ってカメラを更新でき、カクつきのない滑らかな追従が実現できます。</p>



<p class="wp-block-paragraph">カメラ制御では「移動処理はUpdate、カメラ追従はLateUpdate」という役割分担を徹底しましょう。</p>



<h2 id="rtoc-5"  class="wp-block-heading">実装</h2>



<p class="wp-block-paragraph">シーン上に独立して配置したカメラオブジェクトにアタッチします。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title"></div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP1</div><div class="timeline-item-content cf"><div class="timeline-item-title">カメラをキャラクターの子オブジェクトにせず、シーン上の独立したオブジェクトとして配置する</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"></p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP2</div><div class="timeline-item-content cf"><div class="timeline-item-title">カメラオブジェクトにスクリプトをアタッチする</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"></p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP3</div><div class="timeline-item-content cf"><div class="timeline-item-title">InspectorのTargetに、追従したいキャラクターのTransformをドラッグ＆ドロップで設定する</div><div class="timeline-item-snippet"></div></div></li>
</ul></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2560" height="1265" src="https://alicia-ing.com/wp-content/uploads/2026/07/attach-scaled.webp" alt="" class="wp-image-8942" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/attach-scaled.webp 2560w, https://alicia-ing.com/wp-content/uploads/2026/07/attach-300x148.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/attach-767x379.webp 767w, https://alicia-ing.com/wp-content/uploads/2026/07/attach-1024x506.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/attach-1536x759.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/attach-2048x1012.webp 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></figure>



<p class="wp-block-paragraph">offset・followSpeed・rotationSpeed・lookHeightはデフォルト値のままでも動作しますが、キャラクターのモデルサイズやゲームのジャンルに応じて調整が必要になることがほとんどです。</p>



<p class="wp-block-paragraph">値の目安は次の「パラメータ調整ガイド」を参照してください。</p>



<h3 id="rtoc-6"  class="wp-block-heading">パラメータ調整ガイド</h3>



<p class="wp-block-paragraph">スクリプトには4つの調整用パラメータがあります。それぞれの値を変えたときに、どのような体感の変化があるかをまとめました。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>パラメータ</th><th>役割</th><th>値を大きくすると</th><th>値を小さくすると</th></tr></thead><tbody><tr><td>followSpeed</td><td>位置の追従の速さ</td><td>キャラクターにピッタリ張り付く</td><td>ワンテンポ遅れてついてくる（重厚感）</td></tr><tr><td>rotationSpeed</td><td>回転の追従の速さ</td><td>向きの切り替えが機敏になる</td><td>ゆったりと視線が追いつく</td></tr><tr><td>lookHeight</td><td>注視点の高さ</td><td>見下ろすような画角になる</td><td>水平に近い、圧迫感のある画角になる</td></tr><tr><td>offset</td><td>カメラの距離・画角</td><td>引きの画（広い視界）</td><td>寄りの画（迫力のある視界）</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>キリのいいパラメータ値に吸着させる機能を紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/slidersnap/" title="【Unity】スライダーを特定の位置にスナップ（吸着）させる方法" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2026/06/slidersnap-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2026/06/slidersnap-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2026/06/slidersnap-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2026/06/slidersnap-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】スライダーを特定の位置にスナップ（吸着）させる方法</div><div class="blogcard-snippet internal-blogcard-snippet">UnityのSliderに任意の位置へのスナップ（吸着）機能を実装する方法を解説。IPointerUpHandlerとonValueChangedを組み合わせ、snapPointsとsnapThresholdで吸着位置・距離を自由に設定できます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.18</div></div></div></div></a>
</div>



<h4 class="wp-block-heading">followSpeed（追従の重さ）</h4>



<p class="wp-block-paragraph">followSpeedは、カメラがキャラクターの理想位置にどれだけ速く近づくかを決める値です。値が大きいほど追従が速く（キャラクターに張り付くような動き）、値が小さいほど追従が遅く（ワンテンポ遅れてついてくる、重厚感のある動き）なります。</p>



<p class="wp-block-paragraph">目安として、アクション性の高いゲームではfollowSpeed = 8〜10程度、じっくり見せたい探索系のゲームではfollowSpeed = 3〜5程度から調整を始めるとよいでしょう。</p>



<p class="wp-block-paragraph">極端に小さくしすぎると、キャラクターが素早く動いたときにカメラが置いていかれ、画面外にキャラクターが消えてしまうことがあるので注意してください。</p>



<h4 class="wp-block-heading">rotationSpeed（回転の追従感）</h4>



<p class="wp-block-paragraph">rotationSpeedは、カメラの向きが理想の回転にどれだけ速く追いつくかを決める値です。この値がfollowSpeedと極端に違うと、後述する「不自然な動き」の原因になりやすいため、基本的には<strong>followSpeedと近い値</strong>からスタートするのがおすすめです。</p>



<h4 class="wp-block-heading">lookHeight（注視点の高さ）</h4>



<p class="wp-block-paragraph">lookHeightは、カメラがキャラクターのどの高さを見つめるかを決める値です。キャラクターの頭上あたり（1.5前後）に設定すると自然な見下ろし角度になり、値を大きくしすぎるとカメラが必要以上に見下ろす形になります。</p>



<p class="wp-block-paragraph">逆に0に近づけると、キャラクターの足元付近を注視点にすることになり、水平に近い圧迫感のある画角になります。</p>



<h4 class="wp-block-heading">offset（カメラ距離・画角）</h4>



<p class="wp-block-paragraph">offsetはキャラクターから見たカメラの相対位置で、(左右, 上下, 前後)のベクトルで指定します。Y成分を大きくするとカメラの高さが上がり、Z成分（マイナス方向）を大きくするとキャラクターとの距離が離れて引きの画になります。</p>



<p class="wp-block-paragraph">壁際でカメラがめり込まないようにする「衝突回避」は本記事のスコープ外としていますが、offsetの距離を調整するだけでも、狭い通路でのめり込みはある程度軽減できます。</p>



<h2 id="rtoc-7"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">本記事では、Unityで三人称カメラの追従処理を実装する方法を解説しました。</p>



<ul class="wp-block-list">
<li>位置の追従にはVector3.Lerp、回転の追従にはQuaternion.Slerpを使う（直線補間と球面補間の使い分け）</li>



<li>Quaternion.LookRotationで注視点への方向を計算し、lookHeightで見上げ角度を調整する</li>



<li>カメラの更新処理はUpdateではなくLateUpdateに書き、実行順序によるカクつきを防ぐ</li>



<li>followSpeedとrotationSpeedは近い値に揃えることで、首振りのような不自然な動きを防げる</li>
</ul>



<p class="wp-block-paragraph">まずは本記事のパラメータの目安値から始めて、実際にゲームを動かしながらfollowSpeed・rotationSpeed・lookHeight・offsetの4つを少しずつ調整し、自分のゲームに合った「気持ちいい」カメラワークを探ってみてください。</p>



<p class="wp-block-paragraph">壁のめり込み対策やCinemachineの活用など、さらに踏み込んだカメラ制御は次のステップとして挑戦してみるとよいでしょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/unity/third-person-view-player/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity】Rigidbody+CapsuleColliderを用いたプレイヤー移動</title>
		<link>https://alicia-ing.com/programming/unity/3dplayermove/</link>
					<comments>https://alicia-ing.com/programming/unity/3dplayermove/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 13:19:16 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8882</guid>

					<description><![CDATA[Unityでキャラクター移動を実装する際、CharacterControllerが使われます。他の物理オブジェクトと自然に衝突させたい、坂道や段差の挙動を物理演算に任せたいといった場面では、CharacterContro [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text">本記事を読むと以下の実行ができます</span></div><div class="label-box-content block-box-content box-content">
<p class="wp-block-paragraph">Rigidbody＋CapsuleColliderだけでカメラ相対移動・回転・落下リスポーンに対応した3Dプレイヤー移動処理を実装できます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://alicia-ing.com/wp-content/uploads/2026/07/complete.gif" alt="" class="wp-image-8889"/></figure>
</div></div>



<p class="wp-block-paragraph">Unityでキャラクター移動を実装する際、CharacterControllerが使われます。他の物理オブジェクトと自然に衝突させたい、坂道や段差の挙動を物理演算に任せたいといった場面では、CharacterControllerだと限界を感じることがあります。</p>



<p class="wp-block-paragraph">本記事では、<strong>Rigidbody＋CapsuleColliderへの移動処理</strong>を、カメラ相対移動・回転処理・落下時のリスポーンまで含めて解説します。unity rigidbody 移動の実装で「Transformによるめり込み」や「カメラのカクつき」に悩んでいる人にも役立つ内容です。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>CharacterControllerからRigidbodyへ移動処理を移行したい人</li>



<li>unity rigidbody 移動の実装方法を知りたい人</li>



<li>CharacterControllerとRigidbodyの違い・使い分けを知りたい人</li>



<li>Rigidbody移動で「Transformによるめり込み」「カメラのカクつき」に困っている人</li>



<li>カメラの向きを基準にした移動（カメラ相対移動）を実装したい人</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8882" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">CapsuleCollider</a></li><li class="rtoc-item"><a href="#rtoc-2">Rigidbody</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-3">Rigidbodyのメリット</a></li><li class="rtoc-item"><a href="#rtoc-4">Rigidbodyが向かないケース</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-5">CharacterControllerとRigidbody＋CapsuleColliderの違い</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-6">なぜCharacterControllerではなくRigidbodyにする理由</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-7">3Dキャラクターの移動処理</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-8">ソースコード</a></li><li class="rtoc-item"><a href="#rtoc-9">解説</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-10">実演</a></li><li class="rtoc-item"><a href="#rtoc-11">よくあるハマりどころと対策</a></li><li class="rtoc-item"><a href="#rtoc-12">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">CapsuleCollider</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider.webp" alt="" class="wp-image-8895" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/CapsuleCollider-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">まず、プレイヤーの当たり判定に使うCapsuleCollider（カプセルコライダー）について説明します。</p>



<p class="wp-block-paragraph">CapsuleColliderは、上下に半球が付いた円柱状の当たり判定です。人型キャラクターの当たり判定としてよく使われており、実はCharacterControllerも内部的にはカプセル形状の判定を使っています。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>Blenderで作成した3Dモデルをキャラクターとして導入する手順を紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/blender-import-material/" title="【Unity】Blenderで作った3Dモデルをインポートする" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/09/blender-import-material-1-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/09/blender-import-material-1-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/09/blender-import-material-1-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/09/blender-import-material-1-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】Blenderで作った3Dモデルをインポートする</div><div class="blogcard-snippet internal-blogcard-snippet">UnityでBlenderで作成した3Dモデルをインポートする方法を紹介します。FBXファイルやOBJ形式のimport、Unity内でのモデルアニメーションの読み込みなどを解説しています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<p class="wp-block-paragraph">Hierarchyでプレイヤーのオブジェクトを選択し、Inspectorの<strong>Add ComponentからPhysics &gt; Capsule Collider</strong>を追加すると導入できます。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="964" height="331" src="https://alicia-ing.com/wp-content/uploads/2026/07/Add_CapsuleCollider.webp" alt="" class="wp-image-8900" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/Add_CapsuleCollider.webp 964w, https://alicia-ing.com/wp-content/uploads/2026/07/Add_CapsuleCollider-300x103.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/Add_CapsuleCollider-768x264.webp 768w" sizes="(max-width: 964px) 100vw, 964px" /></figure>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>説明</th></tr></thead><tbody><tr><td>Radius</td><td>カプセルの半径。キャラクターの横幅方向の判定に影響</td></tr><tr><td>Height</td><td>カプセルの高さ</td></tr><tr><td>Direction</td><td>カプセルの向き（通常はY軸方向）</td></tr><tr><td>Center</td><td>判定の中心位置。オブジェクトの原点からのオフセット</td></tr><tr><td>Material</td><td>摩擦・反発の設定。地面でスムーズに移動させたい場合は摩擦0に近いマテリアルを使うことがあります</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-red-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#e60033"><div class="tab-caption-box-label block-box-label box-label fab-check"><span class="tab-caption-box-label-text block-box-label-text box-label-text">注意</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">CapsuleColliderだけではキャラクターは物理演算の影響を受けません。<strong>次に説明するRigidbodyと組み合わせて</strong>初めて、重力や衝突による移動制御ができるようになります。</p>
</div></div>



<h2 id="rtoc-2"  class="wp-block-heading">Rigidbody</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody.webp" alt="" class="wp-image-8896" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/Rigidbody-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">Rigidbodyは、オブジェクトに物理演算（重力・衝突・力の伝達など）を適用するためのコンポーネントです。<strong>Add ComponentからPhysics &gt; Rigidbody</strong>を追加すると、そのオブジェクトはUnityの物理エンジンの管理下に置かれます。</p>



<p class="wp-block-paragraph">今回紹介するPlayerMove.csのAwake()で設定している値を例に、代表的な設定項目を紹介します。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="967" height="388" src="https://alicia-ing.com/wp-content/uploads/2026/07/Add_Rigidbody.webp" alt="" class="wp-image-8901" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/Add_Rigidbody.webp 967w, https://alicia-ing.com/wp-content/uploads/2026/07/Add_Rigidbody-300x120.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/Add_Rigidbody-768x308.webp 768w" sizes="(max-width: 967px) 100vw, 967px" /></figure>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>値</th><th>役割</th></tr></thead><tbody><tr><td>useGravity</td><td>true</td><td>重力の影響を受けるようにする</td></tr><tr><td>interpolation</td><td>RigidbodyInterpolation.Interpolate</td><td>物理演算（FixedUpdate）と描画（Update）のタイミングのズレを補間し、カメラのカクつきを抑える</td></tr><tr><td>collisionDetectionMode</td><td>CollisionDetectionMode.ContinuousDynamic</td><td>高速移動時に薄い壁などをすり抜けないようにする連続衝突判定</td></tr><tr><td>constraints</td><td>FreezeRotationX | FreezeRotationZ</td><td>X軸・Z軸の回転を固定し、キャラクターが物理演算で倒れてしまわないようにする</td></tr></tbody></table></div></figure>



<h3 id="rtoc-3"  class="wp-block-heading">Rigidbodyのメリット</h3>



<ul class="wp-block-list">
<li>他のRigidbodyを持つオブジェクトと自然に衝突・押し合いができる</li>



<li>坂道や段差の挙動を物理演算にまかせられるため、個別にコードで実装しなくて済む</li>



<li>velocity（速度）やAddForce（力）を使った移動ができ、慣性のある自然な動きを表現しやすい</li>



<li>動く床・爆風による吹き飛ばしなど、他の物理システムと組み合わせやすい</li>
</ul>



<h3 id="rtoc-4"  class="wp-block-heading">Rigidbodyが向かないケース</h3>



<ul class="wp-block-list">
<li>ジャンプの高さや着地位置をフレーム単位で厳密に制御したいシビアなアクションゲーム</li>



<li>ネットワーク対戦などで移動の再現性（決定論的な挙動）が必須な場合</li>



<li>物理演算特有の揺れ・めり込みを避けたい、シンプルな一方向移動のみのケース</li>
</ul>



<p class="wp-block-paragraph">こうしたケースでは、<strong>無理にRigidbodyへ移行せずCharacterControllerを使</strong>う<strong>ほうが扱いやすい</strong>です。移行はあくまで手段であり、目的ではないことに注意してください。</p>



<h2 id="rtoc-5"  class="wp-block-heading">CharacterControllerとRigidbody＋CapsuleColliderの違い</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair.webp" alt="" class="wp-image-8898" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/CharacterController_compair-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">CharacterController rigidbody 違いで検索している人向けに、両者の特徴を比較します。</p>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>項目</th><th>CharacterController</th><th>Rigidbody＋CapsuleCollider</th></tr></thead><tbody><tr><td>移動方法</td><td>Move()&nbsp;/&nbsp;SimpleMove()</td><td>velocity / MovePosition / AddForce</td></tr><tr><td>物理演算</td><td>受けない（独自の疑似物理）</td><td>Unityの物理エンジンに従う</td></tr><tr><td>他オブジェクトとの相互作用</td><td>基本的に一方的に押すのみ</td><td>相互に力を伝え合う（押される・乗る等）</td></tr><tr><td>段差・坂道</td><td>パラメータで個別調整が必要</td><td>物理演算が自然に処理する</td></tr><tr><td>移動の再現性</td><td>高い（決定論的）</td><td>物理演算の影響を受けやすい</td></tr><tr><td>実装の手軽さ</td><td>シンプルで扱いやすい</td><td>設定項目が多く、挙動の理解が必要</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">要するに、CharacterControllerは「移動処理に特化した専用コンポーネント」、Rigidbodyは「物理演算そのものを使って移動も実現するコンポーネント」という違いです。</p>



<h3 id="rtoc-6"  class="wp-block-heading">なぜCharacterControllerではなくRigidbodyにする理由</h3>



<p class="wp-block-paragraph">CharacterControllerからRigidbodyへの移行を検討すべき代表的な判断基準は次の通りです。</p>



<ul class="wp-block-list">
<li>動く床・押せるオブジェクトなど、他の物理オブジェクトとキャラクターを相互作用させたい</li>



<li>坂道・段差の挙動を、個別のコードではなく物理演算にまかせたい</li>



<li>爆風で吹き飛ばす、掴まれて引っ張られるなど、外力による移動を扱いたい</li>



<li>ジャンプや落下の挙動を、他のコンポーネント（例：ジャンプ専用コンポーネント）とY軸だけ分担するような設計にしたい</li>
</ul>



<p class="wp-block-paragraph">逆に、<strong>移動の精密な制御を最優先するアクションゲームでは、CharacterControllerのままのほうが扱いやすい場合も</strong>あります。unity charactercontroller rigidbody 移行を検討するときは、プロジェクトで物理的な相互作用がどれだけ必要かを基準に判断してください。</p>



<h2 id="rtoc-7"  class="wp-block-heading">3Dキャラクターの移動処理</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody.webp" alt="" class="wp-image-8897" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/Reason_Rigidbody-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">本記事では、ここまで説明したRigidbodyとCapsuleColliderを組み合わせて、CharacterControllerを使わない3Dキャラクターの移動処理を実装します。単に位置を動かすだけでなく、以下の3つの動きを備えた、実践で使えるレベルのプレイヤーコントローラーを目指します。</p>



<ul class="wp-block-list">
<li><strong>カメラ相対移動：</strong> カメラが向いている方向を基準に、入力方向を変換して移動する</li>



<li><strong>移動方向への回転：</strong> キャラクターが移動している方向へ滑らかに向きを変える</li>



<li><strong>落下時の自動リスポーン：</strong> マップの外や穴に落下した場合に、指定した位置へ自動的に戻す</li>
</ul>



<p class="wp-block-paragraph">これらはすべて、RigidbodyのFixedUpdate内での速度・回転操作として実装します。</p>



<h3 id="rtoc-8"  class="wp-block-heading">ソースコード</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-file="PlayerMove.cs" data-lang="C#"><code>using UnityEngine;

[RequireComponent(typeof(Rigidbody), typeof(PlayerInputHandler))]
public class PlayerMove : MonoBehaviour
{
    [SerializeField] private Transform cameraTransform;
    [SerializeField] private float moveSpeed = 4f;
    [SerializeField] private float rotationSpeed = 10f;
    [SerializeField] private float fallResetY = -50f;
    [SerializeField] private Vector3 respawnPosition = Vector3.zero;

    private Rigidbody rb;
    private PlayerInputHandler input;
    private Animator animator;

    private Vector3 moveDirection;
    private bool isMoving;

    private void Awake()
    {
        rb = GetComponent&lt;Rigidbody&gt;();
        input = GetComponent&lt;PlayerInputHandler&gt;();
        animator = GetComponentInChildren&lt;Animator&gt;();

        rb.useGravity = true;
        rb.interpolation = RigidbodyInterpolation.Interpolate;
        rb.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
        rb.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ;

        if (cameraTransform == null && Camera.main != null)
        {
            cameraTransform = Camera.main.transform;
        }
    }

    private void Update()
    {
        if (rb.position.y &lt; fallResetY)
        {
            Respawn();
            return;
        }

        moveDirection = CameraRelativeDirection(input.MoveInput);
        isMoving = moveDirection.sqrMagnitude &gt; 0.0001f;

        animator.speed = isMoving ? 1f : 0f;
    }

    private void FixedUpdate()
    {
        if (isMoving)
        {
            Quaternion targetRotation = Quaternion.LookRotation(moveDirection);
            rb.MoveRotation(Quaternion.Slerp(rb.rotation, targetRotation, rotationSpeed * Time.fixedDeltaTime));
        }

        Vector3 horizontalVelocity = moveDirection.normalized * moveSpeed;
        Vector3 velocity = rb.linearVelocity;
        velocity.x = horizontalVelocity.x;
        velocity.z = horizontalVelocity.z;
        rb.linearVelocity = velocity;
    }

    private Vector3 CameraRelativeDirection(Vector2 moveInput)
    {
        if (cameraTransform == null || moveInput.sqrMagnitude &lt; 0.0001f)
        {
            return Vector3.zero;
        }

        Vector3 forward = cameraTransform.forward;
        forward.y = 0f;
        forward.Normalize();

        Vector3 right = cameraTransform.right;
        right.y = 0f;
        right.Normalize();

        return forward * moveInput.y + right * moveInput.x;
    }

    private void Respawn()
    {
        rb.linearVelocity = Vector3.zero;
        rb.angularVelocity = Vector3.zero;
        rb.position = respawnPosition;
        transform.position = respawnPosition;
    }
}</code></pre></div>



<h3 id="rtoc-9"  class="wp-block-heading">解説</h3>



<ul class="wp-block-list">
<li><strong>カメラ相対移動の仕組み</strong></li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>Vector3 forward = cameraTransform.forward;
forward.y = 0f;
forward.Normalize();

Vector3 right = cameraTransform.right;
right.y = 0f;
right.Normalize();

return forward * moveInput.y + right * moveInput.x;</code></pre></div>



<p class="wp-block-paragraph">カメラのforward（前方向）・right（右方向）ベクトルをそのまま使うと、カメラが下や上を向いているときにY成分が混ざってしまい、キャラクターが浮いたり沈んだりする移動方向になってしまいます。</p>



<p class="wp-block-paragraph">そこで、forward.y = 0f・right.y = 0fとしてY成分を打ち消し、XZ平面（水平面）に投影してからNormalize()で正規化しています。こうすることで、カメラがどの角度を向いていても、キャラクターは常に水平方向にのみ移動します。</p>



<p class="wp-block-paragraph">最後に、入力値moveInput.x（左右）・moveInput.y（前後）をそれぞれright・forwardに掛けて合成することで、「カメラの向きを基準にした移動方向」が完成します。この処理を扱った解説記事は少なく、三人称視点のゲームでスティック入力をそのままワールド座標として使ってしまい、カメラを回すと操作方向がズレるという不具合の原因にもなりやすいポイントです。</p>



<ul class="wp-block-list">
<li><strong>FixedUpdateでの速度制御とY軸の分担設計</strong></li>
</ul>



<p class="wp-block-paragraph">移動処理はFixedUpdate()の中で行っています。Unityの物理演算はFixedUpdateのタイミングで実行されるため、RigidbodyのvelocityやMovePositionを操作する処理は必ずFixedUpdateに書く必要があります。Updateで操作すると、フレームレートによって物理演算とのタイミングがズレて挙動が不安定になります。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>Vector3 horizontalVelocity = moveDirection.normalized * moveSpeed;
Vector3 velocity = rb.linearVelocity;
velocity.x = horizontalVelocity.x;
velocity.z = horizontalVelocity.z;
rb.linearVelocity = velocity;</code></pre></div>



<p class="wp-block-paragraph">ここで注目したいのは、velocity.xとvelocity.zだけを書き換えて、velocity.yにはあえて触れていない点です。rb.linearVelocity（旧velocity）を丸ごと上書きしてしまうと、ジャンプや落下によるY方向の速度まで毎フレーム0にリセットされ、ジャンプ処理と競合してしまいます。</p>



<p class="wp-block-paragraph">コード内のコメントにもある通り、PlayerMoveはX/Z軸（水平方向の移動）だけを担当し、Y軸（ジャンプ・落下）は別のコンポーネントに委ねる設計にしています。この役割分担により、PlayerMoveと別のジャンプ用コンポーネントのどちらが先にFixedUpdateで実行されても、お互いの担当軸を上書きし合わない安全な作りになります。AddForceではなくvelocityを直接操作しているのも、この分担を明確に保つためです。</p>



<ul class="wp-block-list">
<li><strong>移動方向への回転処理</strong></li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>Quaternion targetRotation = Quaternion.LookRotation(moveDirection);
rb.MoveRotation(Quaternion.Slerp(rb.rotation, targetRotation, rotationSpeed * Time.fixedDeltaTime));</code></pre></div>



<p class="wp-block-paragraph">キャラクターを移動方向へ滑らかに回転させる処理です。Quaternion.LookRotation(moveDirection)で「移動方向を向くための目標の回転」を求め、Quaternion.Slerpで現在の回転から目標の回転へ少しずつ補間しています。</p>



<p class="wp-block-paragraph">ポイントは、transform.rotationを直接書き換えるのではなくrb.MoveRotation()を使っている点です。RigidbodyがアタッチされたオブジェクトをTransform経由で直接動かすと、物理演算のスレッドと描画のタイミングがズレて衝突判定が不安定になります。回転も移動と同様に、Rigidbody用のAPIを通して行うのが基本です。</p>



<ul class="wp-block-list">
<li><strong>落下時のリスポーン処理</strong></li>
</ul>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>private void Update()
{
    if (rb.position.y &lt; fallResetY)
    {
        Respawn();
        return;
    }
    ...
}

private void Respawn()
{
    rb.linearVelocity = Vector3.zero;
    rb.angularVelocity = Vector3.zero;
    rb.position = respawnPosition;
    transform.position = respawnPosition;
}</code></pre></div>



<p class="wp-block-paragraph">マップの外や穴に落下してしまった場合に備えて、Y座標がfallResetYを下回ったら自動的にリスポーンする処理です。ジャンプ台の位置調整ミスやコライダーの隙間から落下してしまうことは実際の開発でもよく起きるため、あらかじめ用意しておくと安心です。</p>



<p class="wp-block-paragraph">Respawn()では、位置をリセットするだけでなくlinearVelocity（速度）とangularVelocity（角速度）も必ずゼロに戻しています。速度をリセットせずに位置だけ戻すと、落下中に蓄積した速度がそのまま残り、リスポーン直後に想定外の方向へ吹き飛んでしまうため注意してください。</p>



<h2 id="rtoc-10"  class="wp-block-heading">実演</h2>



<p class="wp-block-paragraph">3DモデルにPlayerMove.csをアタッチします。</p>



<p class="wp-block-paragraph">この3DモデルはCapsuleColliderを追加してください。<br>アタッチした後に実行するとで冒頭で紹介した動作を実行できます。</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1285" height="703" src="https://alicia-ing.com/wp-content/uploads/2026/07/AttachPlayerMove.webp" alt="" class="wp-image-8902" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/AttachPlayerMove.webp 1285w, https://alicia-ing.com/wp-content/uploads/2026/07/AttachPlayerMove-300x164.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/AttachPlayerMove-1024x560.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/AttachPlayerMove-768x420.webp 768w" sizes="(max-width: 1285px) 100vw, 1285px" /></figure>



<h2 id="rtoc-11"  class="wp-block-heading">よくあるハマりどころと対策</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove.webp" alt="" class="wp-image-8899" srcset="https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove-240x135.webp 240w, https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove-320x180.webp 320w, https://alicia-ing.com/wp-content/uploads/2026/07/trouble3Dplayermove-640x360.webp 640w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<ul class="wp-block-list">
<li><strong>Transform移動によるめり込み</strong></li>
</ul>



<p class="wp-block-paragraph">Rigidbodyが付いたオブジェクトをtransform.position += …のように直接移動させると、物理演算とタイミングがズレて壁や地面にめり込んでしまうことがあります。これはunity rigidbody transform 移動でよく報告される不具合です。</p>



<p class="wp-block-paragraph">本記事のコードのように、移動はFixedUpdate内でrb.linearVelocityまたはrb.MovePosition()を使って行います。Transformを直接書き換える処理を移動ロジックに混在させないことが重要です。</p>



<ul class="wp-block-list">
<li><strong>カメラのカクつき</strong></li>
</ul>



<p class="wp-block-paragraph">Rigidbodyの位置はFixedUpdate（物理演算のタイミング）で更新されますが、カメラの描画はUpdate（描画のタイミング）で行われます。この2つのタイミングにはズレがあるため、追従カメラがカクついて見えることがあります。</p>



<p class="wp-block-paragraph"> Awake()で設定しているrb.interpolation = RigidbodyInterpolation.Interpolate;が、このズレを補間して滑らかに見せる役割を持っています。加えて、追従カメラ側のスクリプトもUpdateではなくLateUpdateでプレイヤーを追従させることで、キャラクターの移動が反映された後にカメラが追従するようになり、カクつきをさらに抑えられます。</p>



<h2 id="rtoc-12"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">CharacterControllerからRigidbody＋CapsuleColliderへの移動処理の移行手順として、以下を解説しました。</p>



<ul class="wp-block-list">
<li>CapsuleColliderとRigidbodyの基本的な役割と設定値</li>



<li>CharacterControllerとの違いと、移行すべきかどうかの判断基準</li>



<li>カメラ相対移動・FixedUpdateでのX/Z軸のみの速度制御・回転処理・落下リスポーンの実装</li>



<li>Rigidbodyへの移行は、他の物理オブジェクトとの相互作用が必要になったときに大きな効果を発揮します。一方で、精密な移動制御が最優先の場合は無理に移行する必要はありません。プロジェクトの要件に合わせて、CharacterControllerとRigidbodyを使い分けてください。</li>
</ul>



<p class="wp-block-paragraph">次のステップとして、Y軸を分担しているジャンプ処理や、カメラ相対移動と組み合わせる三人称カメラの実装もあわせて検討してみると、より完成度の高いプレイヤー操作を作り込めます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/unity/3dplayermove/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity】スライダーを特定の位置にスナップ（吸着）させる方法</title>
		<link>https://alicia-ing.com/programming/slidersnap/</link>
					<comments>https://alicia-ing.com/programming/slidersnap/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 16:44:26 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8839</guid>

					<description><![CDATA[音量調整や設定画面のスライダーで、「キリのいい値にぴったり合わせたい」と感じたことはありませんか？そのような場面で役立つのがスナップ（吸着）機能です。特定の値に近づくと自動で吸い付くため、ユーザーが意図した値に合わせやす [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box not-nested-style cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-flag"><span class="label-box-label-text block-box-label-text box-label-text">本記事を読むと以下の実行ができます</span></div><div class="label-box-content block-box-content box-content">
<p class="wp-block-paragraph">Unityのスライダーを、指定した任意の位置に自動で吸着（スナップ）させる</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1280" height="720" src="https://alicia-ing.com/wp-content/uploads/2026/06/complete.gif" alt="" class="wp-image-8842"/></figure>
</div></div>



<p class="wp-block-paragraph">音量調整や設定画面のスライダーで、「キリのいい値にぴったり合わせたい」と感じたことはありませんか？そのような場面で役立つのが<strong>スナップ（吸着）機能</strong>です。特定の値に近づくと自動で吸い付くため、ユーザーが意図した値に合わせやすくなります。</p>



<p class="wp-block-paragraph">本記事では、スナップさせたい位置と吸着距離を自由に設定できる実装方法を解説します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>&#8211; Unityのスライダーに吸着（スナップ）機能を付けたい人</li>



<li>&#8211; 等間隔ではなく、任意の位置にスナップさせたい人</li>



<li>IPointerUpHandler` の使い方を知りたい人</li>



<li>&#8211; 音量や設定値のUIをより使いやすくしたい人</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8839" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">Sliderのスナップとは？</a></li><li class="rtoc-item"><a href="#rtoc-2">Sliderの準備</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-3">ソースコード</a></li><li class="rtoc-item"><a href="#rtoc-4">解説</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-5">実演</a></li><li class="rtoc-item"><a href="#rtoc-6">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">Sliderのスナップとは？</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider.webp" alt="" class="wp-image-8845" srcset="https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2026/06/snap_slider-320x180.webp 320w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">スナップとは、ある値に近づいたときに自動でその値に吸い付く動作のことです。</p>



<p class="wp-block-paragraph">Unityの標準Sliderコンポーネントにはスナップ機能が搭載されていません。スライダーをドラッグすると連続した値が取れるだけで、特定の値に吸着させるにはスクリプトで制御する必要があります。</p>



<h2 id="rtoc-2"  class="wp-block-heading">Sliderの準備</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1672" height="941" src="https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation.webp" alt="" class="wp-image-8846" srcset="https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation.webp 1672w, https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation-300x169.webp 300w, https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation-1024x576.webp 1024w, https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation-768x432.webp 768w, https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation-1536x864.webp 1536w, https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2026/06/slider_preparation-320x180.webp 320w" sizes="(max-width: 1672px) 100vw, 1672px" /></figure>



<p class="wp-block-paragraph">UnityのHierarchyウィンドウから<strong>UI &gt; Slider</strong> を追加してください。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>スライダーの設定はこちらで紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/slider-bar/" title="【Unity】スライダー使い方｜制限時間ゲージ、HPバー、音量調整" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2024/01/slider-bar-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2024/01/slider-bar-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2024/01/slider-bar-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2024/01/slider-bar-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】スライダー使い方｜制限時間ゲージ、HPバー、音量調整</div><div class="blogcard-snippet internal-blogcard-snippet">Unityでスライダー（Slider）の使い方を解説。実用例として制限時間ゲージやHPバー・体力ゲージ、音量調整をスクリプトで紹介します。sliderを離したとき・押したときの処理やデザインの変更を紹介します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.05.03</div></div></div></div></a>
</div>



<p class="wp-block-paragraph">また、スナップした値をテキストで表示するため、<strong>UI &gt; Text &#8211; TextMeshPro</strong> も追加します。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>Unityで文字表示はこちらで紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/textmeshpro/" title="【Unity】TextMeshPro-日本語表示とスクリプト制御" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2024/01/textmeshpro-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2024/01/textmeshpro-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2024/01/textmeshpro-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2024/01/textmeshpro-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】TextMeshPro-日本語表示とスクリプト制御</div><div class="blogcard-snippet internal-blogcard-snippet">UnityのTextMeshProは日本語のテキストを美しく表示し、スクリプトでテキストを動的に変更することも可能です。改行は&quot;\n&quot;でします。&quot;japanese_full.txt&quot;ファイルを読み込んでTextMeshProに適用します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>



<h3 id="rtoc-3"  class="wp-block-heading">ソースコード</h3>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using TMPro;

public class SliderSnap : MonoBehaviour, IPointerUpHandler
{
    public Slider slider;
    public TextMeshProUGUI positionTMP;

    [Header(&quot;スナップ設定&quot;)]
    public float[] snapPoints = new float[] { 0.5f, 0.2f }; // 正規化値(0~1)
    public float snapThreshold = 0.02f;

    void Start()
    {
        slider.onValueChanged.AddListener(OnValueChanged);
        UpdatePositionDisplay();
    }

    void OnDestroy()
    {
        slider.onValueChanged.RemoveListener(OnValueChanged);
    }

    void OnValueChanged(float value)
    {
        float snapped;
        if (TryGetSnapPoint(value, out snapped))
        {
            slider.onValueChanged.RemoveListener(OnValueChanged);
            slider.value = snapped;
            slider.onValueChanged.AddListener(OnValueChanged);
        }

        UpdatePositionDisplay();
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        float snapped;
        if (!TryGetSnapPoint(slider.value, out snapped)) return;

        slider.onValueChanged.RemoveListener(OnValueChanged);
        slider.value = snapped;
        slider.onValueChanged.AddListener(OnValueChanged);

        UpdatePositionDisplay();
    }

    bool TryGetSnapPoint(float value, out float snapped)
    {
        snapped = value;
        if (snapPoints == null || snapPoints.Length == 0) return false;

        float minDist = float.MaxValue;
        float nearest = value;

        foreach (float point in snapPoints)
        {
            float dist = Mathf.Abs(value - point);
            if (dist &lt; minDist)
            {
                minDist = dist;
                nearest = point;
            }
        }

        if (minDist &lt; snapThreshold)
        {
            snapped = nearest;
            return true;
        }
        return false;
    }

    public string GetPositionText(float value)
    {
        float rounded = Mathf.Round(value * 100f) / 100f;
        return rounded.ToString(&quot;0.##&quot;);
    }

    void UpdatePositionDisplay()
    {
        if (positionTMP == null) return;
        positionTMP.text = GetPositionText(slider.value);
    }
}</code></pre></div>



<h3 id="rtoc-4"  class="wp-block-heading">解説</h3>



<ul class="wp-block-list">
<li><strong>snapPoints と snapThreshold</strong></li>
</ul>



<p class="wp-block-paragraph">snapPointsは、スナップさせたい位置を<strong>正規化値（0〜1）</strong>で指定する配列です。Sliderの最小値が0、最大値が1に対応します。例えば 0.5fはスライダーの中央、0.2fは左から20%の位置になります。</p>



<p class="wp-block-paragraph">snapThresholdは吸着距離です。スライダーの値がスナップポイントからこの値以内に入ると、自動でスナップします。0.02fは全体の2%の範囲です。値を大きくするほど遠くからでも吸着するようになります。</p>



<p class="wp-block-paragraph">どちらもInspectorから変更できるので、スクリプトを書き直さずに調整できます。</p>



<ul class="wp-block-list">
<li><strong>OnValueChanged でのスナップ処理</strong></li>
</ul>



<p class="wp-block-paragraph">ドラッグ中にスナップポイントへ近づいたとき、リアルタイムで吸着させる処理です。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-luminous-vivid-amber-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#fcb900"><div class="tab-caption-box-label block-box-label box-label fab-exclamation-circle"><span class="tab-caption-box-label-text block-box-label-text box-label-text">注意</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">slider.value = snappedを実行するとonValueChangedが再び発火します。そのままではOnValueChangedが無限に呼ばれてしまうため、値を変更する前にRemoveListenerでイベントを一時解除し、変更後にAddListenerで再登録しています。</p>
</div></div>



<ul class="wp-block-list">
<li><strong>IPointerUpHandler でのスナップ処理</strong></li>
</ul>



<p class="wp-block-paragraph">IPointerUpHandlerのOnPointerUpは、<strong>マウスボタンやタッチを離した瞬間</strong>に呼ばれます。</p>



<p class="wp-block-paragraph">ドラッグを離した瞬間にもスナップ処理を走らせることで、「ドラッグ中はスナップしなかったが、離したときにスナップポイントの近くにいた」というケースも確実に吸着できます。OnValueChangedとの二重対応で、取りこぼしなくスナップが動作します。</p>



<p class="wp-block-paragraph">IPointerUpHandlerを使うためには、クラス宣言に IPointerUpHandlerを追加し、スクリプトをスライダーと<strong>同じGameObjectにアタッチ</strong>する必要があります。</p>



<ul class="wp-block-list">
<li><strong>TryGetSnapPoint メソッド</strong></li>
</ul>



<p class="wp-block-paragraph">スナップすべきかどうかを判定するメソッドです。out引数でスナップ先の値を返します。</p>



<p class="wp-block-paragraph">処理の流れは以下の通りです。</p>



<ol class="wp-block-list">
<li>すべてのsnapPointsとの距離を計算する</li>



<li>最も近いポイントを探す</li>



<li>その距離がsnapThreshold未満であればスナップ対象と判定しtrueを返す</li>



<li>閾値以上であれば何もせずfalseを返す</li>
</ol>



<p class="wp-block-paragraph">複数のスナップポイントがあっても、常に<strong>最も近い1点</strong>に吸着します。</p>



<ul class="wp-block-list">
<li><strong>TextMeshPro での値表示</strong></li>
</ul>



<p class="wp-block-paragraph">現在のスライダー値をTextMeshProのテキストに表示します。Mathf.Round で小数点2桁に丸めてから &#8220;0.##&#8221;フォーマットで表示しています。&#8221;0.##&#8221; は末尾の不要なゼロを省略してくれるので、0.50ではなく 0.5のようにすっきり表示されます。</p>



<p class="wp-block-paragraph">positionTMPがnullの場合は何もしないようにしているので、テキスト表示が不要な場合はアタッチしなくても動作します。</p>



<h2 id="rtoc-5"  class="wp-block-heading">実演</h2>



<p class="wp-block-paragraph">スクリプトができたら、Inspectorで以下の通り設定してください。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="769" height="460" src="https://alicia-ing.com/wp-content/uploads/2026/06/attachment.webp" alt="" class="wp-image-8847" srcset="https://alicia-ing.com/wp-content/uploads/2026/06/attachment.webp 769w, https://alicia-ing.com/wp-content/uploads/2026/06/attachment-300x179.webp 300w" sizes="(max-width: 769px) 100vw, 769px" /></figure>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center">Slider</td><td class="has-text-align-center" data-align="center">シーン上のSliderコンポーネントをアタッチ</td></tr><tr><td class="has-text-align-center" data-align="center">PositonTMP</td><td class="has-text-align-center" data-align="center">値表示に使うTextMeshProUGUIをアタッチ</td></tr><tr><td class="has-text-align-center" data-align="center">SnapPoints</td><td class="has-text-align-center" data-align="center">スナップさせたい位置を正規化値（0〜1）で入力</td></tr><tr><td class="has-text-align-center" data-align="center">SnapThreshold</td><td class="has-text-align-center" data-align="center">吸着距離。デフォルト `0.02f` から調整可能</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-luminous-vivid-amber-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#fcb900"><div class="tab-caption-box-label block-box-label box-label fab-exclamation-circle"><span class="tab-caption-box-label-text block-box-label-text box-label-text">注意</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">スクリプトは<strong>Sliderと同じGameObject</strong>にアタッチしてください。別のGameObjectにアタッチすると `IPointerUpHandler` が機能しません。</p>
</div></div>



<h2 id="rtoc-6"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">Unityのスライダーに任意の位置へのスナップ機能を実装しました。</p>



<ul class="wp-block-list">
<li>snapPoints（float配列）でスナップ位置を自由に指定できます</li>



<li>snapThresholdで吸着距離を調整できます</li>



<li>onValueChangedと IPointerUpHandlerを併用することで、ドラッグ中・離した瞬間どちらにも対応できます</li>



<li>&#8211; リスナーの二重発火を防ぐため、値変更前後で RemoveListener → AddListenerの順で処理します</li>
</ul>



<p class="wp-block-paragraph">音量調整や設定画面など、特定の値に合わせやすくしたいスライダーUIに活用してみてください。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/slidersnap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Unity】ゲームビルドやり方｜画面サイズ・WebGL設定</title>
		<link>https://alicia-ing.com/programming/build-setting/</link>
					<comments>https://alicia-ing.com/programming/build-setting/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sun, 16 Nov 2025 22:00:00 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8790</guid>

					<description><![CDATA[自作したゲームを販売する上で、作品のexe化（ビルド）しなければいけません。本記事では、ビルドする方法を分かりやすく解説します。 目次 Unityのビルドとは？ Unityでゲームをビルドする基本手順 シーン登録 プラッ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">自作したゲームを販売する上で、作品のexe化（ビルド）しなければいけません。<br>本記事では、ビルドする方法を分かりやすく解説します。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>Unityで開発したゲームを出品したい人</li>



<li>ビルドのやり方を知りたい人</li>



<li>WebGLの形式でビルドしたい人</li>



<li>ビルドしたら画面サイズがおかしくなった人</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8790" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">Unityのビルドとは？</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-2">Unityでゲームをビルドする基本手順</a></li><li class="rtoc-item"><a href="#rtoc-3">シーン登録</a></li><li class="rtoc-item"><a href="#rtoc-4">プラットフォームの選択</a></li><li class="rtoc-item"><a href="#rtoc-5">ビルドの実行</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-6">出品に向けた設定</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-7">名前変更</a></li><li class="rtoc-item"><a href="#rtoc-8">Splash Image（ゲーム開始時の企業ロゴ）</a></li><li class="rtoc-item"><a href="#rtoc-9">Other Settings</a></li><li class="rtoc-item"><a href="#rtoc-10">フォルダーの削除</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-11">画面サイズと解像度の設定</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-12">著者が実際にしている画面サイズ設定</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-13">WebGLビルドの方法とポイント</a></li><li class="rtoc-item"><a href="#rtoc-14">ビルドできない時のトラブルシューティング</a></li><li class="rtoc-item"><a href="#rtoc-15">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">Unityのビルドとは？</h2>



<p class="wp-block-paragraph">Unityにおける「ビルド」とは、開発中の<strong>ゲームプロジェクトを実行可能なアプリケーションやデータに変換する作業</strong>のことです。エディタ上で動かしていたゲームを、Windows/Mac用の実行ファイルやWebブラウザで動作するデータ（WebGL）などに出力し、<strong>他のユーザーがプレイできる</strong>形にします。</p>



<p class="wp-block-paragraph">Unityエディタでの再生は<strong>開発者ローカルのテスト</strong>に過ぎず、完成したゲームを配布・公開するにはビルドして所定のプラットフォーム用ファイルを用意する必要があります。ビルドを行うことで、初めてUnityをインストールしていないPCでもゲームを起動できたり、Web上に公開して遊んでもらうことが可能になります。</p>



<p class="wp-block-paragraph">ビルドの結果、例えばWindowsなら「.exe実行ファイルとデータフォルダ」、WebGLなら「index.htmlとUnityの生成したライブラリファイル群」など、プラットフォームごとに必要なファイル一式が出力されます。<strong>これらを配布・サーバーアップロードすることでユーザーがゲームをプレイできる</strong>ようになります。</p>



<h3 id="rtoc-2"  class="wp-block-heading">Unityでゲームをビルドする基本手順</h3>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-memo block-box has-border-color has-yellow-border-color">
<p class="wp-block-paragraph">本記事は、<strong>Unity6</strong>でのビルド方法を紹介しています。<br>バージョンが異なってもほとんど操作は同じです。</p>
</div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1200" height="630" src="https://alicia-ing.com/wp-content/uploads/2025/11/Buildwindow.webp" alt="" class="wp-image-8800" srcset="https://alicia-ing.com/wp-content/uploads/2025/11/Buildwindow.webp 1200w, https://alicia-ing.com/wp-content/uploads/2025/11/Buildwindow-300x158.webp 300w, https://alicia-ing.com/wp-content/uploads/2025/11/Buildwindow-1024x538.webp 1024w, https://alicia-ing.com/wp-content/uploads/2025/11/Buildwindow-768x403.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<p class="wp-block-paragraph">基本的なビルド手順は<strong>「シーンの設定 → プラットフォームの選択 → ビルドの実行」</strong>という流れになります。</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box has-point-color has-light-blue-point-color not-nested-style cocoon-block-timeline" style="--cocoon-custom-point-color:#2ca9e1"><div class="timeline-title">ビルド手順</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step1</div><div class="timeline-item-content cf"><div class="timeline-item-title">ゲームで使うシーンを追加</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"></p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step2</div><div class="timeline-item-content cf"><div class="timeline-item-title">プラットフォーム（Windows,Mac,WebGLなど）を選ぶ</div><div class="timeline-item-snippet"></div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">Step3</div><div class="timeline-item-content cf"><div class="timeline-item-title">ビルド</div><div class="timeline-item-snippet"></div></div></li>
</ul></div>



<p class="wp-block-paragraph"><a target="_self" href="https://docs.unity3d.com/ja/2018.4/Manual/PublishingBuilds.html">>>公式ページのビルド方法</a></p>



<h3 id="rtoc-3"  class="wp-block-heading">シーン登録</h3>



<p class="wp-block-paragraph">初めにビルドに含めるシーンを指定します。Unityメニューから <strong>File > Build Profiles </strong>を開き、Scenes Listに現在のシーンを追加します（「Open Scene List」>「Add Open Scenes」ボタン）。複数シーンがある場合、すべて追加しましょう。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1200" height="630" src="https://alicia-ing.com/wp-content/uploads/2025/11/BuildSetting.webp" alt="" class="wp-image-8799" srcset="https://alicia-ing.com/wp-content/uploads/2025/11/BuildSetting.webp 1200w, https://alicia-ing.com/wp-content/uploads/2025/11/BuildSetting-300x158.webp 300w, https://alicia-ing.com/wp-content/uploads/2025/11/BuildSetting-1024x538.webp 1024w, https://alicia-ing.com/wp-content/uploads/2025/11/BuildSetting-768x403.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<p class="wp-block-paragraph">ボタンを押しても何も反応がない場合は、シーンが読み込めていません。<br>そこで、<strong>現在のシーンを変更してから「Add Open Scenes」ボタンを押す</strong>と認識できます。</p>



<p class="wp-block-paragraph"><strong>シーンリスト番号「0」が、ゲーム起動時に最初にロードされるシーン</strong>になります。一般的にタイトルやメインメニューのシーンを先頭に置きます。ドラッグ＆ドロップで順序を並び替え、一番最初に実行したいシーンがトップに来るよう設定します。</p>



<p class="wp-block-paragraph"><strong>チェックボックスでビルド対象に含めるか除外するかを制御</strong>できます。不要なシーンはチェックを外すことでビルドから除外可能ですが、基本的にはリストに追加したシーンはすべて有効にしておきます。Scene移動はスクリプトで制御しないと遷移できないですが、チェックボックスで除外しておく方が無難です。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>実用的なシーン切り替えを紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/programming/unity/scene-change-fade/" title="【Unity】シーン切り替え演出｜フェイドイン・アウト" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2024/10/scene-change-fade-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2024/10/scene-change-fade-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2024/10/scene-change-fade-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2024/10/scene-change-fade-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【Unity】シーン切り替え演出｜フェイドイン・アウト</div><div class="blogcard-snippet internal-blogcard-snippet">Unityのシーン切り替え演出の１つにフェイドイン・フェイドアウトがあります。シーン遷移は突然してしまうためフェイドを使い滑らかにすることでユーザビリティ―が向上します。本記事では、ボタンを押してフェイド演出を詳しく解説しています。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.04.29</div></div></div></div></a>
</div>



<h3 id="rtoc-4"  class="wp-block-heading">プラットフォームの選択</h3>



<p class="wp-block-paragraph"> ビルド設定ウィンドウを開きます（ショートカット: Ctrl+Shift+B）。ここでプロジェクトのビルド対象プラットフォームを設定できます。</p>



<p class="wp-block-paragraph"> 左側カラムのPlatformsからビルドしたいターゲットプラットフォームを選びます（ PC向けなら「Windows, MacOS, Linux」、Webブラウザ向けなら「WebGL」、スマホアプリなら「iOS、Android」など）。選択すると右下にビルド対象として表示され、現在のプラットフォームでない場合は「Switch Platform」ボタンが有効になります。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-blue-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#2ca9e1"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">ビルドしたいプラットフォームを有効にする</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">希望するプラットフォームが一覧に表示されていない、<strong>「No module loaded」</strong>といった表示が出る場合は、そのプラットフォーム用モジュールが未インストールです。</p>



<p class="wp-block-paragraph"><strong>「Install with Unity Hub」</strong>で、Unity Hubを開き、該当Unityエディターのバージョンに対し「モジュールを追加」から必要なビルドサポート（例: WebGL、Android、iOS など）をインストールしてください。モジュール追加後、Unityエディタを再起動するとプラットフォームが選択可能になります。</p>
</div></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1200" height="630" src="https://alicia-ing.com/wp-content/uploads/2025/11/nomodule.webp" alt="" class="wp-image-8801" srcset="https://alicia-ing.com/wp-content/uploads/2025/11/nomodule.webp 1200w, https://alicia-ing.com/wp-content/uploads/2025/11/nomodule-300x158.webp 300w, https://alicia-ing.com/wp-content/uploads/2025/11/nomodule-1024x538.webp 1024w, https://alicia-ing.com/wp-content/uploads/2025/11/nomodule-768x403.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<p class="wp-block-paragraph">ビルド対象を選んだら、<strong>Switch Platformボタンをクリックしてプラットフォームを切り替えます</strong>。プラットフォーム切り替え時には必要なライブラリのインポート処理が走るため、完了するまで待ちましょう。切り替え後、選択したプラットフォーム名の右に「(Active)」と表示されます。</p>



<h3 id="rtoc-5"  class="wp-block-heading">ビルドの実行</h3>



<p class="wp-block-paragraph">ビルド前に、必要に応じて右下のDevelopment Build（開発ビルド）やCompression Method（圧縮方式）などのオプションをチェックできます。開発ビルドにチェックを入れるとデバッグ情報付きでビルドされ、パフォーマンスは落ちますがデバッグに有用です。<strong>初学者の場合、基本はチェック不要で構いません。</strong></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://alicia-ing.com/wp-content/uploads/2023/05/alicia.webp" alt="著者の体験談" class="speech-icon-image"/></figure><div class="speech-name">著者の体験談</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">項目が多すぎるので、基本そのままでOK</p>
</div></div>



<p class="wp-block-paragraph"> ビルドには、<strong>Build か Build and Run</strong>どちらかを押すと処理されます。「Build」ボタンを押すとビルド処理が始まります（完了後、出力先フォルダを開いて自分で実行ファイルを起動）。「Build and Run」を押すとビルド完了後に自動的にアプリケーション（またはエミュレータ）が起動し、実行結果をすぐ確認できます。<strong>開発中はBuild and Runが便利です。</strong></p>



<p class="wp-block-paragraph">ビルド中は<strong>Unityエディタ下部の進行バーに進捗メッセージが表示</strong>されます。スクリプトのコンパイルやシーンのデータ書き出しなど、多少時間がかかる場合がありますが完了まで待ちましょう。<strong>Consoleウィンドウにエラーが出た場合、ビルドは失敗</strong>しています。</p>



<p class="wp-block-paragraph"> ビルドが成功すると、指定したフォルダ内に出力物が生成されます。Windowsは実行ファイル（.exe 等）とDataフォルダ、WebGLの場合はBuildフォルダとindex.html、Androidの場合はAPKファイル等ができています。それらを実行・配置することで実際にゲームが動作するか確認できます。</p>



<h2 id="rtoc-6"  class="wp-block-heading">出品に向けた設定</h2>



<p class="wp-block-paragraph">いざ、ゲームをビルドしてもタイトルがそのままだったり、よくわからないファイルが同封されているなど問題だらけです。また、ゲーム作りはプロでも１年以上は費やして完成をさせます。しかし出品の際に、<strong>スクリプトなどを保護</strong>をしないと購入者に解析されてしまうことがあります。（逆コンパイル）</p>



<p class="wp-block-paragraph">このように、個人情報や作品の保護などより質の高いビルドについて解説をします。まずは、Edit >ProjectSettingを開きます（ビルド設定ウィンドウのPlayerSettingからでもOKです。）。</p>



<p class="wp-block-paragraph">Playerをいじれば基本的なゲーム設定は可能です。<strong>「Resolution and Presentation」</strong>は画面サイズや比率の設定は後述します。</p>



<h3 id="rtoc-7"  class="wp-block-heading">名前変更</h3>



<p class="wp-block-paragraph">ゲームの主要情報はここで変えることができます。ここは<strong>ユーザーが見えるところ</strong>なのでしっかりと変更することが重要です。</p>



<ul class="wp-block-list">
<li>Company Name：会社名（セーブデータ格納とかでフォルダー名になる）</li>



<li>Product Name：ゲーム名（ゲームファイルの名前になる）</li>



<li>Verson：バージョン（1.2.3という命名がおすすめ。【ゲーム性】.【機能追加】.【バグ修正】）</li>



<li>Default Icon：実行ファイルのアイコン。未設定ではUnityのロゴ</li>



<li>Default Cursor：マウスカーソルの見た目変更。</li>



<li>Default Hotspot：カーソルの位置、基本的にデフォルトでOK(x,y)=(0,0)</li>
</ul>



<p class="wp-block-paragraph"></p>



<h3 id="rtoc-8"  class="wp-block-heading">Splash Image（ゲーム開始時の企業ロゴ）</h3>



<p class="wp-block-paragraph">ゲームを開始するときに企業ロゴや注意事項などが出てくる作品がありますが、Unityでも再現ができます。基本初期のままで構いませんが、いくつか変更すると良いところがありますので私が良くする設定で紹介します。</p>



<ul class="wp-block-list">
<li>Splash Screen>Animation：Custom（ロゴのズームをしないように設定）</li>



<li>Logos>Show Unity Logo：なし（Unityのロゴを非表示。<strong>Unity6から無料版でもチェックを外せる</strong>ように！）</li>
</ul>



<p class="wp-block-paragraph">Splash StyleやBackground Colorなどはそれぞれのロゴに適したものを使うと良いでしょう。</p>



<h3 id="rtoc-9"  class="wp-block-heading">Other Settings</h3>



<p class="wp-block-paragraph">その他なのに最も項目が多くてめんどくさいので、変えないといけない箇所だけ紹介します。</p>



<ul class="wp-block-list">
<li>Configuration>Scripting Backend：<strong>IL2CPP</strong>（スクリプト等の保護。MONOだと逆コンパイルでデータが盗まれる）</li>
</ul>



<p class="wp-block-paragraph">その他にも、使っていないスクリプトを削除して軽くする機能もありますが、予期せぬバグになるので省略します。</p>



<h3 id="rtoc-10"  class="wp-block-heading">フォルダーの削除</h3>



<p class="wp-block-paragraph">ビルドを終えると、基本的に削除してはいけないファイルばかりですが、「BurstDebugInformation<strong>_DoNotShip</strong>」というフォルダーは削除しなければいけません。フォルダーの中身は、ビルド情報が載りますが、よく見ると自分のPC情報が記載されています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Library: C:\Users<strong>\【username】</strong>\Desktop\UnityProject\Tile_RPG\Temp\BurstOutput\Data\Plugins\x86_64\lib_burst_generated<br>&#8211;platform=Windows<br>&#8211;backend=burst-llvm-18</p>
<cite>Tile_RPG_BurstDebugInformation_DoNotShip/lib_burst_generated.txt</cite></blockquote>



<h2 id="rtoc-11"  class="wp-block-heading">画面サイズと解像度の設定</h2>



<p class="wp-block-paragraph">PC向け（Standalone）ビルドでは、デフォルト設定のままだとゲーム起動時にディスプレイ全画面で表示されます。古いUnityでは起動時に解像度選択ダイアログが表示されることもありましたが、2020年以降のUnityでは初期挙動が自動でフルスクリーンとなる場合が多いです。</p>



<p class="wp-block-paragraph">必要に応じて、ビルドされたゲームの画面モードや解像度を指定しましょう。</p>



<p class="wp-block-paragraph">Unityエディタ上部メニューから Edit > Project Settingsを開き、左メニューから Player を選択します。その中の対象プラットフォームの<strong>Resolution and Presentation</strong> セクションを展開してください。ここで画面モードや初期解像度に関する設定を変更できます。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1200" height="630" src="https://alicia-ing.com/wp-content/uploads/2025/11/ScreenSize.webp" alt="" class="wp-image-8802" srcset="https://alicia-ing.com/wp-content/uploads/2025/11/ScreenSize.webp 1200w, https://alicia-ing.com/wp-content/uploads/2025/11/ScreenSize-300x158.webp 300w, https://alicia-ing.com/wp-content/uploads/2025/11/ScreenSize-1024x538.webp 1024w, https://alicia-ing.com/wp-content/uploads/2025/11/ScreenSize-768x403.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-vivid-cyan-blue-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#0693e3"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">不要なPlayer.txtが表示</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">AppDataフォルダーの中にPlayer.txtが生成されてしまいます。これはスクリプㇳのDebugなどを検知しますが、「Use Player Log」のチェックを外せば生成されることは無くなります。</p>
</div></div>



<p class="wp-block-paragraph"> Fullscreen Mode という設定項目があります。デフォルトでは「Fullscreen Window（全画面表示ウィンドウ）」もしくは「Exclusive Fullscreen（専用全画面）」になっています。これを <strong>「Windowed（ウィンドウ表示）」</strong> に変更すると、ビルド後のゲームがウィンドウモードで起動するようになります。フルスクリーンだと起動時にモニタ解像度で全面表示されますが、Windowedにすることでウィンドウ枠のある通常のウィンドウになります。</p>



<p class="wp-block-paragraph"> Default Screen Width（デフォルト幅）、Default Screen Height（デフォルト高さ）という項目で、ウィンドウモード時の初期画面サイズ（解像度）を指定できます。ただしこれらは Fullscreen Modeを「<strong>Windowed」にした場合のみ有効</strong>です。（フルスクリーン時はモニタ解像度に依存）。例えば幅1920×高さ1080にしたければ、それぞれ1920、1080と設定します。</p>



<p class="wp-block-paragraph">Resizable Window オプションを true にすると、ユーザーがウィンドウの端をドラッグして自由にリサイズできるようになります。固定サイズで遊ばせたい場合は false に設定し、ウィンドウサイズ変更を禁止します。<strong>リサイズを許可する場合、画面比率が変わってUI配置が崩れないようCanvasの設定</strong>（UIのScale ModeやReference Resolution）にも注意が必要なので、<strong>許可しないことをおすすめします。</strong></p>



<h3 id="rtoc-12"  class="wp-block-heading">著者が実際にしている画面サイズ設定</h3>



<p class="wp-block-paragraph">私の設定では、<strong>FullScreenとWindowedモードのハイブリット</strong>にしています。</p>



<ul class="wp-block-list">
<li>Fulscreen Mode：Windowed</li>



<li>Default Screen :幅1280×高さ720</li>
</ul>



<p class="wp-block-paragraph">このサイズにしておけば、<strong>ほとんどのユーザーのPCに納まる</strong>かと思います。</p>



<p class="wp-block-paragraph">また、以下のスクリプトをゲームのタイトル画面に設置してフルスクリーンとウィンドウどちらにも対応できるようにしています。</p>



<div class="hcb_wrap"><pre class="prism undefined-numbers lang-csharp" data-lang="C#"><code>    // ウィンドウモードに戻すときのサイズ
    [SerializeField] private int windowWidth = 1280;
    [SerializeField] private int windowHeight = 720;

    // UIボタンから呼ぶ関数
    public void ToggleFullscreen()
    {
        if (Screen.fullScreen)
        {
            // フルスクリーン → ウィンドウモード
            Screen.SetResolution(windowWidth, windowHeight, FullScreenMode.Windowed);
            Debug.Log(&quot;Switched to Windowed Mode&quot;);
        }
        else
        {
            // ウィンドウモード → フルスクリーン
            Screen.SetResolution(Display.main.systemWidth, Display.main.systemHeight, FullScreenMode.FullScreenWindow);
            Debug.Log(&quot;Switched to Fullscreen Mode&quot;);
        }
    }</code></pre></div>



<h2 id="rtoc-13"  class="wp-block-heading">WebGLビルドの方法とポイント</h2>



<p class="wp-block-paragraph">WebGLプラットフォームを選択すると、UnityのゲームをWebブラウザ上で実行できる形でビルドできます。HTML5/WebGL対応ゲームのビルド手順と注意点を解説します。</p>



<p class="wp-block-paragraph">WebGLでビルドするには、まずUnityにWebGLビルドサポートモジュールがインストールされている必要があります。Unity Hubのインストール項目から現在使用中のUnityバージョンに対し<strong>「WebGL Build Support」を追加インストール</strong>してください（未導入の場合、Build SettingsでWebGLプラットフォームを選ぶ際に自動で「Install with Unity Hub」というボタンが表示されます）。</p>



<p class="wp-block-paragraph">Build Settings ウィンドウで Platform を「WebGL」に選択し、「Switch Platform」で切り替えます。切り替え後、「WebGL」がActiveプラットフォームになったことを確認してください。</p>



<p class="wp-block-paragraph"> WebGLビルド用のPlayer Settingsも確認しておきましょう。たとえば「Publishing Settings」内の Compression Format（圧縮形式）はデフォルトでは Brotli 圧縮が使われます。<strong>互換性のためGzip圧縮に変更するケース</strong>もあります（Unity公式のUnity Playや一部サーバーではBrotli未対応の場合があるため）。また Memory Size（デフォルト256MB）などWebGL固有の設定項目もありますが、必要に応じて調整します。初回は特に変更せずとも動作しますが、ビルドサイズや読み込み速度の最適化に関わる部分なので、公開時には検討するとよいでしょう。</p>



<p class="wp-block-paragraph"> Build and Run を使うと、ビルド完了後に<strong>自動でブラウザが起動しローカルホストでホスティングされたゲーム</strong>が開きます。Buildのみ実行した場合、出力されたフォルダ（デフォルトでは Build フォルダと Template データ）が生成され、その中のindex.htmlをブラウザで開いても直接は動作しません。WebGLビルドはセキュリティ上、ファイルシステムから直接読み込めないためです。必ずBuild and Runで確認するか、簡易なローカルHTTPサーバーを立ててホスティングしてください。</p>



<p class="wp-block-paragraph">WebGLのビルド結果として、index.html ファイルと Buildフォルダ（中に .jsonや.wasm、.dataファイルなどが入っています）が生成されます。これら一式をWebサーバー上に配置すれば、ユーザーはブラウザでindex.htmlにアクセスするだけでゲームをプレイできます。UnityRoom（日本国内向けのUnityゲーム投稿サイト）や itch.io, GitHub Pages などにアップロードするのも簡単です。Unity公式の Unity Play や Game Server Hosting なども選択肢になります。</p>



<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-check block-box has-border-color has-yellow-border-color">
<p class="wp-block-paragraph"><strong>WebGLビルドでは、使用できる機能にいくつか制限</strong>があります。例えばマルチスレッドやファイルシステムへのアクセス、一部プラグインは動作しません。またメモリ使用量にも注意が必要で、大きすぎるアセットはロードに時間がかかったりブラウザでメモリ不足になる場合があります。<strong>動作が重い場合はQuality設定を下げる、圧縮形式を見直す、不要なAssetを削減する</strong>等で最適化しましょう。基本的にはUnityエディタ上で問題なく動いていても、ブラウザの開発者コンソールでエラーが出ていないかを確認しつつテストを重ねることが大切です。</p>
</div>



<h2 id="rtoc-14"  class="wp-block-heading">ビルドできない時のトラブルシューティング</h2>



<p class="wp-block-paragraph">ビルド実行中にエラーが発生し「Build failed」となってしまうことがあります。ここでは、「Unityでビルドができない！」となった場合によくある原因と解決策を紹介します。最終的には<strong>エラー文をChatGPTや検索してみるとQiitaやNoteに公開しているユーザーが多いので、これらで解決</strong>しましょう。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1200" height="630" src="https://alicia-ing.com/wp-content/uploads/2025/11/errorcode.webp" alt="" class="wp-image-8803" srcset="https://alicia-ing.com/wp-content/uploads/2025/11/errorcode.webp 1200w, https://alicia-ing.com/wp-content/uploads/2025/11/errorcode-300x158.webp 300w, https://alicia-ing.com/wp-content/uploads/2025/11/errorcode-1024x538.webp 1024w, https://alicia-ing.com/wp-content/uploads/2025/11/errorcode-768x403.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></figure>



<p class="wp-block-paragraph"> 最初にチェックすべきは、<strong>スクリプトのコンパイルエラー</strong>です。Unityではスクリプトにエラーがある状態だとビルドは実行できません。<strong>エディタ下部のConsoleウィンドウに赤いエラーメッセージ</strong>が出ていないか確認し、出ている場合は内容に従ってコードを修正してください。典型的には文法ミス（セミコロンの付け忘れ等）や参照切れ、型の不一致などが原因です。コンパイルエラーはビルド以前にエディタ実行中から検知できますので、まずここをゼロにしましょう。</p>



<p class="wp-block-paragraph">または、<strong>ビルド対象プラットフォームのモジュールが入っていない場合、ビルド自体が開始できませ</strong>ん（ビルド設定でビルドボタンが押せない状態になる）。例えば「WebGL Module」や「Android Build Support」などがUnityに追加されているかを確認し、入っていなければUnity Hubからインストールします。モジュール不足が原因の場合、エラーメッセージで指摘されることもあります。「Module not loaded」「SDK not found」等のログが出たら該当モジュール/SDKの導入を行ってください。</p>



<h2 id="rtoc-15"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">Unityにおけるビルド手順と設定、そしてトラブル発生時の対処法について網羅的に解説しました。</p>



<p class="wp-block-paragraph">開発途中でもこまめにビルドを行う習慣を付けましょう。Unityエディタ上では正常に動いていても、ビルドすると初めて表面化する不具合は少なくありません。大きな機能追加や変更をした際はその都度ビルドして、予期せぬエラーが出ないか確認することで、後になってエラーの山に悩まされるリスクを減らせます。</p>



<p class="wp-block-paragraph"> バージョン管理とバックアップ: ビルド前後で問題が発生した際に備え、Git等のバージョン管理システムでプロジェクトの変更履歴を残しておくことをお勧めします。特にビルド直前に入れた変更が原因でエラーになった場合、直前のコミットに戻すことで原因の切り分けが容易になります。</p>



<p class="wp-block-paragraph">ビルドエラーに直面した場合、公式マニュアルのトラブルシューティングやUnityフォーラム、Qiita記事などコミュニティの情報も積極的に参考にしましょう。特にエラーメッセージで検索すると同様のケースに遭遇した開発者の知見が見つかることが多いです。英語で検索するとフォーラムの回答がヒットする場合もあります。</p>



<p class="wp-block-paragraph">ビルドが無事完了したら、実際に他のPCやデバイスで動作確認をします。画面サイズ設定や挙動が開発機と異ならないか、想定通りフルスクリーン/ウィンドウ表示になるか、WebGLなら複数のブラウザで正常動作するか、といった点をチェックしましょう。問題があれば再度Unity側の設定を調整しビルドし直します。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/programming/build-setting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【院試】数学対策｜工学部、理学部、数学科におすすめの参考書</title>
		<link>https://alicia-ing.com/life/student/graduate-exam-math/</link>
					<comments>https://alicia-ing.com/life/student/graduate-exam-math/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sun, 18 May 2025 22:00:00 +0000</pubDate>
				<category><![CDATA[大学生・大学院生]]></category>
		<category><![CDATA[定期試験・院試]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8744</guid>

					<description><![CDATA[大学院入試（院試）では、数学科以外にも工学部や理学部などは数学対策をする必要があります。 本記事では、院試数学の勉強法やおすすめの問題集・参考書、具体的な活用法を徹底的に解説しています。 目次 数学の院試について 院試数 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">大学院入試（院試）では、数学科以外にも工学部や理学部などは数学対策をする必要があります。</p>



<p class="wp-block-paragraph">本記事では、院試数学の勉強法やおすすめの問題集・参考書、具体的な活用法を徹底的に解説しています。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>東大、京大、阪大、東北大など旧帝大や東工大、筑波大などの難関大の院試数学を受験する方</li>



<li>数学科や理学部・工学部の大学院を目指す学生</li>



<li>院試の過去問や参考書選びで悩んでいる方</li>



<li>院試に一度落ちて再受験を考えている方</li>



<li>院試の勉強を始めたばかりで、どのように進めれば良いかわからない方</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8744" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">数学の院試について</a></li><li class="rtoc-item"><a href="#rtoc-2">院試数学の対策・勉強法｜おすすめ問題集・参考書</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-3">講義資料で勉強</a></li><li class="rtoc-item"><a href="#rtoc-4">マセマシリーズ</a></li><li class="rtoc-item"><a href="#rtoc-5">院試過去問</a></li><li class="rtoc-item"><a href="#rtoc-6">大学院への数学：東大と京大数学向け</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-7">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">数学の院試について</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://alicia-ing.com/wp-content/uploads/2025/05/math_graduate_exam_schedule.webp" alt="" class="wp-image-8752" srcset="https://alicia-ing.com/wp-content/uploads/2025/05/math_graduate_exam_schedule.webp 1536w, https://alicia-ing.com/wp-content/uploads/2025/05/math_graduate_exam_schedule-300x200.webp 300w, https://alicia-ing.com/wp-content/uploads/2025/05/math_graduate_exam_schedule-1024x683.webp 1024w, https://alicia-ing.com/wp-content/uploads/2025/05/math_graduate_exam_schedule-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px" /></figure>



<p class="wp-block-paragraph">大学院の試験では、TOEICと当日の専門科目の試験が必須となります。TOEIC試験が終了した後や、試験が迫っている（5月頃）場合など院試の対策を始める場合には数学から大学院の試験を勉強を開始するのがおすすめです。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>院試に受かるスケジュールを実体験を元に紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/life/student/gs-study-plan/" title="【外部院試】いつから始める？旧帝院に合格する勉強スケジュール" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2024/09/gs-study-plan-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2024/09/gs-study-plan-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2024/09/gs-study-plan-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2024/09/gs-study-plan-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【外部院試】いつから始める？旧帝院に合格する勉強スケジュール</div><div class="blogcard-snippet internal-blogcard-snippet">院試で外部から合格する場合、理想は勉強を1年前から始めることですが、最低でも4月から始めるべきです。4月は集中的にTOEICを勉強します。5月からは筆記試験も勉強します。6月以降は、専門のみ集中して勉強を進めます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2026.06.21</div></div></div></div></a>
</div>



<p class="wp-block-paragraph">なぜなら、理系大学院を目指す工学部や理学部のほとんどの受験生は数学の試験を避けることはまずありません。</p>



<p class="wp-block-paragraph">東大や京大、東京科学大学（旧：東京工業大学）など旧帝大系の院試では、初日の必須科目として数学になっています。さらに、<strong>２日目には専門科目の試験があり大学数学の知識</strong>が必要です。例えば、制御工学や電気回路では線形代数や微積分の知識がないと解くことができません。</p>



<p class="wp-block-paragraph">したがって、効率よく試験準備を進めるためには数学を優先して勉強することが重要です。</p>



<h2 id="rtoc-2"  class="wp-block-heading">院試数学の対策・勉強法｜おすすめ問題集・参考書</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://alicia-ing.com/wp-content/uploads/2025/05/graduate_exam_math_book_selection.png" alt="" class="wp-image-8754" srcset="https://alicia-ing.com/wp-content/uploads/2025/05/graduate_exam_math_book_selection.png 1536w, https://alicia-ing.com/wp-content/uploads/2025/05/graduate_exam_math_book_selection-300x200.png 300w, https://alicia-ing.com/wp-content/uploads/2025/05/graduate_exam_math_book_selection-1024x683.png 1024w, https://alicia-ing.com/wp-content/uploads/2025/05/graduate_exam_math_book_selection-768x512.png 768w" sizes="(max-width: 1536px) 100vw, 1536px" /></figure>



<p class="wp-block-paragraph">院試の数学は難易度が高く、特に東大や京大など旧帝大系の大学院では、内部生であっても不合格となることがあります。そのため、<strong>焦って多くの参考書や過去問に手を出す</strong>のではなく、自分がどの分野を理解できていないのかを明確に把握する必要があります。</p>



<p class="wp-block-paragraph">まず初めは<strong>講義資料やレポート課題</strong>を使って基礎固めを行いましょう。講義資料は授業内容が凝縮されており、勉強から離れていたブランクを迅速に埋めることができます。特に線形代数や微積分といった科目は<strong>1年次や2年次で履修</strong>しますが、<strong>院試が行われるのは4年次の夏</strong>です。</p>



<p class="wp-block-paragraph">そのため、講義資料を使って復習を行うことで効率的にブランクを埋められます。</p>



<p class="wp-block-paragraph">外部生の場合、自分の大学の講義資料は使えないと思う人もいるでしょう。しかし、院試数学の線形代数では「行列式の対角化」は頻繁に出てきます。また、旧帝大の微分方程式は「完全微分方程式」を出題しますが、旧帝大でも完全微分まで進めることが少ないです。</p>



<p class="wp-block-paragraph">要するに、どこの大学でも同じレベル程度しか勉強しないので、<strong>講義資料で土台作りは非常に効果的</strong>です。</p>



<h3 id="rtoc-3"  class="wp-block-heading">講義資料で勉強</h3>



<p class="wp-block-paragraph">まずは講義資料を活用して、単位取得（6割程度の理解）のレベルまで理解を深めることを目標にしてください。</p>



<p class="wp-block-paragraph">講義資料は通常、<strong>教科書や参考書を15回程度の講義で凝縮</strong>されており、大学の先生が教科書の重要ポイントをまとめた資料です。外部大学院を目指す場合でも、自分の大学で使用している講義資料で十分対応できます。</p>



<p class="wp-block-paragraph">実際に私は、自分の大学の講義スライドや教科書、レポート課題を徹底的に復習しました。その結果、基礎的な問題を確実に解けるようになり、院試対策の土台をしっかり作ることができました。</p>



<p class="wp-block-paragraph"><strong>講義資料を中心に学習を進める</strong>ことで、短期間で効率よく基礎力を固められます。</p>



<h3 id="rtoc-4"  class="wp-block-heading">マセマシリーズ</h3>


		<div class="pochipp-box"
			data-id="8755"
			data-img="l"
			data-lyt-pc="dflt"
			data-lyt-mb="vrtcl"
			data-btn-style="dflt"
			data-btn-radius="off"
			data-sale-effect="flash"
			 data-cvkey="b6b20309"		>
							<div class="pochipp-box__image">
					<a rel="nofollow" target="_self" href="https://www.amazon.co.jp/dp/4866153172?tag=b0420e-22&#038;linkCode=ogi&#038;th=1&#038;psc=1">
						<img loading="lazy" decoding="async" src="https://m.media-amazon.com/images/I/51o4byMwp1L._SL500_.jpg" alt="" width="120" height="120" />					</a>
				</div>
						<div class="pochipp-box__body">
				<div class="pochipp-box__title">
					<a rel="nofollow" target="_self" href="https://www.amazon.co.jp/dp/4866153172?tag=b0420e-22&#038;linkCode=ogi&#038;th=1&#038;psc=1">
						演習 線形代数キャンパス・ゼミ 改訂8					</a>
				</div>

				
									<div class="pochipp-box__price">
						¥2,267						<span>（2025/11/09 17:45時点 | Amazon調べ）</span>
					</div>
				
							</div>
				<div class="pochipp-box__btns"
		data-maxclmn-pc="fit"
		data-maxclmn-mb="1"
	>
					<div class="pochipp-box__btnwrap -amazon">
								<a rel="nofollow" target="_self" href="https://www.amazon.co.jp/dp/4866153172?tag=b0420e-22&#038;linkCode=ogi&#038;th=1&#038;psc=1" class="pochipp-box__btn">
					<span>
						Amazon					</span>
									</a>
			</div>
							<div class="pochipp-box__btnwrap -rakuten">
								<a rel="nofollow" target="_self" href="https://af.moshimo.com/af/c/click?a_id=4016319&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E3%2583%259E%25E3%2582%25BB%25E3%2583%259E" class="pochipp-box__btn">
					<span>
						楽天市場					</span>
					<img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=4016319&#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 rel="nofollow" target="_self" href="https://shopping.yahoo.co.jp/search?p=%E3%83%9E%E3%82%BB%E3%83%9E" class="pochipp-box__btn">
					<span>
						Yahooショッピング					</span>
									</a>
			</div>
									</div>
								<div class="pochipp-box__logo">
					<img loading="lazy" decoding="async" src="https://alicia-ing.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png" alt="" width="32" height="32">
					<span>ポチップ</span>
				</div>
					</div>
	


<p class="wp-block-paragraph">多くの受験生が院試数学の基礎固めに使用する<strong>「<a target="_self" href="https://www.amazon.co.jp/%E6%BC%94%E7%BF%92-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%91%E3%82%B9%E3%83%BB%E3%82%BC%E3%83%9F-%E6%94%B9%E8%A8%828-%E9%AB%98%E6%9D%89%E8%B1%8A%E3%80%81%E9%A6%AC%E5%A0%B4%E6%95%AC%E4%B9%8B/dp/4866153172?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=249IS6ABAUDJ1&amp;dib=eyJ2IjoiMSJ9.VRpxKg7Hk1KD9AjrcLAbVBhLJ4ZOsZGrr5eek8D3GQBQJyQ5rYg_qcZkiqdf1r9SwpGheTxaFE775Wxiy8_8L2mdxs_q_QV1v057QBS-IGMWCMOpTtOA418dyU3P7g26EBqyNoOvh6pTyP9QCh1QsL191qouqoA7CXW-Zbk1AC52Pw7RYiheLl92NvIyTbZtLNuPw3Lz7nuyeBaGgMiddsXxA02JOKucHhmuLw5sXrldXh3q8Umxd26Oafel0aLjRJ-1OWVr8OGmWRdOTHhjhQCnSN8P4c7pUBFi1e3MPtw.FWNy_5_Wpno2455GUrhFbpm4Y0HB5v2i77JTVm-WVxY&amp;dib_tag=se&amp;keywords=%E3%83%9E%E3%82%BB%E3%83%9E&amp;qid=1747470230&amp;sprefix=%E3%83%9E%E3%82%BB%E3%83%9E%2Caps%2C165&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=c1d6386f6671ef795fcff45a02199a18&amp;language=ja_JP&amp;ref_=as_li_ss_tl">マセマシリーズ</a>」</strong>ですが、いきなりこのシリーズに取り組むのは推奨しません。</p>



<p class="wp-block-paragraph"><a target="_self" href="https://www.amazon.co.jp/%E6%BC%94%E7%BF%92-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%91%E3%82%B9%E3%83%BB%E3%82%BC%E3%83%9F-%E6%94%B9%E8%A8%828-%E9%AB%98%E6%9D%89%E8%B1%8A%E3%80%81%E9%A6%AC%E5%A0%B4%E6%95%AC%E4%B9%8B/dp/4866153172?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=249IS6ABAUDJ1&amp;dib=eyJ2IjoiMSJ9.VRpxKg7Hk1KD9AjrcLAbVBhLJ4ZOsZGrr5eek8D3GQBQJyQ5rYg_qcZkiqdf1r9SwpGheTxaFE775Wxiy8_8L2mdxs_q_QV1v057QBS-IGMWCMOpTtOA418dyU3P7g26EBqyNoOvh6pTyP9QCh1QsL191qouqoA7CXW-Zbk1AC52Pw7RYiheLl92NvIyTbZtLNuPw3Lz7nuyeBaGgMiddsXxA02JOKucHhmuLw5sXrldXh3q8Umxd26Oafel0aLjRJ-1OWVr8OGmWRdOTHhjhQCnSN8P4c7pUBFi1e3MPtw.FWNy_5_Wpno2455GUrhFbpm4Y0HB5v2i77JTVm-WVxY&amp;dib_tag=se&amp;keywords=%E3%83%9E%E3%82%BB%E3%83%9E&amp;qid=1747470230&amp;sprefix=%E3%83%9E%E3%82%BB%E3%83%9E%2Caps%2C165&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=c1d6386f6671ef795fcff45a02199a18&amp;language=ja_JP&amp;ref_=as_li_ss_tl">マセマシリーズ</a>は基礎から応用まで幅広くカバーしており、問題数も非常に多いためブランクを解消するための段階では<strong><a target="_self" href="https://www.amazon.co.jp/%E6%BC%94%E7%BF%92-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%91%E3%82%B9%E3%83%BB%E3%82%BC%E3%83%9F-%E6%94%B9%E8%A8%828-%E9%AB%98%E6%9D%89%E8%B1%8A%E3%80%81%E9%A6%AC%E5%A0%B4%E6%95%AC%E4%B9%8B/dp/4866153172?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=249IS6ABAUDJ1&amp;dib=eyJ2IjoiMSJ9.VRpxKg7Hk1KD9AjrcLAbVBhLJ4ZOsZGrr5eek8D3GQBQJyQ5rYg_qcZkiqdf1r9SwpGheTxaFE775Wxiy8_8L2mdxs_q_QV1v057QBS-IGMWCMOpTtOA418dyU3P7g26EBqyNoOvh6pTyP9QCh1QsL191qouqoA7CXW-Zbk1AC52Pw7RYiheLl92NvIyTbZtLNuPw3Lz7nuyeBaGgMiddsXxA02JOKucHhmuLw5sXrldXh3q8Umxd26Oafel0aLjRJ-1OWVr8OGmWRdOTHhjhQCnSN8P4c7pUBFi1e3MPtw.FWNy_5_Wpno2455GUrhFbpm4Y0HB5v2i77JTVm-WVxY&amp;dib_tag=se&amp;keywords=%E3%83%9E%E3%82%BB%E3%83%9E&amp;qid=1747470230&amp;sprefix=%E3%83%9E%E3%82%BB%E3%83%9E%2Caps%2C165&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=c1d6386f6671ef795fcff45a02199a18&amp;language=ja_JP&amp;ref_=as_li_ss_tl">マセマ</a>のうま味を吸収しきれません</strong>。</p>



<p class="wp-block-paragraph">例えば、線形代数では3次行列式から始まり、徐々に固有値や固有ベクトル、対角化と進んでいきますが、準対角化（ジョルダン標準形）へと内容が発展していきます。</p>



<p class="wp-block-paragraph">私自身もブランクを抱えたまま<a target="_self" href="https://www.amazon.co.jp/%E6%BC%94%E7%BF%92-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%91%E3%82%B9%E3%83%BB%E3%82%BC%E3%83%9F-%E6%94%B9%E8%A8%828-%E9%AB%98%E6%9D%89%E8%B1%8A%E3%80%81%E9%A6%AC%E5%A0%B4%E6%95%AC%E4%B9%8B/dp/4866153172?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=249IS6ABAUDJ1&amp;dib=eyJ2IjoiMSJ9.VRpxKg7Hk1KD9AjrcLAbVBhLJ4ZOsZGrr5eek8D3GQBQJyQ5rYg_qcZkiqdf1r9SwpGheTxaFE775Wxiy8_8L2mdxs_q_QV1v057QBS-IGMWCMOpTtOA418dyU3P7g26EBqyNoOvh6pTyP9QCh1QsL191qouqoA7CXW-Zbk1AC52Pw7RYiheLl92NvIyTbZtLNuPw3Lz7nuyeBaGgMiddsXxA02JOKucHhmuLw5sXrldXh3q8Umxd26Oafel0aLjRJ-1OWVr8OGmWRdOTHhjhQCnSN8P4c7pUBFi1e3MPtw.FWNy_5_Wpno2455GUrhFbpm4Y0HB5v2i77JTVm-WVxY&amp;dib_tag=se&amp;keywords=%E3%83%9E%E3%82%BB%E3%83%9E&amp;qid=1747470230&amp;sprefix=%E3%83%9E%E3%82%BB%E3%83%9E%2Caps%2C165&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=c1d6386f6671ef795fcff45a02199a18&amp;language=ja_JP&amp;ref_=as_li_ss_tl">マセマ</a>を使った際、その問題量の多さと<strong>難易度に圧倒</strong>されてしまいました。理解が不十分なまま進めると途中で必ず行き詰まります。</p>



<p class="wp-block-paragraph">そのため、基礎的な知識をしっかり固めてから、自分の理解度に応じて慎重に使用する必要があります。</p>



<h4 class="wp-block-heading">数学科の院試でマセマは有効か？</h4>



<p class="wp-block-paragraph">数学科の院試でも、<a target="_self" href="https://www.amazon.co.jp/%E6%BC%94%E7%BF%92-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%91%E3%82%B9%E3%83%BB%E3%82%BC%E3%83%9F-%E6%94%B9%E8%A8%828-%E9%AB%98%E6%9D%89%E8%B1%8A%E3%80%81%E9%A6%AC%E5%A0%B4%E6%95%AC%E4%B9%8B/dp/4866153172?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=249IS6ABAUDJ1&amp;dib=eyJ2IjoiMSJ9.VRpxKg7Hk1KD9AjrcLAbVBhLJ4ZOsZGrr5eek8D3GQBQJyQ5rYg_qcZkiqdf1r9SwpGheTxaFE775Wxiy8_8L2mdxs_q_QV1v057QBS-IGMWCMOpTtOA418dyU3P7g26EBqyNoOvh6pTyP9QCh1QsL191qouqoA7CXW-Zbk1AC52Pw7RYiheLl92NvIyTbZtLNuPw3Lz7nuyeBaGgMiddsXxA02JOKucHhmuLw5sXrldXh3q8Umxd26Oafel0aLjRJ-1OWVr8OGmWRdOTHhjhQCnSN8P4c7pUBFi1e3MPtw.FWNy_5_Wpno2455GUrhFbpm4Y0HB5v2i77JTVm-WVxY&amp;dib_tag=se&amp;keywords=%E3%83%9E%E3%82%BB%E3%83%9E&amp;qid=1747470230&amp;sprefix=%E3%83%9E%E3%82%BB%E3%83%9E%2Caps%2C165&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=c1d6386f6671ef795fcff45a02199a18&amp;language=ja_JP&amp;ref_=as_li_ss_tl">マセマシリーズ</a>は基礎固めに有効です。</p>



<p class="wp-block-paragraph"><a target="_self" href="https://www.amazon.co.jp/%E6%BC%94%E7%BF%92-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%91%E3%82%B9%E3%83%BB%E3%82%BC%E3%83%9F-%E6%94%B9%E8%A8%828-%E9%AB%98%E6%9D%89%E8%B1%8A%E3%80%81%E9%A6%AC%E5%A0%B4%E6%95%AC%E4%B9%8B/dp/4866153172?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=249IS6ABAUDJ1&amp;dib=eyJ2IjoiMSJ9.VRpxKg7Hk1KD9AjrcLAbVBhLJ4ZOsZGrr5eek8D3GQBQJyQ5rYg_qcZkiqdf1r9SwpGheTxaFE775Wxiy8_8L2mdxs_q_QV1v057QBS-IGMWCMOpTtOA418dyU3P7g26EBqyNoOvh6pTyP9QCh1QsL191qouqoA7CXW-Zbk1AC52Pw7RYiheLl92NvIyTbZtLNuPw3Lz7nuyeBaGgMiddsXxA02JOKucHhmuLw5sXrldXh3q8Umxd26Oafel0aLjRJ-1OWVr8OGmWRdOTHhjhQCnSN8P4c7pUBFi1e3MPtw.FWNy_5_Wpno2455GUrhFbpm4Y0HB5v2i77JTVm-WVxY&amp;dib_tag=se&amp;keywords=%E3%83%9E%E3%82%BB%E3%83%9E&amp;qid=1747470230&amp;sprefix=%E3%83%9E%E3%82%BB%E3%83%9E%2Caps%2C165&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=c1d6386f6671ef795fcff45a02199a18&amp;language=ja_JP&amp;ref_=as_li_ss_tl">マセマ</a>は数学の基礎から応用まで網羅されているため、数学科の学生が感じる厳密性の不足などの批判もありますが、ブランクがある学生には特に適しています。</p>



<p class="wp-block-paragraph">したがって、数学科でも<a target="_self" href="https://www.amazon.co.jp/%E6%BC%94%E7%BF%92-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%91%E3%82%B9%E3%83%BB%E3%82%BC%E3%83%9F-%E6%94%B9%E8%A8%828-%E9%AB%98%E6%9D%89%E8%B1%8A%E3%80%81%E9%A6%AC%E5%A0%B4%E6%95%AC%E4%B9%8B/dp/4866153172?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=249IS6ABAUDJ1&amp;dib=eyJ2IjoiMSJ9.VRpxKg7Hk1KD9AjrcLAbVBhLJ4ZOsZGrr5eek8D3GQBQJyQ5rYg_qcZkiqdf1r9SwpGheTxaFE775Wxiy8_8L2mdxs_q_QV1v057QBS-IGMWCMOpTtOA418dyU3P7g26EBqyNoOvh6pTyP9QCh1QsL191qouqoA7CXW-Zbk1AC52Pw7RYiheLl92NvIyTbZtLNuPw3Lz7nuyeBaGgMiddsXxA02JOKucHhmuLw5sXrldXh3q8Umxd26Oafel0aLjRJ-1OWVr8OGmWRdOTHhjhQCnSN8P4c7pUBFi1e3MPtw.FWNy_5_Wpno2455GUrhFbpm4Y0HB5v2i77JTVm-WVxY&amp;dib_tag=se&amp;keywords=%E3%83%9E%E3%82%BB%E3%83%9E&amp;qid=1747470230&amp;sprefix=%E3%83%9E%E3%82%BB%E3%83%9E%2Caps%2C165&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=c1d6386f6671ef795fcff45a02199a18&amp;language=ja_JP&amp;ref_=as_li_ss_tl">マセマ</a>を使って勉強を始めてもよいでしょう。</p>



<h3 id="rtoc-5"  class="wp-block-heading">院試過去問</h3>



<p class="wp-block-paragraph">院試の過去問を入手したら、すぐに解こうとするのではなく、基礎が固まった後に取り組むことをお勧めします。</p>



<p class="wp-block-paragraph">私も過去問を早期に始めてしまい、十分な基礎がないまま解答に苦労した経験があります。過去問に取り組むのは基礎固めが終わった後にしましょう。</p>



<p class="wp-block-paragraph">ただし、どんな問題が出るか把握もせずに勉強をすることは時間を無駄にするので、解くのではなくどんな問題が出てくるのかということに着目することが良いでしょう。</p>



<h3 id="rtoc-6"  class="wp-block-heading">大学院への数学：東大と京大数学向け</h3>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">「<a target="_self" href="https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3-%E5%A4%A7%E5%AD%A6%E9%99%A2%E3%81%B8%E3%81%AE%E6%95%B0%E5%AD%A6-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E7%B7%A8-%E6%9C%AC%E7%94%B0%E9%BE%8D%E5%A4%AE/dp/4489021984?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=1SEF55ATEFOJI&amp;dib=eyJ2IjoiMSJ9.jz3TStrwuA0UNTrZLgK6K-4Ub4uPFWgEGFFGlDSV1lA-G1LHyqd2Qu0nAb8jisORcQJv4X4JYaYzoXfZa4xfxlKQwlqsxTQRB739TzUsxywUvQMRNoFMM4jB9zg07bj_8MWasN-_MNsR-pgVE1VHMEA3tdSXJK2lqZdz9J4CvIVH4dY-3w9-pN_pWabUyGzyzBka_heOoJY-WJF00aHvJN5wsjgYVKb3rbtqCF99SvrrEI-WcgNmZfNB4fyr7jlO91_q7_xX7ClnPr_xc783DhMJ9B7ugHJWyO2VDGGe1RU.tgR602whvFI550I2MW2J0fiQmJf9bZYCZZkRH4Q_LPg&amp;dib_tag=se&amp;keywords=%E5%A4%A7%E5%AD%A6%E9%99%A2%E3%81%B8%E3%81%AE%E6%95%B0%E5%AD%A6&amp;qid=1747470357&amp;sprefix=%E5%A4%A7%E5%AD%A6%E9%99%A2%E3%81%B8%E3%81%AE%E6%95%B0%E5%AD%A6%2Caps%2C161&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=cd8d1b15e31c65b70719ccb220b646df&amp;language=ja_JP&amp;ref_=as_li_ss_tl">大学院への数学</a>」は大学院で実際に出題された問題の内、良問を集めて作成された参考書です。多くの人が院試数学にはマセマシリーズで十分だと主張しています。付け加えるなら、東大や京大の院試やTOEICがあまり高くない人であれば、本書を解いてみることもよいでしょう。</p>



<p class="wp-block-paragraph">東大と京大はレベルも高いこともそうですが、何よりも倍率が他の大学よりも高いです。例えば、東北大学や大阪大学などの<strong>地方旧帝大は倍率1.2倍ほどで、多くても倍率は1.6倍</strong>ほどです。一方で、<strong>東大と京大の倍率は2倍</strong>を超えてきます。</p>



<p class="wp-block-paragraph">そのため、周りと差を付けないと落ちてしまうので、<strong>数学を得点源にしたい人</strong>は「<a target="_self" href="https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3-%E5%A4%A7%E5%AD%A6%E9%99%A2%E3%81%B8%E3%81%AE%E6%95%B0%E5%AD%A6-%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E7%B7%A8-%E6%9C%AC%E7%94%B0%E9%BE%8D%E5%A4%AE/dp/4489021984?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;crid=1SEF55ATEFOJI&amp;dib=eyJ2IjoiMSJ9.jz3TStrwuA0UNTrZLgK6K-4Ub4uPFWgEGFFGlDSV1lA-G1LHyqd2Qu0nAb8jisORcQJv4X4JYaYzoXfZa4xfxlKQwlqsxTQRB739TzUsxywUvQMRNoFMM4jB9zg07bj_8MWasN-_MNsR-pgVE1VHMEA3tdSXJK2lqZdz9J4CvIVH4dY-3w9-pN_pWabUyGzyzBka_heOoJY-WJF00aHvJN5wsjgYVKb3rbtqCF99SvrrEI-WcgNmZfNB4fyr7jlO91_q7_xX7ClnPr_xc783DhMJ9B7ugHJWyO2VDGGe1RU.tgR602whvFI550I2MW2J0fiQmJf9bZYCZZkRH4Q_LPg&amp;dib_tag=se&amp;keywords=%E5%A4%A7%E5%AD%A6%E9%99%A2%E3%81%B8%E3%81%AE%E6%95%B0%E5%AD%A6&amp;qid=1747470357&amp;sprefix=%E5%A4%A7%E5%AD%A6%E9%99%A2%E3%81%B8%E3%81%AE%E6%95%B0%E5%AD%A6%2Caps%2C161&amp;sr=8-3&amp;linkCode=ll1&amp;tag=b0420e-22&amp;linkId=cd8d1b15e31c65b70719ccb220b646df&amp;language=ja_JP&amp;ref_=as_li_ss_tl">大学院への数学</a>」がおすすめです。</p>



<p class="wp-block-paragraph">ただし、<strong>非常に難解で解説も薄く挫折する学生が多い</strong>です。繰り返すように本書は「実際の院試」を集めたので、<strong>これが解けないと落ちてしまうと考えてしまい</strong>むしろ不安になるだけに終わる人も多いです。</p>



<p class="wp-block-paragraph">したがって、無理に全問を解こうとせず自分が必要とする難易度の問題だけを選択して取り組むようにしましょう。</p>



<h2 id="rtoc-7"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">数学の院試対策で大切なことは、工学部、理学部、数学科に限らず焦らないことです。数年ぶりに数学に触れるのであれば、まずは同じ科目の講義資料とレポート課題に取り組んでブランクを解消しましょう。</p>



<p class="wp-block-paragraph">過去問を見て、解けそうにないなら「マセマシリーズ」で知識をさらに増やしてみてから過去問を解いてください。</p>



<p class="wp-block-paragraph">東大や京大など数学で差を付けたい人はぜひ「大学院への数学」にも挑戦してみてください。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>院試が落ちそうだと不安な人におすすめな記事です。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/life/student/gs-fail-exam/" title="【院試】大学院は落ちない？不合格確率の考察と落ちた後の行動" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2024/06/fail-exam-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2024/06/fail-exam-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2024/06/fail-exam-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2024/06/fail-exam-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【院試】大学院は落ちない？不合格確率の考察と落ちた後の行動</div><div class="blogcard-snippet internal-blogcard-snippet">院試では、内部生有利。外部生は、1年前～半年前から勉強を始める。外部生は内部生よりも試験対策して良い成績を取る。不合格の確率を下げるために過去問や教科書で分からない問題をなくして落とさない。大学院に落ちた場合は、就職する。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.02.20</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/life/student/graduate-exam-math/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【メモリ8GBは足りない】Windows11ノートパソコンに最適なメモリ</title>
		<link>https://alicia-ing.com/life/memory-8gb-laptop-pc/</link>
					<comments>https://alicia-ing.com/life/memory-8gb-laptop-pc/#respond</comments>
		
		<dc:creator><![CDATA[アリッシア]]></dc:creator>
		<pubDate>Sun, 11 May 2025 22:00:00 +0000</pubDate>
				<category><![CDATA[生活発信]]></category>
		<guid isPermaLink="false">https://alicia-ing.com/?p=8685</guid>

					<description><![CDATA[Windows11のノートパソコンを使っている人なら、一度は「メモリ8GBで足りるのか？」と悩んだ経験があるのではないでしょうか。 近年ではソフトやアプリの高機能化が著しく進み、それに伴ってメモリ消費も大幅に増えています [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Windows11のノートパソコンを使っている人なら、一度は「メモリ8GBで足りるのか？」と悩んだ経験があるのではないでしょうか。</p>



<p class="wp-block-paragraph">近年ではソフトやアプリの高機能化が著しく進み、それに伴ってメモリ消費も大幅に増えています。快適に作業を進めるためには、適切なメモリ容量を選択することが不可欠です。</p>



<p class="wp-block-paragraph">本記事では、Web閲覧やOffuce、プログラミングなど使用用途別でメモリの推奨を提案していきます。</p>



<p class="wp-block-paragraph">本記事を読むと次のことができます：<br><strong>自分の使い方（Web閲覧・Office・プログラミング・動画編集・ゲームなど）に必要なメモリ容量が分かり、増設や購入で失敗しなくなります。</strong></p>



<p class="wp-block-paragraph">本記事では、著者が実際にメモリ8GB→16GBへ増設して感じた変化や、タスクマネージャーで確認した実際のメモリ使用率も交えながら、使用用途別でメモリの推奨を提案していきます。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-check"><span class="label-box-label-text block-box-label-text box-label-text">本記事は次の人におすすめ</span></div><div class="label-box-content block-box-content box-content">
<ul class="wp-block-list">
<li>ノートパソコンのメモリ8GBが十分か悩んでいる方</li>



<li>Windows11を快適に使いたい方</li>



<li>動画編集やゲーム開発を考えている方</li>



<li>プログラミングやアプリ開発を始める予定の方</li>



<li>コストパフォーマンスを考えつつ、性能の良いパソコンを選びたい方</li>
</ul>
</div></div>



<div id="rtoc-mokuji-wrapper" class="rtoc-mokuji-content frame3 preset1 animation-none rtoc_open default" data-id="8685" data-theme="Cocoon Child">
			<div id="rtoc-mokuji-title" class=" rtoc_left">
			<button class="rtoc_open_close rtoc_open"></button>
			<span>目次</span>
			</div><ol class="rtoc-mokuji decimal_ol level-1"><li class="rtoc-item"><a href="#rtoc-1">ノートパソコンのメモリ8GBは足りない</a><ul class="rtoc-mokuji mokuji_ul level-2"><li class="rtoc-item"><a href="#rtoc-2">Web閲覧、Office、動画視聴</a></li><li class="rtoc-item"><a href="#rtoc-3">プログラミングや開発</a></li><li class="rtoc-item"><a href="#rtoc-4">動画編集はメモリ8GBは足りる？</a></li><li class="rtoc-item"><a href="#rtoc-5">ゲームはメモリ8GBは足りる？</a></li></ul></li><li class="rtoc-item"><a href="#rtoc-6">Windows11はメモリ16GBを推奨している</a></li><li class="rtoc-item"><a href="#rtoc-7">メモリの故障・不足が疑われるときはmemtest86で確認する</a></li><li class="rtoc-item"><a href="#rtoc-8">まとめ</a></li></ol></div><h2 id="rtoc-1"  class="wp-block-heading">ノートパソコンのメモリ8GBは足りない</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1536" height="1024" src="https://alicia-ing.com/wp-content/uploads/2025/05/laptop-memory-8gb.webp" alt="" class="wp-image-8690" srcset="https://alicia-ing.com/wp-content/uploads/2025/05/laptop-memory-8gb.webp 1536w, https://alicia-ing.com/wp-content/uploads/2025/05/laptop-memory-8gb-300x200.webp 300w, https://alicia-ing.com/wp-content/uploads/2025/05/laptop-memory-8gb-1024x683.webp 1024w, https://alicia-ing.com/wp-content/uploads/2025/05/laptop-memory-8gb-768x512.webp 768w" sizes="(max-width: 1536px) 100vw, 1536px" /></figure>



<p class="wp-block-paragraph">ノートパソコンのメモリが8GBで充分かどうかは、ユーザーがどのような用途でパソコンを使用するかによって大きく異なります。</p>



<p class="wp-block-paragraph">なぜなら、利用するソフトやアプリケーションによって必要な処理能力が大きく変わるためです。</p>



<p class="wp-block-paragraph">例えば、スマートフォンを例に挙げると、iPhone SEはメモリ4GB、最新のiPhone 15は6GB、さらにipad Airは8GB、高性能なiPad Proは16GBを搭載しています。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-light-green-cyan-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#7bdcb5"><div class="tab-caption-box-label block-box-label box-label fab-check"><span class="tab-caption-box-label-text block-box-label-text box-label-text">メモリの参考ページ</span></div><div class="tab-caption-box-content block-box-content box-content">
<ul class="wp-block-list">
<li><a target="_self" href="https://discussions.apple.com/thread/253886826?sortBy=rank">iPhoneSE</a>（公式の発表はないが、Apple サポートコミュニティにより言及）</li>



<li><a target="_self" href="https://discussions.apple.com/thread/255455692?sortBy=rank">iPhone15</a>（同様にApple サポートコミュニティの投稿）</li>



<li><a target="_self" href="https://www.apple.com/ipad-air/specs/">iPad Air</a>(チップ名とRAMを公表)</li>



<li><a target="_self" href="https://www.apple.com/ipad-pro/specs/">iPad Pro</a>（同様にチップ名とRAMを公表。1TBか2TB storageは16GB&nbsp;RAM）</li>
</ul>
</div></div>



<p class="wp-block-paragraph">これらの機器は、YouTubeの視聴やSNSの閲覧といった比較的軽い処理では快適に動作しますが、動画編集や3Dゲームなどの重い処理を行うと、ハイスペックな「iPad Pro」クラスでない限り動作が鈍くなることがあります。このようにメモリは動作処理において重要な要素です。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-red-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#e60033"><div class="tab-caption-box-label block-box-label box-label fab-check"><span class="tab-caption-box-label-text block-box-label-text box-label-text">注意</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph"> メーカー公式でも、LenovoやNEC LAVIEなど主要メーカーのノートパソコンは、標準構成として16GBメモリを採用する機種が増えています。市場全体が「8GB卒業」の流れにあることも、選び方の参考にしてください。</p>
</div></div>



<p class="wp-block-paragraph">以下では、具体的な利用シーンを上げて必要なメモリ容量を私の実体験を基に紹介します。</p>



<h3 id="rtoc-2"  class="wp-block-heading">Web閲覧、Office、動画視聴</h3>



<p class="wp-block-paragraph">WebブラウジングやOfficeソフトを利用した資料作成、一般的な動画視聴であれば、<strong>8GBのメモリでも比較的余裕をもって動作</strong>します。</p>



<p class="wp-block-paragraph"> 私自身も普段のWeb閲覧でタブを数個程度開いたり、Officeソフトで軽い作業を行ったりする分には、特に問題を感じたことはありませんでした。実際にタスクマネージャーを確認したところ、ブラウザのタブを5〜6個・Wordを1つ開いた状態でのメモリ使用率はおおよそ50〜60%程度（8GB環境で4〜5GB前後）でした。</p>



<p class="wp-block-paragraph">ただし、数十個のように多数のタブを開きすぎたり、複数のOfficeアプリケーションを同時に操作するとメモリ消費が増加し、若干の動作遅延が発生することがあります。タブを開きすぎていないか不安なときは、Ctrl + Shift + Esc でタスクマネージャーを開き、メモリ使用率を確認する習慣をつけておくと安心です。</p>



<h3 id="rtoc-3"  class="wp-block-heading">プログラミングや開発</h3>



<p class="wp-block-paragraph">簡易なプログラミングやコーディングであれば、8GBでも問題なく動作します。</p>



<p class="wp-block-paragraph">例えば、VSCodeでPythonやHTML/CSSを使ったWebデザイン、大学の授業で行う程度のC言語プログラミングはストレスなく行うことができます。</p>



<p class="wp-block-paragraph">しかし、本格的なアプリ開発やゲーム開発、統合開発環境を使った複雑なプロジェクトになると、メモリ8GBでは不十分に感じる場面が増えてきます。</p>



<h4 class="wp-block-heading">ゲーム開発でメモリ8GBは足りる？</h4>



<p class="wp-block-paragraph">ゲーム開発ではグラフィックやエフェクトの処理、膨大な量のデータ管理が必要なため、<strong>8GBのメモリではやや不足気味</strong>です。</p>



<p class="wp-block-paragraph">私自身もUnityを用いて2Dゲームを開発した際、メモリが8GBの環境では処理が遅くなったり、動作が不安定になることがありました。Unity EditorとVSCodeを同時に起動した状態でタスクマネージャーを確認すると、メモリ使用率は80%を超えることが多く、ビルド中はさらに跳ね上がってフリーズに近い状態になることもありました。</p>



<p class="wp-block-paragraph">特に3Dゲーム開発ではさらにメモリ消費が多くなります。アセットの読み込みやリアルタイムレンダリング処理に伴い、<strong>最低でも16GB以上のメモリ容量</strong>をおすすめします。</p>



<h4 class="wp-block-heading">アプリ開発はメモリ8GBは足りる？</h4>



<p class="wp-block-paragraph">アプリ開発でも8GBでは厳しいケースがあります。</p>



<p class="wp-block-paragraph">アプリ開発ではコードが数千行から数万行に及ぶことが多く、特にFlutterのホットリロード機能や、Android Studio、Visual Studio、Xcodeなどの重量級の開発環境を使う場合、メモリ消費が非常に大きくなります。</p>



<p class="wp-block-paragraph">私も実際にメモリを16GBに増設することで、コードのコンパイル速度や開発環境の安定性が劇的に向上しました。増設前は8GB環境でAndroid Studioを起動するだけでメモリ使用率が90%近くまで達していましたが、16GBに増設後は同じ作業でも50〜60%程度に収まり、エミュレータを並行起動しても余裕を持って作業できるようになりました。</p>



<h3 id="rtoc-4"  class="wp-block-heading">動画編集はメモリ8GBは足りる？</h3>



<p class="wp-block-paragraph">編集を凝らない簡単な動画編集やShortのような短い動画のカットや簡易的な字幕挿入程度であれば、8GBでも作業は可能です。</p>



<p class="wp-block-paragraph">しかし、最近のYouTubeのような高品質な動画編集を行うには、エフェクト処理や高解像度の素材を扱う必要があり、8GBでは処理能力が大きく不足します。</p>



<p class="wp-block-paragraph">Premiere ProやDaVinci Resolve、ゆっくりムービーメーカーなどの高度な編集ソフトを快適に使うには最低でも16GB、頻繁に動画編集を行う方には32GBを推奨します。</p>



<h3 id="rtoc-5"  class="wp-block-heading">ゲームはメモリ8GBは足りる？</h3>



<p class="wp-block-paragraph">ゲームのプレイについても、8GBでプレイ可能な軽量ゲームも存在しますが、基本的には16GB以上を推奨します。</p>



<p class="wp-block-paragraph">Minecraftやテトリスなど比較的<strong>軽いゲームは8GBでも</strong>動かすことができますが、モンスターハンターやエルデンリングといった最新の高グラフィックゲームを楽しむには8GBでは動作が重く、快適とは言えません。</p>



<p class="wp-block-paragraph"> 私自身、高グラフィックゲームをプレイする際、メモリを16GBに増設して初めてストレスフリーに楽しめるようになりました。8GB環境ではゲーム起動中のメモリ使用率が常に85%以上に張り付き、ロード時間の長さやフレームレートの低下を感じていましたが、16GBに増設後はメモリ使用率が60%前後に落ち着き、動作も安定しました。</p>



<h2 id="rtoc-6"  class="wp-block-heading">Windows11はメモリ16GBを推奨している</h2>



<p class="wp-block-paragraph">多くのWindows11のパソコンには生成AI「Coplit+」が搭載されていて、メモリは16GBを推奨しています。現在の市場では、メモリ8GBでは通用しない状況になっています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Copilot+ PCs are a new class of Windows 11 AI PCs that are powered by a turbocharged neural processing unit (NPU)—a specialized computer chip for AI-intensive processes like real-time translations and image generation— that can perform more than 40 trillion operations per second (TOPS).</p>



<p class="wp-block-paragraph">To run unique Copilot+ PC experiences, customers will need to acquire new hardware. In addition to the&nbsp;<a target="_self" href="https://www.microsoft.com/en-us/windows/windows-11-specifications?r=1#table1">minimum system requirements for Windows 11</a>, Copilot+ PCs must include the following:</p>



<ul class="wp-block-list">
<li><strong>Processor:</strong>&nbsp;A compatible processor or System on a Chip (SoC) with an NPU capable of performing 40+ TOPS. This currently includes:
<ul class="wp-block-list">
<li><a target="_self" href="https://www.amd.com/en/products/processors/consumer/ryzen-ai.html">AMD Ryzen™ AI 300 series</a></li>



<li><a target="_self" href="https://www.intel.com/content/www/us/en/newsroom/resources/press-kit-core-ultra-series-2.html#gs.j6ztk1">Intel® Core™ Ultra 200V series</a></li>



<li><a target="_self" href="https://www.qualcomm.com/products/mobile/snapdragon/laptops-and-tablets/snapdragon-x">Snapdragon® X</a></li>



<li><a target="_self" href="https://www.qualcomm.com/products/mobile/snapdragon/laptops-and-tablets/snapdragon-x-plus">Snapdragon® X Plus</a></li>



<li><a target="_self" href="https://www.qualcomm.com/products/mobile/snapdragon/laptops-and-tablets/snapdragon-x-elite">Snapdragon® X Elite</a></li>
</ul>
</li>



<li><strong>RAM:</strong>&nbsp;16 GB DDR5/LPDDR5</li>



<li><strong>Storage:</strong>&nbsp;256 GB SSD/UFS</li>
</ul>



<p class="wp-block-paragraph">Specific features, plus apps and hardware that you add to your Copilot+ PC may have additional hardware, software, or other requirements, and these requirements may change over time.</p>
<cite><a target="_self" href="https://www.microsoft.com/en-us/windows/windows-11-specifications">Find Windows&nbsp;11 specs, features, and computer requirements</a></cite></blockquote>



<p class="wp-block-paragraph">Microsoft公式の要件に加え、主要メーカーであるLenovoやNEC LAVIEの最新モデルも16GBを標準構成として採用する流れが強まっており、複数の一次情報から見ても「8GBは最低ライン、16GBが標準」という結論が支持されています。</p>



<h2 id="rtoc-7"  class="wp-block-heading">メモリの故障・不足が疑われるときはmemtest86で確認する</h2>



<p class="wp-block-paragraph">「動作が重いのはメモリ容量不足なのか、メモリ自体の故障や不良なのか」を見分けたい場合は、<strong>memtest86</strong>というメモリ診断ツールを使う方法があります。</p>



<p class="wp-block-paragraph">memtest86はUSBから起動してメモリの読み書きエラーを検査する無料ツールです。容量不足による単純な動作遅延とは別に、メモリモジュールの物理的な不良が疑われる場合（突然のブルースクリーンや再起動が頻発する場合など）は、まずmemtest86で異常がないか確認してから、容量の増設を検討すると安心です。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box has-border-color has-red-border-color not-nested-style cocoon-block-tab-caption-box" style="--cocoon-custom-border-color:#e60033"><div class="tab-caption-box-label block-box-label box-label fab-check"><span class="tab-caption-box-label-text block-box-label-text box-label-text">注意</span></div><div class="tab-caption-box-content block-box-content box-content">
<p class="wp-block-paragraph">memtest86での検査には数十分〜数時間かかる場合があります。作業の合間や夜間など、パソコンを長時間使わないタイミングで実行することをおすすめします。</p>
</div></div>



<h2 id="rtoc-8"  class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">現在、ソフトやアプリの高機能化が進んでいます。Windows11のノートパソコンのメモリは8GBでは足りなくなってきています。</p>



<p class="wp-block-paragraph">メモリ16GBにするには、あらかじめ16GBの製品を購入することが近道ですが、自分でメモリを増設することも手です。実際に私もメモリを増設したことで、ゲーム開発・アプリ開発・ゲームプレイのいずれでも動作の安定性が大きく向上しました。</p>



<div class="wp-block-cocoon-blocks-micro-text micro-text micro-copy micro-top"><span class="micro-text-content micro-content"><span class="micro-text-icon micro-icon fab-info-circle"></span>メモリ増設の方法を紹介しています。</span></div>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-together">

<a target="_self" href="https://alicia-ing.com/life/best-buy/additional-memory/" title="【増設解説】ノートパソコンのメモリを8GBから16GBにする" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://alicia-ing.com/wp-content/uploads/2023/02/additional-memory-160x90.webp" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://alicia-ing.com/wp-content/uploads/2023/02/additional-memory-160x90.webp 160w, https://alicia-ing.com/wp-content/uploads/2023/02/additional-memory-120x68.webp 120w, https://alicia-ing.com/wp-content/uploads/2023/02/additional-memory-320x180.webp 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【増設解説】ノートパソコンのメモリを8GBから16GBにする</div><div class="blogcard-snippet internal-blogcard-snippet">ノートパソコンのメモリは8GBでは足りないので、メモリ拡張検討するべきです。もう1枚メモリを増設して16GB以上にすることで、快適に動画編集やゲームエンジン、3Dオブジェクト制作ソフトウェアを動かすことができます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://alicia-ing.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">alicia-ing.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2025.08.11</div></div></div></div></a>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://alicia-ing.com/life/memory-8gb-laptop-pc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
