<?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>AI・機械学習 アーカイブ - Sheltie Garage Tech</title>
	<atom:link href="https://sheltie-garage.xyz/tech/category/%e6%a9%9f%e6%a2%b0%e5%ad%a6%e7%bf%92/feed/" rel="self" type="application/rss+xml" />
	<link>https://sheltie-garage.xyz/tech/category/機械学習/</link>
	<description>テクノロジー関連の話題をまとめたブログです</description>
	<lastBuildDate>Wed, 24 Jun 2026 09:22:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Hermes Agentを使ってみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/06/hermes-agent%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/06/hermes-agent%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Wed, 24 Jun 2026 09:22:28 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1709</guid>

					<description><![CDATA[<p>Hermes Agentに興味が湧いたので使ってみます Hermes Agentとは？ https://hermes-agent.org/ja 概要を確認すると、「利用し続けることで利用者の好みを学習し、ともに成長してい [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/hermes-agent%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">Hermes Agentを使ってみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Hermes Agentに興味が湧いたので使ってみます</p>



<h2 class="wp-block-heading">Hermes Agentとは？</h2>



<p class="wp-block-paragraph"><a href="https://hermes-agent.org/ja">https://hermes-agent.org/ja</a></p>



<p class="wp-block-paragraph">概要を確認すると、「利用し続けることで利用者の好みを学習し、ともに成長していくAIエージェント」とのことです<br>利用者の作業内容や好みを学習して、自分にフィットしたAIエージェントに育っていくみたいですね</p>



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



<p class="wp-block-paragraph">インストールは「MacBookPro 2019(Intel Mac)」に行いました</p>



<p class="wp-block-paragraph">公式ページでインストール用のコマンドが準備されているので、ターミナルで実行します</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="458" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_001-1024x458.png" alt="" class="wp-image-1710" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_001-1024x458.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_001-300x134.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_001-768x344.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_001.png 1430w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">OpenClawをインストールしていると、設定を引き継げるようです<br>事前に内容を確認するか聞かれるので、今回はYとしました</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="450" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_002-1024x450.png" alt="" class="wp-image-1711" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_002-1024x450.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_002-300x132.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_002-768x338.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_002-1536x675.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_002.png 1670w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="246" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_003-1024x246.png" alt="" class="wp-image-1712" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_003-1024x246.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_003-300x72.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_003-768x185.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_003-1536x370.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_003.png 1862w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">移行内容が表示されます<br>最後に警告が表示され、設定が引き継げない項目があることや、同じ設定でも意味が異なる設定があることが説明されていました</p>



<p class="wp-block-paragraph">自分はOpenClawは入れただけで全然使ってないので、今回はNを選択しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="166" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_004-1024x166.png" alt="" class="wp-image-1713" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_004-1024x166.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_004-300x49.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_004-768x124.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_004-1536x248.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_004.png 1892w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">セットアップ方法の選択が表示されます<br>今回はFull setupを選択しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="888" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_005-1024x888.png" alt="" class="wp-image-1714" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_005-1024x888.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_005-300x260.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_005-768x666.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_005-1536x1332.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_005.png 1898w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">一度セットアップを実行してしまっていたので、すでにLocal LLMの設定が行われています<br>初回は「Custom endpoint (enter URL manually)」を選択しました</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="882" height="712" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_006.png" alt="" class="wp-image-1715" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_006.png 882w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_006-300x242.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_006-768x620.png 768w" sizes="auto, (max-width: 882px) 100vw, 882px" /></figure>



<p class="wp-block-paragraph">モデルの名前を指定します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="362" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_007-1024x362.png" alt="" class="wp-image-1716" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_007-1024x362.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_007-300x106.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_007-768x271.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_007.png 1302w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">ターミナルのバックエンドを選択します<br>Localを選択しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="949" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_008-1024x949.png" alt="" class="wp-image-1717" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_008-1024x949.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_008-300x278.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_008-768x711.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_008.png 1468w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">メッセージングアプリはSlackにしました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="403" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_009-1024x403.png" alt="" class="wp-image-1718" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_009-1024x403.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_009-300x118.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_009-768x302.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_009-1536x605.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_009.png 1798w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="130" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_010-1024x130.png" alt="" class="wp-image-1719" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_010-1024x130.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_010-300x38.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_010-768x98.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_010-1536x196.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_010-2048x261.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Slack Botの設定方法が表示されます<br>Slack側にて新しくアプリを作成し、Hermesが生成したマニフェストファイルを使用して設定します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="707" height="384" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_011.png" alt="" class="wp-image-1720" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_011.png 707w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_011-300x163.png 300w" sizes="auto, (max-width: 707px) 100vw, 707px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="537" height="503" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_012.png" alt="" class="wp-image-1721" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_012.png 537w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_012-300x281.png 300w" sizes="auto, (max-width: 537px) 100vw, 537px" /></figure>



<p class="wp-block-paragraph">App Level Tokenを作成します<br>Scopeはconnections:writeを使用します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="528" height="473" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_013.png" alt="" class="wp-image-1722" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_013.png 528w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_013-300x269.png 300w" sizes="auto, (max-width: 528px) 100vw, 528px" /></figure>



<p class="wp-block-paragraph">トークンが発行されるので、控えておきます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="954" height="357" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_014.png" alt="" class="wp-image-1723" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_014.png 954w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_014-300x112.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_014-768x287.png 768w" sizes="auto, (max-width: 954px) 100vw, 954px" /></figure>



<p class="wp-block-paragraph">OAuthのトークンも必要なので、作成して控えておきます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="115" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_015-1024x115.png" alt="" class="wp-image-1724" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_015-1024x115.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_015-300x34.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_015-768x86.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_015.png 1158w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">作成したトークンをそれぞれ設定します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="117" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_017-1024x117.png" alt="" class="wp-image-1726" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_017-1024x117.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_017-300x34.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_017-768x88.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_017-1536x176.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_017.png 1764w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="708" height="998" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_016.png" alt="" class="wp-image-1725" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_016.png 708w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_016-213x300.png 213w" sizes="auto, (max-width: 708px) 100vw, 708px" /></figure>



<p class="wp-block-paragraph">SlackユーザーIDの入力を求められます<br>SlackAppのプロフィールから確認できました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="218" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_018-1024x218.png" alt="" class="wp-image-1727" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_018-1024x218.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_018-300x64.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_018-768x164.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_018-1536x327.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_018.png 1558w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="540" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_019-1024x540.png" alt="" class="wp-image-1728" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_019-1024x540.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_019-300x158.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_019-768x405.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_019-1536x810.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_019.png 1734w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Hermes通知用チャンネルを作成し、チャンネルのリンクをコピーします<br>コピーしたリンクの中にチャンネルのIDが含まれているので、コピーして設定します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="37" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_020-1024x37.png" alt="" class="wp-image-1729" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_020-1024x37.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_020-300x11.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_020-768x28.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_020-1536x56.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_020.png 1750w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">マシン起動時にHermesも起動するかの設定です<br>今回はお試しなのでnを選択しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="679" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_021-1024x679.png" alt="" class="wp-image-1730" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_021-1024x679.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_021-300x199.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_021-768x509.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_021-1536x1019.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_021.png 1894w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">ツールの設定です<br>デフォルトとしました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="303" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_022-1024x303.png" alt="" class="wp-image-1731" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_022-1024x303.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_022-300x89.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_022-768x227.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_022-1536x454.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_022.png 1704w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">利用するブラウザのプロバイダ<br>Local Browserとしました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="487" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_023-1024x487.png" alt="" class="wp-image-1732" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_023-1024x487.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_023-300x143.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_023-768x365.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_023.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">画像生成のプロバイダ<br>今回はスキップにしました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="414" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_024-1024x414.png" alt="" class="wp-image-1733" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_024-1024x414.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_024-300x121.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_024-768x311.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_024-1536x621.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_024.png 1686w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">音声生成のプロバイダ<br>こちらも自分が利用できるものは無いのでスキップ</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="230" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_025-1024x230.png" alt="" class="wp-image-1734" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_025-1024x230.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_025-300x67.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_025-768x172.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_025-1536x344.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_025-2048x459.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">検索プロバイダーはDuckDuckGoにしてみました<br>ただし、検索しかできないので、Webページ本体取得には別プロバイダを指定する必要があるとのこと</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="383" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_026-1024x383.png" alt="" class="wp-image-1735" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_026-1024x383.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_026-300x112.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_026-768x288.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_026.png 1394w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">これでセットアップは完了です<br>最後に、自動起動の設定を再度聞かれますが、今回は不要なのでnと入力しました</p>



<p class="wp-block-paragraph">利用前にhermesコマンドが利用できるように設定をリロードします</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>source ~/.zshrc</code></pre></div>



<p class="wp-block-paragraph">上記コマンド実行後、以下でエージェントを起動します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>hermes --tui</code></pre></div>



<h2 class="wp-block-heading">動かしてみる</h2>



<p class="wp-block-paragraph">チャットウィンドウにお願いするだけです</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="305" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_028-1024x305.png" alt="" class="wp-image-1742" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_028-1024x305.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_028-300x89.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_028-768x229.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_028-1536x458.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_028.png 1900w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="349" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_029-1024x349.png" alt="" class="wp-image-1743" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_029-1024x349.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_029-300x102.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_029-768x262.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_029-1536x524.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_029-2048x699.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">合っているかは別にして、Webサーチのスキルを駆使して調べてくれたようです</p>



<h2 class="wp-block-heading">Slackから指示を出してみる</h2>



<p class="wp-block-paragraph">hermes gatewayを動かしておく必要があります</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>hermes gateway</code></pre></div>



<p class="wp-block-paragraph">SlackからHermes宛に指示を出してみます<br>Hermesエージェントをチャンネルに招待しておく必要があります<br>(指示実行時にチャンネルに招待してくれる)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="650" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_027-1024x650.png" alt="" class="wp-image-1741" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_027-1024x650.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_027-300x190.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_027-768x487.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_027-1536x975.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260624_027.png 1822w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">上記のようにSlackからHermesエージェントにメッセージを送り、レスポンスを受け取ることができました<br>今回は簡単なテストメッセージですが、例えば<br>・今日のニュースのトピックスを調べておいて<br>・ショッピングモールからお買い得品をリストアップして<br>などの指示を外出先からも出せると思うと、利用範囲が色々広がりそうです</p>



<h2 class="wp-block-heading">以上</h2>



<p class="wp-block-paragraph">ということで、Hermes Agentのインストールから利用までざっと記述してみました<br>調べながら、ブログ書きながらで今日一日費やしてしまった・・・</p>



<p class="wp-block-paragraph">今回はWebサーチの例を示しましたが、当然いろいろなスキルを入れれば画像生成、予定のまとめ、テキスト読み上げなんかもできるみたいです</p>



<p class="wp-block-paragraph">ネックとしては、自分の環境ではMacBookPro単体で動かないことですね(性能が低すぎて)<br>こういうツールを利用すると、AI専用のPCが欲しくなります！</p>


<div id="rinkerid1744" class="yyi-rinker-contents  yyi-rinker-postid-1744 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FchatGPT%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img loading="lazy" decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7653/9784260057653.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FchatGPT%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">医師による医師のためのChatGPT入門 2 臨床現場ががらりと変わる生成AI実践術 [ 大塚 篤司 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=chatGPT&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FchatGPT%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DchatGPT" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid1745" class="yyi-rinker-contents  yyi-rinker-postid-1745 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaude%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img loading="lazy" decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5495/9784866215495_1_3.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaude%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">3時間で身につくClaude活用術 メール・報告書・企画書が「プロンプト」ひとつで瞬時に完成!! [ 尾藤 克之 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=Claude&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaude%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DClaude" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/hermes-agent%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">Hermes Agentを使ってみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/06/hermes-agent%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>コミケサークル検索RAGを作ろうとして失敗した話</title>
		<link>https://sheltie-garage.xyz/tech/2026/06/%e3%82%b3%e3%83%9f%e3%82%b1%e3%82%b5%e3%83%bc%e3%82%af%e3%83%ab%e6%a4%9c%e7%b4%a2rag%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86%e3%81%a8%e3%81%97%e3%81%a6%e5%a4%b1%e6%95%97%e3%81%97%e3%81%9f%e8%a9%b1/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/06/%e3%82%b3%e3%83%9f%e3%82%b1%e3%82%b5%e3%83%bc%e3%82%af%e3%83%ab%e6%a4%9c%e7%b4%a2rag%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86%e3%81%a8%e3%81%97%e3%81%a6%e5%a4%b1%e6%95%97%e3%81%97%e3%81%9f%e8%a9%b1/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Thu, 11 Jun 2026 07:00:43 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1659</guid>

					<description><![CDATA[<p>残骸リポジトリ https://github.com/sheltie-fusafusa/dojin-rag はじめに 無職期間を利用してリスキリングを行っていますAIエージェント時代の開発手法ということで「仕様駆動開発( [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/%e3%82%b3%e3%83%9f%e3%82%b1%e3%82%b5%e3%83%bc%e3%82%af%e3%83%ab%e6%a4%9c%e7%b4%a2rag%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86%e3%81%a8%e3%81%97%e3%81%a6%e5%a4%b1%e6%95%97%e3%81%97%e3%81%9f%e8%a9%b1/">コミケサークル検索RAGを作ろうとして失敗した話</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">残骸リポジトリ</h2>



<p class="wp-block-paragraph"><a href="https://github.com/sheltie-fusafusa/dojin-rag" target="_blank" rel="noreferrer noopener">https://github.com/sheltie-fusafusa/dojin-rag</a></p>



<h2 class="wp-block-heading">はじめに</h2>



<p class="wp-block-paragraph">無職期間を利用してリスキリングを行っています<br>AIエージェント時代の開発手法ということで「仕様駆動開発(SDD)」に興味があって、ここ最近取り組んでいました<br>せっかくなので、なにか面白そうなものを作りたい、ということで、コミケ参加サークルさんを自然言語で検索できる「同人サークル検索RAG」を作ってみようと思い、作成を行いました</p>



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



<p class="wp-block-paragraph">失敗プロジェクトなので色々語るのは後にして、今回のプロジェクトは失敗しました<br>「絶対にあるはずの条件で検索を行っても、対象なしと表示される、または、関連したサークルが検索されない」という結果になってしまい、結論として「使い物にならない」となりました</p>



<p class="wp-block-paragraph">大きな敗因は「自分自身がRAG検索を誤解していた」というところにあります<br>RAG検索は「LLMが自分にない知識を外部からかき集めて回答を生成してくれる」と思っていましたが、違いました</p>



<p class="wp-block-paragraph">RAG検索は「ユーザーが入力した検索条件から関連性のあるデータをデータソース(ベクトルDBなど)から取得し、LLMを用いて回答を作成する」方法でした<br>LLMはあくまで回答の組み立て役であって、肝となるのはユーザーの入力した質問の意図を汲み取り、関連するデータをデータソースから取得できるか、と言うところにあります</p>



<p class="wp-block-paragraph">ただ、自分がRAGを誤解していたこともあり、データソースやデータ構造の設計が全くできてなくて、結果関連した情報が取れず、LLMも回答を生成できなかったという流れになっていました</p>



<p class="wp-block-paragraph">とはいえ、RAGは面白そうな技術ではあるので、今度はデータ設計や、ユーザーの質問内容から関連情報を取得する部分の改善など、次回作成時に改善すべきところがわかったことが、今回の一番の収穫でした</p>



<h2 class="wp-block-heading">改めて、技術スタックや開発手法など</h2>



<h3 class="wp-block-heading">開発はspeckit + OpenCodeを利用した完全AIエージェント開発</h3>



<p class="wp-block-paragraph">GeFOrceRTX 5070Ti 16GBマシンでllama.cppを動かし、MacBookProでOpenCodeを操作させ、OpenCodeがWindowsマシンのLMを利用して開発する環境を整えました</p>



<p class="wp-block-paragraph">OpenCodeとは対話を通してアプリの仕様や技術スタックを決め、実装、テストまで行ってもらいました<br>自分はコーディングは一切行っておらず、あくまで仕様策定、使用技術選定、動作確認、修正指示に徹しました</p>



<h3 class="wp-block-heading">「動くもの」はすぐできた</h3>



<p class="wp-block-paragraph">AIエージェントに開発をおまかせして2日目<br>プログラムが完成し、実際にdocker compose upで環境を立ち上げれば、localhost:3000でアクセスできるチャットウィンドウが表示されました</p>



<p class="wp-block-paragraph">最初はAIエージェントから「終わりました」の連絡があってもdocker compose upで起動できなかったりなど色々トラブルは有りましたが、すべて「〇〇でXXのエラーが出るから修正して」とお願いすればAIエージェントが自律的にエラーを修正し、起動できるとこまで作り込んでいました</p>



<p class="wp-block-paragraph">早速チャットを行ってみましたが、望んだ結果が全然返ってこない<br>ここから使えるようになるために色々修正指示や動作確認を行ってみましたが、結論としては「使い物になるまで」持っていくことはできませんでした</p>



<h3 class="wp-block-heading">「使えるもの」にはなかなかできない</h3>



<p class="wp-block-paragraph">チャットを行っても望んだ結果が全然返ってきませんでした<br>例えばテストデータ内には「ブルーアーカーブ」のデータが入っていても、「ブルアカを取り扱っているサークルを教えて」とチャットを行っても「取り扱いサークルはありません」と返ってくる始末・・・</p>



<p class="wp-block-paragraph">AIエージェントに「〇〇と検索したらXXの結果が返ってくるはず」と何度も相談し、結構色々直してもらいましたが結果として十分な精度が出ないまま、今回は失敗と判断しプロジェクトはクローズすることにしました</p>



<h2 class="wp-block-heading">敗因</h2>



<p class="wp-block-paragraph">今回の一番の敗因は「自分自身がRAGを誤解していた」ことにあります<br>自分はRAGを「LLMがいい感じに外部ソースにアクセスして情報を取得し、回答を組み立てること」だと思っていました<br>ただ、実際のRAGは「データソースより取得した情報をLLMが組み立てて回答する」ことでした</p>



<p class="wp-block-paragraph">そのため、RAGの核心は「データ設計」にあり、<br>・ユーザーがどのようなプロンプトで質問を行うのか<br>・その入力に対して、関連する情報が正しく返答されるよう、どのようにベクトルDBにデータを登録する必要があるのか<br>をきちんと設計、検証する必要がありました</p>



<p class="wp-block-paragraph">今回のケースではデータ設計は全く行っておらず、結果としてユーザーの入力結果に対して正しい関連情報が取得できず、使い物にならないアプリができてしまいました</p>



<h2 class="wp-block-heading">次に向けて</h2>



<p class="wp-block-paragraph">今回の敗因を踏まえて、次回は「データ設計」に重点を置いて開発してみたいと思います<br>・もととなるデータは自然言語に即したデータにする<br>・エイリアスを充実させる(ブルアカ、ブルーアーカイブなど)<br>・ユーザーからの入力をLLMで拡張、整形した後にベクトルDBに検索を行う<br>と言った対策を行ってみようと思います</p>



<h2 class="wp-block-heading">終わりに</h2>



<p class="wp-block-paragraph">今回はRAGを作成しようとして失敗したお話でした<br>AIエージェントの登場でコーディングを行う機会はグンと減りました<br>確かに、プログラム作成や修正はAIエージェントの方が何倍も早く、ミスも無く仕上げてくると思います</p>



<p class="wp-block-paragraph">ただ、人が使ったときの「使い心地」や「使い勝手」と言った部分には、まだまだ人がきちんと設計する必要があるとも感じました<br>AIに任せたほうが良いところ、人が行ったほうが良いところ<br>適材適所、人とAIの強みを活かして、使い心地の良いシステムが作っていけるようになりたいですね</p>



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



<p class="wp-block-paragraph"></p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/%e3%82%b3%e3%83%9f%e3%82%b1%e3%82%b5%e3%83%bc%e3%82%af%e3%83%ab%e6%a4%9c%e7%b4%a2rag%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86%e3%81%a8%e3%81%97%e3%81%a6%e5%a4%b1%e6%95%97%e3%81%97%e3%81%9f%e8%a9%b1/">コミケサークル検索RAGを作ろうとして失敗した話</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/06/%e3%82%b3%e3%83%9f%e3%82%b1%e3%82%b5%e3%83%bc%e3%82%af%e3%83%ab%e6%a4%9c%e7%b4%a2rag%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86%e3%81%a8%e3%81%97%e3%81%a6%e5%a4%b1%e6%95%97%e3%81%97%e3%81%9f%e8%a9%b1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>pythonリスキリング：簡単なMCPサーバーを作ってみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/06/python%e3%83%aa%e3%82%b9%e3%82%ad%e3%83%aa%e3%83%b3%e3%82%b0%ef%bc%9a%e7%b0%a1%e5%8d%98%e3%81%aamcp%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/06/python%e3%83%aa%e3%82%b9%e3%82%ad%e3%83%aa%e3%83%b3%e3%82%b0%ef%bc%9a%e7%b0%a1%e5%8d%98%e3%81%aamcp%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Wed, 10 Jun 2026 08:36:23 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1635</guid>

					<description><![CDATA[<p>無職期間でトレンド技術の吸収とか、リスキリングをちまちま行っています 今回は以前から気になっていた「LangChain, MCP」を触っていきます簡単なプロジェクトを作成し、ハンズオンで進めることにしました 作るもの 電 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/python%e3%83%aa%e3%82%b9%e3%82%ad%e3%83%aa%e3%83%b3%e3%82%b0%ef%bc%9a%e7%b0%a1%e5%8d%98%e3%81%aamcp%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">pythonリスキリング：簡単なMCPサーバーを作ってみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">無職期間でトレンド技術の吸収とか、リスキリングをちまちま行っています</p>



<p class="wp-block-paragraph">今回は以前から気になっていた「LangChain, MCP」を触っていきます<br>簡単なプロジェクトを作成し、ハンズオンで進めることにしました</p>



<h2 class="wp-block-heading">作るもの</h2>



<p class="wp-block-paragraph">電卓で計算ができて、天気を聞けば天気を返してくれる、そんなAIアシスタント(無能・・・)を作ります</p>



<h2 class="wp-block-heading">Step1.プロジェクト準備</h2>



<p class="wp-block-paragraph">以下のコマンドを順番に実行します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>mkdir ai-agent-sample
cd ai-agent-sample

uv init

uv add langchain
uv add langchain-openai
uv add mcp
uv add python-dotenv</code></pre></div>



<p class="wp-block-paragraph">uvはpythonのパッケージ管理 &amp; 実行環境で、pipとvenvが混ざったようなツール<br>「uv init」でプロジェクトを初期化し、初期ファイルが自動生成される<br>ライブラリをインストールするときは「uv add」で追加することで、pyproject.tomlに依存関係が保存される<br>実行時は「uv run xxx.py」で実行可能</p>



<h2 class="wp-block-heading">Step2.MCPサーバー作成</h2>



<p class="wp-block-paragraph">シンプルなMCPサーバーを作成し、起動します</p>



<p class="wp-block-paragraph">プロジェクト直下に「server.py」を作成し、以下の内容を記述しました<br>(デフォルトで作成されるmain.pyは削除)</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>from mcp.server.fastmcp import FastMCP

mcp = FastMCP(&quot;sample-agent&quot;)

# 足し算ツール
@mcp.tool()
def add(a: int, b: int) -&gt; int:
    return a + b;

#お天気ツール
@mcp.tool()
def wether(city: str) -&gt; str:
    return f&quot;{city}は晴れです&quot;

if __name__ == &quot;__main__&quot;:
    mcp.run()
</code></pre></div>



<p class="wp-block-paragraph">FastMCPに渡される引数は、mcpサーバーの名前のような扱い<br>@mcp.toolデコレーターで、ツールとして外部公開される</p>



<h2 class="wp-block-heading">Step3.MCPサーバー起動</h2>



<p class="wp-block-paragraph">サーバー起動は以下のコマンドで実施<br>一先ず、何も表示されなければ起動成功</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>uv run python server.py</code></pre></div>



<p class="wp-block-paragraph">サーバーが起動したら、別ターミナルで以下を実行</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>npx @modelcontextprotocol/inspector</code></pre></div>



<p class="wp-block-paragraph">ブラウザが立ち上がるので、以下のように設定してツールを確認する<br>以下のように入力を行い、ConnectボタンでMCPサーバーに接続する</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="578" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_001-1024x578.png" alt="" class="wp-image-1636" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_001-1024x578.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_001-300x169.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_001-768x433.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_001.png 1439w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">server.pyで作成したツールが一覧で表示されました<br>addをクリックすると右側にテストするためのインターフェースが表示される</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="741" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_002-1024x741.png" alt="" class="wp-image-1637" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_002-1024x741.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_002-300x217.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_002-768x556.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260610_002.png 1134w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Step4.MCPクライアントの作成</h2>



<p class="wp-block-paragraph">client.pyを作成して、ツール一覧の取得とaddの実行を行ってみます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import asyncio

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    server_params = StdioServerParameters(
        command=&quot;uv&quot;,
        args=[&quot;run&quot;, &quot;python&quot;, &quot;server.py&quot;]
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            tools = await session.list_tools()

            print(&quot;===== Tooles =====&quot;)
                  
            for tool in tools.tools:
                print(tool.name)

            print(&quot;===== Add =====&quot;)

            result = await session.call_tool(
                &quot;add&quot;,
                {
                    &quot;a&quot;: 1,
                    &quot;b&quot;: 2,
                }
            )
            print(result)
                    

if __name__ == &quot;__main__&quot;:
    asyncio.run(main())</code></pre></div>



<p class="wp-block-paragraph">出力結果例です</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code> uv run python client.py
Processing request of type ListToolsRequest
===== Tooles =====
add
weather
===== Add =====
Processing request of type CallToolRequest
meta=None content=[TextContent(type=&#39;text&#39;, text=&#39;3&#39;, annotations=None, meta=None)] structuredContent={&#39;result&#39;: 3} isError=False</code></pre></div>



<p class="wp-block-paragraph">少し見にくいですが、1+2が計算されて3が返却されています<br>現在はテストのため、pythonプログラムで直接mcpのaddを読んでいますが、次のステップでLangChainに置き換えることで、LLMとMCPサーバーの連携が実現します</p>



<h2 class="wp-block-heading">Step5.LLMモデルを呼び出す</h2>



<p class="wp-block-paragraph">ローカルのOllamaを利用してMCPを実験します<br>まずはOllamaに対してチャットを送ってみます</p>



<p class="wp-block-paragraph">llm_test.py</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>from langchain_ollama import ChatOllama

llm = ChatOllama(
    model=&quot;gemma4:e2b&quot;
)

response = llm.invoke(&quot;こんにちは&quot;)

print(response.content)</code></pre></div>



<p class="wp-block-paragraph">実行すると、「こんにちは。」のような挨拶が返ってくる</p>



<p class="wp-block-paragraph">続いて、LangChainの動きも見てみます</p>



<p class="wp-block-paragraph">tool_test.py</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>from langchain.tools import tool

@tool
def weather(city: str) -&gt; str:
    &quot;&quot;&quot;指定した年の天気を帰します&quot;&quot;&quot;
    
    print(f&quot;[TOOL実行] weather({city})&quot;)

    return f&quot;{city}は晴れです&quot;

print(weather.name)
print(weather.description)
print(weather.args)</code></pre></div>



<p class="wp-block-paragraph">実行結果は以下のような感じ</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>weather
指定した年の天気を帰します
{&#39;city&#39;: {&#39;title&#39;: &#39;City&#39;, &#39;type&#39;: &#39;string&#39;}}</code></pre></div>



<p class="wp-block-paragraph">@toolを利用すると、docstringが必須となるようで、ドキュメントを指定しないと実行時エラーとなりました</p>



<p class="wp-block-paragraph">次に最小限のエージェントを準備して、LLMが作成したツールを選択する様子を観察します</p>



<p class="wp-block-paragraph">agent_test.py</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>from langchain.tools import tool
from langchain_ollama import ChatOllama

@tool
def weather(city: str) -&gt; str:
    &quot;&quot;&quot;指定した都市の天気を帰します&quot;&quot;&quot;

    print(f&quot;[Tool実行] weather({city})&quot;)

    return f&quot;{city}は晴れです&quot;

llm = ChatOllama(
    model=&quot;gemma4:e2b&quot;
)

llm_with_tools = llm.bind_tools([weather])

response = llm_with_tools.invoke(
    &quot;東京の天気を教えて&quot;
)

print(response)</code></pre></div>



<p class="wp-block-paragraph">実行結果は以下の通り</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ai-agent-sample) MacBook-Pro ai-agent-sample % uv run python agent_test.py
content=&#39;&#39; additional_kwargs={} response_metadata={&#39;model&#39;: &#39;gemma4:e2b&#39;, &#39;created_at&#39;: &#39;2026-06-10T07:06:42.457207Z&#39;, &#39;done&#39;: True, &#39;done_reason&#39;: &#39;stop&#39;, &#39;total_duration&#39;: 15426462624, &#39;load_duration&#39;: 518820958, &#39;prompt_eval_count&#39;: 64, &#39;prompt_eval_duration&#39;: 1254592000, &#39;eval_count&#39;: 187, &#39;eval_duration&#39;: 13640234000, &#39;logprobs&#39;: None, &#39;model_name&#39;: &#39;gemma4:e2b&#39;, &#39;model_provider&#39;: &#39;ollama&#39;} id=&#39;lc_run--019eb05a-9549-73f0-ae2e-f5d83fdafe93-0&#39; tool_calls=[{&#39;name&#39;: &#39;weather&#39;, &#39;args&#39;: {&#39;city&#39;: &#39;東京&#39;}, &#39;id&#39;: &#39;90d50f05-c77b-425f-a341-cfe6accac6c3&#39;, &#39;type&#39;: &#39;tool_call&#39;}] invalid_tool_calls=[] usage_metadata={&#39;input_tokens&#39;: 64, &#39;output_tokens&#39;: 187, &#39;total_tokens&#39;: 251}</code></pre></div>



<p class="wp-block-paragraph">レスポンスでtool_callsが返却されていて、ツールを利用しようとしたことが確認できる</p>



<h2 class="wp-block-heading">Step6.LLMから呼び出し</h2>



<p class="wp-block-paragraph">いよいよLLMからMCPサーバーに設定したツールを呼び出します<br>まずは手動で利用するtoolを指定するパターン</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import asyncio

from langchain.tools import tool
from langchain_ollama import ChatOllama

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

@tool
def weather(city: str) -&gt; str:
    &quot;&quot;&quot;指定した都市の天気を帰します&quot;&quot;&quot;
    return &quot;dummy&quot;

async def main():
    llm = ChatOllama(
        model=&quot;gemma4:e2b&quot;
    )

    llm_with_tools = llm.bind_tools([weather])

    response = llm_with_tools.invoke(
        &quot;東京の天気を教えて&quot;
    )

    print(response.tool_calls)

    tool_call = response.tool_calls[0]

    server_params = StdioServerParameters(
        command=&quot;uv&quot;,
        args=[&quot;run&quot;, &quot;python&quot;, &quot;server.py&quot;],
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            result = await session.call_tool(
                tool_call[&quot;name&quot;],
                tool_call[&quot;args&quot;]
            )

            print(result)

if __name__ == &quot;__main__&quot;:
    asyncio.run(main())</code></pre></div>



<p class="wp-block-paragraph">プログラム内で設定されているweatherツールはダミー関数となっていて、dummyが返却されます<br>でも、今プログラムを動かすと</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ai-agent-sample % uv run python agent_test.py 
[{&#39;name&#39;: &#39;weather&#39;, &#39;args&#39;: {&#39;city&#39;: &#39;東京&#39;}, &#39;id&#39;: &#39;366711c7-4dfb-4566-9dca-c279b9649423&#39;, &#39;type&#39;: &#39;tool_call&#39;}]
Processing request of type CallToolRequest
Processing request of type ListToolsRequest
meta=None content=[TextContent(type=&#39;text&#39;, text=&#39;東京は晴れです&#39;, annotations=None, meta=None)] structuredContent={&#39;result&#39;: &#39;東京は晴れです&#39;} isError=False</code></pre></div>



<p class="wp-block-paragraph">きちんと「東京は晴れです」というテキストが返却されています<br>これは、@toolで指定されているweatherは「名称やパラメータなどの呼び出し情報のみ」取得するために利用され、実際には利用されていないためです</p>



<p class="wp-block-paragraph">実際にはMCPサーバーに設定したweatherツールが実行されているため、正しい文章が返却されています</p>



<h2 class="wp-block-heading">Step7.ツールの自動設定</h2>



<p class="wp-block-paragraph">MCPサーバーからツール一覧を取得し、自動で設定できるようにします</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>uv add langchain-mcp-adapters</code></pre></div>



<p class="wp-block-paragraph">以下のようなコードとしました</p>



<p class="wp-block-paragraph">agent_test.py</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>import asyncio

from langchain.tools import tool
from langchain_ollama import ChatOllama
from langchain_mcp_adapters.tools import load_mcp_tools

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

@tool
def weather(city: str) -&gt; str:
    &quot;&quot;&quot;指定した都市の天気を帰します&quot;&quot;&quot;
    return &quot;dummy&quot;

async def main():
    llm = ChatOllama(
        model=&quot;gemma4:e2b&quot;
    )

    server_params = StdioServerParameters(
        command=&quot;uv&quot;,
        args=[&quot;run&quot;, &quot;python&quot;, &quot;server.py&quot;],
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # ツール一覧の取得
            tools = await load_mcp_tools(session)
            llm_with_tools = llm.bind_tools(tools)

            response = llm_with_tools.invoke(
                &quot;1+2を計算してください&quot;
            )

            print(&quot;===== Tool Calls =====&quot;)
            print(response.tool_calls)

            tool_call = response.tool_calls[0]

            result = await session.call_tool(
                tool_call[&quot;name&quot;],
                tool_call[&quot;args&quot;]
            )

            weather_result = result.content[0].text

            print(&quot;===== Tool Result =====&quot;)
            print(weather_result)

            print(&quot;===== Final Content =====&quot;)
            final_response = llm.invoke(
                f&quot;&quot;&quot;
                ユーザーの質問:
                計算を行って

                ツール実行結果
                {weather_result}

                ツール実行結果を使って回答してください
                &quot;&quot;&quot;
            )
            print(final_response.content)

if __name__ == &quot;__main__&quot;:
    asyncio.run(main())</code></pre></div>



<p class="wp-block-paragraph">LLMに投げるプロンプトはプログラム内に固定なので、テストするときは直接変えてください・・・</p>



<p class="wp-block-paragraph">天気を聞いて見たときの結果</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>MacBook-Pro ai-agent-sample % uv run python agent_test.py  
Processing request of type ListToolsRequest
===== Tool Calls =====
[{&#39;name&#39;: &#39;weather&#39;, &#39;args&#39;: {&#39;city&#39;: &#39;東京&#39;}, &#39;id&#39;: &#39;243ede14-c039-4f69-b5d4-840fd12cbec4&#39;, &#39;type&#39;: &#39;tool_call&#39;}]
Processing request of type CallToolRequest
===== Tool Result =====
東京は晴れです
===== Final Content =====
東京は晴れです。</code></pre></div>



<p class="wp-block-paragraph">計算を行わせてみたときの結果</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>MacBook-Pro ai-agent-sample % uv run python agent_test.py
Processing request of type ListToolsRequest
===== Tool Calls =====
[{&#39;name&#39;: &#39;add&#39;, &#39;args&#39;: {&#39;a&#39;: 1, &#39;b&#39;: 2}, &#39;id&#39;: &#39;ac56a447-3786-41d7-9df9-7dbd5e6f57ce&#39;, &#39;type&#39;: &#39;tool_call&#39;}]
Processing request of type CallToolRequest
===== Tool Result =====
3
===== Final Content =====
恐れ入りますが、**どのような計算をすれば良いか**、または**計算に必要な情報（問題やデータ）**をご提示ください。

「ツール実行結果」として「3」が提供されましたが、この数字を使って何を計算すればよいのかが分かりません。

具体的なご質問をお知らせいただければ、喜んで計算いたします。</code></pre></div>



<p class="wp-block-paragraph">計算結果の応答結果がおかしいですが、計算自体はあっていました</p>



<h2 class="wp-block-heading">以上</h2>



<p class="wp-block-paragraph">ということで、シンプルなMCPサーバーを作ってみる内容でした<br>LLMからMCPサーバーのツールが呼ばれる判断はLLM側で行っているということはちょっと驚きでした</p>



<p class="wp-block-paragraph">MCPの仕組みはなんとなく理解できたので、次はBlenderMCPなどのいろいろなMCPがどうやって実装されているのか調べてみて、実アプリとの連携方法を理解していきたいと思いました</p>


<div id="rinkerid1639" class="yyi-rinker-contents  yyi-rinker-postid-1639 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FMCP%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9828/9784839989828_1_4.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FMCP%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">ゼロから学ぶ MCP&#038;A2Aプログラミング入門 AIエージェント時代を切り開く次世代プロトコル （Compass Booksシリーズ） [ 布留川英一 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=MCP&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FMCP%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DMCP" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid1640" class="yyi-rinker-contents  yyi-rinker-postid-1640 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaude%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/6985/9784297156985_1_36.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaude%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">Claude Codeで学ぶ Agent Skills入門 [ 佐藤 亮 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=Claude&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaude%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DClaude" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/python%e3%83%aa%e3%82%b9%e3%82%ad%e3%83%aa%e3%83%b3%e3%82%b0%ef%bc%9a%e7%b0%a1%e5%8d%98%e3%81%aamcp%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">pythonリスキリング：簡単なMCPサーバーを作ってみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/06/python%e3%83%aa%e3%82%b9%e3%82%ad%e3%83%aa%e3%83%b3%e3%82%b0%ef%bc%9a%e7%b0%a1%e5%8d%98%e3%81%aamcp%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SpecKitを使って仕様書を作ってみる：実践編</title>
		<link>https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e5%ae%9f%e8%b7%b5%e7%b7%a8/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e5%ae%9f%e8%b7%b5%e7%b7%a8/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 00:21:42 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1595</guid>

					<description><![CDATA[<p>前回まででspeckitの導入と、プロジェクト固有の原則ファイルまで作成しました 今回は導入したspeckitを利用して、実際にSDDの手法を用いて新機能を開発してみたいと思います 追加機能の概要 今回追加する機能は「地 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e5%ae%9f%e8%b7%b5%e7%b7%a8/">SpecKitを使って仕様書を作ってみる：実践編</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">前回まででspeckitの導入と、プロジェクト固有の原則ファイルまで作成しました</p>



<p class="wp-block-paragraph">今回は導入したspeckitを利用して、実際にSDDの手法を用いて新機能を開発してみたいと思います</p>



<h2 class="wp-block-heading">追加機能の概要</h2>



<p class="wp-block-paragraph">今回追加する機能は「地図上のマーカーに、吹き出しで投稿内容を表示する」改修になります<br>現在、地図上のマーカーをクリックしないと投稿内容が確認できませんが、マーカーに吹き出しを追加して開く前にある程度どのような投稿内容か把握できるようにするのとともに、見た目にも楽しくしたいという狙いがあります</p>



<h2 class="wp-block-heading">SDDを用いた開発の流れ</h2>



<h3 class="wp-block-heading">/speckit-specifyで仕様書のドラフトを作成</h3>



<p class="wp-block-paragraph">antigravityのチャット欄で以下のコマンドを実行しました<br>この段階では詳細な技術スタックは記載せず、「何を作るか、なぜ作るか」に焦点を当てて要件を記載します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>/speckit-specify 地図上に表示されているマーカーに、投稿内容の先頭8文字だけ表示する吹き出しを追加します。現在はマーカーをクリックしなければ投稿の内容は確認できませんが、投稿されたメッセージの先頭8文字だけを吹き出しとして表示することで、ユーザーに投稿内容の雰囲気を感じ取ってもらうほか、見た目的にも楽しくなるような効果を期待しています</code></pre></div>



<p class="wp-block-paragraph">実行後、仕様書のドラフト、品質チェックリストが作成され、いくつか追加で質問が生成されました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="492" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_001-1024x492.png" alt="" class="wp-image-1596" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_001-1024x492.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_001-300x144.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_001-768x369.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_001.png 1266w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">質問に答えると、仕様が確定し次のステップに進むか促されます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_002-1024x683.png" alt="" class="wp-image-1597" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_002-1024x683.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_002-300x200.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_002-768x512.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_002.png 1236w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">ただ、触れられていなかった機能があり、その部分が気になって質問してみました<br>自分のWebアプリには「クラスター機能」が含まれており、地図が縮小されるとマーカーがまとまって表示される仕様になっていて、その場合の吹き出しの処理を聞いてみました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="782" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_003-1024x782.png" alt="" class="wp-image-1598" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_003-1024x782.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_003-300x229.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_003-768x586.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_003.png 1226w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">動作が確認できました<br>今回は自分の考えと、AIエージェントの考えが一致していることが確認できたので、仕様書に追記し次のステップに進むことにしました</p>



<h3 class="wp-block-heading">speckit-planで技術スタックを指定する</h3>



<p class="wp-block-paragraph">ここでは「どうやって作成するか」に焦点を当てて指定します<br>ただ、今回は機能改修であり、技術スタックはすでに決まっているため、逆に「何も導入しないで」という指示にしました</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>/speckit-plan 今回の機能改修では既存の技術スタックのみで開発可能なため、新規のフレームワーク、ライブラリは追加しないでください</code></pre></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="354" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_004-1024x354.png" alt="" class="wp-image-1599" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_004-1024x354.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_004-300x104.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_004-768x265.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_004.png 1244w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">speckit-tasksでタスク分解を行う</h3>



<p class="wp-block-paragraph">speckit-tasksを実行すると、実装に向けたタスク分けが作成されます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>/speckit-tasks </code></pre></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="446" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_005-1024x446.png" alt="" class="wp-image-1600" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_005-1024x446.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_005-300x131.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_005-768x334.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_005.png 1236w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">生成されたファイルはフェーズ分けされて記載されていました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="692" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_006-1024x692.png" alt="" class="wp-image-1601" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_006-1024x692.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_006-300x203.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_006-768x519.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_006.png 1344w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">speckit-implementで機能を実装</h3>



<p class="has-vivid-red-color has-text-color has-link-color wp-elements-86f4e0d963ec87668eb92520d9827ae9 wp-block-paragraph"><strong>※本来はimplement実行前にanalyzeを実行して、仕様の整合性を確認することが推奨されます<br>　今回の実践編では、実行順序を間違えています</strong></p>



<p class="wp-block-paragraph">今まで作成した設計書を元に実装を行います</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>/speckit-implement</code></pre></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="510" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_007-1024x510.png" alt="" class="wp-image-1602" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_007-1024x510.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_007-300x149.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_007-768x382.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_007.png 1394w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">実際にテストしてみるとアイコンに吹き出しが表示されましたがマーカーと丸かぶりしていたため、少し調整して完成としました</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="204" height="163" data-id="1603" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_008.png" alt="" class="wp-image-1603"/></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="232" height="212" data-id="1604" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260604_009.png" alt="" class="wp-image-1604"/></figure>
</figure>



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



<h3 class="wp-block-heading">speckit-analyzeでサマリーを作成する</h3>



<p class="has-vivid-red-color has-text-color has-link-color has-medium-font-size wp-elements-b7df62d2959b1097e8410febeba63fb2 wp-block-paragraph"><strong>※antigravityのモデルクォータを使い切ったので、ここからはローカルLLM + OpenCodeで作業しています</strong></p>



<p class="wp-block-paragraph">実装まで完了したのでアナライズを実行してサマリーを作成します</p>



<p class="wp-block-paragraph">ちなみに、本来の順序ではtasks生成後に実行し、implementを実行する前に整合性を確認することが推奨されるとのことでした</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>/speckit-analyze</code></pre></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="753" height="546" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_001.png" alt="" class="wp-image-1611" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_001.png 753w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_001-300x218.png 300w" sizes="auto, (max-width: 753px) 100vw, 753px" /></figure>



<p class="wp-block-paragraph">仕様書の重複表記や改善案が提示されています<br>Recomendationを参考に、生成されたドキュメント類を修正するのが良さそうですね</p>



<p class="wp-block-paragraph">今回はNext Actionで表示された改善推奨、spec修正推奨だけ反映することにしました</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="612" height="125" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_002.png" alt="" class="wp-image-1612" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_002.png 612w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_002-300x61.png 300w" sizes="auto, (max-width: 612px) 100vw, 612px" /></figure>



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



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="670" height="227" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_003.png" alt="" class="wp-image-1613" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_003.png 670w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_003-300x102.png 300w" sizes="auto, (max-width: 670px) 100vw, 670px" /></figure>



<h2 class="wp-block-heading">implement実行後の作業</h2>



<p class="wp-block-paragraph">implement実行まで完了すれば、実際に動作する状態になっているはずです<br>テスト環境を起動して、想定通りの動作になっているか確認します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="531" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_004-1024x531.png" alt="" class="wp-image-1614" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_004-1024x531.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_004-300x155.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_004-768x398.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_004-1536x796.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_004-2048x1061.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">ローカルで実行した結果、マーカー部分にきちんと吹き出しが表示されました！</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="996" height="599" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_005.png" alt="" class="wp-image-1615" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_005.png 996w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_005-300x180.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_005-768x462.png 768w" sizes="auto, (max-width: 996px) 100vw, 996px" /></figure>



<p class="wp-block-paragraph">E2Eテストを実施したところ、パスできない項目がありました<br>自分のアプリの場合、テスト側が間違えていたのでテストコードを修正する必要がありました</p>



<p class="wp-block-paragraph">この用にimplement後は各種テストの実施や、実際の動作確認を行い仕様漏れやバグの修正を繰り返して、機能を仕上げていきます</p>



<h2 class="wp-block-heading">付録：AIエージェントを切り替える場合</h2>



<p class="wp-block-paragraph">今回、antiigravityで開発していた環境から、OpenCodeを利用した環境に切り替えました<br>途中でAIエージェントを切り替える場合は、プロジェクトルートで以下のコマンドを使用して切り替えます</p>



<p class="wp-block-paragraph">利用可能なエージェントの一覧</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>specify integration list</code></pre></div>



<p class="wp-block-paragraph">切り替え</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>specify integration switch opencode</code></pre></div>



<p class="wp-block-paragraph">opencodeはマルチインストールに対応していなかったため、antigravity用の設定が削除され、新たにopencodeがインストールされる形になりました</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="482" height="56" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_006.png" alt="" class="wp-image-1616" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_006.png 482w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260607_006-300x35.png 300w" sizes="auto, (max-width: 482px) 100vw, 482px" /></figure>



<h2 class="wp-block-heading">以上</h2>



<p class="wp-block-paragraph">ということで、仕様駆動開発実践編として、アプリへの機能改修を例に実行してみました</p>



<p class="wp-block-paragraph">仕様を事前にAIエージェントと決めることで、以下の利点なありました<br>・どのような実装が行われるのか明確になる<br>・仕様が文書として残る<br>・エージェントを途中で交代しても、作業を引き継げる</p>



<p class="wp-block-paragraph">一方でこのような問題も感じています<br>・今回のような小規模の改修ではオーバースペック<br>・スキーマ駆動開発も取り入れているため、仕様書が散らばる可能性がある<br>・コードレビューを行わないと、仕様書は残るがコードレベルで実装がブラックボックス化される<br>・仕様書はGitで管理されるため、プロジェクト固有のドキュメントルールに沿わない可能性がある(例えば、仕様書をGoogle DocやNotionで管理している場合など)</p>



<p class="wp-block-paragraph">個人としては、今後は仕様駆動開発を取り入れていくつもりですが、「銀の弾丸は無い」と言われるように、仕様駆動開発を取り入れれば、AIエージェントを利用した開発が全てうまくいくわけでもないということがわかりました</p>



<p class="wp-block-paragraph">今後も新しい開発手法を試しつつ、品質の良いソフトウェア開発ができるように色々試していきたいですね</p>


<div id="rinkerid1617" class="yyi-rinker-contents  yyi-rinker-postid-1617 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0496/9784296080496_1_4.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">仕様駆動開発 実践入門 AIで実現する開発方法論 [ 田中 秀樹 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=%E4%BB%95%E6%A7%98%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3D%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid1618" class="yyi-rinker-contents  yyi-rinker-postid-1618 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaudeCOde%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/2758/9784297152758_1_58.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaudeCOde%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">Claude CodeによるAI駆動開発入門 [ 平川知秀 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=ClaudeCOde&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FClaudeCOde%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DClaudeCOde" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e5%ae%9f%e8%b7%b5%e7%b7%a8/">SpecKitを使って仕様書を作ってみる：実践編</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e5%ae%9f%e8%b7%b5%e7%b7%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SpecKitを使って仕様書を作ってみる：準備編</title>
		<link>https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e6%ba%96%e5%82%99%e7%b7%a8/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e6%ba%96%e5%82%99%e7%b7%a8/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 00:01:43 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1568</guid>

					<description><![CDATA[<p>前回SpecKitの導入まで完了しているので、実際にSpecKitを活用して仕様書を作ってみます 直したいなと思っているバグがあって、その修正をSDDのフローで修正しようとした結果、実は1行直せばよかっただけのバグでSp [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e6%ba%96%e5%82%99%e7%b7%a8/">SpecKitを使って仕様書を作ってみる：準備編</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">前回SpecKitの導入まで完了しているので、実際にSpecKitを活用して仕様書を作ってみます</p>



<p class="wp-block-paragraph">直したいなと思っているバグがあって、その修正をSDDのフローで修正しようとした結果、実は1行直せばよかっただけのバグでSpecKitを利用するまでもなかったというオチでした・・・</p>



<p class="wp-block-paragraph">というわけで、今後SpecKitを利用するために、まずは準備だけ進めておきます</p>



<h2 class="wp-block-heading">constitutionを作成する</h2>



<p class="wp-block-paragraph">constitutionはそのプロジェクトの「決まりごと」が定義されたファイルで、プロジェクト共通のコーディングルールや技術スタックが記載されたファイルです</p>



<p class="wp-block-paragraph">Spec Kitを利用し始める際に最初に1度実行する必要があるので、プロジェクトルートで<strong>Antygravityのチャット欄</strong>に以下のコマンドを実行します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>speckit-constitution</code></pre></div>



<p class="wp-block-paragraph">実行結果は以下のようになります<br>(Geminiに「猫耳のアニメキャラ」の属性を設定しているので、こんな口調になっています)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="740" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_001-1024x740.png" alt="" class="wp-image-1569" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_001-1024x740.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_001-300x217.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_001-768x555.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_001-1536x1110.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_001.png 1868w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">生成されたファイルの中身は以下のようになっていました<br>AIエージェントに最適化された文章(人間が読みにくい内容)で生成されるのかなと思ったら、意外と人間が読んでも違和感無い内容でした</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="520" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_002-1024x520.png" alt="" class="wp-image-1570" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_002-1024x520.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_002-300x152.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_002-768x390.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_002-1536x780.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_002-2048x1040.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Optional:constitution更新時に自動コミットを設定</h2>



<p class="wp-block-paragraph">オプション扱いでconstitutionに自動コミットが設定できるようなので設定しておきます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="227" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_003-1024x227.png" alt="" class="wp-image-1571" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_003-1024x227.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_003-300x66.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_003-768x170.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_003-1536x340.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_003.png 1716w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">実行結果は以下の通り</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="495" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_004-1024x495.png" alt="" class="wp-image-1572" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_004-1024x495.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_004-300x145.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_004-768x371.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_004-1536x743.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260602_004.png 1696w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">設定上は自動コミットがオフになっていた　というのが若干気になりますが、コミット自体は完了していました<br>次回以降、自動コミットされるのか様子見が必要ですね</p>



<p class="wp-block-paragraph">ただ、この「constitution」というファイルは、このプロジェクトの憲法(最上位の決まりごと)という位置づけなので、コロコロ変更されたらそれはそれで問題な気がしますが・・・</p>


<div id="rinkerid1546" class="yyi-rinker-contents   yyi-rinker-postid-1546 yyi-rinker-no-item">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image"></div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
								仕様駆動開発 実践入門 ／ 日経BP社							</div>

			<div class="yyi-rinker-detail">
											</div>
						<ul class="yyi-rinker-links">
																	<li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=%E4%BB%95%E6%A7%98%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3D%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
	</div>

<div id="rinkerid1573" class="yyi-rinker-contents  yyi-rinker-postid-1573 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgemini%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5834/9784297155834_1_36.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgemini%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">Gemini AI活用 最強の教科書 [ 桑名 由美 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=gemini&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgemini%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3Dgemini" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e6%ba%96%e5%82%99%e7%b7%a8/">SpecKitを使って仕様書を作ってみる：準備編</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/06/speckit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e4%bb%95%e6%a7%98%e6%9b%b8%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b%ef%bc%9a%e6%ba%96%e5%82%99%e7%b7%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AntigravityにSpecKitを導入してみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/06/antigravity%e3%81%abspeckit%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/06/antigravity%e3%81%abspeckit%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Mon, 01 Jun 2026 11:14:12 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1559</guid>

					<description><![CDATA[<p>先日参加した勉強会で「仕様駆動開発」のお話を聞いて、なんとなく良さそうな開発手法なので個人開発アプリに導入してみることにしました Google AntigravityにSpecKitを導入する Spec Kitは仕様駆動 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/antigravity%e3%81%abspeckit%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">AntigravityにSpecKitを導入してみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">先日参加した勉強会で「仕様駆動開発」のお話を聞いて、なんとなく良さそうな開発手法なので個人開発アプリに導入してみることにしました</p>



<h2 class="wp-block-heading">Google AntigravityにSpecKitを導入する</h2>



<p class="wp-block-paragraph">Spec Kitは仕様駆動開発を行うためのツール群です<br><a href="https://github.com/github/spec-kit" target="_blank" rel="noreferrer noopener">https://github.com/github/spec-kit</a></p>



<p class="wp-block-paragraph">様々なAIエージェントに対応しており、Google Antigravityも対応されています<br>ということで、自身のプロジェクトにSpec Kitを導入してみます</p>



<h3 class="wp-block-heading">インストール、初期化、確認</h3>



<p class="wp-block-paragraph">Pythonがインストール済みであれば、ターミナルから以下のコマンドでインストールできます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>pip install &quot;git+https://github.com/github/spec-kit.git&quot;</code></pre></div>



<p class="wp-block-paragraph">(2026/06/03追記)uvを利用したほうが便利だったため、uvで導入し直しました<br>Homebrew(Mac環境)でPythonを入れた場合、pip3でspeckitをインストールしようとすると、エラーが発生しました</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>pip3 install uv
error: externally-managed-environment

× This environment is externally managed
╰─&gt; To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.
・・・</code></pre></div>



<p class="wp-block-paragraph">そのため、Homebrewを利用してuvを導入しました</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>brew install uv</code></pre></div>



<p class="wp-block-paragraph">インストールが終わったらバージョン確認を行います</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>uv --version</code></pre></div>



<p class="wp-block-paragraph">バージョンが表示されたらインストールは完了！改めてspec kitをインストールします</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>uv tool install specify-cli --from git+https://github.com/github/spec-kit.git</code></pre></div>



<p class="wp-block-paragraph">上記コマンド実行後、以下のコマンドでバージョンが表示されれば終了です</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>specify --version</code></pre></div>



<p class="wp-block-paragraph">conda環境を利用した場合のSpec Kitインストールの例です<br>(spec kit利用のたびに仮想環境を切り替えるのが面倒で、現在は使ってません)</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># 環境の作成
conda create -n speckit-env python=3.11

# 環境をアクティブ化
conda activate speckit-env

# SpecKitをインストール
pip install &quot;git+https://github.com/github/spec-kit.git&quot;

# 確認
specify --version</code></pre></div>



<p class="wp-block-paragraph">以下のコマンドで初期化を行います<br>コマンドはプロジェクトルートで行います</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>specify init . --integration agy</code></pre></div>



<p class="wp-block-paragraph">コマンドを実行すると選択が出てくるため、以下の通り選択してみました</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Warning: Current directory is not empty (16 items)
Template files will be merged with existing content and may overwrite existing files
Do you want to continue? [y/N]:y</code></pre></div>



<p class="wp-block-paragraph">以下のエラーが出た場合、「&#8211;ignore-agent-tools」オプションをつけて実行しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="165" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_001-1024x165.png" alt="" class="wp-image-1560" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_001-1024x165.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_001-300x48.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_001-768x123.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_001-1536x247.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_001.png 1718w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>specify init . --integration agy --ignore-agent-tools</code></pre></div>



<p class="wp-block-paragraph">以下のようにエラー無く導入できると、スキルやディレクトリが追加されます</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="780" height="848" data-id="1561" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002.png" alt="" class="wp-image-1561" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002.png 780w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002-276x300.png 276w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002-768x835.png 768w" sizes="auto, (max-width: 780px) 100vw, 780px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="586" height="608" data-id="1562" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_003.png" alt="" class="wp-image-1562" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_003.png 586w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_003-289x300.png 289w" sizes="auto, (max-width: 586px) 100vw, 586px" /></figure>
</figure>



<h2 class="wp-block-heading">一旦、ここまで</h2>



<p class="wp-block-paragraph">時間の関係で本日はここまで<br>次回は導入したツールを実際に利用していこうと思います</p>


<div id="rinkerid1563" class="yyi-rinker-contents  yyi-rinker-postid-1563 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgithub%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3939/9784297153939_1_26.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgithub%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">図解即戦力　Git&#038;GitHubのしくみと操作がこれ1冊でしっかりわかる教科書 [ リブロワークス ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=github&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgithub%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3Dgithub" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid1546" class="yyi-rinker-contents   yyi-rinker-postid-1546 yyi-rinker-no-item">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image"></div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
								仕様駆動開発 実践入門 ／ 日経BP社							</div>

			<div class="yyi-rinker-detail">
											</div>
						<ul class="yyi-rinker-links">
																	<li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=%E4%BB%95%E6%A7%98%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3D%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
	</div><p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/antigravity%e3%81%abspeckit%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">AntigravityにSpecKitを導入してみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/06/antigravity%e3%81%abspeckit%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Qwopus3.5-9B-Coder-MTP-GGUF:latestをllama.cppで動かしてみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/05/qwopus3-5-9b-coder-mtp-gguflatest%e3%82%92llama-cpp%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/05/qwopus3-5-9b-coder-mtp-gguflatest%e3%82%92llama-cpp%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Mon, 25 May 2026 21:33:49 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1515</guid>

					<description><![CDATA[<p>Antigravityのクォータ制限が厳しくなったので、ローカルLLMを利用した代替環境を構築しています よさそうなモデルとして「Qwopus3.5-9B-Coder-MTP-GGUF:latest」というモデルを見つけ [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/05/qwopus3-5-9b-coder-mtp-gguflatest%e3%82%92llama-cpp%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">Qwopus3.5-9B-Coder-MTP-GGUF:latestをllama.cppで動かしてみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Antigravityのクォータ制限が厳しくなったので、ローカルLLMを利用した代替環境を構築しています</p>



<p class="wp-block-paragraph">よさそうなモデルとして「Qwopus3.5-9B-Coder-MTP-GGUF:latest」というモデルを見つけたのですが、残念ながらOllamaでは動きませんでした</p>



<h2 class="wp-block-heading">Qwopus3.5-9B-Coder-MTP-GGUF:latestがOllamaで動かない理由</h2>



<p class="wp-block-paragraph">このモデルはMTPというトークン最適化手法が用いられていますが、Ollama内臓のllama.cppのバージョンが古いようで、この最適化が施されたモデルが、まだ読み込めないとのことでした</p>



<p class="wp-block-paragraph">Huggingfaceのコミュニティにも同様の投稿があり、リプライを見ると「最新のllama.cppだと動作した」とのこと<br><a href="https://huggingface.co/Jackrong/Qwopus3.5-9B-Coder-MTP-GGUF/discussions/2">https://huggingface.co/Jackrong/Qwopus3.5-9B-Coder-MTP-GGUF/discussions/2</a></p>



<p class="wp-block-paragraph">※MTP(Multi-Token Prediction)とは<br>トークンを複数まとめて予測する方法<br>通常のLLMは1つずつ予測→「私は」「猫が」「好き」「です」<br>MTPではまとめて予想→「私は」「猫が好きです」<br>これにより、通常のLLMと比較して2～3倍の生成速度を誇るそうです</p>



<p class="wp-block-paragraph">ということで、現状MTPが使用されたモデルを利用する場合は、llama.cppを利用するのがよさそうです</p>



<h2 class="wp-block-heading">llama.cppをwindowsマシンにインストールする</h2>



<p class="wp-block-paragraph">以前はllama.cppを利用する場合、自分でビルドを行う必要がありましたが、現在は各プラットフォームに向けたビルドが準備されているため、リリースページから環境に合わせたバイナリをダウンロードすればOKになりました<br><a href="https://github.com/ggml-org/llama.cpp/releases">https://github.com/ggml-org/llama.cpp/releases</a></p>



<p class="wp-block-paragraph">自分のマシンの場合、Windows + CUDA13.0の環境だったため、「Windows x64 (CUDA 13) &#8211; CUDA 13.1 DLLs」をダウンロードしました<br>CUDAについてはマイナーバージョンがあっていなかったため、DLLsもダウンロードしています</p>



<p class="wp-block-paragraph">ダウンロードしたzipを展開し、適当なディレクトリに配置します<br>DLLsのzipは展開したら、llama.cppのディレクトリの中に配置します<br>自分の環境では以下のディレクトリに配置しました</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="779" height="411" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image.png" alt="" class="wp-image-1516" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image.png 779w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-300x158.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-768x405.png 768w" sizes="auto, (max-width: 779px) 100vw, 779px" /></figure>



<h2 class="wp-block-heading">llama-serverを起動し、チャットを利用してみる</h2>



<p class="wp-block-paragraph">バイナリの配置が終わったら、実際にターミナルから起動して動作確認を行います<br>自分の環境では、以下のコマンドで起動できました<br>※&#8211;ctx-sizeはメモリに余裕があれば大きくすることで、より多くの履歴やファイル内容を参照して回答が生成されます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>cd G:\Project\MachineLerning\llama

./llama-server.exe `
   -m &quot;G:\Project\Ollama\blobs\sha256-f6fc5d193045796d9e1870cbc40f827fe55f53f70593c3f5c1968b82b9331991&quot; `
   --host 0.0.0.0 `
   --port 8080 `
   -ngl 999 `
   --spec-type draft-mtp `
   --spec-draft-n-max 2 `
   --ctx-size 32768</code></pre></div>



<p class="wp-block-paragraph">-mオプションで指定しているモデルですが、Ollamaでダウンロードしたモデルを利用したかったため、ハッシュ値になっています<br>Ollamaでモデルをダウンロードするとモデルのファイル名がハッシュ値になってしまうため、以下のコマンドでモデルとハッシュ値の対応を確認します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ollama show --modelfile hf.co/Jackrong/Qwopus3.5-9B-Coder-MTP-GGUF</code></pre></div>



<p class="wp-block-paragraph">以下のような結果が出力されます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># Modelfile generated by &quot;ollama show&quot;
# To build a new Modelfile based on this, replace FROM with:
# FROM hf.co/Jackrong/Qwopus3.5-9B-Coder-MTP-GGUF:latest

FROM G:\Project\Ollama\blobs\sha256-f6fc5d193045796d9e1870cbc40f827fe55f53f70593c3f5c1968b82b9331991
FROM G:\Project\Ollama\blobs\sha256-f48daca405a1c768a9514e392c3955dcc4a9d66a5cf64cf45e064092b5f20ee4
TEMPLATE &quot;&quot;&quot;{{- $lastUserIdx := -1 -}}
{{- range $idx, $msg := .Messages -}}
{{- if eq $msg.Role &quot;user&quot; }}{{ $lastUserIdx = $idx }}{{ end -}}
{{- end }}
{{- if or .System .Tools }}&lt;|im_start|&gt;system
{{ if .System }}{{ .System }}
以下略・・・</code></pre></div>



<p class="wp-block-paragraph">FROM以降に、ハッシュ化されたモデルのファイル名が表示されます<br>2つ表示されていますが、このモデルの場合、画像認識用のClip Visionが内蔵されていたため、モデルが2つ表示されたようです<br>今回は「sha256-f6f～」のモデルを利用します<br>※フォーマットが異なるモデルを指定してllama-serverを起動すると、エラーが発生するのでモデルの指定間違いに気づけます</p>



<p class="wp-block-paragraph">サーバーが起動すると以下のような表記が表示されるので、ブラウザにアクセスするとチャット用のページが表示されます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="826" height="82" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-1.png" alt="" class="wp-image-1517" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-1.png 826w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-1-300x30.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-1-768x76.png 768w" sizes="auto, (max-width: 826px) 100vw, 826px" /></figure>



<p class="wp-block-paragraph">http://localhost:8080 にアクセスします</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="858" height="414" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-2.png" alt="" class="wp-image-1518" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-2.png 858w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-2-300x145.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-2-768x371.png 768w" sizes="auto, (max-width: 858px) 100vw, 858px" /></figure>



<p class="wp-block-paragraph">これで、llama-serverが起動し、利用可能な状態になりました</p>



<h2 class="wp-block-heading">別マシンからアクセスしてみる</h2>



<p class="wp-block-paragraph">現在、8080ポートでサーバーが起動しているので、同一LAN内のPCからアクセスしてみます<br>先日MacBookにOpenCodeを利用するための環境を整えたので、その設定を変更し、llama-serverにアクセスしてみます</p>



<p class="wp-block-paragraph">OpenCodeの設定内容は以下になります</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>{
  &quot;$schema&quot;: &quot;https://opencode.ai/config.json&quot;,
  &quot;model&quot;: &quot;local-llama/qwopus-coder&quot;,
  &quot;provider&quot;: {
    &quot;local-llama&quot;: {
      &quot;npm&quot;: &quot;@ai-sdk/openai-compatible&quot;,
      &quot;name&quot;: &quot;Local llama-server&quot;,
      &quot;options&quot;: {
        &quot;baseURL&quot;: &quot;http://192.168.40.97:8080/v1&quot;
      },
      &quot;models&quot;: {
        &quot;qwopus-coder&quot;: {
          &quot;name&quot;: &quot;Qwopus3.5-9B-Coder-MTP&quot;
        }
      }
    }
  }
}</code></pre></div>



<p class="wp-block-paragraph">modelsについては詳細に指定しなくて良い(ollamaコマンドで確認したハッシュ値でなくても良い)そうです<br>llama-server起動時に指定したモデルが回答に使用されるため、ここでは人間が見て分かる名前を設定します</p>



<p class="wp-block-paragraph">試しに、タスクを一つ振ってみました<br>実際に実行するとコンテキストサイズが足りなかったため、モデルの最大値である「262144」を指定してllama-serverを起動し直しています</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="407" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260525_001-1024x407.png" alt="" class="wp-image-1520" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260525_001-1024x407.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260525_001-300x119.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260525_001-768x305.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260525_001.png 1252w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">プランニングは36m44sということで、かなり時間がかかった印象です・・・</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="711" height="274" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/スクリーンショット-2026-05-25-10.35.05.png" alt="" class="wp-image-1523" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/スクリーンショット-2026-05-25-10.35.05.png 711w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/スクリーンショット-2026-05-25-10.35.05-300x116.png 300w" sizes="auto, (max-width: 711px) 100vw, 711px" /></figure>



<p class="wp-block-paragraph">それでは、実際に実装をお願いしてみます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="988" height="204" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-4.png" alt="" class="wp-image-1522" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-4.png 988w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-4-300x62.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/image-4-768x159.png 768w" sizes="auto, (max-width: 988px) 100vw, 988px" /></figure>



<p class="wp-block-paragraph">上記の結果・・・　<strong>半日動かしても単体テストが完成しませんでした・・・</strong><br>流石に時間がかかりすぎるので、マシンの限界か、起動パラメータが悪いのか、まだまだ調整が必要でした</p>



<h2 class="wp-block-heading">以上</h2>



<p class="wp-block-paragraph">llama.cppの導入から利用するまでの紹介でした<br>ollamaは便利ですが、対応していないモデルもあるということで今回勉強になりました</p>



<p class="wp-block-paragraph">最新のモデルを利用する場合、llama.cppをメインで利用するほうが良いかもしれませんね</p>



<p class="wp-block-paragraph">今のところ、MTPモデルの動作は良好で、gemma4を利用してアシストしてもらうよりも良い結果が出ている気がします<br>ただ、テストコードは完成しなかったので今後使い込んでみて、どこまで利用できるのか見極めていきたいと思います</p>


<div id="rinkerid1524" class="yyi-rinker-contents  yyi-rinker-postid-1524 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E3%2583%25AD%25E3%2583%25BC%25E3%2582%25AB%25E3%2583%25ABLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/6728/9784296206728_1_32.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E3%2583%25AD%25E3%2583%25BC%25E3%2582%25AB%25E3%2583%25ABLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">ローカルLLM実践入門 [ 日経ソフトウエア ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%ABLLM&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E3%2583%25AD%25E3%2583%25BC%25E3%2582%25AB%25E3%2583%25ABLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3D%25E3%2583%25AD%25E3%2583%25BC%25E3%2582%25AB%25E3%2583%25ABLLM" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid1525" class="yyi-rinker-contents  yyi-rinker-postid-1525 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FAI%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2587%25E3%2582%25A3%25E3%2583%25B3%25E3%2582%25B0%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7017/9784798077017_1_4.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FAI%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2587%25E3%2582%25A3%25E3%2583%25B3%25E3%2582%25B0%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">ターミナルから始める次世代AIコーディング Claude Code入門 [ 掌田津耶乃 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=AI%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FAI%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2587%25E3%2582%25A3%25E3%2583%25B3%25E3%2582%25B0%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DAI%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2587%25E3%2582%25A3%25E3%2583%25B3%25E3%2582%25B0" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/05/qwopus3-5-9b-coder-mtp-gguflatest%e3%82%92llama-cpp%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">Qwopus3.5-9B-Coder-MTP-GGUF:latestをllama.cppで動かしてみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/05/qwopus3-5-9b-coder-mtp-gguflatest%e3%82%92llama-cpp%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Loraを作ってみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/05/lora%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/05/lora%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Fri, 22 May 2026 08:57:41 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1493</guid>

					<description><![CDATA[<p>無職になって時間ができたので、イラストAIでいろいろ遊んでいます既存モデルでは満足できなくなってきたので、Loraを作ってみることにしました Loraとは LoraとはもとになるイラストAIモデルに、癖や知識を追加できる [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/05/lora%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">Loraを作ってみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">無職になって時間ができたので、イラストAIでいろいろ遊んでいます<br>既存モデルでは満足できなくなってきたので、Loraを作ってみることにしました</p>



<h2 class="wp-block-heading">Loraとは</h2>



<p class="wp-block-paragraph">LoraとはもとになるイラストAIモデルに、癖や知識を追加できる拡張データのようなものです<br>特定のイラストレータの画風を再現したり、特定の衣装に特化したイラストを作成できるようになります</p>



<h2 class="wp-block-heading">Loraを作ってみる</h2>



<p class="wp-block-paragraph">今回はkohya_ssを利用して、illustriousベースのモデルに適用できるLoraを作成します<br>流れとしては<br>・kohya_ssをインストール<br>・学習画像を集める<br>・タグ付けとタグのクリーニング<br>・学習を行い、Loraを作成する<br>・作成したLoraを使ってイラストを生成する<br>という工程があります</p>



<p class="wp-block-paragraph">ちなみに、筆者の作業マシンはWindowsになりますので、以下の例もWindowsマシンでの例となります</p>



<h2 class="wp-block-heading">kohya_ssをインストールする</h2>



<p class="wp-block-paragraph">kohya_ssは以下のリポジトリから入手できます<br><a href="https://github.com/bmaltais/kohya_ss">https://github.com/bmaltais/kohya_ss</a></p>



<p class="wp-block-paragraph">上記ページ内にインストールドキュメントも付属しているため、手順に沿ってインストールします</p>



<p class="wp-block-paragraph">インストール完了後、setup.batを実行し、<br>1. Install kohya_ss GUI<br>6. (Optional) Launch Kohya_ss GUI in browser<br>の順番に実行します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="309" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_002-1024x309.png" alt="" class="wp-image-1494" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_002-1024x309.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_002-300x90.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_002-768x232.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_002.png 1108w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">学習画像を集める</h2>



<p class="wp-block-paragraph">次に学習もとになる画像を集めます<br>今回は「鳥獣戯画」の画像を集めてみました<br>学習画像は50枚以上準備するのが良いようですが、今回はサンプルのため20枚としました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="414" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_003-1024x414.png" alt="" class="wp-image-1495" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_003-1024x414.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_003-300x121.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_003-768x310.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_003-1536x621.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_003.png 1658w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">タグ付けとタグのクリーニング</h2>



<p class="wp-block-paragraph">kohya_ss GUIを起動し、Utilitiesタブ→Captioning→WD14 Captioningを選択します<br>Image folder to caption (containing the images to caption)に学習画像を集めたフォルダを指定します<br>ほかはデフォルト設定のままでOKです</p>



<p class="wp-block-paragraph">画面一番下のCaption imagesのボタンを押します<br>ボタンを押しても反応がないので動いているかわかりにくいのですが、コンソール画面にログが出力されていれば動いています</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_005-1024x576.png" alt="" class="wp-image-1496" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_005-1024x576.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_005-300x169.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_005-768x432.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_005-800x450.png 800w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_005.png 1096w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">タグ付けが終わると、学習画像のフォルダにテキストファイルが生成されています<br>次にタグのクリーニング(学習に不要なタグの削除)を行います</p>



<p class="wp-block-paragraph">今回は「画風」の学習が目的になります<br>AIに残すタグを聞いたところ、諸説あるようですが特定のキャラクターの特徴を表すタグや、固有名詞期は削除し、画風や構図を表すタグ(simple backgroundなど)のみ残す方針で行きます</p>



<p class="wp-block-paragraph">タグのクリーニングについては以下のツールを利用すると一括編集できるので楽です<br><a href="https://github.com/starik222/BooruDatasetTagManager" target="_blank" rel="noreferrer noopener">https://github.com/starik222/BooruDatasetTagManager</a></p>



<p class="wp-block-paragraph">修正前と修正後は以下の通りです</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="550" data-id="1498" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_006-1024x550.png" alt="" class="wp-image-1498" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_006-1024x550.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_006-300x161.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_006-768x412.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_006-1536x825.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_006.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="739" data-id="1497" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_007-1024x739.png" alt="" class="wp-image-1497" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_007-1024x739.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_007-300x217.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_007-768x554.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_007.png 1319w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h2 class="wp-block-heading">学習の実施</h2>



<p class="wp-block-paragraph">次に学習を実行し、Loraを作成します</p>



<p class="wp-block-paragraph">kohya_ss GUIでLoRA→Trainingの順に選択し、以下を設定しました</p>



<p class="wp-block-paragraph">Pretrained model name or path：ベースとするイラストAIモデル<br>Trained Model output name：出力されるLoRAファイル名<br>Image folder (containing training images subfolders)：学習画像とタグのテキストが保存されているフォルダ<br>Output directory for trained model：LoRAファイル出力先フォルダ<br>Logging directory (Optional. to enable logging and output Tensorboard log)：ログファイル出力先</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="583" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_008-1024x583.png" alt="" class="wp-image-1499" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_008-1024x583.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_008-300x171.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_008-768x437.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_008.png 1466w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="175" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_010-1024x175.png" alt="" class="wp-image-1500" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_010-1024x175.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_010-300x51.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_010-768x132.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_010.png 1430w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">パラメータ内の設定で解像度の部分は1024に変更しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="125" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_009-1024x125.png" alt="" class="wp-image-1501" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_009-1024x125.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_009-300x37.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_009-768x94.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_009.png 1355w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">以上の設定を行い、画面下部にある「Start training」ボタンを押します<br>学習が開始されるので、終わるまでしばらくかかります</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="574" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_011-1024x574.png" alt="" class="wp-image-1502" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_011-1024x574.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_011-300x168.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_011-768x431.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_011.png 1098w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">学習が無事に終了すると、LoRAファイルが作成されています<br>今回はComfyUIを利用するので、ComfyUIのmodel/lorasディレクトリに移動しておきます</p>



<h2 class="wp-block-heading">作成したLoraを使ってイラストを生成する</h2>



<p class="wp-block-paragraph">ComfyUIのサンプルに準備されている最もシンプルなワークフローを読み込み、ワークフローの間にLoRA読み込みを追加しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="529" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_013-1024x529.png" alt="" class="wp-image-1503" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_013-1024x529.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_013-300x155.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_013-768x397.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_013-1536x794.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_013.png 1583w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">同一のシードを利用して生成した画像は以下になります</p>



<p class="wp-block-paragraph">まずはLoRAなし</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00001_.png" alt="" class="wp-image-1504" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00001_.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00001_-300x300.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00001_-150x150.png 150w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00001_-768x768.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00001_-600x600.png 600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">LoRAあり</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00003_.png" alt="" class="wp-image-1505" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00003_.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00003_-300x300.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00003_-150x150.png 150w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00003_-768x768.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/SD1.5_00003_-600x600.png 600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">若干鳥獣戯画感が出てますかね・・・？<br>今回は学習画像少なめ、タグクリーニングも適当ということで作成されたLoRAも精度は良くないものとなりました・・・<br>学習画像の枚数を増やしたり、タグの選別を行うことでLoRAの性能も上げることが出来そうですし、いろいろな学習画像を組み合わせてオリジナルの画風を生み出すのも面白そうです！</p>



<p class="wp-block-paragraph">ちなみに、LoRA効果を有効にするには、プロンプトにトリガーワードの指定が必要です<br>学習画像を準備したフォルダ名が、そのままトリガーワードに利用されるとのことで、今回の例では「tyoujuu」がトリガーワードとなりました<br>(ちなみにフォルダ名の先頭の10はエポック数として扱われ、繰り返し学習する回数として利用されます)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="131" height="47" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_014.png" alt="" class="wp-image-1506"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="292" height="131" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260522_015.png" alt="" class="wp-image-1507"/></figure>



<h2 class="wp-block-heading">以上です</h2>



<p class="wp-block-paragraph">ということでLoRA作成方法の紹介でした<br>LoRA自体の作成はそこまで難しくありませんが、学習画像の収集、タグ整理が大変そうです<br>精度が良いLoRAを作るには、それなりの労力がかかることは覚悟しておいたほうがよさそうですね</p>



<p class="wp-block-paragraph">あと、LoRAなどを触り始めると、AI特化型PCがますますほしくなります・・・</p>


<div id="rinkerid1508" class="yyi-rinker-contents  yyi-rinker-postid-1508 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FNovelAI%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/cocohouse/cabinet/20260405-3/b0dkd3wwl8.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FNovelAI%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">【中古】(非常に良い)NovelAI 入力支援 Androidの 全てが分かる本</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=NovelAI&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FNovelAI%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DNovelAI" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid1509" class="yyi-rinker-contents  yyi-rinker-postid-1509 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FchatGPT%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/6068/9784815626068_1_5.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FchatGPT%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">この一冊で全部わかる　ChatGPT &#038; Copilotの教科書 [ 中島大介 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=chatGPT&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FchatGPT%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DchatGPT" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/05/lora%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">Loraを作ってみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/05/lora%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ローカルLLMでAIコーディング環境を構築する</title>
		<link>https://sheltie-garage.xyz/tech/2026/05/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%a7ai%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%92%b0%e5%a2%83%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/05/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%a7ai%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%92%b0%e5%a2%83%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Thu, 21 May 2026 05:40:56 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1475</guid>

					<description><![CDATA[<p>長らく利用していたGoogleのAntigravityがバージョンアップして・Antigravity 2.0・Antigarvity IDEに分かれていました それまではいいのだけど、Antigravity 2.0は完全 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/05/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%a7ai%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%92%b0%e5%a2%83%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/">ローカルLLMでAIコーディング環境を構築する</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">長らく利用していたGoogleのAntigravityがバージョンアップして<br>・Antigravity 2.0<br>・Antigarvity IDE<br>に分かれていました</p>



<p class="wp-block-paragraph">それまではいいのだけど、Antigravity 2.0は完全なAIエージェント管理ツールとなったようで、エディタがありませんでした<br>で、エディタどこだよって思ったら、Antigravity IDEに分離されたので、コーディングにはこちらを使うことになるのですが、新規アプリ扱いらしく、設定や拡張機能は設定し直しのようで・・・</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="686" height="622" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_001.png" alt="" class="wp-image-1476" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_001.png 686w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_001-300x272.png 300w" sizes="auto, (max-width: 686px) 100vw, 686px" /></figure>



<p class="wp-block-paragraph">困ったのが「モデルクォータの上限にすぐ到達する」ということ</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="542" height="496" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_002.png" alt="" class="wp-image-1477" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_002.png 542w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_002-300x275.png 300w" sizes="auto, (max-width: 542px) 100vw, 542px" /></figure>



<p class="wp-block-paragraph">今まではGemini 3.1 Pro、Flash、Claudeをローテーションして1週間ほど作業できていましたが、今回のアップデートにより、数時間作業ですべてのクォータが枯渇するようになりました・・・</p>



<p class="wp-block-paragraph">流石にこれではまともに利用できない　ということで、ローカルLLMを活用してAIコーディング環境を整えることにしました</p>



<h2 class="wp-block-heading">利用するのはContinue(VS Code拡張機能)とOpenCode、Ollama</h2>



<p class="wp-block-paragraph">自分の環境は<br>・Ollama実行機：Windowsマシン(VRAM 16GB)<br>・開発マシン：MacBookPro(Intel CPU)<br>という構成です<br>MacBookではローカルLLMを動かしつつ開発を行うパワーは無いので、OllamaはWindows側で実行し、MacBookから接続して利用するようにしました</p>



<p class="wp-block-paragraph">また、利用する拡張機能の関係で、エディタもVSCodeに変更しています</p>



<h2 class="wp-block-heading">Ollama側の準備</h2>



<p class="wp-block-paragraph">Ollamaを導入し、コーディングに利用するモデルをダウンロードしておきます<br>今回は「gemma4:26b」を利用することにしました</p>



<p class="wp-block-paragraph">Ollamaをネットワークに公開する場合、設定が必要になるため<a href="https://docs.ollama.com/faq#how-do-i-configure-ollama-server" target="_blank" rel="noreferrer noopener">FAQ</a>や<a href="https://sheltie-garage.xyz/tech/2026/04/windowspc%e3%81%ab%e5%85%a5%e3%82%8c%e3%81%9follama%e3%82%92macbookpro%e3%81%8b%e3%82%89%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%94%a8mcp%e3%81%a8%e3%81%97%e3%81%a6%e5%88%a9%e7%94%a8/" type="post" id="1367">過去記事</a>を参考に対応してください</p>



<h2 class="wp-block-heading">Continue(VS Code拡張機能)を導入する</h2>



<p class="wp-block-paragraph">マーケットプレイスから拡張機能を導入します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="790" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_003-1024x790.png" alt="" class="wp-image-1478" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_003-1024x790.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_003-300x231.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_003-768x592.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_003-1536x1185.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_003-2048x1580.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">導入が完了すると、アクティビティバー(左側のアイコンが並んでいるバー)にContinueのアイコンが追加されるのでクリック<br>チャットウィンドウが開くので、上部にある歯車アイコンから設定画面を開きます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="908" height="752" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_004.png" alt="" class="wp-image-1480" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_004.png 908w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_004-300x248.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_004-768x636.png 768w" sizes="auto, (max-width: 908px) 100vw, 908px" /></figure>



<p class="wp-block-paragraph">開いた設定ページからModelを選択し、歯車アイコンをクリックすると設定ファイルが開きます<br>自分の環境では以下のように設定しました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="570" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_005-1024x570.png" alt="" class="wp-image-1481" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_005-1024x570.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_005-300x167.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_005-768x427.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_005-1536x855.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_005.png 1908w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>name: Local AI
version: 0.0.1
schema: v1
models:
  - name: Gemma4 26b
    provider: ollama
    model: gemma4:26b
    apiBase: http://192.168.xx.xx:11434
    roles:
      - chat
      - edit
      - apply
  - name: Gemma4 26b autocomplete
    provider: ollama
    model: gemma4:26b
    apiBase: http://192.168.xx.xx:11434
    roles:
      - autocomplete
  - name: Gemma4 26b embed
    provider: ollama
    model: gemma4:26b
    apiBase: http://192.168.xx.xx:11434
    roles:
      - embed

</code></pre></div>



<p class="wp-block-paragraph">ここまでの設定でチャットが利用できるはずなので、試してみます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="785" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_006-1024x785.png" alt="" class="wp-image-1482" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_006-1024x785.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_006-300x230.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_006-768x589.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_006.png 1390w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">チャットにoapi-codegenの設定ファイルの中身を貼り付け、設定内容の解説をお願いしました<br>返却された回答を見た限りでは特に問題なかったため、簡単なコードの解説などには利用できそうです</p>



<h2 class="wp-block-heading">OpenCodeを導入する</h2>



<p class="wp-block-paragraph">OpenCodeについては、まずCLIを公式サイトからインストールします<br><a href="https://opencode.ai/ja" target="_blank" rel="noreferrer noopener">https://opencode.ai/ja</a></p>



<p class="wp-block-paragraph">OpenCodeもVS Codeから利用しますが(自分の場合)、前提としてOpenCode CLIが導入されている必要があります</p>



<p class="wp-block-paragraph">次に設定を行っておきます<br>設定ファイル内のIPアドレスやモデル名はご自身の環境に合わせて変更してください</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>以下のディレクトリを作成
~/.config/opencode

ディレクトリ内に設定ファイルを作成
vi opencode.json

opencode.jsonの内容
{
  &quot;$schema&quot;: &quot;https://opencode.ai/config.json&quot;,
  &quot;provider&quot;: {
    &quot;ollama&quot;: {
      &quot;npm&quot;: &quot;@ai-sdk/openai-compatible&quot;,
      &quot;name&quot;: &quot;Ollama&quot;,
      &quot;options&quot;: {
        &quot;baseURL&quot;: &quot;http://192.168.xx.xx:11434/v1&quot;
      },
      &quot;models&quot;: {
        &quot;gemma4:26b&quot;: {
          &quot;name&quot;: &quot;gemma4:26b&quot;
        }
      }
    }
  }
}</code></pre></div>



<p class="wp-block-paragraph">VS CodeのマーケットプレイスからOpenCode拡張機能を導入します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="705" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_007-1024x705.png" alt="" class="wp-image-1483" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_007-1024x705.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_007-300x206.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_007-768x529.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_007-1536x1057.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_007.png 1732w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">拡張機能を導入すると、画面上部にアイコンが増えているはずです</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="367" height="219" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_008.png" alt="" class="wp-image-1484" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_008.png 367w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_008-300x179.png 300w" sizes="auto, (max-width: 367px) 100vw, 367px" /></figure>



<p class="wp-block-paragraph">クリックするとOpenCodeのコンソール画面が起動します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="868" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_009-1024x868.png" alt="" class="wp-image-1485" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_009-1024x868.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_009-300x254.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_009-768x651.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_009.png 1432w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">/model というコマンドでモデルが選択できるので、設定ファイルで設定したモデルを指定します</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="795" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_010-1024x795.png" alt="" class="wp-image-1486" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_010-1024x795.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_010-300x233.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_010-768x596.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_010.png 1446w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">これでAIエージェントとして動いてくれるはずなので、試しに指示を出してみます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="958" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_011-1024x958.png" alt="" class="wp-image-1487" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_011-1024x958.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_011-300x281.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_011-768x719.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/05/20260521_011.png 1434w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">上記の指示でplaywrightのテストコードを探し出し、内容を解析して一覧化してくれました<br>きちんと動いているようですね</p>



<h2 class="wp-block-heading">以上</h2>



<p class="wp-block-paragraph">ローカルLLMを利用したAIコーディング環境について紹介しました<br>Continue、OpenCodeともに導入初期段階でどこまで戦えるのか検証はできていませんが、今後活用してみようと思います<br>今回の環境の欠点としては、コーディング作業時はOllama(Windowsマシン)の起動も必要だということ</p>



<p class="wp-block-paragraph">環境を作っていてMac MiniやAI特化型PCが欲しくなってきました</p>


<div id="rinkerid1488" class="yyi-rinker-contents  yyi-rinker-postid-1488 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7800/9784839987800_1_4.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">つくりながら学ぶ！LLM 自作入門 （Compass Booksシリーズ） [ Sebastian Raschka ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=LLM&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DLLM" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid1489" class="yyi-rinker-contents  yyi-rinker-postid-1489 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/1154/9784814401154_1_2.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">直感 LLM ハンズオンで動かして学ぶ大規模言語モデル入門 [ Jay Alammar ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=LLM&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FLLM%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DLLM" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/05/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%a7ai%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%92%b0%e5%a2%83%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/">ローカルLLMでAIコーディング環境を構築する</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/05/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%a7ai%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%92%b0%e5%a2%83%e3%82%92%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windows11にWSL2をインストールする</title>
		<link>https://sheltie-garage.xyz/tech/2026/04/windows11%e3%81%abwsl2%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/04/windows11%e3%81%abwsl2%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Sun, 26 Apr 2026 11:42:07 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1392</guid>

					<description><![CDATA[<p>WindowsでOpenClawを使ってみたいと思い、その前準備としてWSL2をインストールします WSL2とは WSL2は「Windows Subsystem for Linux」の略で、特別な仮想環境やデュアルブート [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/04/windows11%e3%81%abwsl2%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/">Windows11にWSL2をインストールする</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">WindowsでOpenClawを使ってみたいと思い、その前準備としてWSL2をインストールします</p>



<h2 class="wp-block-heading">WSL2とは</h2>



<p class="wp-block-paragraph">WSL2は「Windows Subsystem for Linux」の略で、特別な仮想環境やデュアルブート無しでWindows上でLinuxのコマンドやアプリを実行可能にするための環境です</p>



<p class="wp-block-paragraph">OpenClawをWindowsで動かす場合、公式で推奨されているため、今回インストールすることにしました</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="553" height="212" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/image.png" alt="" class="wp-image-1393" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/image.png 553w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/image-300x115.png 300w" sizes="auto, (max-width: 553px) 100vw, 553px" /></figure>



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



<p class="wp-block-paragraph">インストールはとても簡単でPowerShellから以下のコマンドを実行するだけ</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>wsl --install</code></pre></div>



<h2 class="wp-block-heading">WSL2インストール後の操作</h2>



<p class="wp-block-paragraph">PowerShellから以下のコマンドでWSLが起動します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>wsl</code></pre></div>



<p class="wp-block-paragraph">抜けるときはCtrl + Dキーか、exitコマンドで抜けられます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>exit</code></pre></div>



<p class="wp-block-paragraph">試しにll(ファイル一覧表示)のコマンドを打ってみます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="665" height="154" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/image-1.png" alt="" class="wp-image-1394" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/image-1.png 665w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/image-1-300x69.png 300w" sizes="auto, (max-width: 665px) 100vw, 665px" /></figure>



<p class="wp-block-paragraph">ちゃんとLinuxコマンドが動いていますね(Windowsだとdirコマンドになる)</p>



<h2 class="wp-block-heading">余談</h2>



<p class="wp-block-paragraph">ちなみにWSL環境はホストマシンとは別環境になるようで、ホストマシンのOllamaなどに接続するときにlocalhost(または127.0.0.1)が使用できません<br>自分の場合、ipconfigなどでホストマシンのIPを調べて、同一LAN上でアクセスするようにOpenClawを利用する際は設定しました</p>



<p class="wp-block-paragraph">OpenClawの導入自体は、また別の買いで紹介します</p>



<p class="wp-block-paragraph"></p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/04/windows11%e3%81%abwsl2%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/">Windows11にWSL2をインストールする</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/04/windows11%e3%81%abwsl2%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
