<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>開発ツール on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB/</link>
        <description>Recent content in 開発ツール on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sun, 17 May 2026 12:37:30 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Godot ゲーム開発入門：ノード、シーン、最初の 2D ミニゲームまで</title>
        <link>https://knightli.com/ja/2026/05/17/godot-game-development-beginner-guide/</link>
        <pubDate>Sun, 17 May 2026 12:37:30 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/17/godot-game-development-beginner-guide/</guid>
        <description>&lt;p&gt;Godot はオープンソースのゲームエンジンで、2D ゲーム、インディーゲームのプロトタイプ、中規模 3D プロジェクトに向いています。&lt;/p&gt;
&lt;p&gt;軽量で起動が速く、ノードとシーンの仕組みが分かりやすいのが特徴です。初心者には Unity より入りやすく、個人開発者にも扱いやすいエンジンです。&lt;/p&gt;
&lt;h2 id=&#34;まず結論&#34;&gt;まず結論
&lt;/h2&gt;&lt;p&gt;Godot 入門では、最初から全機能を学ぼうとしないことが大切です。&lt;/p&gt;
&lt;p&gt;おすすめの順序は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まず 2D から始める。&lt;/li&gt;
&lt;li&gt;ノードとシーンを理解する。&lt;/li&gt;
&lt;li&gt;最初は GDScript を使う。&lt;/li&gt;
&lt;li&gt;開始、失敗、リスタートがある小さなゲームを作る。&lt;/li&gt;
&lt;li&gt;その後でアニメーション、音、UI、ステージ、エクスポートを足す。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;小さなゲームを 1 本完成させる方が、断片的なチュートリアルを大量に見るより効果的です。&lt;/p&gt;
&lt;h2 id=&#34;godot-に向いている人&#34;&gt;Godot に向いている人
&lt;/h2&gt;&lt;p&gt;Godot は、ゲーム開発をゼロから学びたい人、2D インディーゲームを作りたい人、すばやくプロトタイプを作りたい人、大きな商用エンジンの複雑なワークフローを避けたい人に向いています。&lt;/p&gt;
&lt;p&gt;大型商用パイプライン、豊富なアセットストア、モバイル広告 SDK、高品質 3D 表現が必要なら Unity や Unreal の方が成熟しています。ただし学習と個人制作には Godot で十分です。&lt;/p&gt;
&lt;h2 id=&#34;インストールとプロジェクト作成&#34;&gt;インストールとプロジェクト作成
&lt;/h2&gt;&lt;p&gt;Godot は公式サイトからダウンロードし、解凍して実行するだけです。&lt;/p&gt;
&lt;p&gt;最初のプロジェクトでは、デフォルト renderer、英語名、シンプルなパス、Git 管理をおすすめします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;first-godot-game
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;エディタでは Scene、FileSystem、Inspector、Script、2D / 3D ビューをまず覚えます。&lt;/p&gt;
&lt;h2 id=&#34;ノードとシーン&#34;&gt;ノードとシーン
&lt;/h2&gt;&lt;p&gt;Godot の中心概念はノードとシーンです。&lt;/p&gt;
&lt;p&gt;代表的なノード：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Node2D&lt;/code&gt;：2D オブジェクトの基礎。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sprite2D&lt;/code&gt;：画像表示。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CollisionShape2D&lt;/code&gt;：衝突形状。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CharacterBody2D&lt;/code&gt;：操作可能なキャラクター。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Camera2D&lt;/code&gt;：2D カメラ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AudioStreamPlayer&lt;/code&gt;：音声再生。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Label&lt;/code&gt;：文字表示。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;シーンはノードの組み合わせです。プレイヤー、敵、ステージをそれぞれシーンにできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Player (CharacterBody2D)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── Sprite2D
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CollisionShape2D
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── Camera2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;最初に作るゲーム&#34;&gt;最初に作るゲーム
&lt;/h2&gt;&lt;p&gt;最初から RPG、オープンワールド、オンラインゲームを作らない方がよいです。&lt;/p&gt;
&lt;p&gt;おすすめは 2D 回避ゲームです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プレイヤーが上下左右に動く。&lt;/li&gt;
&lt;li&gt;敵が画面端から出る。&lt;/li&gt;
&lt;li&gt;敵に触れると失敗。&lt;/li&gt;
&lt;li&gt;生存時間がスコア。&lt;/li&gt;
&lt;li&gt;開始画面、ゲームオーバー、リスタートがある。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これだけで入力、移動、衝突、生成、UI、Timer、音、シーン再読み込みを学べます。&lt;/p&gt;
&lt;h2 id=&#34;プレイヤー移動&#34;&gt;プレイヤー移動
&lt;/h2&gt;&lt;p&gt;プレイヤーには &lt;code&gt;CharacterBody2D&lt;/code&gt; を使います。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;extends&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;CharacterBody2D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@export&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;speed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;300.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;_physics_process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;delta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;direction&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Vector2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ZERO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;direction&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Input&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;get_axis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;move_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;move_right&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;direction&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Input&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;get_axis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;move_up&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;move_down&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;direction&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;direction&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;normalized&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;velocity&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;direction&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;speed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;move_and_slide&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;入力 action：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;move_left  -&amp;gt; A / Left
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;move_right -&amp;gt; D / Right
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;move_up    -&amp;gt; W / Up
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;move_down  -&amp;gt; S / Down
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;キーコードを直接書かず、action を使うとゲームパッドやキー変更に対応しやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;衝突と物理&#34;&gt;衝突と物理
&lt;/h2&gt;&lt;p&gt;よく使うノード：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CollisionShape2D&lt;/code&gt;：衝突範囲。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Area2D&lt;/code&gt;：重なり検出。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CharacterBody2D&lt;/code&gt;：操作キャラクター。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RigidBody2D&lt;/code&gt;：物理で動く物体。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;StaticBody2D&lt;/code&gt;：壁や地面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自分で移動を制御するなら &lt;code&gt;CharacterBody2D&lt;/code&gt;、接触検出だけなら &lt;code&gt;Area2D&lt;/code&gt; が分かりやすいです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;_on_body_entered&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Player&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nf&#34;&gt;get_tree&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;reload_current_scene&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;敵の生成&#34;&gt;敵の生成
&lt;/h2&gt;&lt;p&gt;シーンは prefab のように実体化できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@export&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enemy_scene&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;PackedScene&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;spawn_enemy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enemy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enemy_scene&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;instantiate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;enemy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;position&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Vector2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;800&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;randf_range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;550&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nf&#34;&gt;add_child&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enemy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;Timer&lt;/code&gt; と組み合わせれば、一定間隔で敵を生成できます。&lt;/p&gt;
&lt;h2 id=&#34;uiスコア音&#34;&gt;UI、スコア、音
&lt;/h2&gt;&lt;p&gt;UI は &lt;code&gt;Control&lt;/code&gt; 系ノードを使います。&lt;code&gt;CanvasLayer&lt;/code&gt;、&lt;code&gt;Label&lt;/code&gt;、&lt;code&gt;Button&lt;/code&gt;、&lt;code&gt;Panel&lt;/code&gt; がよく使われます。&lt;/p&gt;
&lt;p&gt;スコア例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;score&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;_process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;delta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;score&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;delta&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;$CanvasLayer/ScoreLabel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;score&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;音は &lt;code&gt;AudioStreamPlayer&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript&#34; data-lang=&#34;gdscript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;$HitSound&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;play&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ゲームは機能だけでなく、音、点滅、揺れ、ボタン状態などの反応で気持ちよくなります。&lt;/p&gt;
&lt;h2 id=&#34;プロジェクト構成&#34;&gt;プロジェクト構成
&lt;/h2&gt;&lt;p&gt;最初から整理しておくと楽です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;res://
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── scenes/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── assets/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── ui/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;シーン、スクリプト、画像・音声、UI を分けておきます。&lt;/p&gt;
&lt;h2 id=&#34;よくある失敗&#34;&gt;よくある失敗
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ノード種類を間違える。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CollisionShape2D&lt;/code&gt; を忘れる。&lt;/li&gt;
&lt;li&gt;キーを直接書く。&lt;/li&gt;
&lt;li&gt;すべてを &lt;code&gt;Main.gd&lt;/code&gt; に詰め込む。&lt;/li&gt;
&lt;li&gt;最初のゲームを大きくしすぎる。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;小さくても完成したゲームの方が、途中で止まった大作より価値があります。&lt;/p&gt;
&lt;h2 id=&#34;学習順序&#34;&gt;学習順序
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;エディタ基本操作。&lt;/li&gt;
&lt;li&gt;ノードとシーン。&lt;/li&gt;
&lt;li&gt;GDScript。&lt;/li&gt;
&lt;li&gt;入力 action。&lt;/li&gt;
&lt;li&gt;2D 移動。&lt;/li&gt;
&lt;li&gt;衝突と &lt;code&gt;Area2D&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Timer&lt;/code&gt; と生成。&lt;/li&gt;
&lt;li&gt;UI とスコア。&lt;/li&gt;
&lt;li&gt;音とアニメーション。&lt;/li&gt;
&lt;li&gt;デスクトップまたは Web へのエクスポート。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Godot 入門の鍵は、全機能を覚えることではなく、ゲームの組み立て方を理解することです。ノードがシーンを作り、シーンがゲームを作り、スクリプトが動作を与え、シグナルがイベントをつなぎます。&lt;/p&gt;
&lt;p&gt;まずは 2D ミニゲームを完成させましょう。移動、衝突、UI、音、リスタートまでできれば、次に TileMap、セーブ、状態機械、3D、Shader、エクスポート最適化へ進めます。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-TUI：DeepSeek V4をターミナル上のコーディングAgentにする</title>
        <link>https://knightli.com/ja/2026/05/16/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Sat, 16 May 2026 22:41:41 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/16/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI&lt;/a&gt; は、DeepSeek V4をターミナル開発フローに接続するオープンソースプロジェクトです。単なるチャットの外枠ではありません。Claude CodeやCodex CLIに近い「コマンドラインのコーディングAgent」であり、ファイルを読み、コードを編集し、コマンドを実行し、ツールを呼び出し、TUI上でタスクを継続的に進められます。&lt;/p&gt;
&lt;p&gt;すでにエディタとターミナルを行き来している開発者にとって、この種のツールの価値は分かりやすいものです。コードをWebチャットへ何度もコピーする必要がなく、プロジェクト構造を毎回手で説明する必要もありません。タスクを渡せば、現在のワークスペースからコンテキストを読み取り、手順を計画し、変更を実行し、結果をレビュー用に返してくれます。&lt;/p&gt;
&lt;h2 id=&#34;deepseekの利用入口を補う&#34;&gt;DeepSeekの利用入口を補う
&lt;/h2&gt;&lt;p&gt;DeepSeekモデル自体は強い推論能力とコード能力を持っています。ただし、その能力を実際の開発フローに落とし込むには、工程化された外側のレイヤーが必要です。&lt;/p&gt;
&lt;p&gt;Webチャットは質問には向いていますが、長時間のプロジェクト編集には向いていません。APIはシステム連携には向いていますが、個人開発者はツール呼び出し、コンテキスト管理、ファイル操作、権限制御を自分で組む必要があります。DeepSeek-TUIが補おうとしているのはこの層です。DeepSeek V4を、ターミナル内で働けるAgentとして包みます。&lt;/p&gt;
&lt;p&gt;プロジェクト説明によると、主な機能は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ターミナルTUI;&lt;/li&gt;
&lt;li&gt;DeepSeek V4向けの会話とタスク実行;&lt;/li&gt;
&lt;li&gt;ツール呼び出しとファイル操作;&lt;/li&gt;
&lt;li&gt;1Mコンテキスト対応;&lt;/li&gt;
&lt;li&gt;Autoモード;&lt;/li&gt;
&lt;li&gt;サブAgent;&lt;/li&gt;
&lt;li&gt;サンドボックス実行;&lt;/li&gt;
&lt;li&gt;永続タスクキュー。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの機能の目的は、モデルの返答をより人間らしくすることではありません。モデルを開発現場に入りやすくすることです。&lt;/p&gt;
&lt;h2 id=&#34;長いタスクには純粋なcliよりtuiが向いている&#34;&gt;長いタスクには純粋なCLIよりTUIが向いている
&lt;/h2&gt;&lt;p&gt;多くのAI CLIツールは、最初はプレーンテキストの対話から始まります。プロンプトを入力し、出力を待ち、コマンドをコピーしたり追加コンテキストを渡したりする方式です。これは単純ですが、タスクが長くなるとすぐ混乱します。&lt;/p&gt;
&lt;p&gt;TUIの利点は、会話、ファイル、実行結果、タスク状態をより安定した画面に置けることです。コーディングAgentではこれが重要です。1つのコードタスクは、単なる一問一答ではないからです。多くの場合、次の流れを含みます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;プロジェクト構造を理解する。&lt;/li&gt;
&lt;li&gt;関連ファイルを探す。&lt;/li&gt;
&lt;li&gt;コードを変更する。&lt;/li&gt;
&lt;li&gt;テストやコマンドを実行する。&lt;/li&gt;
&lt;li&gt;エラーに基づいて修正を続ける。&lt;/li&gt;
&lt;li&gt;変更内容をまとめる。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;画面がログの羅列だけだと、ユーザーはAgentが今どこまで進んだのかを判断しにくくなります。TUIは少なくとも、観察し、必要なら引き継ぐための入口を提供します。&lt;/p&gt;
&lt;h2 id=&#34;autoモードは境界が明確なタスクに向く&#34;&gt;Autoモードは境界が明確なタスクに向く
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUIが言及しているAutoモードは、境界が比較的明確な作業に向いています。たとえば小さなバグ修正、スクリプト追加、設定変更、文書整理、局所的な機能実装です。&lt;/p&gt;
&lt;p&gt;こうしたタスクには共通点があります。目標が明確で、確認方法も明確で、影響範囲が制御できます。Agentは自分でファイルを調べ、編集し、コマンドを実行し、結果をユーザー確認に戻せます。&lt;/p&gt;
&lt;p&gt;ただし、Autoモードは無制限の権限ではありません。実際のプロジェクトでは、ファイル削除、大規模リファクタリング、データベース移行、デプロイコマンドには明確な確認が必要です。コーディングAgentの効率は自動化から生まれますが、リスクも同じ場所から生まれます。コマンドを実行できるツールほど、サンドボックス、権限境界、人間によるレビューが必要です。&lt;/p&gt;
&lt;h2 id=&#34;サブagentの意味はタスク分割にある&#34;&gt;サブAgentの意味はタスク分割にある
&lt;/h2&gt;&lt;p&gt;サブAgentは新しい概念ではありませんが、コード作業では役に立ちます。&lt;/p&gt;
&lt;p&gt;少し複雑なタスクでは、複数の種類の作業が同時に必要になります。コードを読む役、実装を変更する役、テストを確認する役、ドキュメントを整理する役です。従来のマルチAgentシステムが派手に見えるだけで終わりがちなのは、実際のツールやワークスペースを持たず、会話の中で相談しているだけだからです。&lt;/p&gt;
&lt;p&gt;サブAgentがファイルシステム、コマンド実行、タスクキューと結びつけば、より現実的なタスク分割の仕組みになります。たとえば、あるサブAgentが依存関係を分析し、別のサブAgentが特定モジュールを変更し、メインAgentが結果を統合する、といった形です。これにより、1つのコンテキストに無関係な情報を詰め込みすぎる問題を減らせます。&lt;/p&gt;
&lt;p&gt;もちろん、サブAgentには追加コストもあります。token消費、複雑な状態、追跡しにくい責任境界です。そのため、中程度以上の複雑さを持つタスクに向いており、すべての小さな修正に必要なものではありません。&lt;/p&gt;
&lt;h2 id=&#34;1mコンテキストは万能ではないがプロジェクト理解には役立つ&#34;&gt;1Mコンテキストは万能ではないが、プロジェクト理解には役立つ
&lt;/h2&gt;&lt;p&gt;1Mコンテキストは大げさに聞こえますが、コーディングでは単なる宣伝文句ではありません。&lt;/p&gt;
&lt;p&gt;実際のコードベースのコンテキストは細かく分散しています。README、設定ファイル、型定義、テスト、呼び出しチェーン、過去の約束事、エラーログは、どれも1つの修正に影響します。長いコンテキストは、局所だけを見て手を動かす問題を減らし、モデルがより多くのプロジェクト制約を保持する助けになります。&lt;/p&gt;
&lt;p&gt;ただし、コンテキストが長いことは判断が正しいことと同義ではありません。コードタスクには依然として検索、選別、検証が必要です。プロジェクト全体をコンテキストに詰め込むことが、関連ファイルを正確に読むことより良いとは限りません。良いコーディングAgentは、長いコンテキストをバッファとして使うべきであり、エンジニアリング判断の代替にすべきではありません。&lt;/p&gt;
&lt;h2 id=&#34;向いているユーザー&#34;&gt;向いているユーザー
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUIは次のような人に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ターミナルでDeepSeekを使ってコード作業をしたい開発者。&lt;/li&gt;
&lt;li&gt;ツール呼び出しやファイル操作の枠組みを自分で作りたくない人。&lt;/li&gt;
&lt;li&gt;Claude CodeやCodex CLIに慣れており、DeepSeekモデルの入口も試したい人。&lt;/li&gt;
&lt;li&gt;Web上のコード断片ではなく、ローカルプロジェクトのコンテキストが必要な人。&lt;/li&gt;
&lt;li&gt;AIコーディングの流れをコマンドライン環境に入れたい人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たまに関数の書き方を聞くだけなら、Webチャットで十分です。モデルに直接プロジェクト変更へ参加してほしいなら、ターミナルAgentの意味が大きくなります。&lt;/p&gt;
&lt;h2 id=&#34;注意すべきリスク&#34;&gt;注意すべきリスク
&lt;/h2&gt;&lt;p&gt;この種のツールで特に注意すべきことは3つあります。&lt;/p&gt;
&lt;p&gt;1つ目は権限です。ツールがファイルを読み書きし、コマンドを実行できるなら、デフォルトでどこにアクセスできるのか、ファイルを削除できるのか、ネットワークに出られるのか、危険なコマンドに確認が必要なのかを把握する必要があります。&lt;/p&gt;
&lt;p&gt;2つ目はロールバックです。使う前にGitの作業ツリーをきれいにしておくと、Agentの変更を毎回 &lt;code&gt;git diff&lt;/code&gt; で明確に確認できます。未コミットの変更が大量にある状態で、Agentに自動編集させるべきではありません。&lt;/p&gt;
&lt;p&gt;3つ目は検証です。Agentがコードを書いたことは、タスク完了を意味しません。テスト、ビルド、lint、人間のreviewは残す必要があります。AIコーディングツールは進行を速めますが、最後のエンジニアリング確認を置き換えるものではありません。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUIの意味は、また1つチャットクライアントが増えたことではありません。DeepSeek V4を、実際の開発作業に近いターミナル環境へ入れていることです。&lt;/p&gt;
&lt;p&gt;開発者にとって、モデル能力は最初の一歩にすぎません。本当に体験を左右するのは、プロジェクトを読めるか、安全にファイルを変更できるか、検証コマンドを実行できるか、長いタスクで状態を保てるか、ユーザーがいつでも引き継げるかです。&lt;/p&gt;
&lt;p&gt;DeepSeekを日常的なコード変更、プロジェクト読解、自動化された開発タスクに使いたいなら、DeepSeek-TUIは注目に値します。方向性も明確です。AIコーディングツールは「コードの質問に答える」段階から「プロジェクト実行に参加する」段階へ進んでいます。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ghostty ドキュメント速読：インストール、設定、日常利用の要点</title>
        <link>https://knightli.com/ja/2026/05/15/ghostty-docs-install-config-usage-guide/</link>
        <pubDate>Fri, 15 May 2026 14:50:11 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/15/ghostty-docs-install-config-usage-guide/</guid>
        <description>&lt;p&gt;Ghostty は新しいターミナルエミュレーターだが、単に「また一つ速いターミナル」が増えたという話ではない。公式ドキュメントによると、Ghostty は速度、機能、ネイティブなデスクトップ体験の三つを同時に満たそうとしている。つまり、GPU アクセラレーションと良好なレンダリング性能を目指しつつ、macOS と Linux ではできるだけ本物のローカルアプリのように振る舞い、すべての操作を独自描画 UI に押し込まない設計を目指している。&lt;/p&gt;
&lt;p&gt;iTerm2、Kitty、Alacritty、WezTerm、あるいは OS 標準のターミナルを使っているなら、Ghostty で最も注目すべき点は単一の機能ではない。「すぐ使えること」と「深く設定できること」を同時に備えている点だ。デフォルト設定でもすぐ使える一方、さらに調整したくなったときには、設定ファイル、テーマ、キーバインド、フォント、Shell 統合、ターミナル制御シーケンスまで、公式ドキュメントが一通りの入口を用意している。&lt;/p&gt;
&lt;h2 id=&#34;まず位置づけを見る&#34;&gt;まず位置づけを見る
&lt;/h2&gt;&lt;p&gt;Ghostty の中核的な位置づけは、次の三点にまとめられる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クロスプラットフォームなターミナルエミュレーターで、現時点では macOS と Linux に重点を置いている。&lt;/li&gt;
&lt;li&gt;プラットフォームネイティブ UI を使う。macOS 版は Swift、AppKit、SwiftUI、Linux 版は Zig と GTK4 を使う。&lt;/li&gt;
&lt;li&gt;ターミナルの中核は &lt;code&gt;libghostty&lt;/code&gt; で、GUI アプリはこの共有コアを中心に構築されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この設計は日常体験に影響する。タブ、分割、エラーメッセージ、ウィンドウ状態の復元、システムショートカットなどは、単に「デスクトップアプリらしく見える部品」として作られているのではなく、各 OS の操作習慣にできるだけ近づけられている。macOS と Linux のデフォルトショートカットも、それぞれのプラットフォーム慣習に合わせて分けられている。&lt;/p&gt;
&lt;h2 id=&#34;インストールmacos-は直接的linux-はディストリビューション次第&#34;&gt;インストール：macOS は直接的、Linux はディストリビューション次第
&lt;/h2&gt;&lt;p&gt;公式のプリビルドバイナリは主に macOS 向けだ。もっとも一般的な方法は &lt;code&gt;.dmg&lt;/code&gt; をダウンロードし、開いたあと Ghostty を Applications ディレクトリにドラッグすること。Homebrew ユーザーは、コミュニティが管理する cask も利用できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --cask ghostty
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux はより分散している。Ghostty のドキュメントでは、ディストリビューションごとのパッケージマネージャー、コミュニティバイナリ、ソースビルドが分けて説明されている。Arch、Alpine、Gentoo、NixOS、Snap、Solus、Void などにはそれぞれの経路がある。公式または信頼できるリポジトリがない場合、ドキュメントは第三者バイナリを気軽に入れるより、ソースからビルドする方向を勧めている。&lt;/p&gt;
&lt;p&gt;これはサーバーや作業用マシンでは特に重要だ。ターミナルエミュレーターは大量の入出力、クリップボード、リンク、SSH セッション、ローカルファイルパスを扱う。インストール元は保守的に選び、公式 macOS パッケージ、ディストリビューションのリポジトリ、自分で出所を確認できるビルド手順を優先したい。&lt;/p&gt;
&lt;h2 id=&#34;設定いきなり大きな-dotfiles-をコピーしない&#34;&gt;設定：いきなり大きな dotfiles をコピーしない
&lt;/h2&gt;&lt;p&gt;Ghostty の設定哲学は「ゼロ設定で使えること」だ。デフォルトフォントには JetBrains Mono が含まれ、Nerd Font もサポートされるため、多くのユーザーは最初に起動した時点で普通に作業できる。ドキュメントでは、主観的ではない設定を変えないと快適でない場合、それはデフォルト動作にすべきではないかと考えることさえ勧めている。&lt;/p&gt;
&lt;p&gt;本当にカスタマイズが必要な場合、Ghostty はテキスト設定ファイルを使う。現在の設定ファイル名は &lt;code&gt;config.ghostty&lt;/code&gt; で、旧バージョンでは &lt;code&gt;config&lt;/code&gt; もサポートされる。代表的なパスは次の通り。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$XDG_CONFIG_HOME/ghostty/config.ghostty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$XDG_CONFIG_HOME/ghostty/config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/.config/ghostty/config.ghostty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/.config/ghostty/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;macOS では次の場所も読み込まれる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/Library/Application Support/com.mitchellh.ghostty/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;設定構文はとても直接的で、&lt;code&gt;key = value&lt;/code&gt; という形だ。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;font-family = JetBrains Mono
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;font-size = 14
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;theme = light:Rose Pine Dawn,dark:Rose Pine
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;keybind = ctrl+shift+t=new_tab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;実用的な勧めとして、最初から他人の完全な設定をコピーしない方がよい。まず数日そのまま使い、最初はフォント、フォントサイズ、テーマの三つだけを変える。キーバインド、分割、ウィンドウ、Shell 統合で実際に摩擦を感じてから、必要な設定を一つずつ足していく方が安定する。&lt;/p&gt;
&lt;h2 id=&#34;ドキュメント検索ローカルでも完全な設定を確認できる&#34;&gt;ドキュメント検索：ローカルでも完全な設定を確認できる
&lt;/h2&gt;&lt;p&gt;Ghostty には多くの設定項目があり、公式ドキュメントでは Option Reference にまとめられている。Web ページだけでなく、インストール後はローカルからも設定リファレンスを確認できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +show-config --default --docs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;このコマンドはデフォルト設定とドキュメントを標準出力に出すため、ページャーにつなぐと検索しやすい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +show-config --default --docs &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; less
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;利用可能なフォントを見るには次を使う。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +list-fonts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;内蔵テーマと利用可能なテーマを見るには次を使う。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +list-themes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;デフォルトキーバインドを見るには次を使う。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +list-keybinds --default
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらのコマンドは、Web 上の断片をコピーするより信頼しやすい。自分が実際にインストールしている Ghostty のバージョンから出力されるからだ。&lt;/p&gt;
&lt;h2 id=&#34;キーバインドアクションを中心に考える&#34;&gt;キーバインド：「アクション」を中心に考える
&lt;/h2&gt;&lt;p&gt;Ghostty のキーバインド設定形式は次の通り。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;keybind = trigger=action
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;trigger&lt;/code&gt; はキー入力のトリガーで、&lt;code&gt;action&lt;/code&gt; は Ghostty が実行する動作だ。新しいタブを作る、現在の surface を閉じる、設定を再読み込みする、プロンプトへジャンプする、といったものはすべて action になる。このモデルはわかりやすい。何かのメニュー項目を変更しているのではなく、入力シーケンスを一つの動作に紐づけている。&lt;/p&gt;
&lt;p&gt;設定を変更した後は、実行中に再読み込みできる。デフォルトショートカットは次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux：&lt;code&gt;ctrl+shift+,&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS：&lt;code&gt;cmd+shift+,&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ただし、すべての設定が即時反映されるわけではない。新しく作るターミナルにだけ影響するものもあれば、完全な再起動が必要なものもある。「設定を書いたのに変わらない」と感じたら、構文を疑い続ける前に、その項目の説明を確認した方が早い。&lt;/p&gt;
&lt;h2 id=&#34;テーマとフォントまず内蔵を使いその後で微調整する&#34;&gt;テーマとフォント：まず内蔵を使い、その後で微調整する
&lt;/h2&gt;&lt;p&gt;Ghostty は多数のテーマを同梱しており、システムのライトモード、ダークモードに応じて別テーマへ切り替えることもできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;theme = light:Rose Pine Dawn,dark:Rose Pine
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;テーマはカスタムファイルから読み込むこともできる。ドキュメントの注意は明確だ。テーマファイルは本質的には Ghostty の設定ファイルであり、多くの設定項目を指定できるため、信頼できない出所のテーマを安易に使うべきではない。&lt;/p&gt;
&lt;p&gt;フォントについては、&lt;code&gt;font-family&lt;/code&gt; を複数回指定して fallback フォントを設定できる。多言語環境では便利で、主フォントに英字や記号を担当させ、後続のフォントで中国語、日本語、その他の文字を補える。emoji、太字、斜体、リガチャなどの細部で問題が出たら、Option Reference で対応する項目を確認すればよい。&lt;/p&gt;
&lt;h2 id=&#34;shell-統合ssh-ユーザーは特に確認したい&#34;&gt;Shell 統合：SSH ユーザーは特に確認したい
&lt;/h2&gt;&lt;p&gt;Ghostty は &lt;code&gt;bash&lt;/code&gt;、&lt;code&gt;elvish&lt;/code&gt;、&lt;code&gt;fish&lt;/code&gt;、&lt;code&gt;nushell&lt;/code&gt;、&lt;code&gt;zsh&lt;/code&gt; 向けに shell integration を自動注入できる。有効にすると、いくつかの体験が自然になる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新しいターミナルを前のターミナルの作業ディレクトリから開ける。&lt;/li&gt;
&lt;li&gt;複雑なプロンプトが resize 時に誤って回り込まず、再描画される。&lt;/li&gt;
&lt;li&gt;プロンプトマーカーを使ってコマンド出力の間を移動できる。&lt;/li&gt;
&lt;li&gt;プロンプト上で、編集習慣に合ったカーソル挙動が使える。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自動注入したくない場合は、設定で無効にできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shell-integration = none
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;さらに注意したいのは SSH だ。Ghostty は &lt;code&gt;TERM&lt;/code&gt; として &lt;code&gt;xterm-ghostty&lt;/code&gt; を使うが、多くのリモートホストにはまだ対応する terminfo がない。ドキュメントでは &lt;code&gt;ssh-env&lt;/code&gt; と &lt;code&gt;ssh-terminfo&lt;/code&gt; という二つの shell integration 機能が用意されており、デフォルトでは無効だが必要に応じて有効化できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shell-integration-features = ssh-env,ssh-terminfo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;古いサーバー、コンテナ、踏み台、厳格に管理された本番環境へよく接続するなら、これらを有効にする前に公式の Terminfo と Shell Integration ドキュメントを読んでおきたい。ターミナル能力のネゴシエーションは地味だが、問題が起きると色の異常、ショートカットの不具合、全画面プログラムの表示崩れとして現れることがある。&lt;/p&gt;
&lt;h2 id=&#34;私の試し方&#34;&gt;私の試し方
&lt;/h2&gt;&lt;p&gt;Ghostty が自分に合うかだけを判断したいなら、次の順で試すとよい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;インストール後、設定を書かずに一日そのまま使う。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;font-family&lt;/code&gt;、&lt;code&gt;font-size&lt;/code&gt;、&lt;code&gt;theme&lt;/code&gt; だけを調整する。&lt;/li&gt;
&lt;li&gt;まず他人のショートカット表を取り込むのではなく、&lt;code&gt;ghostty +list-keybinds --default&lt;/code&gt; でデフォルトを確認する。&lt;/li&gt;
&lt;li&gt;SSH をよく使うなら、リモートホストの terminfo 互換性を先に確認する。&lt;/li&gt;
&lt;li&gt;最後に分割、ウィンドウ、透明度、タイトルバー、背景画像などの見た目やワークフローの好みを調整する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ghostty のドキュメントはかなりエンジニアリング寄りで、「宣伝ページ」ではなく「設定リファレンスマニュアル」として読むのに向いている。多くのユーザーにとって、本当の判断基準は単純だ。デフォルト体験がすでに快適か、日常のエディタ、Shell、SSH、tmux、Zellij が安定しているか。このあたりがうまくいくなら、Ghostty は長期的なターミナル候補に入れる価値がある。&lt;/p&gt;
&lt;h2 id=&#34;参考リンク&#34;&gt;参考リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ghostty Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/about&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;About Ghostty&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/config&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/config/keybind&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Custom Keybindings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/install/binary&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prebuilt Ghostty Binaries and Packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/features/shell-integration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Shell Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex vs Claude Code：2 つの Subagent 設計をどう選ぶか</title>
        <link>https://knightli.com/ja/2026/05/08/codex-vs-claude-code-subagent-design/</link>
        <pubDate>Fri, 08 May 2026 14:14:01 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/codex-vs-claude-code-subagent-design/</guid>
        <description>&lt;p&gt;AI コーディングツールでは Subagent が重要になっています。これは流行りの機能ではなく、単一 Agent が実際の開発タスクを抱え込むと限界に当たりやすいからです。&lt;/p&gt;
