<?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>Ite &#8211; エンジニア見習い</title>
	<atom:link href="https://otonan-syusyoku.work/archives/tag/ite/feed" rel="self" type="application/rss+xml" />
	<link>https://otonan-syusyoku.work</link>
	<description>三流プログラマー</description>
	<lastBuildDate>Mon, 21 Jul 2025 13:03:38 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://otonan-syusyoku.work/wp-content/uploads/2023/10/cropped-名称未設定のデザイン-16-32x32.png</url>
	<title>Ite &#8211; エンジニア見習い</title>
	<link>https://otonan-syusyoku.work</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>iTerm2でディレクトリごとにテーマを自動で切り替える方法</title>
		<link>https://otonan-syusyoku.work/archives/2136</link>
					<comments>https://otonan-syusyoku.work/archives/2136#respond</comments>
		
		<dc:creator><![CDATA[hrokig2]]></dc:creator>
		<pubDate>Fri, 04 Jul 2025 06:27:12 +0000</pubDate>
				<category><![CDATA[生涯独学]]></category>
		<category><![CDATA[Ite]]></category>
		<category><![CDATA[作業効率化]]></category>
		<category><![CDATA[脱3流プログラマー]]></category>
		<guid isPermaLink="false">https://otonan-syusyoku.work/?p=2136</guid>

					<description><![CDATA[ターミナル作業をしていると、「このプロジェクトの時はこの色で、個人作業の時は別の色にしたいな」と思うことはありませんか？iTerm2を使っているなら、ディレクトリごとにターミナルのテーマ（背景色、フォント、カラースキーム [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>ターミナル作業をしていると、「このプロジェクトの時はこの色で、個人作業の時は別の色にしたいな」と思うことはありませんか？iTerm2を使っているなら、<b>ディレクトリごとにターミナルのテーマ（背景色、フォント、カラースキームなど）を自動で切り替える</b>ことができます！副業を多数行っている人は設定必須っす！</p>
<p>今回は、ZshとiTerm2の連携機能を使って、この便利機能を設定する方法を解説します。</p>
<h3>なぜディレクトリごとにテーマを切り替えるのか？</h3>
<ul>
<li><b>視覚的な区別</b>: 複数のプロジェクトを並行して進めている場合、ターミナルの色が変わることで、今どの環境で作業しているのか一目で分かります。</li>
<li><b>集中力の向上</b>: 特定の作業モードに合わせた色合いにすることで、集中力を高める効果も期待できます。</li>
<li><b>誤操作の防止</b>: 本番環境や重要なディレクトリに入ったときに、警告色にすることで、不用意なコマンド実行を防ぐことができます。</li>
</ul>
<h3>必要なもの</h3>
<ul>
<li><b>iTerm2</b>: macOS用の高機能ターミナルエミュレータ</li>
<li><b>Zsh</b>: macOSのデフォルトシェル（Bashでも可能ですが、Zshの方が設定が簡単です）</li>
</ul>
<h3>設定手順</h3>
<p>設定は大きく分けて2つのステップです。</p>
<ol start="1">
<li><b>iTerm2で複数のプロファイル（テーマ）を作成する</b></li>
<li><b>Zshの設定ファイルで、ディレクトリに応じたプロファイル切り替えスクリプトを記述する</b></li>
</ol>
<h4>ステップ1: iTerm2で複数のプロファイル（テーマ）を作成する</h4>
<p>まず、切り替えたいテーマごとにiTerm2のプロファイルを作成します。</p>
<ol start="1">
<li><b>iTerm2を開き、<code>Cmd + ,</code> で設定（Preferences）を開きます。</b></li>
<li><b>「Profiles」タブを選択します。</b></li>
<li><b>左下の「+」ボタンをクリックして、新しいプロファイルを作成します。</b>
<ul>
<li>例えば、デフォルトの「Default」プロファイルとは別に、仕事用の「<b>Work Theme</b>」、個人用の「<b>Personal Theme</b>」など、分かりやすい名前を付けましょう。</li>
</ul>
</li>
<li><b>各プロファイルでテーマを設定します。</b>
<ul>
<li>作成したプロファイルを選択し、右側の設定を変更します。</li>
<li><b>Colors</b>: 「Color Presets」から好きなカラースキームを選んだり、背景色を調整したりできます。</li>
<li><b>Text</b>: フォントや文字サイズを設定します。</li>
<li><b>Window</b>: 背景画像や透明度を設定することも可能です。</li>
</ul>
</li>
</ol>
<p>これで、複数のテーマがiTerm2に準備できました。</p>
<h4>ステップ2: Zshの設定ファイルで、ディレクトリに応じたプロファイル切り替えスクリプトを記述する</h4>
<p>次に、シェルがディレクトリを移動するたびに、iTerm2に「このプロファイルに切り替えて！」と指示を出すスクリプトを記述します。</p>
<p>お使いのZshの設定ファイル（通常は <code>~/.zshrc</code>）を開いて、以下のコードを追記してください。</p>
<p><response-element class="" ng-version="0.0.0-PLACEHOLDER"><code-block _nghost-ng-c3844426358="" class="ng-tns-c3844426358-687 ng-star-inserted"></code-block></response-element></p>
<div _ngcontent-ng-c3844426358="" class="code-block ng-tns-c3844426358-687 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" jslog="223238;track:impression;BardVeMetadataKey:[[&quot;r_7236cad7b46e0bc8&quot;,&quot;c_d615f67ec21b33fe&quot;,null,&quot;rc_9a72fd6ecd384a95&quot;,null,null,&quot;ja&quot;,null,1,null,null,1,0]]">
<div _ngcontent-ng-c3844426358="" class="formatted-code-block-internal-container ng-tns-c3844426358-687">
<div _ngcontent-ng-c3844426358="" class="animated-opacity ng-tns-c3844426358-687">
<pre _ngcontent-ng-c3844426358="" class="ng-tns-c3844426358-687"><code _ngcontent-ng-c3844426358="" role="text" data-test-id="code-content" class="code-container formatted ng-tns-c3844426358-687"><span class="hljs-comment"># iTerm2のプロファイルを切り替える関数</span>
<span class="hljs-comment"># この関数は、iTerm2独自の制御シーケンス（OSC 1337;SetProfile）を使ってプロファイルを変更します。</span>
<span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">iterm_set_profile</span></span>() {
  <span class="hljs-built_in">local</span> profile_name=<span class="hljs-string">"<span class="hljs-variable">$1</span>"</span>
  <span class="hljs-built_in">echo</span> -e <span class="hljs-string">"\033]1337;SetProfile=<span class="hljs-variable">${profile_name}</span>\a"</span>
}

<span class="hljs-comment"># コマンド実行前に呼ばれる関数</span>
<span class="hljs-comment"># ここで現在のディレクトリ($PWD)をチェックし、適切なプロファイルを呼び出します。</span>
<span class="hljs-keyword">function</span> <span class="hljs-function"><span class="hljs-title">precmd_iterm_profile_switcher</span></span>() {
  <span class="hljs-keyword">if</span> [[ <span class="hljs-string">"<span class="hljs-variable">$PWD</span>"</span> == *<span class="hljs-string">"/Users/yourname/projects/work"</span>* ]]; <span class="hljs-keyword">then</span>
    <span class="hljs-comment"># 例: '/Users/yourname/projects/work' ディレクトリ配下なら 'Work Theme' プロファイルに</span>
    iterm_set_profile <span class="hljs-string">"Work Theme"</span>
  <span class="hljs-keyword">elif</span> [[ <span class="hljs-string">"<span class="hljs-variable">$PWD</span>"</span> == *<span class="hljs-string">"/Users/yourname/documents/personal"</span>* ]]; <span class="hljs-keyword">then</span>
    <span class="hljs-comment"># 例: '/Users/yourname/documents/personal' ディレクトリ配下なら 'Personal Theme' プロファイルに</span>
    iterm_set_profile <span class="hljs-string">"Personal Theme"</span>
  <span class="hljs-keyword">else</span>
    <span class="hljs-comment"># それ以外のディレクトリでは、デフォルトのプロファイルに戻す</span>
    iterm_set_profile <span class="hljs-string">"Default"</span>
  <span class="hljs-keyword">fi</span>
}

<span class="hljs-comment"># Zshがコマンド実行前にprecmd_iterm_profile_switcher関数を実行するように登録</span>
precmd_functions+=(precmd_iterm_profile_switcher)
</code></pre>
</div>
</div>
</div>
<p>&nbsp;</p>
<p><b>【重要】コードをあなたの環境に合わせて修正してください！</b></p>
<ul>
<li><code>"/Users/yourname/projects/work"</code> や <code>"/Users/yourname/documents/personal"</code> の部分は、<b>あなたがテーマを切り替えたい実際のディレクトリパス</b>に修正してください。</li>
<li><code>"Work Theme"</code>、<code>"Personal Theme"</code>、<code>"Default"</code> は、<b>ステップ1であなたがiTerm2で作成したプロファイルの名前</b>に正確に合わせてください。</li>
</ul>
<h3>設定の反映</h3>
<p><code>~/.zshrc</code> に上記のコードを追記したら、ターミナルを再起動するか、以下のコマンドを実行して設定を再読み込みします。</p>
<p><response-element class="" ng-version="0.0.0-PLACEHOLDER"><code-block _nghost-ng-c3844426358="" class="ng-tns-c3844426358-688 ng-star-inserted"></code-block></response-element></p>
<div _ngcontent-ng-c3844426358="" class="code-block ng-tns-c3844426358-688 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" jslog="223238;track:impression;BardVeMetadataKey:[[&quot;r_7236cad7b46e0bc8&quot;,&quot;c_d615f67ec21b33fe&quot;,null,&quot;rc_9a72fd6ecd384a95&quot;,null,null,&quot;ja&quot;,null,1,null,null,1,0]]">
<div _ngcontent-ng-c3844426358="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3844426358-688 ng-star-inserted">
<p><span _ngcontent-ng-c3844426358="" class="ng-tns-c3844426358-688">Bash</span></p>
<div _ngcontent-ng-c3844426358="" class="buttons ng-tns-c3844426358-688 ng-star-inserted"><button _ngcontent-ng-c3844426358="" aria-label="コードをコピー" mat-icon-button="" mattooltip="コードをコピー" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3844426358-688 mat-unthemed ng-star-inserted" mat-ripple-loader-uninitialized="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-centered="" jslog="179062;track:generic_click,impression;BardVeMetadataKey:[[&quot;r_7236cad7b46e0bc8&quot;,&quot;c_d615f67ec21b33fe&quot;,null,&quot;rc_9a72fd6ecd384a95&quot;,null,null,&quot;ja&quot;,null,1,null,null,1,0]];mutable:true"><span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple"></span><mat-icon _ngcontent-ng-c3844426358="" role="img" fonticon="content_copy" class="mat-icon notranslate google-symbols mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" data-mat-icon-name="content_copy"></mat-icon><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></button></div>
</div>
<div _ngcontent-ng-c3844426358="" class="formatted-code-block-internal-container ng-tns-c3844426358-688">
<div _ngcontent-ng-c3844426358="" class="animated-opacity ng-tns-c3844426358-688">
<pre _ngcontent-ng-c3844426358="" class="ng-tns-c3844426358-688"><code _ngcontent-ng-c3844426358="" role="text" data-test-id="code-content" class="code-container formatted ng-tns-c3844426358-688"><span class="hljs-built_in">source</span> ~/.zshrc
</code></pre>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>これで設定は完了です！</p>
<h3>動作確認</h3>
<p>実際にテーマを切り替えたいディレクトリに <code>cd</code> してみてください。 例えば、<code>/Users/yourname/projects/work</code> ディレクトリに移動すると、「Work Theme」のiTerm2プロファイルが適用され、背景色やフォントが切り替わるはずです。そして、別のディレクトリに移動すると、「Default」テーマに戻るのを確認できるでしょう。</p>
<h3>ちょっとしたヒント</h3>
<ul>
<li><code>if</code>文の条件を増やすことで、さらに多くのディレクトリやプロジェクトに対して異なるテーマを設定できます。</li>
<li><code>*"</code> の部分は、指定したパスがディレクトリ名のどこかに含まれていればマッチするという意味です。より厳密に特定のディレクトリだけを対象にしたい場合は、<code>"$PWD" == "/Users/yourname/exact/path"</code> のように <code>=</code> を使って記述することも可能です。</li>
</ul>
<p>これで、あなたのiTerm2環境は、さらに快適で視覚的に分かりやすいものになったはずです。ぜひこの機能を活用して、ターミナル作業をより効率的で楽しいものにしてください！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://otonan-syusyoku.work/archives/2136/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
