<?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://menda-fun.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://menda-fun.com</link>
	<description></description>
	<lastBuildDate>Sat, 22 Mar 2025 23:14:45 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>
	<item>
		<title>【paiza】N * N の九九表の出力 JavaScript編</title>
		<link>https://menda-fun.com/paiza-2dim_array_boss/</link>
					<comments>https://menda-fun.com/paiza-2dim_array_boss/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sat, 22 Mar 2025 23:14:42 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[paiza]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Paiza]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=911</guid>

					<description><![CDATA[はじめに プログラミング学習サイト「paiza」には様々なコーディング問題が用意されています。今回は「N * N の 2 次元配列の表示」という問題を JavaScript で解いた方法について解説し ... <p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">はじめに</h2>



<p>プログラミング学習サイト「paiza」には様々なコーディング問題が用意されています。今回は「N * N の 2 次元配列の表示」という問題を JavaScript で解いた方法について解説します。この問題は N×N の九九表（掛け算表）を出力するというシンプルながらも配列操作の基本を学べる良問です。</p>



<h2 class="wp-block-heading">問題の概要</h2>



<p><strong><a href="https://paiza.jp/works/mondai/stdout_primer/stdout_primer__2dim_array_boss">【n * n の 2 次元配列の表示】N * N の九九表の出力 JavaScript編（paizaランク C 相当）</a></strong></p>



<p>問題の要件は次のとおりです：</p>



<ul class="wp-block-list">
<li>入力された整数 N に対して、N×N の掛け算表（九九表）を出力する</li>



<li>各行の数値は半角スペースで区切る</li>
</ul>



<p>例えば、N=3 の場合、以下のような出力になります：</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="1 2 3
2 4 6
3 6 9" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #D33682">1</span><span style="color: #839496"> </span><span style="color: #D33682">2</span><span style="color: #839496"> </span><span style="color: #D33682">3</span></span>
<span class="line"><span style="color: #D33682">2</span><span style="color: #839496"> </span><span style="color: #D33682">4</span><span style="color: #839496"> </span><span style="color: #D33682">6</span></span>
<span class="line"><span style="color: #D33682">3</span><span style="color: #839496"> </span><span style="color: #D33682">6</span><span style="color: #839496"> </span><span style="color: #D33682">9</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解答コード</h2>



<p>まずは解答コードを見てみましょう：</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="const n = parseInt(lines[0])
const arr = [...Array(n)].map((_, i) =&gt; [...Array(n)].map((_, p) =&gt; (i + 1)*(p + 1)))
arr.map((item) =&gt; console.log(item.join(&quot; &quot;)))" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #93A1A1; font-weight: bold">const</span><span style="color: #839496"> </span><span style="color: #268BD2">n</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> </span><span style="color: #268BD2">parseInt</span><span style="color: #839496">(</span><span style="color: #268BD2">lines</span><span style="color: #839496">[</span><span style="color: #D33682">0</span><span style="color: #839496">])</span></span>
<span class="line"><span style="color: #93A1A1; font-weight: bold">const</span><span style="color: #839496"> </span><span style="color: #268BD2">arr</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> [</span><span style="color: #859900">...</span><span style="color: #268BD2">Array</span><span style="color: #839496">(</span><span style="color: #268BD2">n</span><span style="color: #839496">)].</span><span style="color: #268BD2">map</span><span style="color: #839496">((_, i) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> [</span><span style="color: #859900">...</span><span style="color: #268BD2">Array</span><span style="color: #839496">(</span><span style="color: #268BD2">n</span><span style="color: #839496">)].</span><span style="color: #268BD2">map</span><span style="color: #839496">((_, p) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> (</span><span style="color: #268BD2">i</span><span style="color: #839496"> </span><span style="color: #859900">+</span><span style="color: #839496"> </span><span style="color: #D33682">1</span><span style="color: #839496">)</span><span style="color: #859900">*</span><span style="color: #839496">(</span><span style="color: #268BD2">p</span><span style="color: #839496"> </span><span style="color: #859900">+</span><span style="color: #839496"> </span><span style="color: #D33682">1</span><span style="color: #839496">)))</span></span>
<span class="line"><span style="color: #268BD2">arr</span><span style="color: #839496">.</span><span style="color: #268BD2">map</span><span style="color: #839496">((item) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> </span><span style="color: #268BD2">console</span><span style="color: #839496">.</span><span style="color: #268BD2">log</span><span style="color: #839496">(</span><span style="color: #268BD2">item</span><span style="color: #839496">.</span><span style="color: #268BD2">join</span><span style="color: #839496">(</span><span style="color: #2AA198">&quot; &quot;</span><span style="color: #839496">)))</span></span></code></pre></div>



<p>たった3行のコードですが、JavaScript の配列操作とモダンな文法をふんだんに使っています。一行ずつ丁寧に解説していきます。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">コードの解説</h2>



<h3 class="wp-block-heading">1行目：入力値の取得と変換</h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="const n = parseInt(lines[0])" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #93A1A1; font-weight: bold">const</span><span style="color: #839496"> </span><span style="color: #268BD2">n</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> </span><span style="color: #268BD2">parseInt</span><span style="color: #839496">(</span><span style="color: #268BD2">lines</span><span style="color: #839496">[</span><span style="color: #D33682">0</span><span style="color: #839496">])</span></span></code></pre></div>



<p>この行では、入力された文字列（<code>lines[0]</code>）を整数に変換しています。<code>parseInt</code> 関数を使うことで、文字列を数値に変換できます。これにより、九九表のサイズ N が決まります。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">2行目：二次元配列の生成</h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="const arr = [...Array(n)].map((_, i) =&gt; [...Array(n)].map((_, p) =&gt; (i + 1)*(p + 1)))" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #93A1A1; font-weight: bold">const</span><span style="color: #839496"> </span><span style="color: #268BD2">arr</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> [</span><span style="color: #859900">...</span><span style="color: #268BD2">Array</span><span style="color: #839496">(</span><span style="color: #268BD2">n</span><span style="color: #839496">)].</span><span style="color: #268BD2">map</span><span style="color: #839496">((_, i) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> [</span><span style="color: #859900">...</span><span style="color: #268BD2">Array</span><span style="color: #839496">(</span><span style="color: #268BD2">n</span><span style="color: #839496">)].</span><span style="color: #268BD2">map</span><span style="color: #839496">((_, p) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> (</span><span style="color: #268BD2">i</span><span style="color: #839496"> </span><span style="color: #859900">+</span><span style="color: #839496"> </span><span style="color: #D33682">1</span><span style="color: #839496">)</span><span style="color: #859900">*</span><span style="color: #839496">(</span><span style="color: #268BD2">p</span><span style="color: #839496"> </span><span style="color: #859900">+</span><span style="color: #839496"> </span><span style="color: #D33682">1</span><span style="color: #839496">)))</span></span></code></pre></div>



<p>この行が今回のコードの核心部分で、複数のテクニックを組み合わせています。</p>



<h4 class="wp-block-heading"><code>Array(n)</code> と スプレッド構文 <code>[...]</code></h4>



<p><code>Array(n)</code> は長さ n の配列を生成しますが、各要素は <code>undefined</code> です。この配列を直接 <code>map</code> メソッドで処理しようとすると、<code>undefined</code> の要素に対して処理が行われないという問題があります。</p>



<p>そこでスプレッド構文 <code>[...Array(n)]</code> を使うことで、<code>undefined</code> で埋められた長さ n の配列を新しい配列に展開します。これにより、<code>map</code> メソッドが各要素に対して確実に実行されるようになります。</p>



<h4 class="wp-block-heading">二重の <code>map</code> による二次元配列の作成</h4>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="[...Array(n)].map((_, i) =&gt; [...Array(n)].map((_, p) =&gt; (i + 1)*(p + 1)))" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">[</span><span style="color: #859900">...</span><span style="color: #268BD2">Array</span><span style="color: #839496">(</span><span style="color: #268BD2">n</span><span style="color: #839496">)].</span><span style="color: #268BD2">map</span><span style="color: #839496">((_, i) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> [</span><span style="color: #859900">...</span><span style="color: #268BD2">Array</span><span style="color: #839496">(</span><span style="color: #268BD2">n</span><span style="color: #839496">)].</span><span style="color: #268BD2">map</span><span style="color: #839496">((_, p) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> (</span><span style="color: #268BD2">i</span><span style="color: #839496"> </span><span style="color: #859900">+</span><span style="color: #839496"> </span><span style="color: #D33682">1</span><span style="color: #839496">)</span><span style="color: #859900">*</span><span style="color: #839496">(</span><span style="color: #268BD2">p</span><span style="color: #839496"> </span><span style="color: #859900">+</span><span style="color: #839496"> </span><span style="color: #D33682">1</span><span style="color: #839496">)))</span></span></code></pre></div>



<p>外側の <code>map</code> は行を生成し、内側の <code>map</code> は各行の列（セル）を生成します。</p>



<ul class="wp-block-list">
<li>外側の <code>map</code> の引数 <code>(_, i)</code> の <code>i</code> は行のインデックス（0から始まる）</li>



<li>内側の <code>map</code> の引数 <code>(_, p)</code> の <code>p</code> は列のインデックス（0から始まる）</li>



<li><code>(i+1)*(p+1)</code> で、実際の掛け算の値を計算（インデックスは0始まりなので1を足す）</li>
</ul>



<p>アンダースコア <code>_</code> は、使用しない引数（この場合は配列の各要素）を無視するための慣習的な書き方です。</p>



<p>この部分により、N×N の二次元配列 <code>arr</code> が完成します。例えば N=3 の場合、次のような配列になります：</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="[
  [1, 2, 3],  // (0+1)*(0+1), (0+1)*(1+1), (0+1)*(2+1)
  [2, 4, 6],  // (1+1)*(0+1), (1+1)*(1+1), (1+1)*(2+1)
  [3, 6, 9]   // (2+1)*(0+1), (2+1)*(1+1), (2+1)*(2+1)
]" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">[</span></span>
<span class="line"><span style="color: #839496">  [</span><span style="color: #D33682">1</span><span style="color: #839496">, </span><span style="color: #D33682">2</span><span style="color: #839496">, </span><span style="color: #D33682">3</span><span style="color: #839496">],  </span><span style="color: #586E75; font-style: italic">// (0+1)*(0+1), (0+1)*(1+1), (0+1)*(2+1)</span></span>
<span class="line"><span style="color: #839496">  [</span><span style="color: #D33682">2</span><span style="color: #839496">, </span><span style="color: #D33682">4</span><span style="color: #839496">, </span><span style="color: #D33682">6</span><span style="color: #839496">],  </span><span style="color: #586E75; font-style: italic">// (1+1)*(0+1), (1+1)*(1+1), (1+1)*(2+1)</span></span>
<span class="line"><span style="color: #839496">  [</span><span style="color: #D33682">3</span><span style="color: #839496">, </span><span style="color: #D33682">6</span><span style="color: #839496">, </span><span style="color: #D33682">9</span><span style="color: #839496">]   </span><span style="color: #586E75; font-style: italic">// (2+1)*(0+1), (2+1)*(1+1), (2+1)*(2+1)</span></span>
<span class="line"><span style="color: #839496">]</span></span></code></pre></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">3行目：結果の出力</h3>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="arr.map((item) =&gt; console.log(item.join(&quot; &quot;)))" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">arr</span><span style="color: #839496">.</span><span style="color: #268BD2">map</span><span style="color: #839496">((item) </span><span style="color: #93A1A1; font-weight: bold">=&gt;</span><span style="color: #839496"> </span><span style="color: #268BD2">console</span><span style="color: #839496">.</span><span style="color: #268BD2">log</span><span style="color: #839496">(</span><span style="color: #268BD2">item</span><span style="color: #839496">.</span><span style="color: #268BD2">join</span><span style="color: #839496">(</span><span style="color: #2AA198">&quot; &quot;</span><span style="color: #839496">)))</span></span></code></pre></div>



<p>この行では、作成した二次元配列 <code>arr</code> の各行（<code>item</code>）を取り出し、<code>join(" ")</code> メソッドで要素をスペースで区切った文字列に変換してから <code>console.log</code> で出力しています。</p>



<p><code>join</code> メソッドは配列の要素を指定した区切り文字（ここではスペース）で連結した文字列を返します。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p>今回のコードは、JavaScriptの配列操作と関数型プログラミングの手法を使って、N×N の九九表を簡潔に表現しています。特に注目すべき点は：</p>



<ol class="wp-block-list has-light-grayish-red-background-color has-background">
<li>スプレッド構文と <code>Array(n)</code> を組み合わせた空配列の初期化</li>



<li><code>map</code> メソッドを二重に使った二次元配列の生成</li>



<li>インデックスを利用した計算と変換</li>
</ol>



<p>このようなコーディングスタイルは、多くのモダンなJavaScriptプロジェクトで見られ、コードの可読性と簡潔さを両立させています。</p>



<p>この記事が皆さんのJavaScript学習の参考になれば幸いです。他のプログラミング問題にも同様のテクニックを応用してみてください！</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">発展課題</h2>



<p>さらに学習を深めたい方へ、いくつかの発展課題を提案します：</p>



<ol class="wp-block-list">
<li><code>reduce</code> メソッドを使って同じ結果を得るコードを書いてみる</li>



<li>各セルの表示幅を揃えるように改良する（例：二桁の数字も右揃えにする）</li>



<li>九九表だけでなく、任意の計算（足し算、引き算など）に対応するように拡張する</li>
</ol>



<p>これらの課題に取り組むことで、JavaScript の配列操作への理解がさらに深まるでしょう。</p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/paiza-2dim_array_boss/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vivaldiブラウザでコマンドチェインを活用しよう！URLコピーを効率化する方法</title>
		<link>https://menda-fun.com/vivaldi-command-chain-url-copy-settings/</link>
					<comments>https://menda-fun.com/vivaldi-command-chain-url-copy-settings/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sat, 18 Jan 2025 02:00:09 +0000</pubDate>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Vivaldi]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=894</guid>

					<description><![CDATA[今回は、Vivaldiブラウザの便利な機能「コマンドチェイン」を使って、URLのコピーを効率化する方法をご紹介します。実際に使用している設定方法を詳しくご説明していきます。 コマンドチェインとは？ コ ... <p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<p>今回は、Vivaldiブラウザの便利な機能「コマンドチェイン」を使って、URLのコピーを効率化する方法をご紹介します。実際に使用している設定方法を詳しくご説明していきます。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">コマンドチェインとは？</h2>



<p>コマンドチェインは、Vivaldiブラウザの機能を組み合わせて、複数の操作を一度に実行できる強力な機能です。JavaScriptコマンドと組み合わせることで、より柔軟なURL操作が可能になります。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">URLコピー用コマンドの準備</h2>



<p>まず、以下の2つのJavaScriptコマンドを用意します。</p>



<ol class="wp-block-list">
<li><strong>通常のURLコピー用コマンド</strong></li>
</ol>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="javascript:(function(){e = document.createElement('textarea');e.textContent = document.URL;document.body.appendChild(e);e.select();document.execCommand('copy');e.remove();})();if(history.replaceState){history.replaceState({},null,location.href);};" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">javascript:(</span><span style="color: #93A1A1; font-weight: bold">function</span><span style="color: #839496">(){</span><span style="color: #268BD2">e</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> </span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">createElement</span><span style="color: #839496">(</span><span style="color: #2AA198">&#39;textarea&#39;</span><span style="color: #839496">);</span><span style="color: #268BD2">e</span><span style="color: #839496">.</span><span style="color: #268BD2">textContent</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> </span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">URL</span><span style="color: #839496">;</span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">body</span><span style="color: #839496">.</span><span style="color: #268BD2">appendChild</span><span style="color: #839496">(</span><span style="color: #268BD2">e</span><span style="color: #839496">);</span><span style="color: #268BD2">e</span><span style="color: #839496">.</span><span style="color: #268BD2">select</span><span style="color: #839496">();</span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">execCommand</span><span style="color: #839496">(</span><span style="color: #2AA198">&#39;copy&#39;</span><span style="color: #839496">);</span><span style="color: #268BD2">e</span><span style="color: #839496">.</span><span style="color: #268BD2">remove</span><span style="color: #839496">();})();</span><span style="color: #859900">if</span><span style="color: #839496">(</span><span style="color: #268BD2">history</span><span style="color: #839496">.</span><span style="color: #268BD2">replaceState</span><span style="color: #839496">){</span><span style="color: #268BD2">history</span><span style="color: #839496">.</span><span style="color: #268BD2">replaceState</span><span style="color: #839496">({},</span><span style="color: #B58900">null</span><span style="color: #839496">,</span><span style="color: #268BD2">location</span><span style="color: #839496">.</span><span style="color: #268BD2">href</span><span style="color: #839496">);};</span></span></code></pre></div>



<ol start="2" class="wp-block-list">
<li><strong>マークダウン形式のURLコピー用コマンド</strong></li>
</ol>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="javascript:(function(){e = document.createElement('textarea');e.textContent = '['+document.title +']('+ document.URL+')';document.body.appendChild(e);e.select();document.execCommand('copy');e.remove();})();if(history.replaceState){history.replaceState({},null,location.href);};" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">javascript:(</span><span style="color: #93A1A1; font-weight: bold">function</span><span style="color: #839496">(){</span><span style="color: #268BD2">e</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> </span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">createElement</span><span style="color: #839496">(</span><span style="color: #2AA198">&#39;textarea&#39;</span><span style="color: #839496">);</span><span style="color: #268BD2">e</span><span style="color: #839496">.</span><span style="color: #268BD2">textContent</span><span style="color: #839496"> </span><span style="color: #859900">=</span><span style="color: #839496"> </span><span style="color: #2AA198">&#39;[&#39;</span><span style="color: #859900">+</span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">title</span><span style="color: #839496"> </span><span style="color: #859900">+</span><span style="color: #2AA198">&#39;](&#39;</span><span style="color: #859900">+</span><span style="color: #839496"> </span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">URL</span><span style="color: #859900">+</span><span style="color: #2AA198">&#39;)&#39;</span><span style="color: #839496">;</span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">body</span><span style="color: #839496">.</span><span style="color: #268BD2">appendChild</span><span style="color: #839496">(</span><span style="color: #268BD2">e</span><span style="color: #839496">);</span><span style="color: #268BD2">e</span><span style="color: #839496">.</span><span style="color: #268BD2">select</span><span style="color: #839496">();</span><span style="color: #268BD2">document</span><span style="color: #839496">.</span><span style="color: #268BD2">execCommand</span><span style="color: #839496">(</span><span style="color: #2AA198">&#39;copy&#39;</span><span style="color: #839496">);</span><span style="color: #268BD2">e</span><span style="color: #839496">.</span><span style="color: #268BD2">remove</span><span style="color: #839496">();})();</span><span style="color: #859900">if</span><span style="color: #839496">(</span><span style="color: #268BD2">history</span><span style="color: #839496">.</span><span style="color: #268BD2">replaceState</span><span style="color: #839496">){</span><span style="color: #268BD2">history</span><span style="color: #839496">.</span><span style="color: #268BD2">replaceState</span><span style="color: #839496">({},</span><span style="color: #B58900">null</span><span style="color: #839496">,</span><span style="color: #268BD2">location</span><span style="color: #839496">.</span><span style="color: #268BD2">href</span><span style="color: #839496">);};</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">コマンドチェインの設定手順</h2>



<ol class="wp-block-list">
<li><strong>設定画面を開く</strong>
<ul class="wp-block-list">
<li>Vivaldiのメインメニューから「設定」を開きます</li>



<li>または、<code>Alt + P</code>のショートカットキーを使用します</li>
</ul>
</li>



<li><strong>Quick Commandsの設定</strong>
<ul class="wp-block-list">
<li>左側のメニューから「Quick Commands」を選択</li>



<li>「カスタムコマンドの追加」をクリック</li>



<li>上記の2つのJavaScriptコマンドをそれぞれ別のカスタムコマンドとして登録</li>



<li>分かりやすい名前を付ける（例：「URL Copy」「Markdown URL Copy」）</li>
</ul>
</li>



<li><strong>コマンドチェインの設定</strong>
<ul class="wp-block-list">
<li>左側のメニューから「キーボード」を選択</li>



<li>「コマンドチェイン」のセクションに移動</li>



<li>以下の2つのコマンドチェインを作成</li>



<li><strong>通常のURLコピー用：</strong>
<ul class="wp-block-list">
<li>チェイン名：「URL Copy」</li>



<li>作成したカスタムコマンド「URL Copy」を選択</li>



<li>ショートカットキー：<code>Ctrl + Shift + C</code></li>
</ul>
</li>



<li><strong>マークダウン形式のURLコピー用：</strong>
<ul class="wp-block-list">
<li>チェイン名：「Markdown URL Copy」</li>



<li>作成したカスタムコマンド「Markdown URL Copy」を選択</li>



<li>ショートカットキー：<code>Ctrl + Shift + C + Alt</code></li>
</ul>
</li>
</ul>
</li>
</ol>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">コマンドの動作説明</h2>



<p>これらのコマンドは以下のような処理を行います</p>



<ol class="wp-block-list">
<li><strong>通常のURLコピー</strong></li>
</ol>



<ul class="wp-block-list">
<li>現在のページのURLをクリップボードにコピー</li>



<li>一時的なテキストエリアを作成・削除</li>



<li>ページの状態を維持</li>
</ul>



<ol class="wp-block-list">
<li><strong>マークダウン形式のURLコピー</strong></li>
</ol>



<ul class="wp-block-list">
<li>現在のページのタイトルとURLをマークダウン形式でコピー</li>



<li><code>[ページタイトル](URL)</code>の形式で出力</li>



<li>同様に一時的なテキストエリアを使用</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">実践的な使用方法</h2>



<p>設定完了後は以下のように使用できます</p>



<ol class="wp-block-list">
<li><strong>通常のURLコピー</strong></li>
</ol>



<ul class="wp-block-list">
<li>ショートカットキー：<code>Ctrl + Shift + C</code></li>



<li>用途：SNSへの共有やメールでのURL共有時</li>
</ul>



<ol class="wp-block-list">
<li><strong>マークダウン形式でのURLコピー</strong></li>
</ol>



<ul class="wp-block-list">
<li>ショートカットキー：<code>Ctrl + Shift + C + Alt</code></li>



<li>用途：MarkdownエディタでのブログやWiki執筆時</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">メリット</h2>



<ul class="wp-block-list">
<li>効率的なURLのコピーが可能</li>



<li>JavaScriptによる確実なコピー処理</li>



<li>ページタイトルを含めたマークダウン形式での出力</li>



<li>ページの状態を維持したクリーンな動作</li>



<li>カスタマイズ可能なショートカットキー</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">注意点</h2>



<ul class="wp-block-list">
<li>JavaScriptコマンドは慎重にコピー・ペーストしてください</li>



<li>ショートカットキーの競合に注意が必要です</li>



<li>一部のウェブサイトではセキュリティ設定により動作しない場合があります</li>



<li>カスタムコマンドの名前は分かりやすいものを設定しましょう</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p>Vivaldiのコマンドチェイン機能とJavaScriptコマンドを組み合わせることで、より効率的なURL操作環境を実現できます。特にMarkdown形式での執筆作業が多い方にとって、この設定は作業効率を大きく向上させてくれるでしょう。</p>



<p>ぜひ皆さんも、これらのコマンドを活用して、作業効率の向上を図ってみてください！</p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/vivaldi-command-chain-url-copy-settings/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>UbuntuのWSL環境で初回ログインメッセージを非表示にする方法</title>
		<link>https://menda-fun.com/hide-ubuntu-login-message-wsl/</link>
					<comments>https://menda-fun.com/hide-ubuntu-login-message-wsl/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Fri, 10 Jan 2025 08:51:51 +0000</pubDate>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[WSL]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=889</guid>

					<description><![CDATA[はじめに WSL (Windows Subsystem for Linux) でUbuntuを使用していると、ログイン時に表示される案内メッセージが気になることがあります。この記事では、そのメッセージ ... <p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">はじめに</h2>



<p>WSL (Windows Subsystem for Linux) でUbuntuを使用していると、ログイン時に表示される案内メッセージが気になることがあります。この記事では、そのメッセージを非表示にする簡単な方法をご紹介します。</p>



<h2 class="wp-block-heading">表示されるメッセージについて</h2>



<p>WSLにてUbuntuをインストールし、起動すると下記メッセージが表示されます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="This message is shown once a day. To disable it please create the
/home/{user}/.hushlogin file." style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">This</span><span style="color: #839496"> </span><span style="color: #268BD2">message</span><span style="color: #839496"> </span><span style="color: #268BD2">is</span><span style="color: #839496"> </span><span style="color: #268BD2">shown</span><span style="color: #839496"> </span><span style="color: #268BD2">once</span><span style="color: #839496"> </span><span style="color: #268BD2">a</span><span style="color: #839496"> </span><span style="color: #268BD2">day</span><span style="color: #839496">. </span><span style="color: #268BD2">To</span><span style="color: #839496"> </span><span style="color: #268BD2">disable</span><span style="color: #839496"> </span><span style="color: #268BD2">it</span><span style="color: #839496"> </span><span style="color: #268BD2">please</span><span style="color: #839496"> </span><span style="color: #268BD2">create</span><span style="color: #839496"> </span><span style="color: #268BD2">the</span></span>
<span class="line"><span style="color: #DC322F">/home/</span><span style="color: #839496">{</span><span style="color: #268BD2">user</span><span style="color: #839496">}</span><span style="color: #859900">/</span><span style="color: #839496">.</span><span style="color: #268BD2">hushlogin</span><span style="color: #839496"> </span><span style="color: #268BD2">file</span><span style="color: #839496">.</span></span></code></pre></div>



<p>このメッセージは1日1回表示され、システムの基本的な情報や最終ログイン日時などを知らせる役割があります。</p>



<h2 class="wp-block-heading">メッセージを非表示にする方法</h2>



<p>このメッセージを表示させないようにするには、ホームディレクトリ（/home/{user}/）に<strong>.hushlogin</strong>というファイルを置きます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="touch /home/{user}/.hushlogin" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">touch</span><span style="color: #839496"> </span><span style="color: #859900">/</span><span style="color: #268BD2">home</span><span style="color: #859900">/</span><span style="color: #839496">{</span><span style="color: #268BD2">user</span><span style="color: #839496">}</span><span style="color: #859900">/</span><span style="color: #839496">.</span><span style="color: #268BD2">hushlogin</span></span></code></pre></div>



<p>上記のコマンドでホームディレクトリにファイルを作成することができます。なお、<code>{user}</code>の部分は、実際のユーザー名に置き換えてください。</p>



<h2 class="wp-block-heading">補足事項</h2>



<ul class="wp-block-list">
<li><code>.hushlogin</code>ファイルは空のファイルで問題ありません</li>



<li>ファイルを削除すれば、再びメッセージが表示されるようになります</li>



<li>この設定はユーザーごとに適用されます</li>
</ul>



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



<p>WSL環境でのUbuntuログインメッセージを非表示にする方法について解説しました。簡単な操作で環境をよりすっきりと使いやすくすることができます。</p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/hide-ubuntu-login-message-wsl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>start-databse.sh実行時のエラー「Permission denied」</title>
		<link>https://menda-fun.com/git-permission-denied/</link>
					<comments>https://menda-fun.com/git-permission-denied/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sat, 30 Nov 2024 00:24:55 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Github]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=886</guid>

					<description><![CDATA[既存のリポジトリをgit cloneして、環境構築中に下記コマンドをしたところ「Permission denied」というエラーが発生しました。 ./start-database.sh エラーの原因  ... <p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<p>既存のリポジトリをgit cloneして、環境構築中に下記コマンドをしたところ「<span class="hutoaka">Permission denied</span>」というエラーが発生しました。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="./start-database.sh" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">./start-database.sh</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">エラーの原因</h2>



<p>このエラーは、スクリプトファイルに実行権限が付与されていないことが原因です。</p>



<p>Gitは通常、<strong>ファイルの実行権限（executable permission）を保持してコミットされないため、クローンした直後のスクリプトファイルには実行権限がありません</strong>。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解決方法</h2>



<p>今回は下記のコマンドを実行することで、無事にデータベースの環境構築を行うことができました。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="chmod +x ./start-database.sh //ファイルに実行権限を追加する
./start-database.sh" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">chmod</span><span style="color: #839496"> </span><span style="color: #2AA198">+x</span><span style="color: #839496"> </span><span style="color: #2AA198">./start-database.sh</span><span style="color: #839496"> </span><span style="color: #2AA198">//ファイルに実行権限を追加する</span></span>
<span class="line"><span style="color: #268BD2">./start-database.sh</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">予防策</h2>



<p>今回はすでに作成されているリポジトリをクローンして環境構築をしようとしたため、実行時に権限を追加する必要がありました。</p>



<p>Gitにスクリプトファイルをコミットする際に、実行権限を明示的に付与することができます。</p>



<p>2種類の対応方法があるので、どちらかを実行します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="git update-index --chmod=+x ./start-database.sh
git add --chmod +x ./start-database.sh" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">git</span><span style="color: #839496"> </span><span style="color: #2AA198">update-index</span><span style="color: #839496"> </span><span style="color: #CB4B16">--chmod=+x</span><span style="color: #839496"> </span><span style="color: #2AA198">./start-database.sh</span></span>
<span class="line"><span style="color: #268BD2">git</span><span style="color: #839496"> </span><span style="color: #2AA198">add</span><span style="color: #839496"> </span><span style="color: #CB4B16">--chmod</span><span style="color: #839496"> </span><span style="color: #2AA198">+x</span><span style="color: #839496"> </span><span style="color: #2AA198">./start-database.sh</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p>「Permission denied」というエラーは実行権限の問題です。</p>



<p><span class="st-mymarker-s-b">chmod +x</span>コマンドを使用することで、解決することができます。</p>



<p>ただ、クローンするたびに手元で実行権限を追加するのも面倒なので<span class="st-mymarker-s">リポジトリ内で予防しておくと開発をスムーズに進められま</span>す。</p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/git-permission-denied/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Playwright】webkitのみテストに失敗する？エラー対処法を解説</title>
		<link>https://menda-fun.com/playwright-error-dependencies/</link>
					<comments>https://menda-fun.com/playwright-error-dependencies/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sat, 12 Oct 2024 14:13:10 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[playwright]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[TypeScript]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=851</guid>

					<description><![CDATA[動作環境 WSL : 2.2.4.0 Node.js : 20.18.0 Playwright : 1.48.0 Host system is missing dependencies to run  ... <p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">動作環境</h2>



<ul class="wp-block-list">
<li>WSL : 2.2.4.0</li>



<li>Node.js : 20.18.0</li>



<li>Playwright : 1.48.0</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Host system is missing dependencies to run browsers.というエラー</h2>



<p>Playwrightを導入して、動作確認のためにテストを実行したところ上記のエラーメッセージが発生してwebkitのテストのみ失敗しました。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="995" height="409" src="https://menda-fun.com/wp-content/uploads/2024/10/スクリーンショット-2024-10-12-224949.png" alt="" class="wp-image-852" srcset="https://menda-fun.com/wp-content/uploads/2024/10/スクリーンショット-2024-10-12-224949.png 995w, https://menda-fun.com/wp-content/uploads/2024/10/スクリーンショット-2024-10-12-224949-768x316.png 768w" sizes="(max-width: 995px) 100vw, 995px" /></figure>



<p>「Host system is missing dependencies to run browsers.」というエラーが発生する場合、必要なブラウザの依存関係がシステムにインストールされていない可能性があるため下記コマンドで依存関係をインストールすれば解決します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="npx playwright install-deps" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">npx</span><span style="color: #839496"> </span><span style="color: #2AA198">playwright</span><span style="color: #839496"> </span><span style="color: #2AA198">install-deps</span></span></code></pre></div>



<p><strong>Happy hacking! <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f3ad.png" alt="🎭" class="wp-smiley" style="height: 1em; max-height: 1em;" /></strong></p>



<p></p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/playwright-error-dependencies/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【無料で同期】Remotely Saveを使ってObsidianを複数端末で同期させる方法を解説</title>
		<link>https://menda-fun.com/obsidian-remotely-save/</link>
					<comments>https://menda-fun.com/obsidian-remotely-save/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sat, 28 Sep 2024 02:12:34 +0000</pubDate>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[メモ]]></category>
		<category><![CDATA[デジタルメモ]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=823</guid>

					<description><![CDATA[メモアプリはたくさんありますが、次のようなことで悩んでいませんか？ この記事を読むと外部のクラウドストレージを使用して、どの端末でもメモを同期することができるようになります。 Obsidianって何？ ... <p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<p>メモアプリはたくさんありますが、次のようなことで悩んでいませんか？</p>



<div class="st-kaiwa-box clearfix kaiwaicon1">
	<div class="st-kaiwa-face"><img decoding="async" src="https://menda-fun.com/wp-content/uploads/2022/03/business_man3_1_question.png" alt="悩んでいる人" width="100" height="100">
		<div class="st-kaiwa-face-name">悩んでいる人</div>
	</div>
	<div class="st-kaiwa-area">
		<div class="st-kaiwa-hukidashi"><div class="wp-block-st-blocks-st-kaiwa">
<ul class="wp-block-list">
<li>iPhoneやAndroidとPC、タブレットなど複数の端末とデータを共有したいけど、方法がわからない…</li>



<li>なるべくシンプルに使えるメモアプリはないかな？</li>
</ul>
</div></div>
	</div>
</div>



<p>この記事を読むと外部のクラウドストレージを使用して、<span class="hutoaka">どの端末でもメモを同期することができるようになります。</span></p>



<p>Obsidianって何？というかたはこちらの記事で解説しています。</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">
<div><a href="https://menda-fun.com/install-obsidian/" class="st-cardlink st-embed-cardlink"><div class="kanren st-cardbox"><dl class="clearfix"><dt class="st-card-img"><img decoding="async" src="https://menda-fun.com/wp-content/uploads/2024/09/obsidian-icon-150x150.png" alt="" width="100" height="100" /></dt><dd><p class="st-cardbox-t">【高速、快適にメモを取る】Obsidianのインストール方法と使い方</p><div class="st-card-excerpt smanone"><p>メモを取る方法は人それぞれですが、効率的なメモの方法を探していて次のような悩みを抱えていないでしょうか。 簡単にメモを取りたい メモを検索したい PCとスマホでメモを共有したい これを解決してくれるの &#8230; </p></div></dd></dl></div></a></div>
</div></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>







<h2 class="wp-block-heading">公式のプラグインは有料</h2>



<figure class="wp-block-image size-full"><img decoding="async" width="1909" height="1548" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-23-162853.jpg" alt="" class="wp-image-826" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-23-162853.jpg 1909w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-23-162853-768x623.jpg 768w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-23-162853-1536x1246.jpg 1536w" sizes="(max-width: 1909px) 100vw, 1909px" /></figure>



<p>メモや設定を複数端末で同期させる<strong>Obsidian Sync</strong>というプラグインが公式で用意されています。</p>



<p>月額4ドルの廉価プランも登場しましたが、<span class="hutoaka">ストレージ1GBは少し心配</span>かもしれません。</p>



<p>大量のメモや添付ファイルなどを扱う場合は、より大容量のプランを検討する必要があります。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">無料で同期させるにはRemotely Saveがオススメ</h2>



<p>公式が同期プラグインを用意しているのはわかったけれど、無料でできるなら無料のほうがいいですよね。</p>



<p>Remotely Saveというコミュニティプラグインを使えば<strong>無料で同期ができます</strong>。</p>



<p>データの同期先として以下の5種類が選択できます。</p>



<ul class="wp-block-list has-very-pale-yellow-background-color has-background">
<li>S3 or Compatible（Amazon S3）</li>



<li>Dropbox</li>



<li>Wevdav</li>



<li>OneDrive for personal</li>



<li>Webdis (HTTP for Redis®)</li>
</ul>



<p>普段使用しているサービスの容量が余っていれば、そのサービスを使用するのがいいですが、なければ<span class="st-mymarker-s">DropBoxかOneDriveのアカウントを作成</span>して試してみることをおすすめします。</p>



<p>筆者はOneDriveの容量がフルで余っていたためOneDriveを同期先にしています。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Remotely Saveの設定方法</h2>



<h3 class="wp-block-heading">コミュニティプラグインを有効化</h3>



<p>Obsidianをインストールした初期状態ではコミュニティプラグインは無効化されています。</p>



<p>画面下の歯車アイコンをクリックして、コミュニティプラグインを開き「<strong>コミュニティプラグインを有効化</strong>」をクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1440" height="1920" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946-1.jpg" alt="" class="wp-image-827" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946-1.jpg 1440w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946-1-768x1024.jpg 768w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946-1-1152x1536.jpg 1152w" sizes="(max-width: 1440px) 100vw, 1440px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Remotely Saveをインストール</h3>



<p>コミュニティプラグインの「<strong>閲覧</strong>」をクリックします。</p>



<p>「<span class="st-mymarker-s-b">Remotely Save</span>」を検索し、インストールします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="988" height="393" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-064059.png" alt="" class="wp-image-828" srcset="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-064059.png 988w, https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-064059-768x305.png 768w" sizes="(max-width: 988px) 100vw, 988px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">クラウドストレージと紐づける</h3>



<p>お好みのクラウドストレージを選択し、認証情報を入力して紐づけを行います。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1250" height="1408" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-28-092225-1.jpg" alt="" class="wp-image-836" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-28-092225-1.jpg 1250w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-28-092225-1-768x865.jpg 768w" sizes="(max-width: 1250px) 100vw, 1250px" /></figure>



<p>これでRemotely Saveを使用する準備が整いました。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">同期タイミングの設定</h2>



<p>Remotely Saveには<strong>2種類の同期方法（手動・自動）</strong>があります。</p>



<p>以下でそれぞれの同期について解説します。</p>



<h3 class="wp-block-heading">手動で同期する方法</h3>



<p>サイドバーにあるRemotely Saveのアイコンをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="358" height="468" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-28-103359.png" alt="" class="wp-image-832"/></figure></div>


<p>下記のメッセージが出たら同期完了です。（OneDriveを使用している例）</p>



<pre class="wp-block-code"><code>1/2 Remotely Save starts running (onedrive)
2/2 Remotely Save finished!</code></pre>



<p>効率的に作業するために、同期の操作に<span class="st-mymarker-s-b">ショートカットキーを割り当てる</span>ことをおすすめします。</p>



<ol class="wp-block-list has-very-pale-yellow-background-color has-background">
<li>画面下の歯車マークをクリック</li>



<li>ホットキーをクリック</li>



<li><strong>Remotely Save</strong>を検索し、好きなキーを割り当てる</li>
</ol>



<figure class="wp-block-image size-full"><img decoding="async" width="968" height="665" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-054456.png" alt="" class="wp-image-825" srcset="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-054456.png 968w, https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-054456-768x528.png 768w" sizes="(max-width: 968px) 100vw, 968px" /></figure>



<p>筆者は<code><strong>Ctrl + shift + S</strong></code> を割り当てていますが、他のソフトやPC自体のショートカットキーで割り当てのないキーを使用しましょう。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">自動で同期する方法</h3>



<p>Remotely Saveの設定画面から、自動同期のオプションを設定できます。</p>



<ul class="wp-block-list has-light-green-cyan-background-color has-background">
<li>同期間隔：何秒ごとに更新するか、またはファイルに変更があったタイミングで更新するか</li>



<li>起動時の同期：Obsidian起動時にどのタイミングで更新するか</li>
</ul>



<p>自動同期についての設定箇所は3箇所あり、翻訳すると以下のようになります。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="973" height="621" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-060123.png" alt="" class="wp-image-824" srcset="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-060123.png 973w, https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-27-060123-768x490.png 768w" sizes="(max-width: 973px) 100vw, 973px" /></figure>



<h4 class="wp-block-heading has-very-dark-gray-color has-text-color has-link-color wp-elements-5deb8dafdb458f213756377bbf18c06c">Schedule for Auto Run：自動実行のスケジュール</h4>



<p>プラグインは、一定の間隔ごとに実行をスケジュールしようとします。バッテリーに影響を与える可能性があります。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading has-very-dark-gray-color has-text-color has-link-color wp-elements-bf0d5786ae15a8b1d599a0e72c38935e">Run once on start up automaticaly：起動時に自動で1回実行</h4>



<p>この設定は、起動時に自動で1回実行するように設定できます。</p>



<p>設定を変更すると、次回の起動時に反映されます。</p>



<p>この設定は、一定間隔ごとに同期を開始する「自動実行のスケジュール」とは異なります。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading has-very-dark-gray-color has-text-color has-link-color wp-elements-4ec1e90fb3983980433d997e0e6e4754">Sync On Save (experimental)：保存時に同期</h4>



<p>ファイルの保存操作が数秒以内に行われた場合、同期がトリガーされます。</p>



<p>同期は負荷の高い操作である可能性があり、バッテリーに影響を与える場合があるため、ご注意ください。</p>



<p>（変更後、プラグインの再読み込みやObsidianの再起動が必要になる場合があります。）</p>



<p>基本的には手動で保存し、起動時に同期を行いたいという方には以下の設定がおすすめです。</p>



<ul class="wp-block-list has-light-grayish-red-background-color has-background">
<li>Schedule for Auto Run : <strong>10min</strong></li>



<li>Run once on start up automaticaly : <strong>sync once after 1 second of start up</strong></li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p>複数端末でObsidianを使用して、同期させるには<span class="st-mymarker-s-b">Remotely Saveが非常に便利</span>です。<br><strong>無料</strong>で使用でき、様々なクラウドストレージサービスと連携できる点が魅力です。<br>設定も比較的簡単なので、ぜひ試してみてください。</p>



<p>Obsidianを複数の端末で同期させることで、いつでもどこでも最新のメモにアクセスできるようになります。<br>アイデアの管理や情報の整理がさらに効率的にしていきましょう。</p>


<div>
					<a href="https://www.amazon.co.jp/Obsidian%E3%81%A7%E2%80%9C%E8%82%B2%E3%81%A6%E3%82%8B%E2%80%9D%E6%9C%80%E5%BC%B7%E3%83%8E%E3%83%BC%E3%83%88%E8%A1%93-%E2%80%94%E2%80%94-%E3%81%82%E3%82%89%E3%82%86%E3%82%8B%E6%83%85%E5%A0%B1%E3%82%92%E3%81%A4%E3%81%AA%E3%81%92%E3%81%A6%E6%95%B4%E7%90%86%E3%81%97%E3%82%88%E3%81%86-%E5%A2%97%E4%BA%95-%E6%95%8F%E5%85%8B-ebook/dp/B0CK827QHL?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&#038;crid=RRCESAVY3I3P&#038;dib=eyJ2IjoiMSJ9.3TeKbg6_i90YpDOzKr71NL3q8d8fp8KO-1U1_a8LtpVjoMdKdhuj63q1lSjyXNXnqpFJyKrO8t2xN36GX07jSFes2ARJ0ncmUPjBTt7lAMfvSOwmVIWFCqQzxtKcI9DZ7tSDFWcWPaOHuTMT41Bo3VVZc0y6UlE6laIxwEW4OnntkFRlK4HRS7qm3jSavrqJ_vs41Dq7hiJWRjtGItkRfnrmc05HKLLG6LNWBwd0N4mqivH1BrW-JwOgxtG0vkp21MZSX3wTzs5BsfU_7YGO4jE3UnkuOqNlHDg2go-OMJlNEIVb1jPbcDsHkj0wyOSTT01fSgo986TAMFeNkOcsPAQPjWH9yh5gcNgdCoHPmrHpEJjYyv4KNDEg6BWr651OKwxbg0mxNc1XkTvl2t1hUl0jkkY4nRpZPnxUwRiIxyI0WG7v9Jb0oE6B4F-PwcR2.WHnVaV7D5e8somd1oNE7111OjUnJxjsvzwur84IVma8&#038;dib_tag=se&#038;keywords=obsidian&#038;qid=1740358950&#038;sprefix=obsidia%2Caps%2C187&#038;sr=8-1&#038;linkCode=ll1&#038;tag=yuu0e77-22&#038;linkId=190c443739499271372b96f878212b09&#038;language=ja_JP&#038;ref_=as_li_ss_tl" class="st-cardlink st-embed-cardlink has-site"></p>
<div class="kanren st-cardbox">
<dl class="clearfix">
<dt class="st-card-img">
									<img decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.amazon.co.jp%2FObsidian%25E3%2581%25A7%25E2%2580%259C%25E8%2582%25B2%25E3%2581%25A6%25E3%2582%258B%25E2%2580%259D%25E6%259C%2580%25E5%25BC%25B7%25E3%2583%258E%25E3%2583%25BC%25E3%2583%2588%25E8%25A1%2593-%25E2%2580%2594%25E2%2580%2594-%25E3%2581%2582%25E3%2582%2589%25E3%2582%2586%25E3%2582%258B%25E6%2583%2585%25E5%25A0%25B1%25E3%2582%2592%25E3%2581%25A4%25E3%2581%25AA%25E3%2581%2592%25E3%2581%25A6%25E6%2595%25B4%25E7%2590%2586%25E3%2581%2597%25E3%2582%2588%25E3%2581%2586-%25E5%25A2%2597%25E4%25BA%2595-%25E6%2595%258F%25E5%2585%258B-ebook%2Fdp%2FB0CK827QHL%3F__mk_ja_JP%3D%25E3%2582%25AB%25E3%2582%25BF%25E3%2582%25AB%25E3%2583%258A%26crid%3DRRCESAVY3I3P%26dib%3DeyJ2IjoiMSJ9.3TeKbg6_i90YpDOzKr71NL3q8d8fp8KO-1U1_a8LtpVjoMdKdhuj63q1lSjyXNXnqpFJyKrO8t2xN36GX07jSFes2ARJ0ncmUPjBTt7lAMfvSOwmVIWFCqQzxtKcI9DZ7tSDFWcWPaOHuTMT41Bo3VVZc0y6UlE6laIxwEW4OnntkFRlK4HRS7qm3jSavrqJ_vs41Dq7hiJWRjtGItkRfnrmc05HKLLG6LNWBwd0N4mqivH1BrW-JwOgxtG0vkp21MZSX3wTzs5BsfU_7YGO4jE3UnkuOqNlHDg2go-OMJlNEIVb1jPbcDsHkj0wyOSTT01fSgo986TAMFeNkOcsPAQPjWH9yh5gcNgdCoHPmrHpEJjYyv4KNDEg6BWr651OKwxbg0mxNc1XkTvl2t1hUl0jkkY4nRpZPnxUwRiIxyI0WG7v9Jb0oE6B4F-PwcR2.WHnVaV7D5e8somd1oNE7111OjUnJxjsvzwur84IVma8%26dib_tag%3Dse%26keywords%3Dobsidian%26qid%3D1740358950%26sprefix%3Dobsidia%252Caps%252C187%26sr%3D8-1%26linkCode%3Dll1%26tag%3Dyuu0e77-22%26linkId%3D190c443739499271372b96f878212b09%26language%3Dja_JP%26ref_%3Das_li_ss_tl?w=300&#038;h=300" alt="" width="100" height="100" />								</dt>
<dd>
<p class="st-cardbox-t">Obsidianで“育てる”最強ノート術 —— あらゆる情報をつなげて整理しよう</p>
<div class="st-card-excerpt smanone">
<p>ノートやメモを作成・管理するためのさまざまなツールがあふれるなか、昨今とくに注目を集めているのが、ノート間の「つながり」に着目したObsidianというツールです。本書ではObsidianの基本的な使 &#8230; </p>
</div>
<p class="st-cardbox-site">
										<span class="st-cardbox-favicon"><img
												src="https://www.google.com/s2/favicons?domain=www.amazon.co.jp"
												width="16"
												height="16"
												alt=""></span><span
											class="st-cardbox-host">www.amazon.co.jp</span>
									</p>
</dd>
</dl></div>
<p>					</a>
				</div>


<p><iframe title="TAKE NOTES!――メモで、あなただけのアウトプットが自然にできるようになる" type="text/html" width="920" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=ll1&#038;ref_=k4w_oembed_vQl9DY2w9ujyy0&#038;asin=B09HZ38SFZ&#038;tag=yuu0e77-22"></iframe></p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/obsidian-remotely-save/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【高速、快適にメモを取る】Obsidianのインストール方法と使い方</title>
		<link>https://menda-fun.com/install-obsidian/</link>
					<comments>https://menda-fun.com/install-obsidian/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sun, 22 Sep 2024 04:22:58 +0000</pubDate>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[メモ]]></category>
		<category><![CDATA[Obsidian]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=797</guid>

					<description><![CDATA[メモを取る方法は人それぞれですが、効率的なメモの方法を探していて次のような悩みを抱えていないでしょうか。 これを解決してくれるのが、Obsidianというメモツールです。 Obsidianは、スマート ...<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<p>メモを取る方法は人それぞれですが、効率的なメモの方法を探していて次のような悩みを抱えていないでしょうか。</p>



<ul class="wp-block-list is-style-st-square-checkbox-no-border has-very-pale-yellow-background-color has-background">
<li>簡単にメモを取りたい</li>



<li>メモを検索したい</li>



<li>PCとスマホでメモを共有したい</li>
</ul>



<p>これを解決してくれるのが、Obsidianというメモツールです。</p>



<p>Obsidianは、スマートフォン、パソコン、タブレットで使用でき、拡張機能を使えば<span class="st-mymarker-s-b">デバイス間での同期も可能</span>です。</p>



<p>効率的なメモと整理を実現する強力なツールとして、多くのユーザーに支持されています。</p>







<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Obsidianの特徴</h2>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="512" height="512" src="https://menda-fun.com/wp-content/uploads/2024/09/file_type_markdown_icon_130402.png" alt="" class="wp-image-799" srcset="https://menda-fun.com/wp-content/uploads/2024/09/file_type_markdown_icon_130402.png 512w, https://menda-fun.com/wp-content/uploads/2024/09/file_type_markdown_icon_130402-150x150.png 150w, https://menda-fun.com/wp-content/uploads/2024/09/file_type_markdown_icon_130402-100x100.png 100w" sizes="(max-width: 512px) 100vw, 512px" /></figure></div>


<p>Obsidianは、マークダウン形式で記述する<strong>マークダウンエディタ</strong>です。</p>



<p>マークダウンとは、簡単な記号を使って文章の構造や装飾を指定できる軽量マークアップ言語です。</p>



<p>Obsidianには次のような特徴があります。</p>



<ol class="wp-block-list is-style-st-maruno has-very-pale-yellow-background-color has-background">
<li>高速なメモ：マークダウン形式を使って素早く構造化されたメモを作成できます。</li>



<li>効率的な情報整理：タグ機能やリンク機能を使って、関連する情報を簡単に結びつけられます。</li>



<li>柔軟な検索：全文検索機能により、必要な情報をすぐに見つけ出せます。</li>



<li>グラフビュー：メモ同士のつながりを視覚的に確認できます。</li>



<li>デイリーノート：日々の記録を簡単に管理できます。</li>



<li>カスタマイズ：プラグインやテーマを使って、自分好みの環境を作れます。</li>
</ol>



<p>マークダウンの書き方に慣れる必要がありますが、習得すれば<span class="st-mymarker-s-b">通常のメモ帳よりも素早く、自由度の高いメモが可能</span>になります。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">インストール方法</h2>



<p>以下の手順でObsidianをインストールします。</p>



<h3 class="wp-block-heading"><a href="https://obsidian.md/download">公式サイト</a>にアクセス</h3>



<p><a href="https://obsidian.md/download">Obsidianの公式サイト</a>にアクセスし、「<strong>Get Obsidian</strong>」をクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="2560" height="1571" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105224-2-scaled.jpg" alt="" class="wp-image-803" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105224-2-scaled.jpg 2560w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105224-2-768x471.jpg 768w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105224-2-1536x942.jpg 1536w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105224-2-2048x1256.jpg 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">ダウンロードボタンをクリック</h3>



<figure class="wp-block-image size-full"><img decoding="async" width="2560" height="1543" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105235-scaled.jpg" alt="" class="wp-image-804" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105235-scaled.jpg 2560w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105235-768x463.jpg 768w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105235-1536x926.jpg 1536w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-21-105235-2048x1234.jpg 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">インストールを完了させ、Obsidianを起動する</h3>



<p>インストール時の設定はすべてデフォルトのままで問題ありません。</p>



<p>インストールが完了して、Obsidianを起動すると下記のような画面が開かれます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1183" height="783" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065401.png" alt="" class="wp-image-805" srcset="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065401.png 1183w, https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065401-768x508.png 768w" sizes="(max-width: 1183px) 100vw, 1183px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">言語を設定して、クイックスタートをクリック</h3>



<p>画面下部のバーで言語を選ぶことができます。</p>



<p>日本語で使用したい場合は日本語を選択し、クイックスタートをクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1177" height="794" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065425.png" alt="" class="wp-image-806" srcset="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065425.png 1177w, https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065425-768x518.png 768w" sizes="(max-width: 1177px) 100vw, 1177px" /></figure>



<p>そして、次のような画面になれば無事にインストール完了です！</p>



<p>好きなようにメモを作成していきましょう。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1536" height="1079" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065436.png" alt="" class="wp-image-807" srcset="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065436.png 1536w, https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-065436-768x540.png 768w" sizes="(max-width: 1536px) 100vw, 1536px" /></figure>



<div class="wp-block-st-blocks-memo clip-memobox" style="color:#000;background-color:#fdf0f2"><div class="clip-fonticon" style="color:#e92f3d;border-color:#e92f3d4d"><i class="st-fa st-svg-exclamation-circle st-css-no" data-icon-label="" aria-hidden=""></i></div><div class="clip-memotext" style="color:#000">
<p>コミュニティプラグインを使用することで、Obsidianをさらに使い安くすることができます。</p>



<p>デフォルトでは無効化されているため、最初のインストール時に有効化しておくのがオススメです。</p>



<p>サイドメニューの下にある「設定」から「コミュニティプラグイン」を選択し、「<strong>コミュニティプラグインを有効化</strong>」をクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1440" height="1920" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946.jpg" alt="" class="wp-image-819" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946.jpg 1440w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946-768x1024.jpg 768w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-22-150946-1152x1536.jpg 1152w" sizes="(max-width: 1440px) 100vw, 1440px" /></figure>
</div></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">使い方</h2>



<p>Obsidianを使用する準備が整ったので、基本的な使い方を紹介します。</p>



<h3 class="wp-block-heading">新規メモの作成</h3>



<p>左サイドバーの「<strong>新規ノート</strong>」ボタンをクリックします。</p>



<p>新しいメモの名前を入力し、Enterキーを押します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="488" height="220" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-111620-1.png" alt="" class="wp-image-809"/></figure></div>


<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">デイリーノートの作成</h3>



<p>左サイドバーの「<strong>今日のデイリーノートを開く</strong>」ボタンをクリックします。</p>



<p>その日付のノートが自動的に作成されます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="468" height="536" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-112622.png" alt="" class="wp-image-810"/></figure></div>


<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">検索</h3>



<p>左上の検索バーに検索したいキーワードを入力します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="756" height="573" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-22-113040.png" alt="" class="wp-image-811"/></figure></div>


<p>検索オプションが複数ありますが、次のように使います。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>例：「Blog」というフォルダを検索する</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .75rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="path: Blog" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">path: Blog</span></span></code></pre></div>



<p>例：「調べること」という見出しを検索する</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="section: 調べること" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">section: 調べること</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">マークダウンの基本</h2>



<p>Obsidianではマークダウン記法という記述方法で文章を記述します。</p>



<p>ここれはメモを作成する際に使用するマークダウンの基本的な書き方を紹介します。</p>



<ul class="wp-block-list is-style-st-circle has-light-grayish-red-background-color has-background">
<li>見出し：<code>#</code> の数で階層を表現（例：<code># 見出し1</code>、<code>## 見出し2</code>）</li>



<li>箇条書き：<code>-</code> または <code>*</code> の後にスペースを入れる</li>



<li>番号付きリスト：<code>1.</code> <code>2.</code> <code>3.</code> のように数字とピリオドの後にスペースを入れる</li>



<li>太字：<code>**太字にしたい文字**</code></li>



<li>斜体：<code>*斜体にしたい文字*</code></li>



<li>リンク：<code>[表示テキスト](URL)</code></li>
</ul>



<p>Obsidian独自の記述として下記の記述も覚えておくと、より効率的にメモを作成することができます。</p>



<ul class="wp-block-list is-style-st-circle has-light-grayish-red-background-color has-background">
<li>リンクの作成：<code>[[]]</code>で単語を囲むと、その名前のノートへのリンクが作成されます。（例：<code>[[関連トピック]]</code>）</li>



<li>タグの使用：<code>#</code>の後にタグ名を入力します。（例：<code>#メモ #アイデア</code>）</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p>Obsidianは、マークダウンを活用した強力なメモツールです。</p>



<p>この記事で紹介した以外にもたくさんの機能がありますが、まずは<span class="st-mymarker-s">基本的な使い方をマスターしてメモをたくさん取りましょう！</span></p>



<p>きっと、あなたにとって最適なメモ取りの方法が見つかるはずです。</p>



<p></p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/install-obsidian/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windowsでの開発環境構築完全ガイド</title>
		<link>https://menda-fun.com/windows-wsl-environment/</link>
					<comments>https://menda-fun.com/windows-wsl-environment/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Wed, 04 Sep 2024 14:57:41 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[環境構築]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=778</guid>

					<description><![CDATA[Windowsでの開発環境構築について紹介します。 本記事では、Windows Terminal、Visual Studio Code、Git、WSL、Ubuntuなどの主要ツールのセットアップ方法を ...<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<p>Windowsでの開発環境構築について紹介します。</p>



<p>本記事では、Windows Terminal、Visual Studio Code、Git、WSL、Ubuntuなどの主要ツールのセットアップ方法を解説します。</p>



<p>プログラミングに多く時間を使うために、サクッと環境構築をしましょう！</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">環境情報</h2>



<p>記事執筆時点（2024年9月3日）での筆者の環境は以下のとおりです。</p>



<ul class="wp-block-list">
<li>OS：Windows HOME</li>



<li>バージョン：24H2 (OS ビルド 26100.1457)</li>



<li>Git for Windows：2.46.0</li>



<li>WSL：2.2.4.0</li>



<li>Ubuntu：22.04.4 LTS</li>



<li>Windows Terminal：1.20.11781.0</li>



<li>Visual Studio Code：1.92.2</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">環境構築手順</h2>



<p>環境構築のおすすめの順番を下にまとめました。</p>



<ul class="wp-block-list is-style-st-maruno has-light-grayish-red-background-color has-background">
<li>PowerShell（デフォルトでインストールされていなければ）</li>



<li>Visual Studio Code</li>



<li>Git for Windows</li>



<li>Windows Subsystem for Linux (WSL)</li>



<li>Ubuntu</li>



<li>Githubと連携</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">1. PowerShell</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="100" height="100" src="https://menda-fun.com/wp-content/uploads/2024/09/image-1.png" alt="" class="wp-image-789"/></figure></div>


<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>PowerShell は、コマンドライン シェル、スクリプト言語、および構成管理フレームワークで構成されるクロスプラットフォームのタスク自動化ソリューションです。 PowerShell は Windows、Linux、および macOS 上で実行されます。</p>
<cite>microsoft.com</cite></blockquote>
</div>
</div>



<p>デフォルトでインストールされていると思いますが、もしインストールされていなければ最初にインストールします。</p>



<p><a href="https://www.microsoft.com/store/productId/9MZ1SNWT0N5D?ocid=pdpshare">Microsoft Store</a>からインストールするのが楽なのでおすすめ。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">2. Visual Studio Code (VSCode)</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="100" height="100" src="https://menda-fun.com/wp-content/uploads/2024/09/image-2.png" alt="" class="wp-image-790"/></figure></div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>コードを Azure に簡単にデプロイするための統合ツールを備えた、強力で軽量な無料コード エディターです。</p>
<cite>azure.microsoft.com</cite></blockquote>



<h3 class="wp-block-heading">VSCodeのインストール</h3>



<ul class="wp-block-list">
<li> <a href="https://code.visualstudio.com/">Visual Studio Code公式サイト</a>からVSCodeをダウンロードしインストール</li>



<li>インストール時のオプションはデフォルト</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">拡張機能のインストール</h3>



<p>VSCodeには多くの拡張機能がありますが、最低限必要なものは下の2つです。</p>



<ul class="wp-block-list is-style-st-square-checkbox-no-border has-very-pale-yellow-background-color has-background">
<li><strong>Japanese Language Pack for Visual Studio Code</strong>
<ul class="wp-block-list">
<li>VSCodeを日本語化する拡張機能</li>
</ul>
</li>



<li><strong>WSL</strong>
<ul class="wp-block-list">
<li>WSL環境に接続するために必要な拡張機能</li>
</ul>
</li>
</ul>



<h4 class="wp-block-heading has-very-dark-gray-color has-text-color has-link-color wp-elements-1a54b070a9ce1a57d33b272a46aee68d"><strong>Japanese Language Pack for Visual Studio Code</strong>（日本語化パック）</h4>



<p>インストールが完了すると右下にポップアップが出てくるので「Change Language and Restart」を押しましょう。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1994" height="1540" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153548.jpg" alt="" class="wp-image-781" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153548.jpg 1994w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153548-768x593.jpg 768w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153548-1536x1186.jpg 1536w" sizes="(max-width: 1994px) 100vw, 1994px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading has-very-dark-gray-color has-text-color has-link-color wp-elements-7ecc534260702b5603c4ae5843d03972">WSL</h4>



<p>こちらはインストールするだけでOKです。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1994" height="1540" src="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153625.jpg" alt="" class="wp-image-782" srcset="https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153625.jpg 1994w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153625-768x593.jpg 768w, https://menda-fun.com/wp-content/uploads/2024/09/2024-09-01-153625-1536x1186.jpg 1536w" sizes="(max-width: 1994px) 100vw, 1994px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">3. Git for Windows</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="100" height="100" src="https://menda-fun.com/wp-content/uploads/2024/09/image-4.png" alt="" class="wp-image-792"/></figure></div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Git for Windows は、経験豊富な Git ユーザーと初心者に同様に適切なユーザー インターフェイスを提供しながら、Git SCM の完全な機能セットを Windows に提供する軽量でネイティブのツール セットを提供することに重点を置いています。</p>
<cite><a href="https://gitforwindows.org">https://gitforwindows.org</a></cite></blockquote>



<p><a href="https://git-scm.com/">Git for Windows公式サイト</a>からダウンロードしインストールしますが、面倒な設定を自分で行う必要をなくすために下記の設定をします。</p>



<ul class="wp-block-list">
<li>Select Components
<ul class="wp-block-list">
<li>Git LFS (Large File Support)</li>



<li>Associate .git* configuration files with the default text editor</li>



<li>Associate .sh files to be run with Bash</li>



<li>Check daily for Git for Windows updates</li>



<li>Add a Git Bash Profile to Windows Terminal</li>



<li>Scalar (Git add-on to manage large-size repositories)</li>
</ul>
</li>



<li>Adjusting the name of the initial branch new repositories</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">4. .gitconfigの設定</h2>



<p>.gitconfigファイルは、Gitの動作をカスタマイズするための重要なファイルです。</p>



<ul class="wp-block-list">
<li>ホームディレクトリにある<code>.gitconfig</code>ファイルを以下の内容で編集します。</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#839496;--cbp-line-number-width:calc(2 * 0.6 * .75rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="[core]
	editor = \&quot;C:\\Users\\{user}\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code\&quot; --wait
[user]
	name = {username}
	email = {email}
[pull]
	ff = only
	rebase = false
[core]
	eol = lf
	ignorecase = false
	quotepath = false
[init]
	defaultBranch = main
[fetch]
	prune = true
[rebase]
	autosquash = true" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">[core]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">editor</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #CB4B16">\&quot;</span><span style="color: #2AA198">C:</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">Users</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">{user}</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">AppData</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">Local</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">Programs</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">Microsoft</span><span style="color: #839496"> </span><span style="color: #2AA198">VS</span><span style="color: #839496"> </span><span style="color: #2AA198">Code</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">bin</span><span style="color: #CB4B16">\\</span><span style="color: #2AA198">code</span><span style="color: #CB4B16">\&quot;</span><span style="color: #839496"> </span><span style="color: #CB4B16">--wait</span></span>
<span class="line"><span style="color: #839496">[user]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">name</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">{username}</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">email</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">{email}</span></span>
<span class="line"><span style="color: #839496">[pull]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">ff</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">only</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">rebase</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">false</span></span>
<span class="line"><span style="color: #839496">[core]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">eol</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">lf</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">ignorecase</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">false</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">quotepath</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">false</span></span>
<span class="line"><span style="color: #839496">[init]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">defaultBranch</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">main</span></span>
<span class="line"><span style="color: #839496">[fetch]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">prune</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">true</span></span>
<span class="line"><span style="color: #839496">[rebase]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">autosquash</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">true</span></span></code></pre></div>



<p>※<code>{username}</code>、<code>{email}</code>はご自身の情報に置き換えてください</p>



<p>設定した内容を確認したい場合は<code>git config --list --global</code>を実行します。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">5. Windows Subsystem for Linux (WSL)</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Windows の機能である Linux 用 Windows サブシステム (WSL) を使うと、Windows コンピューター上で Linux 環境を実行でき、別の仮想マシンやデュアル ブートは必要ありません。 WSL は、Windows と Linux の両方を同時に使いたい開発者に、シームレスで生産性の高いエクスペリエンスを提供するように設計されています。</p>
<cite>microsoft.com</cite></blockquote>



<p><a href="https://learn.microsoft.com/ja-jp/windows/wsl/install">Microsoft公式サイトの導入手順</a>がわかりやすいですが、下記の手順でインストールできます。</p>



<ul class="wp-block-list is-style-st-maruno has-light-grayish-red-background-color has-background">
<li>管理者権限でPowerShellを開く</li>



<li><code>wsl --install</code>コマンドを実行（ここで下記Ubuntuもインストールされます）</li>



<li>PCを再起動</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">6. Ubuntu</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="100" height="100" src="https://menda-fun.com/wp-content/uploads/2024/09/image-3.png" alt="" class="wp-image-791"/></figure></div>


<ul class="wp-block-list is-style-st-maruno has-light-grayish-red-background-color has-background">
<li>Ubuntuを起動</li>



<li>ユーザー名とパスワードを設定</li>



<li>パッケージの更新とアップグレード：<code>sudo apt update &amp;&amp; sudo apt upgrade</code></li>



<li>Ubuntuのバージョン確認：<code>lsb_release -a</code></li>



<li>最新のGitをインストール：
<ul class="wp-block-list">
<li><span class="st-code">sudo add-apt-repository ppa:git-core/ppa</span></li>



<li><span class="st-code">sudo apt update; sudo apt install git</span></li>
</ul>
</li>



<li>UbuntuのホームディレクトリにStep 4と同様の<code>.gitconfig</code>ファイルを作成し、以下の内容を書きます。</li>
</ul>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#839496;--cbp-line-number-width:calc(2 * 0.6 * .75rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" data-code="[user]
	name = {username}
	email = {email}
[pull]
	ff = only
	rebase = false
[core]
	eol = lf
	ignorecase = false
	quotepath = false
[init]
	defaultBranch = main
[fetch]
	prune = true
[rebase]
	autosquash = true
[credential]
	helper = /mnt/c/Program\\ Files/Git/mingw64/bin/git-credential-manager.exe" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #839496">[user]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">name</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">{username}</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">email</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">{email}</span></span>
<span class="line"><span style="color: #839496">[pull]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">ff</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">only</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">rebase</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">false</span></span>
<span class="line"><span style="color: #839496">[core]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">eol</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">lf</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">ignorecase</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">false</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">quotepath</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">false</span></span>
<span class="line"><span style="color: #839496">[init]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">defaultBranch</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">main</span></span>
<span class="line"><span style="color: #839496">[fetch]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">prune</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">true</span></span>
<span class="line"><span style="color: #839496">[rebase]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">autosquash</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #B58900">true</span></span>
<span class="line"><span style="color: #839496">[credential]</span></span>
<span class="line"><span style="color: #839496">	</span><span style="color: #268BD2">helper</span><span style="color: #839496"> </span><span style="color: #2AA198">=</span><span style="color: #839496"> </span><span style="color: #2AA198">/mnt/c/Program</span><span style="color: #CB4B16">\\</span><span style="color: #839496"> </span><span style="color: #2AA198">Files/Git/mingw64/bin/git-credential-manager.exe</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">7. GitHub連携</h2>



<p>ここでGit Credential Managerの設定を行うことで、今後GitHubの操作を行う際に認証の手間が省けるようになります。</p>



<ul class="wp-block-list is-style-st-maruno has-light-grayish-red-background-color has-background">
<li>デフォルトブラウザでGitHubにサインイン</li>



<li><code>git clone</code>コマンドでGitHub接続をテスト</li>



<li>Git Credential Managerのプロンプトが表示されたら、ブラウザで認証（下の画像が表示されます）</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="420" height="363" src="https://menda-fun.com/wp-content/uploads/2024/09/スクリーンショット-2024-09-02-235922.png" alt="" class="wp-image-787"/></figure></div>


<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">8. VSCode設定の同期（任意）</h2>



<p>VSCodeの設定をクラウドに同期することで、複数のデバイス間で同じ環境を維持できます。</p>



<p>複数端末を使用していて、どの端末でも同じ設定を使いたい方は設定しておくと開発効率が高くなりますよ。</p>



<ul class="wp-block-list">
<li>VSCode左下のアカウントアイコンをクリック</li>



<li>「設定の同期をオンにする」を選択</li>



<li>同期したい設定項目を選択</li>



<li>GitHubアカウントを選択して同期</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>ここまでの長い設定作業お疲れ様でした！これでWindowsにWSL統合を含む開発環境が構築されます！</p>



<p>これにより、WindowsとLinuxのツールを効率的に使い分けることができます。</p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/windows-wsl-environment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【WordPress】コードシンタックスを使ってコードを見やすくする</title>
		<link>https://menda-fun.com/wordpress-codesyntax/</link>
					<comments>https://menda-fun.com/wordpress-codesyntax/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sun, 25 Aug 2024 05:29:02 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ブログ]]></category>
		<category><![CDATA[プラグイン]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=766</guid>

					<description><![CDATA[未経験からWebエンジニアに転職して、アウトプットの大切さを強く感じています。 アウトプットとしてブログを書いているのですが、コードブロックを使用してもただのテキストとして表示されるのみで色もなく見づ ...<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<p>未経験からWebエンジニアに転職して、アウトプットの大切さを強く感じています。</p>



<p>アウトプットとして<strong>ブログを書いている</strong>のですが、コードブロックを使用してもただのテキストとして表示されるのみで色もなく見づらいと感じていました。</p>



<pre class="wp-block-code"><code>console.log("hoge");</code></pre>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .75rem);--cbp-line-highlight-color:rgba(201, 218, 248, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0">JavaScript</span><span role="button" tabindex="0" data-code="console.log(&quot;hoge&quot;);" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">console</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">log</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">hoge</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span></span></code></pre></div>



<p>上記のコードでは後者が見やすいため、<span class="st-mymarker-s">WordPressでコードシンタックスを使用する方法</span>について紹介します。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>


<p><iframe title="ゼロから学ぶ はじめてのWordPress [バージョン6.x対応]" type="text/html" width="920" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=ll1&#038;ref_=k4w_oembed_z6gaU1I5oakEKO&#038;asin=4815615225&#038;tag=yuu0e77-22"></iframe></p>



<h2 class="wp-block-heading">「Code Block Pro」とは</h2>



<p>以下の項目に当てはまるもの、かつユーザー数が多いものが<strong>Code Block Pro</strong>でした。</p>



<ul class="wp-block-list is-style-default has-light-green-cyan-background-color has-background">
<li>記事執筆時点（2024年8月）も更新されている</li>



<li>コードの色を自由に決められる</li>



<li>行数の表示</li>



<li>コピーボタンの表示</li>



<li>言語名、ディレクトリ名などの表示</li>
</ul>



<p>WordPressのプラグインから下記のプラグインを検索してインストールします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="436" height="489" src="https://menda-fun.com/wp-content/uploads/2024/08/スクリーンショット-2024-08-25-133628.png" alt="" class="wp-image-768"/></figure></div>


<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">「Code Block Pro」の使い方</h2>



<h3 class="wp-block-heading">基本的な使い方</h3>



<p>記事の編集画面でブロック一覧から<strong>Code Block Pro</strong>を選択し、コードを貼り付けます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="332" height="541" src="https://menda-fun.com/wp-content/uploads/2024/08/スクリーンショット-2024-08-25-134423.png" alt="" class="wp-image-772"/></figure></div>


<div class="wp-block-st-blocks-midashi-box freebox has-title" style="background-color:#fdf0f2;border-color:#ffcacf;border-radius:0 5px 5px 5px"><p class="p-free" style="border-color:#ffcacf;font-weight:bold"><span class="p-entry-f" style="color:#e92f3d;font-weight:bold;background-color:#ffcacf;border-radius:0 0 5px 0"><i class="st-fa st-svg-info-circle st-css-no" aria-hidden=""></i>豆知識</span></p><div class="free-inbox">
<p class="has-st-icon has-st-icon-search"><span class="hutoaka">/code</span>と入力すると、簡単にコードブロックを挿入できます。</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter size-full"><img decoding="async" width="274" height="167" src="https://menda-fun.com/wp-content/uploads/2024/08/スクリーンショット-2024-08-25-134740.png" alt="" class="wp-image-773"/></figure></div></div></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">ディレクトリ名の付け方</h3>



<p>どのディレクトリのコードなのか説明したい場合はコードブロックのヘッダーに設定します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="260" height="989" src="https://menda-fun.com/wp-content/uploads/2024/08/スクリーンショット-2024-08-25-141441.png" alt="" class="wp-image-774"/></figure></div>


<p><span class="st-mymarker-s">HEADER TEXT</span>に入力した値がコードブロックのヘッダーに設定されます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .75rem);--cbp-line-highlight-color:rgba(201, 218, 248, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0">app/todo/page.tsx</span><span role="button" tabindex="0" data-code="console.log(&quot;hoge&quot;);" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">console</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">log</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">hoge</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span></span></code></pre></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">コードシンタックスのカラー変更</h3>



<p>Code Block Proはテーマカラーが豊富です。</p>



<p>ブロックの<span class="st-mymarker-s">Theme</span>からたくさんのテーマを探すことができます。</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .75rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">DARK PLUS</span><span role="button" tabindex="0" data-code="console.log(&quot;hoge&quot;);" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;hoge&quot;</span><span style="color: #D4D4D4">);</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .75rem);--cbp-line-highlight-color:rgba(253, 253, 237, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#efefe1">DRACURA</span><span role="button" tabindex="0" data-code="console.log(&quot;hoge&quot;);" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F8F8F2">console.</span><span style="color: #50FA7B">log</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">&quot;</span><span style="color: #F1FA8C">hoge</span><span style="color: #E9F284">&quot;</span><span style="color: #F8F8F2">);</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.75rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#839496;--cbp-line-number-width:calc(1 * 0.6 * .75rem);--cbp-line-highlight-color:rgba(74, 193, 207, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#003f50;color:#75888a">SOLARIZED DARK</span><span role="button" tabindex="0" data-code="console.log(&quot;hoge&quot;);" style="color:#839496;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki solarized-dark" style="background-color: #002B36" tabindex="0"><code><span class="line"><span style="color: #268BD2">console</span><span style="color: #839496">.</span><span style="color: #268BD2">log</span><span style="color: #839496">(</span><span style="color: #2AA198">&quot;hoge&quot;</span><span style="color: #839496">);</span></span></code></pre></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p>WordPressの記事にコードを入力するのであれば、<span class="hutoaka">Code Block Pro</span>を使うことでさらに読みやすい記事にすることができます。</p>



<p>デフォルトのコードブロックを使うようにシンプルに使え、さらにカラーテーマが豊富なのでテーマを眺めるだけでも楽しいので、ぜひチェックしてみてください。</p>


<p><iframe title="1冊ですべて身につくWordPress入門講座" type="text/html" width="920" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=ll1&#038;ref_=k4w_oembed_AuqyZ1ZFKqcCy2&#038;asin=4815609403&#038;tag=yuu0e77-22"></iframe></p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/wordpress-codesyntax/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【tRPC、Next.js App Router】Hydration failedの解決</title>
		<link>https://menda-fun.com/trpc-next-hydration-failed/</link>
					<comments>https://menda-fun.com/trpc-next-hydration-failed/#respond</comments>
		
		<dc:creator><![CDATA[ゆた]]></dc:creator>
		<pubDate>Sun, 25 Aug 2024 03:01:18 +0000</pubDate>
				<category><![CDATA[Next.js]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[AppRouter]]></category>
		<category><![CDATA[tRPC]]></category>
		<guid isPermaLink="false">https://menda-fun.com/?p=760</guid>

					<description><![CDATA[T3Appを使用してToDoアプリを作成していたところ、エラーが発生しましたので解決方法を紹介します。 技術スタック T3Appを実行してそのままの環境で開発を行いました。使用している技術スタックは下 ...<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></description>
										<content:encoded><![CDATA[
<p><a href="https://create.t3.gg">T3App</a>を使用してToDoアプリを作成していたところ、エラーが発生しましたので解決方法を紹介します。</p>



<p></p>



<h2 class="wp-block-heading">技術スタック</h2>



<p>T3Appを実行してそのままの環境で開発を行いました。使用している技術スタックは下記のとおりです。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>技術スタック</th><th>バージョン</th></tr></thead><tbody><tr><td>prisma</td><td>5.18.0</td></tr><tr><td>typescript</td><td>5.5.4</td></tr><tr><td>trpc/server</td><td>11.0.0-rc.482</td></tr><tr><td>zod</td><td>3.23.8</td></tr><tr><td>react</td><td>18.3.1</td></tr><tr><td>tanstack/react-query</td><td>5.52.0</td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">発生したエラー</h2>



<p>プロジェクト作成直後のコンポーネントではエラーは発生していませんでした。</p>



<p>DB内のデータを取得、表示するためのコンポーネントを作成したところ、下記のエラーが発生しました。</p>



<div class="wp-block-st-blocks-midashi-box freebox has-title" style="background-color:#fdf0f2;border-color:#f78da7;border-radius:0 5px 5px 5px"><p class="p-free" style="border-color:#f78da7;font-weight:bold"><span class="p-entry-f" style="color:#ffffff;font-weight:bold;background-color:#f78da7;border-radius:0 0 5px 0"><i class="st-fa st-svg-exclamation-circle st-css-no" aria-hidden=""></i>エラーメッセージ</span></p><div class="free-inbox">
<p class="has-st-icon has-st-icon-check">Error: Hydration failed because the initial UI does not match what was rendered on the server.</p>
</div></div>



<p>エラーメッセージを翻訳すると、</p>



<p>「<strong>エラー: 初期 UI がサーバー上でレンダリングされたものと一致しないため、ハイドレーションは失敗しました。</strong></p>



<p>」となります。</p>



<p>新たに作成したコンポーネントと、エラーが発生しているコンポーネントのコードは次のようになっていました。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">実際のコード</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.875rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0">app/api/trpc/[trpc]/page.tsx</span><span role="button" tabindex="0" data-code="export default async function Home() {
  void api.todo.getAllTodo.prefetch();

  return (
    &lt;HydrateClient&gt;
      &lt;main className=&quot;flex min-h-screen flex-col items-center justify-center bg-gradient-to-b from-[#2e026d] to-[#15162c] text-white&quot;&gt;
        &lt;div className=&quot;container flex flex-col items-center justify-center gap-12 px-4 py-16&quot;&gt;
          &lt;AddTodo /&gt;
          &lt;TodoList /&gt;
        &lt;/div&gt;
      &lt;/main&gt;
    &lt;/HydrateClient&gt;
  );
}" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">export</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">default</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">async</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">Home</span><span style="color: #ECEFF4">()</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">void</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">api</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">todo</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">getAllTodo</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">prefetch</span><span style="color: #D8DEE9FF">()</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> (</span></span>
<span class="line"><span style="color: #D8DEE9FF">    &lt;</span><span style="color: #8FBCBB">HydrateClient</span><span style="color: #D8DEE9FF">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">main</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">flex min-h-screen flex-col items-center justify-center bg-gradient-to-b from-[#2e026d] to-[#15162c] text-white</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">div</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">container flex flex-col items-center justify-center gap-12 px-4 py-16</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">AddTodo</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">TodoList</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">div</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">main</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">HydrateClient</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  )</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.875rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0">api/app/_components/ToDoList.tsx</span><span role="button" tabindex="0" data-code="const TodoList = () =&gt; {
  const { data: todoList } = api.todo.getAllTodo.useQuery();

  return (
    &lt;div className=&quot;w-full max-w-xs&quot;&gt;
      &lt;ul className=&quot;flex flex-col gap-2&quot;&gt;
        {todoList?.map((todo) =&gt; (
          &lt;li
            key={todo.id}
            className=&quot;flex items-center justify-between rounded-full bg-white/10 px-4 py-2&quot;
          &gt;
            &lt;span&gt;{todo.title}&lt;/span&gt;
            &lt;button className=&quot;rounded-full bg-white/10 px-4 py-2 font-semibold transition hover:bg-white/20&quot;&gt;
              Delete
            &lt;/button&gt;
          &lt;/li&gt;
        ))}
      &lt;/ul&gt;
    &lt;/div&gt;
  );
};

export default TodoList;" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #81A1C1">const</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">TodoList</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">()</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">const</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF"> data</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">todoList</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">api</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">todo</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">getAllTodo</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">useQuery</span><span style="color: #D8DEE9FF">()</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> (</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">div</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">w-full max-w-xs</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">ul</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">flex flex-col gap-2</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9">todoList</span><span style="color: #D8DEE9FF">?.</span><span style="color: #D8DEE9">map</span><span style="color: #D8DEE9FF">((</span><span style="color: #D8DEE9">todo</span><span style="color: #D8DEE9FF">) </span><span style="color: #81A1C1">=&gt;</span><span style="color: #D8DEE9FF"> (</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">li</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #D8DEE9">key</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">todo.</span><span style="color: #D8DEE9">id</span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #D8DEE9">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">flex items-center justify-between rounded-full bg-white/10 px-4 py-2</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            &lt;</span><span style="color: #8FBCBB">span</span><span style="color: #D8DEE9FF">&gt;</span><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF">todo.</span><span style="color: #D8DEE9">title</span><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">span</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">&lt;</span><span style="color: #D8DEE9">button</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">className</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">rounded-full bg-white/10 px-4 py-2 font-semibold transition hover:bg-white/20</span><span style="color: #ECEFF4">&quot;</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">              </span><span style="color: #D8DEE9">Delete</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">button</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">          </span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">li</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">        ))</span><span style="color: #ECEFF4">}</span></span>
<span class="line"><span style="color: #D8DEE9FF">      </span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">ul</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">&lt;/</span><span style="color: #D8DEE9">div</span><span style="color: #81A1C1">&gt;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  )</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span><span style="color: #81A1C1">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #81A1C1">export</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">default</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">TodoList</span><span style="color: #81A1C1">;</span></span></code></pre></div>



<p>DBのデータを表示するコンポーネントの準備が終わる前にレンダリングされるため、サーバー側との差異が発生しています。</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">解決方法</h2>



<p>コンポーネントの準備ができたら画面に表示するように修正すれば解決するのですが、2種類の方法があります。</p>



<h3 class="wp-block-heading">解決方法その2（サーバーコンポーネント側で対処）</h3>



<p>プリフェッチをawaitで実行する</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.875rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0">app/api/trpc/[trpc]/page.tsx</span><span role="button" tabindex="0" data-code="//  void await api.todo.getAllTodo.prefetch();
  try {
    await api.todo.getAllTodo.prefetch();
  } catch (error) {
    console.error(error);
  }" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #616E88">//  void await api.todo.getAllTodo.prefetch();</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">try</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">await</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">api</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">todo</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">getAllTodo</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">prefetch</span><span style="color: #D8DEE9FF">()</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">catch</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">error</span><span style="color: #D8DEE9FF">) </span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">console</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">error</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">error</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #ECEFF4">}</span></span></code></pre></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">解決方法その2（クライアントコンポーネント側で対処）</h3>



<p><strong>useSuspenseQuery</strong>を使用する</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Roboto-Mono.ttf" style="font-size:.875rem;font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f;color:#c8d0e0">api/app/_components/ToDoList.tsx</span><span role="button" tabindex="0" data-code="//  const { data: todo } = api.todo.getAllTodo.useQuery();
  const [todoList] = api.todo.getAllTodo.useSuspenseQuery();" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #616E88">//  const { data: todo } = api.todo.getAllTodo.useQuery();</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">const</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">[</span><span style="color: #D8DEE9">todoList</span><span style="color: #ECEFF4">]</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">api</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">todo</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">getAllTodo</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">useSuspenseQuery</span><span style="color: #D8DEE9FF">()</span><span style="color: #81A1C1">;</span></span></code></pre></div>



<p>クライアントコンポーネント側で対処したほうがエラーハンドリングがしやすく感じたので、私は後者を採用しました。</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



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



<p>Hydration failedのエラーメッセージが表示された場合は、非同期処理がうまくできているのか確認しましょう。</p>


<p><iframe title="実践Next.js —— App Routerで進化するWebアプリ開発 (エンジニア選書)" type="text/html" width="920" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=ll1&#038;ref_=k4w_oembed_Ks143hzyntjJIx&#038;asin=4297140616&#038;tag=yuu0e77-22"></iframe></p>
<p>Copyright &copy; 2025 <a href="https://menda-fun.com">てっくぶろぐ。</a> All Rights Reserved.</p>]]></content:encoded>
					
					<wfw:commentRss>https://menda-fun.com/trpc-next-hydration-failed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