&lt;p&gt;1 つの Agent がコードを読み、ログを確認し、実装を変更し、テストを実行し、エラーを分析し、結果をまとめると、main context はすぐ汚れます。検索結果、コマンド出力、テストログ、中間推論が混ざり、後の判断が不安定になります。探索、実装、検証、レビューを 1 本の main thread に押し込むため、並行処理もしづらくなります。&lt;/p&gt;
&lt;p&gt;Subagent の本質は Agent の負荷を下げることです。main session はすべてを最後まで行うのではなく、目標を決め、タスクを割り当て、結果を受け取り、最終回答へ統合する coordinator になります。Subagent は探索、実装、検証、レビューなど局所的な仕事を処理し、圧縮した結論を返します。&lt;/p&gt;
&lt;p&gt;つまり Subagent は「もう 1 人の自分」ではなく、絡み合った開発作業を明確な役割に分ける仕組みです。&lt;/p&gt;
&lt;h2 id=&#34;共通する土台&#34;&gt;共通する土台
&lt;/h2&gt;&lt;p&gt;成熟した Subagent system には通常、次の要素が必要です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Context isolation。&lt;/li&gt;
&lt;li&gt;Role specialization。&lt;/li&gt;
&lt;li&gt;Project/user level configuration。&lt;/li&gt;
&lt;li&gt;Tool and permission boundaries。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Context isolation は前提です。実際のリポジトリでは、検索結果、テストログ、コマンド出力など中間情報が大量に出ます。これをすべて main session に入れると main thread が乱れます。Subagent は局所的な過程を先に消化し、判断に必要な signal だけを返します。&lt;/p&gt;
&lt;p&gt;Role specialization も重要です。複数 Agent とは同じモデルを複数起動することではありません。探索役は検索、読解、要約に強くあるべきです。実装役はコード変更に集中します。検証役はチェックを実行し、リスクを見つけ、結果を明確に報告します。&lt;/p&gt;
&lt;p&gt;Tool と permission の境界は安全性を決めます。Subagent が main session の全能力を自動継承すべきではありません。読み取り専用の explorer に書き込み権限は不要です。verifier が実装を変更する必要もありません。&lt;/p&gt;
&lt;p&gt;Codex と Claude Code はこの問題意識を共有しつつ、異なる道を取っています。&lt;/p&gt;
&lt;h2 id=&#34;codex明示的な委任&#34;&gt;Codex：明示的な委任
&lt;/h2&gt;&lt;p&gt;Codex の Subagent 設計は抑制的です。&lt;/p&gt;
&lt;p&gt;現在の main session を中心に、制御された軽量な分業機構を提供します。いつ委任するか、誰に渡すか、いつ結果を受け取るかは明示的な判断です。制御フローは現在のタスクに残ります。&lt;/p&gt;
&lt;p&gt;特徴は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;main session が明示的に subtask を委任する。&lt;/li&gt;
&lt;li&gt;role set は小さく保たれる。&lt;/li&gt;
&lt;li&gt;main session は誰が何をしているか把握できる。&lt;/li&gt;
&lt;li&gt;結果は main line に戻ってから判断される。&lt;/li&gt;
&lt;li&gt;協作境界が透明。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは手動 orchestration、予測可能性、実行の確定性を重視するチームに向いています。explorer に call chain を調べさせ、worker に限定的な変更を任せ、main session が結果を統合して次のテストを判断できます。&lt;/p&gt;
&lt;p&gt;一方で、分割、委任、回収、統合の負荷は main session に残ります。軽量な協作には心地よいですが、長期的で複雑な workflow では重くなることがあります。&lt;/p&gt;
&lt;h2 id=&#34;claude-codeagent-を-workstations-として扱う&#34;&gt;Claude Code：Agent を workstations として扱う
&lt;/h2&gt;&lt;p&gt;Claude Code はより platform 的です。&lt;/p&gt;
&lt;p&gt;Agent を、説明可能、選択可能、設定可能、記憶可能、隔離可能、background 実行可能な正式な object として扱います。Subagent は会話中の一時的な helper ではなく、開発システムの workstation に近い存在です。&lt;/p&gt;
&lt;p&gt;Agent list、use case、description、tool boundary をモデルに渡し、モデル自身がその turn に適した role を選ぶことができます。これにより委任はより自動化されます。&lt;/p&gt;
&lt;p&gt;この方向性を支える要素はいくつかあります。&lt;/p&gt;
&lt;p&gt;第一に role system。explorer、planner、general-purpose、verifier などの role が用途説明、tool restriction、default model、runtime condition を持てます。read-only explorer は編集できず、planner は設計に集中し、verifier は検証に集中します。&lt;/p&gt;
&lt;p&gt;第二に inheritance と override。Subagent は完全に自由ではありません。main session の大きな境界を継承しつつ、許可された範囲で局所的に振る舞いを調整します。&lt;/p&gt;
&lt;p&gt;第三に memory。memory は単に少し覚えることではなく、scope を持ちます。user memory は長期的な好み、project memory はリポジトリ背景、local memory は現在環境の状態です。&lt;/p&gt;
&lt;p&gt;第四に background work と worktree isolation。検証 task は background で走り続けることができ、main thread は待ち続けなくて済みます。強い隔離が必要なときは別 worktree で作業できます。&lt;/p&gt;
&lt;p&gt;第五に plugin ecosystem。Agent を first-class object と見るなら、配布、インストール、優先順位、override、安全境界を考える必要があります。plugin agent は入れられますが、permission mode、hooks、MCP servers など高リスク領域は制限されるべきです。&lt;/p&gt;
&lt;p&gt;これにより Claude Code は単発 session の協作ツールではなく、Agent runtime に近く見えます。&lt;/p&gt;
&lt;h2 id=&#34;違い&#34;&gt;違い
&lt;/h2&gt;&lt;p&gt;Codex は制御された分業ツールに近いです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明示的な委任。&lt;/li&gt;
&lt;li&gt;軽量な role set。&lt;/li&gt;
&lt;li&gt;明確な制御フロー。&lt;/li&gt;
&lt;li&gt;現在 session 中心の subtask。&lt;/li&gt;
&lt;li&gt;人が orchestration する確定的な作業に向く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code は engineering workstation system に近いです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent が正式に model 化される。&lt;/li&gt;
&lt;li&gt;role が体系化される。&lt;/li&gt;
&lt;li&gt;memory、background、isolation、plugin が runtime に含まれる。&lt;/li&gt;
&lt;li&gt;モデルが role 選択に関与できる。&lt;/li&gt;
&lt;li&gt;長期 project や platform 的 workflow に向く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;問題は機能数ではありません。Subagent を「自分が明示的に呼ぶ helper」と見るか、「system に長期存在する workstation」と見るかです。&lt;/p&gt;
&lt;h2 id=&#34;選び方&#34;&gt;選び方
&lt;/h2&gt;&lt;p&gt;明示的な制御、軽量な分業、現在 session 内の安全な並行処理を重視するなら Codex 的な設計が合います。コードレビュー、小さな変更、明確な実装 task、人がリズムを握りたい workflow に向きます。&lt;/p&gt;
&lt;p&gt;体系化された role、長期 memory、background execution、worktree isolation、plugin extension、より完全な Agent runtime を求めるなら Claude Code 的な設計が合います。&lt;/p&gt;
&lt;p&gt;判断する質問は 2 つです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;モデル自身が誰に仕事を任せるか選ぶことを受け入れられるか。&lt;/li&gt;
&lt;li&gt;より完全な Agent runtime が必要か。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1 つ目が不安なら明示的委任が向いています。2 つ目が yes なら、platform 的な workstation system が向いています。&lt;/p&gt;
&lt;h2 id=&#34;使い方の注意&#34;&gt;使い方の注意
&lt;/h2&gt;&lt;p&gt;Subagent を「モデルを増やせば強くなる」と考えない方がよいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;各 role の task boundary を明確にする。&lt;/li&gt;
&lt;li&gt;role ごとの tool を制限する。&lt;/li&gt;
&lt;li&gt;raw log ではなく結論を返させる。&lt;/li&gt;
&lt;li&gt;最終判断は main session に残す。&lt;/li&gt;
&lt;li&gt;background task と worktree isolation を可視化する。&lt;/li&gt;
&lt;li&gt;plugin agent に安全境界を置く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subagent の価値は数ではなく分業品質です。role が明確で context がきれいなほど、main thread の判断は安定します。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Codex と Claude Code は同じ問題に向き合っています。単一 Agent は実際の開発作業をすべて背負いにくい。両者とも context isolation、role specialization、permission boundary、local summarization を重視します。&lt;/p&gt;
&lt;p&gt;違いは設計の方向です。Codex は抑制的で、明示的委任と main session の制御を重視します。Claude Code は体系的で、Agent を設定、記憶、隔離、background 実行、plugin ecosystem に対応した正式な workstation として扱います。&lt;/p&gt;
&lt;p&gt;選択はブランド勝負ではありません。必要なのが制御された協作ツールなのか、完全な Agent runtime なのかで決まります。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>9Router：Claude Code、Codex、Cursor を 1 つの AI ルーターにつなぐ</title>
        <link>https://knightli.com/ja/2026/05/08/9router-ai-coding-router-token-saver/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/9router-ai-coding-router-token-saver/</guid>
        <description>&lt;p&gt;9Router は AI コーディングツール向けのローカルルーターです。Claude Code、Codex、Cursor、Cline、Copilot、OpenCode、OpenClaw などを 1 つの OpenAI-compatible endpoint に接続し、そこから複数のモデルや provider に転送します。&lt;/p&gt;
