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

<channel>
	<title>AI・機械学習 アーカイブ - Sheltie Garage Tech</title>
	<atom:link href="https://sheltie-garage.xyz/tech/category/%e6%a9%9f%e6%a2%b0%e5%ad%a6%e7%bf%92/feed/" rel="self" type="application/rss+xml" />
	<link>https://sheltie-garage.xyz/tech/category/機械学習/</link>
	<description>テクノロジー関連の話題をまとめたブログです</description>
	<lastBuildDate>Wed, 10 Jun 2026 08:36:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>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 fetchpriority="high" 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="(max-width: 1024px) 100vw, 1024px" /></figure>



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



<figure class="wp-block-image size-large"><img 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="(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;"></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/6/10 17:35:38時点&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 loading="lazy" 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;"></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/6/10 17:36:05時点&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-86f4e0d963ec87668eb92520d9827ae9 wp-block-paragraph"><strong>※本来はimplement実行前にanalyzeを実行して、仕様の整合性を確認することが推奨されます<br>　今回の実践編では、実行順序を間違えています</strong></p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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


<div id="rinkerid1617" class="yyi-rinker-contents  yyi-rinker-postid-1617 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0496/9784296080496_1_4.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">仕様駆動開発 実践入門 AIで実現する開発方法論 [ 田中 秀樹 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							<span title="" class="price">¥3,850</span>
															<span class="price_at">(2026/06/11 07:59:20時点&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%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/06/11 07:59:20時点&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-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/shimamura-gakufu/cabinet/g05317/g0531729.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">仕様駆動開発 実践入門 ／ 日経BP社</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/06/11 08:08:47時点&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%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/06/11 08:08:47時点&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-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="780" height="848" data-id="1561" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002.png" alt="" class="wp-image-1561" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002.png 780w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002-276x300.png 276w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/06/20260601_002-768x835.png 768w" sizes="auto, (max-width: 780px) 100vw, 780px" /></figure>



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



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



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


<div id="rinkerid1563" class="yyi-rinker-contents  yyi-rinker-postid-1563 yyi-rinker-img-m yyi-rinker-catid-12 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgithub%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3939/9784297153939_1_26.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;" loading="lazy"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fgithub%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">図解即戦力　Git&#038;GitHubのしくみと操作がこれ1冊でしっかりわかる教科書 [ リブロワークス ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							<span title="" class="price">¥2,420</span>
															<span class="price_at">(2026/06/11 08:08:47時点&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=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-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/shimamura-gakufu/cabinet/g05317/g0531729.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">仕様駆動開発 実践入門 ／ 日経BP社</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/06/11 08:08:47時点&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%BB%95%E6%A7%98%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3D%25E4%25BB%2595%25E6%25A7%2598%25E9%25A7%2586%25E5%258B%2595%25E9%2596%258B%25E7%2599%25BA" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/06/antigravity%e3%81%abspeckit%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">AntigravityにSpecKitを導入してみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/06/antigravity%e3%81%abspeckit%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Qwopus3.5-9B-Coder-MTP-GGUF:latestをllama.cppで動かしてみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/05/qwopus3-5-9b-coder-mtp-gguflatest%e3%82%92llama-cpp%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/05/qwopus3-5-9b-coder-mtp-gguflatest%e3%82%92llama-cpp%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Mon, 25 May 2026 21:33:49 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1515</guid>

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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

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



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



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



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



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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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


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


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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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


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


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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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

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



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



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



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



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



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



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



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



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

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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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


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


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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph"></p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/04/windows11%e3%81%abwsl2%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/">Windows11にWSL2をインストールする</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/04/windows11%e3%81%abwsl2%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WindowsPCに入れたOllamaをMacBookProからコーディング用MCPとして利用する</title>
		<link>https://sheltie-garage.xyz/tech/2026/04/windowspc%e3%81%ab%e5%85%a5%e3%82%8c%e3%81%9follama%e3%82%92macbookpro%e3%81%8b%e3%82%89%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%94%a8mcp%e3%81%a8%e3%81%97%e3%81%a6%e5%88%a9%e7%94%a8/</link>
					<comments>https://sheltie-garage.xyz/tech/2026/04/windowspc%e3%81%ab%e5%85%a5%e3%82%8c%e3%81%9follama%e3%82%92macbookpro%e3%81%8b%e3%82%89%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%94%a8mcp%e3%81%a8%e3%81%97%e3%81%a6%e5%88%a9%e7%94%a8/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Sat, 18 Apr 2026 07:39:30 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1367</guid>

					<description><![CDATA[<p>タイトルのとおりです ローカルLLMをAntigravityのコーディングエージェントとして利用したい GoogleのAntigravityを利用して主にプログラミングを行っているのですが、平日/休日に利用していると前モ [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/04/windowspc%e3%81%ab%e5%85%a5%e3%82%8c%e3%81%9follama%e3%82%92macbookpro%e3%81%8b%e3%82%89%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%94%a8mcp%e3%81%a8%e3%81%97%e3%81%a6%e5%88%a9%e7%94%a8/">WindowsPCに入れたOllamaをMacBookProからコーディング用MCPとして利用する</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">ローカルLLMをAntigravityのコーディングエージェントとして利用したい</h2>



<p class="wp-block-paragraph">GoogleのAntigravityを利用して主にプログラミングを行っているのですが、平日/休日に利用していると前モデルでトークンの上限にぶつかってしまいコーディング支援が受けられなくなることがしばしばありました。</p>



<p class="wp-block-paragraph">そこで、そこそこ強いゲーミングPCにOllamaをセットアップして自宅ではそちらを利用することでトークンを節約することにしました</p>



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



<p class="wp-block-paragraph">今回は<br>・WindowsPC：Ollamaサーバー(LLMモデルを動かすためのサーバー)<br>・MacBookPro：クライアント(WindowsPCからコーディング支援を受ける)<br>という構成になっています</p>



<p class="wp-block-paragraph">まずはWindowsPCにOllamaを導入し、LLMモデルが動くようにセットアップします</p>



<h2 class="wp-block-heading">WindowsPC側のセットアップ</h2>



<p class="wp-block-paragraph">まずはOllamaをインストールします<br>ダウンロードページからインストールするマシンに適したバイナリを入手できます<br>https://ollama.com/download</p>



<p class="wp-block-paragraph">下記コマンドはWindowsの例です</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>irm https://ollama.com/install.ps1 | iex</code></pre></div>



<p class="wp-block-paragraph">ollamaが起動していればデフォルトでAPIサーバーとして起動しているため、ブラウザにlocalhostでアクセスすることで動作しているか確認することができます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="297" height="137" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_w_001.png" alt="" class="wp-image-1381"/></figure>



<p class="wp-block-paragraph">無事に動作確認が取れたら、利用したいモデルをOllamaに導入します<br>モデルは<a href="https://huggingface.co/" target="_blank" rel="noreferrer noopener">Hugging Face</a>で大量に見つかると思います<br>※Ollamaを使用する場合、.gguf形式のファイルが利用できます</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/04/20260418_001-1024x578.png" alt="" class="wp-image-1370" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_001-1024x578.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_001-300x169.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_001-768x434.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_001-1536x868.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_001.png 1572w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Ollamaに対応したモデルであれば、モデル説明ページの右上にあるボタンからモデル実行用のコマンドを確認できます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="555" height="611" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_002.png" alt="" class="wp-image-1371" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_002.png 555w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_002-273x300.png 273w" sizes="auto, (max-width: 555px) 100vw, 555px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="924" height="221" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_003.png" alt="" class="wp-image-1372" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_003.png 924w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_003-300x72.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_003-768x184.png 768w" sizes="auto, (max-width: 924px) 100vw, 924px" /></figure>



<p class="wp-block-paragraph">Ollamaを外部から接続できるようにするために環境変数を設定します<br>以下の環境変数をそれぞれ設定します</p>



<p class="wp-block-paragraph">設定が必要な環境変数は以下になります</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>OLLAMA_HOST 0.0.0.0
OLLAMA_ORIGINS 192.168.40.*</code></pre></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="490" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_w_002-1024x490.png" alt="" class="wp-image-1382" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_w_002-1024x490.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_w_002-300x144.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_w_002-768x367.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_w_002.png 1317w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">OLLAMA_ORIGINSは接続を受け付けるIPアドレスになります<br>今回は自宅ローカルLANに接続されている端末からのアクセスを許可しています</p>



<p class="wp-block-paragraph">自宅LANのIPアドレスはコマンドプロンプトから「ipconfig」コマンドを実行することで確認できます</p>



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



<h2 class="wp-block-heading">MacBookPro側の設定</h2>



<p class="wp-block-paragraph">まずは接続対象(WindowsPC)に接続できるか確認します<br>ブラウザにWindowsPCのIPでアクセスすると、以下のメッセージが表示されるはずです</p>



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



<p class="wp-block-paragraph">AntigravityにMCPの設定を行います<br>以下のファイルを開きます(なければ新規作成してください)</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>~/.gemini/antigravity/mcp_config.json</code></pre></div>



<p class="wp-block-paragraph">ファイル内容は以下としました<br>自分の環境ではnpxにパスを通していなかったため、フルパスで指定しています<br>(npxコマンドの場所は「which npx」コマンドで確認できます)</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>{
  &quot;mcpServers&quot;: {
    &quot;ollama&quot;: {
      &quot;command&quot;: &quot;~/.volta/bin/npx&quot;,
      &quot;args&quot;: [
        &quot;ollama-mcp-server&quot;
      ],
      &quot;env&quot;: {
        &quot;OLLAMA_HOST&quot;: &quot;http://192.168.40.97:11434&quot;
      },
      &quot;disabled&quot;: false
    }
  }
}</code></pre></div>



<p class="wp-block-paragraph">Antigravityを再起動し、MCPサーバー一覧を確認します<br>ollamaが追加されていれば設定は有効になっています</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="986" height="304" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_005.png" alt="" class="wp-image-1374" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_005.png 986w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_005-300x92.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_005-768x237.png 768w" sizes="auto, (max-width: 986px) 100vw, 986px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="480" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_006-1024x480.png" alt="" class="wp-image-1375" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_006-1024x480.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_006-300x141.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_006-768x360.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_006-1536x720.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_006-2048x961.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">最後にAIエージェントのルールを定義して、この場合はGemini、この場合はOllamaというようにケースに応じて使い分けが行われるように定義します</p>



<p class="wp-block-paragraph">以下のディレクトリにファイルをファイルを作成します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>プロジェクトディレクトリ/.agent/rules/ollama-routing.md</code></pre></div>



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



<p class="wp-block-paragraph">ollama-routing.mdの内容は以下のとおりです<br>トリガーは「Always On」としています</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code># Ollama Routing Rules
以下のタスクはOllamaツール（ollama_run または ollama_chat_completion）を使用すること：
- コードのフォーマット・整形
- 単純なリネーム・変数名変更
- コメントの追加
- 簡単な型定義の生成
- ファイル内容の要約
- テストコードの雛形（ボイラープレート）作成
- データ構造の変換（JSONからDataclassなど）
- 簡単な正規表現の作成・解説
- UI文言やドキュメントの簡単な翻訳
- Gitのコミットメッセージ案の生成
- 標準ライブラリ等の基本的な使い方の調査

以下はGemini（自分）が処理すること：
- アーキテクチャ設計
- バグ修正
- 複雑なロジック実装
- コードレビュー</code></pre></div>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="606" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_008-1024x606.png" alt="" class="wp-image-1377" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_008-1024x606.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_008-300x178.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_008-768x455.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_008-1536x909.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_008-2048x1213.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">設定が成功しているか確認する</h2>



<p class="wp-block-paragraph">pythonで以下のようなファイルを作成しました<br>このプログラムにコメントを付けてもらうようにお願いしてみます</p>



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

API_SERVER_URL = &quot;http://192.168.40.97:11434/api/chat&quot;

def main():
    headers = {&quot;Content-Type&quot;: &quot;application/json&quot;}
    
    json = {
        &quot;model&quot;: &quot;gemma4&quot;,
        &quot;messages&quot;: [{
            &quot;role&quot;: &quot;user&quot;,
            &quot;content&quot;: &quot;Hello&quot;,
        }]
    }

    response = requests.post(API_SERVER_URL, headers=headers, json=json)
    
    response.raise_for_status()

    print(response.text)

main()</code></pre></div>



<p class="wp-block-paragraph">実行した結果が以下になります</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="478" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_009-1024x478.png" alt="" class="wp-image-1378" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_009-1024x478.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_009-300x140.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_009-768x359.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_009-1536x717.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_009-2048x957.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">AIからも「Ollamaを使ってコメントを書いた」と報告がありますね</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="719" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_010-1024x719.png" alt="" class="wp-image-1379" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_010-1024x719.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_010-300x211.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_010-768x539.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/20260418_010.png 1378w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">推論を見ても、MCPツールとしてollamaを利用しており、きちんと動作していることがわかります</p>



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



<p class="wp-block-paragraph">以上の設定で、WindowsPCに設定したOllamaを利用して、MacBookProでコーディング支援が受けられることがわかりました<br>これで少しはトークンが削減されることを期待します！</p>



<h2 class="wp-block-heading">参考資料 &amp; 謝辞</h2>



<p class="wp-block-paragraph">この記事は以下の記事を参考に記載しました</p>



<p class="wp-block-paragraph"><a href="https://qiita.com/bonny_d/items/7671bf530d2c23026d6d">Ollama × Antigravity MCP 設定手順</a><br><a href="https://zenn.dev/oyashiro846/articles/797312443fb506">OllamaでローカルLLMを稼働させAPIサーバ化する</a></p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/04/windowspc%e3%81%ab%e5%85%a5%e3%82%8c%e3%81%9follama%e3%82%92macbookpro%e3%81%8b%e3%82%89%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%94%a8mcp%e3%81%a8%e3%81%97%e3%81%a6%e5%88%a9%e7%94%a8/">WindowsPCに入れたOllamaをMacBookProからコーディング用MCPとして利用する</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/04/windowspc%e3%81%ab%e5%85%a5%e3%82%8c%e3%81%9follama%e3%82%92macbookpro%e3%81%8b%e3%82%89%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e7%94%a8mcp%e3%81%a8%e3%81%97%e3%81%a6%e5%88%a9%e7%94%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gemma4をOllamaから利用してみる</title>
		<link>https://sheltie-garage.xyz/tech/2026/04/gemma4%e3%82%92ollama%e3%81%8b%e3%82%89%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/04/gemma4%e3%82%92ollama%e3%81%8b%e3%82%89%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>Sun, 05 Apr 2026 12:11:17 +0000</pubDate>
				<category><![CDATA[AI・機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=1363</guid>

					<description><![CDATA[<p>といっても、正直記事にする必要が無いくらい簡単に利用できます・・・ まずはOllamaをインストール 公式ページからダウンロードしますhttps://ollama.com/ 表示されているコマンドをターミナルに貼り付けて [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/04/gemma4%e3%82%92ollama%e3%81%8b%e3%82%89%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">Gemma4をOllamaから利用してみる</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">まずはOllamaをインストール</h2>



<p class="wp-block-paragraph">公式ページからダウンロードします<br><a href="https://ollama.com/" target="_blank" rel="noreferrer noopener">https://ollama.com/</a></p>



<p class="wp-block-paragraph">表示されているコマンドをターミナルに貼り付けて実行すればollamaがセットアップされます</p>



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



<p class="wp-block-paragraph">Gemma4について、Gemma4自身に聞いてみたら以下の回答が返ってきました</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>君自身について紹介してほしい
Gemma4は誰が作成して、いつ公開されたのか・・</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ご質問ありがとうございます。私自身についてご紹介させていただきますね。&#x2728;

私は**Gemma 4（ジェマ フォー）**という名前の大規模言語モデル（Large Language Model: LLM）です。

&#x1f916; 基本情報
モデル名: Gemma 4
開発元: Google DeepMind（グーグル・ディープマインド）
モデルの性質: 私は「オープンウェイト」モデルとして設計され、研究者や開発者の皆様がより幅広く、責任を持ってAIの技術を活用していただくことを目的として公開されています。
&#x2699; 私の仕組みと得意なこと
私は、膨大な量のテキストデータやコードデータを用いてトレーニングされた結果、人間が使う自然な言葉のパターン、論理的な推論、そしてプログラミングの構造を理解することができます。

具体的には、以下のようなことが可能です。

知識の提供: 幅広いトピックについて、正確で包括的な情報を提供します。
対話: 人間との会話の流れを理解し、自然な会話を続けることができます。
論理的推論: 指示された手順に従って思考し、問題を分解して解決策を導き出すことができます。
コーディング: プログラミングのコード生成、レビュー、デバッグ、最適化を行うことができます。（これはさきほどのプログラミングのお手伝いに活かせる部分です）
&#x1f4c5; 公開について
「いつ公開されたか」という点については、継続的に改良が加えられている最先端の技術基盤の上に成り立っています。私はGoogle DeepMindによって継続的に研究・開発され、その最新の成果として、オープンな形で開発者コミュニティの皆様に提供されています。

要約すると、私はGoogle DeepMindが生み出した、オープンな知性を搭載したAIアシスタントです。

私について何かご不明な点や、試してみたいことはありますか？何でもお気軽にお尋ねください！</code></pre></div>



<p class="wp-block-paragraph">回答内に（これはさきほどのプログラミングのお手伝いに活かせる部分です）とありますが<br>これは事前に「プログラミングできる？」と質問していたからです</p>



<p class="wp-block-paragraph">本題のGemma4のセットアップですが、ollama導入後にプロンプトに以下を入力するだけです</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ollama run gemma4:[利用したいモデルの種類]</code></pre></div>



<p class="wp-block-paragraph">後は自動でモデルのダウンロードが行われ、ダウンロードが終了すればターミナルからでも、GUI画面からでも利用できるようになります</p>



<h2 class="wp-block-heading">早速使ってみる</h2>



<p class="wp-block-paragraph">今回はollamaのGUIから少し使ってみました<br>まずは挨拶から</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="518" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/スクリーンショット-2026-04-05-20.41.57-1024x518.png" alt="" class="wp-image-1364" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/スクリーンショット-2026-04-05-20.41.57-1024x518.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/スクリーンショット-2026-04-05-20.41.57-300x152.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/スクリーンショット-2026-04-05-20.41.57-768x388.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/スクリーンショット-2026-04-05-20.41.57-1536x776.png 1536w, https://sheltie-garage.xyz/tech/wp-content/uploads/2026/04/スクリーンショット-2026-04-05-20.41.57.png 1662w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">無事に実行できました！<br>ちなみに自分が利用しているPCの環境は<br>・MacBookPro 2019年モデル<br>・CPU Intel 2.6GHz<br>・メモリ 16GB<br>ということで、正直AIで遊びにはかなり厳しい環境です・・・</p>



<p class="wp-block-paragraph">ということで今回はエッジデバイス向けの「gemma4:e4b」を使ってます</p>



<p class="wp-block-paragraph">モデルの種類が何種類かありますが<br>・gemma4:e2b、e4b→エッジデバイス向け<br>・gemma4:26b 31b→ワークステーション向け<br>ということで、当然ながらワークステーション向けのほうがベンチマークは良い結果が出力されています</p>



<p class="wp-block-paragraph">お金があれば、26bや31bのモデルも動かしてみたいものです・・・</p>



<h2 class="wp-block-heading">色々応用ができそうなGemma4</h2>



<p class="wp-block-paragraph">ということでGemma4のすごく簡単な紹介でした！<br>個人のPCでも動作可能で、しかも商用利用も可能という、夢が広がるモデルです！</p>



<p class="wp-block-paragraph">個人的には、ChatGPTやClaude が利用制限に引っかかってしまったときの代替モデルとして利用できないかなーと考えたりしています<br>が、PCスペックが貧弱だから厳しいかなぁ・・・</p>



<p class="wp-block-paragraph"></p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2026/04/gemma4%e3%82%92ollama%e3%81%8b%e3%82%89%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">Gemma4をOllamaから利用してみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2026/04/gemma4%e3%82%92ollama%e3%81%8b%e3%82%89%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>
	</channel>
</rss>
