<?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>Thu, 22 Oct 2026 23:55:11 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>ARTEXを動かしてみた</title>
		<link>https://sheltie-garage.xyz/tech/2026/10/artex%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/10/artex%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 04:23:58 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=2304</guid>

					<description><![CDATA[<p>最初に 本記事はARTEXをローカル環境で動作するWebアプリに対して脆弱性解析を行った体験談を伝えることを目的としています ARTEXの入手方法、設定方法などについての記述はありませんまた、質問をいただいてもお答えする [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/10/artex%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/">ARTEXを動かしてみた</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">最初に</h1>



<p class="has-black-color has-text-color has-link-color wp-elements-4 wp-block-paragraph">本記事はARTEXをローカル環境で動作するWebアプリに対して脆弱性解析を行った体験談を伝えることを目的としています</p>



<p class="has-vivid-red-color has-text-color has-link-color wp-elements-5 wp-block-paragraph"><strong>ARTEXの入手方法、設定方法などについての記述はありません<br>また、質問をいただいてもお答えすることはできませんのであらかじめご承知おきください</strong></p>



<h1 class="wp-block-heading">ARTEXとは</h1>



<p class="wp-block-paragraph">2026年10月19日現在、数多くの日本企業から情報漏洩のニュースが発表され、ニュースでも連日報道されている状態です<br>サイバー攻撃に利用されたのではないかと言われている「ARTEX」について、今回実際に動作させてみて、どのような挙動を取るのか確かめてみたいと思います</p>



<p class="wp-block-paragraph">※1:日本企業への不正アクセス、中国のAIツール「ARTEX」使用を確認<br><a href="https://news.yahoo.co.jp/articles/51bdb52f0b706e75a2aad02aea056bf9945d1d50">https://news.yahoo.co.jp/articles/51bdb52f0b706e75a2aad02aea056bf9945d1d50</a></p>



<p class="wp-block-paragraph">※2:ARTEXは現在公開が終了しており、入手することはできません</p>



<h1 class="wp-block-heading">ARTEX動作画面</h1>



<p class="wp-block-paragraph">ローカル環境にARTEX動作環境を構築し、実際に動作させた画面が以下になります</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="485" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_001-1024x485.png" alt="" class="wp-image-2305" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_001-1024x485.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_001-300x142.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_001-767x363.png 767w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_001-1536x727.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_001.png 1899w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">表記が中国語となっており、言語設定などもないため日本人には扱いにくそうな感じです<br>ただAIにお願いすればどんな言語にも翻訳可能なので、言語の壁はないと思ったほうが良いでしょう</p>



<p class="wp-block-paragraph">脆弱性診断の設定も簡単で<br>・どのサイトに対して行うか<br>・目標な何か<br>を指定すれば、後はLLMが自動で計画を立てて、ワーカーがそれぞれのタスクをこなしてくれます</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="320" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_002-1024x320.png" alt="" class="wp-image-2306" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_002-1024x320.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_002-300x94.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_002-767x240.png 767w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_002.png 1311w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">ワーカーの動作が終了すると、サマリが表示されます<br>サマリの内容は<br>・どのような技術スタックで構成されているか<br>・各種セキュリティの設定状況(CSRF-Tokenなど)の適用状況<br>・侵入に利用できそうなAPIのエンドポイント<br>と言った情報がまとめて表示されました</p>



<p class="wp-block-paragraph">驚いたのはこの時点で「/api/item/[id]にabcを設定してもレスポンス200が返却されたので、値が正しく検証されていない可能性がある」という結果が出ていたこと<br>通常IDといえば数値が設定されるべきなので、そのようなチェクが甘い部分がこの時点で割り出されていたのは衝撃的でした</p>



<h1 class="wp-block-heading">脆弱性チェックにはそれなりに時間が掛かる</h1>



<figure class="wp-block-image size-full"><img decoding="async" width="479" height="131" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_003.png" alt="" class="wp-image-2307" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_003.png 479w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_003-300x82.png 300w" sizes="(max-width: 479px) 100vw, 479px" /></figure>



<p class="wp-block-paragraph">ローカルLLMを利用して脆弱性チェックを行ったところ、45分経っても、7個のうち2個のワーカーが終わっていました<br>ワーカーは進捗に応じて増えたりするため、サイト全体の脆弱性チェックにはかなりの時間がかかりそうです</p>



<p class="wp-block-paragraph">ただし、これはあくまで「ローカルLLM」の環境で動かした場合なので<br>・ローカルに高スペックな環境が準備できる<br>・OpenAIやClaudeに課金できて、フロンティアAIを大量に利用できる環境がある<br>場合は、探索時間は相応に短くできる可能性があります</p>



<p class="wp-block-paragraph">個人が面白半分でARTEXを動かしてサイバー攻撃を行うのはあまり現実的ではありませんが<br>組織としてサイバー攻撃を行うのであれば、十分に脅威となる可能性を秘めていることが、今回実際に動かして感じたことです</p>



<p class="has-vivid-red-color has-text-color has-link-color wp-elements-6 wp-block-paragraph">※1:個人が面白半分でARTEXで外部サイトに攻撃を仕掛けた場合でも「不正アクセス行為の禁止等に関する法律」に抵触する可能性があるため、絶対に行わないでください</p>



<h1 class="wp-block-heading">ARTEXの攻撃を受けたサイト側のログ</h1>



<p class="wp-block-paragraph">以下はARTEXからのリクエストの一部です</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>{&quot;time&quot;:&quot;2026-10-21T13:02:45.509307088+09:00&quot;,&quot;level&quot;:&quot;WARN&quot;,&quot;msg&quot;:&quot;該当ライダーIDが存在しない : -1&quot;}

{&quot;time&quot;:&quot;2026-10-21T13:02:45.510751918+09:00&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;msg&quot;:&quot;request&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;uri&quot;:&quot;/rider/profile/-1&quot;,&quot;status&quot;:400}

{&quot;time&quot;:&quot;2026-10-21T13:02:45.593460711+09:00&quot;,&quot;level&quot;:&quot;ERROR&quot;,&quot;msg&quot;:&quot;クッキー取得でエラーが発生しました : http: named cookie not present&quot;}

{&quot;time&quot;:&quot;2026-10-21T13:02:45.593574715+09:00&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;msg&quot;:&quot;request&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;uri&quot;:&quot;/rider/profile/1&quot;,&quot;status&quot;:200}

{&quot;time&quot;:&quot;2026-10-21T13:02:45.668416624+09:00&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;msg&quot;:&quot;request&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;uri&quot;:&quot;/rider/profile/test&quot;,&quot;status&quot;:400}

{&quot;time&quot;:&quot;2026-10-21T13:03:20.844216648+09:00&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;msg&quot;:&quot;request&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;uri&quot;:&quot;/rider/profile/1&#39;%20OR%20&#39;1&#39;=&#39;1&quot;,&quot;status&quot;:400}

{&quot;time&quot;:&quot;2026-10-21T13:03:20.891242984+09:00&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;msg&quot;:&quot;request&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;uri&quot;:&quot;/rider/profile/1%20UNION%20SELECT%20NULL--+&quot;,&quot;status&quot;:400}

{&quot;time&quot;:&quot;2026-10-21T13:03:20.936057217+09:00&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;msg&quot;:&quot;request&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;uri&quot;:&quot;/rider/profile/1&#39;%20AND%201=CONVERT(int,(SELECT%20TOP%201%20table_name%20FROM%20information_schema.tables))--+&quot;,&quot;status&quot;:400}</code></pre></div>



<p class="wp-block-paragraph">ライダー情報を取得するためのAPI「rider/profile」エンドポイントに対して SQLインジェクション攻撃が行われていることが確認できます<br>ARTEXではSQLインジェクション攻撃を行うにしても、複数パターンを生成して攻撃している様子が見て取れます</p>



<h1 class="wp-block-heading">実行結果</h1>



<p class="wp-block-paragraph">ARTEXのタスクが終了すると、結果が表示されます<br>(今回は脆弱性をチェックしてリストで表示して　とお願いしたので、見つかった脆弱性がリストで表示されました)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="239" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_004-1024x239.png" alt="" class="wp-image-2313" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_004-1024x239.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_004-300x70.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_004-767x179.png 767w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/10/20261021_004.png 1092w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">結果として、自分のウェブサイトにもいくつかの脆弱性が見つかったため、早急に対応したいと思います<br>これらの結果は「<a href="https://sheltie-garage.xyz/tech/2026/08/owasp-zap%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/" target="_blank" rel="noreferrer noopener">ZAP By Checkmarks</a>」実行時とは異なるものだったため、複数ツールを利用した脆弱性チェックの有効性も確認できました</p>



<h1 class="wp-block-heading">いったんここまで</h1>



<p class="wp-block-paragraph">簡単にですが、ARTEXを動作させてみた内容を記載しました<br>特に驚いたのは<br>・セットアップが簡単である(シェルを起動し、簡単な質問に答えるだけ)<br>・脆弱性チェックが簡単に行える(日本語でこのサイトに対して脆弱性をチェックして　だけ)<br>・幅広いパターンを試す(SQLインジェクション一つとっても、様々な可能性を考慮して攻撃してくる)<br>という点です</p>



<p class="wp-block-paragraph">ただ、今のところ「革新的な」攻撃方法は行われていないように見えるため、Webアプリケーション基本である<br>・権限や認証が正常に設定されているか<br>・SQLインジェクションなどの対策は行われているか<br>・WAFのような防御機構が設定されているか<br>と言った、従来のWebアプリケーションセキュリティをしっかり行うだけでも、効果があるのかなと感じています</p>



<p class="wp-block-paragraph">上記のようなツールを使うことでウェブセキュリティの「戸締りが甘い部分」の調査が簡単になってしまった印象です<br>これを機に、Webアプリケーションのセキュリティを見直すのが良さそうです(自分含めて)</p>


<div id="rinkerid2309" class="yyi-rinker-contents  yyi-rinker-postid-2309 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%2Fweb%25E3%2582%25BB%25E3%2582%25AD%25E3%2583%25A5%25E3%2583%25AA%25E3%2583%2586%25E3%2582%25A3%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img loading="lazy" decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/bookfan/cabinet/01165/bk4297150468.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%2Fweb%25E3%2582%25BB%25E3%2582%25AD%25E3%2583%25A5%25E3%2583%25AA%25E3%2583%2586%25E3%2582%25A3%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">【送料無料】Webセキュリティコンパクトガイド 攻撃の種類から具体的な対策アプローチまで</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">
							<span title="" class="price">¥2,420</span>
															<span class="price_at">(2026/10/30 12:47:10時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=web%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&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%2Fweb%25E3%2582%25BB%25E3%2582%25AD%25E3%2583%25A5%25E3%2583%25AA%25E3%2583%2586%25E3%2582%25A3%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%3Dweb%25E3%2582%25BB%25E3%2582%25AD%25E3%2583%25A5%25E3%2583%25AA%25E3%2583%2586%25E3%2582%25A3" 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="rinkerid2308" class="yyi-rinker-contents  yyi-rinker-postid-2308 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%25BD%2593%25E7%25B3%25BB%25E7%259A%2584%25E3%2581%25AB%25E5%25AD%25A6%25E3%2581%25B6%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img loading="lazy" decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3163/9784797393163_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%2F%25E4%25BD%2593%25E7%25B3%25BB%25E7%259A%2584%25E3%2581%25AB%25E5%25AD%25A6%25E3%2581%25B6%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践 [ 徳丸 浩 ]</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">
							<span title="" class="price">¥3,520</span>
															<span class="price_at">(2026/10/30 12:47:10時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=%E4%BD%93%E7%B3%BB%E7%9A%84%E3%81%AB%E5%AD%A6%E3%81%B6&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%25BD%2593%25E7%25B3%25BB%25E7%259A%2584%25E3%2581%25AB%25E5%25AD%25A6%25E3%2581%25B6%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%25BD%2593%25E7%25B3%25BB%25E7%259A%2584%25E3%2581%25AB%25E5%25AD%25A6%25E3%2581%25B6" 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/10/artex%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/">ARTEXを動かしてみた</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/10/artex%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AIエージェントアプリ「Goose」を利用してみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/09/ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88%e3%82%a2%e3%83%97%e3%83%aa%e3%80%8cgoose%e3%80%8d%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/09/ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88%e3%82%a2%e3%83%97%e3%83%aa%e3%80%8cgoose%e3%80%8d%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Mon, 14 Sep 2026 08:55:33 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=2180</guid>

					<description><![CDATA[<p>Googleのレコメンド記事で「Goose」が流れてきたので使ってみることにしました Gooseとは https://goose-docs.ai Gooseは主要なOSで動作するAIエージェントデスクトップアプリですWi [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/09/ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88%e3%82%a2%e3%83%97%e3%83%aa%e3%80%8cgoose%e3%80%8d%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">AIエージェントアプリ「Goose」を利用してみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Googleのレコメンド記事で「Goose」が流れてきたので使ってみることにしました</p>



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



<p class="wp-block-paragraph"><a href="https://goose-docs.ai">https://goose-docs.ai</a></p>



<p class="wp-block-paragraph">Gooseは主要なOSで動作するAIエージェントデスクトップアプリです<br>Windowsにも対応していているということで、今回使ってみることにしました</p>



<p class="wp-block-paragraph">インストールはインストールページからバイナリをダウンロードするだけです<br>インストーラーはないので、zipファイルを展開して、exeを実行したら起動します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="978" height="703" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-9.png" alt="" class="wp-image-2181" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-9.png 978w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-9-300x216.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-9-768x552.png 768w" sizes="auto, (max-width: 978px) 100vw, 978px" /></figure>



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



<p class="wp-block-paragraph">起動直後は以下のようなウェルカムページが表示されます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="921" height="796" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-11.png" alt="" class="wp-image-2183" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-11.png 921w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-11-300x259.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-11-767x663.png 767w" sizes="auto, (max-width: 921px) 100vw, 921px" /></figure>



<h2 class="wp-block-heading">AIモデルプロバイダーを設定し、使い始める</h2>



<p class="wp-block-paragraph">今回はローカルLLM(llama.cpp)をプロバイダーとして利用します</p>



<p class="wp-block-paragraph">まずはプロバイダーに接続をクリック<br>カスタムプロバイダーを追加が表示されるため、追加をクリックします<br>(ローカルモデルを使用　を選択すると、Huggingfaceよりモデルをダウンロードするような動作となり、llama.cppへの接続設定は無いようでした)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="851" height="369" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-12.png" alt="" class="wp-image-2184" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-12.png 851w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-12-768x333.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-12-300x130.png 300w" sizes="auto, (max-width: 851px) 100vw, 851px" /></figure>



<p class="wp-block-paragraph">手動で設定を選択します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="611" height="378" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-13.png" alt="" class="wp-image-2185" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-13.png 611w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-13-300x186.png 300w" sizes="auto, (max-width: 611px) 100vw, 611px" /></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-full"><img loading="lazy" decoding="async" width="609" height="665" data-id="2186" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-14.png" alt="" class="wp-image-2186" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-14.png 609w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-14-275x300.png 275w" sizes="auto, (max-width: 609px) 100vw, 609px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="598" height="389" data-id="2187" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-15.png" alt="" class="wp-image-2187" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-15.png 598w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-15-300x195.png 300w" sizes="auto, (max-width: 598px) 100vw, 598px" /></figure>
</figure>



<p class="wp-block-paragraph">最後にデータ収集に協力するかを選択します<br>自分はxxxな用途にも使っているので、辞退です</p>



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



<p class="wp-block-paragraph">接続後はウィンドウの内容が変わります</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="922" height="790" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-17.png" alt="" class="wp-image-2189" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-17.png 922w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-17-300x257.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-17-768x658.png 768w" sizes="auto, (max-width: 922px) 100vw, 922px" /></figure>



<p class="wp-block-paragraph">先にワークフォルダを設定しておきます</p>



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



<h2 class="wp-block-heading">とりあえずチャットしてみる</h2>



<p class="wp-block-paragraph">まずはチャットをしてみました</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="926" height="791" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-20.png" alt="" class="wp-image-2192" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-20.png 926w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-20-768x656.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-20-300x256.png 300w" sizes="auto, (max-width: 926px) 100vw, 926px" /></figure>



<p class="wp-block-paragraph">ちゃんと自己紹介してくれました</p>



<p class="wp-block-paragraph">次はウェブサーチを試してみます</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="554" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-21-1024x554.png" alt="" class="wp-image-2193" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-21-1024x554.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-21-767x415.png 767w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-21-300x162.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-21.png 1068w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="913" height="607" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-22.png" alt="" class="wp-image-2194" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-22.png 913w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-22-300x199.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/09/image-22-767x510.png 767w" sizes="auto, (max-width: 913px) 100vw, 913px" /></figure>



<p class="wp-block-paragraph">ウェブサーチなどのスキルを使用し、概要や攻略法をまとめてくれました<br>他、ファイルの生成等もできるので、基本的なエージェントとしての使用には使えそうな感じです</p>



<h2 class="wp-block-heading">なぜGooseを導入したか</h2>



<p class="wp-block-paragraph">今まではHermes Agentを利用していたのですが<br>・Windowsにうまく導入できず、MacBookで動作させていた<br>・ただ、LLMはWindowsマシンで動かしているため、LANネットワーク越しに利用していた<br>・HermesエージェントからLANのLLMにうまく接続できなくなり、原因究明に難儀していた</p>



<p class="wp-block-paragraph">という経緯があります</p>



<p class="wp-block-paragraph">Gooseを導入したことでWindowsマシン内でAIエージェント動作環境が完結するので、今まで以上に便利に利用できそうです</p>



<p class="wp-block-paragraph"></p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/09/ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88%e3%82%a2%e3%83%97%e3%83%aa%e3%80%8cgoose%e3%80%8d%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">AIエージェントアプリ「Goose」を利用してみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/09/ai%e3%82%a8%e3%83%bc%e3%82%b8%e3%82%a7%e3%83%b3%e3%83%88%e3%82%a2%e3%83%97%e3%83%aa%e3%80%8cgoose%e3%80%8d%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Go/ChromaDB/Ollama Vol.2】RAG検索の改良：チャンク設計と検索ロジックの見直しによるRAG精度検証と更なる改良</title>
		<link>https://sheltie-garage.xyz/tech/2026/07/rag%e6%a4%9c%e7%b4%a2%e3%83%aa%e3%83%99%e3%83%b3%e3%82%b8%e2%86%92%e5%a4%b1%e6%95%97/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/07/rag%e6%a4%9c%e7%b4%a2%e3%83%aa%e3%83%99%e3%83%b3%e3%82%b8%e2%86%92%e5%a4%b1%e6%95%97/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Sat, 04 Jul 2026 00:14:31 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1791</guid>

					<description><![CDATA[<p>GitHubリポジトリはこちらhttps://github.com/sheltie-fusafusa/dojin-rag-2 TL;DR 前回チャレンジした「【Go/ChromaDB/Ollama Vol.1】RAG型同 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/07/rag%e6%a4%9c%e7%b4%a2%e3%83%aa%e3%83%99%e3%83%b3%e3%82%b8%e2%86%92%e5%a4%b1%e6%95%97/">【Go/ChromaDB/Ollama Vol.2】RAG検索の改良：チャンク設計と検索ロジックの見直しによるRAG精度検証と更なる改良</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">GitHubリポジトリはこちら<br>https://github.com/sheltie-fusafusa/dojin-rag-2</p>



<h2 class="wp-block-heading"><strong>TL;DR</strong></h2>



<p class="wp-block-paragraph">前回チャレンジした「<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/">【Go/ChromaDB/Ollama Vol.1】RAG型同人誌サークル検索の構築をベクトルDBを使用して行ってみた</a>」の続きとなります</p>



<p class="wp-block-paragraph">前回の問題点は以下の通りです</p>



<ul class="wp-block-list">
<li>もととなるデータは自然言語に即したデータにする</li>



<li>エイリアスを充実させる(ブルアカ、ブルーアーカイブなど)</li>



<li>ユーザーからの入力をLLMで拡張、整形した後にベクトルDBに検索を行う</li>
</ul>



<p class="wp-block-paragraph">今回の主な改良点は</p>



<ul class="wp-block-list">
<li>CSVファイルフォーマットの変更。サークルの補足説明、アピールポイント、配置番号などを追加し、ユーザーが検索したときにより多くの情報にヒットするよう対策した</li>



<li>LLM要約生成機能を追加し、より多くの情報をベクトルDBに登録することであいまい検索にヒットしやすくした</li>



<li>入力されたチャットについてもベクトル化し、検索を行うように修正(前回作成時はチャット入力のベクトル化が行われておらず、結果が取得できなかった可能性があるため)</li>
</ul>



<p class="wp-block-paragraph">となります</p>



<p class="wp-block-paragraph">ただ、このような対策を行っても利用に耐えられるような検索精度を出すことが出来ませんでした</p>



<p class="wp-block-paragraph">考えられる原因は</p>



<ul class="wp-block-list">
<li>検証マシンのスペック不足、十分な性能を持つLLMを動作させることが出来なかった</li>



<li>ノウハウ不足、RAG検索への理解はエンベディングのノウハウが足りなかった</li>



<li>エイリアス実装の見送り、エイリアスを実装するための良い方法が見つからず、採用を見送った</li>
</ul>



<p class="wp-block-paragraph">となります</p>



<p class="wp-block-paragraph">以下に今回の問題点を記載します</p>



<h2 class="wp-block-heading">システム的な限界</h2>



<p class="wp-block-paragraph">RAG検索を動作させる環境が「MacBookPro 2019」という、AIシステムを動作させることを考えるとものすごく非力なマシンで動かそうとしました</p>



<p class="wp-block-paragraph">このPC上でDockerを使ってGo、Python、Redis、ollama、chromaDBなどが動作するため、一つ一つのシステムに割り当てられるリソースが限定されます<br>特にメモリ16GBではパラメータ数の多いモデルは利用できないため、結果的に精度の良くない小型モデルを利用し、エンベッティング、検索ともに十分な変換ができないという問題がありました</p>



<h2 class="wp-block-heading">ノウハウ不足</h2>



<p class="wp-block-paragraph">RAG検索は「検索した結果をLLMに渡し、回答を生成する技術」なので、核になるのは「ユーザーが望んだ検索結果を、データストアから取得する」部分になると考えています</p>



<p class="wp-block-paragraph">今回、データストアにchromaDBを使用し、ユーザーの検索結果をベクトルに変換、chromaDBに対して検索を行うことで(意味的な)距離が近い回答を取得し、LLMにて最終的な回答を作成するというアーキテクチャにしました</p>



<p class="wp-block-paragraph">ただ、最初の「chromaDBから意味的に近い回答を取得する」部分がうまく言っておらず、テストデータの距離がすべて近いものとして出力されていました</p>



<p class="wp-block-paragraph">これは「エンベッティング」「chromaDBに対しての検索手法」の知識が無く、なんとなくで作成してしまったことで、結果的に意味のない検索システムが出来上がってしまいました<br>当然、意味のないデータをLLMに渡したところで、意味のない回答が生成されるだけなので、結果使えないシステムとなりました</p>



<h2 class="wp-block-heading">エイリアスの実装を見送った</h2>



<p class="wp-block-paragraph">前回の問題点と考えていたエイリアスの充実について、よい方法が浮かばず実装を見送りました<br>これはマシンスペックが足りないことにも関連してきますが、利用しているLLMの規模が小さく、アニメ（同人）特有のエイリアスを生成することが難しいと判断したためです<br>特に最近の作品のエイリアスを生成しようとした場合、当然学習データには含まれていないためLLM単体での生成はできません<br>人の手によって手動で生成するか、都度ウェブ検索を行うような仕組みを入れて対応する必要がありました</p>



<h2 class="wp-block-heading">その他、ローカルLLMの有用性と限界</h2>



<p class="wp-block-paragraph">今回はローカルLLMとして以下のモデルを利用しています<br>HauhauCS/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive</p>



<p class="wp-block-paragraph">このモデルはRTX5070Ti VRAM16GBの環境で60tokens / secの速度が出るため、かなり実用的に利用できるLLMだと思っています<br>VSCodeにOpenCodeを設定し、プロバイダとして上記モデルを読み込んだllama.cppサーバーを指定してコーディングさせました</p>



<p class="wp-block-paragraph">フロントサイド、サーバーサイドともに「動作するもの」はできましたが、やはり一発成功となならず、完成報告を受けて実際に動かしてみたら「Docker buildに失敗」「チャットを送るとエラー」「回答が出力されない」など、多くの問題が発生しました</p>



<p class="wp-block-paragraph">そのため、動かしつつ問題点は随時修正させることで、一旦動くものはできました<br>ただ、使えるか？というと、残念ながら使えないものができてしまいました</p>



<p class="wp-block-paragraph">ローカルLLMはしばらく運用していましたが、やはり大手企業が展開するサブスクモデルレベルのクオリティを求めた場合、現状は困難と判断し、先日GeminiのAI Proプランを契約しました(お試しで3か月720円で利用できるため)</p>



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



<p class="wp-block-paragraph">根本的にRAG検索の理解を深めていきたいと思います<br>ここの知識が不足していると、そもそも最適なデータ設計や検索仕様が決められないためです<br>RAGの知識を固めたうえで、改めてデータ設計、検索仕様を固めて、次こそは「使えるRAG検索」を作りたいと思います</p>



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



<p class="wp-block-paragraph">ということで、RAG検索を作成したお話でした<br>結果失敗に終わりましたが、今まで「なんかいい感じに検索してくれる仕組み」となんとなく思っていましたが、実際に作ってみるとデータ設計、データ検索手法が最も大事だということがわかりました</p>



<p class="wp-block-paragraph"></p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/07/rag%e6%a4%9c%e7%b4%a2%e3%83%aa%e3%83%99%e3%83%b3%e3%82%b8%e2%86%92%e5%a4%b1%e6%95%97/">【Go/ChromaDB/Ollama Vol.2】RAG検索の改良：チャンク設計と検索ロジックの見直しによるRAG精度検証と更なる改良</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/07/rag%e6%a4%9c%e7%b4%a2%e3%83%aa%e3%83%99%e3%83%b3%e3%82%b8%e2%86%92%e5%a4%b1%e6%95%97/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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 loading="lazy" 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="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



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



<figure class="wp-block-image size-large"><img loading="lazy" 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="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" 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="auto, (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 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;" 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入門 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">
							<span title="" class="price">¥3,850</span>
															<span class="price_at">(2026/10/30 12:47:10時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</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 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;" 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">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>【Go/ChromaDB/Ollama Vol.1】RAG型同人誌サークル検索の構築をベクトルDBを使用して行ってみた</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/">【Go/ChromaDB/Ollama Vol.1】RAG型同人誌サークル検索の構築をベクトルDBを使用して行ってみた</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"><strong>TL;DR</strong></h2>



<p class="wp-block-paragraph">同人誌即売会のサークル情報を対象に、Go言語でのデータ取り込み、FastAPI ＋ ChromaDB ＋ Ollama（ローカルLLM）によるRAG（Retrieval-Augmented Generation）検索システムを試作・検証しました</p>



<p class="wp-block-paragraph">セマンティック検索（ベクトル検索）の利用方法や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マシンのLLMを利用して開発する環境を整えました</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">そのため、主に以下のような対策を行いました<br>・登録するCSV項目を増やした(Tag、Genreなど)<br>・検索対象の項目を増やした(検索対象にTag、Genreなどを含めるようにした)<br>・特定のタグ(ケモミミなど)を含む場合、フィルター単体検索を使用する</p>



<p class="wp-block-paragraph">ただ、これらのような改善を行っても、検索結果は改善されずされませんでした</p>



<p class="wp-block-paragraph">その後もAIエージェントに「〇〇と検索したらXXの結果が返ってくるはず」と何度も相談し、結構色々直してもらいましたが結果として十分な精度が出せず、今回は根本的なデータ設計、ベクトルDBに対しての知識不足のためこれ以上の改善は行えないと判断しました</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/">【Go/ChromaDB/Ollama Vol.1】RAG型同人誌サークル検索の構築をベクトルDBを使用して行ってみた</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">
							<span title="" class="price">¥3,520</span>
															<span class="price_at">(2026/10/30 12:47:10時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</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">
							<span title="" class="price">¥2,860</span>
															<span class="price_at">(2026/10/30 12:47:11時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</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-9 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-2 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-10 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">
							<span title="" class="price">¥3,080</span>
															<span class="price_at">(2026/10/30 12:47:11時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</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">
							<span title="" class="price">¥1,980</span>
															<span class="price_at">(2026/10/30 12:47:11時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</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-3 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">
							<span title="" class="price">¥2,530</span>
															<span class="price_at">(2026/10/30 12:47:11時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</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">
							<span title="" class="price">¥3,300</span>
															<span class="price_at">(2026/10/30 12:47:12時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</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>
	</channel>
</rss>