&lt;p&gt;目的はチャットクライアントを増やすことではありません。AI コーディングツールとモデル provider の間に入り、API 形式の違い、provider の手動切り替え、ツール出力による token 消費、quota 切れ、複数アカウント管理をまとめて扱います。&lt;/p&gt;
&lt;p&gt;README によると、9Router は 40 以上の provider と 100 以上のモデルに対応し、RTK Token Saver、自動 fallback、quota 追跡、複数アカウントのローテーション、形式変換、リクエストログを備えています。JavaScript 製で、Node.js、Next.js、React、Tailwind CSS、LowDB を使い、MIT ライセンスです。&lt;/p&gt;
&lt;h2 id=&#34;何に向いているか&#34;&gt;何に向いているか
&lt;/h2&gt;&lt;p&gt;複数の AI コーディングツールと複数のモデル供給元を同時に使う場合に便利です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code はサブスクリプションで使う。&lt;/li&gt;
&lt;li&gt;Codex や Cursor にカスタム OpenAI endpoint を設定したい。&lt;/li&gt;
&lt;li&gt;Cline、Continue、RooCode に OpenAI-compatible API を渡したい。&lt;/li&gt;
&lt;li&gt;無料 provider を試用に使う。&lt;/li&gt;
&lt;li&gt;GLM、MiniMax、Kimi などを安価なバックアップにする。&lt;/li&gt;
&lt;li&gt;高品質モデルを難しいタスクだけに使う。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常は各ツールに endpoint、API key、モデル名、fallback を個別設定する必要があります。9Router はそれをローカルのルーティング層に集約します。&lt;/p&gt;
&lt;p&gt;API:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Dashboard:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:20128/dashboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;インストール&#34;&gt;インストール
&lt;/h2&gt;&lt;p&gt;ローカル利用なら npm が簡単です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g 9router
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9router
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ソースから実行する場合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/decolua/9router.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; 9router
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20128&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;NEXT_PUBLIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:20128 npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本番起動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20128&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HOSTNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.0.0.0 &lt;span class=&#34;nv&#34;&gt;NEXT_PUBLIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:20128 npm run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;npm パッケージは Node.js &lt;code&gt;&amp;gt;=18.0.0&lt;/code&gt; を要求します。VPS や Docker では &lt;code&gt;JWT_SECRET&lt;/code&gt;、&lt;code&gt;INITIAL_PASSWORD&lt;/code&gt;、&lt;code&gt;DATA_DIR&lt;/code&gt;、&lt;code&gt;API_KEY_SECRET&lt;/code&gt; を設定してください。&lt;/p&gt;
&lt;h2 id=&#34;ツールの接続&#34;&gt;ツールの接続
&lt;/h2&gt;&lt;p&gt;一般的な設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: 9Router Dashboard からコピー
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: 9Router で設定したモデル名または combo 名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Codex CLI:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:20128&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your-9router-api-key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex &lt;span class=&#34;s2&#34;&gt;&amp;#34;your prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cline、Continue、RooCode では &lt;code&gt;OpenAI Compatible&lt;/code&gt; を選びます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: your-9router-api-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: cc/claude-opus-4-7
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;モデル名は接続済み provider によって変わり、&lt;code&gt;cc/&lt;/code&gt;、&lt;code&gt;cx/&lt;/code&gt;、&lt;code&gt;gh/&lt;/code&gt;、&lt;code&gt;glm/&lt;/code&gt;、&lt;code&gt;minimax/&lt;/code&gt;、&lt;code&gt;kr/&lt;/code&gt;、&lt;code&gt;vertex/&lt;/code&gt; などがあります。&lt;/p&gt;
&lt;h2 id=&#34;rtk-token-saver&#34;&gt;RTK Token Saver
&lt;/h2&gt;&lt;p&gt;AI コーディングでは以下のようなツール出力が token を大きく消費します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git diff&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ログ&lt;/li&gt;
&lt;li&gt;長いファイル一覧&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;9Router の RTK Token Saver は、これらをモデルに送る前に圧縮します。プロジェクト説明では、多くのリクエストで 20%-40% の input tokens を節約できるとされています。&lt;/p&gt;
&lt;p&gt;ただし、重要なログや完全なファイル内容が必要な場面では、圧縮が回答品質に影響しないか確認してから使うのが安全です。&lt;/p&gt;
&lt;h2 id=&#34;自動-fallback&#34;&gt;自動 fallback
&lt;/h2&gt;&lt;p&gt;モデルを優先順に並べられます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. サブスクリプションモデル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 安価な API
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 無料 provider
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. cc/claude-opus-4-7
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. glm/glm-5.1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. kr/claude-sonnet-4.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;fallback は作業停止を減らしますが、モデルが変わると出力の一貫性も変わります。大規模リファクタリングや移行では固定モデルを使う方が安全です。&lt;/p&gt;
&lt;h2 id=&#34;無料-provider-の注意点&#34;&gt;無料 provider の注意点
&lt;/h2&gt;&lt;p&gt;Kiro、OpenCode Free、Vertex などの無料経路は便利ですが、利用条件、地域制限、サードパーティツールでの利用可否、ban や rate limit、期限を必ず確認してください。9Router はルーティングを管理するだけで、上流 provider の規約は変えません。&lt;/p&gt;
&lt;h2 id=&#34;デプロイ&#34;&gt;デプロイ
&lt;/h2&gt;&lt;p&gt;個人利用なら &lt;code&gt;localhost&lt;/code&gt; のみで十分です。VPS や LAN で公開するなら、デフォルトパスワードを変更し、強い &lt;code&gt;JWT_SECRET&lt;/code&gt; と &lt;code&gt;API_KEY_SECRET&lt;/code&gt; を設定し、Dashboard を公衆インターネットに直接出さず、&lt;code&gt;/v1/*&lt;/code&gt; に Bearer API key を要求します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name 9router &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 20128:20128 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --env-file ./.env &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v 9router-data:/app/data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v 9router-usage:/root/.9router &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  9router
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;9Router は AI コーディングツールのローカル gateway です。Claude Code、Codex、Cursor、Cline などを &lt;code&gt;http://localhost:20128/v1&lt;/code&gt; に集約し、モデル選択、形式変換、token 圧縮、quota 追跡、fallback を処理します。&lt;/p&gt;
&lt;p&gt;複数 provider を使う重めの AI コーディングユーザーに向いています。まず 1 つのツールと 1 つの provider から試し、徐々に combo とアカウントを増やすのが無難です。&lt;/p&gt;
&lt;h2 id=&#34;参考資料&#34;&gt;参考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/decolua/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router GitHub リポジトリ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://9router.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router 公式サイト&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router npm パッケージ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>goose：デスクトップ、CLI、API を備えたオープンソース AI Agent</title>
        <link>https://knightli.com/ja/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/</guid>
        <description>&lt;p&gt;goose はローカルマシン上で動くオープンソース AI Agent です。コード補完だけでなく、コード、調査、執筆、自動化、データ分析など広いタスクを対象にしています。README ではデスクトップアプリ、CLI、API を提供する Agent として説明されています。&lt;/p&gt;
&lt;p&gt;このプロジェクトは &lt;code&gt;block/goose&lt;/code&gt; から Linux Foundation の Agentic AI Foundation（AAIF）へ移りました。現在のリポジトリは次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://github.com/aaif-goose/goose
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;goose は主に Rust と TypeScript で書かれ、Apache-2.0 ライセンスです。GitHub の説明では、コード提案を超えて、install、execute、edit、test を任意の LLM で行える拡張可能な AI agent とされています。&lt;/p&gt;
&lt;h2 id=&#34;解決する問題&#34;&gt;解決する問題
&lt;/h2&gt;&lt;p&gt;多くの AI コーディングツールは提案や局所的なコード編集に寄っています。goose はより広く、AI agent がローカルマシンでタスクを実行することを目指します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コード変更とテスト。&lt;/li&gt;
&lt;li&gt;ローカル自動化。&lt;/li&gt;
&lt;li&gt;調査と執筆。&lt;/li&gt;
&lt;li&gt;データ分析。&lt;/li&gt;
&lt;li&gt;複数ステップの workflow。&lt;/li&gt;
&lt;li&gt;API 経由の埋め込み。&lt;/li&gt;
&lt;li&gt;MCP による拡張。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;IDE 補完だけなら Copilot 系ツールで十分です。goose は AI をローカルのタスク実行チェーンに入れたい場合に向いています。&lt;/p&gt;
&lt;h2 id=&#34;3-つの入口&#34;&gt;3 つの入口
&lt;/h2&gt;&lt;p&gt;デスクトップアプリは macOS、Linux、Windows に対応し、視覚的に使いたい人に向いています。&lt;/p&gt;
&lt;p&gt;CLI はターミナル中心の開発者に向いています。&lt;/p&gt;
&lt;p&gt;API は他のシステムや社内ツールに agent runtime として組み込むためのものです。&lt;/p&gt;
&lt;p&gt;個人利用ならデスクトップか CLI から始め、チームや自動化基盤では API と custom distribution も検討します。&lt;/p&gt;
&lt;h2 id=&#34;インストール&#34;&gt;インストール
&lt;/h2&gt;&lt;p&gt;デスクトップ版：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://goose-docs.ai/docs/getting-started/installation
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CLI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;GitHub Releases には複数プラットフォームのビルドがあります。確認時点の latest release は &lt;code&gt;v1.33.1&lt;/code&gt; で、2026-04-29 に公開され、macOS、Linux、Windows、deb、rpm、Flatpak などの asset が含まれます。&lt;/p&gt;
&lt;p&gt;インストール後は公式 Quickstart に従って provider を設定し、まず低リスクなディレクトリで試します。&lt;/p&gt;
&lt;h2 id=&#34;provider&#34;&gt;Provider
&lt;/h2&gt;&lt;p&gt;goose は Anthropic、OpenAI、Google、Ollama、OpenRouter、Azure、Bedrock など 15 以上の provider に対応します。&lt;/p&gt;
&lt;p&gt;API key を使うことも、ACP 経由で既存の Claude、ChatGPT、Gemini サブスクリプションを使うこともできます。&lt;/p&gt;
&lt;p&gt;ACP は、既存のサブスクリプションを agent workflow に持ち込める点で重要です。ただし provider の規約、quota、会社コードや機密データでの利用可否は必ず確認してください。&lt;/p&gt;
&lt;h2 id=&#34;mcp-extension&#34;&gt;MCP extension
&lt;/h2&gt;&lt;p&gt;goose は Model Context Protocol extension に対応し、README では 70 以上の extensions に接続できるとされています。&lt;/p&gt;
&lt;p&gt;MCP により、agent はチャットやファイル編集だけでなく、ドキュメント、データベース、ブラウザ、社内システム、検索サービス、設計ツール、プロジェクト管理ツールなどと標準プロトコルで接続できます。&lt;/p&gt;
&lt;p&gt;チームでは、内部機能を明確な interface として公開する安全な統合層にもなります。&lt;/p&gt;
&lt;h2 id=&#34;コーディング助手との違い&#34;&gt;コーディング助手との違い
&lt;/h2&gt;&lt;p&gt;goose はコード補完ツールというよりローカル agent runtime です。&lt;/p&gt;
&lt;p&gt;一般的な助手は補完、説明、関数生成、エディタ内の局所編集に寄ります。goose はローカルタスク実行、複数ステップ workflow、provider 切り替え、extension、デスクトップと CLI、埋め込み API、非コードタスクも重視します。&lt;/p&gt;
&lt;p&gt;その分、モデル設定、権限、extension、workspace、ログ、credential 管理を考える必要があります。&lt;/p&gt;
&lt;h2 id=&#34;custom-distribution&#34;&gt;Custom distribution
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CUSTOM_DISTROS.md&lt;/code&gt; では、provider、extension、branding を事前設定した goose distro を作る方法が説明されています。&lt;/p&gt;
&lt;p&gt;チームは、許可された provider、社内 MCP server、安全ポリシー、ログ設定、禁止サービス、ブランドやオンボーディングを組み込んだ内部版を作れます。&lt;/p&gt;
&lt;h2 id=&#34;使い方の勧め&#34;&gt;使い方の勧め
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;デスクトップ版または CLI を入れる。&lt;/li&gt;
&lt;li&gt;1 つの provider を設定する。&lt;/li&gt;
&lt;li&gt;テストディレクトリで簡単なタスクを実行する。&lt;/li&gt;
&lt;li&gt;読み取るファイルと実行する動作を見る。&lt;/li&gt;
&lt;li&gt;MCP extension を追加する。&lt;/li&gt;
&lt;li&gt;複雑なリポジトリや自動化 workflow は後で試す。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重要な変更前は git commit し、API key をプロジェクトに書かず、高権限モードは信頼できる workspace に限定します。会社コードではデータ規約と provider ポリシーを確認してください。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;goose は AAIF/Linux Foundation 傘下のオープンソース AI Agent で、デスクトップ、CLI、API、15 以上の provider、ACP サブスクリプション連携、70 以上の MCP extensions に対応します。&lt;/p&gt;
&lt;p&gt;価値はコードを書くことだけではなく、モデル、ツール、extension、ローカル実行環境を 1 つの agent framework にまとめる点にあります。&lt;/p&gt;
&lt;h2 id=&#34;参考資料&#34;&gt;参考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aaif-goose/goose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose GitHub リポジトリ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://goose-docs.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose ドキュメント&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://goose-docs.ai/docs/getting-started/installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose インストールガイド&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aaif.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agentic AI Foundation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>VS Code の表示言語を切り替える方法：中国語、英語、その他の言語</title>
        <link>https://knightli.com/ja/2026/05/08/vscode-switch-display-language/</link>
        <pubDate>Fri, 08 May 2026 13:18:57 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/vscode-switch-display-language/</guid>
        <description>&lt;p&gt;VS Code は多くの表示言語に対応しています。一般的には、対象の言語パックを先にインストールし、その後コマンドパレットから表示言語を選択します。特定の言語に固定したい場合は、&lt;code&gt;argv.json&lt;/code&gt; の &lt;code&gt;locale&lt;/code&gt; を手動で変更することもできます。&lt;/p&gt;
&lt;p&gt;この方法は簡体字中国語だけでなく、英語、繁体字中国語、日本語、韓国語、フランス語、ドイツ語、スペイン語などにも使えます。&lt;/p&gt;
&lt;h2 id=&#34;対応する言語パックをインストールする&#34;&gt;対応する言語パックをインストールする
&lt;/h2&gt;&lt;p&gt;英語以外のインターフェイスに切り替える場合は、通常、先に言語パックをインストールします。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;VS Code 左側の拡張機能パネルを開きます。ショートカット &lt;code&gt;Ctrl+Shift+X&lt;/code&gt; も使えます。&lt;/li&gt;
&lt;li&gt;検索ボックスに対象言語を入力します。例：&lt;code&gt;Chinese&lt;/code&gt;、&lt;code&gt;Japanese&lt;/code&gt;、&lt;code&gt;Korean&lt;/code&gt;、&lt;code&gt;French&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;対応する言語パックを選び、&lt;code&gt;Install&lt;/code&gt; をクリックします。&lt;/li&gt;
&lt;li&gt;インストール完了後、案内に従って VS Code を再起動します。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;簡体字中国語では &lt;code&gt;Chinese (Simplified)&lt;/code&gt;、繁体字中国語では &lt;code&gt;Chinese (Traditional)&lt;/code&gt; がよく使われます。&lt;/p&gt;
&lt;h2 id=&#34;コマンドパレットから言語を切り替える&#34;&gt;コマンドパレットから言語を切り替える
&lt;/h2&gt;&lt;p&gt;ほとんどのユーザーには、この方法がおすすめです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;コマンドパレットを開きます：&lt;code&gt;Ctrl+Shift+P&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Configure Display Language&lt;/code&gt; と入力します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Configure Display Language&lt;/code&gt; コマンドを選択します。&lt;/li&gt;
&lt;li&gt;一覧から使用したい言語を選びます。&lt;/li&gt;
&lt;li&gt;案内に従って VS Code を再起動します。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;再起動後、メニュー、設定画面、一般的なメッセージが選択した言語に切り替わります。対象言語が一覧にない場合は、先に拡張機能パネルから対応する言語パックをインストールしてください。&lt;/p&gt;
&lt;h2 id=&#34;argvjson-で言語を手動指定する&#34;&gt;argv.json で言語を手動指定する
&lt;/h2&gt;&lt;p&gt;コマンドパレットで切り替えられない場合や、表示言語を明示的に固定したい場合は、VS Code のランタイム引数ファイルを直接編集できます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;コマンドパレットを開きます：&lt;code&gt;Ctrl+Shift+P&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Preferences: Configure Runtime Arguments&lt;/code&gt; と入力して選択します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;locale&lt;/code&gt; 設定を探すか追加します。&lt;/li&gt;
&lt;li&gt;値を対象の言語コードに変更します。&lt;/li&gt;
&lt;li&gt;保存して VS Code を再起動します。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;英語に切り替える例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;locale&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;簡体字中国語に切り替える例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;locale&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;zh-cn&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;日本語に切り替える例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;locale&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ja&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;argv.json&lt;/code&gt; は JSON ファイルなので、カンマと引用符に注意してください。設定が間違っていると、VS Code が言語設定を正しく読み取れないことがあります。&lt;/p&gt;
&lt;h2 id=&#34;よく使う表示言語コード&#34;&gt;よく使う表示言語コード
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;表示言語&lt;/th&gt;
          &lt;th&gt;locale&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;English (US)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;en&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;簡体字中国語&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;zh-cn&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;繁体字中国語&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;zh-tw&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;French&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;fr&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;German&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;de&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Italian&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;it&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Spanish&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;es&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Japanese&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ja&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Korean&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ko&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Russian&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ru&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Portuguese (Brazil)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pt-br&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Turkish&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;tr&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Bulgarian&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;bg&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hungarian&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;hu&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;言語が反映されない場合&#34;&gt;言語が反映されない場合
&lt;/h2&gt;&lt;p&gt;次の順番で確認してください。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;対象の言語パックがインストール済みか確認します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;locale&lt;/code&gt; に正しい言語コードを書いているか確認します。たとえば簡体字中国語は &lt;code&gt;zh-cn&lt;/code&gt; で、&lt;code&gt;zh-CN&lt;/code&gt; ではありません。&lt;/li&gt;
&lt;li&gt;言語を変更した後、VS Code を完全に終了してから再度開きます。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;argv.json&lt;/code&gt; を手動で編集した場合は、JSON 構文が正しいか確認します。&lt;/li&gt;
&lt;li&gt;設定が混乱している場合は、&lt;code&gt;locale&lt;/code&gt; 項目を削除してから &lt;code&gt;Configure Display Language&lt;/code&gt; で選び直します。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通常は &lt;code&gt;Configure Display Language&lt;/code&gt; で切り替えるのが最も簡単です。特定の言語を強制したい場合や、コマンドパレットでの切り替えが反映されない場合だけ、&lt;code&gt;argv.json&lt;/code&gt; の手動編集を検討するとよいでしょう。&lt;/p&gt;
&lt;h2 id=&#34;参考資料&#34;&gt;参考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.csdn.net/mighty13/article/details/114420578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VScode：VS Code の表示言語を簡体字中国語に変更し、表示言語を切り替える&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 24の使い方：計画モード、巻き戻し、CLAUDE.md、Skills、Agents、プラグイン</title>
        <link>https://knightli.com/ja/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</link>
        <pubDate>Fri, 08 May 2026 08:54:14 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</guid>
        <description>&lt;p&gt;Claude Code は単なるチャット欄ではない。プロジェクトディレクトリに入り、ファイルを読み書きし、コマンドを実行し、コンテキストを維持できるコーディング Agent に近い。&lt;/p&gt;
&lt;p&gt;要求を投げてコード生成を待つだけだと、計画が曖昧、権限確認が多い、コンテキストが長くなる、結果が気に入らない、戻し方が分からない、プロジェクトルールを残せない、といった問題にすぐ当たる。&lt;/p&gt;
&lt;p&gt;ここでは、Claude Code を使い始める開発者向けに、よく使う操作を整理する。&lt;/p&gt;
&lt;h2 id=&#34;まずプロジェクトディレクトリで起動する&#34;&gt;まずプロジェクトディレクトリで起動する
&lt;/h2&gt;&lt;p&gt;Claude Code は、適当な場所で開くより、プロジェクトディレクトリ内で起動するほうがよい。&lt;/p&gt;
&lt;p&gt;まずプロジェクト用フォルダを作り、その中でコマンドラインを開いて Claude Code を起動する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初回に現在のフォルダを信頼するか聞かれたら、確認してから進める。これで Claude Code は現在のプロジェクトを基準にファイルを読み、作成し、コマンドを実行できる。&lt;/p&gt;
&lt;p&gt;練習には、写真家のポートフォリオサイトを作らせるようなタスクが向いている。見た目を確認でき、ファイル生成、コマンド実行、巻き戻し、リファクタリングを一通り試せる。&lt;/p&gt;
&lt;h2 id=&#34;計画モードで方向を先に決める&#34;&gt;計画モードで方向を先に決める
&lt;/h2&gt;&lt;p&gt;Claude Code は複雑なタスクでは計画モードに入ることがある。計画モードでは、先に要件を話し合い、手順を分解してから、実行を承認する。&lt;/p&gt;
&lt;p&gt;計画が出た後は、よく次のような選択肢が出る。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;計画を承認し、以後の編集ツール使用も自動承認する。&lt;/li&gt;
&lt;li&gt;計画を承認するが、以後の編集は手動確認する。&lt;/li&gt;
&lt;li&gt;実行を止め、計画についてさらに Claude Code と話す。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;タスクが明確なら承認して進める。まだ曖昧なら、ページの雰囲気、技術スタック、ディレクトリ構成、インタラクション、受け入れ条件をさらに詰める。&lt;/p&gt;
&lt;p&gt;計画モードの利点は手戻りを減らすことだ。いきなり Agent に作業させると多くのファイルが作られるが、方向が間違っていると後で修正が荒れやすい。&lt;/p&gt;
&lt;h2 id=&#34;shift--tab-でモードを切り替える&#34;&gt;Shift + Tab でモードを切り替える
&lt;/h2&gt;&lt;p&gt;Claude Code では &lt;code&gt;Shift + Tab&lt;/code&gt; で作業モードを切り替えられる。よく使うのは、計画モードへの切り替えや、編集ツールの自動承認モードへの切り替えだ。&lt;/p&gt;
&lt;p&gt;おすすめの使い分け：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新規プロジェクト、新機能、大きな変更：まず計画モード。&lt;/li&gt;
&lt;li&gt;小さな修正、明確なバグ修正：直接実行。&lt;/li&gt;
&lt;li&gt;削除、置換、依存関係のインストール：手動確認を残す。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;計画モードでは、Claude Code がプロジェクト詳細を質問することがある。方向キーで選び、Enter で確定する。フィードバックを送ると、それに合わせて計画が更新される。&lt;/p&gt;
&lt;h2 id=&#34;権限確認をすべて開放しない&#34;&gt;権限確認をすべて開放しない
&lt;/h2&gt;&lt;p&gt;Claude Code がコマンド実行、ファイル編集、プログラム起動を行うとき、権限を求めることがある。&lt;/p&gt;
&lt;p&gt;よくある選択肢：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;今回だけ許可。&lt;/li&gt;
&lt;li&gt;現在の会話内で同種コマンドを許可。&lt;/li&gt;
&lt;li&gt;拒否または一時停止。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ローカルページの起動、開発サーバーの実行、ファイル確認なら必要に応じて許可してよい。ただし、クリックを減らすために「すべて自動許可」で長く使うのは避ける。&lt;/p&gt;
&lt;p&gt;完全自動の権限は、リスクが低く、内容を理解しており、Git バックアップがある場合だけに向く。日常利用では、削除、上書き、依存関係インストール、ネットワーク、コミット、スクリプト実行には人間の確認を残す。&lt;/p&gt;
&lt;h2 id=&#34;ターミナルモードでローカルコマンドを実行する&#34;&gt;ターミナルモードでローカルコマンドを実行する
&lt;/h2&gt;&lt;p&gt;Claude Code ではターミナルコマンドモードに入り、ローカルコマンドを実行できる。&lt;/p&gt;
&lt;p&gt;ページ生成後、HTML ファイルを開く例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;start index.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;start&lt;/code&gt; は Windows でファイルを開くコマンドで、後ろにファイル名を付ける。エクスプローラーで探すより速い。&lt;/p&gt;
&lt;p&gt;ターミナルモードに向く操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成ページを開く。&lt;/li&gt;
&lt;li&gt;ディレクトリを確認する。&lt;/li&gt;
&lt;li&gt;開発サーバーを起動する。&lt;/li&gt;
&lt;li&gt;テストやビルドを実行する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一方、再帰削除、ディレクトリ移動、一括上書き、システム環境変更のような高リスク操作には注意する。&lt;/p&gt;
&lt;h2 id=&#34;結果が違うときは早めに巻き戻す&#34;&gt;結果が違うときは早めに巻き戻す
&lt;/h2&gt;&lt;p&gt;Claude Code が作ったページやコードが期待と違い、修正するほど乱れていくなら、早めに巻き戻す。&lt;/p&gt;
&lt;p&gt;巻き戻しでは、会話やコードを特定の時点へ戻せる。よくある選択肢：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コードと会話を同時に戻す。&lt;/li&gt;
&lt;li&gt;会話だけ戻す。&lt;/li&gt;
&lt;li&gt;コードだけ戻す。&lt;/li&gt;
&lt;li&gt;以前の内容を要約に圧縮する。&lt;/li&gt;
&lt;li&gt;キャンセルする。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;明らかに方向がずれた場合は、コードと会話を同時に戻すのがおすすめだ。コンテキストとファイル状態を一緒にきれいな位置へ戻せる。&lt;/p&gt;
&lt;p&gt;ただし、Claude Code の巻き戻しは通常、内蔵ツールで作成・変更したファイルが対象だ。外部コマンドで作ったファイルは完全には戻らないことがある。重要なプロジェクトでは Git と併用する。&lt;/p&gt;
&lt;h2 id=&#34;長いプロンプトはエディタで書く&#34;&gt;長いプロンプトはエディタで書く
&lt;/h2&gt;&lt;p&gt;複雑な要件を1行の入力欄に詰め込まない。&lt;/p&gt;
&lt;p&gt;長いプロンプトをテキストエディタで編集できる場合は、エディタで要件を書き、保存してから送る。&lt;/p&gt;
&lt;p&gt;長いプロンプトには次を書くとよい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目的。&lt;/li&gt;
&lt;li&gt;使用する技術スタック。&lt;/li&gt;
&lt;li&gt;してはいけないこと。&lt;/li&gt;
&lt;li&gt;残すべきファイル。&lt;/li&gt;
&lt;li&gt;完了後の確認方法。&lt;/li&gt;
&lt;li&gt;ページや機能の受け入れ条件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例えば普通の HTML ページを現代的な技術スタックへリファクタリングしたい場合、「リファクタリングして」だけでは足りない。コンポーネント化、見た目の維持、レスポンシブ対応、ビルド確認まで明記する。&lt;/p&gt;
&lt;h2 id=&#34;終了後は履歴から会話を復元する&#34;&gt;終了後は履歴から会話を復元する
&lt;/h2&gt;&lt;p&gt;途中で Claude Code を終了する必要がある場合は、通常通り終了する。その後、同じプロジェクトディレクトリに戻って再起動する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以前の記録が直接出ない場合は、履歴関連コマンドで最近の会話を見て、以前の会話を読み込む。&lt;/p&gt;
&lt;p&gt;これは中断後の継続に便利だ。ただし会話履歴だけを記憶として頼らない。プロジェクトルール、技術スタック、よく使うコマンド、注意点はプロジェクトファイルに書く。&lt;/p&gt;
&lt;h2 id=&#34;claudemd-にプロジェクトルールを保存する&#34;&gt;CLAUDE.md にプロジェクトルールを保存する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; は Claude Code にとって重要な記憶ファイルだ。通常はプロジェクトルートに置き、プロジェクトルール、技術スタック、ディレクトリ構造、協業上の制約を書く。&lt;/p&gt;
&lt;p&gt;初期化は次で行える。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; に向いている内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト目標。&lt;/li&gt;
&lt;li&gt;技術スタック。&lt;/li&gt;
&lt;li&gt;起動、テスト、ビルドのコマンド。&lt;/li&gt;
&lt;li&gt;ディレクトリ説明。&lt;/li&gt;
&lt;li&gt;コードスタイル。&lt;/li&gt;
&lt;li&gt;禁止操作。&lt;/li&gt;
&lt;li&gt;コミットとデプロイルール。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;各会話で、Claude Code はこの種のルールをコンテキストの一部として利用できる。プロジェクト説明書と考えると分かりやすい。&lt;/p&gt;
&lt;p&gt;簡単な検証方法は、&lt;code&gt;CLAUDE.md&lt;/code&gt; に明確なルールを追加してから質問することだ。回答がそのルールに従えば、プロジェクト記憶を読んでいる。&lt;/p&gt;
&lt;h2 id=&#34;-でファイルを参照する&#34;&gt;@ でファイルを参照する
&lt;/h2&gt;&lt;p&gt;入力欄で &lt;code&gt;@&lt;/code&gt; を使うと、ファイルや Agent を選び、現在の会話コンテキストに追加できる。&lt;/p&gt;
&lt;p&gt;向いている場面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;設定ファイルを読ませる。&lt;/li&gt;
&lt;li&gt;特定ページを修正させる。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; や他の文書に基づいて続けさせる。&lt;/li&gt;
&lt;li&gt;「このファイルだけ見て、構造を推測しない」と明示する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ファイル内容を入力欄に貼るより、&lt;code&gt;@&lt;/code&gt; 参照のほうが明確で漏れにくい。&lt;/p&gt;
&lt;h2 id=&#34;コンテキストを確認圧縮する&#34;&gt;コンテキストを確認・圧縮する
&lt;/h2&gt;&lt;p&gt;長時間会話すると、コンテキストは大きくなる。長すぎるとモデルが遅くなったり、初期の細部を無視し始めたりする。&lt;/p&gt;
&lt;p&gt;現在の使用状況は次で確認できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/context
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;長くなったら履歴を圧縮する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;それでも効果が悪い場合は、現在のコンテキストを消す。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;消した後も、Claude Code はプロジェクトファイル、&lt;code&gt;CLAUDE.md&lt;/code&gt;、現在のディレクトリから一部を再理解できる。ただし完全な会話履歴は残らない。&lt;/p&gt;
&lt;p&gt;実用的には、1つのタスクが終わったら新しい会話にし、プロジェクトルールは &lt;code&gt;CLAUDE.md&lt;/code&gt; に書き、臨時の議論を1つのチャットに積み続けない。&lt;/p&gt;
&lt;h2 id=&#34;skills固定フローを説明書にする&#34;&gt;Skills：固定フローを説明書にする
&lt;/h2&gt;&lt;p&gt;Skills は Claude Code の作業説明書と考えられる。一度きりのプロンプトではなく、再利用できるタスクフローだ。&lt;/p&gt;
&lt;p&gt;例えば週報をよく作るなら、週報 Skill を作り、次を明記する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;必要な入力。&lt;/li&gt;
&lt;li&gt;出力形式。&lt;/li&gt;
&lt;li&gt;口調と構成。&lt;/li&gt;
&lt;li&gt;必ず残す内容。&lt;/li&gt;
&lt;li&gt;捏造してはいけない内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills は通常、&lt;code&gt;name&lt;/code&gt;、&lt;code&gt;description&lt;/code&gt;、具体的な指示で構成される。グローバル Skills ディレクトリに入れると、Claude Code は関連タスクで認識して読み込める。&lt;/p&gt;
&lt;p&gt;向いている作業：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;週報。&lt;/li&gt;
&lt;li&gt;コードレビューのテンプレート。&lt;/li&gt;
&lt;li&gt;文書整理。&lt;/li&gt;
&lt;li&gt;画像の一括処理。&lt;/li&gt;
&lt;li&gt;固定形式の記事。&lt;/li&gt;
&lt;li&gt;プロジェクト初期化フロー。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同じプロンプトを何度もコピーしているなら、Skill 化を検討するとよい。&lt;/p&gt;
&lt;h2 id=&#34;agentsサブタスクを独立した助手へ渡す&#34;&gt;Agents：サブタスクを独立した助手へ渡す
&lt;/h2&gt;&lt;p&gt;Agents は Skills と違う。&lt;/p&gt;
&lt;p&gt;Skill は説明書に近く、Claude Code にやり方を教える。Agent は独立した助手に近く、主会話の外で作業し、結果を返す。&lt;/p&gt;
&lt;p&gt;Agents の価値はコンテキストの隔離だ。コード点検なら、読み取り専用 Agent を作り、プロジェクトを読むだけでレポートを出させる。ファイルを直接変更しないので、主会話を汚さず、誤操作も減らせる。&lt;/p&gt;
&lt;p&gt;Agent 作成時に考えること：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト級かユーザー級か。&lt;/li&gt;
&lt;li&gt;Claude Code に設定を生成させるか。&lt;/li&gt;
&lt;li&gt;どのツール権限を許すか。&lt;/li&gt;
&lt;li&gt;どのモデルを使うか。&lt;/li&gt;
&lt;li&gt;記憶を保存するか。&lt;/li&gt;
&lt;li&gt;Agent のプロンプトが十分明確か。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;コード点検 Agent には、まず読み取り権限だけを与えるのがおすすめだ。先にレポートを出させ、その後で主会話が修正するか判断する。&lt;/p&gt;
&lt;h2 id=&#34;プラグインskillsagentsmcphooks-をまとめる&#34;&gt;プラグイン：Skills、Agents、MCP、Hooks をまとめる
&lt;/h2&gt;&lt;p&gt;プラグインは、より完全な能力パッケージだ。中には次が含まれることがある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Agents&lt;/li&gt;
&lt;li&gt;MCP&lt;/li&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;単体の Skill より、プラグインはまとまった能力に向いている。例えばフロントエンドデザイン用プラグインなら、見た目のルール、レイアウト、コンポーネント習慣、関連 Agent をまとめて持てる。&lt;/p&gt;
&lt;p&gt;インストール時には、よく次の場所を選べる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ユーザーディレクトリ：全プロジェクトで有効。&lt;/li&gt;
&lt;li&gt;プロジェクトディレクトリ：プロジェクトと共有。&lt;/li&gt;
&lt;li&gt;ローカルプロジェクトディレクトリ：現在の PC だけで有効。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;個人で常用する能力はユーザーディレクトリ、チームの約束はプロジェクトディレクトリ、一時テストはローカルに置くとよい。&lt;/p&gt;
&lt;h2 id=&#34;プラグインは特定タスクの品質を上げる&#34;&gt;プラグインは特定タスクの品質を上げる
&lt;/h2&gt;&lt;p&gt;フロントエンドページ生成では、プラグインは素のプロンプトより安定しやすい。&lt;/p&gt;
&lt;p&gt;同じ「写真家の個人サイトを作る」でも、普通のプロンプトだけなら見られるページができる程度かもしれない。フロントエンドデザインプラグインを明示すると、構造、視覚階層、余白、配色、完成度が良くなりやすい。&lt;/p&gt;
&lt;p&gt;もちろんプラグインは人間の審美眼を置き換えない。より良い初稿を作らせ、人間が細部を調整するのが現実的だ。&lt;/p&gt;
&lt;h2 id=&#34;より安定した-claude-code-ワークフロー&#34;&gt;より安定した Claude Code ワークフロー
&lt;/h2&gt;&lt;p&gt;これらを組み合わせると、安定した流れになる。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;プロジェクトディレクトリで &lt;code&gt;claude&lt;/code&gt; を起動する。&lt;/li&gt;
&lt;li&gt;まず計画モードで要件を話す。&lt;/li&gt;
&lt;li&gt;承認前に技術スタックと受け入れ条件を確認する。&lt;/li&gt;
&lt;li&gt;高リスク操作は手動確認を残す。&lt;/li&gt;
&lt;li&gt;ターミナルモードでプレビューとテストを行う。&lt;/li&gt;
&lt;li&gt;方向がずれたら早めに巻き戻す。&lt;/li&gt;
&lt;li&gt;プロジェクトルールを &lt;code&gt;CLAUDE.md&lt;/code&gt; に書く。&lt;/li&gt;
&lt;li&gt;長い会話では定期的にコンテキストを確認・圧縮する。&lt;/li&gt;
&lt;li&gt;繰り返す作業は Skills にする。&lt;/li&gt;
&lt;li&gt;点検、調査、分析は読み取り専用 Agents に渡す。&lt;/li&gt;
&lt;li&gt;特定分野のタスクはプラグインを優先する。&lt;/li&gt;
&lt;li&gt;重要プロジェクトでは常に Git のチェックポイントを作る。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;こう使うほうが、「一文送って生成を待つ」よりはるかに安定する。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Claude Code の効率はモデル能力だけでなく、ワークフロー制御からも生まれる。&lt;/p&gt;
&lt;p&gt;計画モードは方向を決め、権限確認はリスクを抑え、巻き戻しは手戻りを減らす。&lt;code&gt;CLAUDE.md&lt;/code&gt; はプロジェクトルールを保存し、&lt;code&gt;/context&lt;/code&gt;、&lt;code&gt;/compact&lt;/code&gt;、&lt;code&gt;/clear&lt;/code&gt; はコンテキストを管理する。Skills は固定フローを再利用し、Agents は複雑なサブタスクを隔離し、プラグインはまとまった能力をプロジェクトへ持ち込む。&lt;/p&gt;
&lt;p&gt;Claude Code をうまく使うには、明確な境界の中で継続的に作業させることが大事だ。プロジェクト全体を一度に丸投げするのではない。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>opencode、Claude Code、Codex の違いとは？オープンソース AI コーディングツールガイド</title>
        <link>https://knightli.com/ja/2026/05/08/opencode-open-source-ai-coding-agent/</link>
        <pubDate>Fri, 08 May 2026 08:33:37 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/opencode-open-source-ai-coding-agent/</guid>
        <description>&lt;p&gt;&lt;code&gt;opencode&lt;/code&gt; は anomalyco が公開しているオープンソースの AI Coding Agent だ。位置づけは明確で、開発者がターミナル内で、プログラム可能で拡張しやすく、複数のモデル提供元に接続できるコードアシスタントを使えるようにする。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude Code&lt;/code&gt; や &lt;code&gt;Codex&lt;/code&gt; と並べて見ると、3つはいずれも同じ種類の問題を解こうとしている。AI を実際のコードベースに入れ、コンテキストを理解し、ファイルを変更し、コマンドやテストを実行できるようにすることだ。ただし、製品としての向きは異なる。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;opencode&lt;/code&gt; はオープンソース、複数モデル対応、ターミナル TUI を重視する。&lt;code&gt;Claude Code&lt;/code&gt; は Anthropic のモデルエコシステムとローカルでの開発協業を重視する。&lt;code&gt;Codex&lt;/code&gt; は OpenAI の AI coding agent であり、ターミナル、IDE、Codex app、クラウドタスクから利用できる。&lt;/p&gt;
&lt;h2 id=&#34;opencode-が向いている人&#34;&gt;opencode が向いている人
&lt;/h2&gt;&lt;p&gt;opencode は次のような開発者に向いている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ターミナル内でコード変更、プロジェクト分析、エンジニアリングタスクを進めたい人。&lt;/li&gt;
&lt;li&gt;AI Coding Agent を単一のモデル提供元に縛られたくない人。&lt;/li&gt;
&lt;li&gt;オープンソースツールを好み、自分で監査、拡張、二次開発したい人。&lt;/li&gt;
&lt;li&gt;Neovim、TUI、コマンドラインワークフローに慣れている人。&lt;/li&gt;
&lt;li&gt;将来的にデスクトップ、モバイル、その他のクライアントから同じコーディングエージェントをリモート操作したい人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重要なのは、単なるチャットウィンドウを作ることではない。開発者が普段使っているターミナルとプロジェクトディレクトリの中に、AI コーディング能力を入れることだ。&lt;/p&gt;
&lt;h2 id=&#34;インストール方法&#34;&gt;インストール方法
&lt;/h2&gt;&lt;p&gt;公式 README には複数のインストール方法が用意されている。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 直接インストール&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://opencode.ai/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# npm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm i -g opencode-ai@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scoop install opencode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;choco install opencode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# macOS と Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install anomalyco/tap/opencode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install opencode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Arch Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pacman -S opencode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;paru -S opencode-bin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# その他&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mise use -g opencode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nix run nixpkgs#opencode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;公式 README では、古いバージョンの残存による問題を避けるため、インストール前に 0.1.x より前のバージョンを削除することも推奨している。&lt;/p&gt;
&lt;p&gt;インストールスクリプトは次の優先順位でインストール先を選ぶ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;$OPENCODE_INSTALL_DIR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$XDG_BIN_DIR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$HOME/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$HOME/.opencode/bin&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;パスを指定したい場合は、次のように書ける。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENCODE_INSTALL_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/bin curl -fsSL https://opencode.ai/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;XDG_BIN_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;/.local/bin curl -fsSL https://opencode.ai/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;デスクトップアプリはまだ-beta&#34;&gt;デスクトップアプリはまだ Beta
&lt;/h2&gt;&lt;p&gt;コマンドラインツールに加えて、opencode はデスクトップアプリも提供している。ただし現在は Beta 扱いだ。GitHub Releases または &lt;code&gt;opencode.ai/download&lt;/code&gt; からダウンロードできる。&lt;/p&gt;
&lt;p&gt;デスクトップ版は次のプラットフォームに対応している。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;プラットフォーム&lt;/th&gt;
          &lt;th&gt;ファイル&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS Apple Silicon&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;opencode-desktop-mac-arm64.dmg&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS Intel&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;opencode-desktop-mac-x64.dmg&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;opencode-desktop-windows-x64.exe&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;.deb&lt;/code&gt;、&lt;code&gt;.rpm&lt;/code&gt; または &lt;code&gt;.AppImage&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;macOS と Windows では、パッケージマネージャーからデスクトップ版をインストールすることもできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# macOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --cask opencode-desktop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scoop bucket add extras
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scoop install extras/opencode-desktop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;2つの内蔵-agent-モード&#34;&gt;2つの内蔵 Agent モード
&lt;/h2&gt;&lt;p&gt;opencode には2つの内蔵 Agent があり、&lt;code&gt;Tab&lt;/code&gt; キーで切り替えられる。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;build&lt;/code&gt; はデフォルトモードで、完全な開発権限を持つ。コードを直接変更し、コマンドを実行し、エンジニアリングタスクを進める用途に向いている。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;plan&lt;/code&gt; は読み取り専用モードだ。未知のコードベースを分析し、プロジェクト構造を理解し、変更方針を立てる用途に向いている。デフォルトではファイル編集を拒否し、bash コマンドを実行する前に確認する。&lt;/p&gt;
&lt;p&gt;さらに、opencode には複雑な検索や多段階タスクのための &lt;code&gt;general&lt;/code&gt; サブ Agent もある。ユーザーはメッセージ内で &lt;code&gt;@general&lt;/code&gt; と入力して呼び出せる。&lt;/p&gt;
&lt;p&gt;この設計は実用的だ。実際に手を動かす前に &lt;code&gt;plan&lt;/code&gt; でプロジェクトを把握し、コードを変更する必要が出たら &lt;code&gt;build&lt;/code&gt; に切り替える。大規模リポジトリでは、読み取り権限と書き込み権限を分けることで誤操作を減らせる。&lt;/p&gt;
&lt;h2 id=&#34;codex-とは&#34;&gt;Codex とは
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Codex&lt;/code&gt; は OpenAI の AI coding agent で、開発者がコードを書き、コードレビューを行い、bug を修正し、エンジニアリングタスクを出荷するのを支援する。&lt;/p&gt;
&lt;p&gt;単なるコード補完ツールとは異なり、Codex はコードベースを操作できる Agent に近い。ローカルツール内で開発者とペアになって作業することも、クラウドにタスクを委任することもできる。OpenAI の公式資料では、Codex は CLI、IDE、Codex app、ChatGPT/Codex クラウドなど複数の入口から利用できると説明されている。&lt;/p&gt;
&lt;p&gt;開発者にとって、Codex のポイントは次の通りだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コードベースを読み、ファイルを編集し、コマンドとテストを実行できる。&lt;/li&gt;
&lt;li&gt;ターミナル、IDE、アプリ、クラウドなど複数のインターフェースに対応する。&lt;/li&gt;
&lt;li&gt;bug 修正、機能開発、リファクタリング、移行、コードレビュー、テスト補完に向いている。&lt;/li&gt;
&lt;li&gt;OpenAI アカウント、モデル、Codex 製品体系との結びつきが強い。&lt;/li&gt;
&lt;li&gt;クラウドタスクは、比較的明確な複数のエンジニアリングタスクを並行処理するのに向いている。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;opencode が開かれたターミナルエージェントフレームワークに近いとすれば、Codex は OpenAI が提供する一式の AI コーディングワークベンチに近い。ローカルでペア作業でき、クラウドに委任でき、チームはそれをより長いエンジニアリングフローへ組み込める。&lt;/p&gt;
&lt;h2 id=&#34;3つの主な違い&#34;&gt;3つの主な違い
&lt;/h2&gt;&lt;p&gt;opencode、Claude Code、Codex はいずれも AI コーディングツールだが、選ぶときはまず次の観点を見るとよい。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ツール&lt;/th&gt;
          &lt;th&gt;中心的な位置づけ&lt;/th&gt;
          &lt;th&gt;主な強み&lt;/th&gt;
          &lt;th&gt;向いている用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;opencode&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;オープンソース AI Coding Agent&lt;/td&gt;
          &lt;td&gt;オープンソース、複数モデル、TUI、クライアント/サーバー構成&lt;/td&gt;
          &lt;td&gt;開かれたツールチェーン、交換可能なモデル、ターミナル中心のワークフローを求める開発者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Anthropic のコマンドライン型コーディングツール&lt;/td&gt;
          &lt;td&gt;Claude モデル体験、コード理解、長いコンテキスト、エンジニアリングタスク協業&lt;/td&gt;
          &lt;td&gt;Claude/Anthropic エコシステムを使っていて、ローカルでコードタスクを進めたい開発者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Codex&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;OpenAI の AI coding agent&lt;/td&gt;
          &lt;td&gt;CLI、IDE、Codex app、クラウドタスク、複数 Agent ワークフロー&lt;/td&gt;
          &lt;td&gt;ChatGPT/OpenAI を使っていて、ローカルでのペア作業とクラウド委任を併用したいチーム&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;簡単に言えば、opencode のキーワードは「オープン」と「交換可能」、Claude Code のキーワードは「Claude エコシステム」と「ローカル開発エージェント」、Codex のキーワードは「OpenAI エコシステム」と「複数入口の協業」だ。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-との違い&#34;&gt;Claude Code との違い
&lt;/h2&gt;&lt;p&gt;opencode の公式 FAQ は Claude Code と直接比較している。両者の能力はかなり近いが、主な違いは次の通りだ。&lt;/p&gt;
&lt;p&gt;第一に、opencode は 100% オープンソースプロジェクトで、コードは GitHub にホストされ、MIT license で提供されている。&lt;/p&gt;
&lt;p&gt;第二に、opencode は単一のモデル提供元に縛られない。OpenCode Zen が提供するモデルを推奨しているが、Claude、OpenAI、Google、またはローカルモデルとも組み合わせられる。開発者にとっては、モデルのコスト、能力、可用性が変わっても、特定のプラットフォームにロックインされにくいという意味がある。&lt;/p&gt;
&lt;p&gt;第三に、opencode は任意の LSP サポートを内蔵している。コード補完、ジャンプ、診断、プロジェクト理解にとって、LSP は非常に重要な基盤だ。&lt;/p&gt;
&lt;p&gt;第四に、opencode は TUI を重視している。Neovim ユーザーと terminal.shop の作成者によって作られており、製品の重心は明らかにターミナル体験にある。&lt;/p&gt;
&lt;p&gt;第五に、opencode はクライアント/サーバー構成を採用している。つまり、opencode を自分のコンピューター上で動かし、将来的に TUI、デスクトップ、モバイル、その他のクライアントから制御できる。TUI はそのうちの一つのフロントエンドにすぎない。&lt;/p&gt;
&lt;h2 id=&#34;opencodeclaude-codecodex-をいつ選ぶか&#34;&gt;opencode、Claude Code、Codex をいつ選ぶか
&lt;/h2&gt;&lt;p&gt;すでに Claude Code や Codex を使っている場合、opencode がすぐにそれらを置き換える必要はない。より自然な見方は、opencode がオープンで、モデルを交換でき、ターミナル寄りの選択肢を提供しているというものだ。&lt;/p&gt;
&lt;p&gt;opencode を優先して検討したい場面は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI コーディングツールをできるだけオープンソースにしたい。&lt;/li&gt;
&lt;li&gt;ワークフローを特定のモデル提供元に縛られたくない。&lt;/li&gt;
&lt;li&gt;同じツールで Claude、OpenAI、Google、またはローカルモデルを試したい。&lt;/li&gt;
&lt;li&gt;TUI が好きで、主要な作業フローをデスクトップアプリやWebアプリに中断されたくない。&lt;/li&gt;
&lt;li&gt;クライアント/サーバー構成によるリモート制御能力に関心がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code を優先して検討したい場面は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主に Claude モデルを使っている。&lt;/li&gt;
&lt;li&gt;長いコンテキスト、コード理解、複雑なエンジニアリングタスク協業を重視している。&lt;/li&gt;
&lt;li&gt;ローカルリポジトリ内で変更、テスト、リファクタリングを継続的に進めたい。&lt;/li&gt;
&lt;li&gt;Anthropic による Claude Code のデフォルト製品体験を信頼している。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Codex を優先して検討したい場面は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;すでに ChatGPT または OpenAI アカウント体系を使っている。&lt;/li&gt;
&lt;li&gt;同じ coding agent をターミナル、IDE、デスクトップアプリ、クラウドタスクで使いたい。&lt;/li&gt;
&lt;li&gt;明確な bug 修正、機能開発、移行、テスト補完をクラウドに委任して並行処理したい。&lt;/li&gt;
&lt;li&gt;コードレビュー、バックグラウンドタスク、チーム協業、複数 Agent ワークフローが必要だ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;公式の一体化された体験、デフォルトのモデル設定、企業管理、既製の統合を重視するなら、Claude Code や Codex のほうが楽な場合がある。制御性、オープン性、provider-agnostic を重視するなら、opencode は注目に値する。&lt;/p&gt;
&lt;h2 id=&#34;注意点&#34;&gt;注意点
&lt;/h2&gt;&lt;p&gt;opencode、Claude Code、Codex はいずれも変化が速い。GitHub release、インストールコマンド、デスクトップ版のファイル名、モデルの可用性、プラン権限は変わる可能性がある。インストールや選定の前には、それぞれの公式 README、ドキュメント、リリースページを直接確認するのがよい。&lt;/p&gt;
&lt;p&gt;また、opencode のデスクトップアプリはまだ Beta と表示されており、安定した本番用ツールとして最初から扱うべきではない。日常的なエンジニアリングタスクでは、ターミナル版が引き続き主な入口になる。&lt;/p&gt;
&lt;p&gt;ツールの流れとして見ると、opencode は AI Coding Agent のオープンツールチェーン方向を代表している。モデルを交換でき、クライアントも交換でき、コアの代理能力をできるだけ開く方向だ。一方、Codex と Claude Code は、モデル企業が coding agent を完成度の高い製品入口として作る方向に近い。開発者にとって、この2つの流れは長く併存するだろう。&lt;/p&gt;
&lt;h2 id=&#34;参考リンク&#34;&gt;参考リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;opencode GitHub：&lt;a class=&#34;link&#34; href=&#34;https://github.com/anomalyco/opencode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anomalyco/opencode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;opencode 公式サイト：&lt;a class=&#34;link&#34; href=&#34;https://opencode.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://opencode.ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;opencode ドキュメント：&lt;a class=&#34;link&#34; href=&#34;https://opencode.ai/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://opencode.ai/docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;opencode Releases：&lt;a class=&#34;link&#34; href=&#34;https://github.com/anomalyco/opencode/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anomalyco/opencode/releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenAI Codex：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/codex/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://openai.com/codex/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Using Codex with your ChatGPT plan：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11369540-codex-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/11369540-codex-in-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenAI Codex CLI Getting Started：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11096431-openai-codex-ci-getting-started&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/11096431-openai-codex-ci-getting-started&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>uv インストールガイド：macOS、Linux、Windows、pipx、Homebrew、WinGet の選び方</title>
        <link>https://knightli.com/ja/2026/05/07/uv-installation-guide/</link>
        <pubDate>Thu, 07 May 2026 23:23:58 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/07/uv-installation-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; は Astral が提供する Python ツールチェーンマネージャーです。Python バージョン、仮想環境、依存関係、スクリプト、プロジェクト、ツールを管理できます。インストール方法は多く、公式ドキュメントではスタンドアロンインストーラーのほか、PyPI、Homebrew、WinGet、Scoop、Docker、GitHub Releases、Cargo が案内されています。&lt;/p&gt;
&lt;p&gt;すばやく入れたいだけなら、まず公式のスタンドアロンインストーラーを使うのがおすすめです。システムのパッケージマネージャーでバージョンを管理したいなら Homebrew、WinGet、Scoop を選びます。Python ツールを隔離環境に入れる運用に慣れているなら &lt;code&gt;pipx&lt;/code&gt; が向いています。&lt;/p&gt;
&lt;h2 id=&#34;すばやく選ぶ&#34;&gt;すばやく選ぶ
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;シーン&lt;/th&gt;
          &lt;th&gt;推奨方法&lt;/th&gt;
          &lt;th&gt;コマンド&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS / Linux で素早くインストール&lt;/td&gt;
          &lt;td&gt;公式スタンドアロンインストーラー&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;curl -LsSf https://astral.sh/uv/install.sh | sh&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS / Linux に curl がない&lt;/td&gt;
          &lt;td&gt;公式スクリプト + wget&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;wget -qO- https://astral.sh/uv/install.sh | sh&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows で素早くインストール&lt;/td&gt;
          &lt;td&gt;PowerShell インストーラー&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;powershell -ExecutionPolicy ByPass -c &amp;quot;irm https://astral.sh/uv/install.ps1 | iex&amp;quot;&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Python ツールを隔離して入れる&lt;/td&gt;
          &lt;td&gt;pipx&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pipx install uv&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;一時的または従来型の Python インストール&lt;/td&gt;
          &lt;td&gt;pip&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pip install uv&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS のパッケージ管理&lt;/td&gt;
          &lt;td&gt;Homebrew&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;brew install uv&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS の MacPorts ユーザー&lt;/td&gt;
          &lt;td&gt;MacPorts&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;sudo port install uv&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows のパッケージ管理&lt;/td&gt;
          &lt;td&gt;WinGet&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;winget install --id=astral-sh.uv -e&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows の Scoop ユーザー&lt;/td&gt;
          &lt;td&gt;Scoop&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;scoop install main/uv&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Rust ユーザー&lt;/td&gt;
          &lt;td&gt;Cargo&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;cargo install --locked uv&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;汎用的におすすめしやすい選択肢は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS / Linux：公式スタンドアロンインストーラー；&lt;/li&gt;
&lt;li&gt;Windows：公式 PowerShell インストーラー、または WinGet；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pipx&lt;/code&gt; で Python CLI ツールを管理している場合：&lt;code&gt;pipx install uv&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;macos-と-linux公式インストーラー&#34;&gt;macOS と Linux：公式インストーラー
&lt;/h2&gt;&lt;p&gt;公式でもっとも直接的な方法は、&lt;code&gt;curl&lt;/code&gt; でスクリプトを取得して &lt;code&gt;sh&lt;/code&gt; に渡す方法です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -LsSf https://astral.sh/uv/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;システムに &lt;code&gt;curl&lt;/code&gt; がない場合は &lt;code&gt;wget&lt;/code&gt; を使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -qO- https://astral.sh/uv/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特定バージョンをインストールしたい場合は、URL にバージョン番号を含めます。たとえば公式例の &lt;code&gt;0.11.11&lt;/code&gt; は次のようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -LsSf https://astral.sh/uv/0.11.11/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;この方法は、ほとんどの個人開発環境に向いています。シンプルでクロスプラットフォームであり、uv 公式の更新機構とも相性が良いからです。&lt;/p&gt;
&lt;p&gt;インストーラーは &lt;code&gt;uv&lt;/code&gt;、&lt;code&gt;uvx&lt;/code&gt; などのバイナリをユーザーディレクトリ配下に配置し、コマンドをターミナルから直接使えるように shell profile を変更する場合があります。PATH を変更されたくない場合は、公式 installer オプションを確認し、たとえば &lt;code&gt;UV_NO_MODIFY_PATH=1&lt;/code&gt; を設定します。&lt;/p&gt;
&lt;h2 id=&#34;windowspowershell-インストーラー&#34;&gt;Windows：PowerShell インストーラー
&lt;/h2&gt;&lt;p&gt;Windows の公式インストール方法は、PowerShell でインストーラースクリプトを実行する方法です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;powershell&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ExecutionPolicy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ByPass&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-c&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;irm https://astral.sh/uv/install.ps1 | iex&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特定バージョンをインストールする場合も、URL にバージョン番号を含めます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;powershell&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ExecutionPolicy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ByPass&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-c&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;irm https://astral.sh/uv/0.11.11/install.ps1 | iex&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ここでの &lt;code&gt;ExecutionPolicy ByPass&lt;/code&gt; は、インターネットから取得したインストーラースクリプトを実行できるようにするための指定です。安全のため、実行前にスクリプト内容を確認することもできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;powershell&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-c&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;irm https://astral.sh/uv/install.ps1 | more&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows のパッケージマネージャーに慣れているなら、WinGet や Scoop を優先してもよいでしょう。&lt;/p&gt;
&lt;h2 id=&#34;pipx-でインストールする&#34;&gt;pipx でインストールする
&lt;/h2&gt;&lt;p&gt;公式ドキュメントでは、uv が PyPI に公開されていることも説明されています。PyPI からインストールする場合は、&lt;code&gt;pipx&lt;/code&gt; などで隔離環境に入れることが推奨されます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pipx install uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;この方法は、&lt;code&gt;pipx&lt;/code&gt; を Python CLI ツールマネージャーとして使っている人に向いています。uv を現在のプロジェクト環境と混ぜずに済みます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pipx&lt;/code&gt; がない場合は、&lt;code&gt;pip&lt;/code&gt; を直接使うこともできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ただし、uv は多くのプラットフォーム向けに事前ビルド済み wheel を提供していますが、対象 platform の wheel がない場合はソースからビルドされます。その場合は Rust ツールチェーンが必要です。&lt;/p&gt;
&lt;p&gt;私のおすすめは、個人マシンでは &lt;code&gt;pip install uv&lt;/code&gt; より &lt;code&gt;pipx install uv&lt;/code&gt; のほうがきれい、というものです。プロジェクト環境の中では、uv をプロジェクト依存関係として入れないほうがよいでしょう。&lt;/p&gt;
&lt;h2 id=&#34;homebrewmacportswingetscoop&#34;&gt;Homebrew、MacPorts、WinGet、Scoop
&lt;/h2&gt;&lt;p&gt;システムのパッケージマネージャーを好む場合、uv は一般的な配布経路にも対応しています。&lt;/p&gt;
&lt;p&gt;macOS では Homebrew を使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;MacPorts ユーザーは次のコマンドです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo port install uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows では WinGet を使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;winget&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;astral-sh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;uv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-e&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Scoop ユーザーは次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;scoop&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらの方法の利点は、システムのパッケージマネージャーに一元管理できることです。欠点は、更新タイミングが uv 公式インストーラーではなく、各パッケージソースに依存することです。&lt;/p&gt;
&lt;h2 id=&#34;dockergithub-releasescargo&#34;&gt;Docker、GitHub Releases、Cargo
&lt;/h2&gt;&lt;p&gt;uv は GitHub Container Registry で Docker イメージも提供しています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghcr.io/astral-sh/uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは CI、Dockerfile、イメージビルド、一時的な実行環境に向いています。実際に使う場合は、公式の Docker 統合ドキュメントも確認するのがおすすめです。&lt;/p&gt;
&lt;p&gt;バイナリを手動でダウンロードしたい場合は、GitHub Releases を使えます。各 release ページには通常、対応プラットフォーム向けのバイナリが含まれ、GitHub URL を使ってスタンドアロンインストーラーを呼び出す方法も説明されています。&lt;/p&gt;
&lt;p&gt;Rust ユーザーは crates.io からもインストールできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install --locked uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ただし、この方法はソースからビルドするため、互換性のある Rust ツールチェーンが必要です。Rust エコシステムからインストールする明確な理由がない限り、一般ユーザーが Cargo を優先する必要はありません。&lt;/p&gt;
&lt;h2 id=&#34;uv-をアップグレードする&#34;&gt;uv をアップグレードする
&lt;/h2&gt;&lt;p&gt;uv を公式スタンドアロンインストーラーで入れた場合は、自己更新コマンドを使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv self update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;公式ドキュメントでは、uv の更新時にインストーラーが再実行され、shell profile が変更される可能性があると説明されています。更新時に PATH を変更されたくない場合は、次を設定します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;UV_NO_MODIFY_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;別の方法でインストールした場合は、その方法に対応するパッケージマネージャーでアップグレードします。たとえば &lt;code&gt;pip&lt;/code&gt; で入れた場合は次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install --upgrade uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Homebrew、WinGet、Scoop、MacPorts も、それぞれのアップグレードコマンドを使います。&lt;/p&gt;
&lt;h2 id=&#34;shell-補完を有効にする&#34;&gt;shell 補完を有効にする
&lt;/h2&gt;&lt;p&gt;uv は shell 補完に対応しています。公式ドキュメントでは、まず現在の shell を確認することが推奨されています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$SHELL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Bash：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;eval &amp;#34;$(uv generate-shell-completion bash)&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Zsh：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;eval &amp;#34;$(uv generate-shell-completion zsh)&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.zshrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;fish：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;uv generate-shell-completion fish | source&amp;#39;&lt;/span&gt; &amp;gt; ~/.config/fish/completions/uv.fish
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;PowerShell：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(!(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Test-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PROFILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ItemType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PROFILE&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Add-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PROFILE&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;(&amp;amp; uv generate-shell-completion powershell) | Out-String | Invoke-Expression&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;uvx&lt;/code&gt; もよく使う場合は、&lt;code&gt;uvx&lt;/code&gt; の補完を別途有効にできます。&lt;/p&gt;
&lt;p&gt;Bash：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;eval &amp;#34;$(uvx --generate-shell-completion bash)&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Zsh：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;eval &amp;#34;$(uvx --generate-shell-completion zsh)&amp;#34;&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.zshrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;fish：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;uvx --generate-shell-completion fish | source&amp;#39;&lt;/span&gt; &amp;gt; ~/.config/fish/completions/uvx.fish
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;PowerShell：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(!(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Test-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PROFILE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ItemType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PROFILE&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Add-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PROFILE&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;(&amp;amp; uvx --generate-shell-completion powershell) | Out-String | Invoke-Expression&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;設定後は shell を再起動するか、対応する設定ファイルを再読み込みします。&lt;/p&gt;
&lt;h2 id=&#34;uv-をアンインストールする&#34;&gt;uv をアンインストールする
&lt;/h2&gt;&lt;p&gt;uv をアンインストールする場合は、まずキャッシュと uv が保存しているデータを削除できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv cache clean
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -r &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;uv python dir&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -r &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;uv tool dir&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;その後、バイナリを削除します。&lt;/p&gt;
&lt;p&gt;macOS / Linux：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm ~/.local/bin/uv ~/.local/bin/uvx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;rm &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;rm &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uvx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;rm &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uvw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;公式ドキュメントでは、&lt;code&gt;0.5.0&lt;/code&gt; より前の uv は &lt;code&gt;~/.cargo/bin&lt;/code&gt; にインストールされていた点も注意されています。古いバージョンからアップグレードした場合、古いバイナリが残っていることがあるため、手動で削除する必要があります。&lt;/p&gt;
&lt;h2 id=&#34;インストール後に最初にすること&#34;&gt;インストール後に最初にすること
&lt;/h2&gt;&lt;p&gt;インストール後は、まずバージョンを確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;その後、いくつかのよく使うタスクから始められます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv python install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv venv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv pip install requests
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uvx ruff --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新規プロジェクトなら、次も確認するとよいでしょう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;uv init&lt;/code&gt;：プロジェクトを初期化する；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv add&lt;/code&gt;：依存関係を追加する；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv sync&lt;/code&gt;：環境を同期する；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv run&lt;/code&gt;：プロジェクト環境でコマンドを実行する；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uvx&lt;/code&gt;：Python CLI ツールを一時的に実行する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;私のおすすめ&#34;&gt;私のおすすめ
&lt;/h2&gt;&lt;p&gt;個人の開発マシンでは、公式スタンドアロンインストーラーを優先するのがおすすめです。uv 公式ドキュメントにもっとも近く、&lt;code&gt;uv self update&lt;/code&gt; も使えるためです。&lt;/p&gt;
&lt;p&gt;Windows ユーザーでリモートスクリプトを実行したくない場合は、WinGet や Scoop を使えます。macOS ユーザーでツールをすべて Homebrew に任せたい場合は、&lt;code&gt;brew install uv&lt;/code&gt; で問題ありません。&lt;/p&gt;
&lt;p&gt;すでに &lt;code&gt;pipx&lt;/code&gt; で Python CLI ツールを管理している人は、&lt;code&gt;pipx install uv&lt;/code&gt; を使うとよいでしょう。ただし、具体的なプロジェクトの仮想環境内で &lt;code&gt;pip install uv&lt;/code&gt; するのはおすすめしません。ツールチェーンとプロジェクト依存関係が混ざりやすくなるからです。&lt;/p&gt;
&lt;p&gt;CI やコンテナビルドでは、Docker と GitHub Releases を優先的に確認し、イメージビルドの流れに合わせてバージョンを固定します。&lt;/p&gt;
&lt;h2 id=&#34;関連リンク&#34;&gt;関連リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;uv インストールドキュメント：&lt;a class=&#34;link&#34; href=&#34;https://docs.astral.sh/uv/getting-started/installation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.astral.sh/uv/getting-started/installation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;uv First steps：&lt;a class=&#34;link&#34; href=&#34;https://docs.astral.sh/uv/getting-started/first-steps/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.astral.sh/uv/getting-started/first-steps/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;uv Docker 統合：&lt;a class=&#34;link&#34; href=&#34;https://docs.astral.sh/uv/guides/integration/docker/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.astral.sh/uv/guides/integration/docker/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;uv GitHub Releases：&lt;a class=&#34;link&#34; href=&#34;https://github.com/astral-sh/uv/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/astral-sh/uv/releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Awesome Codex Skills：Codex CLI を拡張するコミュニティ製スキルカタログ</title>
        <link>https://knightli.com/ja/2026/05/07/awesome-codex-skills-composio/</link>
        <pubDate>Thu, 07 May 2026 20:19:15 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/07/awesome-codex-skills-composio/</guid>
        <description>&lt;p&gt;ComposioHQ の &lt;a class=&#34;link&#34; href=&#34;https://github.com/ComposioHQ/awesome-codex-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;awesome-codex-skills&lt;/a&gt; は、Codex CLI 向けのコミュニティ製スキルカタログです。単なるプロンプト集ではなく、繰り返し使う作業手順をインストール可能で、再利用しやすく、保守しやすい Skill として整理している点に価値があります。&lt;/p&gt;
&lt;p&gt;Codex を日常の開発パートナーとして使っているなら、この種のリポジトリの意味はかなり分かりやすいはずです。毎回説明していたルール、コマンド、参照資料、操作手順を一度 Skill にまとめておけば、次回から Codex は同じ文脈で作業を始められます。&lt;/p&gt;
&lt;h2 id=&#34;このリポジトリが解決すること&#34;&gt;このリポジトリが解決すること
&lt;/h2&gt;&lt;p&gt;Codex Skills は、Codex CLI に「専用の作業モード」を追加する仕組みだと考えると分かりやすいです。通常のプロンプトは一度きりの指示に向いていますが、Skill は長く再利用する作業に向いています。&lt;/p&gt;
&lt;p&gt;たとえば、次のような作業です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;決まった形式でコミットメッセージを生成する。&lt;/li&gt;
&lt;li&gt;特定の API ドキュメントを参照する。&lt;/li&gt;
&lt;li&gt;プロジェクト固有のテストやデプロイコマンドを実行する。&lt;/li&gt;
&lt;li&gt;チーム規約に沿って記事を書き直す、翻訳する、資料を整理する。&lt;/li&gt;
&lt;li&gt;外部ツールを呼び出して反復的な開発補助作業を行う。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こうした内容を毎回入力するのは負担になります。Skill はそれらのルールを独立したディレクトリに置き、中心となる &lt;code&gt;SKILL.md&lt;/code&gt; に手順を書きます。必要に応じてスクリプト、テンプレート、参考資料、アセットも添えられます。Codex は呼び出されたときにその説明を読み、定義された流れに従って作業します。&lt;/p&gt;
&lt;h2 id=&#34;通常のプロンプトとの違い&#34;&gt;通常のプロンプトとの違い
&lt;/h2&gt;&lt;p&gt;通常のプロンプトは「今回はこうしてほしい」という一回限りの指示に近いものです。Skill は「この種類のタスクでは今後この手順で進める」という小さな運用マニュアルに近いものです。&lt;/p&gt;
&lt;p&gt;主な利点は次の三つです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;再利用できる&lt;/strong&gt;：よく使う作業手順を何度も貼り付ける必要がありません。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;レビューしやすい&lt;/strong&gt;：スキルファイルは通常ローカルの Markdown で、直接開いて編集し、バージョン管理できます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拡張できる&lt;/strong&gt;：複雑な Skill は自然言語の説明だけでなく、スクリプト、テンプレート、参考資料を含められます。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;awesome-codex-skills&lt;/code&gt; のようなカタログの価値もここにあります。既存の Skill を探し、自分の作業スタイルに合わせて選び、インストールし、改造できます。&lt;/p&gt;
&lt;h2 id=&#34;インストールと使い方&#34;&gt;インストールと使い方
&lt;/h2&gt;&lt;p&gt;リポジトリにはインストールスクリプトが用意されており、手動インストールにも対応しています。典型的な流れは次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/ComposioHQ/awesome-codex-skills.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; awesome-codex-skills
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python install.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;少数の Skill だけを試す場合は、各スキルディレクトリの &lt;code&gt;SKILL.md&lt;/code&gt; を先に読み、どの資料を読むのか、どのスクリプトを実行するのか、どのファイルを変更する可能性があるのかを確認してから、ローカルの Codex skills ディレクトリへ入れるのがよいでしょう。&lt;/p&gt;
&lt;p&gt;インストール後、Codex はタスクに応じて Skill を自動的に使うこともできますし、明示的に名前を指定して呼び出すこともできます。長く使うなら、まずコミュニティ製 Skill を入れ、その説明を自分のプロジェクト規約に合わせて書き換えるのが実用的です。&lt;/p&gt;
&lt;h2 id=&#34;注目したい-skill&#34;&gt;注目したい Skill
&lt;/h2&gt;&lt;p&gt;この種のリポジトリで最初に見るべきなのは、名前が派手な Skill ではなく、反復作業を安定して減らしてくれる Skill です。&lt;/p&gt;
&lt;p&gt;優先して見たいのは次のようなものです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;開発フロー系&lt;/strong&gt;：コードレビュー、テスト、コミット、リリース、依存関係チェック。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ドキュメント処理系&lt;/strong&gt;：書き直し、翻訳、要約、構造化整理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ツール連携系&lt;/strong&gt;：Codex を外部サービス、API、CLI ツールにつなぐもの。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;プロジェクト規約系&lt;/strong&gt;：チームの約束、ディレクトリ構成、命名規則、デプロイ手順を固定フローにするもの。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一文のプロンプトを包んだだけの Skill なら価値は限られます。調査、判断、実行、検証、出力までを安定した流れにできる Skill なら、長く残す価値があります。&lt;/p&gt;
&lt;h2 id=&#34;注意点&#34;&gt;注意点
&lt;/h2&gt;&lt;p&gt;コミュニティ製 Skill は便利ですが、ブラックボックスとしてそのまま実行するべきではありません。特にスクリプトを含む Skill は、インストール前に次の点を確認したいところです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; が Codex に何をさせようとしているか。&lt;/li&gt;
&lt;li&gt;ネットワークアクセス、ファイルの読み書き、外部サービス呼び出しを行うスクリプトが含まれているか。&lt;/li&gt;
&lt;li&gt;デフォルトのパス、コマンド、権限が自分の環境に合っているか。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Skill は Codex の行動範囲を広げます。よく書かれた Skill は、Codex をプロジェクトに詳しい同僚のようにしてくれます。雑に書かれた Skill は、合わないルールを作業フローへ持ち込むこともあります。理想は大量に入れることではなく、少数を入れ、自分に合うよう調整し、長く保守することです。&lt;/p&gt;
&lt;h2 id=&#34;所感&#34;&gt;所感
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;awesome-codex-skills&lt;/code&gt; はブックマークする価値があります。特に Codex CLI を実際の開発、ドキュメント作成、自動化に使い始めている人には役立ちます。これは公式機能そのものではなく、コミュニティが整理した Skill の入口です。そこから着想を得ることも、普段の作業を自分用のローカル Skill に変えることもできます。&lt;/p&gt;
&lt;p&gt;ヘビーユーザーにとって、Codex Skills の重要点は AI に多くを記憶させることではありません。同じ種類のタスクで回り道を減らすことです。ルールを Skill として書くことは、一度きりの説明を再利用可能な作業基盤に変えることでもあります。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Warp オープンソース化：ターミナルから Agentic Development Environment へ</title>
        <link>https://knightli.com/ja/2026/05/07/warpdotdev-warp-open-source-agentic-terminal/</link>
        <pubDate>Thu, 07 May 2026 20:15:08 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/07/warpdotdev-warp-open-source-agentic-terminal/</guid>
        <description>&lt;p&gt;&lt;code&gt;warpdotdev/warp&lt;/code&gt; は Warp のオープンソースクライアントリポジトリです。Warp は現在、自身を「ターミナルから生まれた agentic development environment」と位置付けています。つまり、ターミナルを土台にしながら、AI coding agent、コードベース索引、タスク管理、開発ワークフローを同じ環境に統合しようとしています。&lt;/p&gt;
&lt;p&gt;これは普通のターミナルエミュレータのオープンソースリポジトリではありません。むしろ、Claude Code、Codex、Gemini CLI のような agent が一般化する中で、ターミナル自体が agent を調整し、観察し、管理する開発環境になるべきか、という問いへの答えに近いものです。&lt;/p&gt;
&lt;p&gt;Warp の答えは「なるべき」です。&lt;/p&gt;
&lt;h2 id=&#34;現在のリポジトリ状況&#34;&gt;現在のリポジトリ状況
&lt;/h2&gt;&lt;p&gt;2026年5月7日時点で、&lt;code&gt;warpdotdev/warp&lt;/code&gt; は公開リポジトリで、GitHub では約 56k stars、4.1k forks が表示されています。README では、Warp のクライアントコードがオープンソース化され、コミュニティからの貢献を歓迎すると説明されています。&lt;/p&gt;
&lt;p&gt;主要言語は Rust です。GitHub の言語統計では Rust が 98% 以上を占めています。これは Warp の位置付けと合っています。Web のラッパーではなく、クロスプラットフォームのネイティブ開発ツールです。&lt;/p&gt;
&lt;p&gt;README で重要な点は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Warp は agentic development environment, born out of the terminal。&lt;/li&gt;
&lt;li&gt;内蔵 coding agent を使えるだけでなく、Claude Code、Codex、Gemini CLI などの外部 CLI agent にも接続できる。&lt;/li&gt;
&lt;li&gt;OpenAI は新しくオープンソース化された Warp リポジトリの founding sponsor。&lt;/li&gt;
&lt;li&gt;リポジトリ内の agentic management workflows は GPT models によって駆動される。&lt;/li&gt;
&lt;li&gt;Warp UI framework 関連 crate は MIT license、それ以外のコードは AGPL v3。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらを見ると、Warp のオープンソース化は単にターミナルを公開しただけではなく、agent ワークフローの実験場として運営していることが分かります。&lt;/p&gt;
&lt;h2 id=&#34;warp-は単なるターミナルではない&#34;&gt;Warp は単なるターミナルではない
&lt;/h2&gt;&lt;p&gt;従来のターミナルが主に解決していたのは次の三つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;shell を起動する。&lt;/li&gt;
&lt;li&gt;コマンドを実行する。&lt;/li&gt;
&lt;li&gt;出力を表示する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;初期の Warp の差別化は、ターミナルをより現代的にすることでした。コマンドブロック、補完、履歴、コラボレーション、UI 的な操作、クロスプラットフォーム体験などです。現在はさらに進み、AI agent を中心に開発フローを組み立てようとしています。&lt;/p&gt;
&lt;p&gt;README から見ると、Warp はもはや「より使いやすい terminal」だけを強調していません。次の要素を重視しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内蔵 coding agent。&lt;/li&gt;
&lt;li&gt;外部 CLI agent 対応。&lt;/li&gt;
&lt;li&gt;issue triage。&lt;/li&gt;
&lt;li&gt;spec 作成。&lt;/li&gt;
&lt;li&gt;PR review。&lt;/li&gt;
&lt;li&gt;contributor coordination。&lt;/li&gt;
&lt;li&gt;観察可能な agent sessions。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり Warp は、ターミナルを「コマンドを入力する場所」から「複数の agent と一緒に働く場所」へ変えようとしています。&lt;/p&gt;
&lt;h2 id=&#34;oz-とオープンソース管理&#34;&gt;Oz とオープンソース管理
&lt;/h2&gt;&lt;p&gt;README では &lt;code&gt;Oz&lt;/code&gt; が何度も登場します。&lt;/p&gt;
&lt;p&gt;Warp の contribution overview では、多数の Oz agents が issue triage、spec 作成、実装、PR review に取り組んでいる様子が示されています。これは興味深い設計です。AI agent を「個人のコード作成支援」から「オープンソース協作の管理支援」へ広げているからです。&lt;/p&gt;
&lt;p&gt;従来のオープンソースプロジェクトで難しいのは、コードを書くことだけではありません。むしろ維持管理です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;issue が多すぎて分類されない。&lt;/li&gt;
&lt;li&gt;bug と feature request が混在する。&lt;/li&gt;
&lt;li&gt;新規貢献者が取り組みやすいタスクを見つけにくい。&lt;/li&gt;
&lt;li&gt;PR review の負担が大きい。&lt;/li&gt;
&lt;li&gt;メンテナーがコミュニティ議論を継続的に追いにくい。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Warp の考え方は、agent にプロジェクト管理と協作作業の一部を先に担わせることです。README には &lt;code&gt;Oz for OSS&lt;/code&gt; も登場します。これはメンテナー向けのプログラムで、同様の agentic open-source management workflows をほかのリポジトリへ持ち込むためのものです。&lt;/p&gt;
&lt;p&gt;つまり Warp の狙いはターミナル製品だけではなく、AI 時代のオープンソース維持管理モデルの探索にもあります。&lt;/p&gt;
&lt;h2 id=&#34;リポジトリ構成と技術スタック&#34;&gt;リポジトリ構成と技術スタック
&lt;/h2&gt;&lt;p&gt;リポジトリ構成を見ると、Warp は大規模な Rust プロジェクトです。&lt;/p&gt;
&lt;p&gt;ルートには次のようなものがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;app/&lt;/code&gt;：メインアプリケーション関連コード。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;crates/&lt;/code&gt;：中核 Rust crates。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/&lt;/code&gt;：リソースファイル。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;command-signatures-v2/&lt;/code&gt;：コマンドシグネチャ関連。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker/&lt;/code&gt;、&lt;code&gt;script/&lt;/code&gt;、&lt;code&gt;resources/&lt;/code&gt;、&lt;code&gt;specs/&lt;/code&gt; などのエンジニアリング用ディレクトリ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.claude/&lt;/code&gt;、&lt;code&gt;.warp/&lt;/code&gt;、&lt;code&gt;.agents/skills&lt;/code&gt; などの agent 関連設定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WARP.md&lt;/code&gt; にはより詳しいエンジニアリング説明があります。Warp は Rust-based terminal emulator で、自社製 UI framework &lt;code&gt;WarpUI&lt;/code&gt; を使っていると説明されています。&lt;/p&gt;
&lt;p&gt;主要モジュールはおおよそ次のように理解できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;app/&lt;/code&gt;：ターミナルエミュレーション、shell 管理、AI 統合、Drive、認証、設定、workspace、session。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;crates/warp_core/&lt;/code&gt;：中核ユーティリティとプラットフォーム抽象。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;crates/editor/&lt;/code&gt;：テキスト編集機能。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;crates/warpui/&lt;/code&gt; と &lt;code&gt;crates/warpui_core/&lt;/code&gt;：自社製 UI framework。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;crates/ipc/&lt;/code&gt;：プロセス間通信。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;crates/graphql/&lt;/code&gt;：GraphQL client と schema。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WARP.md&lt;/code&gt; ではさらに次のような特徴も挙げられています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entity-Handle system。&lt;/li&gt;
&lt;li&gt;モジュール化された workspace 構造。&lt;/li&gt;
&lt;li&gt;macOS、Windows、Linux クロスプラットフォーム、および WASM target。&lt;/li&gt;
&lt;li&gt;Agent Mode、文脈認識、コードベース索引を含む AI integration。&lt;/li&gt;
&lt;li&gt;Warp Drive クラウド同期。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この複雑さは、従来の軽量 terminal よりも、ほぼ完全な IDE に近いものです。&lt;/p&gt;
&lt;h2 id=&#34;ローカルビルド&#34;&gt;ローカルビルド
&lt;/h2&gt;&lt;p&gt;README のローカルビルド手順は簡潔です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./script/bootstrap
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./script/run
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./script/presubmit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;それぞれ次の役割です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;./script/bootstrap&lt;/code&gt;：プラットフォーム別の初期化。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;./script/run&lt;/code&gt;：Warp をビルドして実行。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;./script/presubmit&lt;/code&gt;：フォーマット、clippy、テストなどの提出前チェック。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WARP.md&lt;/code&gt; にはさらに細かいコマンドもあります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo run
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo bundle --bin warp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo nextest run --no-fail-fast --workspace --exclude command-signatures-v2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo fmt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo clippy --workspace --all-targets --all-features --tests -- -D warnings
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Warp にコードを貢献するなら、&lt;code&gt;./script/presubmit&lt;/code&gt; は基本的に必須です。&lt;/p&gt;
&lt;h2 id=&#34;貢献フロー&#34;&gt;貢献フロー
&lt;/h2&gt;&lt;p&gt;Warp の貢献フローは、単に「PR を出せばよい」ではありません。&lt;/p&gt;
&lt;p&gt;README では issue から PR までの軽量な流れが説明されています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まず既存 issue を検索する。&lt;/li&gt;
&lt;li&gt;重複がなければ bug または feature request を提出する。&lt;/li&gt;
&lt;li&gt;メンテナーが issue を review し、readiness label を付けることがある。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ready-to-spec&lt;/code&gt; は、設計を spec として展開できる状態。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ready-to-implement&lt;/code&gt; は、設計が比較的明確で実装 PR に進める状態。&lt;/li&gt;
&lt;li&gt;貢献者はラベル付き issue を引き受けられる。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この流れは大規模オープンソースに向いています。「アイデア」「設計」「実装」を分けることで、貢献者が最初から違う方向へ実装してしまうリスクを減らせます。&lt;/p&gt;
&lt;p&gt;AI agent にも相性が良い流れです。agent はまず issue を整理し、spec を書き、テストを追加してから実装に進めます。Warp 自身もこの方式で agentic project management を示しています。&lt;/p&gt;
&lt;h2 id=&#34;ライセンスmit--agpl-v3&#34;&gt;ライセンス：MIT + AGPL v3
&lt;/h2&gt;&lt;p&gt;Warp は二つのライセンス構成を採っています。&lt;/p&gt;
&lt;p&gt;README では次のように説明されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Warp UI framework、つまり &lt;code&gt;warpui_core&lt;/code&gt; と &lt;code&gt;warpui&lt;/code&gt; crates は MIT license。&lt;/li&gt;
&lt;li&gt;リポジトリのそれ以外のコードは AGPL v3。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは重要です。AGPL v3 はネットワークサービスや配布に対して、より強いオープンソース要件を持ちます。学習、研究、貢献であれば大きな問題はありませんが、Warp のコードを商用製品やクローズドソース派生物に使いたい場合は、license を慎重に読み、必要なら法務相談が必要です。&lt;/p&gt;
&lt;p&gt;簡単に言えば、Warp はオープンソースですが、「自由に持っていって閉源商用化できる」タイプの緩いライセンスではありません。&lt;/p&gt;
&lt;h2 id=&#34;注目すべき点&#34;&gt;注目すべき点
&lt;/h2&gt;&lt;p&gt;第一に、Warp はターミナル、agent、プロジェクト管理を一つにまとめようとしています。&lt;/p&gt;
&lt;p&gt;多くの AI coding ツールはまだ CLI かエディタプラグインです。Warp はターミナルという入口から、agent タスク、コード実行、コマンド出力、PR ワークフロー、チーム協作を統合しようとしています。&lt;/p&gt;
&lt;p&gt;第二に、Warp のオープンソース化は agent ワークフロー観察に向いています。&lt;/p&gt;
&lt;p&gt;コードを公開するだけでなく、contribution overview、agent session、issue triage、spec フローも見せています。AI がオープンソース協作にどう参加できるかを研究したい人にとって、このリポジトリ自体がサンプルです。&lt;/p&gt;
&lt;p&gt;第三に、Warp は複雑な Rust デスクトップアプリケーションです。&lt;/p&gt;
&lt;p&gt;Rust GUI、ターミナルエミュレータ、クロスプラットフォームアプリ、GraphQL client、クラウド同期、AI 統合を学びたいなら、読むべき構造が多くあります。ただし小さなプロジェクトではないため、新規貢献者はまずドキュメントと issue フローを読むべきです。&lt;/p&gt;
&lt;p&gt;第四に、Warp は「内蔵 agent」と「bring your own CLI agent」の両方を支援しています。&lt;/p&gt;
&lt;p&gt;これは現実的です。開発者が一つの agent だけを使うとは限りません。Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw などは共存し続けるでしょう。Warp がそれらの作業台になれるなら、単一目的のターミナル以上の価値があります。&lt;/p&gt;
&lt;h2 id=&#34;誰が注目すべきか&#34;&gt;誰が注目すべきか
&lt;/h2&gt;&lt;p&gt;通常のターミナルユーザーにとって、Warp に注目する意味は、ターミナルがコマンドラインツールから AI ワークベンチへ変わりつつあるかもしれない点です。&lt;/p&gt;
&lt;p&gt;AI coding agent をよく使う人にとって、Warp は複数 agent を管理しようとしている点で注目に値します。単なるチャット入口ではありません。&lt;/p&gt;
&lt;p&gt;オープンソースメンテナーなら、Oz for OSS の流れを見る価値があります。agent による issue triage、PR review、コミュニティ協作、貢献者案内を試みています。&lt;/p&gt;
&lt;p&gt;Rust 開発者にとって、Warp は大型の実例デスクトップアプリです。UI、ターミナル、クラウド同期、AI 統合、クロスプラットフォームコードの構成を研究できます。&lt;/p&gt;
&lt;p&gt;単に従来のターミナルをすぐ置き換えたいだけなら、まず正式版をダウンロードして使い、その後でソースを読むか決めるのがよいでしょう。ソースから直接ビルドするのは、貢献者や深いユーザー向けです。&lt;/p&gt;
&lt;h2 id=&#34;短評&#34;&gt;短評
&lt;/h2&gt;&lt;p&gt;Warp のオープンソース化の要点は、「現代的なターミナルがオープンソースになった」だけではありません。&lt;/p&gt;
&lt;p&gt;より正確には、Warp はターミナルを agentic development environment へアップグレードしようとしています。ターミナルが shell、コードベース、コマンド実行、agent、issue、PR、協作フローをつなぐ役割を担う、という考え方です。&lt;/p&gt;
&lt;p&gt;AI coding agent がさらに増える中で、開発環境の入口は変わるかもしれません。以前は IDE が開発体験を支配し、ターミナルはコマンド実行を担っていました。今後はターミナルが agent 協作の中心になる可能性があります。Warp のリポジトリは、その可能性を探っています。&lt;/p&gt;
&lt;h2 id=&#34;関連リンク&#34;&gt;関連リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub リポジトリ：&lt;a class=&#34;link&#34; href=&#34;https://github.com/warpdotdev/warp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/warpdotdev/warp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Warp 公式サイト：&lt;a class=&#34;link&#34; href=&#34;https://www.warp.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.warp.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Warp ドキュメント：&lt;a class=&#34;link&#34; href=&#34;https://docs.warp.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.warp.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Warp ビルド概要：&lt;a class=&#34;link&#34; href=&#34;https://build.warp.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://build.warp.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WARP.md：&lt;a class=&#34;link&#34; href=&#34;https://github.com/warpdotdev/warp/blob/master/WARP.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/warpdotdev/warp/blob/master/WARP.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CONTRIBUTING.md：&lt;a class=&#34;link&#34; href=&#34;https://github.com/warpdotdev/warp/blob/master/CONTRIBUTING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/warpdotdev/warp/blob/master/CONTRIBUTING.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex App 入門ガイド：インストール、サンドボックス、並列タスク、Skills、MCP</title>
        <link>https://knightli.com/ja/2026/05/06/codex-app-complete-guide-skills-mcp/</link>
        <pubDate>Wed, 06 May 2026 08:41:17 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/06/codex-app-complete-guide-skills-mcp/</guid>
        <description>&lt;p&gt;Codex App は、AI コーディング向けのタスクワークスペースと考えると分かりやすい。従来の IDE でも、単なるチャット画面でもなく、マルチタスク、プロジェクト管理、サンドボックス権限、Git、クラウド実行、プラグイン、Skills、MCP、自動化を 1 つのインターフェイスにまとめている。&lt;/p&gt;
&lt;p&gt;すでに Codex CLI、Claude Code、Cursor、その他の coding agent を使っているなら、Codex App の最も注目すべき点は、「複数の agent を並列に動かす」ことをより明確なデスクトップワークフローにしている点だ。&lt;/p&gt;
&lt;h2 id=&#34;codex-app-が向いていること&#34;&gt;Codex App が向いていること
&lt;/h2&gt;&lt;p&gt;Codex App の価値は、AI に質問へ答えさせることではなく、プロジェクトディレクトリ内で継続的にタスクを実行させることにある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コードを編集し、コマンドを実行し、開発サーバーを起動する。&lt;/li&gt;
&lt;li&gt;複数のプロジェクトと複数のタスクを管理する。&lt;/li&gt;
&lt;li&gt;ローカルまたはクラウドで長いタスクを実行する。&lt;/li&gt;
&lt;li&gt;プラグイン、Skills、MCP を呼び出して能力を拡張する。&lt;/li&gt;
&lt;li&gt;Git、worktree、PR で変更を管理する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI も Codex App を複数の coding agent を管理するためのインターフェイスとして位置付けている。複数のコードタスクを同時に進める人に向いており、特にフロントエンドページ、スクリプト、小規模アプリ、ドキュメント整理、自動化ワークフローと相性がよい。&lt;/p&gt;
&lt;h2 id=&#34;インストール前の準備&#34;&gt;インストール前の準備
&lt;/h2&gt;&lt;p&gt;Codex App を使う前に、次の 3 つの基本ツールを用意しておくとよい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Node.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VS Code&lt;/code&gt; または普段使っている IDE&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Codex App は macOS と Windows をサポートしている。インストール後は ChatGPT アカウントでログインする。初回起動時には、プログラミングや日常作業など主な利用シナリオを選択できる。Codex は選択内容に応じて一部のプラグインと Skills を事前に入れ、後から設定やプラグインマーケットで調整できる。&lt;/p&gt;
&lt;p&gt;Windows と macOS の主な機能はおおむね同じだが、一部のコンピューター自動化機能はプラットフォームやプラグイン対応に依存する。実際には現在のバージョンに表示される内容を基準にする。&lt;/p&gt;
&lt;h2 id=&#34;インターフェイス構造プロジェクトタスクチャット&#34;&gt;インターフェイス構造：プロジェクト、タスク、チャット
&lt;/h2&gt;&lt;p&gt;Codex App は典型的な 3 カラム構成になっている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左側：プロジェクト、タスク、過去のチャット、プラグイン、自動化への入口。&lt;/li&gt;
&lt;li&gt;中央：現在のチャット画面。&lt;/li&gt;
&lt;li&gt;右側：ファイル、ブラウザー、ターミナル、実行結果などの多機能領域。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1 つのプロジェクトは通常、ローカルフォルダーに対応する。同じプロジェクト内で複数のチャットを開くことも、複数のプロジェクトを同時に開き、異なる agent に並列で作業させることもできる。&lt;/p&gt;
&lt;p&gt;タスクリストには状態が表示される。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;実行中：agent がまだ作業している。&lt;/li&gt;
&lt;li&gt;承認待ち：権限、ネットワーク、依存関係インストール、高リスク操作の確認が必要。&lt;/li&gt;
&lt;li&gt;完了：タスクが終了し、結果確認や追加質問ができる。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;複数のターミナルを行き来するより直感的で、複数の AI タスクを同時に管理しやすい。&lt;/p&gt;
&lt;h2 id=&#34;サンドボックスと権限管理&#34;&gt;サンドボックスと権限管理
&lt;/h2&gt;&lt;p&gt;Codex App の権限体系はサンドボックスを中心にしている。デフォルトでは、現在のプロジェクトフォルダーが agent の主な作業範囲になる。&lt;/p&gt;
&lt;p&gt;一般的な権限境界は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクトディレクトリ内のファイルを読み書きできる。&lt;/li&gt;
&lt;li&gt;デフォルトではプロジェクト外のファイルを自由に変更できない。&lt;/li&gt;
&lt;li&gt;ネットワークや高リスクコマンドはデフォルトで制限される。&lt;/li&gt;
&lt;li&gt;権限昇格が必要な場合はユーザーに承認を求める。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;実用的なのは「自動レビュー」モードだ。低リスク操作は自動で許可し、高リスク操作はユーザー確認に回す。これにより頻繁なポップアップを減らしつつ、危険な操作が知らないうちに実行されることを防げる。&lt;/p&gt;
&lt;p&gt;「完全アクセス」は慎重に使うべきだ。agent が何をする必要があるか明確で、プロジェクトが Git でバックアップされ、重要ファイルにも別のバックアップがある場合に向いている。日常的に常時有効にするのはおすすめしない。&lt;/p&gt;
&lt;h2 id=&#34;コンテキストモデル利用枠&#34;&gt;コンテキスト、モデル、利用枠
&lt;/h2&gt;&lt;p&gt;Codex App は現在のチャットのコンテキスト使用状況を表示する。会話が長く、履歴が多いほど、モデルが処理するコンテキストも大きくなる。&lt;/p&gt;
&lt;p&gt;実用的な習慣は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 つのタスクが終わったら新しいチャットを開く。&lt;/li&gt;
&lt;li&gt;長い会話は手動圧縮できるが、圧縮を万能の記憶と考えない。&lt;/li&gt;
&lt;li&gt;複雑なタスクでは、目的、境界、受け入れ条件を先に明確にする。&lt;/li&gt;
&lt;li&gt;関係ない大量のログ、エラー、ファイルを一度に詰め込まない。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;モデル選択では、タスクの複雑さに応じて推論強度を調整する。簡単な修正、文章整理、反復タスクは必ずしも最高性能モデルを必要としない。アーキテクチャ移行、難しいバグ、複数ファイルにまたがるリファクタリングには、より強いモデルが向いている。&lt;/p&gt;
&lt;p&gt;高速モードがある場合は、通常より利用枠を多く消費する点に注意する。急ぎの時には有効だが、日常のデフォルトにする必要はない。&lt;/p&gt;
&lt;h2 id=&#34;画像生成とマルチモーダル入力&#34;&gt;画像生成とマルチモーダル入力
&lt;/h2&gt;&lt;p&gt;Codex App は画像やファイルをコンテキストとして受け取ることができ、適切な場面では画像生成能力も呼び出せる。&lt;/p&gt;
&lt;p&gt;これはフロントエンドやコンテンツ系プロジェクトで役立つ。たとえば Codex に次のことを依頼できる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;スクリーンショットをもとにページスタイルを修正する。&lt;/li&gt;
&lt;li&gt;Web ページ内の不適切な画像を置き換える。&lt;/li&gt;
&lt;li&gt;商品画像、カルーセル画像、ページ素材を生成する。&lt;/li&gt;
&lt;li&gt;UI スクリーンショットから修正すべき位置を指摘する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;より効率的なのは、「もっときれいにして」とだけ言うのではなく、スクリーンショットを使って具体的な問題を示すことだ。たとえば「このカードの余白が大きすぎる」「この画像はサービスシーンに合っていない」「地図エリアをもっと分かりやすくする」といった指示がよい。&lt;/p&gt;
&lt;h2 id=&#34;steer実行中に方向を修正する&#34;&gt;Steer：実行中に方向を修正する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Steer&lt;/code&gt; は、実行中に方向を引き受ける機能と考えるとよい。agent がすでに作業を始めた後で、方向を誤解していると気づいた場合、すべて終わるまで待ってから直す必要はない。&lt;/p&gt;
&lt;p&gt;この機能を使うと、新しい指示を現在の実行フローに挿入し、Codex に進路を修正させられる。&lt;/p&gt;
&lt;p&gt;Steer が向いている場面は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agent が要件を誤解した。&lt;/li&gt;
&lt;li&gt;生成されたページのスタイルが明らかに違う。&lt;/li&gt;
&lt;li&gt;実行中の案が重すぎる、またはコストが高すぎる。&lt;/li&gt;
&lt;li&gt;途中で重要な制約を追加する必要がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常はデフォルトのキュー動作を維持し、本当に介入が必要な時だけ手動で Steer を使うのがよい。通常のタスクを乱さず、重要な場面で方向を戻せる。&lt;/p&gt;
&lt;h2 id=&#34;計画モードと内蔵ブラウザー&#34;&gt;計画モードと内蔵ブラウザー
&lt;/h2&gt;&lt;p&gt;複雑なタスクでは、まず計画モードを使うのがよい。計画モードでは Codex はすぐにコードを変更せず、先に計画を出し、必要ならカード形式で重要な選択肢を確認する。&lt;/p&gt;
&lt;p&gt;計画モードに向いているタスクは次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React プロジェクトを Next.js に移すようなフレームワーク移行。&lt;/li&gt;
&lt;li&gt;大規模リファクタリング。&lt;/li&gt;
&lt;li&gt;データベース、認証、デプロイを含む機能。&lt;/li&gt;
&lt;li&gt;技術方針がまだ固まっていない要件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Codex App の右側領域では内蔵ブラウザーを開き、ローカル開発サーバーをプレビューできる。ページ上で注釈を付け、具体的な UI 位置に応じて Codex に修正させられる。この「ページを見る、位置を指す、AI に直させる」流れは、純粋な文章説明よりフロントエンドデバッグに向いている。&lt;/p&gt;
&lt;h2 id=&#34;gitideコードのロールバック&#34;&gt;Git、IDE、コードのロールバック
&lt;/h2&gt;&lt;p&gt;Codex App は完全な IDE ではない。コード閲覧や注釈はできるが、手作業での編集は VS Code、Cursor、Windsurf などの IDE の方が向いている。&lt;/p&gt;
&lt;p&gt;Codex プロジェクトでは早めに Git を初期化しておくとよい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Codex に &lt;code&gt;.gitignore&lt;/code&gt; を作成または確認させる。&lt;/li&gt;
&lt;li&gt;使える状態になったら一度コミットする。&lt;/li&gt;
&lt;li&gt;大きな変更の前にはクリーンなコミット地点を作る。&lt;/li&gt;
&lt;li&gt;不満があれば Git でコードを戻す。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;チャット履歴だけを戻しても、コードは自動では戻らない。安定した方法は、チャットを適切な地点へ戻し、コードは Git commit hash で対応する状態へ戻すことだ。&lt;/p&gt;
&lt;h2 id=&#34;worktree複数方向の並列開発&#34;&gt;Worktree：複数方向の並列開発
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git worktree&lt;/code&gt; は Codex App で並列 agent を使う際に非常に相性がよい。&lt;/p&gt;
&lt;p&gt;本質的には、同じリポジトリから複数の独立した作業ディレクトリを作り、それぞれを別ブランチに対応させる仕組みだ。これにより、異なる agent を別フォルダーで同時に作業させても互いに上書きしない。&lt;/p&gt;
&lt;p&gt;典型的な使い方は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 つの worktree で顧客レビューコンポーネントを改善する。&lt;/li&gt;
&lt;li&gt;1 つの worktree で店舗情報と地図レイアウトを調整する。&lt;/li&gt;
&lt;li&gt;2 つのタスクが終わったらそれぞれ main へマージする。&lt;/li&gt;
&lt;li&gt;マージ後に一時 worktree を削除する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同じディレクトリで複数 agent に同時編集させるよりずっと安定する。競合が出た場合も、通常の Git フローで review と merge を行えばよい。&lt;/p&gt;
&lt;h2 id=&#34;クラウド実行環境&#34;&gt;クラウド実行環境
&lt;/h2&gt;&lt;p&gt;Codex はローカルだけでなく、クラウド環境にもタスクを委任できる。&lt;/p&gt;
&lt;p&gt;クラウド実行が向いている場面は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;外出中で手元にスマートフォンしかない。&lt;/li&gt;
&lt;li&gt;agent に長いタスクをバックグラウンドで実行させたい。&lt;/li&gt;
&lt;li&gt;コードがすでに GitHub に同期されており、Codex にリモートリポジトリを変更させたい。&lt;/li&gt;
&lt;li&gt;PR 形式で変更を確認してマージしたい。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型的な流れは、ローカルコードを GitHub に push し、Codex がクラウド環境でリポジトリを取得してタスクを実行し、変更を生成し、PR または diff としてレビューに出すというものだ。&lt;/p&gt;
&lt;p&gt;ローカルで開発を続ける場合は、リモートの最新変更を取り込むことを忘れない。&lt;/p&gt;
&lt;h2 id=&#34;記憶システムagentsmd-を整える&#34;&gt;記憶システム：AGENTS.md を整える
&lt;/h2&gt;&lt;p&gt;新しいチャットはデフォルトでは完全な履歴記憶を持たない。プロジェクトが複雑になると、毎回背景を説明し直すのは非効率だ。&lt;/p&gt;
&lt;p&gt;最も汎用的な方法は、プロジェクトルートに &lt;code&gt;AGENTS.md&lt;/code&gt; を置くことだ。このファイルには次の内容を記録できる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクトの目的と主要技術スタック。&lt;/li&gt;
&lt;li&gt;よく使うコマンド。&lt;/li&gt;
&lt;li&gt;ディレクトリ構成。&lt;/li&gt;
&lt;li&gt;コードスタイルと命名規則。&lt;/li&gt;
&lt;li&gt;禁止事項、たとえばファイルの一括削除を避けること。&lt;/li&gt;
&lt;li&gt;テスト、ビルド、デプロイルール。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Codex にプロジェクトを読ませて &lt;code&gt;AGENTS.md&lt;/code&gt; の初版を生成させ、人間が確認する方法もよい。複雑なプロジェクトでは、このファイルを維持する価値が高い。&lt;/p&gt;
&lt;p&gt;グローバルルールは慎重に使う。全プロジェクトに共通する安全制約、たとえば「ディレクトリを再帰的に削除しない」「破壊的操作の前に確認する」などに向いている。特定プロジェクトの細部をグローバルルールに入れると、他のプロジェクトを汚染する。&lt;/p&gt;
&lt;h2 id=&#34;プラグインと自動化&#34;&gt;プラグインと自動化
&lt;/h2&gt;&lt;p&gt;プラグインは、GitHub、Gmail、Google Drive、データベース、デプロイ基盤など外部サービスを Codex に接続する。&lt;/p&gt;
&lt;p&gt;価値はコピー&amp;amp;ペーストを減らすことだ。たとえば Codex に次のことをさせられる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub リポジトリの star 推移を確認する。&lt;/li&gt;
&lt;li&gt;メール内容を整理して自分に送る。&lt;/li&gt;
&lt;li&gt;定期的なチェックを実行する。&lt;/li&gt;
&lt;li&gt;結果を要約として書く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自動化は繰り返しタスクに向いている。たとえば毎週金曜午後にリポジトリデータを確認し、メールレポートを送るような用途だ。簡単な自動化タスクには最高性能モデルは不要で、軽量モデルで十分なことが多い。&lt;/p&gt;
&lt;h2 id=&#34;skillsワークフローを再利用可能な能力にする&#34;&gt;Skills：ワークフローを再利用可能な能力にする
&lt;/h2&gt;&lt;p&gt;Skills は Codex の「専門的な手順書」だ。一回限りのプロンプトではなく、ある種類のタスクの流れ、規則、スクリプト、注意点をまとめ、Codex が後で安定して再利用できるようにする。&lt;/p&gt;
&lt;p&gt;主な入手元は次の 3 種類。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公式 Skills。&lt;/li&gt;
&lt;li&gt;サードパーティ Skills。&lt;/li&gt;
&lt;li&gt;自分で書いた Skills。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skill 化に向いている作業は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;字幕を図解付きノートにする。&lt;/li&gt;
&lt;li&gt;会社の形式で週報を書く。&lt;/li&gt;
&lt;li&gt;画像や文書を一括処理する。&lt;/li&gt;
&lt;li&gt;固定形式のコードレビュー。&lt;/li&gt;
&lt;li&gt;特定フレームワークのプロジェクト初期化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同じプロンプトを何度もコピーしているなら、Skill にする価値がある。&lt;/p&gt;
&lt;h2 id=&#34;mcp外部ツールとデータベースを接続する&#34;&gt;MCP：外部ツールとデータベースを接続する
&lt;/h2&gt;&lt;p&gt;MCP は、大規模モデル向けの標準化されたツールプロトコルと考えられる。MCP を通じて、Codex は外部サービスを呼び出し、より具体的なタスクを完了できる。&lt;/p&gt;
&lt;p&gt;たとえば Supabase を接続すると、Codex に次のことをさせられる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;データベーステーブルを作成する。&lt;/li&gt;
&lt;li&gt;データベーススキーマを読む。&lt;/li&gt;
&lt;li&gt;バックエンドエンドポイントを変更する。&lt;/li&gt;
&lt;li&gt;フロントエンドフォームをデータベースへ送信する。&lt;/li&gt;
&lt;li&gt;データベース状態に基づいて問題をデバッグする。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは強力だが、権限境界に注意が必要だ。データベース、本番環境、デプロイ基盤、メールアカウントは高リスク資源である。初回接続時はテストプロジェクトと低権限アカウントを使うのがよい。&lt;/p&gt;
&lt;h2 id=&#34;デプロイプラグイン&#34;&gt;デプロイプラグイン
&lt;/h2&gt;&lt;p&gt;デプロイ基盤のプラグインを使うと、Codex がビルドと公開を直接完了できる。たとえばフロントエンドプロジェクトを Netlify のような平台へデプロイできる。&lt;/p&gt;
&lt;p&gt;この種のプラグインは、小規模サイト、プロトタイプ、社内ツール、デモプロジェクトに向いている。実際に使う時は次の点に注意する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;デプロイ前にローカルビルドを実行する。&lt;/li&gt;
&lt;li&gt;環境変数をコードへ直接書かない。&lt;/li&gt;
&lt;li&gt;公開後にページが正常に開くか確認する。&lt;/li&gt;
&lt;li&gt;本番プロジェクトでは人間の review を残す。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI は公開フローをつなぐ助けになるが、デプロイ権限は慎重に管理すべきだ。&lt;/p&gt;
&lt;h2 id=&#34;コンピューター自動化&#34;&gt;コンピューター自動化
&lt;/h2&gt;&lt;p&gt;対応プラットフォームとプラグイン環境では、Codex がブラウザーやデスクトップアプリを操作し、RPA に近いタスクを実行できる。&lt;/p&gt;
&lt;p&gt;例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;チャットアプリを開いてメッセージを準備する。&lt;/li&gt;
&lt;li&gt;プロジェクトボードを閲覧し、タスク状態を要約する。&lt;/li&gt;
&lt;li&gt;英語のブリーフを生成する。&lt;/li&gt;
&lt;li&gt;確認後、指定相手へ送信する。&lt;/li&gt;
&lt;li&gt;この流れをスケジュール自動化にする。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この機能は想像力を広げるが、最も強い安全境界も必要だ。メッセージ送信、メール送信、フォーム送信、支払い、データ削除に関わる操作では、人間の確認を残すべきだ。&lt;/p&gt;
&lt;h2 id=&#34;使い方の提案&#34;&gt;使い方の提案
&lt;/h2&gt;&lt;p&gt;Codex App の正しい使い方は、すべてを一度に完全自動化させることではない。タスクを明確に分解し、制御された環境で効率よく実行させることだ。&lt;/p&gt;
&lt;p&gt;おすすめの習慣：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;すべてのプロジェクトで最初に Git を初期化する。&lt;/li&gt;
&lt;li&gt;複雑なタスクでは計画モードを使う。&lt;/li&gt;
&lt;li&gt;並列タスクでは worktree を優先する。&lt;/li&gt;
&lt;li&gt;プロジェクトルールを &lt;code&gt;AGENTS.md&lt;/code&gt; に書く。&lt;/li&gt;
&lt;li&gt;高リスク操作では人間の確認を残す。&lt;/li&gt;
&lt;li&gt;繰り返しワークフローを Skill や自動化にする。&lt;/li&gt;
&lt;li&gt;プラグインと MCP はまずテスト環境で検証する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考資料&#34;&gt;参考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-the-codex-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing the Codex app - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11369540-codex-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Codex with your ChatGPT plan - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/academy/codex-plugins-and-skills/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Plugins and skills - OpenAI Academy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Codex App の本質は「もう 1 つの AI チャット画面」ではない。AI コーディングを管理可能なワークスペースにすることだ。ローカルプロジェクト、クラウドタスク、Git、worktree、プラグイン、Skills、MCP、自動化をつなげられる。&lt;/p&gt;
&lt;p&gt;うまく使う鍵は、「任せること」と「制御すること」のバランスを取ることだ。小さなタスクは大胆に Codex に渡し、複雑なタスクはまず計画させ、高リスク操作は必ず確認する。そうすれば Codex は、コードを書く助手から、長期的に協力できるエンジニアリングツールへ近づく。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Cline で DeepSeek V4 Pro を呼び出す方法</title>
        <link>https://knightli.com/ja/2026/05/01/use-deepseek-v4-pro-in-cline/</link>
        <pubDate>Fri, 01 May 2026 20:59:06 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/use-deepseek-v4-pro-in-cline/</guid>
        <description>&lt;p&gt;Cline はすでに OpenAI Compatible Provider をサポートしています。
DeepSeek API も OpenAI SDK 風の呼び出しに対応しているため、&lt;code&gt;deepseek-v4-pro&lt;/code&gt; を Cline に接続するのは難しくありません。OpenAI Compatible を選び、DeepSeek の Base URL、API Key、モデル名を入力すればよいだけです。&lt;/p&gt;
&lt;p&gt;以下では、VS Code 拡張機能の画面と Cline CLI の 2 通りで整理します。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-api-key-を準備する&#34;&gt;DeepSeek API Key を準備する
&lt;/h2&gt;&lt;p&gt;まず DeepSeek の開放プラットフォームで API Key を作成します。&lt;/p&gt;
&lt;p&gt;必要な値は 3 つです。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;項目&lt;/th&gt;
          &lt;th&gt;入力内容&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Provider&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;OpenAI Compatible&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Base URL&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;https://api.deepseek.com&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Model ID&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;DeepSeek の公式ドキュメントでは、V4 シリーズは既存の OpenAI 互換インターフェースを使い、&lt;code&gt;base_url&lt;/code&gt; は &lt;code&gt;https://api.deepseek.com&lt;/code&gt; のまま、呼び出し時に &lt;code&gt;model&lt;/code&gt; を &lt;code&gt;deepseek-v4-pro&lt;/code&gt; または &lt;code&gt;deepseek-v4-flash&lt;/code&gt; に設定すると説明されています。&lt;/p&gt;
&lt;h2 id=&#34;cline-拡張機能で設定する&#34;&gt;Cline 拡張機能で設定する
&lt;/h2&gt;&lt;p&gt;VS Code の Cline 拡張機能を使っている場合は、次の手順で設定できます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;VS Code サイドバーの Cline を開く。&lt;/li&gt;
&lt;li&gt;Cline の設定またはモデル設定ページに入る。&lt;/li&gt;
&lt;li&gt;Provider で &lt;code&gt;OpenAI Compatible&lt;/code&gt; を選ぶ。&lt;/li&gt;
&lt;li&gt;API Key に DeepSeek API Key を入力する。&lt;/li&gt;
&lt;li&gt;Base URL に次を入力する。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Model ID に次を入力する。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;設定を保存し、Cline のチャット画面に戻って簡単なタスクでテストする。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;まずは低リスクな読み取り専用タスクを試すとよいです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;現在のプロジェクトのディレクトリ構造を読み取り、このプロジェクトがどの種類のものか要約してください。ファイルは一切変更しないでください。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;正常に読み取りと回答ができれば、モデルの接続は通っています。&lt;/p&gt;
&lt;h2 id=&#34;cline-cli-で設定する&#34;&gt;Cline CLI で設定する
&lt;/h2&gt;&lt;p&gt;Cline CLI を使う場合は、&lt;code&gt;cline provider configure openai-compatible&lt;/code&gt; で対話式設定に入れます。&lt;/p&gt;
&lt;p&gt;例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cline provider configure openai-compatible
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;対話中に次を入力します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;設定後、読み取り専用タスクでテストできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cline &lt;span class=&#34;s2&#34;&gt;&amp;#34;Summarize this repository structure without changing files.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;まずコストを下げたい場合は、Model ID を一時的に次へ変更してもよいです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-flash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;複雑な計画、事実確認、複数ツールの協調、高リスクなコード変更が必要になったら、&lt;code&gt;deepseek-v4-pro&lt;/code&gt; に戻します。&lt;/p&gt;
&lt;h2 id=&#34;推奨するモデルの使い分け&#34;&gt;推奨するモデルの使い分け
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro と Flash は、役割を分けて使うほうが向いています。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;モデル&lt;/th&gt;
          &lt;th&gt;向いている場面&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;日常的なコード読解、小さな修正の一括処理、スクリプト生成、コンテキスト整理、低リスクなフロントエンド修正&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;アーキテクチャ設計、複雑な bug、複数ファイルのリファクタリング、事実確認、複数ツール呼び出し、高リスクな変更&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cline のような Agent ツールでは、主なコストは長いコンテキスト、繰り返しのファイル読み取り、計画生成、複数ラウンドのツール呼び出しから発生します。
軽いタスクなら Flash で量をこなし、より強い判断が必要なときに Pro へ切り替えるのが現実的です。&lt;/p&gt;
&lt;h2 id=&#34;コンテキスト長はどう設定するか&#34;&gt;コンテキスト長はどう設定するか
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro と Flash はどちらも長いコンテキストをサポートします。
Cline で context window を手動入力する必要がある場合は、DeepSeek 公式モデルページにある 1M コンテキストを目安にできます。&lt;/p&gt;
&lt;p&gt;実際には、最初からすべてのファイルをコンテキストに入れることはおすすめしません。
Cline はタスクに応じてファイルを読み取るため、通常は次の流れがよいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;まずディレクトリ構造を確認させる；&lt;/li&gt;
&lt;li&gt;次に関連ファイルを特定させる；&lt;/li&gt;
&lt;li&gt;最後に対象ファイルだけを中心に修正させる。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このほうが Token を節約でき、タスクの境界も明確に保ちやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;よくある問題&#34;&gt;よくある問題
&lt;/h2&gt;&lt;h3 id=&#34;1-モデルが存在しないと表示される&#34;&gt;1. モデルが存在しないと表示される
&lt;/h3&gt;&lt;p&gt;まず Model ID が次のように書かれているか確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;、&lt;code&gt;deepseek-v4&lt;/code&gt;、その他の表示名を書かないでください。&lt;/p&gt;
&lt;h3 id=&#34;2-401-または認証失敗が出る&#34;&gt;2. 401 または認証失敗が出る
&lt;/h3&gt;&lt;p&gt;API Key を確認します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全にコピーできているか；&lt;/li&gt;
&lt;li&gt;余計な空白が入っていないか；&lt;/li&gt;
&lt;li&gt;Cline が現在使っている provider 設定に入力されているか；&lt;/li&gt;
&lt;li&gt;DeepSeek アカウントに利用可能な残高があるか。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-接続失敗と表示される&#34;&gt;3. 接続失敗と表示される
&lt;/h3&gt;&lt;p&gt;Base URL を確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;末尾に &lt;code&gt;/v1/chat/completions&lt;/code&gt; を追加しないでください。
Cline の OpenAI Compatible Provider が互換インターフェースのリクエストを自分で組み立てます。&lt;/p&gt;
&lt;h3 id=&#34;4-cline-の呼び出しが高くつく&#34;&gt;4. Cline の呼び出しが高くつく
&lt;/h3&gt;&lt;p&gt;日常タスクは &lt;code&gt;deepseek-v4-flash&lt;/code&gt; に切り替え、複雑なタスクだけ &lt;code&gt;deepseek-v4-pro&lt;/code&gt; を使うとよいです。&lt;/p&gt;
&lt;p&gt;また、タスク説明はできるだけ明確に書きます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ログインページ関連ファイルだけを修正してください。無関係なモジュールはリファクタリングしないでください。まず計画を提示し、確認後にコードを変更してください。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agent タスクで最も危ないのは境界が曖昧なことです。
境界が明確なほど、読むファイルが少なくなり、ツール呼び出しも減り、コストを制御しやすくなります。&lt;/p&gt;
&lt;h3 id=&#34;5-reasoning_content-must-be-passed-back-エラー&#34;&gt;5. reasoning_content must be passed back エラー
&lt;/h3&gt;&lt;p&gt;次のようなエラーが出る場合があります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;400 The `reasoning_content` in the thinking mode must be passed back to the API.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;invalid_request_error&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;modelId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-pro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは通常、Key、残高、Base URL の問題ではありません。DeepSeek V4 Pro の thinking mode と、現在のクライアント側の複数ラウンドのツール呼び出し履歴が一致していないことが原因です。&lt;/p&gt;
&lt;p&gt;DeepSeek の公式ドキュメントでは、次のように説明されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;thinking mode はデフォルトで &lt;code&gt;enabled&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;thinking mode では &lt;code&gt;reasoning_content&lt;/code&gt; が返る；&lt;/li&gt;
&lt;li&gt;あるラウンドで tool call が発生した場合、以降のリクエストではその assistant message 内の &lt;code&gt;reasoning_content&lt;/code&gt; を API に一緒に返す必要がある；&lt;/li&gt;
&lt;li&gt;クライアントが正しく返さない場合、400 が返る。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cline が OpenAI Compatible Provider 経由で接続している場合、現在のバージョンが DeepSeek の &lt;code&gt;reasoning_content&lt;/code&gt; を完全に保持して返していないと、2 ラウンド目やツール呼び出し後にこのエラーが出ることがあります。&lt;/p&gt;
&lt;p&gt;試す順序は次のとおりです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まず Cline を最新版に更新する；&lt;/li&gt;
&lt;li&gt;通常の &lt;code&gt;OpenAI&lt;/code&gt; provider ではなく、&lt;code&gt;OpenAI Compatible&lt;/code&gt; を使っていることを確認する；&lt;/li&gt;
&lt;li&gt;Cline がカスタム request body をサポートしている場合、thinking mode を無効化してみる：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;thinking&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;disabled&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Cline が追加 body パラメータをサポートしていない場合は、当面この問題を起こさないモデルまたは互換プロキシサービスを使う；&lt;/li&gt;
&lt;li&gt;Cline が DeepSeek V4 の &lt;code&gt;reasoning_content&lt;/code&gt; 返送に対応したら、&lt;code&gt;deepseek-v4-pro&lt;/code&gt; に戻す。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意点として、thinking mode を無効にすると複雑な推論能力の一部は落ちますが、クライアントが &lt;code&gt;reasoning_content&lt;/code&gt; を返さない互換性問題は回避できます。&lt;/p&gt;
&lt;h2 id=&#34;そのままコピーできる設定&#34;&gt;そのままコピーできる設定
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provider: OpenAI Compatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-あなたの DeepSeek API Key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;低コストモードにする場合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provider: OpenAI Compatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-あなたの DeepSeek API Key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-flash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Cline で DeepSeek V4 Pro を呼び出す要点は 3 つだけです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provider で &lt;code&gt;OpenAI Compatible&lt;/code&gt; を選ぶ；&lt;/li&gt;
&lt;li&gt;Base URL に &lt;code&gt;https://api.deepseek.com&lt;/code&gt; を入力する；&lt;/li&gt;
&lt;li&gt;Model ID に &lt;code&gt;deepseek-v4-pro&lt;/code&gt; を入力する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;設定後は、まず読み取り専用タスクでテストし、それから実際のコード変更を任せるのがおすすめです。
Agent タスクを頻繁に実行するなら、Flash と Pro を分けて使うとよいです。Flash は高頻度の軽量タスク、Pro は複雑な判断とフォールバックを担当します。&lt;/p&gt;
&lt;p&gt;参考情報：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.cline.bot/provider-config/openai-compatible&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cline Docs：OpenAI Compatible Provider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.cline.bot/provider-config/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cline Docs：Provider Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news202605&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/quick_start/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：Models &amp;amp; Pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>mattpocock/skills：AI コーディング Agent 向けの実用スキル集</title>
        <link>https://knightli.com/ja/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</link>
        <pubDate>Fri, 01 May 2026 03:43:20 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</guid>
        <description>&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; は、Matt Pocock が公開している AI コーディング agent skills のコレクションです。&lt;/p&gt;
&lt;p&gt;これは完全なアプリケーションでも、新しいチャットクライアントでもありません。AI コーディングアシスタントに使わせるための作業スキル集です。考え方は実用的です。AI コーディングでよく起こる問題を小さなスキルに分解し、Agent が適切なタスクで呼び出せるようにします。毎回巨大なプロンプトで無理に支えるのではありません。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor、または類似の AI コーディングツールをよく使うなら、この種の skills は注目する価値があります。AI コーディング体験に本当に影響するのは、「モデルがコードを書けるか」だけではなく、自分の作業方法に沿ってタスクを進められるかだからです。&lt;/p&gt;
&lt;h2 id=&#34;解決する問題&#34;&gt;解決する問題
&lt;/h2&gt;&lt;p&gt;AI コーディングアシスタントは強力ですが、問題も起こしやすいです。&lt;/p&gt;
&lt;p&gt;よくある状況は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要件を理解する前にコード変更を始める&lt;/li&gt;
&lt;li&gt;一度に多すぎるファイルを変更する&lt;/li&gt;
&lt;li&gt;説明は多いが、実際に有用な行動が少ない&lt;/li&gt;
&lt;li&gt;エラー後に場当たり的に試す&lt;/li&gt;
&lt;li&gt;テストやチェックをすぐに実行しない&lt;/li&gt;
&lt;li&gt;プロジェクト内の既存パターンを無視する&lt;/li&gt;
&lt;li&gt;タスク完了のために不要な抽象を導入する&lt;/li&gt;
&lt;li&gt;コードを書いた後に本当にリスクを review しない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらは必ずしもモデル能力不足ではありません。ワークフローが十分に制約されていないことが原因の場合も多いです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; の価値は、こうした失敗パターンを再利用可能な操作方法に分解し、Agent が場面に応じてより経験あるエンジニア協作者のように振る舞えるようにすることです。&lt;/p&gt;
&lt;h2 id=&#34;skills-とは何か&#34;&gt;Skills とは何か
&lt;/h2&gt;&lt;p&gt;AI Agent の文脈では、skill は再利用可能なタスク説明、作業方法、専門的なフローとして理解できます。&lt;/p&gt;
&lt;p&gt;必ずしもコードプラグインである必要はなく、外部サービスを呼び出す必要もありません。多くの場合、skill は明確なルールセットです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;いつ使うか&lt;/li&gt;
&lt;li&gt;まず何をするか&lt;/li&gt;
&lt;li&gt;何をしないか&lt;/li&gt;
&lt;li&gt;何を出力するか&lt;/li&gt;
&lt;li&gt;タスク完了をどう判断するか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは通常のプロンプトテンプレートに似ていますが、粒度は「タスク能力」に近いものです。&lt;/p&gt;
&lt;p&gt;通常のプロンプトテンプレートは、ユーザーが毎回一時的にコピーして貼り付けるものです。Skills は agent ツールボックスの一部として、Agent がタスクに応じて適切なフローを選ぶ形に向いています。&lt;/p&gt;
&lt;h2 id=&#34;小さく組み合わせ可能である理由&#34;&gt;小さく組み合わせ可能である理由
&lt;/h2&gt;&lt;p&gt;README では、これらの skills が小さく組み合わせ可能であることを強調しています。&lt;/p&gt;
&lt;p&gt;これは重要な方向性です。&lt;/p&gt;
&lt;p&gt;1 つの skill がすべてを担当しようとすると、すぐに新しい巨大プロンプトになります。長く、曖昧で、保守しにくいものです。小さなスキルの利点は境界が明確なことです。&lt;/p&gt;
&lt;p&gt;たとえば 1 つの skill は次のようなことだけに集中できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先に計画する&lt;/li&gt;
&lt;li&gt;TypeScript エラーを修正する&lt;/li&gt;
&lt;li&gt;テストを実行し、結果に基づいて修正する&lt;/li&gt;
&lt;li&gt;コード review を行う&lt;/li&gt;
&lt;li&gt;プロジェクト規約を要約する&lt;/li&gt;
&lt;li&gt;プロンプトを改善する&lt;/li&gt;
&lt;li&gt;不要な抽象を取り除く&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらのスキルはタスクに応じて組み合わせられます。単純なタスクなら 1 つ、複雑なタスクなら複数をつなげます。&lt;/p&gt;
&lt;p&gt;これは実際のエンジニアリング作業に近いです。すべての問題を同じフローで処理するのではなく、問題に応じてツールを選びます。&lt;/p&gt;
&lt;h2 id=&#34;エンジニアの制御を残す&#34;&gt;エンジニアの制御を残す
&lt;/h2&gt;&lt;p&gt;このリポジトリの重要な方向性の一つは、エンジニアが制御権を持ち続けることです。&lt;/p&gt;
&lt;p&gt;AI コーディングは、2 つの極端に寄りやすいです。&lt;/p&gt;
&lt;p&gt;1 つ目は完全に手動です。AI は数行のコードを書く手伝いをするだけで、コンテキスト、計画、検証はすべて自分が監視します。&lt;/p&gt;
&lt;p&gt;2 つ目は完全に放任です。タスクを Agent に投げ、大きく変更させ、最後にレビューしづらい diff と向き合います。&lt;/p&gt;
&lt;p&gt;skills はその中間に、より安定した位置を作ります。&lt;/p&gt;
&lt;p&gt;AI により多くの反復フローを任せつつ、ルールで制限します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;タスクを理解してから手を動かす&lt;/li&gt;
&lt;li&gt;関連ファイルを読んでから変更する&lt;/li&gt;
&lt;li&gt;変更範囲を制御可能にする&lt;/li&gt;
&lt;li&gt;不確実な場合は報告する&lt;/li&gt;
&lt;li&gt;変更後に検証する&lt;/li&gt;
&lt;li&gt;見せつけるために無関係なコードをリファクタリングしない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは AI を弱めるのではありません。AI の行動を人間がレビューし、引き継ぎやすくするものです。&lt;/p&gt;
&lt;h2 id=&#34;アラインメント問題&#34;&gt;アラインメント問題
&lt;/h2&gt;&lt;p&gt;AI コーディング失敗の最初の種類は、アラインメント失敗であることが多いです。&lt;/p&gt;
&lt;p&gt;ユーザーが求めているのは具体的な変更ですが、Agent はそれを大きなリファクタリングとして理解することがあります。ユーザーは Bug 修正だけを望んでいるのに、スタイルまで変更することがあります。既存アーキテクチャに従ってほしいのに、新しいパターンを導入することもあります。&lt;/p&gt;
&lt;p&gt;Skills はタスク開始時に Agent に次のことをさせられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目的を言い直す&lt;/li&gt;
&lt;li&gt;影響範囲を見つける&lt;/li&gt;
&lt;li&gt;既存の実装パターンを識別する&lt;/li&gt;
&lt;li&gt;計画を出す&lt;/li&gt;
&lt;li&gt;何をしないかを明確にする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これはエンジニアが作業開始前に行うセルフチェックに似ています。&lt;/p&gt;
&lt;p&gt;Agent がタスク境界を明確にしないままコードを書き始めると、後でどんどんズレやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;フィードバックループ問題&#34;&gt;フィードバックループ問題
&lt;/h2&gt;&lt;p&gt;AI のコード生成は一回だけに頼るべきではありません。&lt;/p&gt;
&lt;p&gt;実際の開発では、フィードバックループが重要です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;小さく変更する&lt;/li&gt;
&lt;li&gt;テストまたは型チェックを実行する&lt;/li&gt;
&lt;li&gt;エラーを見る&lt;/li&gt;
&lt;li&gt;修正する&lt;/li&gt;
&lt;li&gt;再検証する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;多くの Agent は途中のフィードバックを飛ばすために失敗します。一度に多くを変更し、感覚で「動くはず」とまとめます。&lt;/p&gt;
&lt;p&gt;Skills はフィードバックループを明示的にフローへ書き込めます。たとえば Agent に次のことを要求できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;変更後に関連チェックを実行する&lt;/li&gt;
&lt;li&gt;チェックが失敗したら、まずエラーメッセージを読む&lt;/li&gt;
&lt;li&gt;無関係なファイルを盲目的に変更しない&lt;/li&gt;
&lt;li&gt;各修正後に再検証する&lt;/li&gt;
&lt;li&gt;最後に検証結果を報告する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これにより AI コーディングは、一回限りの作文ではなく本物のデバッグに近づきます。&lt;/p&gt;
&lt;h2 id=&#34;アーキテクチャ制御問題&#34;&gt;アーキテクチャ制御問題
&lt;/h2&gt;&lt;p&gt;AI は抽象を生成するのが得意で、過剰に抽象を生成するのも得意です。&lt;/p&gt;
&lt;p&gt;小さな要件を満たすために、サービス層、ヘルパー関数、設定オブジェクト、型ラッパー、アダプターを新しく作り、最終的に要件そのものより複雑なコードにしてしまうことがあります。&lt;/p&gt;
&lt;p&gt;この問題は大規模プロジェクトで特に危険です。AI が生成した抽象は「専門的」に見えますが、既存のプロジェクトスタイルに合わず、保守コストを増やす可能性があります。&lt;/p&gt;
&lt;p&gt;良い skills は Agent に次のことを思い出させます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;既存パターンを優先する&lt;/li&gt;
&lt;li&gt;不必要な新しい抽象を導入しない&lt;/li&gt;
&lt;li&gt;無関係な領域をついでにリファクタリングしない&lt;/li&gt;
&lt;li&gt;変更をタスク規模に合わせる&lt;/li&gt;
&lt;li&gt;コードを理解してから構造を設計する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これにより、「見た目はエンジニアリングっぽいが実際は保守しにくい」出力を減らせます。&lt;/p&gt;
&lt;h2 id=&#34;review-skill-が重要な理由&#34;&gt;Review skill が重要な理由
&lt;/h2&gt;&lt;p&gt;コードを書くこととコードを review することは別の状態です。&lt;/p&gt;
&lt;p&gt;Agent がコードを書くとき、自分の実装が成立することを説明しがちです。なぜこの変更で動くかは説明しますが、必ずしもリスクを探すわけではありません。&lt;/p&gt;
&lt;p&gt;Review skill の意味は、Agent の役割を切り替えることです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;潜在 Bug を探す&lt;/li&gt;
&lt;li&gt;振る舞いの回帰を探す&lt;/li&gt;
&lt;li&gt;足りないテストを探す&lt;/li&gt;
&lt;li&gt;境界条件を探す&lt;/li&gt;
&lt;li&gt;複雑度の上昇を探す&lt;/li&gt;
&lt;li&gt;既存規約と不一致な箇所を探す&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは AI コーディングで重要です。AI はコードを高速に生成するため、review がないとユーザーは大量の diff に埋もれやすくなります。&lt;/p&gt;
&lt;p&gt;良い review 出力は、まず問題を列挙すべきです。先に実装を褒める必要はありません。エンジニアがその変更をマージできるか判断する助けになるべきです。&lt;/p&gt;
&lt;h2 id=&#34;通常の-rules-ファイルとの違い&#34;&gt;通常の rules ファイルとの違い
&lt;/h2&gt;&lt;p&gt;多くの AI コーディングツールは rules、instructions、memory をサポートしています。&lt;/p&gt;
&lt;p&gt;これらのファイルは通常、長期ルールを記録します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト技術スタック&lt;/li&gt;
&lt;li&gt;命名規約&lt;/li&gt;
&lt;li&gt;テストコマンド&lt;/li&gt;
&lt;li&gt;変更してはいけないディレクトリ&lt;/li&gt;
&lt;li&gt;回答スタイルの好み&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills はよりタスクフローに寄っています。&lt;/p&gt;
&lt;p&gt;rules は Agent に「長期的にどう振る舞うべきか」を伝えます。skills は Agent に「この種類のタスクをどう実行すべきか」を伝えます。&lt;/p&gt;
&lt;p&gt;両方を一緒に使うのがよいです。&lt;/p&gt;
&lt;p&gt;たとえば rules にプロジェクトが &lt;code&gt;pnpm test&lt;/code&gt; を使うと書き、review skill で変更後にテストカバレッジを確認するよう求めます。すると Agent はコマンドだけでなく、いつ使うべきかも理解します。&lt;/p&gt;
&lt;h2 id=&#34;向いている場面&#34;&gt;向いている場面
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; のようなリポジトリは次の場面に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI コーディングツールを頻繁に使う&lt;/li&gt;
&lt;li&gt;Agent に実コードベースを扱わせる&lt;/li&gt;
&lt;li&gt;AI の範囲外変更を減らしたい&lt;/li&gt;
&lt;li&gt;Agent により積極的に結果を検証させたい&lt;/li&gt;
&lt;li&gt;自分のエンジニアリング習慣を skills にしたい&lt;/li&gt;
&lt;li&gt;他人の agent workflows 設計を学びたい&lt;/li&gt;
&lt;li&gt;一時的なプロンプト群を保守可能な skill 集合に整理したい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たまに AI に小さな関数を書かせるだけなら、skills を専用に維持する必要はないかもしれません。&lt;/p&gt;
&lt;p&gt;しかし AI を長期的な開発パートナーとして扱うなら、skills は徐々に重要になります。Agent に再利用可能な作業方法を持たせるものだからです。&lt;/p&gt;
&lt;h2 id=&#34;このリポジトリから学べること&#34;&gt;このリポジトリから学べること
&lt;/h2&gt;&lt;p&gt;各 skill を直接使わなくても、このリポジトリからいくつか学べます。&lt;/p&gt;
&lt;p&gt;第一に、失敗パターンを書き出すことです。&lt;/p&gt;
&lt;p&gt;AI が間違えたときにその場で不満を言うだけではなく、よく間違えるパターンをルールに整理します。次回は skill に先回りして防がせます。&lt;/p&gt;
&lt;p&gt;第二に、スキルは短くすることです。&lt;/p&gt;
&lt;p&gt;1 つの skill は、1 つの明確な問題を解くのが理想です。短いほど正しく呼び出されやすく、保守しやすくなります。&lt;/p&gt;
&lt;p&gt;第三に、出力形式を明確にすることです。&lt;/p&gt;
&lt;p&gt;Agent に先に計画を列挙し、次に実行し、最後に検証結果をまとめてほしいなら、その構造を明確に書きます。曖昧な要求は曖昧な結果を生みます。&lt;/p&gt;
&lt;p&gt;第四に、人間が引き継ぐポイントを残すことです。&lt;/p&gt;
&lt;p&gt;良い skill は AI を一人で遠くまで走らせるべきではありません。不確実性、影響範囲の拡大、テスト失敗、プロダクト判断が必要な場合は、止まって状況を説明させるべきです。&lt;/p&gt;
&lt;h2 id=&#34;利用時の注意&#34;&gt;利用時の注意
&lt;/h2&gt;&lt;p&gt;第一に、すべてを skill 化しないことです。&lt;/p&gt;
&lt;p&gt;skills が多すぎるとシステムは複雑になり、Agent もどれを選ぶべきか分からなくなります。まずは頻度が高く、痛みの大きい場面から始めるのがよいです。&lt;/p&gt;
&lt;p&gt;第二に、skills は反復改善が必要です。&lt;/p&gt;
&lt;p&gt;最初に書いた skill が良いとは限りません。AI の実行結果を見て、少しずつ削り、追加し、書き直します。&lt;/p&gt;
&lt;p&gt;第三に、skill にエンジニアリング判断を置き換えさせないことです。&lt;/p&gt;
&lt;p&gt;Skill はフローを改善できますが、実装の正しさを保証するものではありません。テスト、review、ビルドチェック、人間の判断は依然として重要です。&lt;/p&gt;
&lt;p&gt;第四に、Agent ごとの差に注意することです。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor、Copilot は instructions、skills、rules のサポート方法が異なります。同じ考え方は再利用できますが、具体的な形式はツールに合わせて調整する必要があります。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattpocock/skills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; が注目に値するのは、その中の一つの魔法のプロンプトではありません。エンジニアリング経験を小さなスキルに分解し、Agent に場面ごとに組み合わせて使わせるという実用的な AI コーディングの考え方です。&lt;/p&gt;
&lt;p&gt;AI コーディングがたまの補助から日常ワークフローになると、skills は Agent を制約し、エンジニアの制御を保ち、フィードバック品質を高める重要な道具になります。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Compound Engineering Plugin：AI コーディングを計画、実行、レビューの工程ループにする</title>
        <link>https://knightli.com/ja/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</link>
        <pubDate>Fri, 01 May 2026 03:15:39 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</guid>
        <description>&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; は、Every Inc が公開している AI コーディングワークフロープラグインです。&lt;/p&gt;
&lt;p&gt;注目しているのは「AI により速くコードを書かせること」ではありません。AI コーディングを、よりエンジニアリングチームに近いループへ入れることです。まず計画し、次に実装し、その後レビューし、最後に経験を蓄積します。Claude Code、Codex、Cursor、Copilot のようなツールをよく使う人にとって、この種のプラグインはプロンプト問題ではなくワークフロー問題を解決します。&lt;/p&gt;
&lt;p&gt;AI コーディングツールは強力になっていますが、実プロジェクトで難しいのはコード生成そのものではありません。AI に継続してプロジェクトルールを守らせ、タスク境界を理解させ、同じ間違いを繰り返させず、複数回の反復でコンテキストを蓄積させることです。&lt;/p&gt;
&lt;h2 id=&#34;解決する問題&#34;&gt;解決する問題
&lt;/h2&gt;&lt;p&gt;多くの人は AI コーディングアシスタントを次のような流れで使います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;要件を直接説明する&lt;/li&gt;
&lt;li&gt;AI にコードを変更させる&lt;/li&gt;
&lt;li&gt;結果が動くか確認する&lt;/li&gt;
&lt;li&gt;エラーが出たら追加説明する&lt;/li&gt;
&lt;li&gt;次のタスクでまた背景を最初から説明する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;小さなタスクならこれで十分なこともあります。しかし複雑なプロジェクトでは問題が起こりやすくなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要件を整理しないまま AI が編集を始める&lt;/li&gt;
&lt;li&gt;コード変更後に体系的な review がない&lt;/li&gt;
&lt;li&gt;プロジェクト規約がユーザーの繰り返しの注意に依存する&lt;/li&gt;
&lt;li&gt;同じ種類のミスが次回も起こる&lt;/li&gt;
&lt;li&gt;複数の Agent ツール間で統一した作業方法がない&lt;/li&gt;
&lt;li&gt;経験が再利用可能なルールとして蓄積されない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; が解決したいのは、この種の問題です。AI コーディングを複数の段階に分け、Agent を単なるコマンド実行者ではなく、より完全なエンジニアリングプロセスの参加者にします。&lt;/p&gt;
&lt;h2 id=&#34;compound-engineering-とは何か&#34;&gt;Compound Engineering とは何か
&lt;/h2&gt;&lt;p&gt;プロジェクト README の説明から見ると、Compound Engineering は AI 支援ソフトウェア開発の方法と理解できます。&lt;/p&gt;
&lt;p&gt;重視するのは次のループです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;計画：目的を理解し、タスクを分解し、方針を確認する&lt;/li&gt;
&lt;li&gt;実行：計画に沿ってコードを変更し、コマンドを実行し、問題を処理する&lt;/li&gt;
&lt;li&gt;レビュー：実装品質、リスク、テストカバレッジを確認する&lt;/li&gt;
&lt;li&gt;学習：経験を後続で再利用できるルールとして蓄積する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このループは実際のエンジニアリングチームの働き方に近いです。&lt;/p&gt;
&lt;p&gt;信頼できるエンジニアは、要件を受け取ってすぐに無秩序に変更することはありません。変更後に何も確認せず渡すこともありません。まず影響範囲を判断し、実装し、リスクとテスト結果を確認し、最後に踏んだ落とし穴を記録します。AI Agent にも同じような制約が必要です。&lt;/p&gt;
&lt;h2 id=&#34;なぜプラグインが必要なのか&#34;&gt;なぜプラグインが必要なのか
&lt;/h2&gt;&lt;p&gt;プロンプトで AI に「先に計画してから実行してください」と伝えることはできます。しかしプロンプト自体は必ずしも安定しません。&lt;/p&gt;
&lt;p&gt;会話が長くなり、コンテキストが複雑になると、モデルは計画を飛ばしたり、ルールを無視したり、タスク完了を急いで過度に自信を持ったりします。プラグインの価値は、ワークフローを固定し、異なる Agent 環境でも似た方法を守れるようにすることです。&lt;/p&gt;
&lt;p&gt;この種のプラグインは通常、ワークフローをコマンド、ルール、テンプレート、サブフローに分解します。ユーザーは毎回完全なプロンプトを書く必要がなく、固定された入口から特定の段階を起動します。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;まず Agent に計画を生成させる&lt;/li&gt;
&lt;li&gt;計画に沿って段階的に実装する&lt;/li&gt;
&lt;li&gt;変更後に review を起動する&lt;/li&gt;
&lt;li&gt;問題が見つかったら修正に戻る&lt;/li&gt;
&lt;li&gt;残す価値のある経験を記憶やルールに書く&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これにより AI コーディングは、一回限りのチャットではなく「制御された協作」に近づきます。&lt;/p&gt;
&lt;h2 id=&#34;対応する-agent-環境&#34;&gt;対応する Agent 環境
&lt;/h2&gt;&lt;p&gt;README では、複数の AI コーディング環境をサポートすると説明されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Amp&lt;/li&gt;
&lt;li&gt;Factory&lt;/li&gt;
&lt;li&gt;Qwen Code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは注目すべき点です。&lt;/p&gt;
&lt;p&gt;多くのワークフローツールは 1 つのクライアントにだけ結びついており、ツールを替えるとルールを再利用できません。&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; は、クロス Agent のエンジニアリング方法に近く、計画、実行、レビューのような流れを異なるツールへ持ち込みます。&lt;/p&gt;
&lt;p&gt;複数の AI コーディングアシスタントを同時に使うなら、このような統一ワークフローには価値があります。ツールごとに能力は違っても、プロジェクト規約、レビュー習慣、タスク分解方法はできるだけ一貫している方がよいです。&lt;/p&gt;
&lt;h2 id=&#34;計画段階の役割&#34;&gt;計画段階の役割
&lt;/h2&gt;&lt;p&gt;計画段階の価値は、AI が早すぎる段階で手を動かすのを防ぐことです。&lt;/p&gt;
&lt;p&gt;複雑なタスクで本当に重要なのは、たいてい次のような問いです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;どのファイルを変更するのか&lt;/li&gt;
&lt;li&gt;どのモジュールが影響を受ける可能性があるか&lt;/li&gt;
&lt;li&gt;既存のパターンは何か&lt;/li&gt;
&lt;li&gt;テストはあるか&lt;/li&gt;
&lt;li&gt;リスクはどこにあるか&lt;/li&gt;
&lt;li&gt;先に読むべきドキュメントはあるか&lt;/li&gt;
&lt;li&gt;より小さなステップに分解できるか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent がこれらを考える前にコードを書き始めると、完成しているように見えてもプロジェクト構造から外れた実装になりやすくなります。&lt;/p&gt;
&lt;p&gt;計画は長い必要はありません。良い計画は短く、具体的で、実行可能です。目的はドキュメントを増やすことではなく、後続の実装に境界を与えることです。&lt;/p&gt;
&lt;h2 id=&#34;実行段階で避けるべきこと&#34;&gt;実行段階で避けるべきこと
&lt;/h2&gt;&lt;p&gt;AI がコードタスクを実行するとき、よく起こる問題があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;関係ないコードをついでにリファクタリングする&lt;/li&gt;
&lt;li&gt;ユーザーの既存変更を上書きする&lt;/li&gt;
&lt;li&gt;happy path だけを処理する&lt;/li&gt;
&lt;li&gt;エラーハンドリングを無視する&lt;/li&gt;
&lt;li&gt;既存のプロジェクトスタイルに従わない&lt;/li&gt;
&lt;li&gt;必要な検証を実行しない&lt;/li&gt;
&lt;li&gt;エラー後に場当たり的に試す&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ワークフロープラグインはこれらの問題を完全には消せませんが、ルールと段階制約によって発生確率を下げられます。&lt;/p&gt;
&lt;p&gt;たとえば、実行段階では Agent に計画どおり段階的に進めさせます。計画範囲外の発見があった場合は、まずリスクを説明します。共有モジュールを変更する場合は、テストを追加するか、少なくとも関連検証を実行します。&lt;/p&gt;
&lt;p&gt;この制約は大規模コードベースで特に重要です。AI が速くコードを書くほど、その勢いを制限するプロセスが必要になります。&lt;/p&gt;
&lt;h2 id=&#34;レビュー段階が重要な理由&#34;&gt;レビュー段階が重要な理由
&lt;/h2&gt;&lt;p&gt;多くの AI コーディング失敗は、コードがまったく動かないからではありません。細部に問題があるからです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;境界条件が処理されていない&lt;/li&gt;
&lt;li&gt;状態更新が一貫していない&lt;/li&gt;
&lt;li&gt;API 契約がこっそり変わっている&lt;/li&gt;
&lt;li&gt;テストが重要経路をカバーしていない&lt;/li&gt;
&lt;li&gt;エラーメッセージが分かりにくい&lt;/li&gt;
&lt;li&gt;性能やセキュリティリスクが触れられていない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;レビュー段階は Agent を「作者モード」から「レビューモード」へ切り替えます。&lt;/p&gt;
&lt;p&gt;作者モードでは自分の実装を正当化しがちです。レビューモードでは、穴、回帰リスク、テスト漏れを積極的に探すべきです。この 2 つの段階を分ける方が、同じ回答内で実装と自己レビューを同時に行わせるより信頼しやすくなります。&lt;/p&gt;
&lt;p&gt;ユーザーにとっても、レビュー出力は価値があります。その変更をマージしてよいか、まだ修正が必要かを素早く判断できます。&lt;/p&gt;
&lt;h2 id=&#34;学習と記憶の意味&#34;&gt;学習と記憶の意味
&lt;/h2&gt;&lt;p&gt;プロジェクト名の “Compound” は、重要な考え方を示しています。エンジニアリング経験は複利的に増えるべきだ、ということです。&lt;/p&gt;
&lt;p&gt;AI が毎回のミスをその場で直すだけで、次回また同じミスをするなら、生産性向上は限られます。より良い方法は、価値ある経験を蓄積することです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;このプロジェクトのディレクトリ規約&lt;/li&gt;
&lt;li&gt;ある種類のエラーの調査方法&lt;/li&gt;
&lt;li&gt;テストコマンドと注意事項&lt;/li&gt;
&lt;li&gt;触ってはいけない生成ファイル&lt;/li&gt;
&lt;li&gt;コードスタイルの好み&lt;/li&gt;
&lt;li&gt;よく使う実装パターン&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの経験は、ルール、記憶、ドキュメント、テンプレートになります。後続タスクでは、Agent がまずそれらの蓄積を読み、その後作業を始めます。&lt;/p&gt;
&lt;p&gt;これが AI コーディングを「一回限りの問答」から「長期協作」へ進める鍵です。&lt;/p&gt;
&lt;h2 id=&#34;向いている場面&#34;&gt;向いている場面
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; は次のような場面に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI Agent を長期的に使ってコードを書く&lt;/li&gt;
&lt;li&gt;1 つのプロジェクトを何度も、複数回にわたって変更する&lt;/li&gt;
&lt;li&gt;AI に先に計画してから実装してほしい&lt;/li&gt;
&lt;li&gt;変更後に review 思考へ自動で入ってほしい&lt;/li&gt;
&lt;li&gt;チームで AI コーディングフローを統一したい&lt;/li&gt;
&lt;li&gt;Claude Code、Codex、Cursor など複数ツールを同時に使う&lt;/li&gt;
&lt;li&gt;プロジェクト経験を再利用可能なルールにしたい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たまに小さなスクリプトを AI に書かせるだけなら、完全なフローは重く感じるかもしれません。&lt;/p&gt;
&lt;p&gt;しかし AI コーディングアシスタントを日常開発の相棒として使うなら、計画、実行、レビュー、学習のループは明らかに役立ちます。&lt;/p&gt;
&lt;h2 id=&#34;通常のプロンプトテンプレートとの違い&#34;&gt;通常のプロンプトテンプレートとの違い
&lt;/h2&gt;&lt;p&gt;通常のプロンプトテンプレートは、「タスクをどう明確に伝えるか」を解決します。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一歩ずつ考えてください&lt;/li&gt;
&lt;li&gt;先にファイルを読んでください&lt;/li&gt;
&lt;li&gt;コードスタイルを揃えてください&lt;/li&gt;
&lt;li&gt;テストを実行してください&lt;/li&gt;
&lt;li&gt;変更内容を要約してください&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらのプロンプトはもちろん有用です。しかし、毎回ユーザーが正しく使うことに依存しています。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; は、よりワークフロー層にあります。これらの要求を再現可能なプロセスとして整理し、異なる Agent ツールに適用します。毎回ゼロからプロンプトを書くのではなく、一つのフローの中でタスクを進めます。&lt;/p&gt;
&lt;p&gt;簡単に言えば、プロンプトテンプレートはリマインダーであり、ワークフロープラグインは制度に近いものです。&lt;/p&gt;
&lt;h2 id=&#34;利用時の注意&#34;&gt;利用時の注意
&lt;/h2&gt;&lt;p&gt;第一に、フローを負担にしないことです。&lt;/p&gt;
&lt;p&gt;小さなタスクに完全な計画と長いレビューが常に必要なわけではありません。良いワークフローはタスクの複雑さに応じて調整できます。単純な問題は素早く処理し、複雑な問題では完全なループを使います。&lt;/p&gt;
&lt;p&gt;第二に、レビューはテストの代わりにはなりません。&lt;/p&gt;
&lt;p&gt;Agent review は多くの問題を見つけられますが、実行時エラーを見逃すことがあります。最終判断には、テスト、型チェック、ビルド結果、人間のレビューが必要です。&lt;/p&gt;
&lt;p&gt;第三に、ルールは継続的に整理することです。&lt;/p&gt;
&lt;p&gt;経験の蓄積は重要ですが、ルールが増えすぎるとノイズになります。古いルール、重複ルール、一回のタスクにしか合わなかった一時的な経験は、定期的に整理すべきです。&lt;/p&gt;
&lt;p&gt;第四に、ツール間で一貫していることは完全に同じであることではありません。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor、Copilot などは能力や対話方式が異なります。統一すべきなのは作業方法であり、すべてのコマンドや設定詳細が同じである必要はありません。&lt;/p&gt;
&lt;h2 id=&#34;向いているチーム&#34;&gt;向いているチーム
&lt;/h2&gt;&lt;p&gt;チームがすでに AI Agent に実コードの変更を許可しているなら、「どのモデルが強いか」だけを議論しても不十分です。&lt;/p&gt;
&lt;p&gt;より重要なのは次の点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI は変更前にタスクを理解しているか&lt;/li&gt;
&lt;li&gt;AI は変更中にプロジェクト境界を守っているか&lt;/li&gt;
&lt;li&gt;AI は変更後にリスクを自発的にレビューしているか&lt;/li&gt;
&lt;li&gt;AI は過去のミスから学べるか&lt;/li&gt;
&lt;li&gt;チームに統一された Agent 利用規約があるか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; のようなプロジェクトの意味はここにあります。AI コーディングを個人の小技から、チームで再利用できるプロセスへ一歩進めます。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EveryInc/compound-engineering-plugin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; が注目に値する理由は、AI コーディングコマンドを一つ増やすことではありません。AI コーディングを、継続的に改善できるエンジニアリングフローとして整理することです。&lt;/p&gt;
&lt;p&gt;AI Agent が実プロジェクトに参加し始めると、計画、実行、レビュー、経験の蓄積は、一回限りのコード生成より重要になります。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code Hooks Mastery：13 個の Hooks ライフサイクルと自動化制御の入門</title>
        <link>https://knightli.com/ja/2026/05/01/claude-code-hooks-mastery-guide/</link>
        <pubDate>Fri, 01 May 2026 03:11:27 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/claude-code-hooks-mastery-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; は、&lt;code&gt;Claude Code Hooks&lt;/code&gt; を学ぶためのプロジェクトです。&lt;/p&gt;
&lt;p&gt;単にいくつかのスクリプトを並べただけではありません。Claude Code の hooks ライフサイクル、設定方法、スクリプトの書き方、よくある自動化シナリオをまとめて説明しています。Claude Code をより制御しやすく、よりエンジニアリング向けの助手として使いたい人にとって、読む価値のある資料です。&lt;/p&gt;
&lt;p&gt;Claude Code は標準でもコードを読み、ファイルを編集し、コマンドを実行できます。しかし、特定のタイミングで権限を確認したり、危険な操作を止めたり、プロジェクト規約を注入したり、テストを実行したり、チームルールを思い出させたりしたい場合、チャット指示だけでは安定しません。Hooks の価値は、「毎回 AI に思い出させたいルール」を実行可能なワークフローに変えることです。&lt;/p&gt;
&lt;h2 id=&#34;hooks-が解決する問題&#34;&gt;Hooks が解決する問題
&lt;/h2&gt;&lt;p&gt;Claude Code をしばらく使うと、よく次のような課題が出てきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新しい会話のたびに同じプロジェクトルールを説明する必要がある&lt;/li&gt;
&lt;li&gt;実行してはいけないコマンドを実行しないか不安&lt;/li&gt;
&lt;li&gt;ファイル変更の前後で自動チェックしたい&lt;/li&gt;
&lt;li&gt;コミット前にフォーマット、テスト、セキュリティスキャンを走らせたい&lt;/li&gt;
&lt;li&gt;チーム規約を口頭の注意ではなく固定フローにしたい&lt;/li&gt;
&lt;li&gt;ツール呼び出しの前後でコンテキストを取得し、ログやブロックに使いたい&lt;/li&gt;
&lt;li&gt;複雑なタスクでサブエージェントや専用スクリプトを起動したい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hooks は、こうした「決まったタイミングでの自動動作」のためにあります。&lt;/p&gt;
&lt;p&gt;Claude Code ワークフロー内のイベントフックとして考えるとわかりやすいです。セッション開始、ユーザーのプロンプト送信、モデルがツールを呼び出す直前、ツール呼び出し完了、エージェント終了直前などのタイミングで、設定したスクリプトを実行できます。&lt;/p&gt;
&lt;h2 id=&#34;13-個の-hooks-ライフサイクル&#34;&gt;13 個の Hooks ライフサイクル
&lt;/h2&gt;&lt;p&gt;このプロジェクト README の重要な点の一つは、Claude Code の 13 個の hook イベントを体系的に整理していることです。&lt;/p&gt;
&lt;p&gt;これらのイベントは、セッション開始からツール呼び出し、ユーザー入力からエージェント終了まで、複数の段階をカバーします。用途別には、おおまかに次のように分けられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;セッション起動関連：環境初期化、プロジェクトコンテキスト注入&lt;/li&gt;
&lt;li&gt;ユーザー入力関連：プロンプト確認、ルール補足、監査&lt;/li&gt;
&lt;li&gt;ツール呼び出し前関連：権限判断、コマンドブロック、安全チェック&lt;/li&gt;
&lt;li&gt;ツール呼び出し後関連：結果記録、フォーマット起動、検証実行&lt;/li&gt;
&lt;li&gt;タスク終了関連：要約、クリーンアップ、通知、状態保存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このライフサイクル設計により、すべてのルールを長いプロンプトに詰め込む必要がなくなります。&lt;/p&gt;
&lt;p&gt;たとえば、権限制御はツール呼び出し前に行うべきです。フォーマットチェックはファイル変更後の方が自然です。プロジェクト規約の注入は、セッション開始時やユーザー入力後が向いています。正しい hook ポイントにルールを置く方が、すべてを system prompt に詰めるより信頼しやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;設定ファイルの場所&#34;&gt;設定ファイルの場所
&lt;/h2&gt;&lt;p&gt;Claude Code の hooks は通常、設定ファイルで構成します。&lt;/p&gt;
&lt;p&gt;よく使われる場所は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ユーザー単位の設定：&lt;code&gt;~/.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;プロジェクト単位の設定：&lt;code&gt;.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ユーザー単位の設定は、一般的な安全ルール、コマンドブロック、ログパスなど、個人の好みに向いています。&lt;/p&gt;
&lt;p&gt;プロジェクト単位の設定は、そのリポジトリに関するルールに向いています。たとえば、必ず実行するテスト、編集禁止のディレクトリ、生成ファイルの扱い、コミット前のチェックなどです。&lt;/p&gt;
&lt;p&gt;チームで Claude Code を使うなら、プロジェクト単位の設定をリポジトリに置くのがおすすめです。そうすれば、各自が記憶で AI に注意するのではなく、全員が同じ AI 協作制約を持ってプロジェクトを開けます。&lt;/p&gt;
&lt;h2 id=&#34;単一ファイルスクリプトが重要な理由&#34;&gt;単一ファイルスクリプトが重要な理由
&lt;/h2&gt;&lt;p&gt;このプロジェクトでは &lt;code&gt;UV&lt;/code&gt; の単一ファイルスクリプトが強調されています。&lt;/p&gt;
&lt;p&gt;利点はデプロイが簡単なことです。1 つの Python ファイルで依存関係を宣言して実行できるため、1 つの hook のために複雑な環境を維持する必要がありません。多くの hook は小さな処理を 1 つ行うだけなので、この形式は適しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コマンドの実行可否を確認する&lt;/li&gt;
&lt;li&gt;ファイルパスが安全か判断する&lt;/li&gt;
&lt;li&gt;プロジェクト規約を読み、Claude に返す&lt;/li&gt;
&lt;li&gt;出力に機密情報が含まれていないか調べる&lt;/li&gt;
&lt;li&gt;変更後にフォーマットやテストを実行する&lt;/li&gt;
&lt;li&gt;イベントをログに書く&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hook スクリプトは小さいほど保守しやすく、新しい複雑なシステムになりにくくなります。&lt;/p&gt;
&lt;h2 id=&#34;どんな自動化ができるか&#34;&gt;どんな自動化ができるか
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; は多くの方向性を示しています。実務でよく使うのは次のようなものです。&lt;/p&gt;
&lt;h3 id=&#34;1-権限と安全制御&#34;&gt;1. 権限と安全制御
&lt;/h3&gt;&lt;p&gt;これは hooks の最も直接的な用途です。&lt;/p&gt;
&lt;p&gt;Claude Code がコマンドを実行する前に、その内容をチェックできます。削除、リセット、クリア、上書きなどの高リスク操作が含まれている場合、実行を止めるか、人間の確認を求められます。&lt;/p&gt;
&lt;p&gt;同様のルールはファイルパスにも使えます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本番設定を変更しない&lt;/li&gt;
&lt;li&gt;秘密鍵ファイルに書き込まない&lt;/li&gt;
&lt;li&gt;マイグレーションスクリプトを削除しない&lt;/li&gt;
&lt;li&gt;指定ディレクトリに触れない&lt;/li&gt;
&lt;li&gt;未承認のネットワークコマンドを実行しない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この保護をツール呼び出し前に置く方が、「危険な操作をしないで」とプロンプトに書くより確実です。&lt;/p&gt;
&lt;h3 id=&#34;2-コンテキスト注入&#34;&gt;2. コンテキスト注入
&lt;/h3&gt;&lt;p&gt;多くのプロジェクトには固定された背景があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技術スタック&lt;/li&gt;
&lt;li&gt;コーディング規約&lt;/li&gt;
&lt;li&gt;テストコマンド&lt;/li&gt;
&lt;li&gt;ブランチ戦略&lt;/li&gt;
&lt;li&gt;ディレクトリ構造&lt;/li&gt;
&lt;li&gt;禁止事項&lt;/li&gt;
&lt;li&gt;生成ファイルの扱い&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらを毎回手動で Claude Code に伝えるのは面倒で、漏れやすいです。Hooks を使えば、セッション開始時やユーザーのプロンプト送信後に必要なコンテキストを自動注入できます。&lt;/p&gt;
&lt;p&gt;これは Claude Code にプロジェクト単位の作業マニュアルを渡すようなものです。README や開発ドキュメントを置き換えるものではありませんが、AI がタスクを始める前に正しい状態へ入りやすくなります。&lt;/p&gt;
&lt;h3 id=&#34;3-変更後の検証&#34;&gt;3. 変更後の検証
&lt;/h3&gt;&lt;p&gt;Claude Code がファイルを変更した後、hook で自動チェックを起動できます。&lt;/p&gt;
&lt;p&gt;よくある処理は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;フォーマットを実行する&lt;/li&gt;
&lt;li&gt;lint を実行する&lt;/li&gt;
&lt;li&gt;単体テストを実行する&lt;/li&gt;
&lt;li&gt;型エラーを確認する&lt;/li&gt;
&lt;li&gt;生成ファイルをスキャンする&lt;/li&gt;
&lt;li&gt;Markdown や JSON の形式を検証する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは低レベルなミスを減らすのに役立ちます。AI が複数ファイルを変更した場合、変更後に軽量な検証を走らせることで、問題を早めに見つけられます。&lt;/p&gt;
&lt;p&gt;ただし、hook に重い処理をデフォルトで入れるのは向きません。ファイル変更のたびに完全なテストスイートを走らせると、体験が遅くなります。より実用的なのは、ファイル種別、ディレクトリ、タスクのリスクに応じてチェック範囲を選ぶことです。&lt;/p&gt;
&lt;h3 id=&#34;4-チームルールの検証&#34;&gt;4. チームルールの検証
&lt;/h3&gt;&lt;p&gt;チームに明確な約束があるなら、その一部を hooks に入れられます。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コミットメッセージ形式&lt;/li&gt;
&lt;li&gt;コードスタイルルール&lt;/li&gt;
&lt;li&gt;特定の生成ファイルを直接変更しない&lt;/li&gt;
&lt;li&gt;ドキュメントを同時に更新する&lt;/li&gt;
&lt;li&gt;API 変更ではテストも更新する&lt;/li&gt;
&lt;li&gt;特定ディレクトリは指定ツールでのみ生成する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これにより Claude Code は、制約のない外部アシスタントではなく、チームワークフローの一部に近づきます。&lt;/p&gt;
&lt;p&gt;もちろん、hooks は CI の代わりではありません。ローカルでの早めの注意や前置ブロックに向いています。最終検証は CI、review、テストシステムに任せるべきです。&lt;/p&gt;
&lt;h3 id=&#34;5-サブエージェントと専用タスク&#34;&gt;5. サブエージェントと専用タスク
&lt;/h3&gt;&lt;p&gt;README ではサブエージェント関連の内容にも触れています。&lt;/p&gt;
&lt;p&gt;この使い方は、複雑なタスクをより専門的なフローに分ける場合に向いています。たとえばメイン会話が要求を理解し、hook や設定が専用のチェック、監査、要約、ドキュメント整理タスクを起動します。&lt;/p&gt;
&lt;p&gt;個人ユーザーにとって、最初にやる価値があるのは複雑なエージェント編成ではありません。まずは反復的で明確かつ低リスクな処理を hooks に任せることです。ルールが安定してから、より複雑な自動化を検討すれば十分です。&lt;/p&gt;
&lt;h2 id=&#34;statusline-と出力スタイル&#34;&gt;Statusline と出力スタイル
&lt;/h2&gt;&lt;p&gt;プロジェクトは statusline と出力スタイルも扱っています。&lt;/p&gt;
&lt;p&gt;一見すると体験面の細部ですが、Claude Code を長期的に使う場合には重要です。Statusline は現在のコンテキスト、タスク状態、環境情報、ヒントを表示できます。出力スタイルは Claude Code の回答を自分の作業習慣に合わせやすくします。&lt;/p&gt;
&lt;p&gt;毎日同じターミナルで AI と協作するなら、こうした細部は効率に影響します。良い状態表示は誤操作を減らし、現在の会話が正しいプロジェクト、正しいブランチ、正しい環境にいるかを素早く判断できます。&lt;/p&gt;
&lt;h2 id=&#34;hooks-を重くしすぎない&#34;&gt;hooks を重くしすぎない
&lt;/h2&gt;&lt;p&gt;Hooks は強力ですが、何でも詰め込む場所ではありません。&lt;/p&gt;
&lt;p&gt;良いルールは次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高頻度の処理は速くする&lt;/li&gt;
&lt;li&gt;安全ブロックは明確にする&lt;/li&gt;
&lt;li&gt;出力は短くする&lt;/li&gt;
&lt;li&gt;失敗理由は読みやすくする&lt;/li&gt;
&lt;li&gt;スクリプトはできるだけ単一責務にする&lt;/li&gt;
&lt;li&gt;重いチェックは明示コマンドや CI に任せる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;毎回 10 秒以上かかる hook は、すぐに無効化したくなります。ブロックルールが曖昧な hook も、Claude Code とユーザーの両方にとって次に何をすべきか分かりにくくなります。&lt;/p&gt;
&lt;p&gt;Hooks は、境界が明確な処理に最も向いています。許可または拒否、コンテキスト追加、ログ記録、軽量チェック、次の手順提示などです。&lt;/p&gt;
&lt;h2 id=&#34;向いているユーザー&#34;&gt;向いているユーザー
&lt;/h2&gt;&lt;p&gt;たまに Claude Code に小さなコード変更を頼むだけなら、hooks を深く学ぶ必要はまだないかもしれません。&lt;/p&gt;
&lt;p&gt;しかし、次のような場合はこのプロジェクトを調べる価値があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code を頻繁に使う&lt;/li&gt;
&lt;li&gt;AI に実際のプロジェクトコードをよく変更させる&lt;/li&gt;
&lt;li&gt;AI が危険なコマンドを実行しないか不安&lt;/li&gt;
&lt;li&gt;チーム規約を AI ワークフローに自動注入したい&lt;/li&gt;
&lt;li&gt;変更後に自動チェックを走らせたい&lt;/li&gt;
&lt;li&gt;繰り返しの注意を設定に変えたい&lt;/li&gt;
&lt;li&gt;より安定した AI コーディングフローを作っている&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特に複数人で作業するプロジェクトでは、hooks の意味が大きくなります。チーム経験の一部をスクリプトとして残せるため、各メンバーがその場で AI に注意する必要が減ります。&lt;/p&gt;
&lt;h2 id=&#34;利用時の注意&#34;&gt;利用時の注意
&lt;/h2&gt;&lt;p&gt;第一に、安全系 hook から始めることです。&lt;/p&gt;
&lt;p&gt;複雑な自動化よりも、コマンドブロック、パス保護、機密ファイルチェックの方が実装しやすく、すぐにリスクを下げられます。&lt;/p&gt;
&lt;p&gt;第二に、プロジェクト単位のルールは慎重にコミットすることです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.claude/settings.json&lt;/code&gt; は、そのリポジトリを使う全員に影響します。コミット前に、通常開発を過度に制限しないこと、自分のマシンにしかないパスに依存しないことを確認した方がよいです。&lt;/p&gt;
&lt;p&gt;第三に、hook の出力は簡潔にすることです。&lt;/p&gt;
&lt;p&gt;Claude Code はその出力を消費します。長すぎるとコンテキストを汚し、曖昧すぎると次の行動を導けません。必要な判断と次の提案だけを返すのがよいです。&lt;/p&gt;
&lt;p&gt;第四に、デバッグしやすく保つことです。&lt;/p&gt;
&lt;p&gt;Hooks が増えると、問題は設定、スクリプト、権限、パス、依存関係、Claude Code 本体のどこからでも起こり得ます。明確なログを残すと、後の調査がずっと楽になります。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/disler/claude-code-hooks-mastery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;disler/claude-code-hooks-mastery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Code Hooks&lt;/code&gt; の価値は、「AI に毎回覚えていてほしいルール」を、実際に実行されるフローへ変えることです。&lt;/p&gt;
&lt;p&gt;すでに Claude Code を実プロジェクトで使い始めているなら、hooks は「会話できるコーディング助手」から「制約を持つエンジニアリング協作者」へ進むための重要な一歩です。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude-Mem：Claude Code にセッションをまたぐ長期記憶を追加する</title>
        <link>https://knightli.com/ja/2026/05/01/claude-mem-persistent-memory-for-claude-code/</link>
        <pubDate>Fri, 01 May 2026 03:01:02 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/claude-mem-persistent-memory-for-claude-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; は、&lt;code&gt;Claude Code&lt;/code&gt; 向けの永続的な記憶システムです。&lt;/p&gt;
&lt;p&gt;解決しようとしている問題は明確です。AI コーディングアシスタントは、新しいセッションを始めるたびに、以前話したアーキテクチャ判断、踏んだ落とし穴、プロジェクトの好み、実装背景を忘れがちです。&lt;br&gt;
長く続くプロジェクトでは、毎回同じ文脈を説明し直すのはかなり無駄です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; の考え方は、Claude Code の会話内容を記憶として圧縮し、ローカルデータベースとベクトルストアに保存し、あとから検索ツールで取り戻すというものです。&lt;/p&gt;
&lt;h2 id=&#34;何を解決するのか&#34;&gt;何を解決するのか
&lt;/h2&gt;&lt;p&gt;Claude Code はコードタスクに強いですが、セッションの文脈には限界があります。&lt;/p&gt;
&lt;p&gt;よくある課題は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新しいセッションが過去の作業を知らない&lt;/li&gt;
&lt;li&gt;プロジェクトの設計判断を何度も説明する必要がある&lt;/li&gt;
&lt;li&gt;以前調査した問題を再び踏みやすい&lt;/li&gt;
&lt;li&gt;長期タスクに連続した記憶がない&lt;/li&gt;
&lt;li&gt;複数の会話にまたがるプロジェクト知識を蓄積しにくい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; はこれらの問題を中心に設計されています。&lt;/p&gt;
&lt;p&gt;単にチャットログを保存するのではありません。会話を検索しやすい記憶断片に圧縮します。後で必要になったとき、意味検索で関連する文脈を取り戻せます。&lt;/p&gt;
&lt;h2 id=&#34;仕組み&#34;&gt;仕組み
&lt;/h2&gt;&lt;p&gt;README の設計を見ると、&lt;code&gt;Claude-Mem&lt;/code&gt; は主にいくつかの部分で構成されています。&lt;/p&gt;
&lt;p&gt;第一の部分は hooks です。&lt;/p&gt;
&lt;p&gt;Claude Code の会話フローに接続し、適切なタイミングで会話データを捕捉します。&lt;/p&gt;
&lt;p&gt;第二の部分はバックグラウンド worker です。&lt;/p&gt;
&lt;p&gt;worker は原始的な会話内容を、より短く、検索しやすい記憶へ処理します。&lt;/p&gt;
&lt;p&gt;第三の部分はローカルストレージです。&lt;/p&gt;
&lt;p&gt;プロジェクトは構造化メタデータの保存に &lt;code&gt;SQLite&lt;/code&gt; を使い、ベクトルインデックスには &lt;code&gt;Chroma&lt;/code&gt; を使います。これにより、会話記録の基本情報を保ちながら、意味検索にも対応できます。&lt;/p&gt;
&lt;p&gt;第四の部分は &lt;code&gt;mem-search&lt;/code&gt; です。&lt;/p&gt;
&lt;p&gt;これは Claude Code が使う検索入口です。過去の文脈が必要なとき、関連する記憶を検索できます。&lt;/p&gt;
&lt;p&gt;全体の流れは次のように理解できます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code のセッションで内容が生まれる&lt;/li&gt;
&lt;li&gt;hooks が会話データを捕捉する&lt;/li&gt;
&lt;li&gt;worker が非同期に圧縮・整理する&lt;/li&gt;
&lt;li&gt;記憶を SQLite と Chroma に書き込む&lt;/li&gt;
&lt;li&gt;後のセッションで &lt;code&gt;mem-search&lt;/code&gt; によって検索する&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;どんな場面に向いているか&#34;&gt;どんな場面に向いているか
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; は長期プロジェクト向けで、一回きりの小さなタスク向けではありません。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ひとつのリポジトリを何日も開発し続ける&lt;/li&gt;
&lt;li&gt;コード構造が複雑で、背景説明が多い&lt;/li&gt;
&lt;li&gt;プロジェクト規約、命名習慣、アーキテクチャ選択を覚えてほしい&lt;/li&gt;
&lt;li&gt;Claude Code に頻繁にバグ修正、機能追加、文書整理を任せる&lt;/li&gt;
&lt;li&gt;AI に「以前なぜこう変更したのか」を覚えてほしい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code に一行だけ直してもらう程度なら、長期記憶の意味は大きくありません。&lt;br&gt;
しかし Claude Code を長期的な協力者として使うなら、これは役に立ちます。&lt;/p&gt;
&lt;h2 id=&#34;インストールと起動&#34;&gt;インストールと起動
&lt;/h2&gt;&lt;p&gt;README では、インストール方法は直接的です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g claude-mem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;起動には次を使います。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;状態確認：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;停止したい場合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらのコマンドの目的は、記憶システムを長く動くローカルサービスとして Claude Code のワークフローに接続することです。&lt;/p&gt;
&lt;h2 id=&#34;mem-search-の使い方&#34;&gt;&lt;code&gt;mem-search&lt;/code&gt; の使い方
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mem-search&lt;/code&gt; は記憶を取り戻すための重要な入口です。&lt;/p&gt;
&lt;p&gt;普通の検索を置き換えるものではなく、Claude Code が過去の会話内容を意味で検索できるようにするものです。&lt;/p&gt;
&lt;p&gt;たとえば Claude Code に次のようなことを検索させられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;あるモジュールがなぜそのように設計されたのか&lt;/li&gt;
&lt;li&gt;ある Bug を当時どう調査したのか&lt;/li&gt;
&lt;li&gt;プロジェクトで合意した命名規則&lt;/li&gt;
&lt;li&gt;以前議論した技術的な取捨選択&lt;/li&gt;
&lt;li&gt;あるリファクタリングの背景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは単純なキーワード検索とは違います。&lt;br&gt;
記憶圧縮とベクトルインデックスがうまく機能すれば、正確な言い回しを覚えていなくても、意味的に近い内容を取り戻せます。&lt;/p&gt;
&lt;h2 id=&#34;普通のプロジェクト文書との違い&#34;&gt;普通のプロジェクト文書との違い
&lt;/h2&gt;&lt;p&gt;プロジェクト文書は、安定した結論を記録するのに向いています。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アーキテクチャ説明&lt;/li&gt;
&lt;li&gt;デプロイ手順&lt;/li&gt;
&lt;li&gt;API 規約&lt;/li&gt;
&lt;li&gt;データベース構造&lt;/li&gt;
&lt;li&gt;開発ルール&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; は、会話過程で生まれる文脈を記録するのに向いています。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;なぜある案が却下されたのか&lt;/li&gt;
&lt;li&gt;一時的な問題をどう回避したのか&lt;/li&gt;
&lt;li&gt;実装の背後にあった議論&lt;/li&gt;
&lt;li&gt;まだ文書化されていないプロジェクトの好み&lt;/li&gt;
&lt;li&gt;複数の会話で積み重なったタスク背景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;両者は互いの代替ではありません。&lt;br&gt;
安定した知識はプロジェクト文書へ書き、過程的な文脈は記憶システムで検索できるようにするのがよいです。&lt;/p&gt;
&lt;h2 id=&#34;使うときの注意点&#34;&gt;使うときの注意点
&lt;/h2&gt;&lt;p&gt;第一に、長期記憶は多ければよいわけではありません。&lt;/p&gt;
&lt;p&gt;すべての会話を区別なく保存すると、後の検索がノイズだらけになる可能性があります。価値が高いのは、プロジェクト判断、実装背景、問題調査、長期的な好みです。&lt;/p&gt;
&lt;p&gt;第二に、記憶はコードや文書の代わりにはなりません。&lt;/p&gt;
&lt;p&gt;AI が見つけた古い文脈は参考にすぎません。最終判断は現在のコード、テスト結果、最新の要求に基づくべきです。&lt;/p&gt;
&lt;p&gt;第三に、プライバシーとローカルデータに注意が必要です。&lt;/p&gt;
&lt;p&gt;会話内容を保存する以上、どのプロジェクトに接続してよいか、どの機密情報を会話に入れるべきでないかを理解しておく必要があります。&lt;/p&gt;
&lt;p&gt;第四に、記憶システムにはメンテナンスが必要です。&lt;/p&gt;
&lt;p&gt;プロジェクトが進むにつれて、古い記憶は古くなる可能性があります。古い文脈が誤って使われると、後続タスクを誤導することがあります。&lt;/p&gt;
&lt;h2 id=&#34;この種のツールが注目に値する理由&#34;&gt;この種のツールが注目に値する理由
&lt;/h2&gt;&lt;p&gt;AI コーディングツールは、「一回限りの質問応答」から「長期的な協力」へ向かっています。&lt;/p&gt;
&lt;p&gt;一回限りの質問応答では、モデルは現在の質問に答えれば十分です。&lt;br&gt;
長期的な協力では、プロジェクト履歴、過去の判断、チームの好み、すでに踏んだ落とし穴を知っている必要があります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; のようなツールの意味はここにあります。「文脈を覚える」ことを、一時的なチャット能力ではなく、インストールし、実行し、検索できるローカルシステムにします。&lt;/p&gt;
&lt;p&gt;実際のエンジニアリングプロジェクトでは、単にモデルのコンテキストウィンドウを長くするより実用的です。&lt;br&gt;
多くの情報は一度に文脈へ詰め込めばよいのではなく、必要なタイミングで取り戻せることが重要だからです。&lt;/p&gt;
&lt;h2 id=&#34;誰が試すべきか&#34;&gt;誰が試すべきか
&lt;/h2&gt;&lt;p&gt;次のような場合は試す価値があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code を高頻度で使っている&lt;/li&gt;
&lt;li&gt;同じプロジェクトを日をまたいで扱うことが多い&lt;/li&gt;
&lt;li&gt;プロジェクト文脈が複雑&lt;/li&gt;
&lt;li&gt;AI に同じ背景を何度も説明している&lt;/li&gt;
&lt;li&gt;会話内の経験を蓄積したい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code をたまに使うだけ、またはプロジェクトが小さい場合は、まだ必要ないかもしれません。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; の重点は「チャットログを保存すること」ではなく、Claude Code が後続タスクで有用な文脈を取り戻せるようにすることです。&lt;/p&gt;
&lt;p&gt;AI コーディングが一回限りのタスクから長期プロジェクト協力へ移るにつれ、記憶システムはますます重要になります。&lt;br&gt;
文書やテストを置き換えるものではありませんが、繰り返し説明を減らし、AI をプロジェクト履歴を理解した助手に近づけます。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>UEFI プログラムのコンパイル入門：uefi-simple から最初の .EFI まで</title>
        <link>https://knightli.com/ja/2026/04/30/compile-uefi-program-beginner-guide/</link>
        <pubDate>Thu, 30 Apr 2026 19:53:08 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/30/compile-uefi-program-beginner-guide/</guid>
        <description>&lt;p&gt;最初の UEFI プログラムをコンパイルするのは、思ったほど簡単ではありません。環境構築には時間がかかり、リンカーエラーも多く、&lt;code&gt;.EFI&lt;/code&gt; プログラムは通常のデスクトップアプリのように直感的に編集して実行できるものではありません。&lt;/p&gt;
&lt;p&gt;この記事では、入門者向けに整理します。まず自分の最初の UEFI プログラムをコンパイルしたいだけなら、どこから始めるべきか、どの概念を先に理解すべきか、どこで詰まりやすいかを見ていきます。&lt;/p&gt;
&lt;h2 id=&#34;uefi-プログラムとは何か&#34;&gt;UEFI プログラムとは何か
&lt;/h2&gt;&lt;p&gt;UEFI プログラムは通常、&lt;code&gt;.EFI&lt;/code&gt; ファイルです。&lt;/p&gt;
&lt;p&gt;Windows でダブルクリックして実行する普通の &lt;code&gt;.exe&lt;/code&gt; ではありません。UEFI ファームウェア環境で動作する PE/COFF 実行ファイルです。よくある用途には次のようなものがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ブートマネージャー&lt;/li&gt;
&lt;li&gt;ハードウェア初期化ツール&lt;/li&gt;
&lt;li&gt;ファームウェア更新ツール&lt;/li&gt;
&lt;li&gt;起動前診断ツール&lt;/li&gt;
&lt;li&gt;カスタムブートフロー&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;システム起動の早い段階で見える多くの機能は、UEFI アプリケーション、ドライバー、またはファームウェアサービスと関係している場合があります。&lt;/p&gt;
&lt;p&gt;初心者は、最初から完全なファームウェア開発を理解する必要はありません。まずは UEFI Shell またはエミュレーターから読み込める &lt;code&gt;.EFI&lt;/code&gt; ファイルをコンパイルすることを目標にします。&lt;/p&gt;
&lt;h2 id=&#34;最初から-edk-ii-に入らないほうがよい理由&#34;&gt;最初から EDK II に入らないほうがよい理由
&lt;/h2&gt;&lt;p&gt;本格的な UEFI 開発では EDK II に出会うことがよくあります。&lt;/p&gt;
&lt;p&gt;EDK II は機能が充実しており、実際のファームウェア開発にも近いものです。ただし初心者にはあまり優しくありません。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト構造が複雑&lt;/li&gt;
&lt;li&gt;ビルドシステムに学習コストがある&lt;/li&gt;
&lt;li&gt;環境変数やツールチェーン設定が多い&lt;/li&gt;
&lt;li&gt;コンパイルエラーを読み解きにくい&lt;/li&gt;
&lt;li&gt;コードを書く前に環境構築で詰まりやすい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目的が「最小の UEFI プログラムをまず動かす」ことであれば、軽量なサンプルから始めるほうが向いています。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pbatard/uefi-simple&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pbatard/uefi-simple&lt;/a&gt; はそのようなプロジェクトです。目的は明確で、シンプルな UEFI Hello World サンプルを提供し、まず &lt;code&gt;.EFI&lt;/code&gt; をコンパイルできるようにすることです。&lt;/p&gt;
&lt;h2 id=&#34;uefi-simple-は何に向いているか&#34;&gt;&lt;code&gt;uefi-simple&lt;/code&gt; は何に向いているか
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;uefi-simple&lt;/code&gt; は UEFI 入門の最初の足場として向いています。&lt;/p&gt;
&lt;p&gt;主に 3 つの問題を解決します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最小限のコンパイル可能な UEFI アプリケーション構造を提供する&lt;/li&gt;
&lt;li&gt;最初から大規模なファームウェア工程に触れる複雑さを避けられる&lt;/li&gt;
&lt;li&gt;コンパイル、リンク、実行の流れが通るかを先に確認できる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このプロジェクトは Visual Studio 2022 や MinGW/gcc など複数のビルド方法に対応しており、QEMU と OVMF を使ったテストもできます。&lt;/p&gt;
&lt;p&gt;つまり、初期段階から実機を何度も再起動して試す必要はありません。まずエミュレーターで動かすほうが安全です。&lt;/p&gt;
&lt;h2 id=&#34;入門前に用意するもの&#34;&gt;入門前に用意するもの
&lt;/h2&gt;&lt;p&gt;最低限、いくつかの種類のツールが必要です。&lt;/p&gt;
&lt;p&gt;1 つ目はコンパイラーツールチェーンです。&lt;/p&gt;
&lt;p&gt;Windows では、まず次のどちらかを検討できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2022&lt;/li&gt;
&lt;li&gt;または MinGW/gcc&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2 つ目は UEFI 実行環境です。&lt;/p&gt;
&lt;p&gt;主な選択肢は 2 つあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;実機の UEFI Shell で &lt;code&gt;.EFI&lt;/code&gt; を実行する&lt;/li&gt;
&lt;li&gt;QEMU + OVMF を使って仮想環境でテストする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3 つ目はサンプルプロジェクトです。&lt;/p&gt;
&lt;p&gt;初心者は空ディレクトリからビルドスクリプトを手書きするより、&lt;code&gt;uefi-simple&lt;/code&gt; のような最小サンプルを使うほうが、ビルドシステムで詰まる可能性を減らせます。&lt;/p&gt;
&lt;h2 id=&#34;大まかな流れ&#34;&gt;大まかな流れ
&lt;/h2&gt;&lt;p&gt;最小 UEFI プログラムの入門手順は、次のように考えると分かりやすいです。&lt;/p&gt;
&lt;p&gt;まず、サンプルプロジェクトを取得します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;git&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clone&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;github&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pbatard&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;uefi-simple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次に、ビルドツールチェーンを選びます。&lt;/p&gt;
&lt;p&gt;Visual Studio を使う場合は、プロジェクト内の Visual Studio ソリューションに従ってビルドします。&lt;br&gt;
MinGW/gcc を使う場合は、プロジェクトが提供する Makefile や説明に従います。&lt;/p&gt;
&lt;p&gt;次に、&lt;code&gt;.EFI&lt;/code&gt; ファイルを生成します。&lt;/p&gt;
&lt;p&gt;ここで重要なのは対象アーキテクチャを確認することです。一般的な PC は通常 &lt;code&gt;x86_64&lt;/code&gt;、つまり 64 ビット UEFI 環境です。&lt;/p&gt;
&lt;p&gt;次に、UEFI Shell からアクセスできる場所へ &lt;code&gt;.EFI&lt;/code&gt; を置きます。&lt;/p&gt;
&lt;p&gt;実機を使う場合は、通常 FAT32 パーティションまたは USB メモリを用意します。&lt;br&gt;
QEMU を使う場合は、ディレクトリやディスクイメージをマウントできます。&lt;/p&gt;
&lt;p&gt;最後に、UEFI Shell で実行します。&lt;/p&gt;
&lt;p&gt;実行結果は通常、Hello World のような最小限の出力です。&lt;/p&gt;
&lt;h2 id=&#34;詰まりやすいところ&#34;&gt;詰まりやすいところ
&lt;/h2&gt;&lt;p&gt;UEFI プログラムのコンパイルで詰まりやすいのは、C 言語そのものではなく、環境とリンクです。&lt;/p&gt;
&lt;p&gt;よくある問題は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コンパイラーのアーキテクチャが違う&lt;/li&gt;
&lt;li&gt;ターゲット形式が違う&lt;/li&gt;
&lt;li&gt;リンカー引数が不足している&lt;/li&gt;
&lt;li&gt;UEFI エントリーポイントがない&lt;/li&gt;
&lt;li&gt;UEFI が読み込める &lt;code&gt;.EFI&lt;/code&gt; ではなく通常の実行ファイルを生成している&lt;/li&gt;
&lt;li&gt;QEMU または OVMF の設定ができていない&lt;/li&gt;
&lt;li&gt;実機の Secure Boot が未署名プログラムの実行を止める&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特にリンカーエラーは、初心者にコードの間違いだと思わせがちです。&lt;br&gt;
実際には、エントリー関数、サブシステム、対象アーキテクチャ、リンクスクリプト設定が原因であることも多いです。&lt;/p&gt;
&lt;p&gt;そのため最初の段階では、複雑なロジックに急いで進まないほうがよいです。まず元のサンプルがコンパイルでき、実行できることを確認してから、少しずつ出力内容を変えていきます。&lt;/p&gt;
&lt;h2 id=&#34;テストに-qemu--ovmf-をすすめる理由&#34;&gt;テストに QEMU + OVMF をすすめる理由
&lt;/h2&gt;&lt;p&gt;実機で UEFI プログラムをテストすることはできますが、初心者の段階ではあまり便利ではありません。&lt;/p&gt;
&lt;p&gt;何度も次の流れを繰り返すことになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コンパイル&lt;/li&gt;
&lt;li&gt;USB メモリへコピー&lt;/li&gt;
&lt;li&gt;再起動&lt;/li&gt;
&lt;li&gt;UEFI Shell に入る&lt;/li&gt;
&lt;li&gt;実行&lt;/li&gt;
&lt;li&gt;エラーを記録&lt;/li&gt;
&lt;li&gt;OS に戻って修正&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このループはかなり遅いです。&lt;/p&gt;
&lt;p&gt;QEMU + OVMF を使うと、OS の中で直接 UEFI 環境をシミュレートできます。&lt;code&gt;.EFI&lt;/code&gt; が読み込めるかをより速く確認でき、実機のブート項目へ影響を与える可能性も低くなります。&lt;/p&gt;
&lt;p&gt;プログラムが基本的に動くようになってから実機で試すほうが安定します。&lt;/p&gt;
&lt;h2 id=&#34;初心者はまずどこを変えるべきか&#34;&gt;初心者はまずどこを変えるべきか
&lt;/h2&gt;&lt;p&gt;サンプルプロジェクトで最初の &lt;code&gt;.EFI&lt;/code&gt; をコンパイルできたら、すぐに複雑な機能を書き始めないほうがよいです。&lt;/p&gt;
&lt;p&gt;おすすめの順番は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まず出力テキストを変え、再コンパイル後のプログラムが本当に反映されているか確認する。&lt;/li&gt;
&lt;li&gt;次に UEFI が提供する簡単な情報を読んでみる。&lt;/li&gt;
&lt;li&gt;エントリー関数、出力プロトコル、基本サービスを理解する。&lt;/li&gt;
&lt;li&gt;最後にファイルシステム、グラフィック出力、ブート項目管理などの複雑な機能を考える。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この順番なら、各ステップを確認できます。&lt;br&gt;
最初から多くを変えると、問題がコードなのか、ビルドなのか、実行環境なのか判断しにくくなります。&lt;/p&gt;
&lt;h2 id=&#34;普通の-c-プログラムとの違い&#34;&gt;普通の C プログラムとの違い
&lt;/h2&gt;&lt;p&gt;UEFI プログラムは C で書けますが、通常の C プログラムとは実行環境がまったく違います。&lt;/p&gt;
&lt;p&gt;通常の C プログラムは OS 上で動き、標準ライブラリ、ファイルシステム、プロセスモデル、システムコールに依存できます。&lt;/p&gt;
&lt;p&gt;UEFI プログラムは OS が起動する前に動作します。利用するのは UEFI ファームウェアが提供するサービスです。通常のプログラムで当たり前に使っているものの多くは、ここでは自然に使えるわけではありません。&lt;/p&gt;
&lt;p&gt;そのため UEFI プログラムを書くときは、いくつかの違いに慣れる必要があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;エントリー関数が違う&lt;/li&gt;
&lt;li&gt;出力方法が違う&lt;/li&gt;
&lt;li&gt;利用できるライブラリが違う&lt;/li&gt;
&lt;li&gt;メモリーやファイルアクセスの方法が違う&lt;/li&gt;
&lt;li&gt;デバッグ方法が違う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;だからこそ、普通の C プログラムの感覚で直接書くのではなく、最小サンプルから始めるのがおすすめです。&lt;/p&gt;
&lt;h2 id=&#34;現実的な学習ルート&#34;&gt;現実的な学習ルート
&lt;/h2&gt;&lt;p&gt;入門だけなら、次の流れが現実的です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第 1 步：&lt;code&gt;uefi-simple&lt;/code&gt; をコンパイルする&lt;/li&gt;
&lt;li&gt;第 2 步：QEMU + OVMF で実行する&lt;/li&gt;
&lt;li&gt;第 3 步：Hello World の出力を変更する&lt;/li&gt;
&lt;li&gt;第 4 步：UEFI Shell が &lt;code&gt;.EFI&lt;/code&gt; をどう読み込むか理解する&lt;/li&gt;
&lt;li&gt;第 5 步：UEFI のエントリー関数と基本的な出力プロトコルを学ぶ&lt;/li&gt;
&lt;li&gt;第 6 步：その後で EDK II やより完整な UEFI 開発資料を見る&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このルートの重要点は、まずフィードバックループを作ることです。&lt;/p&gt;
&lt;p&gt;ソースから &lt;code&gt;.EFI&lt;/code&gt; を生成し、UEFI 環境で出力を確認できれば、最初の大きな壁は越えています。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pbatard/uefi-simple&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pbatard/uefi-simple&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/643704056&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zhihu：UEFI プログラムのコンパイル関連資料&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;最初の UEFI プログラムをコンパイルするときの難しさは、多くの場合「C コードを書くこと」ではなく、ツールチェーン、リンク形式、実行環境をつなげることにあります。&lt;/p&gt;
&lt;p&gt;複雑な機能へ急ぐ必要はありません。&lt;br&gt;
&lt;code&gt;uefi-simple&lt;/code&gt; のような最小サンプルから始め、まず実行できる &lt;code&gt;.EFI&lt;/code&gt; を得てから、UEFI のエントリーポイント、プロトコル、ビルド方法を少しずつ理解していくほうが楽です。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude.md は長ければよいわけではない：AI コーディング用のグローバルメモリファイルの書き方</title>
        <link>https://knightli.com/ja/2026/04/29/how-to-write-claude-md-for-ai-coding/</link>
        <pubDate>Wed, 29 Apr 2026 21:07:37 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/29/how-to-write-claude-md-for-ai-coding/</guid>
        <description>&lt;p&gt;最近、AI コーディング用のグローバルメモリファイルについての議論を見かけました。プロジェクトに &lt;code&gt;Claude.md&lt;/code&gt; や &lt;code&gt;AGENTS.md&lt;/code&gt; のようなファイルを追加しても、必ずしも結果がよくなるとは限らず、場合によっては成功率が下がり、推論コストも上がるという話です。&lt;/p&gt;
&lt;p&gt;一見すると直感に反します。AI にプロジェクト背景、ルール、説明を多く渡せば、より正確にコードを書けるはずだと思いがちです。&lt;br&gt;
しかし本当の問題は、&lt;code&gt;Claude.md&lt;/code&gt; が普通のドキュメントではないことにあります。これは毎回の会話でコンテキストに挿入されるグローバルメモリです。内容が多ければ、モデルは毎回それだけ多く読む必要があります。内容が曖昧なら、毎回余計な判断が増えます。本来入れるべきではない手順を書いてしまうと、関係のないタスクでも不要な動作が発火する可能性があります。&lt;/p&gt;
&lt;p&gt;つまり、&lt;code&gt;Claude.md&lt;/code&gt; を書く難しさは、内容をすべて書き切ることではありません。どの情報が長期的にコンテキストを占有する価値があるかを判断することです。&lt;/p&gt;
&lt;h2 id=&#34;claudemd-とは何か&#34;&gt;Claude.md とは何か
&lt;/h2&gt;&lt;p&gt;AI コーディングツールにおいて、&lt;code&gt;Claude.md&lt;/code&gt; や &lt;code&gt;AGENTS.md&lt;/code&gt; のようなファイルは、本質的にはグローバルメモリファイルです。&lt;/p&gt;
&lt;p&gt;通常の会話もコンテキストに入りますが、コンテキスト長には上限があります。会話が長くなると、履歴は圧縮され、一部の細部は失われます。グローバルメモリファイルの役割は、重要なルールを固定し、モデルが毎回のタスク開始時に参照できるようにすることです。&lt;/p&gt;
&lt;p&gt;これは二つの意味を持ちます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;書いた内容は忘れられにくい&lt;/li&gt;
&lt;li&gt;書いた内容は毎回のタスクでコストになる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは必要なときだけ読まれる README とは違います。長期的に有効な作業制約に近いものです。一度入れると、デフォルトで毎回モデルの判断に影響します。&lt;/p&gt;
&lt;p&gt;そのため、&lt;code&gt;Claude.md&lt;/code&gt; はプロジェクト紹介でも、経験メモでも、すべての開発手順を詰め込む場所でもありません。モデルが知らないと同じミスを繰り返しやすいルールだけを置くべきです。&lt;/p&gt;
&lt;h2 id=&#34;なぜ逆効果になることがあるのか&#34;&gt;なぜ逆効果になることがあるのか
&lt;/h2&gt;&lt;p&gt;グローバルメモリファイルの書き方が悪いと、主に三つの問題が起きます。&lt;/p&gt;
&lt;p&gt;一つ目は、コンテキストを消費することです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; が一千行ある場合、その一千行は長期的にモデルのコンテキストに入ります。現在のタスクに本当に関係するコード、エラーメッセージ、要求仕様が圧迫されるかもしれません。コンテキストは無料の空間ではありません。グローバルルールが大きいほど、現在のタスクの焦点は薄まりやすくなります。&lt;/p&gt;
&lt;p&gt;二つ目は、余計な行動を誘発することです。&lt;/p&gt;
&lt;p&gt;たとえば、グローバルファイルに次のように書いたとします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;毎回タスクを始める前に、プロジェクトディレクトリを完全に読む。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;毎回変更後に、完全なエンドツーエンドテストを実行する。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらは責任ある指示に見えますが、グローバルメモリに置くと「すべてのタスクで実行する」という意味になります。たとえ一行の文言修正であっても、モデルはこのルールに従って不要な探索やテストを行うかもしれません。結果として、作業は遅くなり、コストは上がり、ときには新しい干渉も生まれます。&lt;/p&gt;
&lt;p&gt;三つ目は、判断負荷を増やすことです。&lt;/p&gt;
&lt;p&gt;「コードをエレガント、簡潔、保守しやすく、拡張しやすく保つ」のような文は正しく聞こえますが、実際の制約としては弱いです。モデルはコードを生成するたびに、何がエレガントで何が拡張しやすいのかを判断しなければなりません。しかし明確な境界は与えられていません。&lt;/p&gt;
&lt;p&gt;よりよい書き方は、抽象的な美徳を並べることではなく、具体的な禁止事項や反例を書くことです。たとえば：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;単一の呼び出し箇所のために汎用抽象を追加しない。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;テストカバレッジなしで共有パース処理を変更しない。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一時スクリプトをアプリケーションのソースディレクトリに置かない。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらのルールは具体的で、実行しやすいものです。&lt;/p&gt;
&lt;h2 id=&#34;何を書くべきか&#34;&gt;何を書くべきか
&lt;/h2&gt;&lt;p&gt;ある内容を &lt;code&gt;Claude.md&lt;/code&gt; に書くべきかどうかは、単純な基準で判断できます。&lt;/p&gt;
&lt;p&gt;それを書かないと AI が同じ種類のミスを繰り返すなら、書く価値があります。&lt;/p&gt;
&lt;p&gt;グローバルメモリファイルに向いている内容には、だいたい次の特徴があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長期的に有効である&lt;/li&gt;
&lt;li&gt;現在のリポジトリと強く関係している&lt;/li&gt;
&lt;li&gt;コード構造から自然には推測できない&lt;/li&gt;
&lt;li&gt;モデルの行動を明確に変える&lt;/li&gt;
&lt;li&gt;制約、禁止事項、パス規則、固定コマンドであることが望ましい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;すべての Hugo 記事では index.zh-cn.md だけを編集し、他言語版を自動生成しない。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;記事の front matter には title/date/draft/tags/categories/slug/description が必須。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;public/ 配下の生成物を変更しない。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PowerShell でデプロイするときは scripts/deploy.ps1 を使う。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらは曖昧な助言ではありません。リポジトリの実際の作業方法に結びついています。モデルが知らなければ間違える可能性があり、知っていれば実際に誤操作を減らせます。&lt;/p&gt;
&lt;h2 id=&#34;書くべきではないもの&#34;&gt;書くべきではないもの
&lt;/h2&gt;&lt;p&gt;多くの人は &lt;code&gt;Claude.md&lt;/code&gt; をプロジェクト説明書にしてしまいがちですが、通常それは不要です。&lt;/p&gt;
&lt;p&gt;あまり向いていない内容は次のようなものです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクトのビジョンや背景紹介&lt;/li&gt;
&lt;li&gt;長いディレクトリ構成説明&lt;/li&gt;
&lt;li&gt;一時的なタスク計画&lt;/li&gt;
&lt;li&gt;一回限りのデバッグ手順&lt;/li&gt;
&lt;li&gt;抽象的なコード品質スローガン&lt;/li&gt;
&lt;li&gt;一部の状況でしか必要ない長いワークフロー&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば「これは商品、注文、ユーザーモジュールを含む EC プロジェクトです」という説明は、具体的なコーディングタスクにはあまり役立ちません。実際の開発では、モデルは現在の要求、仕様書、コード構造、テストに基づいて判断すべきであり、グローバルメモリ内の粗い紹介に頼るべきではありません。&lt;/p&gt;
&lt;p&gt;ディレクトリ構成も同じです。「共有コンポーネントはこのディレクトリからのみ参照する」のような特別な約束がある場合を除き、ツリー全体を書く必要はありません。モデルはプロジェクトディレクトリを自分で読めます。静的な構成説明は古くなりやすいだけです。&lt;/p&gt;
&lt;h2 id=&#34;手順は-skills-やコマンドに向いている&#34;&gt;手順は skills やコマンドに向いている
&lt;/h2&gt;&lt;p&gt;ある内容が「第一にこれをする、第二にこれをする、第三にこれをする」という手順なら、それは &lt;code&gt;Claude.md&lt;/code&gt; に置くべきではないかもしれません。&lt;/p&gt;
&lt;p&gt;長期的なワークフローは、skills、スクリプト、コマンドに分離できます。そうすれば、グローバルメモリには名前と発火条件だけを残し、詳細な手順は必要なときだけ読み込めます。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ユーザーが Hugo 記事の翻訳を依頼したら、post-translate skill を使う。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ユーザーがサイトのデプロイを依頼したら、hugo-rsync-deploy ワークフローを実行する。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;完全な翻訳手順やデプロイ手順を &lt;code&gt;Claude.md&lt;/code&gt; に書くより軽くなります。グローバルメモリは短く保ち、具体的な流れは起動可能なツールに任せます。&lt;/p&gt;
&lt;p&gt;Claude の最近の初期化フローもこの方向に進んでいます。単に &lt;code&gt;Claude.md&lt;/code&gt; を生成するだけでなく、再利用可能なワークフローを skills に、固定イベントを hooks に分けようとします。この変化の背景にある考え方は明確です。グローバルメモリは入口だけを担い、詳細は必要に応じて読み込むべきです。&lt;/p&gt;
&lt;h2 id=&#34;claudemd-は継続的に改善するもの&#34;&gt;Claude.md は継続的に改善するもの
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; は一度書いて終わりにすべきではありません。&lt;/p&gt;
&lt;p&gt;より現実的なのは、最初は短く保ち、実際のタスクの中で問題を露出させることです。あるミスが一度だけ起きたなら、まず人間が処理すれば十分です。同種のミスが二回以上起きたなら、それはグローバルルールとして残す価値があるかもしれません。&lt;/p&gt;
&lt;p&gt;最初から大量のルールを書くより、このような反復のほうが効果的です。初期段階では、どのルールが本当に役立つのか、どの内容がノイズになるのか分かりません。プロジェクトが大きくなり、協業が増え、モデルの挙動が安定してきたら、高頻度の問題を少しずつ追加していけばよいのです。&lt;/p&gt;
&lt;p&gt;もう一つ重要な傾向があります。モデルが強くなるほど、グローバルメモリファイルは短くあるべきです。&lt;/p&gt;
&lt;p&gt;以前はプロンプトに書く必要があった多くの要求を、今のモデルは自然に処理できます。そうした基本要求を &lt;code&gt;Claude.md&lt;/code&gt; に入れ続けると、コンテキスト負荷が増えるだけです。グローバルメモリはモデル能力の向上に合わせて縮小し、このリポジトリ固有で、モデルが自動推測できない内容だけを残すべきです。&lt;/p&gt;
&lt;h2 id=&#34;より実用的な書き方&#34;&gt;より実用的な書き方
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; を書くときは、次の順序で考えるとよいです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;このリポジトリにはどんな特別な約束があるか？&lt;/li&gt;
&lt;li&gt;モデルがすでに二回以上犯したミスは何か？&lt;/li&gt;
&lt;li&gt;誤用してはいけないディレクトリ、ファイル、コマンドは何か？&lt;/li&gt;
&lt;li&gt;どの手順は常駐コンテキストではなく、skills、スクリプト、コマンドにすべきか？&lt;/li&gt;
&lt;li&gt;どの内容は単なる紹介で、削除できるか？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最終的なファイルは数十行だけかもしれません。プロジェクト全体を説明する必要はありません。行動を正確に制約することが目的です。&lt;/p&gt;
&lt;p&gt;よい &lt;code&gt;Claude.md&lt;/code&gt; は、たとえば次のようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 作業ルール
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 現在のタスクに関係するファイルだけを編集する。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- public/ や resources/ のような生成物ディレクトリを変更しない。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Hugo 記事の書き換えでは index.zh-cn.md だけを処理し、他言語版を生成しない。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- デプロイが関係する場合は、先に Hugo ビルドを実行し、その後既存の rsync スクリプトを実行する。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 既存のユーザー変更がある場合は、巻き戻さず、現在の状態を前提に続ける。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;短いですが、どの行も実際の行動に影響します。こういう内容こそ、長期的にコンテキストを占有する価値があります。&lt;/p&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; の価値は、AI に「もっと多くを知ってもらう」ことではありません。AI に「決まったミスを減らしてもらう」ことです。&lt;/p&gt;
&lt;p&gt;これは知識ベースでもプロジェクト百科でもありません。AI コーディングにおける長期的な制約ファイルです。&lt;br&gt;
具体的で、短く、実際のミスに近いほど役に立ちます。逆に、汎用的で、長く、プロジェクト紹介のようになるほど、モデルを遅くし、結果を悪化させる可能性が高くなります。&lt;/p&gt;
&lt;p&gt;グローバルメモリは無限のメモ帳ではなく、希少な資源として扱う。これが、よい &lt;code&gt;Claude.md&lt;/code&gt; を書くためのもっとも重要な原則かもしれません。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex がコンピューターを操作し始めると、これから何が変わるのか？</title>
        <link>https://knightli.com/ja/2026/04/29/codex-computer-use-update/</link>
        <pubDate>Wed, 29 Apr 2026 11:28:25 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/29/codex-computer-use-update/</guid>
        <description>&lt;p&gt;今回の Codex で最も注目すべき変化は、普通のボタンが一つ増えたことではありません。Codex が「コンピューターを操作する」方向へ進み始めたことです。&lt;/p&gt;
&lt;p&gt;これまで AI を使うとき、多くの場合はチャット欄で質問し、コピーして貼り付け、その後は人間が手動でソフトウェアを操作していました。&lt;br&gt;
今、その境界が外側へ広がり始めています。AI は答えるだけでなく、あなたの目的に合わせてデスクトップアプリを操作できるようになりつつあります。&lt;/p&gt;
&lt;p&gt;短期的には新機能の一つです。長期的には、多くの人のコンピューターの使い方を変えるかもしれません。&lt;/p&gt;
&lt;h2 id=&#34;この機能とは何か&#34;&gt;この機能とは何か
&lt;/h2&gt;&lt;p&gt;簡単に言えば、Codex のコンピューター操作機能は、デスクトップ環境に触れ、それを操作できるようにするものです。&lt;/p&gt;
&lt;p&gt;できることは次のようなものです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特定のアプリを選択して操作する&lt;/li&gt;
&lt;li&gt;自然言語でタスクを受け取る&lt;/li&gt;
&lt;li&gt;ブラウザ、AI ツール、ローカルファイル、その他のソフトウェアを開く&lt;/li&gt;
&lt;li&gt;テキストを入力し、ボタンをクリックし、結果を待つ&lt;/li&gt;
&lt;li&gt;複数の手順を一つのタスクとしてつなげる&lt;/li&gt;
&lt;li&gt;ユーザーが一歩ずつ追わなくても、バックグラウンドで実行を続ける&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;役割は、単に文章を一段落書くことではありません。操作の流れそのものを代行することです。&lt;/p&gt;
&lt;p&gt;ここが Agent と普通のチャットボットの大きな違いです。&lt;br&gt;
チャットボットは主に答えを返します。Agent は「目的を受け取り、それを実行する」ものに近づきます。&lt;/p&gt;
&lt;h2 id=&#34;なぜ重要なのか&#34;&gt;なぜ重要なのか
&lt;/h2&gt;&lt;p&gt;これまで多くの自動化には、スクリプトを書く力が必要でした。&lt;/p&gt;
&lt;p&gt;たとえば、複数のソフトウェアをまたぐ作業をしたいとします。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web ページを開く&lt;/li&gt;
&lt;li&gt;情報を探す&lt;/li&gt;
&lt;li&gt;内容をコピーする&lt;/li&gt;
&lt;li&gt;別の AI ツールに渡す&lt;/li&gt;
&lt;li&gt;ファイルを保存する&lt;/li&gt;
&lt;li&gt;ローカルディレクトリを開いて結果を確認する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;従来の方法でこれを自動化するなら、ブラウザスクリプト、API、ローカルプログラム、場合によってはウィンドウ操作まで扱う必要があります。&lt;/p&gt;
&lt;p&gt;しかし、多くの一般ユーザーはそうしたものを書けません。&lt;br&gt;
書ける人でも、一時的な作業のために専用スクリプトを書く価値があるとは限りません。&lt;/p&gt;
&lt;p&gt;コンピューター操作機能の意味はここにあります。&lt;br&gt;
「スクリプト的な能力」を自然言語の方向へ一歩押し出します。&lt;/p&gt;
&lt;p&gt;どこをクリックするかを細かく教える必要はありません。&lt;br&gt;
欲しい結果を伝え、あとは Agent に試してもらう形に近づきます。&lt;/p&gt;
&lt;h2 id=&#34;どんなワークフローが変わるのか&#34;&gt;どんなワークフローが変わるのか
&lt;/h2&gt;&lt;p&gt;最初に変わるのは、極めて厳密で高リスクな仕事ではなく、面倒で、細かく、繰り返しが多く、それでも専用プログラムを書くほどではない作業だと思います。&lt;/p&gt;
&lt;h3 id=&#34;1-ソフトウェア間の情報移動&#34;&gt;1. ソフトウェア間の情報移動
&lt;/h3&gt;&lt;p&gt;典型的なのは、複数のソフトウェア間で情報を移動する作業です。&lt;/p&gt;
&lt;p&gt;これまでは、ブラウザ、文書、チャット画面、ローカルフォルダを何度も行き来していたかもしれません。&lt;br&gt;
今後は、こうした作業を Agent に任せられるようになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ある種類の情報を探す&lt;/li&gt;
&lt;li&gt;文書にまとめる&lt;/li&gt;
&lt;li&gt;指定フォルダに保存する&lt;/li&gt;
&lt;li&gt;結果を開いて確認できる状態にする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この作業は難しくありませんが、注意力を消耗します。&lt;br&gt;
Agent の価値は、こうした細かい操作を吸収することです。&lt;/p&gt;
&lt;h3 id=&#34;2-複数の-ai-ツールの連携&#34;&gt;2. 複数の AI ツールの連携
&lt;/h3&gt;&lt;p&gt;今では、一つの AI ツールだけで完結しない作業も増えています。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;あるツールでコードを書く&lt;/li&gt;
&lt;li&gt;あるツールで資料を調べる&lt;/li&gt;
&lt;li&gt;あるツールで画像を生成する&lt;/li&gt;
&lt;li&gt;あるツールで文書を整理する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これまでは、それらの間を人間がコピー&amp;amp;ペーストでつないでいました。&lt;br&gt;
これからは、Agent が中間層になれます。ツールを開き、文脈を渡し、出力を待ち、結果を整理します。&lt;/p&gt;
&lt;p&gt;これにより、「複数の AI ツールの協調」は手作業から半自動の流れに変わります。&lt;/p&gt;
&lt;h3 id=&#34;3-オフィスソフトの自動化&#34;&gt;3. オフィスソフトの自動化
&lt;/h3&gt;&lt;p&gt;表計算、プレゼン、文書、メールには共通点があります。機能は強力ですが、操作は細かいものが多いということです。&lt;/p&gt;
&lt;p&gt;Agent がこれらを安定して操作できるようになれば、オフィス自動化のハードルはかなり下がります。&lt;/p&gt;
&lt;p&gt;メニューの場所を覚えたり、複雑なショートカットを覚えたりする必要は薄れます。&lt;br&gt;
必要なのは、目的をはっきり伝えることです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;この表を月報にまとめる&lt;/li&gt;
&lt;li&gt;この文書から 1 ページの要約を作る&lt;/li&gt;
&lt;li&gt;これらの資料を構造の分かりやすい説明にまとめる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;面倒なボタン操作は、少しずつ自然言語の後ろに隠れていくでしょう。&lt;/p&gt;
&lt;h2 id=&#34;一般ユーザーにとっての意味&#34;&gt;一般ユーザーにとっての意味
&lt;/h2&gt;&lt;p&gt;一般ユーザーにとって、この種の機能は「モデルが少し賢くなった」ことよりも直接的な影響を持つかもしれません。&lt;/p&gt;
&lt;p&gt;下がるのは知識のハードルだけではなく、操作のハードルだからです。&lt;/p&gt;
&lt;p&gt;多くの人は、やりたいことを説明できないわけではありません。&lt;br&gt;
どこをクリックすればよいか、ソフトウェアの機能をどう組み合わせればよいかが分からないのです。&lt;/p&gt;
&lt;p&gt;Agent がそこを引き受けられるなら、コンピューターの使い方は次のようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;私が目的を説明する
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Agent がソフトウェアを操作する
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;私が結果を確認する
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは単なるチャットより、実際の生産性に近い形です。&lt;/p&gt;
&lt;h2 id=&#34;ソフトウェアの形にも影響する&#34;&gt;ソフトウェアの形にも影響する
&lt;/h2&gt;&lt;p&gt;この種の Agent 能力が成熟していけば、ソフトウェアそのものも影響を受けます。&lt;/p&gt;
&lt;p&gt;これまでソフトウェア設計は、主に人間のクリックに向けられていました。&lt;br&gt;
これからは、Agent による操作も意識する必要が出てきます。&lt;/p&gt;
&lt;p&gt;つまり：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI 要素はより明確である必要がある&lt;/li&gt;
&lt;li&gt;操作結果のフィードバックは安定している必要がある&lt;/li&gt;
&lt;li&gt;ローカル権限はより細かく管理される必要がある&lt;/li&gt;
&lt;li&gt;ソフトウェアは Agent が呼び出しやすいインターフェースを用意するかもしれない&lt;/li&gt;
&lt;li&gt;ユーザーは「AI がうまく操作できるか」を気にするようになる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;長期的には、アプリ間の境界は薄くなるかもしれません。&lt;br&gt;
ユーザーが気にするのは「どのアプリを開くか」ではなく、「どのタスクを完了したいか」になります。&lt;/p&gt;
&lt;h2 id=&#34;まだ過度に楽観する段階ではない&#34;&gt;まだ過度に楽観する段階ではない
&lt;/h2&gt;&lt;p&gt;もちろん、今すぐ完全に任せる段階ではありません。&lt;/p&gt;
&lt;p&gt;この能力には、まだ明確な制限があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安定性はまだ見ていく必要がある&lt;/li&gt;
&lt;li&gt;複雑なタスクは途中で失敗する可能性がある&lt;/li&gt;
&lt;li&gt;権限の境界は慎重に扱う必要がある&lt;/li&gt;
&lt;li&gt;アカウント、支払い、ファイル削除のような操作は簡単に任せるべきではない&lt;/li&gt;
&lt;li&gt;利用枠の消費も無視できない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そのため現時点で最も向いている使い方は、コンピューター全体を完全に任せることではありません。&lt;br&gt;
低リスクで、確認可能で、手順が多い作業を任せることです。&lt;/p&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料を整理する&lt;/li&gt;
&lt;li&gt;下書きを生成する&lt;/li&gt;
&lt;li&gt;ツール間で内容を移動する&lt;/li&gt;
&lt;li&gt;ファイルを開いて確認する&lt;/li&gt;
&lt;li&gt;人間が最後に確認できる半自動フローを実行する&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;今回の Codex 更新で本当に重要なのは、AI が「質問に答える」段階から「環境を操作する」段階へ進んだことです。&lt;/p&gt;
&lt;p&gt;短期的には、これはコンピューター操作機能です。&lt;br&gt;
長期的には、個人用コンピューターとの関わり方の転換点になるかもしれません。&lt;/p&gt;
&lt;p&gt;これから私たちは、ボタンを覚えたり、メニューを探したり、ウィンドウを切り替えたりする時間を減らしていくかもしれません。&lt;br&gt;
その代わりに、目的を伝え、Agent に実行させ、最後に人間が判断する場面が増えていくでしょう。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Skill はディレクトリにあるのに、なぜ表示されないのか？</title>
        <link>https://knightli.com/ja/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</link>
        <pubDate>Wed, 29 Apr 2026 11:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</guid>
        <description>&lt;p&gt;今回の問題はかなり見落としやすいものでした。&lt;code&gt;~/.codex/skills&lt;/code&gt; には複数の skill が置かれているのに、新しい Codex スレッドを開いても、サイドバーには一部しか表示されませんでした。&lt;/p&gt;
&lt;p&gt;最初はキャッシュやインデックスの問題に見えました。実際の原因はもっと具体的で、いくつかの &lt;code&gt;SKILL.md&lt;/code&gt; ファイルの先頭に UTF-8 BOM が付いていました。Codex 0.111.0 の skill loader はこのバイト列を読み飛ばさず、結果として有効な YAML front matter がないと誤判定していました。&lt;/p&gt;
&lt;h2 id=&#34;現象&#34;&gt;現象
&lt;/h2&gt;&lt;p&gt;ローカルディレクトリには次の skill がありました。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/git-commit-push/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/hugo-rsync-deploy/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/bilibili-speech-transcriber/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/product-cutout-normalize/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;しかし新しいスレッドで実際に公開された skill は次の二つだけでした。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;つまり、ファイルが存在することと、現在のセッションで読み込めることは別です。Codex は各 &lt;code&gt;SKILL.md&lt;/code&gt; の front matter を先に解析し、解析に失敗した skill はそのまま除外します。&lt;/p&gt;
&lt;h2 id=&#34;調査&#34;&gt;調査
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;codex exec&lt;/code&gt; で新しいセッションを起動すると、より直接的なエラーが見えます。VS Code などの IDE では、こうした log が見えない場合があります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md: missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md: missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらのファイルは、見た目には正常な先頭を持っていました。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: post-rewrite
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本当の問題はバイト列にありました。&lt;/p&gt;
&lt;p&gt;失敗するファイルの先頭は：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EF-BB-BF-2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;正常に読み込まれるファイルの先頭は：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;2D-2D-2D&lt;/code&gt; は &lt;code&gt;---&lt;/code&gt; です。その前にある &lt;code&gt;EF-BB-BF&lt;/code&gt; が UTF-8 BOM です。&lt;/p&gt;
&lt;h2 id=&#34;原因&#34;&gt;原因
&lt;/h2&gt;&lt;p&gt;Codex 0.111.0 の skill loader は、&lt;code&gt;SKILL.md&lt;/code&gt; の最初のバイトが &lt;code&gt;---&lt;/code&gt; の最初の &lt;code&gt;-&lt;/code&gt; であることを期待しています。&lt;/p&gt;
&lt;p&gt;ファイルの先頭に UTF-8 BOM があると、実際の先頭は次のようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BOM + ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;そのため loader は、ファイルが front matter の区切りで始まっていないと判断し、最終的に次のエラーを出します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;skill の内容が間違っていたわけでも、ディレクトリが間違っていたわけでもありません。エンコーディングの細部が原因で、パーサーがファイルを認識できなかっただけです。&lt;/p&gt;
&lt;h2 id=&#34;修正&#34;&gt;修正
&lt;/h2&gt;&lt;p&gt;問題のある &lt;code&gt;SKILL.md&lt;/code&gt; を BOM なしの UTF-8 に変換します。&lt;/p&gt;
&lt;p&gt;PowerShell では次のように処理できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$paths&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$utf8NoBom&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;UTF8Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;vm&#34;&gt;$false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;Text.Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTF8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$utf8NoBom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;処理後にファイルヘッダーを確認すると、次の状態から：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EF-BB-BF-2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次の状態に変わっているはずです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;検証&#34;&gt;検証
&lt;/h2&gt;&lt;p&gt;Codex セッションを再起動すると、表示される skill は次のように戻りました。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git-commit-push-zh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo-rsync-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;それでもサイドバーに古い一覧しか表示されない場合は、現在の Codex sidebar またはウィンドウを閉じて、プロジェクトを開き直します。skill 一覧は通常セッション開始時に読み込まれるため、途中でファイルを変更してもすぐには反映されないことがあります。&lt;/p&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;この種の問題は、「Codex が再インデックスしていない」または「skill のインストールに失敗した」と誤解しやすいです。&lt;/p&gt;
&lt;p&gt;実際に調べるときは、まず次の三点を確認するとよいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; が正しいディレクトリにあるか&lt;/li&gt;
&lt;li&gt;ファイル先頭に有効な &lt;code&gt;---&lt;/code&gt; front matter があるか&lt;/li&gt;
&lt;li&gt;ファイルが BOM なしの UTF-8 か&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回のポイントは三つ目です。ファイルは見た目には問題ありませんでしたが、最初のバイトが &lt;code&gt;-&lt;/code&gt; ではなかったため、Codex はそれを有効な skill として扱いませんでした。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex の ~/.codex/skills と プロジェクト/.codex/skills の違い</title>
        <link>https://knightli.com/ja/2026/04/29/difference-between-global-and-project-codex-skills/</link>
        <pubDate>Wed, 29 Apr 2026 11:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/29/difference-between-global-and-project-codex-skills/</guid>
        <description>&lt;p&gt;Codex skills を整理するとき、多くの人がつまずきやすい問題は主に二つあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; と &lt;code&gt;プロジェクト/.codex/skills&lt;/code&gt; は何が違うのか&lt;/li&gt;
&lt;li&gt;skill はディレクトリにあるのに、なぜ現在のセッションに表示されないことがあるのか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この文章では結論から整理します。&lt;/p&gt;
&lt;h2 id=&#34;両者の違い&#34;&gt;両者の違い
&lt;/h2&gt;&lt;p&gt;まず短く覚えるなら、こうです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; は自分用のグローバルなスキルライブラリ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;プロジェクト/.codex/skills&lt;/code&gt; はそのリポジトリ用のローカルなスキルライブラリ&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;codexskills&#34;&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;ここに置くのに向いているもの：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自分が複数プロジェクトで繰り返し使う skill&lt;/li&gt;
&lt;li&gt;特定のリポジトリに依存しない汎用的な手順&lt;/li&gt;
&lt;li&gt;明らかに個人の作業習慣に属するワークフロー&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;post-rewrite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;post-translate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git-commit-push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo-rsync-deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bilibili-speech-transcriber&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このタイプの skill の特徴は、&lt;strong&gt;現在のプロジェクトを離れても使える&lt;/strong&gt;ことです。&lt;/p&gt;
&lt;h3 id=&#34;プロジェクトcodexskills&#34;&gt;&lt;code&gt;プロジェクト/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;ここに置くのに向いているもの：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;このリポジトリでだけ成立する手順&lt;/li&gt;
&lt;li&gt;現在のプロジェクトのディレクトリ構成、スクリプト、テンプレートに強く結びついたルール&lt;/li&gt;
&lt;li&gt;チームで共有したい skill&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たとえば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;このリポジトリ固有の公開フロー&lt;/li&gt;
&lt;li&gt;このプロジェクト内でしか使えない生成テンプレート&lt;/li&gt;
&lt;li&gt;プロジェクト固有のスクリプトに強く依存する自動化手順&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このタイプの skill の特徴は、&lt;strong&gt;このリポジトリを離れると意味が薄くなる&lt;/strong&gt;ことです。&lt;/p&gt;
&lt;h2 id=&#34;グローバルに置くかプロジェクトに置くか&#34;&gt;グローバルに置くか、プロジェクトに置くか
&lt;/h2&gt;&lt;p&gt;判断基準はシンプルです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;個人の作業習慣に関係するなら &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;リポジトリのルールに関係するなら &lt;code&gt;プロジェクト/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;複数プロジェクトで再利用できるなら、まずはグローバル&lt;/li&gt;
&lt;li&gt;複数人で共有し、リポジトリと一緒に育てたいなら、プロジェクト側&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;今回のリポジトリの状態&#34;&gt;今回のリポジトリの状態
&lt;/h2&gt;&lt;p&gt;現在見えている状態では：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ローカル環境には &lt;code&gt;~/.codex/skills&lt;/code&gt; がある&lt;/li&gt;
&lt;li&gt;現在のリポジトリには &lt;code&gt;.codex/skills&lt;/code&gt; がない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、今は主にグローバル skills に依存しています。&lt;/p&gt;
&lt;p&gt;言い換えると、&lt;code&gt;post-rewrite&lt;/code&gt;、&lt;code&gt;post-translate&lt;/code&gt;、&lt;code&gt;git-commit-push&lt;/code&gt; のような手順は、このリポジトリに明示的に含まれているものではなく、あなた個人のワークフローに近いものです。&lt;/p&gt;
&lt;h2 id=&#34;ディスク上にあるのに現在のセッションに表示されない理由&#34;&gt;ディスク上にあるのに、現在のセッションに表示されない理由
&lt;/h2&gt;&lt;p&gt;ここでは二つの状態を分けて考える必要があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ディスク上に存在する&lt;/strong&gt;：skill ファイルがローカルのディレクトリにある&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;セッションに公開されている&lt;/strong&gt;：現在のセッションがそれを利用可能な skill として登録している&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この二つは同じではありません。&lt;/p&gt;
&lt;p&gt;そのため、次のようなことが起きます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; にはすでに skill がある&lt;/li&gt;
&lt;li&gt;しかし &lt;code&gt;/&lt;/code&gt; の後に出る一覧には表示されない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは通常、skill が壊れているという意味ではありません。より多い原因は、&lt;strong&gt;現在のセッションがそれを再インデックスしていない&lt;/strong&gt;ことです。&lt;/p&gt;
&lt;h2 id=&#34;現在のセッションに-skill-を表示させるには&#34;&gt;現在のセッションに skill を表示させるには
&lt;/h2&gt;&lt;p&gt;実用上の手順は次の通りです。&lt;/p&gt;
&lt;h3 id=&#34;1-正しいディレクトリに置く&#34;&gt;1. 正しいディレクトリに置く
&lt;/h3&gt;&lt;p&gt;グローバル：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;プロジェクト単位：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;プロジェクト/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-skillmd-の先頭を認識できる形にする&#34;&gt;2. &lt;code&gt;SKILL.md&lt;/code&gt; の先頭を認識できる形にする
&lt;/h3&gt;&lt;p&gt;最低限、次のような front matter が必要です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: your-skill-name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: この skill が何をするものか
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-新規作成または編集後は新しいセッションを開く&#34;&gt;3. 新規作成または編集後は、新しいセッションを開く
&lt;/h3&gt;&lt;p&gt;skill が表示されない原因は、ファイルの問題ではなく、現在のセッション開始時に利用可能な skill 一覧がすでに確定していたことかもしれません。&lt;/p&gt;
&lt;p&gt;そのため、セッション中に skill を作成しても、ディスク上には存在する一方で、そのセッションでは認識されない場合があります。&lt;/p&gt;
&lt;p&gt;いちばん確実な流れは次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;skill を正しい場所に置く&lt;/li&gt;
&lt;li&gt;現在のセッションを終了する&lt;/li&gt;
&lt;li&gt;プロジェクトに入り直す&lt;/li&gt;
&lt;li&gt;新しいセッションを開く&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/&lt;/code&gt; に表示されるか確認する&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;4-プロジェクト-skill-は事前に置いておく&#34;&gt;4. プロジェクト skill は事前に置いておく
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;プロジェクト/.codex/skills&lt;/code&gt; をより安定して認識させたいなら、リポジトリに入り、セッションを開始する前に、それらの skill をプロジェクト内に置いておくのが無難です。&lt;/p&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;短くまとめると：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; は個人用のスキルライブラリ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;プロジェクト/.codex/skills&lt;/code&gt; はリポジトリ用のローカルルールライブラリ&lt;/li&gt;
&lt;li&gt;skill がディレクトリにあることと、現在のセッションに表示されることは別&lt;/li&gt;
&lt;li&gt;表示させたいなら、正しいディレクトリに置き、正しい &lt;code&gt;SKILL.md&lt;/code&gt; を書き、新しいセッションを開くのが基本&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GoAccess最新版の自前ビルドと利用メモ: ソース導入からリアルタイムHTMLレポートまで</title>
        <link>https://knightli.com/ja/2026/04/29/goaccess-build-from-source-and-latest-usage/</link>
        <pubDate>Wed, 29 Apr 2026 00:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/29/goaccess-build-from-source-and-latest-usage/</guid>
        <description>&lt;p&gt;整理時点は &lt;code&gt;2026-04-29&lt;/code&gt; です。&lt;br&gt;
現時点で公式 README に載っている最新安定版は &lt;code&gt;1.10.2&lt;/code&gt; です。&lt;/p&gt;
&lt;h2 id=&#34;1-まずビルド依存を入れる&#34;&gt;1. まずビルド依存を入れる
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y build-essential wget tar &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  libncurses-dev libmaxminddb-dev libssl-dev zlib1g-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;2-最新ソースパッケージを取得する&#34;&gt;2. 最新ソースパッケージを取得する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /usr/local/src
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo tar -xzvf goaccess-1.10.2.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; goaccess-1.10.2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-ビルドオプションを設定する&#34;&gt;3. ビルドオプションを設定する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ./configure --enable-utf8 --enable-geoip&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mmdb --with-zlib
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;リアルタイムHTMLレポートで TLS も使いたいなら、こちらでもよいです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ./configure --enable-utf8 --enable-geoip&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mmdb --with-zlib --with-openssl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;4-ビルドしてインストールする&#34;&gt;4. ビルドしてインストールする
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo make
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;5-バージョンを確認する&#34;&gt;5. バージョンを確認する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which goaccess
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;6-端末でそのままレポートを見る&#34;&gt;6. 端末でそのままレポートを見る
&lt;/h2&gt;&lt;p&gt;Nginx や Apache の一般的な combined ログなら、まずはこれでよいです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Apache のログパスならこちらです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/apache2/access.log --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;7-静的な-html-レポートを生成する&#34;&gt;7. 静的な HTML レポートを生成する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -a &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o /usr/share/nginx/html/goaccess-report.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;カレントディレクトリに出しても構いません。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -a &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o report.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;8-リアルタイム-html-レポートを生成する&#34;&gt;8. リアルタイム HTML レポートを生成する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -a &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o /usr/share/nginx/html/goaccess-report.html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --real-time-html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ポートを変えるなら:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -a &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o /usr/share/nginx/html/goaccess-report.html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --real-time-html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --port&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;7891&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ローカルホストだけにバインドするなら:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -a &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o /usr/share/nginx/html/goaccess-report.html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --real-time-html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --addr&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;9-ログを追い続ける&#34;&gt;9. ログを追い続ける
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -f /var/log/nginx/access.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; goaccess --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ファイル先頭から読んで、そのままリアルタイムで追うなら:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -f -n +0 /var/log/nginx/access.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; goaccess &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o report.html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --real-time-html -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;10-特定のリクエストだけを見る&#34;&gt;10. 特定のリクエストだけを見る
&lt;/h2&gt;&lt;p&gt;たとえば &lt;code&gt;firefox&lt;/code&gt; を含むリクエストだけ:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -f /var/log/nginx/access.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i --line-buffered &lt;span class=&#34;s1&#34;&gt;&amp;#39;firefox&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; goaccess &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;たとえば &lt;code&gt;5xx&lt;/code&gt; と &lt;code&gt;3xx&lt;/code&gt; だけ:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -f -n +0 /var/log/nginx/access.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;$9~/3[0-9]{2}|5[0-9]{2}/&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; goaccess &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o out.html -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;11-複数ログをまとめて解析する&#34;&gt;11. 複数ログをまとめて解析する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log /var/log/nginx/access.log.1 --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;圧縮済みと未圧縮をまとめて読むなら:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zcat --force /var/log/nginx/access.log* &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; goaccess --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;12-マルチスレッドを使う&#34;&gt;12. マルチスレッドを使う
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o report.html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -j &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;chunk を大きくするなら:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o report.html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -j &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --chunk-size&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8192&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;13-増分処理&#34;&gt;13. 増分処理
&lt;/h2&gt;&lt;p&gt;まず古いログを永続化しておく:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log.1 --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED --persist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次に現在のログを追加する:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED --restore --persist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;永続化済みデータだけを読む:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess --restore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;14-自分なら最初に流すコマンド&#34;&gt;14. 自分なら最初に流すコマンド
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y build-essential wget tar &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  libncurses-dev libmaxminddb-dev libssl-dev zlib1g-dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /usr/local/src
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo tar -xzvf goaccess-1.10.2.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; goaccess-1.10.2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ./configure --enable-utf8 --enable-geoip&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mmdb --with-zlib --with-openssl
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo make
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;goaccess /var/log/nginx/access.log &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;COMBINED &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -a &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o /usr/share/nginx/html/goaccess-report.html &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --real-time-html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;だいたいこれで十分です。&lt;br&gt;
やることが明確なら、最新版をソースから入れて、まず &lt;code&gt;--log-format=COMBINED&lt;/code&gt; と &lt;code&gt;--real-time-html&lt;/code&gt; を通すところまで進めれば、あとはログパス、出力先、ポートを調整していくくらいです。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
