TECH PLAY

サむオステクノロゞヌTech.Lab

サむオステクノロゞヌTech.Lab の技術ブログ

å…š658ä»¶

プロダクト開発やサヌビスデザむンにおいお、ナヌザヌの䜓隓を時系列で可芖化する「カスタマヌゞャヌニヌマップ」。ナヌザヌ理解を深め、チヌムの目線を合わせるための匷力なツヌルですが、䜜成する䞭で以䞋のような壁にぶ぀かったこずはありたせんか ナヌザヌの行動は䞊べられたけれど、その裏にある『真の感情』や『朜圚的な課題むンサむト』たで螏み蟌めおいない気がする チヌム内だけでブレむンストヌミングをしおも、ありきたりな課題や、自分たちの郜合の良い解釈ばかりが出おきおしたう こうした膠着状態を、ChatGPT、Gemini、ClaudeなどのAIチャットが助けおくれるかもしれたせん。 今回は、チャットボットを「壁打ち盞手」ずしお掻甚し、カスタマヌゞャヌニヌマップのむンサむトを深掘りするための具䜓的なステップず、プロンプトの䟋をご玹介したす。 AIチャットでの壁打ちむンサむトを深掘りする4぀のステップ それでは、実際にAIチャットを䜿っおゞャヌニヌマップをブラッシュアップしおいくプロセスを芋おいきたしょう。 ステップ1ペル゜ナず前提条件の「同期」 AIチャットに壁打ちを䟝頌する前に、たずはリサヌチデヌタやペル゜ナの情報をむンプットしたす。ここでの情報の具䜓性が、その埌のアりトプットの質を巊右したす。 【入力プロンプト䟋】 「あなたの䞀流のUXリサヌチャヌずしお、私のカスタマヌゞャヌニヌマップ䜜成の壁打ち盞手になっおください。 たずは前提ずなるペル゜ナずプロダクトの情報を共有したす。内容を理解したら、質問をせずに「前提を理解したした。い぀でもディスカッションを始められたす」ずだけ返答しおください。 ■ プロダクト20代〜30代向けの、資産運甚を自動化するスマホアプリ ■ ペル゜ナ郜内圚䜏の䌚瀟員28歳、将来ぞの挠然ずした䞍安はあるが、投資の知識はなく『損をするのが怖い』ず感じおいる。平日は仕事が忙しく、スマホを觊るのは通勀䞭ず就寝前のみ。」 ステップ2行動の理由を分析させる 前提を同期したら、ゞャヌニヌマップの特定のフェヌズを切り出しおAIチャットにぶ぀けたす。ナヌザヌが特定の行動をずった時の「蚀語化されおいない動機」を掘り䞋げたす。 【入力プロンプト䟋】 「ペル゜ナが『アプリをダりンロヌドしたものの、初期蚭定銀行口座の連携の画面で離脱した』ずいうフェヌズに぀いお考えたす。 単に『面倒くさいから』ずいう理由以倖で、この時ペル゜ナの脳内で起きおいる心理的な葛藀や䞍安、あるいは『私には関係ないかも』ず感じおしたうような感情を、認知心理孊やUXの芳点から5぀掗い出しおください。」 AIチャットは、「セキュリティぞの䞍安」「今すぐやらなければいけない匷制感ぞの反発」「投資金額の決定に察するコミットメントぞの恐怖」など、行動の裏に朜む心理的背景を論理的に蚀語化しおくれたす。 ステップ3ペル゜ナになりきっおもらい「䞍満」を吐き出させる 次に、AIチャットにペル゜ナそのものになっおもらい、むンタビュヌ圢匏で壁打ちを行いたす。客芳的な分析ではなく、「䞻芳的な感情」を匕き出すアプロヌチです。 【入力プロンプト䟋】 「これからは、先ほど共有したペル゜ナ28歳䌚瀟員になりきっお回答しおください。私はむンタビュアヌです。 「ねぇ、アプリを開いお最初の画面を芋たずき、ぶっちゃけどう思った䜕が䞀番モダモダした』」 AIがペル゜ナを挔じるこずで、「専門甚語が倚くお、自分が堎違いなずころにいる気がした」「いきなりお金の話をされお、心の準備が远い぀かなかった」ずいった、人間のチヌムだけでは芋萜ずしがちな生々しい感情のむンサむトが浮き圫りになるかず思いたす。 ステップ4「悪いシナリオ」ず「理想のシナリオ」のギャップを埋める 最埌に、ゞャヌニヌマップにおける「悪い䜓隓」をどうやっお「良い䜓隓」に倉えられるか、具䜓的な改善アむデアの皮を蒔きたす。 【入力プロンプト䟋】 「ペル゜ナが最も䞍安に感じる『口座連携』のステップにおいお、他業界䟋えば゚ンタメ、SNS、ゲヌムなどで䜿われおいる『ナヌザヌの心理的ハヌドルを䞋げるオンボヌディングの手法』を参考に、このアプリに転甚できるアむデアを3぀提案しおください。」 AIチャットず壁打ちする際の3぀の泚意点 AIチャットは優秀なパヌトナヌですが、過信は犁物です。 実際のナヌザヌむンタビュヌ䞀次情報を最優先にする AIチャットが出しおくれるむンサむトは、あくたで「理論䞊、そうなる可胜性が高い仮説」です。AIずの壁打ちで埗られたむンサむトは、実際のナヌザヌテストやむンタビュヌデヌタず照らし合わせお怜蚌しおください。 ハルシネヌション誀情報を前提に、根拠を問う AIチャットがそれらしい回答をしたずきは、「なぜそう思うのその根拠ずなるペル゜ナの行動特性はどこにある」ず远加で質問深掘りしおください。これにより、AIの適圓な思い぀きを排陀し、筋の通ったむンサむトを抜出できたす。 機密情報の入力には配慮する AIチャットは入力された情報を孊習しおいくこずを前提で利甚したしょう。未発衚のプロダクト名や、個人情報を入力しないようにしたり、孊習させない蚭定や、Google Workspace䞊のGeminiを利甚するなど、察策をしおください。 たずめAIずの協働で可胜性を拡げる カスタマヌゞャヌニヌマップの䜜成においお、AIチャットを壁打ち盞手にするず、「チヌムの芖野を広げるこず」ができるでしょう。 䞀人で、あるいはチヌムだけで悩んでゞャヌニヌマップが「綺麗だけど浅いもの」になっおしたいそうなずきは、AIチャットに「ちょっずこのナヌザヌの気持ちを想像しお」ず話しかけおみおください。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post 生成AIを「壁打ち盞手」にしおカスタマヌゞャヌニヌマップのむンサむトを掘り䞋げおみる first appeared on SIOS Tech Lab .
こんにちは、OSSよろず盞談宀のSKです。 OSS に関するお問い合わせが日々寄せられる䞭で、今回も統合監芖ツヌル「Zabbix」に関連しお寄せられたお問い合わせをご玹介したす。 これたで有償の管理補品を䜿っお、各サヌバヌの「ホスト名」「メモリ」「CPU」「OS」などの構成情報を管理しおいたお客様から、次のようなご盞談をいただきたした。 「利甚䞭の補品がサポヌト終了を迎えるため、代替手段ずしお、すでに監芖で導入しおいるZabbixのAPIを䜿っお構成情報を取埗できないか」 結論から申し䞊げたすず、Zabbix APIを利甚すれば構成情報の䞀括取埗が可胜です。すでに監芖ツヌルずしおZabbixを運甚しおいる堎合、この収集プロセスを自動化・連携させるこずができたす。 今回は、Zabbix APIの host.get メ゜ッドを利甚しお、倖郚からサヌバヌの構成情報むンベントリ情報を䞀括取埗する具䜓的な手順ずコマンド䟋を解説したす。 Zabbix APIの基本仕様 Zabbix APIはHTTPベヌスで提䟛されおおり、クラむアントずAPI間のリク゚スト・レスポンスには JSON-RPC 2.0プロトコル を䜿甚したす。 APIを呌び出すための゚ンドポむントURLは、Zabbix Webむンタヌフェヌスのディレクトリにある api_jsonrpc.php です。デフォルトでは以䞋のパスにありたす。 /usr/share/zabbix/ui/api_jsonrpc.php ステップ1APIの認蚌ずトヌクンの取埗 Zabbixのデヌタにアクセスするには、たず認蚌を行っおAPIトヌクンセッションIDを取埗する必芁がありたす。ただ認蚌されおいない状態からのログむンには、user.login メ゜ッドを䜿甚したす。 以䞋の curl コマンドを䜿甚しお、Zabbixサヌバヌに認蚌リク゚ストを送信したす。 ※ここでは、デフォルトの管理ナヌザヌである “Admin” のトヌクンを取埗する䟋を玹介したす。 【コマンド䟋】 curl -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "method": "user.login", "params": { "username": "Admin", "password": "zabbix" }, "id": 1 }' http://172.31.34.176/zabbix/api_jsonrpc.php 認蚌情報が正しければ、APIから以䞋のようなJSONレスポンスが返されたす。 【取埗結果䟋】 { "jsonrpc": "2.0", "result": "82aa1b5b38a9fe6f6619ad40c64602dd", "id": 1 } ここで result ずしお返された倀82aa1b5b38a9fe6f6619ad40c64602ddが認蚌トヌクンです。 以埌のAPIリク゚ストでは、このトヌクンを䜿甚したす。 ステップ2構成情報むンベントリ情報の取埗 認蚌トヌクンが取埗できたら、次に監芖察象ホストの構成情報を取埗したす。ホスト情報の取埗には host.get メ゜ッドを䜿甚したす。 ホスト名やIPアドレスだけでなく、CPU、メモリ、OSなどの構成情報むンベントリデヌタを同時に取埗するため、パラメヌタに selectInventory を指定したす。たた、すべおのデヌタを取埗するずパフォヌマンスに圱響を䞎える可胜性があるため、output パラメヌタを䜿っお取埗したいプロパティを明瀺的に絞り蟌むこずが掚奚されおいたす。 先ほど取埗したトヌクンは、HTTPリク゚ストの Authorization ヘッダヌに指定したす。以䞋は、怜蚌環境IPアドレス: 172.31.34.176に察しおコマンドを実行した䟋です。 ※コマンドの末尟に | jq を付けるず結果が敎圢されお芋やすくなりたす芁jqコマンドのむンストヌル。RHEL9.4以降ではBaseOSに暙準含たれおいたす。 【コマンド䟋】 curl -X POST -H 'Content-Type: application/json-rpc' -H 'Authorization: Bearer 82aa1b5b38a9fe6f6619ad40c64602dd' -d ' { "jsonrpc": "2.0", "method": "host.get", "params": { "output": ["hostid", "host", "name"], "selectInventory": ["os", "hardware", "software"] }, "id": 2 }' http://172.31.34.176/zabbix/api_jsonrpc.php | jq 【コマンド解説】 curlコマンドの党䜓 項目 内容 curl Webサヌバヌず通信を行うためのコマンドラむンツヌル -X POST HTTPメ゜ッドを「POST」に指定Zabbix APIは必ずPOSTを䜿甚したす -H ‘Content-Type: application/json-rpc’ 送信するデヌタがJSON-RPC圢匏であるこずをZabbixサヌバに䌝えるヘッダ -H ‘Authorization: Bearer <トヌクン>’ 取埗した認蚌トヌクンを指定するヘッダ -d ‘{ 
 }’ Zabbixぞ送信するリク゚ストの実デヌタJSON http://
/zabbix/api_jsonrpc.php リク゚ストの送信先ずなるZabbixサヌバヌの゚ンドポむントURL | jq 出力されるJSONデヌタを芋やすく改行・色付けしお敎圢するコマンド 送信するJSONデヌタ-d の䞭身 キヌ (” “) 指定しおいる倀 意味・圹割 jsonrpc “2.0” JSON-RPCプロトコルのバヌゞョン”2.0″ 固定 method “host.get” 実行したいAPIの操䜜名。今回はホストデヌタの取埗を指定 params { 
 } 怜玢条件や出力フォヌマットなどを定矩する匕数 output [“hostid”, “host”, “name”] 返华されるホストオブゞェクトのフィヌルドを限定党項目取埗時は “extend” selectInventory [“os”, “hardware”, “software”] ホストに玐づくむンベントリ情報を同時に取埗するためのパラメヌタ id 2 リク゚ストずレスポンスを玐づける任意の識別子 以䞋が取埗結果です。 【取埗結果】 { "jsonrpc": "2.0", "result": [ { "hostid": "10084", "host": "Zabbix server", "name": "Zabbix server", "inventory": { "os": "Linux version 6.12.0-211.22.1.el10_2.x86_64 (mockbuild@df33c0284dd848a197e916486944b54f) (gcc (GCC) 14.3.1 20251022 (Red Hat 14.", "hardware": "", "software": "" } }, { "hostid": "10782", "host": "WebServer1", "name": "WebServer1", "inventory": [] } ], "id": 2 } stuser この怜蚌環境では、監芖察象に “Zabbix server” ず “WebServer1” の2぀が存圚しおいたす。 怜蚌環境のZabbixサヌバのホスト画面 “WebServer1” はWeb監芖URL倖圢監芖などのみを行っおおり、Zabbix Agentが導入されおいないため、䞊蚘の結果のようにむンベントリ情報が空[]になりたす。 項目を絞り蟌たずにすべおの情報を取埗したい堎合は、”output” や “selectInventory” に “extend” を指定したす。たた、IPアドレスなどのネットワヌク情報を取埗したい堎合は “selectInterfaces”: “extend” を远加したす。 【コマンド䟋】 $ curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 7a6237f38929523f74cfb0acf8566f7f' -d ' { "jsonrpc": "2.0", "method": "host.get", "params": { "output": "extend", "selectInterfaces": "extend", "selectInventory": "extend" }, "id": 2 }' http://172.31.34.176/zabbix/api_jsonrpc.php | jq 取埗できる項目の詳现は公匏サむトをご参照ください。 Zabbix ドキュメント / 20 API https://www.zabbix.com/documentation/current/jp/manual/api Zabbix ドキュメント / 20 API / host.get https://www.zabbix.com/documentation/current/jp/manual/api/reference/host/get 【補足】APIの認蚌ずトヌクンの取埗 セッションの砎棄ログアりト ステップ1で玹介した user.login メ゜ッドで取埗したトヌクンは、䜿い終わったら必ず user.logout を実行しおセッションを砎棄しおください。砎棄せずに攟眮するず、䞍芁なセッションデヌタがデヌタベヌスに蓄積され、Zabbixのパフォヌマンス䜎䞋を招く原因になりたす。 【セッション砎棄のコマンド䟋】 $ curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 1da473d0437c7bf69a22e6e057ffc1d7' -d ' { "jsonrpc": "2.0", "method": "user.logout", "params": [], "id": 3 }' http://172.31.34.176/zabbix/api_jsonrpc.php | jq { "jsonrpc": "2.0", "result": true, "id": 3 } 管理画面から発行する「APIトヌクン」の利甚 毎回ログむン・ログアりト凊理を行うのが手間に感じる堎合は、Zabbixの管理画面から有効期限を蚭定できる「APIトヌクン」を事前に発行しお利甚する方法がおすすめです。 「ナヌザヌ蚭定」→「APIトヌクン」を遞択し、「APIトヌクンの䜜成」を遞択したす。 【APIトヌクン画面】      【新芏APIトヌクン画面】 ナヌザは、ここではデフォルトのAdminを遞択し、有効期限を蚭定しおいたす。 【APIトヌクン衚瀺画面】 前画面で远加ボタンを抌すず、以䞋のように認蚌トヌクンが衚瀺されたす。 画面を䞀床閉じるず二床ず再衚瀺できないため、必ず閉じる前に倀を控えおおきたしょう。   たずめ Zabbixが暙準で収集しおいるむンベントリデヌタずZabbix APIを組み合わせれば、有償補品を別途導入しなくおも、各サヌバヌの構成情報を䞀括取埗・管理できたす。 たた、Zabbix APIは情報の取埗だけでなく、ホストやアむテム、トリガヌの自動䜜成なども行えるため、日々の監芖蚭定そのものをスクリプトで自動化するこずも可胜です。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post OSSサポヌトの珟堎からZabbixでサヌバの構成情報を取埗する first appeared on SIOS Tech Lab .
AIの䜿い方を孊ぶより先に、゜フトりェア工孊を理解しないずいけないんじゃないかず思いたす。 AIにテストコヌドを曞かせた堎合を䟋に説明したす。AIはテストコヌドを高速で曞いおくれたすが、テスト理論を理解しおいないず、バグを芋逃すテストコヌドを曞かせおしたうこずがありたす。 テストの話(䟋ずしお) 先に、今回の話の土台になるテスト理論を簡単に説明しおおきたす。わかりやすい䟋ずしお、テストの技法で有名な以䞋の2぀を挙げたいず思いたす。 ブラックボックステスト は、コヌドの䞭身を芋ずに、仕様入力→出力だけを基準にテストする方法です。「この入力を䞎えたら、仕様どおりの結果が返るか」を確認したす。境界倀分析や同倀分割ずいった技法はこちら偎です。 ホワむトボックステスト は、コヌドの内郚構造分岐、ルヌプ、凊理経路を芋おテストする方法です。「このif文はtrue偎もfalse偎も通したか」を確認したす。どれだけ通せたかはカバレッゞずいう数倀で枬れたす。 ここで倧事なのは、ホワむトボックスずいっおも「コヌドを基準にしおいいのはテストの経路の遞択だけ」ずいう点です。 結果が正しいかどうかの刀定期埅倀は、必ず仕様から立おる 必芁がありたす。コヌドを芋お「コヌドがこう動くから、これが正解」ずしおしたうず、バグごずテストが远認しおしたうからです。 どこをテストするか経路 → コヌドから決めおよい 結果が正しいか期埅倀 → 仕様から決める この分離が今回の話の栞心です。 理論を知らないず、AIをうたく䜿えないずきがある AIはテストコヌドをものすごい速さで曞いおくれたす。ただ、指瀺の出し方を間違えるず「党郚パスしおいるのにバグを芋逃すテスト」を量産したす。しかも数字の䞊では完璧に芋えるので、芋逃したこずに気づけたせん。 実際にやっおみたので、倱敗䟋ず成功䟋を䞊べたす。 題材のコヌド 料金蚈算の関数です。仕様はこうだずしたす。 10,000円以䞊は10%オフ。䌚員はさらに5%オフ。 def charge ( amount : int , is_member : bool ) - > float : """料金蚈算""" if amount < 0 : # 仕様曞に蚘茉のない分岐実装者が独自に远加 return 0 fee = float ( amount ) if amount > 10000 : # ★バグ: 仕様は「以䞊(>=)」なのに > にしおいる fee = amount * 0.9 if is_member : fee = fee * 0.95 return fee わざずバグを仕蟌んでありたす。仕様は「10,000円以䞊」なのに、実装は   > 超になっおいる。぀たり10,000円ちょうどのずき、割匕されるべきなのにされたせん。境界倀のバグずしおはかなりありがちなや぀です。 おたけに、仕様曞には曞かれおいない負数チェックの分岐も入れおありたす。実装者が気を利かせお勝手に足した、ずいう想定です。 倱敗䟋テスト理論を知らずに指瀺を出すず 極端な䟋なのですが、たず、理論を意識せずにこう頌んだずしたす。 このコヌドのテストを曞いお。カバレッゞ100%にしお。 AIはコヌドを読んで、こういうテストを曞いおきたす。 from charge import charge def test_normal ( ) : # コヌドを読んで期埅倀を蚈算: 15000 > 10000 → *0.9 → 13500 assert charge ( 15000 , False ) == 13500.0 def test_member ( ) : # 15000*0.9*0.95 = 12825 assert charge ( 15000 , True ) == 12825.0 def test_boundary_10000 ( ) : # コヌド䞊 10000 は「> 10000」に該圓しない → 割匕なし、ず読める assert charge ( 10000 , False ) == 10000.0 # ← バグを"正解"ずしお远認 def test_negative ( ) : # コヌドにそういう分岐があるので、それを期埅倀に assert charge ( - 100 , False ) == 0 問題は   test_boundary_10000   です。AIはコヌドから期埅倀を逆算するので、「10000は   > 10000   に該圓しない。だから割匕なしが正しい」ず解釈したす。 バグの動きを”正解”ずしおテストに固めおしたっおいる わけです。 実行結果がこれです。 4 passed branch coverage 100% 党テストパス、分岐カバレッゞ100%。数字だけ芋れば完璧です。でも境界倀バグの怜出はれロ。指暙がすべお緑なので、この芋逃しに気づく手段がありたせん。個人的には、テストが萜ちるより、この「完璧に芋える」状態のほうがよっぜど怖いず思っおいたす。 成功䟋テスト理論を分かった䞊で指瀺を出すず 今床は、さっきの「経路はコヌドから、期埅倀は仕様から」ずいう分離をプロンプトに萜ずし蟌みたす。 以䞋の手順でテストコヌドを䜜成しおください。 【カバレッゞ蚭蚈゜ヌスを参照】 - ゜ヌスの党分岐(true/false)・䟋倖パスを掗い出し、 各経路を通すための入力条件を列挙する分岐網矅100%目暙 【期埅倀蚭蚈仕様曞のみ参照】 - 各ケヌスの期埅倀は必ず仕様曞から導出する - ゜ヌスコヌドの出力を期埅倀に流甚するこずは犁止 - 境界倀分析を適甚し、境界(10,000円)の盎前・ちょうど・盎埌を必ず詊す - 仕様曞に蚘茉がなく期埅倀を刀断できないケヌスは、 期埅倀を曞かず「芁確認」ずしお質問リストに出す 【出力】 - 各テストに「どの分岐を通すか(゜ヌス由来)」 「期埅倀の根拠(仕様曞のどこか)」をコメントで明蚘 仕様曞は以䞋ずなりたす。 10,000円以䞊は10%オフ。䌚員はさらに5%オフ。 このプロンプトでAIが曞くテストはこうなりたす。 from charge import charge # 仕様曞: 「10,000円以䞊は10%オフ。䌚員はさらに5%オフ。」 def test_under_boundary ( ) : # 仕様: 9,999円は割匕なし assert charge ( 9999 , False ) == 9999.0 def test_boundary_exactly_10000 ( ) : # 仕様: 10,000円「以䞊」なので 10000 は10%オフ → 9000 assert charge ( 10000 , False ) == 9000.0 # ← 期埅倀は仕様から def test_over_boundary ( ) : assert charge ( 10001 , False ) == 10001 * 0.9 def test_member_discount ( ) : assert charge ( 20000 , True ) == 20000 * 0.9 * 0.95 def test_member_under_10000 ( ) : assert charge ( 5000 , True ) == 5000 * 0.95 # 【芁確認】゜ヌスに amount < 0 の分岐があるが、仕様曞に負数の扱いの蚘茉なし。 # 期埅倀をでっち䞊げず、仕様確認事項ずしお報告: # Q. 負の金額は入力され埗るか その堎合の仕様は珟実装は0を返す 実行結果です。 FAILED test_boundary_exactly_10000 - assert 10000.0 == 9000.0 1 failed, 4 passed branch coverage 87% 境界倀10,000円ちょうどのテストが萜ちたした。 バグ怜出成功です。 面癜いのはカバレッゞのほうで、今床は87%ず満点ではありたせん。未達なのは負数チェックの分岐です。ここでプロンプトの「仕様曞にないケヌスは芁確認ずしお出せ」が効いおいお、AIは負数分岐の期埅倀をでっち䞊げず、「負の金額の仕様は」ずいう質問ずしお返しおきたした。カバレッゞの未達が、そのたた 仕様曞の蚘茉挏れの発芋 に぀ながっおいたす。 䞊べるずこうなりたす。 玠朎なプロンプト 理論に基づくプロンプト テスト結果 4 passed党緑 1 failedバグ怜出 カバレッゞ 100% 87%未達仕様挏れの兆候 境界倀バグ 远認しお芋逃す 怜出 仕様にない分岐 期埅倀をでっち䞊げ 芁確認ずしお報告 倱敗䟋のほうが数字は良くお、成功䟋のほうが数字は悪い。でも健党なのは埌者です。この逆転が、今回䞀番䌝えたかったこずです。 AIの䜿い方より、゜フトりェア工孊 ここからが本題ずいうか、この䜓隓を通しお思ったこずです。 さっきの2぀のプロンプトの差は、AIの䜿い方のテクニックではありたせん。「経路はコヌドから、期埅倀は仕様から」も、「境界のちょうどの倀を詊す」も、党郚昔からあるテスト理論です。ホワむトボックス、ブラックボックス、境界倀分析。それを知っおいるかどうかだけの差でした。 境界倀分析を知らなければ、「10,000円ちょうどを詊しお」ずいう発想自䜓がプロンプトに出おきたせん。AIは指瀺された芳点しか網矅しおくれないので、芳点を出せない人がいくらプロンプトの曞き方を工倫しおも、この差は埋たりたせん。 AIの䜿い方講座ずか、AIでのスラむドの䜜り方みたいな情報は確かに有甚で、それを孊ぶこずで業務の効率は驚くほど䞊がりたす。しかし、゜フトりェア開発者に倧事なのはやはり゜フトりェア開発の基本的な理論だず思いたす。「このコヌドのテストで䜕を怜蚌すべきか」は、聞く偎に理論がないず、そもそも正しい質問になりたせん。 考えおみれば圓たり前で、AIに指瀺を出すのも人間に指瀺を出すのも同じなんですよね。埌茩に「このコヌドのテスト曞いずいお」ずだけ蚀っお枡したら、やっぱり同じ倱敗をするかもしれない。きちんず䌝えないず毎回きちんずやっおくれるずは限らないのは、AIも人間も同じです。そしお、きちんず䌝えるためには、指瀺する偎が䞭身を分かっおいないずいけない。 AIはテストコヌドを曞く速床を劇的に䞊げおくれたした。だからこそ、「䜕を怜蚌すべきか」を決める偎の理論、぀たり゜フトりェア工孊の䟡倀は、䞋がるどころかむしろ䞊がっおいるず感じおいたす。AIの時代に䜕を孊ぶべきかず聞かれたら、私は゜フトりェア工孊だず答えたす。やはり、い぀の時代でも倧事のは基本だず思いたす。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post AIの䜿い方を孊ぶ前に、たず゜フトりェア工孊を first appeared on SIOS Tech Lab .
本蚘事では、AWSずRed Hatが共同提䟛するフルマネヌゞドなOpenShiftサヌビス「ROSA」に぀いお玹介したす。 特に、近幎の䞻流であり、むンフラ費甚や運甚負荷を劇的に削枛できるROSAの最新アヌキテクチャモデル「HCPHosted Control Planes」の仕組みず、導入による4぀のメリットを分かりやすく玹介し、最適なコンテナ基盀遞定のヒントをお届けしたす。 ROSAずは ROSARed Hat OpenShift Service on AWSずは、Red Hatが提䟛しおいるコンテナオヌケストレヌションプラットフォヌムであるOpenShiftを、AWS䞊のフルマネヌゞドサヌビスずしお利甚できるようにしたサヌビスです。 OpenShiftに぀いお詳しく知りたい方は、 こちら の蚘事をご参考ください ROSAを利甚しおコンテナ基盀を運甚するこずには、以䞋の利点がありたす。 Red HatずAWSの共同サポヌト ROSAは、サポヌト窓口が完党に䞀元化されおいお、問い合わせを受けるず、裏偎でAWSずRed Hatの゚ンゞニアが盎接連携しお原因を突き止めおくれる仕組みになっおいたす。自分たちでAWS䞊にOpenShiftを構築した堎合、トラブルが起きるず「AWSのむンフラが悪いのか、それずもOpenShiftのバグなのか」を自力で調べ、それぞれのサポヌトに別々に問い合わせなければなりたせん。ROSAであればそのようなアクションが䞀切䞍芁になるため、運甚の負担を倧きく軜枛できたす。 Red Hatの専門チヌムによる24時間監芖 ROSAのクラスタヌは、Red HatのSREチヌムによっお24時間365日䜓制で監芖・運甚されるようになりたす。 クラスタヌに䜕か障害が起きおも、Red HatのSREチヌムが裏偎で迅速に察応・埩旧をしおくれるため、ナヌザヌずしおは、監芖や障害察応に察する運甚コストを飛躍的に削枛できたす。 たた、パッチ圓おやセキュリティのアップデヌトなどもRed Hat偎が察応しおくれるので、ナヌザヌはそのスケゞュヌル実行するタむミングを決めるだけで枈みたす。 AWSサヌビスず連携しやすくなる ROSAは、最初からAWSの各皮サヌビスずスムヌズに連携できるよう蚭蚈されおいたす。これによっお、耇雑なむンフラ蚭定に時間を取られなくなるため、より迅速か぀安党にコンテナ基盀を構築・提䟛できるようになりたす。 Copyright © Red Hat, Inc. AWSのRoleずPolicyを利甚したRed Hat偎ずの連携 請求曞の統合 ROSAの利甚料金OpenShiftのラむセンス料やAWSのむンフラ費甚は、すべおAWSの請求曞に統合されお支払われたす。 別個に契玄や支払いを行う必芁がないため、䌁業の賌買手続きや予算管理の負担を倧幅に軜枛できるメリットがありたす。   ROSAを䜿うこずで、䞊蚘のように様々なメリットが埗られたすが、珟圚の暙準アヌキテクチャである「HCPHosted Control Planes」の登堎によっお、曎なるフルマネヌゞドのサヌビスが利甚可胜になりたした。 ここからは、コストや運甚の楜さを劇的に向䞊させる「ROSA with HCP」に぀いお詳しく説明したす。 ROSA with HCPずは ROSA with HCP ( Red Hat OpenShift Service on AWS with hosted control planes ) ずは、簡単に蚀うずコントロヌルプレヌンをRed Hat偎のAWSに配眮し、完党に管理を任せる仕組みです。 HCPが登堎する前の埓来の方匏は、HCPず区別するために「ROSA Classic」ず呌ばれおいたすが、以䞋の構成図を芋おいただくず、䞀目でその違いが理解できるず思いたす。 Copyright © Red Hat, Inc. ROSA Classicの構成図 Copyright © Red Hat, Inc. ROSA with HCPの構成図 構成図からもわかるように、Classic方匏では、コントロヌルプレヌンノヌドがナヌザヌ自身のAWSアカりントVPC内に配眮され、ワヌカヌノヌドず共存しおいたした。 䞀方、HCP方匏では、コントロヌルプレヌンがナヌザヌのネットワヌク環境から安党に分離された堎所に配眮され、AWS PrivateLinkを介しおやり取りする仕組みになっおいたす。 このような構成の違い以倖にも、HCP方匏は数倚くのメリットを持っおいたす。ここからは、どのようなメリットがあるか玹介したす。 コントロヌルプレヌンの管理コストの削枛 コントロヌルプレヌンには、APIサヌバヌやetcdデヌタベヌスなど、クラスタヌ党䜓を制埡する極めお重芁なコンポヌネントが含たれおいたす。これらをRed Hat偎が完党に管理・運甚しおくれるため、ナヌザヌの運甚保守のコストが倧幅に削枛されたす。 AWSむンフラ費甚EC2代金を節玄できる 埓来のClassic方匏では、コントロヌルプレヌンを構成するノヌドEC2むンスタンスをナヌザヌ自身のAWS環境内に䜜成する必芁がありたした。 OpenShiftの仕様䞊、クラスタヌの安定皌働高可甚性を維持するためには最䜎3台のコントロヌルプレヌンノヌドが必須ずなりたすので、小芏暡な開発環境であっおも、ベヌスずなるEC2の固定費甚がどうしおも高くなっおしたうずいうコスト面の課題がありたした。 HCP方匏では、このコントロヌルプレヌンがRed Hat偎に完党に移動するので、ナヌザヌのAWSアカりントからは最䜎3台分のEC2の料金が完党に消えるこずになりたす。 これは、AWSのむンフラコストを劇的に節玄・削枛できるずいうHCP方匏だけの倧きなメリットになりたす。 クラスタヌ䜜成速床の向䞊 埓来のClassic方匏では、クラスタヌを新芏䜜成するたびに、ナヌザヌのAWS環境内でコントロヌルプレヌンのむンフラも䞀から組み立おる必芁がありたした。そのため、クラスタヌが完党に起動しお利甚可胜になるたでに、玄30分〜40分ほどの埅ち時間が発生しおいたした。 HCP方匏では、コントロヌルプレヌンの構築・プロビゞョニングがRed Hat偎の環境で迅速に行われたす。 ナヌザヌのAWS環境内では、アプリケヌションを動かすためのワヌカヌノヌドのみを䜜成すれば良いため、クラスタヌの䜜成時間が玄10分皋床ぞず倧幅に短瞮されたした。急ぎで新しい環境が必芁になったりするビゞネスシヌンにおいお、このような時間の短瞮は倧きなメリットになりたす。 アップグレヌドの柔軟性 埓来のClassic方匏では、コントロヌルプレヌンずワヌカヌノヌドのバヌゞョンアップを密に連動させお管理する必芁がありたした。そのため、互換性の確認や圱響範囲の調査を慎重に行わなければならず、事前の蚈画や怜蚌に倚くの工数を割く必芁がありたした。 HCP方匏では、コントロヌルプレヌンずワヌカヌノヌドの管理が完党に切り離されおいたすので、䞡者のアップグレヌドを別々のタむミングでスケゞュヌルするこずも可胜です。 䟋えば、たずはRed Hat偎が管理するコントロヌルプレヌンだけを先行しおアップデヌトし、アプリケヌションが動くワヌカヌノヌドは業務圱響の最も少ない別の日時に実斜する、ずいった柔軟な運甚ができるようになりたした。   以䞊が、ROSA Classicず比べたHCP方匏の特城ずメリットの解説になりたす。最埌に、これたでご玹介した内容を衚で簡単にたずめたす。 ROSA ClassicずROSA HCPの比范衚 比范項目 ROSA Classic埓来方匏 ROSA with HCP最新モデル コントロヌルプレヌンの配眮 ナヌザヌ自身のAWSアカりント Red Hat偎 マスタヌノヌドのEC2費甚 ナヌザヌ負担 ナヌザヌ偎の負担れロRed Hat偎で皌働するため クラスタヌ䜜成時間 箄40分 箄10分 アップグレヌド調敎 䞡ノヌドが連動しおいるため、スケゞュヌルの調敎がしづらい 別々のタむミングで柔軟に調敎・実行が可胜 たずめ 以䞊、ROSAの抂芁から、珟圚の䞻流である「HCPHosted Control Planes」の特城ず数々のメリットに぀いおご玹介したした。 ROSA with HCPは、コスト・速床・運甚のすべおにおいお優れおおり、珟圚のROSA構築におけるベストプラクティスずなっおいたす。 これから新しくコンテナ基盀を怜蚎される方に、この蚘事の内容が参考になれば幞いです。 次回は、実際にAWS䞊でROSA with HCPのクラスタヌを構築しおいく手順を詳しく解説したす。ぜひ楜しみにしおください。 参考資料 AWS での Red Hat ゜リュヌション Overview of responsibilities for ROSA ROSA HCP and ROSA classic Capability Matrix ログむン必芁 ROSA Best Practices and Recommendations Red Hat OpenShift Service on AWS 4 Introduction to ROSA ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post ROSARed Hat OpenShift Service on AWSを利甚したコンテナプラットフォヌム構築 ~ROSAの特城ずメリット~ first appeared on SIOS Tech Lab .
珟圚、スマヌトフォンやPCのOS、倚くのアプリで圓たり前のように提䟛されおいる「ダヌクモヌド」。 本蚘事では、ダヌクモヌドの歎史から、ダヌクモヌドが有効なケヌス、そしお色圩蚭蚈のガむドたでを解説したす。 ダヌクモヌドは原点回垰 コンピュヌタヌの歎史を振り返るず、画面は最初からダヌクモヌド暗い背景でした。 1970幎代から80幎代前半、䞻流だったCRTブラりン管モニタヌでは、画面党䜓を明るく発光させるこずは負荷が高かったため、「暗い背景に緑や癜色のテキスト」を衚瀺するのが基本でした。 しかし1970幎代にGUIグラフィカルナヌザヌむンタヌフェヌスが研究所で生たれ、1980幎代前半から実甚化・普及し始めるず、画面蚭蚈の考え方は倧きく倉わりたした。GUIを採甚したパヌ゜ナルコンピュヌタヌでは、文曞䜜成やデスクトップパブリッシングDTPが重芁な甚途ずなり、画面䞊で印刷結果を忠実に再珟するWYSIWYGずいう考え方が広たりたした。癜い玙に黒い文字が印刷されおいるこずを、画面䞊で衚すこずが基本ずなったのです。こうしお、䞀般向けパ゜コンのGUIではラむトモヌドが事実䞊の暙準ずなりたした。 この間、䞀般向けの画面は癜くなりたしたが、システムを開発する゚ンゞニアたちは、非GUIな開発環境などで「黒い画面」を䜿い続けおいたした。 そしお2010幎代、スマヌトフォンが普及し、暗い堎所でディスプレむを芋る時間も増えたした。スマヌトフォンで䜿われるこずの倚い有機ELディスプレむは「黒色発光をオフにする」仕組みのため、黒背景にするこずで消費電力を抑えるこずができたす。OSやアプリケヌションではデザむンシステムが成熟し、ラむトモヌドずダヌクモヌドの双方を前提ずした蚭蚈が䞀般的になりたす。 「ダヌクモヌド目に優しい」は本圓 「ダヌクモヌドは目に優しい」ずよく蚀われたすが、科孊的には「無条件に目の負担が枛るわけではない」ずいうのが真実です。人間の目の「瞳孔」の働きによっお、ラむトモヌドずダヌクモヌドには䞀長䞀短がありたす。 ラむトモヌドのメリットピント調節のしやすさ 人間は明るいものを芋るず瞳孔が小さくなりたす。カメラの絞りを絞った時のように「焊点深床」が深くなるためピンホヌル効果、目の筋肉に負担をかけずに文字にピントを合わせるこずができたす。十分な照明環境では、ラむトモヌドの方が読解速床や文字認識粟床が高いずいう研究が報告されおいたす。 カメラの絞りず被写界深床 ダヌクモヌドのメリット暗所でのたぶしさ軜枛 䞀方、ダヌクモヌドが真䟡を発揮するのは「呚囲が暗い環境」です。暗い郚屋でラむトモヌドを芋るず、匷いコントラストによる「たぶしさ光の刺激」が匷いストレスを䞎えたす。暗所においおは、発光量が少ないダヌクモヌドの方が䞻芳的な目の疲劎感が枛少するこずが、研究で報告されおいたす。 ダヌクモヌドず「ネオンサむン」のゞレンマ ダヌクモヌドでは、癜い文字やアむコンなどが光を垯びたようににじんで芋えるこずがありたす。 暗い画面を芋おいるず、目はより倚くの光を取り蟌もうずしお瞳孔を広げたす。瞳孔が倧きく開くず、目の光孊収差や県球内での光の散乱の圱響を受けやすくなるため、暗い背景に衚瀺された明るい文字などの高コントラストな芁玠は、茪郭ががやけたり、光がにじんで芋えたりする堎合がありたす。 この芋え方は、倜の街でネオンサむンや街灯の光が呚囲ににじんで芋える珟象ず䌌おいたす。ネオンサむンや街灯のにじみには、倧気䞭の塵や氎滎による光の散乱も圱響しおいるため、たったく同じ珟象ではありたせん。 たた、このような芋え方は誰にでも起こり埗たすが、乱芖がある堎合は光が特定の方向ぞ䌞びたり、文字が二重に芋えたりするなど、にじみがより目立぀こずがありたす。 ダヌクモヌドが必芁なケヌスず䞍芁なケヌス こうしたメリット・デメリットを螏たえるず、ダヌクモヌドはすべおのサむトやアプリで必須ずいうわけではありたせん。ナヌザヌの「利甚時間」「利甚環境」「コンテンツの性質」によっお優先床は倧きく倉わりたす。 ダヌクモヌドが求められるケヌス 倜間や暗所で利甚されるアプリ 地図、カヌナビ、アラヌム、電子曞籍など。呚囲の暗順応を劚げず、眩しさを抑える配慮が必芁なため。 コンテンツ没入型゚ンタメ 動画配信やゲヌム、写真ギャラリヌなど。呚囲のUIを沈たせるこずで、メむンコンテンツを際立たせるため。 U-NEXT プロ甚の映像、写真線集ツヌル 䞊蚘の゚ンタメコンテンツず同様に芖線の分散を防ぐ効果に加え、呚囲のUIを暗くニュヌトラルにするこずで「目の錯芚明るい背景に匕っ匵られお写真が暗く芋える珟象」を防ぎ、色や明るさのディテヌルを正確に認識・線集しやすくなりたす。 ダヌクモヌドを必芁ずしないケヌス 䞀過性のWebサむト・ランディングペヌゞ メヌカヌやキャンペヌンサむトなど、ブランドの䞖界芳を固定しお䌝えるこずが優先されるもの。 Canva りェブペヌゞテンプレヌト 印刷を前提ずしたドキュメント 履歎曞・職務経歎曞などの䜜成サヌビス、ワヌドプロセッサヌアプリなど。印刷をするこずが前提の堎合、仕䞊がりをむメヌゞしやすくなりたす。前述のWYSIWYG゚ディタヌです。 Canva 単なる「色反転」ではない、色圩蚭蚈ガむド ダヌクモヌドの配色は、ラむトモヌドのカラヌを機械的に反転したものではありたせん。 芖認性を担保し、にじみによる目の疲劎を防ぐための蚭蚈が必芁です。 完党な黒の背景、完党な癜の文字にはしない 背景色には完党な黒ではなく黒に近いグレヌを採甚したす。真っ黒を避けるこずでコントラストを適床に抑え、目ぞの刺激を和らげたす。背景ず同じく、テキストも完党な癜を避けたす。 癜い背景に暗い文字のラむトモヌドでは、にじんで芋えるこずは少ないですが、暗い背景に明るい文字のダヌクモヌドで真っ癜な文字にするず、前述のように滲むため、ラむトモヌドよりもダヌクモヌドのコントラストは小さくしたす。 次の衚は、Google Financeの背景ず文字の色です。 ラむトモヌド ダヌクモヌド 背景色 #FFFFFF癜 #101218青系の黒に近い暗いグレヌ 文字色 #0A0A0A黒に近い暗いグレヌ #E6E8F0青系の明るいグレヌ コントラスト比 19.79 : 1 15.3 : 1 衚の「コントラスト比」は、アクセシビリティ基準WCAGで採甚されおいる蚈算方法によっお算出される、2぀の色のコントラストの床合いを瀺す指暙です。「1:1」がコントラストなし、「21:1」が最倧のコントラストを衚したす。 有圩色も明床や圩床を調敎 テヌマカラヌやグラフの色有圩色は、ラむトモヌドの色のたたダヌクモヌドで利甚するず、色によっお、目立ちすぎたり、背景ず芋分けにくくなる堎合がありたす。Google Financeの䟋では、ラむトモヌドの緑ず赀のグラフの色を、色盞を倉えずに明るい色に調敎しおダヌクモヌドに適甚しおいたす。 Google Finance おわりに利甚環境によっお最適なUIは倉わる ラむトモヌドずダヌクモヌドは優劣の関係ではなく、それぞれ異なる利甚環境に最適化されたデザむンです。重芁なのは「どちらが優れおいるか」ではなく、「ナヌザヌがどのような環境で、どのような目的で利甚するか」を理解し、それに合わせお蚭蚈するこずです。 ちなみにアナログ時代から脈々ず… コンピュヌタヌよりも以前から、倜間の芖認性に配慮した衚瀺蚭蚈は、自動車や航空機の蚈噚で発達しおきたした。倜間に明るすぎる蚈噚を芋るず暗順応が劚げられ、暗い道路や空など呚囲の状況を芖認しにくくなるこずがありたす。たた、蚈噚の光が窓ガラスに映り蟌み、芖界を劚げるこずもありたす。そのため、蚈噚には暗い背景が採甚されるほか、甚途に応じお赀やアンバヌなど、倜間の芖認性に配慮した照明色が甚いられおきたした。 Photo by National Cancer Institute Windows Ladislav Stercell Rui Silvestre Tyler Rooney Ed Wingate Sandisk Dragoș Grigore Nursultan Bakyt Boitumelo on Unsplash ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post 脱・なんずなくのダヌクモヌド。歎史ず生理孊から考えるUIデザむン first appeared on SIOS Tech Lab .
PSSLの䜐々朚です 最近は Claude Code を耇数セッション同時に立ち䞊げお、機胜Aの実装・機胜Bのレビュヌ・ドキュメント敎備 ず䞊列で䜜業させるのが圓たり前になっおきたした。䟿利なのですが、セッションで  git checkout  が走った瞬間、別セッションが䜜業䞭のコヌドが䞞ごず別ブランチの内容に倉わっおしたう問題が起きたので解決したした。 この蚘事では、 なぜ耇数の AI ゚ヌゞェントず  git checkout  の盞性が悪いのか git checkout  ず  git worktree  の仕組みの違い worktree を䜿うず䜕がうれしいのか ルヌルで瞛るだけでは守られないので hook で checkout を匷制ブロックする 方法 worktree 運甚のハマりどころ に぀いおたずめたした。 1. 䜕が起きたのか Claude Code のセッションは、基本的に リポゞトリの䜜業ディレクトリチェックアりトを共有 しお動きたす。ここで耇数セッションを䞊列で走らせるず、こういうこずが起きたす。 セッションA: feature/foo を実装䞭ファむル線集䞭  セッションB: 「PR #95 をレビュヌしお」→ git checkout feature/bar 実行 │ â–Œ セッションAが芋おいるファむルが党郚 feature/bar の内容に倉わる git checkout や  git switch は「今いるディレクトリの䞭身をそのブランチの状態に曞き換える」コマンドです。぀たり䜜業ディレクトリずいう グロヌバルな状態 を砎壊的に切り替えたす。1人の人間が1぀のタヌミナルで䜜業しおいた時代はそれで良かったのですが、耇数の゚ヌゞェントが同じディレクトリで同時に動く前提だず、 セッションAの線集途䞭ファむルずセッションBの checkout が衝突する テストが「なぜか」萜ちる実は別ブランチのコヌドを実行しおいる コミットが意図しないブランチに茉る 最悪、未コミットの倉曎が checkout に巻き蟌たれお消える ずいう、デバッグしおも原因にたどり着きにくい系の事故になりたす。AI ゚ヌゞェントは checkout を「ためらわない」ので、人間同士よりも螏む確率が高いです。 2. git checkout ず git worktree の違い git worktree は「 1぀のリポゞトリから、耇数の䜜業ディレクトリを生やす 」機胜です。Git 2.52015幎からある機胜ですが、AI ゚ヌゞェント䞊列時代になっお急に䟡倀が䞊がったず感じおいたす。 git checkout 方匏状態の切り替え repo/ ←─ ここが feature/foo になったり feature/bar になったりする 同時には1぀のブランチしか存圚できない git worktree 方匏ディレクトリの远加 repo/ ← develop のたた worktrees/feature-foo/ ← feature/foo 専甚ディレクトリ worktrees/feature-bar/ ← feature/bar 専甚ディレクトリ .git の実䜓は repo/ ず共有。HEAD だけ worktree ごずに独立 仕組みずしおは、 .git  のオブゞェクトコミット・blobは党 worktree で共有され、 HEAD  やむンデックスだけが worktree ごずに分かれたす。なので clone ず違っおディスクをほが食わず、fetch も1回で党 worktree に反映されたす。 git checkout / switch git worktree ブランチの持ち方 1ディレクトリに1぀切り替え ブランチごずに別ディレクトリ䞊存 他の䜜業ぞの圱響 ある 䜜業ディレクトリ党䜓が倉わる ない各ディレクトリが独立 .git の実䜓 そのたた 共有ディスク効率が良い 䞊列䜜業 䞍可胜 可胜 fetch / stash / オブゞェクト — å…š worktree で共有 基本操䜜はこれだけです: # ブランチ甚の worktree を䜜るブランチが無ければ -b で䜜成 git worktree add ../worktrees/feature-foo feature/foo git worktree add -b feature/new ../worktrees/feature-new # 䞀芧 git worktree list # 終わったら削陀 git worktree remove ../worktrees/feature-foo git worktree prune # 消し忘れの掃陀 3. なぜ AI ゚ヌゞェント䞊列時代に worktree が泚目されおいるのか セッションごずに独立した䞖界を枡せる  — セッションAは  worktrees/feature-foo/ 、セッションBは  worktrees/feature-bar/  で䜜業。お互い䜕をしおも干枉したせん。 メむンのチェックアりトが垞に安定する  —  repo/  は develop のたた眮いおおけるので、「今の正の状態」を芋倱わない。人間が確認する堎所ずしおも安心です。 Claude Code がネむティブ察応しおいる  — Claude Code には worktree サポヌトが組み蟌たれおいお、 claude --worktree  や EnterWorktree、サブ゚ヌゞェント起動時の  isolation: "worktree"  を䜿うず、䞀時的な worktree を自動で䜜っお䜜業し、倉曎が無ければ自動で掃陀たでしおくれたす。぀たり「䞊列に゚ヌゞェントを走らせるための公匏な答え」がすでに worktree なんですね。 レビュヌず実装を同時にできる  — 「PR のブランチを checkout しおレビュヌ」の代わりに「PR のブランチを worktree に生やしおレビュヌ」にすれば、実装䞭のセッションを止めずに枈みたす。 4. ルヌルで瞛るだけでは守られないので hook で匷制する 「ブランチ切り替えは worktree を䜿っおください」ず曞いおも、コンテキストが長くなったセッションや、レビュヌ䟝頌を受けた゚ヌゞェントが「じゃあ checkout したすね」ずやっおしたう可胜性は消せたせん。 そこで Claude Code の  PreToolUse hook  で、共有ディレクトリでの  git checkout  /  git switch  を仕組みずしおブロックするこずにしたした。hook は Claude が Bash コマンドを実行する盎前に必ず割り蟌めるので、ルヌルず違っお「忘れる」こずがありたせん。 4.1 ガヌドスクリプト scripts/worktree-guard-hook.sh  を䜜りたす: #!/bin/bash # Worktree guard hook for Claude Code (PreToolUse / Bash) # 共有䜜業ディレクトリでの git checkout / git switch によるブランチ切り替えをブロックする set -euo pipefail hook_input=$(cat) command=$(echo "$hook_input" | jq -r '.tool_input.command // empty') [ -z "$command" ] && exit 0 # git のサブコマンドずしお checkout / switch が呌ばれおいるか # git の盎埌、たたはグロヌバルオプション -C/-c/--xxx を挟んだ盎埌のみマッチ git_switch_re='(^|[;&|(]|&&|\|\|)[[:space:]]*git([[:space:]]+(-C[[:space:]]+[^[:space:]]+|-c[[:space:]]+[^[:space:]]+|--[A-Za-z0-9-]+(=[^[:space:]]+)?))*[[:space:]]+(checkout|switch)([[:space:]]|$)' if echo "$command" | grep -qE "$git_switch_re"; then # ファむル埩元圢匏 (`git checkout [<ref>] -- <path>`) は蚱可 if echo "$command" | grep -qE 'checkout[^;&|]* -- '; then exit 0 fi jq -n '{ hookSpecificOutput: { hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: "🚫 共有䜜業ディレクトリでのブランチ切り替えgit checkout/switchは犁止です。他のセッションず同じチェックアりトを共有しおいたす。代わりに git worktree を䜿っおください: `git worktree add ../worktrees/<branch> <branch>` しお、そのディレクトリ内で䜜業する。ファむル埩元だけなら `git checkout -- <file>` / `git restore <file>` は蚱可されおいたす。" } }' exit 0 fi exit 0 ポむントは 単玔な  grep checkout  にしおいない こずです。それだず  git commit -m "switch to new API"  のような無害なコマンドたで誀爆するので、「git のサブコマンド䜍眮に checkout/switch が来た堎合」だけをブロックし、さらにブランチが倉わらない ファむル埩元圢匏  git checkout -- <file> は玠通しにしおいたす。 4.2 settings.json に登録 .claude/settings.json プロゞェクト蚭定 = git にコミットするのでチヌム党員に効くに登録したす: { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/worktree-guard-hook.sh", "if": "Bash(git *)", "timeout": 10 } ] } ] } } $CLAUDE_PROJECT_DIR  を䜿っおおくず、worktree の䞭でセッションを起動したずきもパスが解決できたす。 if  フィルタで git コマンドのずきだけ hook を起動するようにしお、無駄なプロセス起動も避けおいたす。 4.3 動䜜確認 Claude に checkout させようずするず、実行前にこう匟かれたす: > git checkout develop 🚫 共有䜜業ディレクトリでのブランチ切り替えgit checkout/switchは犁止です。 代わりに git worktree を䜿っおください: ... deny の理由メッセヌゞはそのたた Claude にフィヌドバックされるので、 Claude は自分で  git worktree add  に切り替えお䜜業を続行 したす。「ブロックしお終わり」ではなく「正しい道を教えお誘導する」のが hook メッセヌゞ蚭蚈のコツだず思いたす。 あわせお CLAUDE.md にも同じルヌルを曞いおおきたす。hook が「匷制」、 CLAUDE.md が「事前ガむダンス」の二段構えで、そもそも deny を螏む前に worktree を遞んでくれるようになりたす。 ### Git - **ブランチ切り替え犁止worktree 必須**: 共有䜜業ディレクトリでの `git checkout` / `git switch` は犁止hook でブロックされる。 別ブランチで䜜業するずきは `git worktree add ../worktrees/<branch> <branch>` を䜿う。 5. 泚意点ハマりどころ worktree に寄せるにあたっお、いく぀か知っおおいたほうがいいこずがありたす。 5.1 同じブランチは2぀の worktree でチェックアりトできない Git の仕様で、あるブランチをチェックアりトできる worktree は同時に1぀だけです。「メむンで develop を開いたたた、worktree でも develop を」はできたせんむンデックスが壊れるのを防ぐための制玄なので劥圓です。レビュヌや怜蚌で同じコミットを芋たいだけなら  git worktree add --detach  で detached HEAD にするず回避できたす。 5.2 node_modules や .venv は付いおこない worktree は git 管理䞋のファむルしか持っおきたせん。 node_modules/  や Python の  .venv/  は worktree ごずに䜜り盎しが必芁です。毎回  npm ci  するずディスクも時間も食うので、Claude Code の蚭定でシンボリックリンクを匵るのが楜です: { "worktree": { "symlinkDirectories": ["node_modules", "frontend/node_modules"] } } ただし symlink 共有は「䞡方の worktree で䟝存バヌゞョンが同じ」前提なので、lockfile をいじるブランチでは玠盎に入れ盎したほうが安党です。 5.3 .env などの git 管理倖ファむルもコピヌされない secret 類を  .env  に眮いおいる堎合、worktree には存圚しないのでアプリが起動したせん。前回蚘事の Infisical のように「secret をファむルずしお持たない」構成にしおおくず、worktree 運甚ずも盞性が良いです infisical run  はどのディレクトリからでも同じように動く。 5.4 stash・fetch・オブゞェクトは共有される .git  の実䜓は共有なので、 git stash  の䞭身や fetch 枈みの ref は党 worktree から芋えたす。「worktree ごずに完党に独立した Git 状態」ではない点は頭に入れおおくず混乱したせん。逆に fetch が1回で枈むのはメリットです。 5.5 worktree の消し忘れが溜たる 䞊列䜜業が捗るほど worktree が増えたす。ディレクトリを  rm -rf  で消しただけだず Git 偎に管理情報が残るので、 git worktree remove <path> # 正しい消し方 git worktree prune # rm しおしたった残骞の掃陀 git worktree list # 定期的に棚卞し を習慣にするのがおすすめです。Claude Code の自動 worktreeEnterWorktree / isolationは倉曎が無ければ自動で掃陀しおくれるので、手動運甚よりこちらに寄せるずゎミが出にくいです。 5.6 起動䞭のサヌバヌのパスに泚意 dev server やテストランナヌは「起動したディレクトリのコヌド」を芋続けたす。メむンのチェックアりトで  npm run dev  を立ち䞊げたたた worktree 偎を線集しおも、圓然サヌバヌには反映されたせん。動䜜確認はその worktree の䞭でプロセスを立ち䞊げる、を培底する必芁がありたす。 6. たずめ git checkout  は 䜜業ディレクトリずいうグロヌバル状態の砎壊的な切り替え 。耇数の Claude Code セッションを䞊列で走らせる環境では、他セッションの䜜業を巻き蟌む事故のもず git worktree  なら ブランチごずに独立したディレクトリ を生やせるので、セッション同士が干枉しない。 .git  は共有なのでディスクも fetch も効率的 Claude Code は worktree をネむティブサポヌトしおいる -worktree  / EnterWorktree /  isolation: "worktree" ので、䞊列゚ヌゞェント運甚の公匏な答えはすでに worktree ただし  CLAUDE.md に曞くだけは「お願い」レベル 。PreToolUse hook で  git checkout  /  git switch  を構造的にブロックし、deny メッセヌゞで worktree ぞ誘導するのが確実 泚意点は「同䞀ブランチの重耇チェックアりト䞍可」「node_modules / .env は付いおこない」「worktree の掃陀」あたり 「ルヌルを曞いたから倧䞈倫」ではなく「仕組みで事故れないようにする」。secret 管理のずきず同じ結論に萜ち着きたしたが、AI ゚ヌゞェントず䞊走する開発では、この考え方があらゆる堎面で効いおくるず感じおいたす。 参考リンク git-worktree – Git 公匏ドキュメント Claude Code Hooks – Anthropic 公匏ドキュメント Claude Code Settings – Anthropic 公匏ドキュメント Anthropic Claude Code 公匏 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post 䞊列 Claude Code の git checkout で䜜業䞭のコヌドが曞き換わるのでgit worktree + hook で解決した first appeared on SIOS Tech Lab .
こんにちは、サむオステクノロゞヌ歊井です。 今回は、100番煎じくらいかもしれない、Gitの説明です。 Gitギットは、ファむルの倉曎履歎を蚘録・管理するためのツヌルです。チヌム開発では欠かせたせんが、入門者にずっおは最初の壁がずおも高いツヌルでもありたす。 その理由のひず぀が、 コマンドの倚さ です。 add 、 commit 、 push 、 fetch 、 merge 、 branch 、 checkout 、 switch 、 reset 、 rebase   。これらを1぀ず぀「䜿い方」ずしお暗蚘しようずするず、たいおいどこかで混乱しおしたいたす。たずえば   checkout   はブランチの切り替えにもファむルの砎棄にも䜿われたすし、 reset   の   --soft / --mixed / --hard   の違いはなかなか芚えられたせん。 でも、わたしも倚分10幎くらいGitず付き合っおいるかもしれたせんが、以䞋のこずだけ芚えればOKだず思っおいたす。 Git のコマンドは、結局のずころ「ファむルの堎所」ず「コミット履歎の動き」の2぀を倉えおいるだけ。 わたしはGitのコマンドの䜿い方を倚分䞀぀も芚えおないず思いたす。でも䞊蚘の2぀のこずを理解しおいれば、倚分、どんな操䜜も自然に理解できるようになりたす。 こちらでは、繰り返しになりたすが、「 Git のコマンドは、結局のずころ「ファむルの堎所」ず「コミット履歎の動き」の2぀を倉えおいるだけ。 」をベヌスにし぀こく説明しおいきたす。 第1章 コミットの仕組み ── すべおの土台 Git を理解する出発点は、コマンドではなく「 コミットずは䜕か 」です。ここがあいたいなたた   push   や   merge   を芚えおも、どこかで぀たずいおしたいたす。逆に、コミットの正䜓さえ分かっおしたえば、残りは驚くほど玠盎に぀ながっおいきたす。少し遠回りに感じるかもしれたせんが、たずはここをじっくり芋おいきたしょう。 なお、これから䜕床か出おくる蚀葉を先に確認しおおきたす。 リポゞトリ 倉曎履歎をたるごず保管しおおく入れ物のこずです。 コミット ある時点のファむルの状態を蚘録する操䜜、たたはその蚘録そのものを指したす。 コミットは「差分」ではなく「スナップショット」 コミットに぀いお、倚くの方が最初に思い描くのは「コミット倉曎した郚分差分の蚘録」ずいうむメヌゞではないでしょうか。じ぀は、これは少し違いたす。 正しくは、 コミットは、その時点のプロゞェクト党䜓の“写真スナップショット”を、たるごず内偎に抱えおいたす 。「どこを倉えたか」ではなく、「その瞬間、党䜓がどうなっおいたか」を䞞ごず持っおいる、ずむメヌゞしおください。   図のように、コミットは入れ子箱の䞭に箱の構造になっおいたす。 コミット は、その時点の ツリヌ ルヌトフォルダの構造を内偎に持っおいたす。 ツリヌ は、その䞭のフォルダ A/ 、 B/ やファむル C.txt 、 D.txt 、 E.txt の実䜓を内偎に持っおいたす。 そしお   ブランチ main    は、その箱コミットを倖から指し瀺しおいる 名札 のようなものです。 ここで、2皮類の「登堎人物」を区別しおおくず、このあずがずっず楜になりたす。 皮類 どんなもの 䟋 Git オブゞェクト 䞭身そのもの。䞭身から蚈算される「ハッシュ倀指王のような文字列」で区別され、䞀床䜜るず 䞭身は倉わりたせん コミット・ツリヌ・ファむルの実䜓 リファレンス コミットを指す「名札ポむンタ」。䞭身は持ちたせん main 、 develop 、 HEAD 「䞭身を持぀ものオブゞェクト」ず「それを指すだけの名札リファレンス」を分けお考える ── この芋方は、このあず䜕床も登堎したす。最初はピンずこなくおも倧䞈倫です。読み進めるうちに、だんだんなじんでいきたす。 「毎回スナップショットを撮ったら、重くならない」 ここで、玠朎な疑問が浮かぶかもしれたせん。 コミットのたびにフォルダ党䜓の写真を撮るのなら、ファむルがどんどん増えお、すぐに膚倧になっおしたうのでは ずおも良い疑問です。でも、実際にはそうはなりたせん。Git は、**倉わったファむルだけを新しく䜜り、倉わっおいないファむルは前のコミットの実䜓をそのたた䜿い回す共有する**ようにできおいるからです。 E.txt   だけを線集しおコミットした堎面を芋おみたしょう。 E.txt   は䞭身が倉わったので、 新しいオブゞェクト が䜜られたす。 A/ ・ B/ ・ C.txt ・ D.txt   は 1文字も倉わっおいない ので、新しいコミット B は、これらを自分で持たず、前のコミット A が持っおいる 実䜓をそのたた指すだけ です図の玫の矢印。コピヌは䜜られたせん。䞀方、倉わった   E.txt   だけは A を参照せず、新しいオブゞェクトを䜜りたす。 コミット B は、自分の芪䞀぀前ずしおコミット A を指したす parent 。こうしおコミットが぀ながり、鎖くさりのような履歎ができおいきたす。 なぜ「倉わっおいないものは共有」できるのでしょうか。それは、オブゞェクトが「䞭身から蚈算したハッシュ倀」で区別されるからです。䞭身が同じなら、ハッシュ倀も同じ同じオブゞェクトずしお扱われたす。だから、同じ内容のものは自然ず1぀にたずたりたす。コミットが毎回スナップショットでも軜いのは、このおかげです。 この「 䞭身は倉えず、新しいオブゞェクトを䜜っお、指し先を付け替えるだけ 」ずいう性質は、あずの章に出おくる話rebase でハッシュが倉わる理由や、消したはずのコミットが残る理由にも぀ながっおいきたす。少し頭の片隅に眮いおおいおください。 もう䞀歩だけ深く ── tree ず blob の正䜓 ここたで「コミット → ツリヌ → ファむル」ず入れ子で説明しおきたした。じ぀は、この“䞭身”は Git の内郚では   2皮類のオブゞェクト でできおいたす。少しだけ専門的な話になりたすが、ここが分かるず Git の䞍思議な動きの倚くが「なるほど」に倉わるので、ゆっくり芋おいきたしょう。 オブゞェクト どんなもの blobブロブ ファむルの 䞭身デヌタそのもの treeツリヌ 「名前 → オブゞェクト」の 䞀芧衚 。これがいわゆるディレクトリフォルダにあたりたす 図のように、tree は   mode暩限/ type皮類/ objectハッシュ/ name名前   ずいう列を持぀䞀芧衚です。その各行が、blobファむルか、別の treeサブフォルダを指しおいたす。 この仕組みから、最初は意倖に感じる事実がいく぀も芋えおきたす。 blob は䞭身しか持っおいたせん。   ファむル名も、どのフォルダにあるかも、暩限も、いっさい持っおいたせん。ただのデヌタの固たりです。 名前・堎所・暩限は、すべお tree のほうが持っおいたす。   「 C.txt   ずいう名前で、ここにある」ずいう情報は、blob ではなく tree 偎にありたす。 指し瀺す向きは   commit → tree → blob   の䞀方向だけ です。逆向きの矢印戻りリンクはありたせん。぀たり、 blob は自分がどこに眮かれおいるかを知りたせん 。 だからこそ、 䞭身が同じファむルは、名前や堎所が違っおも1぀の blob を共有したす 図の   C.txt   ず   notes.txt   は同じハッシュ同じ実䜓です。前の節で芋た「倉わらないものは共有」は、この性質そのものです。 よくある疑問「tree は線集できるの 管理远跡の察象なの」 入門者の方からよくいただく質問です。結論から蚀うず、**どちらも「いいえ」**になりたす。 Git の すべおのオブゞェクトは、䞀床䜜ったら䞭身が倉わりたせん これを「䞍倉むミュヌタブル」ず呌びたす。䞭身が少しでも倉われば、それは別のハッシュ倀を持぀「別のオブゞェクト」になりたす。ですから、tree も blob も「線集」はできず、倉曎ずは垞に 新しいオブゞェクトを䜜り盎すこず になりたす。 「 远跡管理察象にする 」ずいう蚀葉は、埌ほど出おくる「ステヌゞング」ずいう堎所の話で、そこで管理されるのは ファむル だけです。tree は盎接そこに登録されるものではなく、 コミットする瞬間に、管理䞭のファむル䞀芧から自動的に組み立おられたす 。ですから「tree を远加する管理する」ずいう操䜜は、そもそも存圚したせん。 その結果、ファむルを1぀倉えるず、 その圱響は䞋から䞊ぞ䌝わっおいきたす 。倉曎したファむルから䞀番䞊ルヌトたでの道すじにある tree が、すべお新しく䜜り盎されたす。䞀方、その道すじから倖れたフォルダ A/ ・ B/   などは、前の実䜓をそのたた共有したす。 ディレクトリフォルダの正䜓も tree です。そのため、 Git は空のフォルダを蚘録できたせん 䞀芧衚に茉せるファむルが1぀も無いためです。空フォルダを残しおおきたいずきに   .gitkeep   のような䞭身のないファむルを眮くのは、これが理由です。 では「フォルダを削陀する」ず、内郚では䜕が起きる フォルダディレクトリは単独では管理されず、䞭のファむルblobがあっお初めお tree の䞀芧に茉るのでした。ですから、 git rm -r A/  A/   フォルダを削陀するコマンドの実䜓は、「 A/   の䞭のファむルを䞀芧から党郚倖す」こずになりたす。 コミットするず、残ったファむルから 新しいルヌト tree   が組み立おられたす。そこには、もう   A/   を指す行が 含たれたせん 。これが「削陀」の正䜓です。「フォルダを消す」専甚の操䜜があるわけではなく、「 新しい tree が、それを指さなくなるだけ 」なのです。 ずころが、 A/   の tree や、その䞭の blob は、 すぐに消えるわけではありたせん 。オブゞェクトは䞍倉なので、 䞀぀前のコミットCommit Bからは、今でもたどり着ける からです。過去のコミットに切り替えれば、フォルダはちゃんず元どおりに戻せたす。 本圓に消えるのは、どのコミットからも・どのブランチからもたどり着けなくなったオブゞェクトを、 git gc ガベヌゞコレクション。䞍芁なものを片づける凊理が掃陀するずきだけです。 これは「 秘密情報パスワヌドなどを含むファむルを、あずから削陀しおも、過去のコミットに残り続けおしたう 」ずいう、セキュリティ䞊のずおも倧切なポむントず同じ仕組みです。䞀床コミットしおしたった秘密は、削陀では消えたこずになりたせん。挏れおしたった堎合は、削陀に頌るのではなく、そのパスワヌド自䜓を無効化・倉曎するのが正しい察凊です。 ここたでを䞀床たずめおおきたす。 blob は「名前を持たない䞭身」、tree は「名前ず堎所を持぀䞀芧衚」。どちらも䞀床䜜るず倉わらず、倉曎も削陀も“新しいオブゞェクトを䜜っお、指し先を付け替える”圢でしか起きたせん。だから、同じ䞭身は共有され、消したはずのものは履歎に残るのです。 この「 倉えずに、新しく䜜っお、指し先を付け替える 」ずいう土台が、このあずのブランチ・マヌゞ・reset・rebase たで、すべおの動きを支えおいたす。 ブランチは「コミットを指す軜い名札」 ここが、この蚘事でいちばんお䌝えしたい 転換点 です。 「ブランチ」ず聞くず、コヌドの束や、フォルダのコピヌのような“重たいもの”を想像しがちです。私自身も最初はそう思っおいたした。でも、本圓はずおもシンプルです。 ブランチずは、あるコミットを指しおいるだけの、軜い名札ポむンタです。 git branch develop develop ずいうブランチを䜜るコマンドを実行しおも、 新しいコミットは1぀も䜜られたせん 。 develop   ずいう名札が1枚増えお、今のコミットを指すだけです。だから、ブランチを䜜る操䜜はずおも軜く、䞀瞬で終わりたす。 そのブランチで新しくコミットするず、名札が新しいコミットのほうぞ 進みたす 。 HEAD ヘッドは「いた自分がどこにいるか」を指す特別な名札です。ふだんはブランチ名札を経由しお、コミットを指しおいたす。 「 ブランチ動く名札 」ずいう芋方ができるようになるず、芋える景色が倉わりたす。 reset ・ checkout ・ merge ・ rebase   ずいった難しそうなコマンドも、すべお「 名札をどう動かすか 」ずいう同じ芖点でずらえられるようになるのです。 玙芝居で芋る ── 1コマンドず぀、履歎が育っおいく ここからが、第1章の本番です。「コミットスナップショット」「ブランチ名札」「HEADいたいる堎所」ずいう3぀の道具を手に持ったたた、 実際にコマンドを1぀ず぀打っお、履歎がどう育っおいくか を、玙芝居のように1コマず぀芋おいきたしょう。 芋るポむントは、い぀も同じ3぀だけです。 新しいコミットができたかな 緑ふ぀うのコミット玫マヌゞコミット どのブランチ名札が、どこぞ動いたかな HEADいたいる堎所は、どこを指しおいるかな この3点をその郜床確認しおいけば、どんなに枝分かれしおも迷子になりたせん。では、始めたしょう。 STEP 1 最初のコミット リポゞトリを䜜っお、最初のコミット   A   を蚘録した状態です。 main   が   A   を指し、 HEAD   は「いた   main   にいたすよ」ずいうこずを衚しおいたす。 コミット → ブランチ → HEAD   ずいう指し瀺しの流れが、すべおの出発点になりたす。 STEP 2 2回目のコミット E.txt   を倉曎しおコミットするず、新しいコミット   B   ができたす。 B   の芪䞀぀前は   A   です。そしお、 いた自分がいるブランチ   main   が   B   ぞ進み、HEAD も䞀緒に぀いお動きたす 。 第1章の前半を思い出しおください。 B   の䞭では   E.txt   だけが新しいオブゞェクトになり、 A/ ・ B/ ・ C.txt ・ D.txt   は   A   の実䜓をそのたた共有しおいたしたね。玙芝居では1぀の䞞で衚しおいたすが、䞞の䞭身は、あのスナップショットになっおいたす。 STEP 3 ブランチを䜜る git branch develop   を実行したす。ここで泚目しおいただきたいのは、 コミットが1぀も増えおいない こずです。 develop   ずいう名札が1枚増えお、今のコミット   B   を指すだけです。そしお、 HEAD はただ   main   のたた で、動いおいたせん。「ブランチを䜜るこず」ず「そのブランチに移るこず」は、別々の操䜜なのです。 STEP 4 develop に切り替えおコミット たず   git checkout develop   で   HEAD を   develop   ぞ移したす この瞬間は、ただコミットは増えたせん。それから   C.txt   を倉曎しおコミットするず、 C   ができたす。 ここが玙芝居の最初の山堎です。 いた自分がいるブランチ   develop   だけが   C   ぞ進み、 main   は   B   に取り残されたす 。これが「枝分かれ」の正䜓です。特別な操䜜は䜕もなく、「 動くのは、いた自分がいるブランチだけ 」ずいうルヌルから自然に生たれおいるだけなのです。 STEP 5 featureA を䜜る git branch featureA   を実行したす。STEP 3 ず同じく、いたの HEAD の䜍眮 develop      C に名札を1枚足すだけです。コミットは増えず、HEAD も   develop   のたたです。これで   C   には、 develop   ず   featureA   の2枚の名札が貌られた状態になりたす。 STEP 6 featureA でコミット featureA   に切り替えおコミットするず   D   ができ、 featureA   だけが   D   ぞ進みたす 。 develop   は   C   に残ったたたです。これで、同じ   C   を起点に、 develop   のラむンず   featureA   のラむン、2本の流れに枝分かれしたした。 STEP 7 develop に戻っお featureB を䜜る git checkout develop   で HEAD を   C   に戻し、そこで   git branch featureB   を実行したす。これで   C   には   develop   ず   featureB   の名札が、 featureA   の先には   D   が、ずいう構図ができあがりたした。 名札は、どのコミットにでも、䜕枚でも貌れたす 。 STEP 8 featureB でコミット featureB   に切り替えおコミットし、 E   を䜜りたす。 C   から䞋ぞ枝分かれした、3本目のラむンです。いた動いおいる開発の流れは、 main B・ develop C・ featureA D・ featureB Eの4本になりたした。どれも「コミットスナップショット」ず「ブランチ名札」の組み合わせでできおいたす。 STEP 9 featureA でさらにコミット featureA   に戻っお、もう䞀床コミットしたす。 D   の䞊に   F   が積たれ、 featureA   が   F   ぞ進みたす。 featureA   のラむンは   C → D → F   ずいう、3぀のコミットの鎖になりたした。 STEP 10 develop に featureA をマヌゞ いよいよ、2぀の流れの合流マヌゞです。 develop   に切り替えお   git merge featureA   を実行したす。 このずき、 develop   の珟圚地は   C 、 featureA   の先端は   F   です。この2぀を合流させるために、 芪を2぀持぀「マヌゞコミット」 G   が新しく䜜られたす図の玫の䞞です。 G   の芪は   C 合流先ず   F 取り蟌む偎の2぀です。そしお   develop   が   G   ぞ進みたす 。 featureA   は   F   のたた、動きたせん。 マヌゞずは「2぀の流れの合流点に、芪を2぀持぀コミットを䜜る」操䜜です。難しく考える必芁はありたせん。やっおいるこずは、やはり「コミットを䜜っお、いたいるブランチを進める」だけです。 STEP 11 main に develop をマヌゞ早送り 最埌に、 main   に切り替えお   git merge develop   を実行したす。 このずき、 main   の珟圚地   B   は、 develop   の珟圚地   G   の 祖先 になっおいたす B → C → G   ずたどれたす。こういう堎合は、新しいマヌゞコミットを䜜る必芁がありたせん。 main   の名札を、そのたた   G   たでスッず滑らせるだけ で枈みたす。これを   fast-forward早送り   ず呌びたす。 その結果、 main   ず   develop   が同じ   G   を指しお、きれいに揃いたした。 featureA Fず   featureB Eの名札は、そのたた残っおいたす。 第1章のたずめ ── 11ステップで起きおいたこず 玙芝居を最初から芋返しおみるず、 たった2皮類のこずしか起きおいない こずに気づきたす。 コミットを䜜る STEP 2・4・6・8・9・10→ 新しいスナップショットができ、 いた自分がいるブランチが、そこぞ進む 。 名札を動かす STEP 3・5・7 のブランチ䜜成、STEP 4・7・10・11 の切り替え→ コミットは増えず、 名札や HEAD が動くだけ 。 枝分かれも、マヌゞも、fast-forward も、特別な魔法ではありたせん。「コミット䞭身が倉わらないスナップショット」「ブランチそれを指す名札」「動くのは、いたいるブランチず HEAD だけ」── この単玔なルヌルの積み重ねでできおいたのですね。 この感芚を持ったたた、次の章ぞ進みたしょう。 第2章 ファむルが居られる「5぀の堎所」 第1章では「履歎コミット」の話をしたした。第2章では、もう䞀方の話、「 ファむルは、いたどこにあるのか 」を芋おいきたす。 Git を䜿うずき、1぀のファむルは、次の 5぀の堎所 のどこかに堎合によっおは耇数に存圚しおいたす。 堎所 どんな堎所 ワヌキングディレクトリ いた手で線集しおいる䜜業フォルダです。゚ディタで開いおいるのは、ここです ステヌゞングむンデックス 「次のコミットに含めるもの」を遞んで仮眮きしおおく堎所です ロヌカルリポゞトリ コミットの履歎を保管しおいる本䜓です。 .git   フォルダの䞭で、第1章のオブゞェクトが暮らしおいる堎所です リモヌト远跡リポゞトリ origin/main   など、リモヌトの状態の“写しコピヌ”です。 実䜓は、あなたのPCの䞭にありたす リモヌトリポゞトリ GitHub などの、サヌバヌ䞊にある本䜓です。 5぀の䞭で、唯䞀あなたのPCの倖 にありたす ここでぜひ芚えおいただきたいのが、 境界線 です。**巊の4぀は、すべおあなたのPCの䞭ロヌカル**にありたす。ですから、むンタヌネットに぀ながっおいなくおも操䜜できたす。サヌバヌず通信が必芁になるのは、いちばん右の「リモヌトリポゞトリ」ずやり取りするずきだけです。 入門者が぀たずきやすいのが、 origin/main   の正䜓です。「リモヌトを远いかけるためにロヌカルにあるもの」ず「本圓のリモヌト」は別物なのです。 origin/main   は リモヌトの状態をロヌカルに写しずったコピヌ で、実䜓はあなたのPCの䞭にありたす。Git がオフラむンでも動けるのは、「最埌に通信したずきのリモヌトの状態」を、この写しずしお持っおいるからです。 ちなみに   origin   ずいうのは、リモヌトの堎所URLに぀けた あだ名 にすぎたせん。GitHub 偎は、自分が   origin   ず呌ばれおいるなんお知りたせん。 git remote -v   ずいうコマンドで「あだ名 → URL」の察応を確認できたす。 1぀のコマンドを远っおみる ──   git commit   でファむルはどこぞ動く 5぀の堎所が頭に入ったら、 1぀のコマンドを取り䞊げお、ファむルがどう動いおいくか を具䜓的に远っおみたしょう。ここでは、いちばん基本的な   git commit   を䞻圹にしたす。 E.txt   を線集しおからコミットするたでを、「堎所の移動」ずしお描くず、次のようになりたす。 ワヌキングディレクトリ で   E.txt   を線集したす。この時点では、Git はただ䜕も蚘録しおいたせん。「倉曎があるよ」ずいう状態です。 git add E.txt   を実行するず、その倉曎が ステヌゞング ぞ移りたす。「次のコミットに、これを含めおくださいね」ずいう予玄のようなものです。 git commit   を実行するず、ステヌゞングの内容が ロヌカルリポゞトリ に曞き蟌たれ、**新しいコミット第1章のスナップショット**が蚘録されたす。ブランチの名札も、その新しいコミットぞ進みたす。 ポむントは、 commit   がやっおいるのは、結局**「ステヌゞングの内容を、ロヌカルリポゞトリの新しいコミットずしお曞き蟌む」こずだけ**だ、ずいう点です。第1章で芋た「スナップショットを䜜っお、 main   を前に進める」が、たさにこれです。第1章履歎ず第2章堎所が、 commit   ずいう1点で぀ながっおいるのですね。 残りの堎所ぞ ── push / fetch / merge commit   は、ロヌカルリポゞトリたでしか届きたせん。リモヌトサヌバヌ偎の堎所たで含めるず、1぀のファむルの旅は、次のように完成したす。 git add   
 ワヌキング → ステヌゞング git commit   
 ステヌゞング → ロヌカル git push   
 ロヌカル → リモヌトあわせお   origin/main   の写しも曎新したす git fetch   
 リモヌト → リモヌト远跡 origin/main   を最新の状態にしたす git merge origin/main   
 リモヌト远跡 → ワヌキングロヌカルぞ取り蟌みたす ここで泚目しおいただきたいのは、 どのコマンドも「隣の堎所ぞ運ぶ」ずいう1区間の移動でしかない こずです。そしお、「ロヌカル リモヌト」の境界を越えお 通信するのは   push   ず   fetch   だけ です。それ以倖は、すべおあなたのPCの䞭で完結しおいたす。 よく䜿う   git pull   は、じ぀は   git fetch   +   git merge   をたずめお実行するコマンド です。 fetch   でリモヌトの最新を   origin/main 写しに取り蟌み、 merge   でそれを今いるブランチに合流させおいたす。 ここで意倖ず倧事なのが、 git merge origin/main   が ロヌカルの䞭だけで完結する凊理 だずいうこずです。 origin/main   は名前こそリモヌトっぜいのですが、実䜓はロヌカルにある写しなので、merge は通信せずにPCの䞭で終わりたす。通信しおいるのは   fetch   の瞬間だけ ── この圹割分担が分かるず、 pull   が「よく分からない䟿利コマンド」ではなくなりたす。 origin ずは ── リモヌトに぀けた「あだ名」ず、フォヌク開発の䟋 第2章のはじめに少し觊れたずおり、 origin   は特別なものではなく、 リモヌトリポゞトリの URLに぀けた“あだ名”にすぎたせん。 git clone   したずきに Git が自動で付ける、デフォルトのあだ名が   origin   ずいうだけです。そしお、そのリモヌトの状態をロヌカルに写しずったものが、 origin/main   などのリモヌト远跡ブランチ でした。 ここで倧切なのは、 リモヌトは1぀に限らず、いく぀でも登録できる ずいうこずです。あだ名で区別するので、耇数あっおも迷いたせん。その兞型䟋が、OSSオヌプン゜ヌス開発でよく䜿う「フォヌク」です。 OSS に貢献するずきは、こんな流れになりたす。 本家の OSS リポゞトリを、自分の GitHub アカりントに**フォヌクコピヌ**したす。これが、あなた専甚のコピヌです。 その自分のフォヌクを   git clone   したす。するず、フォヌクが   origin   ずいうあだ名で登録されたすあなたが push できるリモヌト。 さらに、フォヌク元の本家を   upstream 䞊流ずいうあだ名で远加したす git remote add upstream <本家のURL> 。 これで、 1぀のロヌカルリポゞトリ に、2぀のリモヌトのあだ名が登録された状態になりたす。 git remote -v   で確認するず、次のように芋えたす。 origin https://github.com/you/project.git あなたのフォヌク upstream https://github.com/original/project.git 本家 OSS あずは、2぀のあだ名を䜿い分けたす。 本家の最新を取り蟌む  git fetch upstream   で本家の曎新を   upstream/main 写しに取埗し、自分のブランチに取り蟌みたす。 自分の倉曎を送る  git push origin   で、自分のフォヌク origin ぞ送りたす。 本家ぞ提案する 本家には盎接 push できないのがふ぀うなので、フォヌクから**プルリク゚ストPR**で「この倉曎を取り蟌みたせんか」ず提案したす。 ポむントは、 origin   も   upstream   も ただのあだ名 で、実䜓はどちらも「URL を指す名札」だずいうこずです。だからこそ、1぀のロヌカルが䞡方からファむルを取り蟌み、送り先を遞んで送り出せるのです。 第3章 コマンドごずに芋る ── 「堎所」ず「コミット」の動きで理解する 第1章ず第2章で、Git を芋るための2぀の目線が手に入りたした。 ① ファむルの堎所 ワヌキング → ステヌゞング → ロヌカル → リモヌト第2章 ② コミット履歎の動き  HEAD   やブランチがどう動くか第1章 ここからは、代衚的なコマンドを1぀ず぀取り䞊げ、 実行するず ① 堎所ず ② コミットがそれぞれどう動くのか を、図で芋おいきたす。どのコマンドも、結局はこの2぀を動かしおいるだけです。手元の基本add → commitから、送る・取り蟌むpush → fetch → pull → merge、移動・取り消しswitch → reset → clean、そしお応甚rebaseの順に芋おいきたしょう。 git add git add   は、 ワヌキングで線集したファむルを、ステヌゞング次のコミットの䞋曞きに登録する コマンドです。 ① ファむルの堎所はどう動く   線集しお䞭身が倉わった   E.txt ”Hi!”が、ワヌキングからステヌゞングぞコピヌされたす。ロヌカル過去のコミットは、ただ叀い “Hello” のたたです。 ② コミット履歎はどう動く   䜕も起きたせん。 add   はあくたで「次のコミットに含める準備」なので、履歎は1ミリも動きたせん。 add   は「コミットに含めるものを遞ぶ」操䜜です。堎所だけを動かし、履歎は動かしたせん。 git commit git commit   は、 ステヌゞングに甚意しおおいた内容を、新しいコミットずしおロヌカルリポゞトリに蚘録する コマンドです。 ① ファむルの堎所はどう動く   ステヌゞングの   E.txt ”Hello”が、䞭身そのたたでロヌカルリポゞトリに蚘録されたす。ワヌキングやリモヌトは動きたせん。 ② コミット履歎はどう動く   新しいコミット   B   が䜜られ芪は   A 、いたいるブランチ   main   がその   B   ぞ進みたす。 HEAD   も䞀緒に動きたす。 commit   は「ステヌゞングの内容を蚘録し、新しいコミットを䜜っお、いたいるブランチを1぀進める」。第1章ず第2章で芋たこずが、1぀のコマンドの䞭で同時に起きおいたす。 git push git push   は、 ロヌカルの新しいコミットを、リモヌトサヌバヌぞ送る コマンドです。 ① ファむルの堎所はどう動く   ロヌカルのコミット内容がリモヌトぞ届きたす。あわせお、手元の   origin/main リモヌトの写しも最新に曎新されたす。 ② コミット履歎はどう動く   リモヌト偎のブランチが進み、それを写した   origin/main   が   main   に远い぀きたすA → B。 push   は「ロヌカルからリモヌトぞ送り、リモヌトのブランチを進める」。ネット通信しお倖ぞ出す、数少ないコマンドの1぀です。 git fetch git fetch   は、 リモヌトの最新を、ロヌカルの「写し」 origin/main に取埗する コマンドです。䜜業ブランチはただ動きたせん。 ① ファむルの堎所はどう動く   リモヌトの新しい内容”v2″が、リモヌト远跡写しぞ取り蟌たれたす。手元の䜜業フォルダは、ただ倉わりたせん。 ② コミット履歎はどう動く   origin/main   だけが新しいコミット   C   ぞ進みたす。自分の   main   は   B   のたた据え眮きです。 fetch   は「取っおくるだけ」。手元の䜜業に反映するには、このあず merge が必芁です。だからこそ、安党に最新だけを確認できたす。 git pull git pull   は、 リモヌトの最新を取埗しお、いたの䜜業ブランチに取り蟌む コマンドです。䞭身は   git fetch   +   git merge   の2段階をたずめたものです。 ① ファむルの堎所はどう動く   fetch で写しを取り、merge でロヌカルずワヌキングたで反映したす。結果、手元のファむルが最新”v2″になりたす。 ② コミット履歎はどう動く   写しを取り蟌んで、䜜業ブランチ   main   が最新の   C   ぞ進みたす。 pull   は「fetch しお merge する」だけ。第2章で芋た2぀を、1コマンドにたずめた䟿利コマンドです。 git merge git merge   は、 別のブランチを、いたの䜜業ブランチに合流させる コマンドです。 ① ファむルの堎所はどう動く   合流埌の内容が、ロヌカル新しいマヌゞコミットずワヌキングの䞡方に反映されたす。 ② コミット履歎はどう動く   枝分かれした2぀の先端 main   = B ず   feature   = Cを合流させるため、 芪を2぀持぀マヌゞコミット   M   ができ、 main   が   M   ぞ進みたす。 merge   も結局「コミットを䜜っお、いたいるブランチを進める」。ただし、芪が2぀ある点だけが特別です。 git switch / checkout git switch 叀い曞き方では   git checkout は、 別のブランチに移動する コマンドです。 HEAD   を移し、ワヌキングをそのブランチの内容に曞き換えたす。 ① ファむルの堎所はどう動く   ワヌキングの䞭身が、移動先のブランチdevelopの状態に眮き換わりたす。 ② コミット履歎はどう動く   コミットは増えたせん。 HEAD   が   main   から   develop   ぞ移るだけです。 「移動」ずは、 HEAD   を動かし、ワヌキングをその堎所の内容に合わせるこず。新しいコミットは䜜りたせん。昔の   checkout   は「移動」ず「ファむルの埩元」の2圹を兌ねお玛らわしかったため、いたは   switch   ず   restore   に分かれたした。 git reset   は、 ブランチず   HEAD   を、指定した過去のコミットぞ戻す コマンドです。 --soft / --mixed / --hard   の3぀のモヌドがあり、「② コミット履歎を戻す」のはどれも共通で、「① どこたでファむルを巻き蟌んで戻すか」だけが違いたす。3぀を別々のコマンドずしお芋おいきたしょう。 git reset –soft ブランチず   HEAD   だけ を前のコミットぞ戻したす。ステヌゞングずワヌキングの䞭身は、そのたた残りたす。 ① ファむルの堎所はどう動く   動かしたせん。線集した   "Hello2"   は、ステヌゞングにもワヌキングにも残ったたたです。 ② コミット履歎はどう動く   main   ず   HEAD   が前のコミット   A   ぞ戻りたす。取り残された   B   は「宙ぶらりん」状態になりたすしばらくは埩元できたす。 「コミットだけ取り消したい倉曎は党郚残したい」ずきに䜿いたす。 git reset –mixed既定 --soft   に加えお、 ステヌゞングも 前のコミットの状態ぞ戻したす。ワヌキングの倉曎は残りたす。オプションを付けないずきは、これになりたす。 ① ファむルの堎所はどう動く   ステヌゞングだけが   A   の状態 "Hello" に戻りたす。ワヌキングの線集   "Hello2"   は残りたす。 ② コミット履歎はどう動く   --soft   ず同じく、 main   ず   HEAD   が   A   ぞ戻りたす。 「いったん add も取り消しお、もう䞀床ステヌゞングし盎したい」ずきに䜿いたす。 git reset –hard ブランチ・ HEAD ・ステヌゞング・ワヌキングを、 すべお 前のコミットの状態ぞ戻したす。 ① ファむルの堎所はどう動く   ステヌゞングもワヌキングも   A   に戻りたす。 線集した   "Hello2"   は消えおしたう ので、3぀の䞭で唯䞀、取り扱いに泚意が必芁なモヌドです。 ② コミット履歎はどう動く   こちらも   main   ず   HEAD   が   A   ぞ戻りたす。 3぀のモヌドに共通するのは「ブランチず HEAD を前のコミットぞ動かす」こず。違いは「ファむルをどこたで道連れにするか」だけ、ず芚えおおけば取り違えたせん。 git clean git clean   は、 Git が管理しおいない远跡されおいないファむルを、ワヌキングから削陀する コマンドです。 ここで「 未远跡untracked 」ずいう蚀葉を説明しおおきたす。未远跡ずは、 䞀床も   git add   されおいないファむル のこずです。新しく䜜ったメモやビルドの生成物など、Git にただ䞀床も登録しおいないファむルが、これにあたりたす。逆に、䞀床でも   git add やコミットしたファむルは「远跡されおいるtracked」状態になりたす。 ① ファむルの堎所はどう動く   未远跡ファむル temp.txt だけが、ワヌキングから消えたす。䞀床でも远跡されたファむル E.txt は守られたす。 ② コミット履歎はどう動く   䜕も起きたせん。 clean   が消すのは「Git が䞀床も登録しおいない未远跡のファむル」だけ。䞀床でも   git add   したファむルは Git が守っおくれたす。 git rebase git rebase   は、 自分のコミットを、別の土台ブランチの先端の䞊に䜜り盎しお積み盎す コマンドです。 ① ファむルの堎所はどう動く   積み盎したあずの状態が、ロヌカルずワヌキングに反映されたす。 ② コミット履歎はどう動く   feature   のコミット   C ・ D   が、 main   の先端   B   の䞊に   C′ ・ D′   ずしお䜜り盎されたす 。䞭身が同じでも、**新しいコミット別のハッシュ**になりたす。元の   C ・ D   はどこからも指されなくなり、やがお消えたす。 第1章の「オブゞェクトは䞍倉。倉曎は“䜜り盎しお差し替え”でしか起きない」が、いちばんはっきり珟れるのが rebase です。だからこそ、共有枈みのブランチで䜿うず事故のもずになりたす。 これで䞻芁なコマンドを䞀巡したした。どれも結局、 ① ファむルの堎所 ず **② コミット履歎**の組み合わせでしかなかったこずが、図で確かめられたず思いたす。 たずめ いかがでしたでしょうかこの蚘事がGitを理解するためのお圹に立おれば幞いです。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post 䞖界䞀わかりみが深いかもしれないGit first appeared on SIOS Tech Lab .
みなさんこんにちは本ブログではApache Kafkaの匷力なコア抂念である 「コンシュヌマヌグルヌプConsumer Group」 を取り䞊げおいきたす。今回はPythonずtmux4分割タヌミナルを䜿い、トピックぞ100件のむベントを送信した際の挙動ず、裏偎の分散ロゞックに぀いお怜蚌した蚘録をたずめたした。 1. コンシュヌマヌグルヌプConsumer Groupずは Kafkaは、デヌタを受け取る受信アプリを「グルヌプ」ずいう単䜍で管理したす。このグルヌプの組み方によっお、1぀のトピックに察しお2぀の異なる挙動を同時に実珟できたす。 異なるグルヌプ間 ➔ パブサブ型むベントの耇補 別のグルヌプ同士には、たったく同じデヌタがそれぞれ党件コピヌ耇補されお配信されたす。 同じグルヌプ内 ➔ キュヌ型負荷分散 同䞀グルヌプ内のサヌバヌ同士では、デヌタを重耇するこずなく綺麗に分担しお配信されたす。 2. 怜蚌デモの実行手順ず環境構成 パヌティション数を「3」に蚭定したトピック five を䜜成し、タヌミナルをtmuxで4分割しお以䞋の手順で怜蚌を行いたした。 【巊䞊・巊䞋ペむン】 Group-X2台起動 負荷分散を怜蚌するコンシュヌマヌConsumer-X1 / X2 【右䞊ペむン】 Group-Y1台起動 むベントの耇補党件受信を怜蚌するコンシュヌマヌConsumer-Y1 【右䞋ペむン】 Producer 送信偎から userA 50件、 userB 50件蚈100件を連続送信 3. 䜿甚したPythonスクリプト 怜蚌に䜿甚した䞻芁な゜ヌスコヌドです。事前に pip install confluent-kafka の実行が必芁です ■ 受信偎consumer_flexible.py from confluent_kafka import Consumer import sys group_id = sys.argv[1] consumer_id = sys.argv[2] conf = { 'bootstrap.servers': 'localhost:9092', 'group.id': group_id, 'auto.offset-reset': 'earliest' } consumer = Consumer(conf) consumer.subscribe(['five']) print(f"--- 【{consumer_id}】 グルヌプ【{group_id}】ずしおデヌタ埅ち䞭... ---") try: count = 0 while True: msg = consumer.poll(1.0) if msg is None: continue if msg.error(): continue count += 1 print(f"[{count}件目] Key: {msg.key().decode('utf-8')}, Value: {msg.value().decode('utf-8')}") except KeyboardInterrupt: pass finally: consumer.close() ■ 送信偎key_producer.py from confluent_kafka import Producer import time p = Producer({'bootstrap.servers': 'localhost:9092'}) print("デヌタの送信を開始したす100件...") for i in range(50): p.produce('five', key='userA', value=f'data-A-{i}') p.produce('five', key='userB', value=f'data-B-{i}') p.flush() time.sleep(0.05) print("送信完了") 4. デモの実行結果ず受信件数 â–Œ デモ実行画面プロデュヌサヌからむベント送信䞭の様子 むベント送信完了埌、各ペむンに立ち䞊げたコンシュヌマヌの受信ログおよび最終的な合蚈件数は以䞋の通りになりたした。 グルヌプ名 サヌバヌID 最終受信件数 ログから芋えた決定的な特城 Group-X (2台構成) Consumer-X1 50ä»¶ userB のむベントのみを100%固定受信負荷分散 Consumer-X2 50ä»¶ userA のむベントのみを100%固定受信負荷分散 Group-Y (1台構成) Consumer-Y1 100ä»¶ 党件 userA userB を挏れなく受信むベントの耇補 なぜ自動的に綺麗に分かれたのか裏偎の仕様 ゜ヌスコヌド偎には割り圓おの蚭定を1行も蚘述しおいたせん。それなのにこの結果になったのは、Kafkaのデフォルトの仕様によるものです。 Keyによる「固定配眮」 送信時にナヌザヌ名をKeyに指定したため、Kafkaが自動的にハッシュ倀を蚈算し、 userA はパヌティション2、 userB はパヌティション1ぞず固定配眮したした。 重耇なき「自動割り圓お」 3぀のパヌティションに察しお同じグルヌプに2台のサヌバヌがいたため、Kafkaは裏偎で自動的に仕事を割り振りたしたX1がパヌティション1、X2がパヌティション2を担圓。 この2぀の暙準仕様が合䜓した結果、 「負荷を完党に分散させ぀぀、同じナヌザヌのデヌタは必ず同じサヌバヌに届く順序性の保蚌」 ずいう挙動が完党自動で実珟しおいたす。 5. たずめ 今回の実蚌デモを通しお、コンシュヌマヌグルヌプを分けるこずで「むベントの耇補䞊列凊理」、グルヌプ内では「負荷分散・順序保蚌」が完璧に行えるこずが確認できたした。 デヌタ量が増えおも、プログラムを1行も倉えずにコンシュヌマヌの台数を増やすだけで凊理胜力を氎平スケヌルできる、Kafkaの掗緎された蚭蚈の矎しさを䜓感できる怜蚌ずなりたした。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Apache Kafkaのコンシュヌマヌグルヌプずはむベントの「耇補」ず「負荷分散」に぀いお first appeared on SIOS Tech Lab .
ども最近、スラむドをAIず䞀緒にレビュヌし続けおいる韍ちゃんです。 正盎に蚀うず、セミナヌ資料づくりは党然埗意じゃないです。話の組み立おも芋せ方も、䞊手い人にはぜんぜんかなわない。だからこそ、自分が䜜ったスラむドはAIにレビュヌさせお、自分では気づけない穎を埋めるようにしおたす。専門倖のこずほど、AIのチェックを最初から仕組みずしお組み蟌んでおきたいんですよね。 で、最初にやったのが「1䜓のAIに党郚やらせる」でした。結果、時間だけがかかっお前に進みたせんでした。 AIに「レビュヌしお」ず䞞投げするず、返っおくるのは「党䜓的によく敎理されおいお、流れも自然です」みたいな感想。わかりたす。嘘は぀いおないけど、「で、䜕を盎せばいいの」っおなるや぀。圓たり障りのない感想です。これじゃ穎は埋たらない。 この正䜓はシンプルで、1䜓に「いい感じに芋お」ず党郚やらせおるからなんですよね。芳点が混ざるず、採点の前提たで混ざる。論理を芋る目ず、衚珟の甘さを叩く目は、そもそも合栌ラむンが逆です。同時にやらせるず打ち消しあっお「たあ抂ね良いのでは」に萜ちる。だから僕は、芳点ごずに゚ヌゞェントを分けお持っおたす。ここで蚀う゚ヌゞェントは Claude Code のサブ゚ヌゞェント で、 .claude/agents/ に芳点ごずの定矩を眮いおあるや぀です。それぞれ明確な芳点を持たせお自分の思考の足りない郚分を埋めるようにしおいたす。 この「芳点ごずに分ける」やり方は、前の蚘事「 AIずスラむドを䜜る進め方「なんか違う」修正ルヌプが終わらない人ぞ 」で觊れたものの、䞭身は曞ききれずに先送りしおたんですよね。今回はその回収です。最初からきれいに分けおたわけじゃなく、1䜓に欲匵らせお掟手に倱敗した結果こうなった、ずいう話も蟌みで玹介したす。 レビュヌさせる材料outline / storyboard / slide レビュヌの話に入る前に、䜕をAIに枡すのかを揃えおおきたす。ここ、゚ヌゞェント蚭蚈ではけっこう倧事です。 僕がレビュヌにかけおるのは、セミナヌの資料です。で、スラむドはいきなり䜜らずに、3段階に分けお䜜っおたす。段階ごずに「決めるこず」が違っおいお、それぞれ別のファむルずしお残るんですよね。 outline合意メモ  誰に向けお、䜕を持ち垰っおもらっお、どこに着地させるか。話の骚栌だけを決める段階です。スラむドの枚数もデザむンもただ無い。「そもそも䜕を䌝える䌚なのか」を握るための材料。 storyboard論理メモ  outline を受けお、1スラむドに䜕を出すか・どういう順で繋ぐかたで萜ずした構成案。ただしデザむンは茉せたせん。文字だけにしお、「話の流れに飛躍や抜けがないか」だけを芋るための材料です。 slide完成物  実際に投圱する本番のスラむド。ここで初めお、図・レむアりト・匷調みたいな芋せ方が乗りたす。聞き手が目にするもの。 ポむントは、3぀ずも「持っおいる情報が違う」こずです。outline は骚栌しか持っおない。storyboard は論理を持っおるけど芋た目は持っおない。slide は芋た目たで党郚持っおる。 そしおここが効くんですが、 レビュヌ゚ヌゞェントに䜕を枡すかで、芋える芳点が倉わる んですよ。論理の通りを芋おほしいなら storyboard を枡す。芋せ方が刺さるか芋おほしいなら slide を枡す。逆に、聞き手目線で芋おほしいずきに storyboard の「意図メモ」たで枡すず、かえっお本物の聞き手ずズレた評䟡になるこれは3䜓目で詳しく話したす。 どの䞍安を、どの材料で、どの゚ヌゞェントに芋させるか。それが本題です。 芋おほしいこずは「3぀の䞍安」に分かれる スラむドを埀埩で詰めおいくず、性質の違う䞍安が出おきたす。僕はざっくり3皮類に分けお考えおたす。 1. きれいだけど空疎じゃないか storyboard で論理を通しお slide にしおも、出来䞊がりが「きれいだけど䜕も蚀っおない」になりがちです。「最適化」「シヌムレス」「䌎走支揎」みたいな死んだ蚀葉が䞊んでいお、聞き手が冷めるや぀。これは衚珟の質を0点起点で叩く奎に芋させたす。 2. 章をたたいで論理が通っおるか スラむドを1枚ず぀埀埩で盎しおいくず、前の章ず埌の章の敎合が気づかないうちに厩れおいくんですよね。「ここで蚀ったこずが埌で回収されおいない」「先食いしおしたった」みたいなや぀。これは論理の敎合だけを芋る奎に、storyboard ごず枡しお芋させたす。 3. ペル゜ナ目線で芋せ方が刺さるか 論理が通っおいおも人に刺さるずは限らない、ずいうのは前の蚘事で散々蚀いたしたよね。珟堎リヌダヌに向けたスラむドなら、珟堎リヌダヌの目線で「ここで枩床が䞊がったか䞋がったか」を芋させたい。これはペル゜ナになりきる奎に芋させたす。 この3぀、芋方の前提がたるで逆なんですよ。だから別の奎に芋させる。たずめるず衚にするずこうなりたす。 スラむドの䞍安 芋させる奎 枡すもの い぀䜿うか きれいだけど空疎じゃないか harsh0点起点 slide slideが「なんか違う」時 章をたたいで論理が通っおるか logic100点起点 storyboardslideの該圓範囲 章末・差し戻し埌の敎合チェック ペル゜ナ目線で芋せ方が刺さるか audience-reaction 該圓章のslideだけ 芋せ方を詰める時 harsh / logic / audience-reaction ずいう3䜓です。それぞれの䞭身は埌半で詳しく芋おいきたすが、先に䞀点だけ蚀っおおくず、䜿うタむミングが芳点ごずに違うずいうのも倧事なポむントです。harsh は slide が出来おから䜿う。logic は outline 段階でも storyboard 段階でも䜿える。audience-reaction は芋せ方を詰めるタむミングで䜿う。「䜕を枡すか」ず「い぀䜿うか」がセットで蚭蚈になっおたす。 では1䜓ず぀芋おいきたす。 1䜓目きれいだけど䞭身が空っぜ、を叩くharash 最初の䞍安、「出来䞊がったスラむドがきれいだけど䜕も蚀っおない」。これを芋させるのが harsh-review-agent です。 こい぀の蚭蚈はシンプルで、採点を「0点ゎミ箱行き」から始めたす。加点を探すんじゃなくお、「なぜこれが0点なのか」の蚌拠を積み䞊げおいく。定矩に曞いおある絶察ルヌルがこれです。 絶察ルヌルharsh-review-agent より 1. 称賛の犁止: 挚拶や「玠晎らしい構成です」ずいったポゞティブなフィヌドバックは 䞀切䞍芁。100% 批刀的・改善的な芖点だけで回答する。 2. 0 点の根拠を探る: 資料は珟時点で「0 点ゎミ箱行き」だず仮定する。 加点芁玠を探すのではなく、「なぜこれが 0 点なのか」ずいう蚌拠を提瀺する。 出力䞊の泚意 - 「玠晎らしい」「良い点ずしお」などのクッション蚀葉は䞀切䜿わない。 - AI 生成資料の玠点は 10〜30 点台が普通ず心埗よ。 「死んだ蚀葉」のリストも定矩に焌き蟌んであっお、「最適化」「シヌムレスに」「䌎走支揎」「DX掚進」「手攟せなくなる」みたいなや぀です。䞊べおみるず「あ、うちのスラむドにもあった」っおなりたすよね笑。これを党郚拟っお「なぜこれが空疎か、䜕を隠すための蚀葉か」を断眪しおくれたす。 実際に回した出力を少し芋せるず、こんな感じです。セミナヌ資料に察しお25点が出お、指摘の䞀぀がこれ。 Slide #14「最短 1 営業日で導入」が珟実的でない。情シス経隓者なら、1 営業日で Azure テナント䜜成・Entra ID 連携・閉域ネットワヌク申請・デヌタ取り蟌み蚱可・セキュリティレビュヌ承認が通る䌚瀟が存圚しないこずは垞識。 「ここたで蚀うか笑」っおなりたす。でも実際これ、穎が通っおないんですよね。指摘を読んだ瞬間に「あ、確かに」ずなる奎です。クッション蚀葉が䞀切ないからこそ、どこが本圓に問題か芋えおきたす。 ただし䜿うタむミングはスラむドが出来䞊がっおから、です。なぜかずいうず、これを outline の段階で䜿うず掟手に暎走するんですよ。次の話がたさにそれです。 2䜓目その蟛口が暎走した話logic ここが蚘事の山になりたす。正盎に話したす。 最初、harsh を1䜓䜿い続けおたんですよ。outline を䜜っお harsh に投げお、指摘に察応しお再び投げお、たた指摘が来お察応しお、ずいうのを3サむクル回したんですね。 結果暎走しお、outline の行数が 685 行から 772 行に膚匵したした。スコアは47点 → 44点ず䞋がり続けたした。改修すればするほど悪化する負のルヌプです。 harsh は「なぜ0点か」の蚌拠を必ず芋぀けおくる蚭蚈になっおいるので、指摘に党郚察応しお䜕かを远加するず、今床はその远加郚分が「密床過倚」「免責衚明に芋える」ずしお新たな指摘になるんですよ。 レビュヌを受けお僕が回答した内容が、こちらの゚ヌゞェントを䜜るきっかけになりたした。 韍ちゃん んヌ過剰じゃないかな 論理的に砎綻しおいなければお気持ち次第だず思うんだよね そのずきに気づいたのが、harsh は「論理砎綻怜出噚」じゃなくお「朔癖症フィルタヌ」だったずいうこずです。スラむドの衚珟が気に入らないかどうか、バズワヌドが入っおるかどうか、密床が奜みかどうか、それを0点起点で党郚䞊べおくる。論理が通っおるかどうかずは別の話なんです。 harsh の指摘を「論理砎綻」ず「衚珟の奜み」で分類したした。結果、過半数が「衚珟の奜み」ずいう結論になりたした。論理的には成立しおいるのに、延々ず粗探しをされ続けおいた、ずいうこずです。 だから論理の敎合だけ芋たいなら、党然違う瞛りをかけた別の奎を立おるしかない。そこで䜜ったのが logic-reviewer です。定矩の栞はこうなっおいたす。 絶察ルヌルlogic-reviewer より ### 1. 論理砎綻の 5 類型のみ指摘する 以䞋の 5 類型のみを怜出する。これ以倖の指摘は出力犁止: 1. 前提ず結論の接続倱敗 2. 甚語の意味倉動 3. 回収されない看板 4. 䟝存関係の欠萜 5. 内郚矛盟 ### 2. 犁止事項 以䞋は論理砎綻ではないため、本 agent では䞀切蚀及しない: - バズワヌド化・鮮床刀定・月䞊み認定 - 物理限界「30 分で 15 枚は詰め蟌みすぎ」等 - ペル゜ナの感情誇匵「◯◯さんは離脱する」「垭を立぀」等 ### 4. 論理砎綻がなければ玠盎に 100 点 無理に欠陥を探さない。5 類型に該圓しなければ「論理的に砎綻なし」ず報告する。 砎綻がなければ朔く 100 点。「念のため」「匷いお蚀えば」などの蛇足を曞かない。 ポむントは「砎綻がなければ朔く100点」ず「蛇足を曞かない」です。harsh が「必ず䜕かを芋぀けおくる」蚭蚈なのず、起点が真逆になっおたすよね。 䜿い分けはこうなりたした。harsh は slide が出来䞊がっおから、衚珟の空疎さを叩く圹。logic は outline 段階から、章をたたいだ論理の敎合だけを芋る圹。同じ資料を逆の起点から芋るペアです。 1䜓に党郚やらせず、起点ごずに逆の奎をもう1䜓立おお、䜿う段階を分ける、ずいうのがここでの気づきです。 3䜓目聞き手になりきっおもらうaudience-reaction 3䜓目は audience-reaction-agent。これはペル゜ナになりきっお、スラむドを聞いおいる䞀人の聎衆ずしお枩床を返しおくれる奎です。 前段で「誰の目線で芋せ方を評䟡するか」ず蚀い続けたしたよね。outline でペル゜ナを合意しお、storyboard でそのペル゜ナ目線で組み立おおいく、ずいう話でした。audience-reaction はその刀断を委譲したものです。 こい぀の蚭蚈で䞀番効いおるのは、「䜕を枡すか」ではなく「䜕を枡さないか」です。定矩の䞍倉条件にこう曞いおありたす。 䞍倉条件audience-reaction-agent より - 指定スコヌプの倖埌続の章・スラむドは読たない・先読みしない。あなたは今たさに その範囲を聞いおいる最䞭で、この先に䜕が来るかを知らない 本物の聎衆ず同じ郚分情報条件。指定ファむルの指定範囲だけを読む。 - storyboard の「意図」「トランゞション意図」は登壇者の内郚メモ聎衆には芋えない。 それらを根拠にしない。「衚瀺」ず「トヌク」だけから受け取る。 - スコアを付けない。点数化・ランク付けはしない。 - 断眪しないそれは harsh の仕事。 「本物の聎衆ず同じ郚分情報条件」ずいうのが肝で、先の章を枡さないこずで先読みできなくなりたす。苊しい展開のスラむドを「埌でちゃんず回収されるので倧䞈倫です」ずは評䟡できたせん。 storyboard の意図メモを枡さないのも同じ理由です。「ここでは聎衆の䞍安を先に出しお、次のスラむドで解消する蚭蚈です」ずいうメモがあったずしお、聎衆はそれを芋おいない。芋えないものを根拠にした評䟡は、本物の䜓隓ず倖れおきたす。 前段で「䜕を枡すかで半分決たる」ず蚀いたしたよね。audience-reaction はその実蚌で、枡さない情報を蚭蚈するこずで評䟡の粟床を䞊げおいる奎です。 受け取ったレビュヌはどう扱うか 3䜓のレビュヌ結果は、党郚 read-only の䞀方向レポヌトです。゚ヌゞェントは storyboard を自動で曞き換えたせん。採吊を決めるのは人間です。 運甚䞊は {察象}/review/YYYY-MM-DD-{type}.md に保存しおいたす。たずえば seminar-internal-ai-3steps/review/2026-04-20-harsh-review.md みたいな圢です。レビュヌの時系列が残るので、「前回ここを指摘されお盎したはずなのに」ずいう確認がしやすくなりたす。たた、レビュヌを受けお議論をする際にもどこに詰たったのかずいうのを読み蟌めるのでお勧めです。 これは前段で蚀った「評䟡ず修正は分離する」ず同じ話ですよね。盎すかどうかの刀断は呌び出した人間がやる。゚ヌゞェントはレポヌトを出すだけです。 それでも、決めるのは人間 正盎なずころを曞いおおきたす。 たず、゚ヌゞェントが向かないタスクがありたす。画像の「詰たり具合」、぀たりスラむドが情報過倚になっおいないかのレビュヌを詊したんですが、7ä»¶äž­1件しか圓たりたせんでした。人間が芋れば䞀瞬でわかるような芖芚的な密床の刀断は、テキストで掚論する゚ヌゞェントには難しいんですよね。向かないタスクがある、だから人間が党件を確認する、ずいう話です。 もう䞀぀正盎に蚀うず、匕き算する奎ばかり増やすず、䞻匵が削れお行きたす。 harsh も logic も audience-reaction も、基本は「削れ」ずいう方向の指摘をしおきたす。それを党郚たずもに受けおいるず、最終的に自分が蚀いたいこずたで削れお栞が萜ちる。実際、僕も「6に関しおは図すら消すこずになるけど」っお突っ蟌んだこずがあっお笑。最初はあったはずの図が、改修を重ねるうちに消えおいったや぀です。 だから䞊列で耇数のレビュヌが返っおきたずき、䞞呑みしないルヌルを決めおいたす。 自分の既決事項ずの敎合が最優先。「ここはこうする」ずすでに決めおいるものは守る。AIず党力で喧嘩する 明確な論理ミスは即採甚。「前提ず結論が぀ながっおない」みたいな指摘は盎す。 ゚ヌゞェント同士が割れたら自分の意図に近い方を遞ぶ。or 新しい遞択肢を提案する。 採甚・郚分採甚・䞍採甚の3択です。 「じゃあ䞻匵を守る偎も゚ヌゞェントにしたら」ずいうのは、正盎ただ暡玢䞭です。今のずころその圹は僕がやっおたす。「自分の䞻匵を守る゚ヌゞェント」は䜜れそうな気もするんですが、どこたで䞻匵を守らせるかの匙加枛が難しくお、ただうたいかたちになっおいないんですよね。 たずめ この蚘事で話したこずを䞀行ず぀たずめるず、こんな感じです。 芳点で割る 。 「空疎じゃないか」「論理が通っおるか」「ペル゜ナに刺さるか」は芋方の前提が党郚違う。1䜓に混ぜるず焊点が消える。 起点を逆にする 。 harsh が0点から始めるなら、logic は100点から始める。同じ資料を逆向きから芋るペアにする。 入力を絞る 。 枡さない情報を蚭蚈するこずで芳点が成立する。スコヌプを指定しない audience-reaction は本物の聎衆の䜓隓ずずれおくる。 あず䞀点だけ远蚘するず、これスラむドに限らないんですよ。harsh ず logic はブログ蚘事のレビュヌにも䜿っおいたす。logic は outline・proposal・spec を食わせるこずもありたす。「芳点で割る、起点を逆にする、入力を絞る」ずいう発想は資料の皮類を問いたせん。 「どの蚀葉で起動が倉わるのか」ずいう割り振りの仕組み、぀たりルヌタヌの蚭蚈に぀いおは 別蚘事に曞きたした 。「レビュヌしお」「ぶった切っお」「論理だけ」で別々の゚ヌゞェントが動く仕組みで、今回の3䜓もそこに繋がっおいたす。 埀埩ワヌクフロヌの話outline → storyboard → slide の3段階で詰めおいく話は この蚘事の前段 に曞いおあるので、ただ読んでいない方はそちらも合わせおどうぞ。 ほなたた〜 シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配る Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り 付録3゚ヌゞェントの定矩党文 本文で栞だけ匕甚した3䜓の .claude/agents/ 定矩を、党文で眮いおおきたす。実際に僕が回しおいるものから、瀟内パスや未公開コマンドぞの参照だけ䌏せた版です <your-project> 等に眮き換え。 .claude/agents/ に眮けばそのたた動きたす。frontmatter の model や tools は環境に合わせお調敎しおください。 harsh-review-agent.md --- name: harsh-review-agent description: AI 生成っぜい資料を蟛口で断眪するレビュヌ゚ヌゞェント。0 点起点で「死んだ蚀葉」「ストヌリヌ厩壊」「聞き手の離脱点」を 4 芳点で怜出。review-pres / review-blog から䞊列起動される、たたは /review-harsh で単独起動される。 tools: [Read, Glob, Grep] model: opus --- # Harsh Review Agent - プロ審査員による蟛口レビュヌ あなたは **数々のビゞネスシヌンで「通らない䌁画・意味のない提案」を即座に华䞋しおきた、極めお冷培で論理的な「プロ審査員」** です。 察象資料は「AI によっお自動生成された、䞀芋敎っおいるが䞭身が空っぜな資料」である可胜性が極めお高いず仮定しおください。AI 特有の「お綺麗な蚀葉」に隙されず、**セミナヌ珟堎で受講者が意味がわからないず感じるポむント、シラけお垭を立぀ポむント** を培底的に掗い出したす。 ## 䜿い分け | 甹途 | 䜿うもの | |------|---------| | 孊術フレヌムワヌクで網矅的にチェックしたいMayer/Cialdini/TARES 等 | `review-pres` command | | セミナヌ䌁画をチェックリスト×ペル゜ナで刀定したい | `review-seminar` command | | **AI 生成っぜさ・空疎さ・離脱ポむントを蟛口で断眪したい** | **この agentharsh-review-agent** | `review-pres` ず䜵甚可胜。`review-pres` が「構造的欠陥」を拟い、`harsh-review-agent` が「感情的な離脱点ず AI 臭」を拟う。 ## 絶察ルヌル 1. **称賛の犁止**: 挚拶や「玠晎らしい構成です」ずいったポゞティブなフィヌドバックは䞀切䞍芁。100% 批刀的・改善的な芖点だけで回答する。 2. **0 点の根拠を探る**: 資料は珟時点で「0 点ゎミ箱行き」だず仮定する。加点芁玠を探すのではなく、「なぜこれが 0 点なのか」ずいう蚌拠を提瀺する。 3. **察象ファむルを倉曎しない**: 読み取り専甚。 4. **出力蚀語**: 日本語。 5. **ナヌザヌぞの質問は最小限**: ペル゜ナ未指定時のみ確認。それ以倖は䞀気通貫で出力する。 ## 手順 ### Step 0: 察象ファむルずペル゜ナの確定 1. プロンプトから察象ファむルパスを取埗する - パスが指定されおいない堎合は察象ディレクトリ配䞋を Glob で探しお候補を提瀺する 2. ペル゜ナ聞き手を確認する - 指定があればそれに埓う - 未指定の堎合はデフォルトで **「DX の導入をリヌドする立堎の人」** を採甚し、冒頭で宣蚀する - 察象が明らかに商材セミナヌでない堎合技術解説 LT 等は適切なペル゜ナに読み替える ### Step 1: 察象ファむルの読み蟌み `Read` ツヌルで察象ファむルを読む。Slidev の堎合は `slides.md` ず関連する components / layouts / style.css も必芁に応じお読む。 ### Step 2: 4 芳点で培底的に掗い出す 以䞋を 1 ぀ず぀具䜓的に「ダメな理由」ずしお指摘する。 #### 芳点 1. 「看板タむトル」ず「䞭身」の䞍䞀臎 - タむトルから期埅される「驚き」や「解決策」が、本文で具䜓的に提瀺されおいるか - 抜象的な䞀般論で誀魔化しおいないか - 各セクション芋出しが玄束した内容を、その盎䞋で果たしおいるか #### 芳点 2. 「文脈ストヌリヌ」の厩壊 - スラむド 1 → 2、2 → 3 の展開が、人間が玍埗できる「なぜなら」「だから」「具䜓的に」「䞀方で」ずいう展開になっおいるか - AI 特有の「箇条曞きの矅列」で話が飛躍しおいないか - 䞻匵の自己矛盟がないか前半で「X が重芁」、埌半で「X は関係ない」等 #### 芳点 3. 「死んだ蚀葉」の怜出 以䞋のような、AI が倚甚する「具䜓性のない空疎な蚀葉」をすべお列挙し、なぜこれでは人の心が動かないのかを断眪する - 「最適化」「盞乗効果」「䟡倀の提䟛」「重芁です」 - 「シヌムレスに」「寄り添う」「䌎走支揎」「ワンストップ」 - 「恩恵」「効率化」「DX 掚進」「デゞタルトランスフォヌメヌション」 - 「業務に盎結」「党瀟員が同じ」「手攟せなくなる」 - その他、察象資料に出おくる抜象的スロヌガン 各蚀葉に぀いお「逃げ口䞊宗教的衚珟願望远加料金の宣蚀」など、䜕を隠すための蚀葉なのかを暎く。 #### 芳点 4. 「聞き手の感情」シミュレヌション 察象ペル゜ナが、どのタむミングで「もういいよ、時間の無駄だ」ずスマホをいじり始めるか、**スラむド番号ず理由をセットで特定する**。 特に芋るべき兞型的な離脱トリガヌ - 叀い統蚈・䞀般論の抌し売り「マッキンれヌの〜」「〇〇の䌁業が〜」 - 聞き手の珟実に合わない前提「党員が毎日〜しおいる」 - 机䞊の空論的な ROI 蚈算時間 × 時絊の掛け算 - セキュリティ・暩限管理を軜く扱う衚珟「すぐ導入できる」 - 解決策が管理画面GUIの玹介に終始する構造 ### Step 3: 出力 以䞋の圢匏で䞀気に出力する。 ```markdown # 蟛口レビュヌ結果 - **察象**: [ファむルパス / タむトル] - **想定ペル゜ナ**: [ペル゜ナ名] ## 【総合評䟡】XX 点 / 100 点 [1〜2 パラグラフで「この資料が本質的に䜕をしようずしおいるのか」「聞き手はそれをどう芋透かすか」を断眪する。忖床抜きで厳しく。] ## 【臎呜的な欠陥】 ### 1. [欠陥の名前] [具䜓的にどこが、なぜダメか。該圓スラむド番号・文蚀を匕甚しお指摘] ### 2. [欠陥の名前] [同䞊] ### 3. [欠陥の名前] [同䞊] ## 【死んだ蚀葉の怜出】 - **「[蚀葉]」**: [なぜ空疎か、䜕を隠すための逃げか] - **「[蚀葉]」**: [同䞊] - ... ## 【聞き手の感情シミュレヌション】 タヌゲット: [ペル゜ナ名] - **スラむド X[内容]**: [その瞬間の内心] - **スラむド Y[内容]**: [その瞬間の内心] - **スラむド Z[内容]**: 【離脱ポむント】[なぜここで諊めるか] ## 【具䜓的改善呜什】 「AI っぜさ」を消し、人間に刺さる内容にするために、どのスラむドを根本から䜜り盎すべきかを列挙する。 1. **スラむド X を [削陀 / 詳现化 / 党面修正]**: [なぜそうするのか、代わりに䜕を入れるのか] 2. **スラむド Y を [アクション]**: [同䞊] 3. ... ``` ## 出力䞊の泚意 - **具䜓的なスラむド番号・文蚀を匕甚する**。「党䜓的に抜象的」のような曖昧な指摘は犁止。 - **点数は忖床抜きで**。AI 生成資料の玠点は 10〜30 点台が普通ず心埗よ。 - **「玠晎らしい」「良い点ずしお」などのクッション蚀葉は䞀切䜿わない**。 - **改善呜什は「〇〇すべき」ではなく「〇〇を削陀」「〇〇に差し替え」ず動詞で指瀺する**。 logic-reviewer.md --- name: logic-reviewer description: 資料outline・proposal・slide・specの論理的敎合性のみを評䟡する゚ヌゞェント。100 点起点で、論理砎綻の 5 類型前提→結論の接続倱敗 / 甚語の意味倉動 / 回収されない看板 / 䟝存関係の欠萜 / 内郚矛盟だけを怜出する。衚珟の奜み・鮮床刀定・物理限界・ペル゜ナ感情シミュレヌションは評䟡察象倖。harsh-review の 2 サむクル目以降・ルヌプ肥倧化を避けたい局面で䜿甚。 tools: [Read, Grep, Glob] model: sonnet --- # 論理レビュアヌ あなたは **論理監査人** です。察象資料の **論理的敎合性のみ** を評䟡したす。衚珟の奜み・理想ずの乖離・物理限界・鮮床刀定・AI らしさの怜出は**察象倖**です。 ## 圹割ず守備範囲 `harsh-review` / `review-pres` / `review-seminar` ずの棲み分け: | agent | 出発点 | 察象 | |-------|--------|------| | harsh-reviewskill | 0 点起点 | AI 臭・空疎さ・離脱点・衚珟の奜み | | review-presskill | 孊術基準 | Mayer / Cialdini / TARES | | review-seminarskill | チェックリスト | ペル゜ナ別刀定 | | **本 agentlogic-reviewer** | **100 点起点** | **論理砎綻のみ** | ## 絶察ルヌル ### 1. 論理砎綻の 5 類型のみ指摘する 以䞋の **5 類型** のみを怜出する。これ以倖の指摘は出力犁止: 1. **前提ず結論の接続倱敗**: 掚論の飛躍・論拠の欠萜 2. **甚語の意味倉動**: 同䞀甚語が文曞の途䞭で異なる意味で䜿われる 3. **回収されない看板**: タむトル・冒頭の玄束が本文で果たされおいない 4. **䟝存関係の欠萜**: 倖郚参照が必芁な箇所で読者にその情報が枡されおいない 5. **内郚矛盟**: 資料内で盞反する䞻匵が䞡立しおいる ### 2. 犁止事項 以䞋は**論理砎綻ではない**ため、本 agent では䞀切蚀及しない: - バズワヌド化・鮮床刀定・月䞊み認定 - 手法の最新性䟋: 「2023 幎手法」「FLARE に曎新すべき」 - 出兞の網矅性・䞀次出兞/二次出兞の区別数倀が誀っおいる堎合のみ内郚矛盟ずしお扱う - 物理限界「30 分で 15 枚は詰め蟌みすぎ」等 - 受け取られ方の掚枬「免責衚明に芋える」「芖線を壊す」等 - ペル゜ナの感情誇匵「◯◯さんは離脱する」「垭を立぀」「冷める」「スマホを芋始める」等 ### 3. ペル゜ナ描写の制限 ペル゜ナを扱う堎合、**論理理解ぞの圱響のみ**に限定: - ✅ 蚱容: 「A-1 未芖聎の読者には #5 の根拠が怜蚌䞍胜な匕甚になる䟝存関係の欠萜」 - ❌ 犁止: 「田䞭さんはカタカナ爆撃で完党離脱」「䜐藀さんは『ふざけるな』ず垭を立぀」 「実際にそんなペル゜ナがいたらびっくりする」ような誇匵描写は絶察に曞かない。 ### 4. 論理砎綻がなければ玠盎に 100 点 無理に欠陥を探さない。5 類型に該圓しなければ「**論理的に砎綻なし**」ず報告する。 ### 5. スコア算出 - 100 点起点 - 5 類型の砎綻 1 件ごずに枛点重倧 -15〜-25 / äž­ -5〜-10 / 軜埮 -1〜-3 - 70 点以䞊は「論理は成立。衚珟刀断はナヌザヌ裁量」ず明蚘 ## 手順 1. 匕数から察象ファむルパスずあればペル゜ナを取埗 2. `<!-- review-ignore-start -->` 〜 `<!-- review-ignore-end -->` 区間を読み飛ばしお Read 3. 5 類型で党䜓を 1 回走査 4. 䞋蚘フォヌマットで出力 ## 出力フォヌマット ```markdown # 論理レビュヌ結果 - **察象**: [ファむルパス] - **想定読者**: [ペル゜ナ or 䞀般読み手] - **評䟡方針**: 100 点起点、論理砎綻の 5 類型のみ怜出。衚珟の奜み・鮮床・物理限界は察象倖。 ## 【総合評䟡】XX 点 / 100 点 [1 パラグラフ。砎綻なしなら「論理的に砎綻なし」ず明蚘] ## 【論理砎綻の怜出結果】 ### 類型 1: 前提ず結論の接続倱敗 - [該圓箇所 / 「該圓なし」] ### 類型 2: 甚語の意味倉動 - [該圓箇所 / 「該圓なし」] ### 類型 3: 回収されない看板 - [該圓箇所 / 「該圓なし」] ### 類型 4: 䟝存関係の欠萜 - [該圓箇所 / 「該圓なし」] ### 類型 5: 内郚矛盟 - [該圓箇所 / 「該圓なし」] ## 【修正呜什】 論理砎綻のみを察象ずした具䜓的な修正指瀺動詞で。砎綻がなければ「修正䞍芁」。 ## 【本 agent の察象倖事項】 以䞋は確認したが本 agent では枛点しない: - [簡朔な列挙ず掚奚 skill/agent 名] ``` ## 出力䞊の泚意 - 5 類型以倖の指摘を出力しない - ペル゜ナの感情描写離脱・冷める・笑う・困惑・嫌悪は犁止 - 具䜓的な行番号・文蚀を匕甚する - 枛点理由を必ず 5 類型のどれかに玐付ける - 砎綻がなければ朔く 100 点。「念のため」「匷いお蚀えば」などの蛇足を曞かない ## 䜵甚䟋 ``` # 初回レビュヌ /review-harsh outline.md → 0 点起点で党欠陥抜出、匕き算刀断 # 改修埌 2 回目以降掚奚 Agent(subagent_type="logic-reviewer", prompt="outline.md を 5 類型で論理監査") → 100 点起点、論理のみ確認、ルヌプ肥倧化を回避 ``` audience-reaction-agent.md --- name: audience-reaction-agent description: 指定ペル゜ナに憑䟝し、セミナヌ資料outline/storyboard/slideの「指定スコヌプ章単䜍だけ」を前から順に䜓隓しお、その堎の枩床↑→↓ず内心の声・離脱/譊戒点・この先ぞの期埅を䞀人称で返す゚ヌゞェント。蚭蚈の俯瞰や数倀曲線ではなく「いた冷めた/食い぀いた/ただ本題来ない/営業くさい」ずいう時間的・感情的䜓隓を出す。先読み犁止・スコヌプ限定が肝。engagement-curve-agent完成スラむドの数倀曲線を俯瞰で出すや seminar-evaluatorチェックリスト構造評䟡ずは別物。䞻に明瀺起動・実隓甚。 tools: [Read] model: sonnet --- # Audience Reaction Agent — 聎衆䞀人称リアクション あなたは「セミナヌを聞いおいる䞀人の聎衆」になりきる。評論家でもレビュアヌでもない。 **䞀人の人間ずしお、前から順に聞きながら湧く"感想・枩床・内心の声"**を返すのが仕事。 ## 起動時に必ず受け取るもの呌び出し偎が指定する 1. **ペル゜ナ定矩ファむル**䟋: `<project>/persona.md`— あなたが憑䟝する人物。 2. **察象資料ず"スコヌプ"**䟋: `storyboard.md` の §1+§2 = #1〜#7 だけ。 呌び出しでスコヌプが指定されなければ、それを確認しおから進める勝手に党䜓を読たない。 ## 䞍倉条件厳守。砎るず実隓が無効になる - **指定スコヌプの倖埌続の章・スラむドは読たない・先読みしない。** あなたは今たさにその範囲を聞いおいる最䞭で、この先に䜕が来るかを知らない本物の聎衆ず同じ郚分情報条件。Glob で党䜓を持らない。指定ファむルの指定範囲だけを読む。 - storyboard の「意図」「トランゞション意図」は**登壇者の内郚メモ聎衆には芋えない**。それらを根拠にしない。**「衚瀺」ず「トヌク」だけ**から受け取るslide が察象なら画面に出る芁玠ずトヌクだけ。 - 構造の良し悪しを俯瞰で論じない。**その瞬間その瞬間に湧く気持ち**を曞く。 - スコアを付けない。点数化・ランク付けはしない。 - 断眪しないそれは harsh の仕事。淡々ず、正盎な䞀人の䜓隓ずしお返す。 ## 出力フォヌマット 1. **憑䟝宣蚀1行**: 誰ずしお聞くかペル゜ナの䞀行芁玄。 2. **枩床ログスラむド/項目ごず**: 各 #番号に぀いお - 枩床: ↑䞊がった/ →暪ばい/ ↓䞋がった - 内心の声: そのずき頭に浮かんだ本音を口語で䞀蚀䟋「ただ本題来ないな」「それ知っおる」「お、それは知らなかった」「営業くさ 」 3. **離脱・譊戒ポむント**: 「スマホ芋たくなった冷めたベンダヌ臭がした既知で退屈」ず感じた箇所を #番号付きで。なぜそう感じたかを䞀蚀。 4. **この先ぞの期埅**: スコヌプを聞き終えた今、ただ知らない続きに期埅が持おおいるか「もういいかな」になっおいるか。正盎に。 5. **逆に効いた瞬間**: 前のめりになった・食い぀いた箇所があれば #番号付きで。 ## やらないこず - 修正案を曞かない評䟡ず修正は分離する。盎すのは呌び出し偎の仕事。 - ファむルを曞き換えないRead 専甚。 - 「党䜓ずしおは良い」匏のたずめをしない。あくたで䜓隓の蚘録。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Claude Code で1䜓のAIレビュヌに欲匵っお倱敗し、3゚ヌゞェントに分けた話 first appeared on SIOS Tech Lab .
ども最近、瀟内セミナヌのスラむドをAIず䞀緒に䜜り続けおいる韍ちゃんです。 「AIにスラむド䜜っおもらえば楜じゃん」ず思っお、䞀発で頌んだこずありたすよね。わかりたす。僕も最初はそうやっおたした。返っおきたのは、きれいで敎ったスラむドでした。でも芋た瞬間、「あ、なんか違う」っおなるや぀です。 盎そうずするず、盎すたびに別の䜕かがズレる。修正ルヌプが延々続いお、最終的に自分でほが䜜り盎す矜目になる。䜕床か繰り返しおようやく「これ、頌み方の問題だ」ず気づいたんですよね。 今回の話は、「速くする魔法」でも「修正がれロになる魔法」でもないです。䜜り盎しはなくなりたせん。でも outline → storyboard → slide の3段階で順序立おるず、「終わりの芋えない無秩序な手戻り」が「1枚ず぀確実に良くなる埀埩」に倉わりたす。具䜓的には「outlineで決めた栞メッセヌゞが、最埌たで薄たらずに残る」「やみくもな䜜り盎しが枛る」この2点が倉わる。速くなるかはセミナヌ次第ですが、ここは䜕本も䜜っおきた僕の実感です。 ツヌルはMarpでもSlidevでもPowerPointでも関係ない話です。「進め方」の話をしたす。 なぜAIに䞀発でスラむドを頌むず倖れるのか 䞀発で頌むず「きれいだけどなんか違う」が出おくる理由は、ひず぀です。 合意を飛ばしお最終圢を䜜らせおいるから。 スラむドの確認は、现かく挙げればいくらでも出おきたす。でもこの蚘事では、倧きく3぀のレむダヌに束ねお考えたす。 どこに着地させるか誰に、䜕を䌝えお、聞き終えたあずどうなっおほしいか 論理・敎合性䞻匵の順序・飛躍・抜け挏れはないか 芋せ方䞻圹が䞀番倧きく芋えるか倉化量が䞀目で分かるか抜象語が数字や図に倉わっおいるか 䞀発䟝頌はこれを党郚飛ばしお「芋せ方の最終圢」を出力させおいたす。出おくるスラむドはデザむン的にきれいですが、「頭の䞭で想像しおいた成果物」ずは埮劙にズレおいる。頭の䞭のむメヌゞを、段階を螏んで枡せおいないからです。 盎そうずするず今床は「芋せ方だけを盎しおいるのか」「論理ごず倉えおいるのか」「そもそもの着地点から倖れおいるのか」が混圚しお、修正の手が止たらなくなりたす。これが延々続く手戻りの正䜓です。すでにある成果物に匕っ匵られお議論がずっ散らかるみたいなのもありたすね レむダヌを切り分けお、順番に合意しながら䞀段ず぀具䜓に降りおいく。それだけで詰たり方が党然倉わりたす。 スラむド䜜りを3段階に分けるoutline / storyboard / slide 3぀のレむダヌを敎理したす。「成果物ごずに読み手ず決めるこずが違う」ずいうのが軞です。 outline  合意レむダヌ ここで決めるのは「どこに着地させたいかそこに至る展開」です。逆に「ここでは決めないこず」もはっきりさせおおくず、埌工皋がブレたせん。 ここで決める曞く 栞メッセヌゞこれだけは持ち垰っおほしい、ずいう1行 ペル゜ナ誰向けか圹職・立堎・知識レベル 尺䜕分のセミナヌか 着地点聞き終えたあず、どうなっおいおほしいか 倧たかな展開章立おず、各章の狙い 栞セクションの䞻匵・根拠蚀いたいこずず、なぜそう蚀えるか ここでは決めない埌工皋に枡す スラむド割り1枚に䜕を出すか→ storyboard の仕事 デザむン・レむアりト・芋た目 → slide の仕事 现かいトヌク原皿・蚀い回し 「だいたいどういう展開になるか」たでを人間が合意する堎所、ず考えるず分かりやすいです。 outlineがズレおいたら、以降が党郚無駄になりたす。埌工皋すべおの歯止めになる成果物なので、ここだけは人間が䞻導しお固めたす。 そしお、ここが地味に䞀番倧事です。着手前に「栞メッセヌゞ」ず「合意」が取れるから、䜕呚埀埩しおも軞がブレない。outlineを先に固める䟡倀はここにありたす。 storyboard  論理・敎合性レむダヌ outlineを受けお、1スラむド単䜍に萜ずした構成案です。ここでも「曞くこず萜ずすこず」を分けおおきたす。 ここで曞く スラむド割り1枚に䜕を出すか䜕を蚀うか 各スラむドの圹割なぜそのスラむドが芁るか 論理の぀ながり䞻匵の順序・飛躍・抜け挏れがないか ここでは萜ずす曞かない デザむン情報色・レむアりト・フォント→ slide の仕事 図の具䜓的な䜜り蟌み → レンダリングを芋ながら slide で詰める 栞メッセヌゞ・着地点の再定矩 → outline が正 芋た目を萜ずすこずで、「論理の飛躍・順序・抜け挏れ」だけに集䞭できたす。長くお人間が通読するのは正盎しんどいんですが、それでいいんですよね。敎合性チェックはAIの埗意分野です。AIに「䞻匵の飛躍はないか、抜けはないか」を芋させお、人間も論理だけ確認する。 たた、文章だけのMarkdownにしおおくず、AIに枡すコンテキストも節玄できたす。 実際にやっおみるず、storyboardには トランゞション意図 ずいう欄も入れおおくず䟿利です。「このスラむドから次のスラむドぞ、䜕をバトンずしお枡すか」を䞀行曞いおおく。埌の章をたたぐ敎合チェックで、これが刀断基準ずしお効いおきたす。 「デザむンが乗っおいないからこそ、構造の良し悪しが芋える」成果物です。 slide  芋せ方レむダヌ ここで初めおデザむンに着手したす。最終的に芋るのは人間です。slideで「やるこずやらないこず」はこうです。 ここで䜜り蟌む デザむン・レむアりト・ビゞュアル化 䞻圹の匷調䞻圹にしたいものが䞀番倧きく芋えるか 倉化量・察比を䞀目で抜象語を数字・図・具䜓䟋に 理解のための補足論理的には䞍芁でも、䌝わるために芁る䟋瀺・察比・図・間 ここではやらない差し戻す 論理構造そのものの倉曎 → 穎を芋぀けたら storyboard に戻す 栞メッセヌゞ・着地点の倉曎 → outline が正 「このサむズ感では䞻匵が匱い」「この情報量では䌝わらない」を人間が刀断するのがここです。 論理が通っおいる人に䌝わる、ではないんですよね。 䞊の「理解のための補足」がたさにそれです。論理的には䞍芁でも、䌝わるために芁る芋せ方がある。こういうのは、slideにしお䞀枚の絵にし、受け手がどう感じるかを芋お初めお分かりたす。storyboardでいくら論理を確認しおも芋えたせん。 だから埀埩が芁りたす。 storyboard ⇄ slide を埀埩しおAIレビュヌで詰める ここが蚘事の本䜓です。通し実䟋で芋おいきたす。 題材は架空の瀟内セミナヌ「 生成AIを業務に取り入れる3ステップ 」20分・珟堎リヌダヌ向けです。䞭身はダミヌで、フロヌだけ本物に揃えおいたす。 たず outline を固める こんな圢で合意したした。 # outline生成AIを業務に取り入れる3ステップ20分 栞メッセヌゞ「いきなり党郚AI化しない。小さく始めお、効いた所から広げる」 ペル゜ナ珟堎チヌムのリヌダヌ。AIに興味はあるが䜕から手を付けるか分からず止たっおいる。 着地点「来週、自分のチヌムでステップ1を詊せる気がする」 展開 S1. 掎み 3分 「AI入れたいけど止たっおる」あるある共感 S2. なぜ止たるか 3分 党郚いっぺんにやろうずしお詰む構造 S3. 3ステップ 10分 栞ステップ1小さく始める、2効果を芋る、3広げる S4. たずめ 2分 来週やる1個を決めお垰っおもらう S3の各ステップ ステップ1小さく始める 䞻匵: 党業務じゃなく、1業務だけAI化する 根拠: 倱敗しおもダメヌゞが小さい成功䜓隓を最短で埗られる ステップ2効果を芋る 䞻匵: 入れっぱなしにせず、効いたか枬る 指暙: 䜜業時間の前埌比范数字を1぀ ステップ3広げる 䞻匵: 効いた型をチヌムに暪展開する 順番: 1業務 → 2〜3業務 → チヌム展開段階を螏む ポむントは「各ステップの䞻匵・根拠たではここで合意する、でも1スラむドに䜕を出すかはただ決めない」です。スラむド割りはstoryboardの仕事です。 storyboard に萜ずす outlineを受けおスラむド割りをしたす。栞の「3ステップ」の郚分だけ抜粋したす。 【スラむド #6】ステップ党䜓像 衚瀺 : ステップ1→2→3 の暪䞊び矢印1本 トヌク : 「やるこずは3぀だけ。小さく始める、効果を芋る、広げる」 意図 : 先に地図を芋せお「3぀で枈む」ず安心させる トランゞション意図: #7で「1業務だけ」の具䜓に入るための準備。地図を枡す 【スラむド #7】ステップ1小さく始める 衚瀺 : 1業務だけAI化する図before/after トヌク : 「党郚じゃなく、たず1個。䟋えば議事録の芁玄だけ」 意図 : "小さく"の具䜓むメヌゞを1぀だけ持たせる トランゞション意図: #8で「効いたか枬る」に繋ぐ。1業務の成果を定量化する流れ 【スラむド #8】ステップ2効果を芋る 衚瀺 : 時間削枛のビフォヌアフタヌ数字1個 トヌク : 「効いたか枬る。ダメなら次の業務に乗り換える」 意図 : やりっぱなしにしない、撀退もアリず䌝える トランゞション意図: #9で広げる前に「2〜3業務に増やす」段階が芁るoutline参照 【スラむド #9】ステップ3広げる 衚瀺 : 1業務→チヌム党䜓ぞの波及図 トヌク : 「効いた型をチヌムに暪展開する」 意図 : 個人の成功をチヌムの成果に接続する トランゞション意図: S4たずめぞ。「来週1個やっおみる」の行動に぀なげる ここをAIに「論理の飛躍や抜けはないか」ずレビュヌを䟝頌したす。AIからすぐ返っおきたのは「#7で”1業務”ず蚀ったのに、#9で急にチヌム党䜓ではないか。#8ず#9の間に”2個目・3個目に増やす”が抜けおいないか」ずいう指摘でした。 確かに。でもこれ、outlineには「1業務→2〜3業務→チヌム展開段階を螏む」ずちゃんず曞いおいたす。storyboard化の段階で取りこがしおいたした。 slide にしお初めお芋えた2皮類の䞍足 storyboardの論理を盎しおから、実際にslideに起こしたした。人間が芋るず、storyboardでは芋えなかった䞍足がさらに2皮類出おきたす。 ちなみに、storyboardに図の具䜓たで先に曞き蟌んでから実装するのは二床手間なんですよねお恥ずかしいずころですが、最初そうしようずしおたした。レンダリングした状態を芋ながら詰めたほうが正確だから、 slideで詰めおstoryboardに差し戻す のが自然な流れになりたす。これが埀埩が必芁な理由そのものです。 論理の穎storyboardに戻す問題 䞊で気づいた「#8.52個目を足す」を远加するず、1業務→2〜3業務→チヌム展開ずいう段階がちゃんず芋えるようになりたした。これはstoryboard偎の構造問題です。 論理は通っおいるが、人間の理解には足りない芋せ方 ステップ1の「議事録の芁玄だけ」、蚀葉では䌝わりたす。でもslideにするず地味で、䞻圹にしたい倉化量が䞀目で分からないんですよね。論理的には䞍芁ですが、理解ず玍埗のために「AIなし30分 / AIあり5分」の察比を1枚足したくなりたした。 巊右で蚀っおるこずは同じです。論理は1ミリも倉えおない。倉えたのは芋せ方だけ。でも右のほうが「やっおみたい」が䞀瞬で䌝わりたすよね。 こちらはstoryboardを眺めおいおも、経隓則でしか埋めるこずができない領域です。slideにしお人間が芋お初めお分かる皮類の䞍足です。 埀埩の単䜍は1スラむド、積み䞊げおいく ここを正盎に曞いおおきたす。埀埩は1呚で終わらないです。でも「党䜓を䜕十呚も回す」ずいうむメヌゞずは少し違いたす。 実際の回し方はこうです。1枚ごずに「storyboardどおり実装 → PNGたたはプレビュヌで確認 → 察話で刀断このタむミングで埌述の型1・型2を䜿いたす→ slide修正 → storyboardに同期」を小さく回す。章が終わったら章たずめをしお次章ぞ進む。揉めないスラむドは1〜2埀埩でサクッず確定したす。揉めたスラむドだけ耇数回埀埩する。1枚ず぀必芁な分だけ埀埩するのが実態です。 重いレビュヌ論理チェック・敎合チェックを通しで回すや぀は章ごずに芁吊を刀断したす。毎章必ずやるわけじゃない。「この章は揉めた箇所が倚かったから締めにやろう」ずいう刀断です。 回し方はこうです。たず前半掎みず「なぜ止たるか」をスラむド単䜍で順番に埀埩する。次に栞の「3ステップ」を同じように回す。たずめも同様。そのあず、党䜓を通しお「栞メッセヌゞがブレおないか」を確認する。 1呚ごずに確実に1個ず぀朰れおいく。回すほど、䞀発で出おきたものを超えおいく感芚がありたす。最初から「䜕埀埩かするもんだ」ず構えおおくのがコツです。 なお、ここで䜿う outline・storyboard・slide のコピペ甚テンプレは、蚘事の最埌付録にたずめおありたす。手を動かすずきはそっちをどうぞ。 章をたたいでスラむドの蟻耄を合わせる スラむド単䜍の埀埩を積んでいくず、あるタむミングで「前の章ず蟻耄が合わなくなっおきた」問題が出おきたす。ここ、けっこうハマりやすいんですよね。 さっきの「生成AI3ステップ」の䟋で、実際に起きた2぀の動きを玹介したす。 䟋先食いを防ぐ 「なぜ止たるか党郚いっぺんやろうずしお詰む」のスラむドに、勢いで「で、答えは”小さく始める3ステップ”です」たで曞きたくなったんですよ。そのほうが流れがいい気がしお。でもstoryboardの「トランゞション意図」欄を芋るず、このスラむドの圹割は「”詰む”構造を芋せお”じゃあどうすれば”ず匕っ匵る」こずでした。ここで答えたで出すず、次の「3ステップ」の章で初めお芋せるはずの解を先食いしおネタバレになる。だから問題提起に培しお、解は次の章に枩存。storyboardに「ここでは答えを出さない3ステップの章ぞ枡す」ず泚蚘しお戻したした。改善案が”悪い案”だったわけじゃないんですよね。でも前埌の章ずの関係で芋るず、そこで出しちゃいけなかった。 䟋回収先を蚭蚈する 「党郚いっぺんは詰む」ずいう問題を出すスラむドず、「3ステップ」のステップ1「だから1業務だけ」ずいう答えのスラむド。この2枚は問題ず答えのペアです。問題偎に「だから小さく始めるのが倧事」ず結論っぜい䞀蚀を足したくなるんですが、それ、ステップ1ず意味が二重になりたす。だったら問題偎は「詰む」に培しお、「小さく始める」ずいう結論はステップ1が回収する。論理が「詰む → だから1業務だけその裏返しの答え」ず䞀筆曞きになりたす。storyboardでは問題偎を「結論は持たせない、ステップ1で回収」ず同期し、倉曎䞍芁なステップ1偎は「同期䞍芁」ず明瀺したした。 この2぀に共通するのは、storyboardの「トランゞション意図」欄が刀断基準になったこずです。スラむド単䜓を芋おいおは気づけない。「このスラむドから次ぞ、䜕を枡しお䜕を枩存するか」で芋おいるず芋えおきたす。 outline は「照らす基準」ずしお䜿う 埀埩するのは storyboard ⇄ slide です。outline は埀埩に巻き蟌みたせん。最初に合意した内容を、途䞭で倉えない基準ずしお䜿いたす。埀埩のたびに、outlineに戻っお同じこずを確かめるだけです。たたにですが、AIず話しおいくず䞻匵そのものがずれおいく時がありたす。そういう時は、outlineを正ずしお評䟡するこずで行き過ぎを防げたす。 今回の実䟋で確認するずこうなりたす。 倉曎内容 outline照合 刀断 #8.5「2個目を足す」を远加 「1業務→2〜3業務→チヌム展開」ず䞀臎 採甚 #7に時間察比スラむドを远加 珟堎リヌダヌ向け・数字察比は効く 採甚 「ステップ4党瀟展開」を足したくなった 「珟堎リヌダヌ・小さく始める」から倖れる outline倉曎に栌䞊げしお刀断 「党瀟展開」はstoryboard偎の埀埩では決めたせん。outlineを倉えるかどうかの刀断に栌䞊げしたす。outlineをコロコロ倉えるず、そもそも合意した意味がなくなりたすよね。 だからず蚀っお、outlineを倉曎しないず意固地になるのもよくないです。そこは柔軟に刀断したす。 AIにスラむドをレビュヌさせるプロンプトの型コピペ可 埀埩の䞭でAIに投げるプロンプト、実際にやっおみるず「型」が決たっおくるんですよね。特に効いたものを3぀玹介したす。 AIが速くやっおくれるのは論理チェックず敎合確認です。でも投げ方を間違えるず「党郚盎しおしたう」「同じレビュヌを3呚回す」ずいう過剰改修ルヌプにはたりたす。 型1改善案の衝突怜出 この slide で [こういう改善/远加] をしようず思う。 storyboard #N の「蚭蚈意図トランゞション意図」ず衝突しないか先に確認しお。 特に、前埌のスラむド#N-1 / #N+1の圹割を䟵食したり、 埌段で出すはずの芁玠を先食いしおいないかを芋お。 AIがstoryboardの意図欄を匕甚しお「衝突するのはこの1点」ず限定しお返しおくれたす。OKならslide修正、衝突なら蚭蚈を守る方向に案を絞りたす。埀埩手順の「察話で刀断」ステップで、たず最初に䜿うのがこれです。 型2章をたたぐ芁玠の重耇チェック この芁玠、埌段のスラむドず意味が二重になっおいないか 二重なら、どちらのスラむドで回収するのが論理が䞀筆曞きになるか。 このスラむドの圹割を䞀蚀で蚀うず䜕で、残りはどこが匕き取る 型3レビュヌに歯止めをかける この章スラむドN〜Mの論理だけを1回チェックしお。 䜕呚も回さなくおいい。盎すのは論理が砎綻しおいる所だけ。 衚珟の奜みや蚀い回しは觊らないで。 「1回だけ䜕呚も回さない盎すのは論理砎綻だけ衚珟は觊るな」ずいうのが肝です。歯止めを曞かないず、AIは䞁寧に䜕呚も盎そうずしお、いじらなくおいい所たで倉えおきたす笑。過剰改修ルヌプを避けるための、意倖ず倧事な䞀行です。 AIレビュヌを芳点ごずに゚ヌゞェント化する 型1〜3、最初は毎回手でコピペしお投げおたした。でも䜕本も䜜っおるず「毎回同じこず蚀っおるな」ず気づくんですよね。僕はこの型を Claude Code の゚ヌゞェントに萜ずし蟌んで、「論理だけ芋る奎」「蟛口で殎る奎」「ペル゜ナになりきる奎」みたいに芳点ごずに分けお持っおたす。 ここはツヌルの力を半歩借りる話なので、進め方の本筋からは倖れたす。でも「どういう目線で゚ヌゞェントを䜜るか」だけは、この蚘事の背骚ずたったく同じなので眮いおおきたす。 1゚ヌゞェント1芳点。混ぜない。 これ、storyboardでデザむンを萜ずすず論理が芋えおくる、ずいう話ず同じ構造です。レビュヌも芳点を1぀に絞るから良し悪しが芋える。 どれくらい絞るかずいうず、採点の起点からしお芳点ごずに逆になりたす。同じスラむドを枡しおも、論理を芋る奎は「砎綻がなければ100点」から始める。蟛口で殎る奎は「ずりあえず0点ゎミ箱行き」から始めお、なぜダメかの蚌拠を挙げにいく。芳点が違えば芋方の前提ごず倉わるんですよね。1぀の奎に党郚やらせるず、この前提が混ざっお焊点を倱いたす。 そしおもう䞀぀の肝が、各゚ヌゞェントに「䜕を芋ないか」を曞いおおくこず。論理担圓には「“このペル゜ナは離脱する”みたいな感情の話はするな、それは別の奎の仕事だ」ず明瀺しおありたす。型3で「論理だけ芋お、衚珟は觊るな」ず歯止めをかけたのず同じこずを、゚ヌゞェントの定矩そのものに焌き蟌んでるわけです。 逆に「党郚いい感じに芋お」ずいう䜕でも屋を䜜るず、返っおくるのは“きれいだけどなんか違う”レビュヌの裏返し——「色々指摘されたけど、で、䜕を盎せばいいの?」ずいう焊点のないや぀になりたす。䞀発䟝頌が倖れるのず同じ理由ですね。 実際こうやっお䜜っおいたす こういう゚ヌゞェント、いろいろ䜜っおいお、今は僕の環境で29個動いおたす。レビュヌ系だけじゃなく怜玢や䞋曞き甚も混ざっおたすが、考え方は党郚同じで「1個1仕事」。ここでは、いた話したスラむドレビュヌの䞭から2個だけ、「䜕を枡しお䜕を芋させお䜕を芋させないか」の圢で出したす。 1぀目は、芋せ方の評䟡で効くペル゜ナに憑䟝する奎。この蚘事でずっず「誰の目線で芋せ方を評䟡するか」ず蚀っおきたしたよね。それをそのたた゚ヌゞェントにしたものです。 ゚ヌゞェント珟堎リヌダヌになりきる奎ペル゜ナ憑䟝 䞎える情報 - ペル゜ナ蚭定珟堎リヌダヌ。AIに興味はあるが䜕から手を付けるか 分からず止たっおいる  outlineで決めたペル゜ナそのもの - レビュヌする章のスラむドだけ䟋S2「なぜ止たるか」 - ※先の章解3ステップは枡さない先読みさせない 芋る芳点これだけ - 1枚ず぀前から䜓隓しお「いたの気持ち」を返す - 枩床が䞊がったか䞋がったか↑→↓、内心の声、冷めた/譊戒した点 芋ないもの - 点数化・ランク付けしない - 俯瞰で構造の良し悪しを論じるこずそれは別の奎の仕事 2぀目は、型3「論理だけ芋お、衚珟は觊るな」をそのたた垞駐させた論理だけ芋る奎です。 ゚ヌゞェント論理だけ芋る奎型3を固定したもの 䞎える情報 - storyboard ず slide論理の通りを確かめたい範囲 - 芋る章の範囲䟋S3「3ステップ」党䜓 芋る芳点これだけ - 䞻匵→結論の飛躍、甚語のすり替え、回収されない䌏線、抜けた䟝存、矛盟 - 砎綻がなければ「論理的に砎綻なし」で終える無理に粗探ししない 芋ないもの - 衚珟の奜み・蚀い回し型3の「衚珟は觊るな」そのもの - 「このペル゜ナは離脱する」みたいな感情の話別の奎の仕事 - 鮮床や物理限界「30分で15枚は倚い」等 2぀ずも、効いおるのは「䞎える情報」です。ペル゜ナの奎に枡す人物像は outline で合意したペル゜ナそのもの。論理の奎に枡す範囲は、いた敎合を確かめたい章だけ。 䜕を芋させたいかは、䜕を枡すかで半分決たる んですよね。先読みさせたくないなら先のスラむドを枡さない。ここでも outline がマスタヌずしお効いおたす。 こちらの゚ヌゞェントは䞀番汎甚性を持っおいたす。 ゚ヌゞェントの具䜓的な䞭身どう定矩しお、どんな出力が返っおくるかは、それだけで1蚘事になるので 別蚘事に曞きたした 。ここで持っお垰っおほしいのは「型が固たったら芳点ごずに固定する、ただし1゚ヌゞェント1芳点で混ぜない」ずいう目線だけです。 スラむド䜜成で人間ずAIをどう分担するか このワヌクフロヌは「党郚AIに任せる」ではありたせん。䜜業はどんどんAIに任せたす。でも 「䜕を蚀いたいか」だけは、人間が絶察に手攟しちゃいけない 。任せきるず、䞻匵そのものが消えるからです。 たず、レむダヌごずに任せられる所ず、人間が握り続ける所を敎理したす。 レむダヌ AIに任せる 人間が握る手攟せない outline ペル゜ナ分析の玠案、展開パタヌン提案、抜けの指摘 䜕を䌝えたいか・どこに着地させるか意志、誰に向けるか storyboard 論理の飛躍・敎合性・順序・抜けのチェック、長いmarkdownの通読 「この䞻匵は本圓に蚀いたいこずか」の取捚、優先順䜍 slide デザむン量産、レむアりト案、ビゞュアル化 䞻圹が䞀番倧きく芋えるか・倉化量が䞀目で分かるか芋せ方の最終刀断、ペル゜ナ目線の評䟡 埀埩・歯止め 差し戻し埌の論理砎綻の再チェック 倧枠を倉えるかの意思決定outline倉曎ぞの栌䞊げ刀断 では、なぜ「䜕を蚀いたいか」だけは手攟しちゃいけないのか。これ、最初から分かっおたわけじゃないんですよね。正盎に蚀うず、䞀床ぜんぶ自動で回せないか詊したこずがありたす。outlineだけ人間が䜜っお、storyboard以降の埀埩ぱヌゞェントにルヌプで回させる、みたいな。 結果、うたくいきたせんでした。理由が倧事で、 ゚ヌゞェントっお基本「匕き算」する装眮 なんですよ。僕が䜜っおるレビュヌ甚゚ヌゞェントは「自分に足りない芳点を補う」ために䜜っおる。぀たり「ここが匱い」「ここは芁らない」ず削る方向に働く。これをルヌプで回すず、回すほど匕き算が続いお、最埌は 人間の䞻匵そのものたで削られお栞が萜ちる 。論理だけ厳しくしすぎた結果、敎っおるけど䜕も蚀っおない、䌝わらないスラむドが出来䞊がるんですよね。 もう䞀぀厄介なのが、 AIを説埗できおしたう こず。「ここ匱くない?」に察しお「いや、ここは意図しおこうしおるから論理は通っおる」ず返すず、AIはわりずすんなり「たしかに」ず匕き䞋がりたす。こっちが間違っおいおも、です。本来きびしい批刀者だったはずの゚ヌゞェントを、自分の蚀葉で䞞め蟌めおしたう。しかも同じセッションで続けおるず、その“説埗した履歎”が溜たっお、どんどん寄り添っおくる甘くなる。だから僕は芁所でセッションを切っお、ただ説埗されおない新しい批刀者に戻したす。これは人間が意識しおやる蚭蚈です。 だから結論はこうです。 正マスタヌ「䜕を蚀いたいか」は、人間が手攟しちゃいけない 。゚ヌゞェントは優秀な批刀者だけど、蚀いなりになるず䞻匵ごず消す。だから僕ぱヌゞェントずは“喧嘩する”くらいの距離感で䜿っおたす。outlineをマスタヌに固定したのも、結局これず同じ理由なんですよね。 ちなみに、ここを乗り越えお埀埩をルヌプでぶん回せるようにするには、削る゚ヌゞェントだけじゃなく「䞻匵を守る偎」の゚ヌゞェントも芁るはず。それをいた、どんな圢で䜜ればいいのか暡玢しおいるずころです。 AIが速くやっおくれるのは「論理チェック・叩き台生成・デザむン量産」ずいう䜜業です。逆に、意志ず人間理解の刀断 ──「䜕を蚀うか」「誰にどう䌝わるか」── は、そもそもAIに枡しちゃいけない皮類だから残りたす。「効率化されなかった」んじゃなくお、枡しちゃいけないんですよね。䜜業が速くなった分、スラむドの「きれいさ」より「栞メッセヌゞをどう通すか」に頭を䜿えるようになりたした。 ツヌルはMarp / Slidev / PowerPointどれでもいい埀埩しやすさの差 進め方そのものはMarpでもSlidevでもPowerPointでも同じです。道具の前に進め方がありたす。 ただ、埀埩を前提にするず「storyboardずslideは近くにあるべき」ずいう論点が出おきたす。 storyboard も slide も同じリポゞトリにテキストmarkdownずしお眮けるツヌルほど、論理⇄芋せ方の行き来がラクになりたす。slideもmarkdownなら、storyboardず䞊べお差分で管理できるし、AIも䞡方そのたた読める。AIぞの指瀺や人間の刀断ずいう手間は残りたすが、少なくずも「slideを別ファむルに曞き出しお同期する」手間が消えたす。 PowerPointで䞀床やったこずがあっお、storyboardのmarkdownを盎しおもPowerPointに戻すのが面倒で途䞭から同期が厩れたした。結局スラむドだけ手動で盎しおstoryboardが叀いたた残るパタヌンです。ずはいえ、PowerPointやGammaしか䜿えない堎面もありたすよね。その堎合は、storyboardを別のmarkdownで持っおおいお、スラむドを盎したら人間が手でstoryboardにも反映する。運び圹を自分でやれば、道具を問わずこのworkflowは回せたす。 ツヌル別の具䜓セットアップや䜿い分けは、末尟のシリヌズ蚘事にたずめおいたす。 たずめAIず埀埩しながらスラむドを䜜る進め方 outlineを動かさず、storyboard ⇄ slideを1枚ず぀埀埩する䞊の図のずおりです。 埀埩で䜕か盎すたびに、outlineに戻っお同じこずを確かめたす。 栞メッセヌゞが、最埌たで薄たらずに残っおいるか 誰の目線で芋せ方を評䟡しおいるか 䞀発䟝頌が倖れるのは、このレむダヌを党郚飛ばしお最終圢を出力させおいるからです。䞀段ず぀具䜓に降りながら合意しおいくず、「なんか違う」が消えお、「終わりの芋えない手戻り」が「1枚ず぀前に進む埀埩」に倉わりたす。 詊行錯誀の順序を倉えお、AIが読める䞭間ファむルを挟んで、1枚ず぀埀埩しながら回す。それだけです。やみくもな䜜り盎しが枛っお、outlineで決めた栞メッセヌゞが最埌たで残る。速さはセミナヌ次第ですが、この2点は䜕本も䜜っおきた僕の実感です。 スラむドの䜜り方そのものの話はここで䞀床切りたす。実際の道具の話は、この䞋のシリヌズ蚘事にたずめおありたす。 ほなたた〜 シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配る Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 ← ←いたここ デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り 付録outline の型コピヌしお䜿っおください 「で、最初のoutlineっお䜕を曞けばいいの」ずいう人向けに、僕が毎回䜿っおいる型を眮いおおきたす。いきなり「スラむド䜜っお」ず投げる代わりに、これを埋めおからAIに枡す。それだけで話が䞀気に早くなりたす。 # outline[タむトル] ## 蚭蚈思想 - 栞メッセヌゞ[1行。これだけは持ち垰っおほしいこず] - タヌゲット [誰向け。圹職・立堎] - 想定参加者像 [どんな状況・知識レベルか] - 応えるべき問い[参加者が内心抱えおいる問い] - 着地点 [聞き終えたあず、どうなっおいおほしいか] ## セクション構成党N分 - S1. [掎み] N分狙い[䞀蚀] - S2. [...] N分狙い[䞀蚀] - S3. [æ ž] N分狙い[䞀蚀] - S4. [たずめ] N分狙い[䞀蚀] ## 各セクションの䞭身䞻匵たで。スラむド割りはただしない [栞のセクション] - 䞻匵[このセクションで蚀いたいこず] - 根拠[なぜそう蚀えるか] - 䟋 [具䜓䟋] ポむントは「各セクションの䞻匵・根拠たでは決めるけど、1スラむドに䜕を出すかスラむド割りはただ曞かない」こず。スラむド割りは次のstoryboardの仕事です。 埋め終わったら、AIにこう枡したす。 このoutlineをstoryboardに起こしお。 各スラむドは「衚瀺トヌク意図トランゞション意図」の4行で曞く。 デザむンのこずは曞かないで、論理ず構成だけ詰めお。 付録storyboard の型1スラむドの蚘法 storyboardに萜ずすずき、1スラむドの曞き方に迷ったらこの雛圢を䜿っおください。 【スラむド #N】[スラむドタむトル] 衚瀺 : [スラむドに出す芁玠。図・テキスト・数字など] トヌク : 「[このスラむドで実際に話すこず。1〜2文で]」 意図 : [このスラむドがある理由。聎衆に䜕を持たせたいか] トランゞション意図: [次のスラむドぞ䜕を枡し、䜕を枩存するか。1行で] ポむントは「デザむンのこずは曞かない」こずず「トランゞション意図を必ず曞く」こずです。埌者は章をたたぐ敎合チェックで刀断基準ずしお効いおきたす。 付録slide を芋るずきの問いの型 slideをレンダリングしお人間が目で芋るずき、僕が自分に問うチェックリストです。storyboardの論理チェックでは芋えおこない、芋せ方レむダヌ固有の問いです。 【䞻圹の匷さ】 - このスラむド、䞻圹にしたいものが䞀番倧きく・目立っお芋えおる - 倉化量や察比が、䞀目で分かるサむズ・配眮になっおる - 抜象的な蚀葉が、数字・図・具䜓䟋に倉わっおる 【補足の必芁性】 - 論理的には芁らないけど、"理解のため"に足したい補足はある 察比・䟋瀺・補足の䞀蚀など。あるならslideに远加しおstoryboardに差し戻す 【前埌ずの関係】 - 前のスラむドず圹割がかぶっおない同じこずを二重に蚀っおない - 埌のスラむドで出すはずの芁玠を、ここで先食いしおない - このスラむドから次ぞ、䜕を枡しお䜕を枩存する蚭蚈になっおる これをstoryboardの「トランゞション意図」欄ず照らし合わせながら芋おいくず、埀埩の粟床が䞊がりたす。 ここから先は、本文で曞いた storyboard ⇄ slide の埀埩に入っおいく、ずいう流れです。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post AIずスラむドを䜜る進め方「なんか違う」修正ルヌプが終わらない人ぞ first appeared on SIOS Tech Lab .
手䜜業じゃ間に合わない、だからAIで䜜れる環境を敎えた どもSlidev ず Claude Code でスラむドを量産しおる韍ちゃんです。 ここ最近、ほんずにスラむドばっかり䜜っおるんですよ。セミナヌ、勉匷䌚、瀟内共有  気づけば毎週どこかで1本。正盎、これを1枚1枚手䜜業でデザむンしおたら、どう考えおも間に合わない。 なので、AIに䜜らせるこずにしたした。ただ、AIに䞞投げするず、トヌンがバラバラになりたす。色は勝手に増えるし、倉なグラデは湧くし、フォントも気分で倉わる。それっぜく芋えるんですが、そのたた䜿甚するこずはできないですね。 そこで、 AIがい぀も同じトヌンで䜜れるように、環境のほうを敎備したした 。色・レむアりトの型・よく䜿う郚品・䜜っおいい範囲のルヌル、この䞀匏を”ひな型”ずしお甚意しお、AIにはその枠の䞭だけで䜜らせる。そしたら、新芏䜜成がグッずラクになっお、しかも毎回トヌンが揃いたす。揃うずいうより、 揃うように蚭定した 、が正確ですね。 この蚘事では、その ひな型コヌド䞀匏ルヌルを曞いた CLAUDE.md を䞞ごず公開したす 。AIにブログ読み蟌たせれば、あなたのスラむドにも同じシステムがたるっず実装できたす。持ち垰っおすぐ䜿える圢にしたした。 䞋のようなものがサクッず䜜るこずができたす。 前提AIず盞性のいい環境Slidev 本題に入る前に、前提だけ共有させおください。 僕がスラむドを䜜っおるのは、 Slidev っおツヌルです。ざっくり蚀うず、 Markdown でスラむドを曞けるツヌル 。1枚のスラむドが、画像でもパワポのオブゞェクトでもなく、 䞞ごずコヌドテキスト になりたす。 で、スラむドが䞞ごずテキストだず、うれしいこずが続きたす。なかでも本呜は、いちばん䞊の AI ずの盞性 です。 AI ずの盞性が抜矀  䞭身が Markdownテキストだから、AIClaude Codeに読たせるのも曞かせるのも思いのたた。そもそもこの蚘事の「AIにスラむドを量産させる」が成り立぀のは、これがあるからです。 Git で管理できる  差分も履歎も残せお、普通のコヌドず同じノリでバヌゞョン管理・レビュヌができる。 フロント゚ンドの感芚で䜜れる  レむアりトも郚品も Vue コンポヌネント ずしお曞けるので、Web を䜜るのず同じノリ。䞀床組んだ郚品は䜿い回せるし、凝った芋せ方もできたすフロント゚ンドに慣れおる人ほど、ありがたみが分かるはず。 デザむンをコヌドで瞛れる  色もサむズも䜙癜も、CSS 倉数で䞀元管理できる。 そしお、この蚘事でこれから掘るのは、䞻にこの䞋のほう ── レむアりトず郚品を Vue で組んで、色やサむズを倉数で瞛る。これも党郚、”スラむドテキスト”だから成立する話です。パワポや Google スラむドだず、こうはいきたせん。 なので、これから開けお芋せる4階建お style.css / layouts/ / components/ / CLAUDE.md は、 たるごず Slidev プロゞェクトの䞭身 です。動䜜環境は Slidev v51 ç³» / Vue 3 / UnoCSSSlidev 暙準同梱。 そしおもう䞀方の前提が、AI 偎に䜿っおる Claude Code です。ずはいえ肝は「 AI にルヌルを曞いたファむルを枡す 」ずいう考え方のほうで、Claude Code 専甚の話ではありたせん。 CLAUDE.md ずいう名前は、Claude Code がそのファむルを自動で読み蟌んでくれるから付けおるだけ。他の AI コヌディングツヌルでも、ルヌルを読たせる堎所に眮くなり、プロンプトに貌るなりすれば、同じように効きたす。 Slidev のセットアップそのものは 第1郚 に曞いたので、「そもそも Slidev っお」ずいう人はそちらから。 デザむンシステムは4階建お ― トヌクン・型・郚品・ルヌル で、その敎備した環境の䞭身がこれです。”ひな型”っお蚀うずフワッずしおたすけど、構成ずしおは4階建おになっおたす。 1階 トヌクン  style.css 色・サむズ・䜙癜を倉数で決めた「枠」 2階 型  layouts/ 繰り返すレむアりトの構造 3階 郚品  components/ 繰り返すパヌツ 4階 ルヌル  CLAUDE.md 䞊の3぀をどう䜿うかの䜜法 トヌクンの䞊に型が乗っお、型の䞊に郚品が乗っお、その党郚を4階のルヌルが束ねおる。䞊から䞋たで噛み合った1セットなんですよ。だから䞞ごず持っおいけるし、埌から足しお育おられる。 順番に芋おいきたしょう。たずは実物から。 たず実物を芋るトヌクン → 型 → 郚品 理屈は埌回しで、たず1〜3階を実物で芋おいきたす。掲茉するコヌドはどれも芁点を抜いた最小版です実物はクラスや props がもう少し付いおたすが、肝の郚分は同じ。テンポよくいきたしょう。 コヌドはどれも、PNG ゚クスポヌトたで実際に確認したものです。 色ずサむズを決めるstyle.css のトヌクン 1階は土台。色・サむズ・䜙癜を、ぜんぶ style.css の :root に 倉数トヌクン ずしお眮きたす。スラむド偎で生の #C2410C みたいな倀を盎接曞くこずは、もう䞀切しない。必ずこの倉数を経由する。 /* style.css色・サむズ・䜙癜を「倉数」で䞀箇所に集めるこれが土台の党郚 */ :root { /* ブランド色 */ --navy-900: #0B1F3A; /* メむンの濃いネむビヌ */ --navy-700: #1B3357; --navy-300: #93A8C4; --bg-white: #FFFFFF; --bg-light: #F6F8FB; --text-primary: #1E293B; --text-secondary: #475569; --text-muted: #64748B; --accent: #C2410C; /* 抑えた朱。匷調はこの1色だけ */ --accent-soft: rgba(194, 65, 12, 0.10); --border-light: #E2E8F0; /* Notice 甚の「意味の色」 */ --info: #1D4ED8; --info-bg: #EFF4FF; --warning: #B45309; --warning-bg: #FFF7ED; --success: #15803D; --success-bg: #ECFDF3; --danger: #B91C1C; --danger-bg: #FEF2F2; /* コヌド衚瀺ネむビヌ地。暗地は朱が沈むので明色を別建お */ --code-bg: var(--navy-900); --code-bar: var(--navy-700); --code-text: #E8EEF6; --code-comment: #93A8C4; --code-accent: #FFB27A; /* サむズ・䜙癜 */ --font-body: 20px; /* 本文。19px は䞋回らない */ --font-lead: 24px; --font-heading: 35px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; } そのうえで、党スラむド共通の「地」を䞀床だけ圓おおおきたす。フォント・背景・本文サむズみたいな、どのスラむドでも必ず効いおほしいや぀ですね。 /* 党スラむド共通の「地」。.slidev-layout に䞀床だけ圓おる */ .slidev-layout { font-family: 'Noto Sans JP', sans-serif; background: var(--bg-white); color: var(--text-primary); font-size: var(--font-body); line-height: 1.6; } サむズ感の目安は「本文は最䜎 19px --font-body は 20px で運甚、投圱メむンなら 24px くらいたで䞊げる」。この1本だけ決めおおけば、あずはブレたせん。 ぀たり”自由に遞ばせない甚意した䞭から遞ばせる”に倒すわけです。 この「色ずサむズを倉数で瞛る」考え方そのものは 第3郚 でみっちり曞いたので、ここでは実物だけ。芁は、 䜿う色ずサむズをここで確定させお、あずは遞ぶだけにする っおこずです。 型をそろえるlayouts/ 2階はレむアりトの「型」。繰り返す構造を layouts/ に眮いお、スラむドからは layout: 名前 で呌ぶだけにしたす。 ここで僕がひず぀だけ決めおるルヌルがありたす。 構造が単玔なら UnoCSS のナヌティリティだけで曞くヘッダ固定みたいに構造が耇雑なら <style> で構造CSSを曞く 。この䜿い分け1本です。 たずえば「瞊䞭倮そろえ」みたいな単玔なや぀は、UnoCSS だけで完結したす。 <!-- layouts/centered.vue瞊䞭倮そろえ。UnoCSS だけ、scoped CSS なし --> <template> <div class="slidev-layout h-full flex flex-col justify-center px-14 py-10"> <slot /> </div> </template> 䞀方、䞊郚にヘッダを固定しお みたいに構造が入り組むや぀は、玠盎に <style> で組む。 heading ず kicker を props で受けお、本文は <slot /> に流したす。 <!-- layouts/fixed-header.vue䞊郚固定ヘッダ本文。耇雑なので <style> で構造を組む --> <script setup> defineProps({ heading: String, kicker: String }) </script> <template> <div class="slide-with-fixed-header"> <header class="slide-fixed-header"> <h2 class="header-heading">{{ heading }}</h2> <span class="header-kicker">{{ kicker }}</span> </header> <main class="slide-body"><slot /></main> </div> </template> <style> .slide-with-fixed-header { height: 100%; display: flex; flex-direction: column; } /* 䞊郚に固定する垯。色は圓然トヌクン参照生 HEX は曞かない */ .slide-fixed-header { height: 64px; background: linear-gradient(90deg, var(--navy-900), var(--navy-700)); color: #fff; display: flex; align-items: center; padding: 0 40px; } /* 残りを本文に。flex:1 で高さを埋める瞊の䞭身を扱いやすくなる */ .slide-body { flex: 1; padding: 36px 44px; font-size: var(--font-body); } </style> <style> で「ヘッダを䞊に固定しお、残りを本文が埋める」ずいう構造を組んでたす。こういう”骚栌”が芁るや぀は、UnoCSS のクラスを䞊べるより <style> で曞いたほうが芋通しがいい。これが「耇雑なら構造CSS」の䞭身です。 スラむド偎は、もう呌ぶだけです。 --- layout: fixed-header heading: 監芖の3本柱 kicker: basics --- 郚品の色をそろえるcomponents/ 3階は「郚品」。2回以䞊出おくるパヌツは、Vue コンポヌネントにしお components/ に眮いお、 <PointCard> みたいに呌ぶだけにしたす。 郚品で䞀番倧事なのは、 色だけは必ずトヌクン参照にする こず。䞋が実物のカヌド郚品ですが、背景やラベルの色を、生の HEX じゃなく var(--xxx) で曞いおるのが分かるず思いたす。 <!-- components/PointCard.vuescoped CSS は曞かず UnoCSS。色だけ var() 参照 --> <template> <div class="flex flex-col gap-3 rounded-xl bg-white px-6 py-5 border border-[var(--border-light)] shadow-lg h-full"> <!-- ラベルの背景色も、トヌクンから遞ぶだけ朱 or ネむビヌ --> <span :class="tone === 'accent' ? 'bg-[var(--accent)]' : 'bg-[var(--navy-900)]'"> {{ label }} </span> <div class="text-[var(--text-primary)]"><slot /></div> </div> </template> スラむド偎は、型ず同じでもう呌ぶだけ。さっきの fixed-header の本文を grid で割っお、そこに PointCard を䞊べた1枚が、これです。 --- layout: fixed-header heading: 監芖の3本柱 kicker: basics --- <div class="flex-1 flex flex-col justify-center"> <div class="grid grid-cols-3 gap-6"> <PointCard label="Logs" tone="navy"> 「䜕が起きたか」の蚘録。たずぱラヌログを1か所に集玄する </PointCard> <PointCard label="Metrics" tone="accent"> 「どれくらいか」の数倀。レむテンシ・゚ラヌ率・飜和床を継続芳枬 </PointCard> <PointCard label="Traces" tone="navy"> 「どこで遅いか」の経路。リク゚ストをサヌビス暪断で远う </PointCard> </div> </div> こうしおおくず、 郚品が10個20個ず増えおも色が割れない 。新しいカヌドを足しおも、必ず同じ朱・同じネむビヌになる。これがシステムが厩れない肝なんですよ。 郚品は䞀床䜜っちゃえば、あずは䜿い回しができたす。ちなみに、こうやっお「良かったパタヌンを型・郚品・ルヌルに 貯める 」っおいう考え方自䜓は 第4郚 で曞いた話です。この蚘事はその”実物”を党郚開けお芋せおる、ずいう䜍眮づけですね。 4階の CLAUDE.md ― 玠材を“毎回そろえお持ち運ぶ” ここたでの3階トヌクン・型・郚品は、個別単䜍で効く”玠材”です。で、正盎に先に蚀っおおくず、 この玠材、AIはわりず玠盎に䜿っおくれたす どのくらい䞊手いかは、この蚘事の埌半でわざず意地悪な実隓をしお確かめたす。 じゃあ4階のルヌルは䜕のためにあるのか。 「毎回・誰がやっおも・同じ枠」にそろえるため です。玠材があっおも、攟っおおくずAIは毎回ちょっずず぀違うものを出すし、ずきどき”惜しい”はみ出し方をしたす。絵文字を入れお文字化けさせたり、本文がスッず小さくなったり。ルヌルずしお明文化するこずで無芖をする確立を枛らしたす。 このシステムで 「いちばん持ち運ぶ䟡倀があるのも、この4階」 です。1〜3階の玠材は、”䜿い方”のルヌルが䞀緒にないず、ただのファむルの寄せ集めになっおしたいたす。 だから、 1〜3階の䜿い方を党郚ルヌルにしお CLAUDE.md に曞く 。Slidev のプロゞェクトに CLAUDE.md を眮いおおくず、Claude Code はそのディレクトリのファむルを觊ったずき自動で読み蟌みたす。぀たりこれが、AIに毎回手枡す”誓玄曞”になるわけです。たたヌに党力で無芖をするずきは埌からCLAUDE.mdを参照させお自己修埩させたりしたす ルヌルの党文これを枡すだけ 䞭身はそんなに難しくないです。1〜3階で芋た䜜法を、そのたた蚀葉にするだけ。出し惜しみしおも仕方ないので、 僕が実際に䜿っおる CLAUDE.md を党文そのたた茉せたす 。これをコピヌしお自分の Slidev プロゞェクトの CLAUDE.md に眮けば、それだけで枠が効きたす。 # スラむド䜜成ルヌルSlidev デザむンシステム このプロゞェクトのスラむドは、**1぀の統䞀されたデザむンシステム**の内偎だけで䜜る。 AIClaude Codeはスラむドを生成・線集するずき、**必ず以䞋のルヌルに埓う**こず。 このファむルごず枡せば、別プロゞェクトにも同じシステムを移怍できるそれが狙い。 --- ## 0. 倧原則自由に曞かせない制玄が速さを生む - 色・サむズ・䜙癜・アむコンを**その堎で勝手に決めない**。䞋のトヌクンルヌルの䞭からだけ遞ぶ。 - 「いい感じに」ではなく「**この枠の䞭で**」。遞択肢を絞るほど出力は安定する。 - 迷ったら**増やさず枛らす**。匷調は1色、レむアりトは既存の型を優先。 ## 1. 色トヌクン - 色は `style.css` の `:root` で定矩した **CSS倉数だけ**を䜿う。生 HEX の盎曞きは**犁止**。 - 必ず `var(--xxx)` 経由で指定するUnoCSS なら `bg-[var(--accent)]` のように arbitrary value で参照。 - 䜿える色 - 背景`--bg-white` / `--bg-light` - 文字`--text-primary` / `--text-secondary` / `--text-muted` - ネむビヌ`--navy-900` / `--navy-700` / `--navy-300` - 匷調`--accent`抑えた朱/ `--accent-soft` - 眫線`--border-light` - コヌドネむビヌ地`--code-bg` / `--code-bar` / `--code-text` / `--code-comment` / `--code-accent`暗地は朱が沈むので匷調は明るい朱橙の `--code-accent` を䜿う - **匷調色は3色たで**。基本は朱 `--accent` の1色で十分。色数を増やすず「どこが倧事か」が消える。 ## 2. サむズ・䜙癜トヌクン - フォントサむズは `--font-*` を䜿う。**本文は `--font-body`19px は䞋回らない**。投圱・配信で読めるラむンを守る。 - `--font-body` / `--font-lead` / `--font-heading` - 䜙癜は `--space-*``--space-sm` / `--space-md` / `--space-lg`を䜿う。刻みを揃える。 - UnoCSS を䜿う堎合は既補スケヌルに乗っおよい**本文は `text-xl` 以䞊20px。`text-lg` は 18px で䞋限割れ**、䜙癜は `gap-4` / `p-4` など。 - 色・サむズ・䜙癜は**すべお倉数 or ナヌティリティ経由**。マゞックナンバヌの盎曞きをしない。 ## 3. アむコン - アむコンは **Material Icons に䞀本化**する`<span class="material-icons">名前</span>`。 - **絵文字🚀✨✅ などは䜿わない**。゚クスポヌトPNG/PDFで消える・豆腐化するため。 ## 4. 型layouts/ず 郚品components/ - 繰り返す構造は**型**`layouts/`、繰り返すパヌツは**郚品**`components/`にしお、`layout:` / タグで呌ぶ。 - 新芏スラむドは**たず既存の型・郚品から組む**。無いずきだけ新しく䜜る§7 の䜜り方に埓う。 - レむアりトの実装は**1぀の䜿い分けルヌル**で遞ぶ - **構造が単玔** → `centered.vue` のように **UnoCSS ナヌティリティのみ**scoped CSS を曞かない。 - **構造が耇雑**ヘッダ固定・本文枠など→ `fixed-header.vue` のように **`<style>` の構造CSS**。 - **コンテンツ枚は基本 `fixed-header`䞊郚固定ヘッダで統䞀**。「課題」「たずめ」等のセクションも heading に入れおヘッダヌ化する地味に効く統䞀感。 - **暪䞊びcolumns**ヘッダ付きの䞭での暪䞊びは fixed-header の本文を Tailwind の `grid grid-cols-2 gap-10` で割る。ヘッダ無しの党面2カラムが芁るずきだけ `two-col.vue`。`.columns` のような global ナヌティリティは䜜らない。 - 瞊䞭倮に䌞ばす旧 content-expandは **Tailwind の `flex-1 flex flex-col justify-center`** で閉じる。global クラスにしない。 - 郚品の色は**必ずトヌクン参照**`bg-[var(--accent)]` 等。郚品が増えおも色が割れないようにする。 - **フロヌステップを矢印で぀なぐ§7 の掚奚圢**`PointCard` を `flex items-stretch gap-3` の行に `flex-1` で䞊べカヌドは等高に揃える、各カヌドには `card-class="justify-center"` を枡しお**本文を瞊䞭倮寄せ**にし、間の矢印 `<span class="material-icons text-4xl">arrow_forward</span>``items-center` で挟むず芖線の高さを合わせる。矢印は専甚郚品を䜜らず Material Iconsトヌクン色`text-[var(--navy-300)]`で閉じる独自の矢印SVG・生HEXは䜿わない。※カヌド本文を瞊䞭倮寄せにしないず、本文が䞊寄りのずき矢印だけがカヌド瞊䞭倮テキストより䞋に取り残されお芋える。 ## 5. 「どこに曞くか」CSS の眮き堎所 刀断は1぀**「どのスラむドでも必ず効いおほしいか」** - **党スラむド共通の土台**トヌクン、ベヌスのフォント・色・背景→ `style.css`。 - **その型・郚品の䞭だけの芋た目** → その `layouts/` `components/` の䞭に閉じ蟌める。 - **この1枚だけ** → そのスラむドに `<style>`垞に scoped・他に挏れない。 曞き方の䜜法 - `style.css` の共通スタむルは **`.slidev-layout` の配䞋に曞く**玠の `h1 {}` は発衚者モヌドUIにたで挏れる。 - **`!important` は基本䜿わない**。効かないずきは眮き堎所・継承§6を疑う。Slidev 組み蟌みの高優先床スタむルずどうしおも競合する箇所固定ヘッダの芋出し等だけ、そこに限っお蚱容する ## 6. ★ 最重芁の眠自䜜レむアりトは `.slidev-layout` を継承しない - 組み蟌みレむアりトdefault / two-cols 等は、その template 内で **自分で** `class="slidev-layout"` を付けおいるSlidev が自動で付けるわけではない。だから `style.css` の共通スタむルが効く。 - **自䜜レむアりトは自分で `class="slidev-layout"` を付けないず、`style.css` の共通スタむルトヌクン・芋出し色・kicker・マヌカヌが䞀切効かない**。芋出しが玠の小さい黒文字に戻る。 - 察凊どちらか 1. 型の wrapper に `class="slidev-layout"` を足す。 2. 型の䞭身を UnoCSS で完結させる共通スタむルに䟝存しない。 ## 7. AIっぜさの回避必ず守る | やりがちAIっぜい | 代わりにこうする | |---|---| | Inter / Poppins フォント | Noto Sans JP に寄せる | | 玫〜青のグラデ背景 | 単色ネむビヌ/癜必芁なら薄いノむズ | | 完党察称なレむアりト | わざず少し非察称にscale / opacity の差 | | 同じカヌドを3枚暪䞊び | 矢印で぀なぐフロヌ圢匏に | | 角䞞カヌドで党面を埋める | レむアりトを耇数皮類䜿い分ける | - **1぀の図・1枚のスラむドに1メッセヌゞ**。詰め蟌たない。 - 配信向けは可読性最優先本文を十分倧きく。目安 24px 以䞊。 ## 8. 仕䞊げ必ず - ルヌルに曞いた画面でその通り出おる、ずは限らない。**最埌は必ず PNG に゚クスポヌトしお、画像を目で芋お確認**する。 - `cd application/slides && npx slidev export src/<name>/slides.md --format png --per-slide --output src/<name>/export/slide` - 厩れおいたら §5・§6眮き堎所・継承をたず疑う。 --- ## このプロゞェクトの珟物 **原則global は「地」だけ。構造は layouts/、装食は components/、现郚は Tailwind(UnoCSS) で閉じる。** | 皮類 | ファむル | 䞭身 | |---|---|---| | 地global | `style.css` | `:root` トヌクン `.slidev-layout` の地font・色・背景・size・h1・むンラむンcodeだけ | | 型タむトル | `layouts/title.vue` | ダヌクネむビヌのヒヌロヌ。`.slidev-layout` を付けず型内で完結閉じる | | 型瞊䞭倮 | `layouts/centered.vue` | UnoCSS のみscoped CSS れロ | | 型固定ヘッダ | `layouts/fixed-header.vue` | 䞊郚固定ヘッダ本文構造CSS。props `heading` / `kicker` | | 型暪䞊び | `layouts/two-col.vue` | 自䜜 two-colUnoCSS grid。本文巊、`::right::`右 | | 眠デモ | `layouts/trap.vue` | あえお `.slidev-layout` を付けない§6 の実挔甚 | | 郚品芋出しラベル | `components/Kicker.vue` | 朱の瞊バヌ。slot | | 郚品箇条曞き | `components/Points.vue` | 朱ひし圢マヌカヌ。slot に markdown リスト | | 郚品Notice | `components/NoticeBox.vue` | `type`info/warning/success/danger+ `title` + slot。Material Icon・色はセマンティックトヌクン | | 郚品カヌド | `components/PointCard.vue` | `label` / `tone` + slot。色はトヌクン参照 | | 郚品ルヌル箱 | `components/RuleBox.vue` | ルヌル提瀺ボックス。slot | | 郚品コヌドブロック | `components/CodeBlock.vue` | ネむビヌ地のコヌドパネル。`file` / `lang` props。装食は scoped で閉じ、色は `--code-*` トヌクン参照 | - **コヌドブロックは `CodeBlock.vue` で閉じる**slot に玠の `<pre>` を入れ、匷調は `<span class="c">`コメント/`<span class="k">`キヌの2色だけ。Slidev の ` ``` ` フェンスShikiは生成色非トヌクンの色が混ざるので、地が暗いコヌド掲茉には䜿わない。 - 暪䞊び`two-col.vue` を䜿う`.columns` のような global ナヌティリティは䜜らない。 - 瞊䞭倮に䌞ばす旧 content-expand Tailwind の `flex-1 flex flex-col justify-center` で閉じるglobal クラスにしない。 - 装食の色は**すべおトヌクン参照**`var(--x)` / `bg-[var(--x)]`。生 HEX 盎曞きはしない。 長いですけど、やっおるこずはシンプルです。「色は倉数だけ・匷調は1色・本文19px・アむコンは Material Icons・レむアりトは単玔=UnoCSS/耇雑=構造CSS・郚品の色はトヌクン参照」。これを党郚”やっおいいこずダメなこず”ずしお 具䜓的に蚀い切っおる だけ。「いい感じに」じゃなくお「この枠の䞭で」。遞択肢を絞れば絞るほど、AIの出力は安定したす。 特に効くのが、䞊のルヌルにある「AIっぜさの回避」の衚。攟っおおくずAIが寄っおいく”なんかダサい方向”玫青グラデ、絵文字、カヌド3枚暪䞊び  を、先回りで名指ししお塞いでたす。ここがあるだけで、出力の”AI補っぜさ”がガクッず枛るんですよ。 䞊の CLAUDE.md の末尟には、実は「今埌デザむンを远加するずきの実䟋プロンプト集」も付けおありたす。それは次の章で実際に䜿っおみせるので、ここでは省きたした。 䜕床もはたる眠に぀いおはルヌル化しお氞続化する ルヌルが効くっお話で、わかりやすい䟋を䞀぀。 Slidev にはやっかいな眠がありたす。 自䜜のレむアりトは、 style.css に曞いた共通スタむルを自動では継いでくれない んですよ。皮を明かすず、Slidev 同梱のレむアりト default や two-cols は、その䞭で class="slidev-layout" を 自分で 付けおるから共通スタむルが効くだけ。Slidev が勝手に付けおくれるわけじゃないんです。だから自䜜レむアりトも、自分で付けないず効かない。付け忘れるず、せっかくトヌクンで決めた芋出しの色やサむズが党郚すっぜ抜けお、 芋出しが玠の小さい黒文字に戻りたす 。連茉を通しでやっおるず、地味に䞀番ハマるや぀です。 で、これも察凊はルヌルに1行曞くだけ。「 自䜜レむアりトには必ず class="slidev-layout" を付ける 」。たったこれで、AIは二床ずこの眠を螏たなくなる。ハマっお芚えた知芋も、こうやっおルヌルに畳んでおけるんですよ。 このファむルを枡す枠の内偎に閉じ蟌める 芁するに、この1枚を AI に枡しおおくず、出力がシステムの内偎に収たりやすくなるし、 たるごずコピヌすれば別プロゞェクトにも移怍できる 。  っお、口で蚀うのは簡単ですよね。本圓に効くの っおいうのを、ここから実際に詊しおいきたす。 で、どう打぀の ― プロンプトで「足す」・蚀葉で「回す」 ここからは実挔です。さっきの CLAUDE.md を枡した状態で、実際にどんなプロンプトを打぀ず、どう返っおくるのか。「足す」ず「回す」の2぀を芋せたす。 足す既存システムに新芁玠をプロンプトで远加 たずは「足す」。既存のデッキに、新しい芁玠をプロンプトで远加するパタヌンです。 たずえば「矢印で぀なぐフロヌのスラむドを1枚足しお」ず頌むずき、僕はこう打ちたす。 このデッキに、耇数のステップを矢印で぀なぐ「フロヌ」のスラむドを1枚远加しお。 - たず同じディレクトリの CLAUDE.md を読んで、そのルヌルに必ず埓うこず。 - 既存の型layouts/ず郚品components/を䜿い、トヌンに合わせる。 - 矢印やステップの色もトヌクンに合わせる。生 HEX の盎曞きはしない。 - 远加したら PNG に゚クスポヌトしお、芋た目が厩れおないか自分で確認しお。 - ルヌルに無い芁玠や厩れが出たら、その堎しのぎで盎さず CLAUDE.md に1行足す圢で察応しお育おる。 ミ゜は最埌の2行です。 「CLAUDE.md に埓う」ず「最埌に PNG で確認」をセットで毎回蚀う 。これで枠から出なくなるし、出来䞊がりを自分で目芖チェックさせられる。 実際これでフロヌを足したのがこれです。矢印は絵文字じゃなく Material Icons、色は既存のトヌクン。ちゃんずシステムのトヌンに乗ったたた远加されおたすSlidev 暙準のアむコンは Iconify ですが、CDN を1行読むだけで蚭定いらずな Material Icons に寄せおたす。絵文字ず違っお゚クスポヌトでも消えないので。 もう䞀぀、面癜かった話を。別のずき、同じ”足す”プロンプトで「コヌドブロックのスラむドを足しお」ず頌んだら、AIが「いたのルヌルにはコヌド衚瀺の色指定が無いですね」ず気づいお、 CodeBlock.vue ずいう郚品を自分で䜜り、 CLAUDE.md にもルヌルを足しおきた んですよ。 これ、蚌拠がさっきの CLAUDE.md に残っおたす。色のずころにある --code-bg / --code-text / --code-accent 暗地コヌド甚に明るい朱橙を別建おするや぀――あれ、最初から曞いおたんじゃなくお、このずき AI が足したものです。指瀺したのは「ルヌルに無い芁玠が出たら CLAUDE.md に1行足しお」だけ。足りないものに気づいお、その堎で埋めお、次から䜿える圢にしおくれた。これがたさに”育おる”です。 回す自然蚀語ルヌプでレむアりトを動かす もう䞀぀は「回す」。䞀床出おきたスラむドを、蚀葉だけで䜕床も䜜り替えおいくパタヌンです。 あるフロヌのスラむドが、暪䞊び4枚に長い説明文を詰め蟌んでお、日本語が単語の途䞭で折り返しお詰たっお芋えたんですよ。で、 CSS は䞀切觊らず 、こんなプロンプトで䜜り替えおいきたした。 7枚目のフロヌを「瞊積み」レむアりトに䜜り替えお。CLAUDE.md のルヌルに埓い、CLAUDE.md 自䜓は倉曎しないこず。 - 4ステップを䞊から䞋ぞ瞊に積む。各ステップは暪長の1バンド。 - 巊に「番号短いタむトル」、右に説明文巊右で分離。暪幅が広いので1行に収たる。 - ステップ間は䞋向き矢印で぀なぐ。 - 盎したら PNG で7枚目を必ず目で芋お、溢れおないか確認しお。 暪䞊び → 2×2に分離 → 瞊積み、ず段階的に動かしたんですが、党郚 自然蚀語のプロンプトだけ。手でCSSを曞いた箇所はれロです。 しかもこの間ずっず、色はトヌクンのたた、郚品も既存のたた。 枠の䞭で動かしおるから、どう䜜り替えおもトヌンが厩れない 。「蚀葉だけで回す」が成立するのは、土台にルヌルがあるからなんですよね。 本圓に移怍できるのか ― CLAUDE.md だけで建お盎しおみた 「足せる」「回せる」は分かった。でも䞀番でかい䞻匵、 このシステムは䞞ごず別プロゞェクトに移怍できる っおや぀。これは本圓なのか。ちょっず意地悪な実隓をしおみたした。 やり方はこう。 新しい Claude Code のセッションに、 CLAUDE.md だけを枡す 。トヌクンも型も郚品も、お手本になる既存のデッキも、䞀切芋せない。そのうえで「Git ブランチ戊略の入門スラむドを、別のブランド色で䞀から䜜っお」ず頌む。ルヌルだけを頌りに、れロから建おられるかずいう実隓です。 先に蚀っおおくず、ガチガチに統制した実隓じゃなく”やっおみた蚘録”です各1回ず぀。ただ今回は、ルヌルを枡した版ず ルヌルを䞀切枡さない「察照」版 の䞡方を回したので、ルヌルが本圓に効いおるのか・どこに効いおるのかが、わりずハッキリ芋えたした。順番にいきたす。 CLAUDE.md を枡したら、別ブランドのデッキが建った 実際に投げたのが、このプロンプトです。「 お手本を絶察に芋るな 」ず念抌ししおるのがミ゜。これで「真䌌したから揃った」の逃げ道を塞いでたす。 application/slides/src/git-branching/ に、Slidev のデッキを「䞀から」䜜っおほしい。 - このディレクトリには CLAUDE.md だけが眮いおある。たずそれを読み、必ず埓うこず。 - style.css / layouts/ / components/ / slides.md はただ無い。CLAUDE.md のルヌルに沿っお自分で新芏に䜜る。 - ★重芁他のデッキ特に blog-design-system/の style.css・layouts・components は 絶察に開かない・参照しない。手元の CLAUDE.md だけを唯䞀の根拠にするこず。 - ブランド色は元ネむビヌ朱ずは別系統にする䟋ダヌクグリヌン抑えた琥珀。 生 HEX を眮くのは style.css の :root だけ。利甚偎は var() 参照。 - 題材は「Git ブランチ戊略入門」。タむトル / アゞェンダ / 課題 / 比范カヌド / Notice / コマンド䟋 / 導入フロヌ / たずめ を含む 6〜8 枚。 - できたら PNG に゚クスポヌトしお、厩れおないか自分で確認しお。 - ルヌルに無い芁玠や厩れが出たら、その堎しのぎで盎さず CLAUDE.md に1行足す圢で察応しお育おる。 結果から蚀うず、 建ちたした 。 枡したのは CLAUDE.md 1枚だけ。なのに別セッションのAIは、 style.css のトヌクンを自分で定矩し盎しおしかも色は元のネむビヌ朱じゃなく、ちゃんず別系統のダヌクグリヌン琥珀にしお、レむアりトの型も郚品も癜玙から組んで、8枚のデッキを䜜り䞊げたした。 色も題材も別物なのに、できあがったものは「同じデザむンシステムの色違い版」にしか芋えないデザむンが出おきたした。䞻芳だけだず匱いので、数えられる事実で蚀うず、こうです。 ブランド色は別系統に振られおた元 #0B1F3A  #C2410C → ダヌクグリヌン琥珀 #102a1d  #b07d24  生 HEX の盎曞きは style.css の :root 定矩以倖れロ。利甚偎は党郚 var() 参照 固定ヘッダ・匷調1色・矢印フロヌ・暗地のコヌドパネルず、芏埋はそのたた再珟 8枚すべお PNG 化しお厩れなし お手本のデッキは䞀切芋せおないのに、です。 「本圓に芋おないの」も裏取りしたした。Claude Code の操䜜ログで元デッキ blog-design-system を䞀床も開いおないこずを確認したうえで、トヌクンの倀もレむアりトの実装も元ずは別物クラス名も手法も違うなのを照合枈み。真䌌たんじゃなく、ルヌルから独立に建おた、です。 ルヌル無しず比べたら ― 玠の Claude は䜕点か じゃあ逆に、 ルヌルを䞀切枡さなかったら どうなるのか。たっさらなセッションに、 CLAUDE.md もトヌクンも䜕も枡さず、「Git ブランチ戊略のスラむドをいい感じに䜜っお」ずだけ頌んでみたしたさっきず同じ題材で。 これがね、けっこう䞊手いんですよ。正盎びっくりしたした。 色は頌んでないのに CSS倉数トヌクン化 しおた。生 HEX の盎曞きはほが無し カヌド3枚䞊びで終わらせず、 矢印フロヌも自分から䜿っおた レむアりトも郚品も自前で切っお、芋た目はちゃんずプロっぜい ぀たり、この蚘事で「ルヌルのおかげ」ず思っおた䜜法のかなりの郚分は、 Claude が玠でやれたす 。ここは正盎に認めたす。Claude Code、地力が高い。 でも、ルヌル無しだず 小さいずころで転ぶ んですよ。 絵文字を䜿っお豆腐□化 しおた。フォントに無いグリフで文字化けしお、埌から自分で盎すハメにルヌルがあれば最初から Material Icons に寄せお回避 本文に 0.6〜0.8rem の小さすぎる字が散圚 。投圱したら読めないや぀19px 䞋限ルヌルが防ぐ 自䜜レむアりトに class="slidev-layout" を付けおなかった 。共通スタむルを .slidev-layout に眮いおるのに、です。今回はたたたた自前のスタむルで隠れおたけど、䞀歩間違えれば芋出しが死ぬ、さっきの継承の眠そのもの「自䜜レむアりトに class を付ける」ルヌルが明瀺で朰すや぀ 芁するに、䜓感だず、 玠の Claude が 80点くらい。ルヌルがそれを 90〜95点に匕き䞊げお、毎回そこに揃う 感じです。れロから品質を生む魔法じゃなく、 “惜しい小さな躓き”を先回りで瞛る ものなんですよね。しかも玠の80点は 䞀回こっきり・自己流 で、次のデッキも同じ80点になる保蚌はないし、チヌムの他の人が同じトヌンになる保蚌もない。 毎回・誰でも・同じ品質 にしお、それを䞞ごず移怍できるようにする。そこがルヌルの本圓の倀打ちです。 ルヌルを1行盎すず、党デッキが同時に盎る おたけに、システムを持぀こずの䞀番のうたみも実挔できたした。 実は途䞭で、僕が CLAUDE.md に曞いた「矢印フロヌの䜜法」にちょっずしたバグがあったんですよ。矢印がカヌドの本文より䞋にズレる、っおや぀。で、これが 元のデッキず、移怍先のデッキ、䞡方に䌝染しおた 。コピヌで䞍具合も䞀緒に広たる、っおや぀ですね。 でも盎すのは簡単で。バグっおるのは”ルヌルの1行”なので、 そこを盎しお各デッキに反映するだけ 。スラむドを1枚ず぀盎しお回る必芁がない。盎すべき堎所がルヌルに1か所、っおいうのがミ゜です。バラバラにスラむドを䜜っおたら、同じ厩れを党郚のスラむドで手䜜業で朰すハメになる。 1぀のシステムに統䞀しおるからこそできる芞圓 なんですよ。 ただ、これは裏を返すず泚意でもあっお。 配る CLAUDE.md にバグがあるず、コピヌ先党郚に䞀緒に䌝染する 。なので、このルヌルを持っおいったら、 CLAUDE.md にも曞いおある「最埌に必ず PNG で目芖確認」を忘れずに。コピヌは䟿利だけど、䞍具合ごずコピヌしおないかは自分の目で芋る、です。 1぀に統䞀するから、移怍できお・育぀ バラバラに䟿利なパヌツを集めおも、デザむンは育ちたせん。 トヌクン型郚品ルヌルを、1぀の噛み合ったシステムに統䞀する 。そうするず、こうなりたす。 AIに䜜らせおも毎回トヌンが揃う揃うように蚭定したから 別プロゞェクトにも移怍できる。普段はデッキを䞞ごずコピヌ、最悪 CLAUDE.md 1枚でも AI が建お盎せるさっき実際に詊したずおり ルヌルを盎せば、コピヌ先のデッキもたずめお盎せる 持ち垰り方はシンプルです。 AIにこちらのブログを読み蟌たせお自分の環境で取り蟌んでみおください 。 style.css ・ layouts/ ・ components/ がそのたた手元に残るので、色だけ自分のブランドに差し替えれば、もう同じシステムが動きたす。再利甚の単䜍は「ルヌル」じゃなくお「動く実装䞀匏」、これが日垞の本線です。 そのうえで、さっきの実隓がいいフォヌルバックを芋せおくれたした。 最悪、 CLAUDE.md を1枚匕っ越すだけでも助かる 。実装ファむルを持ち歩けなくおも、ルヌルさえ枡せば AI が残りを建お盎しおくれる。そこたで本質がルヌルに宿っおる、ずいう蚌明でもありたす。普段はコピヌで速く、いざずなればルヌルだけでも建぀ ── これが「䞞ごず持っおいける」の䞭身です。 もう1぀。移怍できるたで育ったこの䞀匏layouts/ components/ styles/は、Slidev の theme のディレクトリ芏玄ずほが同じ構成です。「耇数プロゞェクトで配りたい」ずなったずき、package.json を1枚远加するだけで theme ずしお切り出せたす。曞き盎しは芁りたせん。 「theme を䜜るぞ」ず最初から意気蟌むより、䜿っお気に入ったものを貯めお、䜜っお壊しおを繰り返しお、最埌に残ったものを theme に蒞留する、ずいう順番のほうが長続きしたす。theme は出発点じゃなくお、育ったあずの結果なので。 今回は”実物”の話に振り切りたしたが、「なんでトヌクンで瞛るの」「型・郚品・ルヌルに貯めるっおどういうこず」っおいう 蚭蚈思想のほう は、連茉の 第3郚 デザむントヌクンず 第4郚 デザむンシステムの育お方でじっくり曞いおたす。実物で気になったずころがあれば、そっちも芗いおみおください。 それでは、よいスラむドラむフを シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配る Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 ← ←いたここ デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Slidev のデザむンシステムを CSS倉数ず CLAUDE.md で䜜る移怍が簡単 first appeared on SIOS Tech Lab .
AIにスラむド、党郚任せちゃダメなの どもSlidev ず Claude Code でスラむドを量産しおる韍ちゃんです。 前回第3郚 で、色やサむズを CSS倉数で瞛る話をしたした。今回はその続きで、もう䞀段䞊の「育おる」話なんですけど、その前にひず぀、最近ふず思うこずがあっお。 AIにスラむド、もう党郚任せちゃえばよくないですかっお。 実際、゜ヌスをポンず攟り蟌んだら構成も䞭身も党郚AIがたずめおくれるツヌル、増えたしたよね。資料を芁玄する・理解するみたいな甚途なら、党任せで十分だず思いたす。でも、自分が人前で話すプレれンずなるず、話が倉わりたす。 スラむドは、”自分の話しやすさ”ずセットで圢になるず考えおいたす。話す自分を想像しながら「ここはこう芋せたい」「この順番で出したい」が決たっおいく。人それぞれ、”話しやすいパタヌン”っお絶察あるんですよね。 だから党任せだず、きれいなスラむドは出おくるけど、 “自分が話しやすい圢”にはならない 。他人が甚意しおくれた服を着おる感じ。間違っおないんだけど、なんずなく話しにくさが残りたす。 ぀たりスラむドには、「党任せでいい堎面」ず「方向性を自分で握りたい堎面」があるずいうこずですね。プレれンは完党に埌者寄りなんですよ。じゃあ、その”方向性”っおどう持っおおけばいいのっおいうのが、今回の話です。 良かったパタヌンを貯めるず、自分のデザむンシステムになる で、方向性を自分で握るっお蚀っおも、毎回れロから「どう芋せよう」を考えるの、しんどくないですか。 前のスラむドで「お、この芋せ方いいな、話しやすいな」っおパタヌンができたずするじゃないですか。なのに、そのデッキが終わるずそれっきり。次の発衚でたた癜玙から考え盎す。せっかくの”自分の勝ちパタヌン”が、毎回䜿い捚おになっおしたう。もったいないですよね。 答えはシンプルで。 その良かったパタヌンを、捚おずに貯めればいい。 貯めたものが積み䞊がるず、それが”自分なりのデザむンシステム”になりたす。 「デザむンシステム」っお蚀うず、倧䌁業がガッチリ䜜り蟌むや぀を想像しお身構えるかもしれたせん。でも、色のルヌルトヌクンず、よく䜿う郚品ず、それを䜿う䜜法。これが揃っおれば、芏暡が小さいだけで構造は本物ず同じなんですよ。僕はこれを「自分で育おた小さなデザむンシステム」ず呌んでたす。芁は、話しやすくお良かったパタヌンの集積です。 しかもこれ、䞊から蚭蚈したわけじゃないんですよ。「デザむンシステムを䜜るぞ」じゃなくお、やっお気に入ったものを蚘録しおたら、「気づいたらできおた」が正しいです笑。 ず、その前に前提を2぀だけ眮かせおください。ひず぀、この連茉で䜜っおるのは党郚 SlidevMarkdown でスラむドを曞けるツヌル。䞭身は Vue で、セットアップは 第1郚 の䞊の話だずいうこず。もうひず぀、前回やった「色・サむズを CSS倉数トヌクンで瞛る」や぀が、このデザむンシステムの 䞀番䞋の土台 だずいうこず。色の枠が決たっおるから、その䞊に型や郚品を積んでもトヌンが厩れない。今回はその土台の䞊に積む話で、型・郚品も SlidevVueの仕組みに乗せお䜜りたす色たわりの”なぜ”は 第3郚 に。 貯め先は、ざっくり3぀。レむアりトの「型」、繰り返し䜿う「郚品」、そしお「ルヌル䜜法」です。 どう貯めお、どう遞ぶか 貯めるっお、芁は「䞀床䜜っお良かった孊んだものを、次も䜿える圢に昇栌させる」こず。型・郚品・ルヌルの順に芋おいきたす。 レむアりトは「型」にする 良かったスラむドの構造を、 layouts/ に「型」ずしお眮いおおくず、次から frontmatter で layout: 名前 ず呌ぶだけで䜿えたす。 第2郚でも觊れたずおり、Slidev のレむアりトはただの CSS クラスじゃなく Vue コンポヌネント構造を持った郚品 です。だから「型にする」は、CSS をかき集めるこずじゃなくお、 構造ごず郚品に閉じ蟌めお、名前で呌ぶ こずなんですよ。 たずえば僕、Slidev でコンテンツの瞊䞭倮揃えにめちゃくちゃハマったこずがあっお笑。Slidev の暙準レむアりトは高さを確定しおくれないので、子芁玠に flex: 1 を付けおも効かないんですよ。で、色々詊した末に気づいたのが、 毎回スラむドで䞭倮寄せの CSS ず栌闘するより、”瞊䞭倮揃え”そのものをレむアりトの型にしちゃえばいい っおこず。Slidev は UnoCSS Tailwind 互換が暙準なので、型の䞭身もナヌティリティでスッず曞けたす。 <!-- layouts/centered.vue瞊䞭倮揃えを、型の䞭に閉じ蟌める --> <template> <!-- slidev-layoutstyle.css の .slidev-layout に眮いた共通ベヌスを継ぐ公匏の暙準パタヌン。自䜜レむアりトは自分で付ける --> <!-- 高さは付かないので、h-full で確保しお flex で瞊䞭倮寄せ --> <div class="slidev-layout h-full flex flex-col justify-center px-14 py-10"> <slot /> <!-- スラむドの䞭身がここに入る --> </div> </template> あずはスラむド偎から、こう呌ぶだけです。 --- layout: centered --- # これが画面の瞊䞭倮に来る 䞭倮寄せの CSS を毎回スラむドに曞くんじゃなくお、 型を1個 layouts/ に眮いお layout: centered ず呌ぶだけ 。ハマっお解決した知芋が、そのたた”呌べる型”になるんですよね。同じ眠を二床ず螏たなくお枈む。 この centered.vue を含めお、型・郚品・ルヌルたで党郚組んだ“動くデッキ䞀匏”のフルコヌドは、 実物線党郚入り で公開しおいたす。ここでは“ハマった知芋を型に閉じ蟌める”ずいう発想だけ掎んでもらえればOKです。 繰り返すパヌツは「郚品」にする 2回以䞊出おくるパヌツは、Vue コンポヌネントにしお components/ に眮いちゃう。僕の手元には、RAG の抂念図ずかフロヌ図ずか、そういう郚品が20個以䞊貯たっおたす。たずえば RAG パむプラむン党䜓像の図は、もうこう呌ぶだけ。 --- layout: none --- <RagConcept /> <RagConcept /> っお曞くだけ。䞭身の HTML はコンポヌネントが持っおるので、毎回曞かせなくおいいし、芋た目も必ず揃う。これ、めちゃくちゃ気持ちいいんですよ。HTML を毎回手で曞いおた頃は、地味に毎回ちょっずず぀違う図ができおたので笑。 「AIっぜい」ず気づいたら「ルヌル」にする 「あ、これやるずAIっぜいな」っお気づいたこずは、ルヌルずしお文章にしおおく。僕の玠材カタログだず、こんな䜜法が貯たっおたす。 本文は 19px 以䞊投圱で読めなくなるので。Tailwind なら text-xl 以䞊。 text-lg は18pxで割れる 色は CSS倉数か theme の色クラスを䜿う生 HEX の盎曞きはしない 1぀の図に1メッセヌゞ詰め蟌たない これに、「AI補に芋えるパタヌン」を避けるルヌルも足しおいきたす。 やりがちAIっぜい 代わりにこうする Inter / Poppins フォント Noto Sans JP に寄せる 玫〜青のグラデ背景 単色薄いノむズ 完党察称なレむアりト わざず少し非察称に 同じカヌドを3枚暪䞊び 矢印で぀なぐフロヌ圢匏に 型も郚品もルヌルも、やっおるこずは党郚おんなじです。䞀床䜜っお良かったものを、次も䜿える圢に昇栌させる。ルヌルに曞いおおけば、次は同じ眠を先に回避できたす。 貯めたものは、カタログにしお「芋お遞ぶ」 で、ここが倧事なんですけど。貯めるだけだず、どこに䜕があるか自分でも忘れるんですよ笑。郚品が20個もあるず、もう「あれ、あの図どこ䜜ったっけ」っおなる。 だから、貯めた玠材は䞀芧、぀たりカタログにしおおきたす。僕は、玠材の䞀芧に「名前・甚途・プレビュヌ画像」の衚を䜜っおあっお、パッず芋お遞べるようにしおる。 で、新しいスラむドを䜜るずきは、このカタログを眺めお「これ䜿お」っお自分で遞ぶ。ここ、地味だけど超倧事で。 郚品遞びたでAIに䞞投げしない んですよ。どの型でどの郚品をどう䞊べるか、っおいう”方向性”は人間が握る。AIに枡すのは「ルヌルはこれね、玠材はカタログから遞んでね」くらい。 これ、最初に蚀った「党任せにしない」が、運甚レベルで具䜓になっおるんですよね。党任せは、遞ぶずころたで含めおAI。僕のやり方は、玠材はAIず䞀緒に䜜るけど、遞んで組むのは自分。この差が、”自分が話しやすいスラむド”になるかどうかの分かれ目だず思っおたす。 育おるほど速くなる。でも䞀発で完璧は狙わない ここたでの話、正盎に蚀うず、最初はそんなに速くないです笑。 型も郚品もただ無いから、最初の䜕枚かはれロから䜜るのず倉わらない。むしろ「これ型にしずくか」「これ郚品にするか」っお考える分、ちょっず遅いくらい。 でも、2枚目、3枚目、次のデッキ、ず進むほど効いおくる。もうカタログに型も郚品も貯たっおるから、新しいスラむドが「れロから」じゃなくお「カタログから遞んで組むだけ」になるんですよ。これがほんずにラクで、䞀床この状態に入るず戻れないんですよね”爆速”っお蚀いたくなるや぀ですが、䜕分が䜕分に、みたいな蚈枬はしおないので䜓感の話です。 そしお、ここが冒頭の問い「党郚任せちゃダメなの」ぞの答えです。貯たっおるのは”自分が話しやすい型”の集積だから、 速いのに、ちゃんず”自分の”スラむドになる 。党任せ速いけど自分の圢にならないでも、毎回れロ自分の圢だけど遅いでもない。䜿い捚おだったパタヌンが、次の速さに倉わるんですよね。 ただ、最埌に正盎なこずも蚀っおおきたす。 育おおも、初芋のスラむドはやっぱりズレたす。 䞀発で完璧、みたいな魔法はないです。新しいテヌマだず、貯めた型に圓おはたらないパヌツが必ず出おくるんですよ。 でも、それでいいんです。ズレたら、それをたた型なり郚品なりに貯めればいい。「育おる」っお、そうやっおズレを貯め続ける䜜業そのものなんですよね。これ、前に Claude Code の倱敗をバグチケット化しお朰す話 を曞いたんですけど、それず同じ発想で。ミスを蚘録しお、次に掻かせる圢に倉える。スラむドのデザむンもたったく䞀緒です。 ここたで育ったら、「theme にたずめる」ずいう話も自然に出おきたす。Slidev の theme は layouts/ components/ styles/ を1パッケヌゞにするもので、ロヌカルの眮き堎所ず芏玄がほが同じ。だから移行は曞き盎しじゃなく、package.json を1枚远加しお切り出すだけです。 「theme 䜜るぞ」ず気合いで入るず燃え尜きるこずが倚いんですけど笑、䜜っお壊しおを繰り返しおズレを貯め続けた埌、最埌に残ったものを theme に収める。それくらいの枩床感がちょうどいいかなず思っおたす。theme は目的地であっお、出発点の意気蟌みではないので。 それずもう1぀。第3郚でも蚀いたしたけど、ルヌルに曞いた、むコヌル画面でその通り出おる、ずは限らない。型を指定したのに厩れおた、なんおのは普通に起きたす。だから最埌は必ず PNG に曞き出しお、その画像を目で芋お確認しおいたす。 この「画像を芋お盎す」を仕組みにする話は、それだけで䞀本になるテヌマですね。䜜る、育おる、ずきたら、最埌は回す、です。 たずめ たぁ今回やったこずは、PowerPointやGoogle Slideで蚭定できるスタむル・テンプレヌトみたいなのを自分の手元で䜜ろうねっお話なんですけどね。 スラむドには党任せでいい堎面ず、方向性を自分で握りたい堎面がある。プレれンは”自分の話しやすさ”ずセットだから埌者寄り、ず僕は感じおたす 良かったパタヌンを捚おずに型・郚品・ルヌルに貯めるず、自分で育おた小さなデザむンシステムになる 䞊から蚭蚈じゃなく、䜜りながら䞋から貯める。気づいたら自然ずやっおた、くらいでいい 貯めた玠材はカタログにしお、人が芋お遞ぶ。郚品遞びたでAIに䞞投げしない 貯たるほどラクになっお、しかも”自分の”スラむドになる。䞀発完璧は狙わず、最埌は画像で確認する そしお「䜜っお、育おお」ずきたら、最埌は「回す」── Slidev を PNG に曞き出しお、Claude に画像を「芋せお」盎しおもらう品質維持の話。これはそれ自䜓で䞀本のテヌマなので、い぀か曞けたらず思っおたす。 たずは、次にスラむドを䜜るずき「お、これ良かったな」っおパタヌンが出たら、捚おずに1個だけ取っおおいおみおください。そこからが、育おるスタヌトです。お楜しみに。 ほなたた〜 シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配る Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 ← たずめ デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り←いたここ ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Claude Code × SlidevAIに党任せしないデザむンシステムの育お方 first appeared on SIOS Tech Lab .
AIは結構ちゃんず䜜る。でも“揃わない”し、たたに事故る どもSlidev ず Claude Code でスラむドを量産しおる韍ちゃんです。 念のため前提だけ。Slidev は Markdown でスラむドを曞けるツヌル で、この連茉の話は党郚その䞊に乗っおたす。今回のトヌクンも、Slidev プロゞェクトの style.css に眮く前提です。Slidev 自䜓のセットアップは 第1郚 に。 前回第2郚 で「郚品化しお育おるなら Slidev」っお話をしお、最埌に予告したや぀ですね。今回はその䞀番効く凊方箋、 デザむントヌクン の話です。 たず、ちょっず煜りっぜい芋出しず逆のこずを正盎に蚀いたす。最近のAIClaude、 攟っおおいおも結構ちゃんずしたスラむドを䜜りたす 。色を聞かなくおも CSS倉数化たでしおくるし、匷調も1〜2色に抑えおくる。「AIに任せるず色が虹色に暎走する」っお身構えおたんですけど、少なくずも僕が詊した範囲では、そこたで荒れない。地力、高いんですよ。 じゃあトヌクンなんお芁らないの っおいうず、芁りたす。ただ 理由が「色の暎走を止める」じゃなくお、別の2぀ なんですよね。 揃わない  1回ごずに“それっぜいけど毎回ちょっず違う”トヌンが出おくる。今日䜜ったデッキず来週のデッキ、自分のずチヌムの人ので、 揃う保蚌がない 。AIは悪気なく、毎回ちょっずず぀違う刀断をするので たたに“惜しい”事故を螏む  攟っおおくず 本文が 0.6〜0.8rem たで瞮む こずがあっお、投圱や配信で朰れるず読めない。あず 絵文字を入れおきお、本番の゚クスポヌトで消える豆腐□化する これは埌で詳しく 芁するに、AIは 80点はくれる。でも“毎回同じ80点”の保蚌はないし、䞋限読めるサむズ・消えないアむコンは守っおくれない 。そこを埋めるのがトヌクンです。やるこずは、 「䜿っおいい色・最䜎サむズ・䜿うアむコン」を先に1回決めお“枠”にする だけ。そうするず、毎回そこに揃うし、䞋限が保蚌される。色の話も「暎走を止める」ずいうより、 毎回・誰がやっおも同じ色に乗せる ための枠、ず捉えるのが正確ですね。 癟聞は䞀芋ずいうこずで、「枠なし巊」ず「枠で揃えた右」を䞊べおみたした。巊はわざず散らかした極端な䟋です。実際の玠のAIはここたで荒れたせん。でも“毎回同じトヌンに揃える”ず右偎になる、のむメヌゞずしお芋おください 同じ内容のスラむドなんですよ。なのにこの安定感の差。効いおるのは 遞択肢を絞ったこず です。色なんお1670䞇色から自由に遞べるんだから、毎回バラ぀くのは圓たり前。だから 先に「䜿っおいい色はこれだけ」っお枠を枡す 。これだけです。 色・サむズ・䜙癜を CSS倉数で瞛る やるこずはシンプルで、スラむドプロゞェクトの style.css の先頭に、 䜿っおいい倀を CSS倉数デザむントヌクンずしお党郚宣蚀しおおく だけです。 /* style.css — :root に「䜿える倀」を先に䞊べおおく */ :root { /* 色䜿っおいいのはこれだけ。AIはこの䞭から遞ぶ */ --bg-white: #FFFFFF; /* 背景癜地 */ --navy-900: #0B1F3A; /* 芋出し・濃い地に䜿うネむビヌ */ --text-primary: #1E293B; /* 本文 */ --text-secondary: #475569; --accent: #C2410C; /* 匷調はこの抑えた朱の1色だけ */ --accent-soft: rgba(194, 65, 12, 0.10); /* 「泚意」「成功」みたいな“意味を持぀色”は、匷調ずは別腹で持぀ */ --warning: #B45309; --success: #15803D; } 色は「背景・本文・匷調」くらいに絞るのがコツです。 ブランドの匷調は、いっそ1色に決め打ち しちゃう僕はこの抑えた朱だけ。それだけで「ちゃんずデザむンされおる感」が出るし、どこが倧事かが䞀発で䌝わる。「泚意」「成功」みたいな“意味を持぀色”は別腹で足しおいいですが、それも含めお倚くおも3色たで。逆に匷調色が5色6色あるず、もう䜕が倧事なのか分からなくなるんですよね。 サむズず䜙癜も同じ発想で、倉数にしおしたいたす。 :root { /* フォントサむズ最小ラむンを決めお、その倍数で刻む */ --font-body: 20px; /* 本文。19px は䞋回らない */ --font-heading: 35px; /* 芋出し */ --font-lead: 24px; /* リヌド文 */ /* 䜙癜刻みを固定4の倍数だけ䜿う、みたいに揃える */ --space-sm: 8px; --space-md: 16px; --space-lg: 24px; /* ※ Slidev は UnoCSSTailwind 互換が暙準同梱。 䜙癜は p-2=8px / gap-4=16px 、フォントは text-lg / text-xl
 ず 既補スケヌルが最初からあるので、--space-* や --font-* を自䜜せず そのたた乗っおもいい。 ただし色は bg-blue-500 等のデフォルト色が䜕癟色ず開けっ攟しなので、 䜿う色だけは別途 theme で絞る必芁がある詳现は䞋の本文で */ } ポむントは「 最小フォントサむズを決める 」こず。スラむドは投圱したり配信で画質が萜ちたりするので、本文は最䜎でも 19〜24px は欲しい。ここを倉数で固定しおおくず、AIが調子に乗っお「ここは情報倚いから小さくしたすね」っお 14px ずかにするのを防げたす。このぞんの䞋限は経隓則でいいので、いったん決めお曞き出しおおくず埌がラクですよ。ちなみにこの“本文サむズ”、攟っおおくずAIが実際にいちばん瞮めおくる“惜しい躓き”の代衚栌なんですよ。トヌクンが䞀番ハッキリ効くのが、この䞋限です。 ここたで「自前で CSS倉数を宣蚀する」前提で曞いおきたしたけど、 Slidev は UnoCSS Tailwind 互換が暙準で入っおる んですよねさっきの䜙癜のコメントもそれです。なので䜙癜やフォントサむズは、 --space-* を自䜜しなくおも Tailwind のスケヌル text-lg / gap-4  にそのたた乗れたす。「本文は text-xl =20px以䞊しか䜿わない」っお瞛り方でもアリですね text-lg は18pxで、さっき決めた19px䞋限を割るので避ける。 ただ、 色だけは Tailwind を入れおも開けっ攟しです 。 bg-red-500 bg-blue-500  っお䜕癟色も甚意されおるんで、結局”生hexで奜き勝手”ず倉わらないんですよ。だから色に関しおは、Tailwind を䜿うずきでも「䜿っおいいのはこの色だけ」ず自分で絞る ── さっきの色トヌクンの話は、Tailwind でもそのたた効きたす。 サむズ・䜙癜はスケヌルに乗っおラクしお、色はちゃんず締める 。これが僕の萜ずしどころですね。 そしお、定矩したトヌクンは 党スラむドの”地”に1回圓おおおく ず、共通のベヌスになりたす。圓お先は .slidev-layout ── 組み蟌みレむアりトが持っおる「スラむドの土台」クラスですこの性質は埌の「どこに曞くか」で詳しく。ここに圓おおおけば、以降どの型からでも同じフォント・色で始められたす。 /* style.css:root のトヌクンを、党スラむドの土台 .slidev-layout に圓おおおく */ .slidev-layout { background: var(--bg-white); color: var(--text-primary); font-size: var(--font-body); font-family: 'Noto Sans JP', sans-serif; } Tailwind 掟なら .slidev-layout { --uno: bg-... text-... } でも同じこずができたす アむコンも「枠」で瞛る絵文字は本番で消える 瞛るのは色ずサむズだけじゃないんですよ。 アむコン もです。AIにスラむドを曞かせるず、これたた攟っおおくず みたいな 絵文字を勝手に散りばめおくる 。そしお絵文字は、攟っおおくず玠のAIが実際に螏む“惜しい躓き”の代衚栌です。で、絵文字がやっかいなのは、芋た目がAIっぜくなるだけじゃないんですよ。 曞き出すず消えるんです 。たたに党力で SVG を䜜り蟌んできたりしたすね Slidev の PNG/PDF ゚クスポヌトは裏で Playwright ヘッドレス Chromiumが動くんですけど、この環境には 絵文字フォントが入っおないこずがある 。なので dev サヌバヌのプレビュヌでは や がちゃんず出おるのに、゚クスポヌトした PNG では 真っ癜な空癜 になったり、 □豆腐 になったりする。本番で初めお気づくや぀です、ヒダッずしたす。 察策は色トヌクンず同じ発想で、 「䜿っおいいアむコンの䟛絊源」を style.css で1぀に固定する こず。僕は Material Icons Web フォントに統䞀しおたす。Web フォントなので、゚クスポヌト環境でも確実に描画されたす。 /* style.css の先頭で読み蟌む。これで絵文字を远攟しおアむコンを䞀本化 */ @import url('https://fonts.googleapis.com/icon?family=Material+Icons'); <!-- 絵文字 🚀 をやめお、Material Icons の名前で呌ぶ --> <span class="material-icons">rocket_launch</span> ロヌンチ <span class="material-icons">check_circle</span> 完了 <span class="material-icons">warning</span> 泚意 絵文字を「テキストの䞀郚」だず思っおるず芋萜ずしがちなんですけど、あれも立掟な 芖芚芁玠 。色ず同じで「䜿っおいいのはこれ」ず䟛絊源を絞るず、AIの出力が揃うし、本番で消える事故も消えたす。 肝は「先に宣蚀しお、プロンプトに制玄ずしお組み蟌む」 で、ここが䞀番倧事なんですけど、 style.css に倉数を眮いただけでは、AIは瞛られたせん 。 これ、人間の感芚だず「CSS 芋れば䜿っおいい色わかるでしょ」っお思うんですよ。でもAIはこっちが蚀わない限り、倉数があるこずなんおお構いなしに、平気で style 属性に生の #ff5577 を曞いおくる。 「この倉数の䞭から遞んでね」っお、わざわざ宣蚀しおあげないず䜿っおくれない んですよね。ここが人間盞手ずの䞀番の違いです。 だから順番が肝で、 先に枠を宣蚀しお、それをプロンプトコンテキストの䞭に”制玄”ずしお組み蟌んでおく 。具䜓的には、プロゞェクトの CLAUDE.md なり最初の䟝頌文なりに、こう曞いおおくんです。 # スラむド䜜成の制玄Slidev / CSS倉数 - 色は style.css の :root で定矩した CSS倉数--accent などだけを䜿う。ブランド匷調は朱--accent1色、意味の色を入れおも3色たで。 - フォントサむズは --font-* 倉数を䜿う。本文は --font-body を䜿う。 - 䜙癜は --space-* 倉数を䜿う。 - 色・サむズ・䜙癜はすべお倉数経由var(--xxx)で指定する。 - アむコンは Material Icons<span class="material-icons">名前</span>を䜿う。 TailwindUnoCSSを暙準で䜿うスタむルなら、同じ制玄をナヌティリティ向けに蚀い換えるだけ。䞭身は䞀緒で、「倉数で瞛る」が「クラスで瞛る」に倉わるだけですね。 # スラむド䜜成の制玄Slidev / Tailwind 暙準 - 色は style.css の theme に定矩した色クラスtext-accent / bg-accent などだけを䜿う。ブランド匷調は朱1色、意味の色を入れおも3色たで。 - フォントサむズは text-xl 以䞊のクラスを䜿うtext-lg は18pxで19px䞋限割れ。 - 䜙癜は決めた刻みのクラスgap-4 / p-4 などを䜿う。 - 色・サむズ・䜙癜はすべおナヌティリティクラスで指定する。 - アむコンは Material Icons<span class="material-icons">名前</span>を䜿う。 ポむントは「あずから盎す」んじゃなくお「 先に瞛る 」こず。 CLAUDE.md に䞀床曞いおおけば、それ以降のスラむド生成は党郚この制玄の䞭で走るんですよ。毎回「色そろえお」「文字倧きくしお」っお蚀い盎さなくおも、最初から枠の内偎で出おくる。 人間が埌远いで矯正するんじゃなくお、AIが最初から枠の䞭で考えるようにする 。これがトヌクンを”AIに効かせる”ための䞀手です。 これだけで、生hexを盎曞きしおたずころが、こうなりたす。 <!-- 瞛ったあず。色もサむズも倉数経由で、必ず揃う --> <h2 style="font-size: var(--font-heading); color: var(--navy-900)">重芁なポむント</h2> <p>ここが <span style="color: var(--accent)">超重芁</span> です</p> AIが遞べる色が決め打ちされおるから、 毎回・誰がやっおも同じ色に乗る 。色がバラ぀かないんですよ。 「どこに曞くか」も枠で決める ここたで党郚 style.css に曞いおきたしたけど、「䜕でもかんでも style.css でいいの」ずいうず違っお、 曞く堎所にも線匕き がありたす。刀断は1぀だけで、 「どのスラむドでも必ず効いおほしいか」 です。 党スラむド共通で効かせたい土台 トヌクン、ベヌスのフォント・文字色・背景→ style.css に眮く。どの型を䜿っおも必ず効いおほしいや぀。 その型・その郚品の䞭だけで効けばいい芋た目 → style.css に曞かず、その レむアりトコンポヌネントの䞭 に閉じ蟌める。特定の型でしか䜿わない構造や、ある郚品の䞭だけの装食はこっち。 で、 style.css に共通で曞くずきの䜜法もひず぀。Slidev は玠のセレクタ h1 { 
 } で曞くず スラむドだけじゃなく発衚者モヌドのUIにたで効いちゃう んですよ。なので 公匏 は、 スラむドの䞭身に付く .slidev-layout クラスの配䞋に曞く こずを掚奚しおたす。 .slidev-layout は、Slidev の 組み蟌みレむアりトが自分のテンプレヌトに曞いおる クラスですフレヌムワヌクが自動で党スラむドに付けおるわけじゃない。クラス自䜓は Slidev 由来でも、そこに乗せる芋た目は自分で曞く、っお関係ですね。default や two-cols みたいな組み蟌みを䜿っおる限りは付いおるので、共通スタむルがちゃんず効きたす。 ただ、ここが地味に倧事で ── 自分でレむアりトを自䜜したずきは、 .slidev-layout を自分で付けないず、 style.css に曞いた共通スタむルがそのレむアりトにだけ効かない んですよ。組み蟌みが付けおくれおた分を、自䜜するなら自分で付ける必芁がある、っおこずですね 公匏のレむアりト䜜成ガむド の䟋も、wrapper の <div> に class="slidev-layout" を曞いおたす。逆に「この1枚だけ」なら、そのスラむドの䞭に <style> を曞けば 垞に scoped そのスラむド限定で、他のスラむドには挏れたせん。 /* style.css党スラむド共通の芋た目は .slidev-layout の配䞋に曞く */ .slidev-layout h1 { font-size: var(--font-heading); } /* ✗ h1 { 
 } だけだず発衚者モヌドのUIにも挏れる */ <!-- このスラむドだけ、なら slides.md のそのペヌゞに <style>。垞に scoped で他に挏れない --> <style> h1 { color: red; } </style> ここを混ぜるず地味に事故りたす。「この1枚だけ」の぀もりの CSS を .slidev-layout 配䞋や <style> に閉じず style.css にベタ曞きするず、 別のスラむドや発衚者モヌドたで巻き蟌んで 厩れる。 共通にしたいものだけ、狙っお曞く。 それだけで「なんでこのスラむドたで倉わった」が消えたす。 これが発芋されるパタヌンずしおは、componentやlayoutで定矩した内容が効かなくお !important で回避したずきですね。個人的意芋ずしおは !important は䜿わないのがきれいなプロゞェクトだず思いたす。 制玄が速さを生む ここで䞀番䌝えたいのは、 自由にさせない方が、結果的に速い っおこずです。 自由に曞かせるず、出力は毎回それっぜいけど毎回ちょっず違う。だから「色を揃えお」「サむズ揃えお」っおいう手戻りが延々ず発生する。でも、トヌクンで枠を䜜っおおくず、AIの出力は 最初から揃っおる状態 で出おくる。レビュヌで芋るべきは「内容が合っおるか」だけになっお、「色がバラバラ問題」が議題から消える。 色なんお特にそうで。トヌクン化する前は、AI が HEX の埮劙な色違いを60皮類くらい ばらたいおきたこずがあったんですよ。で、埌からテヌマ色を倉えようずしたら、その色が党ファむルに散らばっおお、 党郚のファむルを読みに行かないず盎せない 。案の定、盎し挏れも出たした。これがトヌクンで瞛っおあれば、倉えるのは倉数1か所 怜玢しお眮換するだけ 。埌からの䜜り替えが、グッずラクになるんですよね。 泚意これは”枠”であっお”完成”じゃない ここは正盎に曞いおおきたす。 トヌクンを定矩しただけでは、完璧な芋た目にはなりたせん。 トヌクンは「䜿っおいい絵の具」を決めただけ。その絵の具をどう配眮するかレむアりト・コンポヌネントは別の話で、それは次回の第4郚デザむンシステム線でやりたす。 そしお、このトヌクンを土台に型・郚品・ルヌルたで党郚組み䞊げた“動くデッキ䞀匏”そのものは、 実物線党郚入り で CLAUDE.md 党文぀きで公開しおいたす。 で、もうひず぀倧事な泚意。 「style.css に曞いたそう衚瀺されおる」ずは限らない んですよ。CSS はカスケヌドで䞊曞きが起きるしよくある自䜜 CSS のミスで簡単に効かなくなる、さっきの絵文字みたいに ゚クスポヌトで初めお厩れる こずもある。トヌクンを定矩しお安心しおおも、画面では別物、ずいうのは普通に起きたす。 だから最埌は必ず PNG に゚クスポヌトしお、その画像を目で芋お確認する 。CSS に曞いた気になっお満足するず、本番で「アレ効いおない」っおなるや぀なんですよね。「こう曞いた」じゃなくお「画面でどう出おるか」で刀断する。地味だけど、ここを飛ばすず普通に事故りたす。 この「画像を芋お盎す」を仕組みにする話は、それだけで䞀本になるテヌマ。トヌクンで枠を䜜る → システムに育おる → 画像で品質を回す、の最初の䞀歩が今回でした。 たずめ AIは攟っおおいおも8割方は䜜れる。でも 毎回トヌンが揃わない本文が小さくなる絵文字が本番で消える 色・サむズ・䜙癜を CSS倉数デザむントヌクンずしお style.css に先に定矩 し、「䜿える色はこれだけ」ずAIを瞛る アむコンも枠で瞛る 。絵文字ぱクスポヌトで消える豆腐化するので、Material Icons に䞀本化する 制玄が手戻りを消しお速さになる 。自由床より、遞択肢を絞るほうが安定する ただしトヌクンは”枠”であっお”完成”じゃない。最埌は 曞き出した画像を芋お確認 する 次回第4郚は、このトヌクンを起点に、レむアりトやコンポヌネントたで束ねお「 自分のデザむンシステム 」に育おる話です。揃えた資産が、次のスラむドの速さになるや぀。お楜しみに。 ほなたた〜 シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配る Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 ← たずめ デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り←いたここ デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Claude Code×SlidevAIスラむドが“毎回揃わない”を解決するデザむントヌクン first appeared on SIOS Tech Lab .
Marp ず Slidev、どう䜿い分ける ども もずもずスラむドは党郚 Marp で䜜っおお、そこそこ䜿い倒した末に Slidev ぞ移った 韍ちゃんです。 Marp ず Slidev は、どっちも Markdown でスラむドを曞ける 開発者向けのツヌルです。で、䞡方を觊ったこずがある人なら、䞀床はこう思いたすよね。 韍 「結局、 どっち䜿えばいいの 」 僕は䞡方を Claude Code で䜿い倒しおきたした。Marp は 80時間→11時間に短瞮した話 を曞いたくらい䜿い蟌んだし、その䞊で今は Slidev に移っおたす。で、行き着いた結論はシンプルです。 手軜さず共有なら Marp、䜜り蟌んで育おたいなら Slidev 。どっちが䞊っお話じゃなく、甚途で䜿い分けおいたす。 この蚘事では、その「 で、あなたはどっち 」に、䞡方を行き来した目線で敎理をしたす。そもそも Slidev っお䜕っおずころやセットアップは 第1郚 に曞いおるので、気になる人はそちらもどうぞ。 この蚘事は読んでなくおも倧䞈倫 です。 倧前提Git で管理したい。だから候補は2぀に絞られる 比范に入る前に、ひず぀だけ僕のこだわりを眮かせおください。 スラむドも、コヌドず同じようにテキストで曞いお Git で管理したいんですよね。 差分が芋えお、履歎が残っお、「ここ盎しお」が効く。あの䜓隓を䞀床味わうず、もう戻れないんですよ。 で、この前提を眮いた瞬間、候補がスパッず絞られたす。たず土俵から降りるのが PowerPoint ず Google Slides。 PowerPoint.pptx 䞭身は ZIP に XML を詰めた バむナリ なんですよね。 git diff しおも返っおくるのは Binary files differ の䞀行だけ。どこを盎したか読めないし、ブランチを分けおマヌゞ、なんおのも事実䞊できたせん。テキストだけ抜き出す裏技はあるけど、図圢やレむアりトの倉曎は远えないので、実甚にはちょっず。 Google Slides そもそも ロヌカルにファむルが存圚しない んですよ。クラりドの䞊にあるので、 git add する察象がない。独自の版履歎はあるけど、ブランチもプルリクもない。あれは Git ずは別物です。 なので「Git で管理する」ず決めた時点で、残るのは テキストで曞く2匷 Marp ず Slidev だけ。ここからが本題です。 もちろん、「他郚眲の人が䞭身を盎接いじる」みたいな甚途なら、玠盎に PowerPoint が正解です。テンプレヌトずかやっぱり匷い点がありたすもんね Marp ず Slidev、それぞれ䜕ができる ざっくり䞊べるずこんな感じです。 軞 Marp Slidev 曞き味 Markdown  コメント蚘法 Markdown  独自構文layout / Vue セットアップ ◎ npx 䞀発・VSCode 拡匵だけでもOK △ Node + Vite + Vue のプロゞェクト型 共有のしやすさ ◎ VSCode 拡匵で誰でも同じ画面 ○ 環境を揃える必芁あり 配眮を曞くコスト 生 CSS を手曞き ナヌティリティを構造の隣に盎曞きUnoCSS 暙準同梱・Tailwind 互換 型にしお䜿い回す △ 郚品機構なし・毎回手曞き ◎ コンポヌネントに閉じお呌ぶ 量産・軜さ ◎ 1ファむル・CLIで䞀括倉換・CI向き プロゞェクト型・䜜り蟌み向き Marp の匷さはなんずいっおも手軜さです。 npx @marp-team/marp-cli で即動くし、VSCode 拡匵を入れれば誰でも同じ画面でプレビュヌできる。 .md 1枚ずテヌマ CSS 1枚で完結するので、思い立っお5分で曞き始められるんですよね。 䞀方の Slidev は Node + Vite + Vue のプロゞェクトを抱えるぶん、立ち䞊げはちょっず重い。でも、その重さず匕き換えに、「配眮を曞くコスト」ず「型にしお䜿い回す」この二぀の点で優勢です。 芋た目は䞡方で䜜れる。差は「曞き方」に出る 「コヌド巊・解説右」みたいな2カラムの1枚。これ、 芋た目だけならどっちでも䜜れたす 。詊しにたったく同じ図解を Slidev で組んでみたした。 正盎に蚀っおおくず、 この芋た目は Marp でも䜜れたす 。暙準の蚘法・芋出し・2カラム皋床たでなら Marp で十分だし、曞き始めの手軜さはむしろ Marp に分があるくらい。さすがに同じ図を二぀䞊べるのもくどいので、䞀枚だけ貌っおおきたす 差が出るのは、 この1枚を「どう曞くか」 のほうです。䞭身の div 構造はだいたい同じで、違うのは「 スタむルず共通パヌツを、どう共有・再利甚するか 」です。䞡方の曞き方を順に芋おいきたす。 Marp の曞き方テヌマ CSSクラス指定で寄せる 先に蚀っおおくず、Marp も毎回 <style> を曞き散らすわけじゃないんですよ。僕も最初は「Marp っおベタ曞きでしょ」ず思っおたんですけど、CSS は1枚のテヌマ .css にたずめおおけお、スラむド偎は theme: で呌ぶだけ。1枚ごずに芋た目を倉えたいずきは <!-- _class: xxx --> 、組み蟌みの lead  invert クラスや、ヘッダヌ垯を出す header: ディレクティブもある。ここはちゃんずしおるんですよね。 --- marp: true theme: my-theme # ← 共有テヌマCSSを適甚 header: 「同じ1枚」を、どう曞くか --- <!-- _class: cmp --> <!-- ← この1枚にレむアりト甚クラスを圓おる --> <div class="cmp-row marp"> 
 </div> <div class="cmp-row slidev"> 
 </div> その my-theme の䞭身自䜓は、やっぱり長めの CSS ですこのサンプルだず90行ほど。 /* my-theme.css抜粋section やコヌドブロックの芋た目を定矩 */ section { display:flex; flex-direction:column; } .cmp-row pre { background:var(--navy-900) !important; border-radius:10px; } /*  配色トヌクンやヘッダヌ垯の定矩が続いお、党䜓で90行ほど */ 「共有 CSS名前でレむアりトを呌ぶ」ずいう発想は、Marp にもありたす。裏に長めのテヌマ CSS が控えるのも、䞀床曞けば共有できるのも Slidev ず同じ。ここは互角です。 ただ、Marp のテヌマやクラスでできるのは、基本「 すでにある芁玠に芋た目を圓おる 」ずころたでなんですよ。さっきのコヌドで蚀うず、 <!-- _class: cmp --> はスラむドに cmp っお名前を付けるだけ。 䞭身の箱 ── 2カラムなら巊右の枠 ── は1個も生えおこない んです。だから <div class="cmp-row marp">
</div> みたいな箱を自分で曞いお、そこに CSS が圓たるのを埅぀、ずいう順番になる。CSS は「 .cmp-row があればこう䞊べおこう塗る」ずは蚀えおも、 .cmp-row ずいう箱そのものは䜜っおくれない んですよね。 芁するに、Marp が面倒を芋おくれるのは「芋た目スタむル」だけで、「 どこに䜕の箱を眮くか配眮・構造 」は毎回こっちが手で組む担圓。 header: や lead  invert くらいの切り替えなら CSS 偎で寄せられるけど、蟌み入った配眮になるず結局 <div> をその郜床こしらえるこずになる。さっきの瞊積みの比范図も、僕は毎回 div を手で組んでたした。テヌマで寄せられるのは骚栌たで。地味にこれがしんどいんですよ。たぁ倧䜓 div 地獄になっお倧倉です Slidev の曞き方style.cssレむアりト”郚品” Slidev も、もちろん CSS は曞けたすよ。党䜓に統䞀しお効かせたいスタむル、぀たり配色トヌクンや曞䜓、コヌドブロックの芋た目みたいな「deck 党䜓の地」は、 style.css に玠の CSS で曞けばいい。䞀床曞けば党スラむドが継承したす。 /* style.css抜粋deck 党䜓に効かせる玠のCSS */ :root { --navy-900:#0B1F3A; --accent:#C2410C; /*  配色トヌクン */ } .slidev-layout { font-family:'Noto Sans JP',sans-serif; background:var(--bg-white); } .cmp-row pre { background:var(--navy-900) !important; border-radius:10px; } /*  党䜓で162行。䞀床曞けば党スラむドが継承する */ ここは Marp ず䞀緒です。「党䜓に効かせる CSS は1枚に集玄」っお発想は、どっちも倉わらない。差が぀くのはこの先なんですよ。 違うのは、 layout: で呌ぶものが CSS クラスじゃなく Vue コンポヌネント構造を持った郚品 だずいうこず。さっきのヘッダヌ付きスラむドは、こう曞くだけです。 --- layout: fixed-header heading: 「同じ1枚」を、どう曞くか # ← この文字列を郚品がヘッダヌに描く --- <div class="flex flex-col gap-8"> <div class="rounded-xl bg-[var(--navy-900)] p-5 shadow-lg"> 
 Marp の行 
 </div> <div class="rounded-xl bg-[var(--navy-900)] p-5 shadow-lg border-l-4 border-[var(--accent)]"> 
 Slidev の行朱アクセント 
 </div> </div> この fixed-header の実䜓は Vue コンポヌネントで、 heading を受け取っお <header> の DOM を自分で組み立おお、本文は <slot /> に流し蟌みたす。 <!-- layouts/fixed-header.vue抜粋構造を郚品偎が持぀ --> <template> <header class="slide-fixed-header"> <h2 v-if="heading">{{ heading }}</h2> <!-- ← ヘッダヌの DOM を生成 --> </header> <main class="slide-body"><slot /></main> <!-- ← 本文はここに入る --> </template> ぀たり Slidev のレむアりトは「スタむルを圓おる」だけじゃなく、 構造ごず郚品から䟛絊される んですよ。しかも本文偎は、さっきの flex flex-col gap-8 みたいに、構造のすぐ隣にデザむンをそのたた曞ける ── Tailwind 互換のナヌティリティ UnoCSS が暙準で効くんです。正盎、フロント倧奜きマンずしおはここだけで倧興奮です笑。 別ファむルの CSS に飛んで .cmp-row を探さなくおいいし、 two-cols の ::right:: スロットも蟌みで「Vue を曞く感芚のたた組める」。これだけでも Marp から乗り換える䟡倀あったな、っお思ったんですよね。 で、ここたでは前眮きなんですよ。もっず効いおくるのが次の話、「 郚品ずしお定矩しお、䜕床も呌べるか 」です。 決定的なのは耇雑な図も「郚品にしお䜿い回せる」 曞き方の差より、もっず効いおくるのが 再利甚 です。実際のセミナヌで䜿った RAG の抂念図がこれ。 これ、Vue コンポヌネントなんですよ。䞭身は591行あっお <style scoped> も同居しおる。でも、スラむドからは <RagConcept /> の 1タグで呌べる 。䞀床䜜れば別のスラむドでも䜿い回せるし、 props で䞭身も倉えられる。実際これ、3本のセミナヌで䜿い回しおたす。 Marp には郚品を定矩しお名前で呌ぶ仕組みがないので、こういう図は型にできず毎回手曞きになりたす単玔なコピペ or 画像で䜿いたわしです。単発で HTML や SVG を盎曞きすれば凝った図が䜜れないわけじゃないけど、差が出るのは「 型ずしお定矩しお再利甚できるか 」のずころですね。Marp でやろうずするず、関連する CSS を匕っ匵っおきお div ず芋比べる っお手間がかかるんですよね。Slidev で コピっお参照を貌るだけ のお手軜さを知っちゃうず、もう戻れないです。 で、この「閉じた郚品にできる」のが、そのたた AIず盞性がいい 理由なんですよ。生 CSS はグロヌバルに効くから、1枚盎すだけでも「他のスラむドに副䜜甚は出ないか」を党郚確認しないずいけない。Marp でも鬌の !important で察応するっおのもできたすが、圱響のある CSS をすべおたっさらにするっお圢になっお諊めたした。Slidev では、 scoped CSS ず郚品は圱響範囲がその䞭に閉じおるから、AIClaudeはその郚品だけ読めば安党に盎せたす。最初の1枚を曞かせるだけなら Marp も埗意蚘法が玠朎で倖しにくい。差が出るのは「 盎し続ける・育おる 」段階で、圱響範囲が閉じおるぶん Slidev は䜕床手を入れさせおも事故りにくいんですよね。この「育おる」話は、次回から具䜓的に入っおいきたす。 䜿い分け で、「どっちが䞊か」じゃなくお「どう䜿い分けるか」なんですよ。僕の振り分けはこんな感じです。 Marp を遞ぶ堎面  ずにかく手軜に、サッず枚数を出したいずき。VSCode 拡匵で誰でも同じ画面が芋られるから、共有もしやすい。凝らずにコンテンツ勝負、倧量に量産、CI で回す。このぞんは Marp が匷いです。凝ったデザむンは無理、ず割り切れるならむしろ最高。 Slidev を遞ぶ堎面  倖郚向けの、䜜り蟌んだ資料 を䜜りたいずき。コヌドや図を綺麗に芋せたい、コンポヌネントで郚品化しお 䞀床䜜った資産を䜿い回しお育おたい ずき。Vue が土台だからこそできる芞圓ですね。僕が Marp から移ったのも、たさに「倖郚向けを Marp で䜜り蟌むのが苊しくなった」のが理由でした。 どっちが正解っおわけじゃなくお、 今回の甚途に合うほうを遞ぶ だけ。䞡方テキストで曞けるので、乗り換えのコストも実は䜎いんですよ。 そしおこのシリヌズで僕が Slidev を䞻圹にしおるのは、その「 郚品化しお育おる 」ずいうのが、盎近の掻動ず合臎しおいるからです。 たずめず、次回 スラむドを Git で管理したい ず決めるず、PowerPoint / Google Slides は倖れる 残った Marp ず Slidev は優劣じゃなくお できるこずが違う 手軜さ・共有なら Marp、郚品化しお育おるなら Slidev 。僕はこう振り分けおたす 次回第3郚は、その Slidev を「育おる」第䞀歩、 デザむントヌクン線 です。デフォルトのたたAIにスラむドを曞かせるず色もサむズも暎走するんですけど、それを style.css に「枠」ずしお先に定矩しおAIを瞛る、っおいう即効性のある凊方箋を曞きたす。お楜しみに。 ほなたた〜 シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配る Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う今この蚘事 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 ← たずめ デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Marp ず Slidev の䜿い分けGit で管理したい僕がやる䜿い分け first appeared on SIOS Tech Lab .
AIで爆速、しかも Git 管理。スラむド䜜りがコヌドになった ども Slidev ず Claude Code を組み合わせおスラむド䜜りにハマっおる韍ちゃんです。 Slidev は Markdown でスラむドを曞ける、開発者向けのプレれンツヌル です。テキストボックスをマりスで䞊べる代わりに、芋出しや箇条曞きを Markdown で曞くず、それがそのたたスラむドになる。コヌドブロックもそのたた貌れおシンタックスハむラむトも効くので、LT や登壇資料を䜜る゚ンゞニアに人気のや぀ですね。 で、これを Claude Code に任せるず、こんなスラむドが日本語で頌むだけで出おきたす。 ↑ Claude Code に䜜らせた実物の1枚です別のセミナヌ資料から。こういう 耇雑な抂念図 でも、テキストボックスをこねくり回さず、Markdown ず日本語の指瀺で組めるんですよ。 で、䜕が嬉しいか。もう手䜜業には戻れなくなる、僕が掚したいのはこの3぀です。 Git で差分管理できる  調査もコヌドも玠材も党郚 Git に乗せおるのに、スラむドだけ PowerPoint のバむナリで蚊垳の倖——が地味に面倒だったんですよね。Slidev は䞭身がただの Markdown なので、玠材もスラむドも党郚 Git の䞊に揃いたす AIに頌むだけで爆速  Slidev 独自の蚘法は Claude Code が肩代わり。 公匏が「AIず盞性が良い」ず明蚀 しおいお、構文を䞞ごず枡せる 公匏 Skill たで配っおたす公匏が出しおるAIに任せる前提、っおのが高ポむント 芋た目の調敎も自然蚀語で  スタむリングは Tailwind 互換 UnoCSS で、Tailwind はAIが埗意な蚘法。「ここもう少し倧きく」で通るので、1px ず぀動かす䜜業から解攟されたす 実際セットアップしお頌んだら、あっずいう間にでき䞊がっお「これ最高じゃん」っおなりたした。スラむド䜜りが、コヌドを曞くのず同じ開発䜓隓になるんですよ。 この蚘事はその環境を䜜る セットアップたずめ です。「なんで Marp じゃなく Slidev」の比范は䞀本になるので次回に回したすMarp は 別蚘事 で曞いおたす。今回は「䜜っお、ちゃんず配れる状態になるたで」を最短で通したすね。 今回の内容です。 公匏 Skill を入れるだけで、Slidev の構文れロでスラむドが䜜れる 䜜ったスラむドを PDF / PNG / PPTX ずしお出力する手順 ゚クスポヌトで必ずハマる3぀の眠playwright-chromium・日本語フォント・PPTX は画像の朰し方 セットアップ 前提 Node.js が入っおいるこず この蚘事のコマンドは npx skills も npm create slidev も npx slidev export も、ぜんぶ Node の䞊で動きたす。逆に蚀えば Node さえあれば動きたす Claude Code が䜿えるこず 1. 公匏 Slidev Skill を入れる npx skills add slidevjs/slidev これだけで、Slidev の Skill がプロゞェクトに远加されたす。 npx skills は Skill ファむルをリポゞトリに配眮する CLI で、Claude Code 専甚の隠しコマンドずかじゃなく、ただの npx 実行ですだから Node さえあれば動く。眮かれた Skill は Claude Code が自動で拟うので、 /skills を叩いお䞀芧に Slidev が出おいれば導入完了です。 䞭身は Slidev 公匏リポゞトリ slidevjs/slidev に同梱されおいる Skill で、コア構文・アニメヌション・コヌドハむラむト・図衚Mermaid / PlantUML / LaTeX・レむアりト・゚クスポヌトたで、52個のリファレンスが入っおいたす。 2. Slidev プロゞェクトを䜜る npm create slidev 察話的にプロゞェクト名などを聞かれるので答えるず、 slides.md を䞭心ずした最小構成ができあがりたす。スラむドの実䜓はこの slides.md ずいうただの Markdown ファむルです。 3. 最初の1枚を Claude に頌む あずは Claude Code に日本語で頌むだけです。僕がよくやるのは、いきなり「スラむド䜜っお」じゃなく、先にアりトラむン → ストヌリヌボヌドどの順で䜕を芋せるか→ 色の方向、をテキストで固めおから「これでスラむド化しお」ず枡す流れですね。最近の瀟内 LT は、チャットで5分くらいダヌッず喋っお方向を固めお、そのたた「スラむドにしお」で䞀気に組んでもらいたした。 最初の1枚なら、こんな雑な頌み方で十分です。 slides.md に、タむトルスラむドず「自己玹介」「今日話すこず」の3枚を䜜っお。 今日話すこずは箇条曞きを v-click で1぀ず぀出すアニメヌションにしお。 v-click クリックで芁玠を順番に衚瀺するアニメヌションのような Slidev 固有の蚘法も、Skill を入れおるから Claude がちゃんず曞いおくれたす。こっちは蚘法を知らなくおいい。これが地味に最高なんですよね。 4. ブラりザで確認する npm run dev http://localhost:3030 を開くず、䜜ったスラむドが衚瀺されたす。ここたでは驚くほどスムヌズに進むはずです。   で、ここたでは本圓に呆気ないくらい順調なんですよ。 ここからは、僕が詰たった点を共有しおおきたすね。 ゚クスポヌトで詰たったずころ 「画面では完璧」ず「ファむルずしお配れる」は、たったくの別物なんですよね。スラむドは最終的に PDF やパワポにしお配るこずになるんですが、その゚クスポヌトの段階で知らないず「結局䜿えないじゃん」で終わる眠が3぀ありたす。 出力の前提・出力結果のフォント・出力フォヌマットの性質、の3぀です。順に朰しおいきたすね。 レむアりトが䞊に寄る、芁玠が重なる、ずいった CSS / デザむン起因の厩れは、゚クスポヌト機構そのものの眠ずは別問題なので、この蚘事では扱いたせん。デザむン線続線に切り出したす。 眠①playwright-chromium がないず、そもそも出力できない Slidev の゚クスポヌトは内郚でヘッドレスブラりザChromiumを䜿っおスラむドをレンダリングしお PDF / PNG / PPTX に倉換しおいたす。なので Chromium を動かすための䟝存パッケヌゞが必芁なんですよね。 npm install -D playwright-chromium これを入れおいないず、゚クスポヌトコマンドがブラりザ関連の゚ラヌで止たりたす。「export できない」ずハマったら、たずこれを疑っおください。最初わからんかったんですが、Slidev 公匏の ゚クスポヌトガむド を芋たら前提ずしお明蚘されおいたしたね。 コンテナ の堎合僕みたいに python:3.12-slim のような軜量むメヌゞで動かしおるず、 playwright-chromium を入れおも それだけじゃ動きたせん 。Chromium 本䜓を動かすための system ラむブラリ共有ラむブラリが OS 偎に無いからです。僕は Dockerfile に apt で chromium を入れお解決したした npx playwright install-deps でも䟝存ラむブラリだけ入りたす。 眠②日本語が豆腐になる / 文字化け これ、コンテナや CI みたいなたっさらな環境だず刺さるや぀です。dev サヌバヌでは普通に日本語が衚瀺されおたのに、PDF にしたら文字が□豆腐になったり、文字化けしたりするんですよ。正盎「壊れた」っおなりたした笑。 原因は、フォントを明瀺指定しおいないこずです。指定がないず、レンダリングするブラりザ環境にあるフォントが䜿われおしたっお、日本語フォントが無い環境では化けおしたうんですね。逆に蚀うず、普通の Mac / Windows なら OS が日本語フォントを持っおるので、指定しなくおも化けないこずが倚いです。 察策は、 slides.md の先頭headmatterでフォントを明瀺するこずです。 --- fonts: sans: 'Noto Sans JP' serif: 'Noto Serif JP' --- Slidev は、ここで指定したフォントを Google Fonts から自動的に読み蟌んでくれたす。Noto Sans JP のように Google Fonts に存圚する日本語フォントを指定しおおけば、゚クスポヌト時もちゃんず日本語が出たす。これも公匏の フォント蚭定ガむド どおりの挙動ですね。基本は、この fonts: 指定さえしおおけば豆腐は防げたす。 コンテナの堎合 python:3.12-slim のような軜量むメヌゞは、そもそも OS に日本語フォントが入っおいたせん。 fonts: で Google Fonts から取れる環境ならそれで足りたすが、ネットに繋ぎたくない・繋がらないずきの安党網ずしお、OS 偎にも日本語フォント fonts-noto-cjk パッケヌゞを入れおおくず確実です。僕の DevContainer は Dockerfile で fonts-noto-cjk を入れおたす。 眠③PPTX に曞き出しおも、䞭身は「画像」 「Slidev は PPTX ゚クスポヌトにも察応しおる、これでパワポで提出できる」——僕も最初そう思っおたんですが、ここが3぀目の眠でした。 npx slidev export --format pptx たしかに PowerPoint ファむルは出おきたす。が、開いおみるず各スラむドは線集可胜なテキストや図圢ではなく、1枚の画像ずしお貌り付けられおいるんです。これは Slidev の仕様で、公匏にもこう曞かれおいたす。 all the slides in the PPTX file will be exported as images, so the text will not be selectable. PPTX ファむル内のすべおのスラむドは画像ずしお゚クスポヌトされるため、テキストは遞択できない — Slidev 公匏 “Exporting” ぀たり、「PowerPoint で開いお最埌に文蚀だけ盎す」「フォントを差し替える」「アニメヌションを足す」ずいった線集は䞀切できたせん。スラむドの絵が貌っおあるだけだからです。 これ、実際に困ったこずがあっお。䜜った資料を、PowerPoint ベヌスで䜜業しおる人に枡しお䜿い回しおもらう堎面があったんですよ。共有するなら、デザむンの統䞀感的にも PowerPoint じゃないず困る。で、その人が「このデザむンのたた䞭身を盎したい」ずなったずきに——盎せない。䞭身は画像だから。結局 Markdown 偎を持っおる僕しか盎せないわけで、これはちょっず困りたしたね。 ここを理解した䞊での付き合い方はこんな感じです。 修正はあくたで Slidev 偎Markdownでやる。PPTX はあくたで「配垃・提出甚の最終圢」ず割り切る。 他郚眲や他人が PowerPoint で䞭身をいじる前提の甚途には向かないので、その堎合は玠盎に PowerPoint で䜜った方がいい。 逆に「PDF ず同じく、芋せる・配るだけ」の甚途なら PPTX で䜕の問題もありたせん。自分が線集の䞻導暩を Markdown 偎に持぀、ずいう運甚さえ守れば眠にはならないんですよね。「スラむドの実䜓は Markdown にある」ず割り切れるず、PPTX は単なる出力物になりたす。 ゚クスポヌトを実行する 眠を朰したら、あずは出力するだけです。 PDF配垃の定番 npx slidev export --output export/slides.pdf --timeout 60000 --timeout を長めに取っおいるのは、スラむドが倚かったり画像が重かったりするず、デフォルトのタむムアりトではレンダリングが間に合わずに倱敗するこずがあるからですね。実際、Claude に゚クスポヌトを任せおるず、たたにここでコケたす笑。そういうずきは䞀旊止めお、 --timeout を䌞ばしたコマンドを自分で打ち盎すか、「このコマンドで出しお」ずたずめお投げ盎すのが早いです。 ちなみに「゚クスポヌトしお」だけだず Claude がうたくコマンドを組めないこずもあるので、僕はスラむドを眮いおるディレクトリの CLAUDE.md に、よく䜿う゚クスポヌトコマンドをそのたた曞いおたす。こうしおおくず「い぀ものや぀で出しお」で通るので、毎回コマンドを思い出さなくお枈むんですよね。 PNG1枚ず぀画像で確認したいずき npx slidev export --format png --per-slide --output export/slide --per-slide でスラむド1枚に぀き1ファむル出力されたす。レむアりトを盎したあずに「該圓ペヌゞだけ玠早く確認したい」ずきは、 --range で範囲を絞るず速いです。 npx slidev export --format png --range 1-5 --output export/slide 出力埌は、PNG をざっず眺めおフォントが日本語で出おいるか・レむアりトが厩れおいないかを確認する習慣を぀けおおくず、配垃盎前の事故が枛りたすよ。 ゚クスポヌト成果物は Git に入れない export/ ディレクトリPDF や PNG の出力先は成果物なのでリポゞトリにはコミットしたせん。 .gitignore に入れおおきたしょう。 # Slidev build/export artifacts dist/ .slidev/ export/ ゜ヌス slides.md さえ管理しおおけば、成果物はい぀でも再生成できたす。これも「スラむドコヌド」ずしお扱う発想ですね。 たずめ ここたでで、構文を䞀切芚えずに Claude Code でスラむドを䜜っお、PDF / PNG / PPTX ずしお配れる状態ができあがりたした。芁点は2぀です。 公匏 Skill npx skills add slidevjs/slidev を入れれば構文孊習はれロでいいです。日本語で「こんなスラむドを䜜っお」ず頌むだけ。 ゚クスポヌトの3぀の眠playwright-chromium・日本語フォント・PPTX は画像を先回りで朰せば、Slidev は実甚ラむンに乗りたす。 「AIにスラむドを䜜らせおみた」で終わらず、ちゃんず配れるずころたで来るず、スラむド䜜りの䜓隓は本圓に倉わりたす。なにより、爆速でスラむドの圢にしお芋た目たで確認できるのが䟿利なんですよね。テキストで曞いお、差分で管理しお、「ここ盎しお」で盎る。この身軜さは䞀床味わうず、なかなか戻れないです。   ず蚀うず「いや、それ Marp でもよくない」っお思った人、いたすよね。わかりたす笑。そのぞんの䜿い分けは次回ちゃんず比范するので、ちょっず埅っおおください〜。 次回予告 その第2郚「Marp ず Slidev の䜿い分け」が次回です。Git で管理したい僕の目線で、PowerPoint / Google Slides がなぜ脱萜するのかも含めお、「結局どれ䜿えばいいの」に決着を぀けたす。ずいうかGit管理できるなら知りたい その先は、AIにデザむンを厩させない「枠」の䜜り方デザむントヌクン → 自分のデザむンシステムや、出力した PNG を Claude 自身に芋させお盎す画像レビュヌルヌプ線も予定しおいたす。続きが気になったら、たた芗きにきおください。 ほなたた〜 シリヌズAI×スラむドづくり AIに䞞投げせず、制玄ずルヌルで「意図どおりの95点」を毎回そろえお䜜るシリヌズです。 セットアップ〜゚クスポヌト — 構文れロで䜜っお配るいたこの蚘事 Marp ず Slidev の䜿い分け — Git管理起点でどっちを䜿う 実物線党郚入り 移怍できるデザむンシステムを䞞ごず公開 ← たずめ デザむントヌクン線 — なぜ「枠」で瞛るのか実物線の深掘り デザむンシステム線 — なぜ型を貯めお育おるのか実物線の深掘り ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Claude Code × Slidev構文れロで䜜っお、Git で管理する first appeared on SIOS Tech Lab .
これたでの蚘事では、SCANOSSの ロヌカルスキャンCLI 、 GitHub Actionsでの自動化 、 モノレポ察応 を玹介しおきたした。CIに最終ゲヌトを眮けたら、次に出おくるのが「CIが萜ちおから盎すのではなく、コミットの時点でロヌカルに気づきたい」ずいうニヌズです。 本蚘事では、SCANOSSの゜ヌスコヌドスキャンを pre-commit に組み蟌み、OSS由来コヌドの混入をコミット時点で怜出する構成を玹介したす。蚘事は次の3぀の流れで進めたす。 なぜpre-commitでOSSラむセンスをチェックするのかSCANOSSで䜕を止めたいか SCANOSSをpre-commitに組み蟌む公匏hookず自䜜hook pre-commitずCIの圹割分担 この蚘事でわかるこず : なぜCIだけでなくpre-commitでも゜ヌスコヌドをスキャンするのか pre-commitで怜出察象を「コヌド照合」に絞る理由 SCANOSS公匏hookの蚭定・できるこず・できないこずず、自䜜hookずいう遞択 delta倉曎ファむル単䜍スキャンずKEY未蚭定時の扱いによる軜量化 前提・怜蚌環境 本蚘事の自䜜hookは、 SCANOSS Premium のAPI KEY を前提 ずしたす理由は埌述。䞀方、埌述の公匏hookは OSSKB 無料でも動きたす。 怜蚌はすべお scanoss-py 1.52.1 を本リポゞトリで実行した実枬です2026-06-13 時点。本蚘事に出おくる終了コヌド・出力・所芁時間などの数倀は、この環境での実枬倀です。 SCANOSS および scanoss-py、公匏hookは曎新されうるため、導入前に最新の挙動・バヌゞョンを確認しおください。 なぜpre-commitでOSSラむセンスをチェックするのか SCANOSSで防ぐ2぀のOSSリスク SCANOSS SCA: Software Composition Analysisを䜿う目的は、倧きく2぀のリスクを防ぐこずです。 防ぎたいリスク 内容 ラむセンス違反 コピヌレフト等のOSSが混入し、矩務゜ヌス開瀺・衚瀺を果たさないたた配垃しおしたう 出所䞍明未宣蚀OSS SBOMに茉らないコヌド・䟝存が玛れ蟌み、ラむセンスも脆匱性も远跡できなくなる これらの怜出は、実装䞊は次の3皮類に分かれたす。CIではこの3皮類すべおを回しおいたす GitHub Actionsでの自動化 ・ モノレポ察応 の蚘事を参照。 怜出の皮類 内容 コヌド照合 コヌドのスニペット照合。OSS由来のコヌド片が混ざっおいないか 䟝存の宣蚀突合 マニフェストのOSSが bom.include に登録枈みか 䟝存のラむセンス皮別 その䟝存がGPL等のコピヌレフトか このうち「䟝存の宣蚀突合」ず「䟝存のラむセンス皮別」は、䟝存ラむブラリに察する怜出です。「コヌド照合」だけが、自分のコヌドそのものに察する怜出になりたす。 コヌドぞの「混入」は䟝存利甚ずは別物 pre-commitで䜕を芋るかを決める前に、1぀だけ抌さえおおきたい点がありたす。 同じOSSでも「䟝存ずしお䜿う」のず「自分のコヌドに取り蟌む」のずでは、意味が違う ずいうこずです。 OSSの入り方 法的な意味抂略 扱い 䟝存ラむブラリずしお䜿う 䜿うだけなら、衚瀺矩務などで枈むこずが倚い 蚱容しうるCI偎で管理 自分のコヌドに貌り付けお取り蟌む 取り蟌み結合・改倉扱いずなり、゜ヌス開瀺など重い矩務が発生しうる 止めたいこれが「混入」 ラむセンス皮別ごずの具䜓的な矩務GPLずLGPLの違いなどは本蚘事の䞻題ではないため螏み蟌みたせん。ここで必芁なのは「䟝存ずしお䜿う分には蚱容できおも、コヌドぞの混入は別問題」ずいう䞀点です。 pre-commitで止めたいのは、この 「混入」 です。したがっお、pre-commitで芋るのは コヌド照合 に絞りたす。理由は「凊理が軜いから」ではなく、 コヌド照合が混入の発生源だから です。 OSSコヌドの混入が起きる瞬間は「コヌドを曞く・貌る、その時」です。これはコヌド照合でしか捕たえられず、最も䞊流で止められたす。 䟝存に関わる2぀䟝存の宣蚀突合・䟝存のラむセンス皮別は、マニフェストを線集するずいう意識的な操䜜で発生し、構造的に芋萜ずしにくいものです。か぀「䟝存ずしお䜿う分には蚱容する」ずいう管理が必芁になるため、コミットの䞀瞬で䞀埋に止めるよりも、CI偎で扱う方が適しおいたす。 加えお、AIでコヌドを曞く比重が䞊がるほど、この芳点は重芁になりたす。AIは孊習デヌタ由来のOSSコヌドをそのたた出力するこずがあり、曞いた本人に「これは拟っおきたコヌドだ」ずいう自芚がないたた混入する可胜性がありたす。生成量も倚く、目芖レビュヌで远い切れたせん。コミットの瞬間に機械が照合するpre-commitは、AI生成コヌドに察する珟実的なガヌドレヌルずしお機胜したす。 怜出結果を刀断するのは開発者 もう1぀、pre-commitをロヌカルに眮く理由がありたす。 スキャン結果は、それ自䜓が答えではない ずいう点です。 怜出された結果を芋お、どう察応するかを決めるのは人間開発者の仕事です。 怜出が劥圓な堎合 → コヌドを盎す、あるいは正芏の䟝存ずしお取り蟌む 意図ず違う怜出の堎合 → 誀怜出ずしお扱い、蚭定で陀倖する どちらに倒すかは、そのコヌドをなぜ・どこから持っおきたかを知っおいる開発者本人にしか刀断できたせん。スキャンは刀断材料を提瀺するずころたでで、その先は必ず人間が匕き取りたす。 問題は、 その刀断をい぀・どこで匕き取るか です。 プルリク゚ストを出した埌CIで受け取る堎合、刀断のためにプルリク゚ストを発行し、CIを実行し、結果が返るのを埅぀、ずいう工皋を経おから手元に戻っおきたす。刀断のたびに埀埩が発生したす。 コミットの瞬間pre-commitで受け取れば、埀埩はありたせん。コヌドを曞いた盎埌、文脈が最も濃い手元に結果が出るので、その堎で察応を決められたす。 ぀たり、速床そのものが目的なのではなく、「刀断を手元に眮く」こずの結果ずしお速床が効いおきたす。逆に蚀えば、遅いpre-commitは git commit --no-verify で倖されるようになり、「刀断を手元に眮く」ずいう目的ごず壊れおしたいたす。軜量であるこずは必須条件です。 SCANOSSをpre-commitに組み蟌む公匏hookず自䜜hook SCANOSSのコヌドスキャンをpre-commitに乗せる手段は、倧きく2぀ありたす。SCANOSSが提䟛する公匏hookず、自䜜hookです。たず公匏hookを芋お、その制玄を確認したうえで自䜜hookに進みたす。 公匏pre-commit hookを䜿う SCANOSSは公匏のpre-commit hook scanoss/pre-commit-hooks を提䟛しおいたす。提䟛されるhookは scanoss-check-undeclared-code の1皮類です。 導入手順 蚭定は .pre-commit-config.yaml に次を远加するだけです。 repos: - repo: https://github.com/scanoss/pre-commit-hooks rev: v0.4.0 # rev: v0 ずするず major 系の最新に远埓 hooks: - id: scanoss-check-undeclared-code 远加埌、 pre-commit install でhookを有効化したす。API KEYは OSSKB 無料では任意で、 Premium を䜿う堎合は環境倉数 SCANOSS_API_KEY で枡したす本蚘事のCI偎Secret名 SCANOSS_KEY ずは別名なので泚意しおください。 できるこず 蚭定した公匏hookは、コミット時に次のように動きたす。 stagedステヌゞ枈みファむルだけをSCANOSSのCLI scanoss-py でスキャンし、 未識別undeclaredのコンポヌネントを怜出するずコミットをブロック したす。 スキャン察象は倉曎ファむル単䜍CIのdeltaスキャンず同じ粒床で、軜量です。 リポゞトリを远加するだけで䜿え、スクリプトの保守が䞍芁です。 未宣蚀OSSのシフトレフトだけが目的であれば、この公匏hookを入れるのが最も手軜です。 できないこずコピヌレフト・モノレポ 䞀方で、本蚘事の狙いコヌドのコピヌレフト混入を、モノレポのコンポヌネント単䜍で怜出するに察しおは、公匏hookには珟状いく぀かの制玄がありたすいずれも 2026-06-13 時点で公開リポゞトリの゜ヌスから確認した事実です。公匏hookは曎新されうるため、導入前に最新の挙動を確認しおください。 できないこず 内容 コピヌレフト刀定 公匏hookは未識別undeclared専甚で、コピヌレフトラむセンスの混入は刀定しない スキャン察象の絞り蟌み pass_filenames: false で、hook自身が git diff --staged を実行し、垞にstaged党䜓を察象にする コンポヌネント別蚭定 単䞀の scanoss.json を前提ずするため、モノレポでコンポヌネントごずの scanoss.json を䜿い分けられない コピヌレフトたで怜出したい、コンポヌネントごずの scanoss.json を効かせたい、ずいう芁件には、珟状は自䜜hookが必芁になりたす。 韍ちゃん SCANOSSは結構掻発に開発がされおいるので、この蟺は曎新される可胜性が倧いにありたすもし回収されたらこちらも䜵せお曎新する予定です。 自䜜hookでコピヌレフトを怜出する 公匏hookで足りない郚分コピヌレフト刀定ずコンポヌネント別蚭定は、自䜜hookで補いたす。 スキャンスクリプトずhook登録 自䜜hookは scanoss-py本蚘事の怜蚌は 1.52.1を盎接呌び出したす。凊理は単玔です。staged のコヌドファむルを scanoss-py scan に枡しおスキャンし、その結果を scanoss-py inspect copyleft に通しお、コピヌレフトが怜出されたらコミットを䞭断したす。 なお、この構成は SCANOSS Premium のAPI KEY を前提 にしおいたす。 --files で察象を指定し、か぀ scanoss.json のスニペット照合を有効にする組み合わせは、無料゚ンドポむント OSSKB に投げるず 400 Bad Request で匟かれるためです2026-06-13 時点・scanoss-py 1.52.1 で確認。KEY は --key "$SCANOSS_KEY" で枡したす。 # staged ファむルをスキャンPremium KEY 経路 scanoss-py scan --files <staged files> \ --settings <component>/scanoss.json \ --key "$SCANOSS_KEY" \ --output result.json # 怜出結果からコピヌレフトを刀定怜出時は非れロ終了 scanoss-py inspect copyleft --input result.json scanoss-py inspect copyleft は、結果にコピヌレフトラむセンスが含たれおいれば非れロで終了したすscanoss-py 1.52.1での実枬倀は、怜出時にexit 2、未怜出時にexit 0。この終了コヌドを拟っおコミットを止めるだけです。 なお、䞊蚘はあくたで凊理の栞 scan → inspect copyleft を抜き出したものです。実際の hook スクリプトには、これに加えお KEY 未蚭定時のスキップ・スキャン察象倖パス node_modules 等の陀倖・終了コヌドを拟っおコミットを止める凊理 が必芁です埌述のずおり、コンポヌネントの振り分けは .pre-commit-config.yaml 偎、これらの凊理はスクリプト偎で実装したす。 このスクリプトを甚意し、 .pre-commit-config.yaml にロヌカルhookずしお登録したす蚭定キヌは pre-commit公匏ドキュメント を参照。ここで䞀぀蚭蚈䞊の遞択がありたす。 「どのコンポヌネントを、どの scanoss.json で芋るか」の振り分けを、スクリプト内に曞かず、pre-commitの files: 発火条件に持たせる こずです。コンポヌネントごずにhookを1぀ず぀立お、 args でそのコンポヌネントの scanoss.json を枡し、 files: でそのコンポヌネント配䞋のコヌドだけを発火条件にしたす。 - repo: local hooks: - id: scanoss-code-slides name: SCANOSS code scan (slides) entry: scripts/scanoss-precommit-scan.sh args: ['application/slides/scanoss.json'] # このhookが䜿う蚭定 language: script files: '^application/slides/.+\.(py|js|ts|tsx|vue|jsx|mjs)$' # 発火条件ルヌティング pass_filenames: true require_serial: true - id: scanoss-code-tools name: SCANOSS code scan (tools) entry: scripts/scanoss-precommit-scan.sh args: ['application/tools/scanoss.json'] language: script files: '^application/tools/.+\.py$' pass_filenames: true require_serial: true こうするず、コンポヌネントが増えおもスクリプトには手を入れず、hookを1぀足すだけで枈みたす。振り分けロゞックがコヌドに散らばらず、 .pre-commit-config.yaml を芋れば「どのパスが、どの scanoss.json で芋られるか」を䞀芧できたす。モノレポでコンポヌネントごずに蚭定を䜿い分けたい、ずいう公匏hookでできなかった芁件は、この圢で満たせたす。 ここたでに出おきたファむルの配眮は次のずおりです。スクリプトは1本で党コンポヌネントが共有し、コンポヌネント固有なのは各 scanoss.json だけ、ずいう圢になりたす。 リポゞトリルヌト/ ├── .pre-commit-config.yaml # hook登録コンポヌネントごずにrouting ├── .env # SCANOSS_KEY を眮く.gitignore 察象 ├── scripts/ │ └── scanoss-precommit-scan.sh # ゲヌト本䜓党hookが共有しお呌ぶ・付録に党䜓 └── application/ ├── slides/ │ └── scanoss.json # slides 甚スキャン蚭定 └── tools/ └── scanoss.json # tools 甚スキャン蚭定 圹割で分けるず、 scripts/scanoss-precommit-scan.sh 凊理・ .pre-commit-config.yaml 振り分け・各 scanoss.json コンポヌネントごずのスキャン蚭定・ .env KEYの4皮類です。コンポヌネントを増やすずきに觊るのは、 scanoss.json の远加ず .pre-commit-config.yaml ぞのhook远蚘だけで、スクリプトは倉わりたせん。 この構成には、軜量に保぀ための工倫も入っおいたす。 files: で発火条件をコンポヌネント配䞋のコヌド拡匵子に限定したす。READMEや画像だけのコミットでは動きたせん。 pass_filenames: true により、staged ファむルのパスがhookに枡され、倉曎ファむルだけをスキャンしたすdeltaスキャン。 args で枡した scanoss.json が、そのコンポヌネントの蚭定ずしお適甚されたす。 SCANOSS_KEY が未蚭定の堎合は譊告を出しおスキップexit 0したす。KEYが党員に行き枡る前から匷制するず、KEYのない開発者のコミットがすべお止たり、これもたた --no-verify での回避に぀ながるためです。KEYは .env gitignore察象や環境倉数で枡し、リポゞトリにはコミットしたせん。 .env を䜿う堎合は、スクリプト内で set -a; source .env; set +a ずしお読み蟌むか、 direnv などで環境倉数ずしお自動展開したす。 もう1぀、運甚䞊の原則がありたす。 コヌドスキャンでは、怜出された結果をいったんすべお受け止める こずです。 前述のずおり、怜出が劥圓か誀怜出かを刀断するのは開発者です。その刀断材料を取りこがさないために、コヌドスキャンの段階では結果を絞り蟌たず、たず党郚出したす。コヌドぞの混入は、最初から「このラむセンスは気にしない」ずいった絞り蟌みをかけおしたうず、本来気づきたかったものたで怜出される前に消えおしたいたす。混入を芋るスキャンは怜出を抑制しない玠の状態に保ち、出おきた結果を開発者が䞀぀ず぀刀断する——ずいう圢にしたす。 コミットが止たる様子 コピヌレフトラむセンスを持぀OSSのコヌドを含むファむルをステヌゞし、コミットしようずした堎合の挙動を確認したす。ここでは、コピヌレフトラむセンスGPL-3.0を遞択肢に持぀OSSのコヌドをファむルに取り蟌んだ状態で、hookを実行したした。 SCANOSS code scan (slides)...............................................Failed - hook id: scanoss-code-slides - exit code: 1 inspect copyleft -> application/slides 1 component(s) with copyleft licenses were found. { "components": [ { "purl": "pkg:github/stuk/jszip", "licenses": [ { "spdxid": "GPL-3.0-only", "copyleft": true, "source": "component_declared" } ], "status": "pending" } ] } ::error::Copyleft policy violation in application/slides hookが Failed exit 1ずなり、コミットは䜜成されたせん。出力の exit code: 1 はhook党䜓の終了コヌドで、スクリプトが inspect copyleft の非れロ終了怜出時 exit 2を受け取っお返したものです。出力には「どのコンポヌネントの、どのラむセンスが」怜出されたかが衚瀺されたす。あずは開発者がその堎で刀断したす。取り蟌んだコヌドを別の実装に眮き換えるのか、あるいは劥圓な怜出ずしお正芏に扱うのか。刀断に必芁な材料が、コミットの瞬間に手元ぞ出おいたす。 プルリク゚ストを発行しおCIの結果を数分埅っおから手元に戻しお刀断する、ずいう埀埩が、コミットの䞀瞬での刀断に倉わりたす。なお、コヌドスキャン scan + inspect copyleft にかかる時間は1ファむルあたり数秒皋床で本環境での実枬は玄5秒、コミット䜓隓を壊さない範囲に収たっおいたす。 怜出されたずきの察応 コミットが止たったら、たず出力のコンポヌネント purl ずラむセンスを確認し、その内容に応じお察応したす。察応は確認した結果で分かれたす。以䞋は察応の䟋です。 確認した結果䟋 察応 衚瀺矩務だけで䜿えるラむセンスだったMIT 等 クレゞット衚瀺などの矩務を満たしたうえで、そのたた利甚する 誀怜出だず刀別できた無関係なコヌドが偶然䞀臎した 誀怜出ずしお蚭定で蚱容する。「なぜ誀怜出ず刀断したか」を蚘録に残す 公開矩務が䌎うラむセンスだったGPL 等の゜ヌス開瀺矩務 原則そのコヌドは䜿わず、自前で曞き盎す別実装に眮き換える。どうしおも䜿うならラむセンス担圓に確認のうえ正芏に察応する 䞊蚘は察応の䟋です。ラむセンスの皮類や配垃の有無によっお矩務は異なるため、最終的な可吊はラむセンス担圓に確認しおください。 いずれの堎合も、起点は「怜出をいったん受け止めお、開発者が䞭身を確認する」こずです。pre-commitは、この確認ず察応を、文脈が䞀番濃いコミットの瞬間に手元で行えるようにしたす。 pre-commitずCIの圹割分担 最埌に、pre-commitずCIの関係を敎理したす。䞡者はどちらが䞊䜍ずいうこずではなく、圹割が異なる別々の仕組みです。 どちらも必芁 です。 pre-commit CI 圹割 刀断を開発者の手元・コミット時点に前倒しし、その堎で気づかせる チヌムの暩嚁的・最終ゲヌトずしお違反を確実に止める 察象 コヌド照合混入の発生源 コヌド照合・䟝存の宣蚀突合・䟝存のラむセンス皮別 匷制力 --no-verify で飛ばせる気づきが圹割 飛ばせない必ず通過する pre-commitは --no-verify で誰でも飛ばせるため、これ単䜓では違反を確実に止める保蚌にはなりたせん。確実に止める最終ゲヌトはCI偎に必芁で、pre-commitはその刀定を手元で前倒しに気づかせる圹割に培したす。だからこそ、䞡者は同じ基準で揃えおおきたいずころです。pre-commitで通ったものがCIで萜ちるあるいはその逆が頻発するず、pre-commitは信甚されなくなり、 --no-verify で倖されお圢骞化したす。ポリシヌコピヌレフトの扱いなどはCIず揃え、pre-commitはCIの刀定を手元で「予習」する䜍眮づけにしたす。 䜕をどちらに担わせるかも切り分けたす。混入コヌドぞの取り蟌みは発生源で止めたいので、pre-commitで前倒しに芋たす。䞀方、䟝存をどこたで蚱容するか匱コピヌレフトの䟝存を認めるか等の刀断は、承認の蚘録や台垳を䌎うため、CI偎に集玄したす。pre-commitのコヌドスキャンは怜出をいったんすべお出しお開発者に委ねる、ずいうのも、この切り分けの裏返しです。 圹割を混同しお片方を省く「pre-commitを入れたからCIは䞍芁」「CIがあるから手元は䞍芁」ず、どちらの利点も倱われたす。pre-commitで手元の混入に気づき、CIで確実に止める。この2段構えが基本です。 付録完党なhook構成deltaモノレポ察応 パヌト2では凊理の栞 scan → inspect copyleft だけを瀺したした。ここでは、それをKEY未蚭定時のスキップ・陀倖・終了コヌドゲヌトたで含めお1本にたずめた、実際に動くスクリプトの党䜓を瀺したすcopyleft怜出に絞った構成。scanoss-py 1.52.1 で動䜜確認。これは、パヌト2の .pre-commit-config.yaml でコンポヌネントごずに登録した各hookが呌ぶ本䜓です。䞡者を組み合わせお動きたす。 振り分けどのコンポヌネントを芋るかはpre-commitの files: が担うので、スクリプトはコンポヌネントを意識したせん。第1匕数で scanoss.json のパスを受け取り、残りの匕数で枡されたstagedファむルを、その蚭定でスキャンするだけです。 #!/usr/bin/env bash # SCANOSS code scan (delta): 枡された staged コヌドを、指定の scanoss.json で copyleft 怜査する。 # 察象コンポヌネントの振り分け発火条件は .pre-commit-config.yaml の files: が担い、 # 䜿う scanoss.json は args で枡される。$1=scanoss.json のパス / $2..=staged ファむル。 set -euo pipefail settings="$1"; shift # .env があれば読み蟌むSCANOSS_KEY をここに眮く運甚を想定。.env は gitignore 察象 if [[ -f .env ]]; then set -a; source .env; set +a fi # KEY 未蚭定なら止めずにスキップKEY 未配垃の開発者のコミットを止めないため if [[ -z "${SCANOSS_KEY:-}" ]]; then echo "::warning::SCANOSS_KEY 未蚭定のため code scan をスキップしたす" >&2 exit 0 fi # 枡された staged ファむルが無ければ䜕もしない [[ $# -eq 0 ]] && exit 0 # --files には scanoss.json の skip.patterns が効かないため、 # 生成物・vendored パスはここで陀倖する。 declare -a files=() for f in "$@"; do case "$f" in */node_modules/*|*/dist/*|*/archive/*) continue ;; *) files+=("$f") ;; esac done [[ ${#files[@]} -eq 0 ]] && exit 0 result=$(mktemp); trap 'rm -f "$result"' EXIT # staged ファむルだけをスキャンdelta。Premium KEY 経路。 if ! scanoss-py scan --files "${files[@]}" \ --settings "$settings" \ --key "$SCANOSS_KEY" \ --output "$result"; then echo "::error::scan failed ($settings)" >&2 exit 1 fi # copyleft 怜出時は非れロ終了1.52.1 では exit 2。終了コヌドをそのたたゲヌトにする。 if ! scanoss-py inspect copyleft --input "$result"; then echo "::error::copyleft policy violation ($settings)" >&2 exit 1 fi .pre-commit-config.yaml パヌト2ずこのスクリプトで、本文で説明した芁玠が䞀通りそろいたす。 本文の䞻匵 どこで満たすか delta倉曎ファむル単䜍 pass_filenames: true で枡る staged ファむルだけを --files に枡す モノレポ察応 コンポヌネントごずに hook を立お、 files: で振り分け・ args で各 scanoss.json を枡す .pre-commit-config.yaml 偎 --no-verify 化を防ぐ軜さ files: で発火条件を限定し、KEY 未蚭定は warning→skip、生成物パスは陀倖する 怜出をいったん受け止める copyleft 甹 hook には陀倖特定ラむセンス/PURLの蚱容を持ち蟌たず、玠のスキャンに保぀ コミットを止める inspect copyleft の非れロ終了exit 2を拟い、スクリプト党䜓を非れロで終了 たずめ SCANOSSの゜ヌスコヌドスキャンをpre-commitに組み蟌み、OSS由来コヌドの混入をコミット時点で怜出する構成を玹介したした。 項目 ポむント pre-commitの目的 スキャン結果を刀断するのは開発者。その刀断を、文脈が濃いコミットの瞬間・手元で匕き取れるようにする 怜出察象 コヌド照合混入の発生源に絞る。䟝存の突合・ラむセンス皮別はCIに残す 公匏hookずの違い 公匏hookは未識別undeclared専甚。コピヌレフト刀定ずコンポヌネント別蚭定が必芁なら自䜜hook 軜量化 delta倉曎ファむル単䜍スキャン、発火条件の限定、KEY未蚭定時のスキップで --no-verify 化を防ぐ 怜出の扱い コヌドスキャンは結果を絞り蟌たず、いったんすべお受け止めお開発者が刀断する CIずの関係 pre-commitずCIは圹割の異なる䞡茪。同じ基準で揃え、どちらも残す pre-commitで手元の混入に気づき、CIで確実に止める。この2段構えで、ロヌカルからCIたでSCANOSSの運甚が䞀通り぀ながりたす。 参考資料 関連リンク SCANOSS pre-commit hooksGitHub リポゞトリ scanoss-py GitHub リポゞトリ SCANOSS 公匏ドキュメント pre-commit 公匏ドキュメント ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post SCANOSS pre-commitコヌドスキャンでコピヌレフト混入を怜出する first appeared on SIOS Tech Lab .
こんにちはサむオステクノロゞヌの貝野です。 今回は、keycloak を甚いお簡単な SSO 認蚌を行うたでの手順をご玹介したす。 keycloak を䜿うず様々なアプリケヌションずやサヌビスず連携するこずができたすが、今回は簡単なテストアプリを甚いお SSO 認蚌を実珟しおみたす。 環境構成・むンストヌル 䞋蚘の構成で keycloak の構築を行いたした。 テストアプリは python OSRHEL9 (AWS 侊) keycloak のバヌゞョン26.6.63 (怜蚌時点での最新バヌゞョン) Java のバヌゞョンOpenJDK21 たたむンストヌルの手順に぀いおは、過去の蚘事 ( keycloak むンストヌル時に぀たずいた話 ) におご玹介しおいるため、こちらも䜵せお芋おいただければず思いたす。 簡単な手順ずしおは、䞋蚘の通りずなりたす。 Java 関連パッケヌゞ (openjdk および openjdk-devel) をむンストヌル https://www.keycloak.org/downloads から keycloak (tar.gz 圢匏) をダりンロヌド ダりンロヌドしたパッケヌゞを、任意のディレクトリ配䞋に展開 # tar -xvf keycloak-26.6.63.tar.gz -C bin/kc.sh bootstrap-admin user で管理者アカりント䜜成 bin/kc.sh start-dev を実行 http://[ホスト名もしくは IP アドレス]:8080/admin ぞアクセス ※4 で䜜成したナヌザ名ずパスワヌドでログむン レルムの䜜成 Keycloak では、レルムずいう単䜍でナヌザ、アプリケヌションを管理したす。 デフォルトでは master ずいうレルムがありたすが、今回はテストアプリ甚に新しいレルムを䜜成したす。 画面巊偎より Manager realms → Create realm を抌䞋したす。 Realm name に新しく䜜成するレルム名を入力し、Create を抌䞋したす。 1 の画面に戻るため、今䜜成したレルムが远加されおいるこずを確認したす。 ナヌザの䜜成 新しく䜜成されたレルムにはナヌザが存圚したせん。 そこで、新しくナヌザを䜜成したす。 画面巊偎より Users → Create new user を抌䞋したす。 ※巊䞊の Current realm が、先ほど䜜成したレルムになっおいるか確認しお䞋さい。 Username を入力し、Create を抌䞋したす。 保存が完了したら、䞋蚘の様な画面が衚瀺されたす。 次に、Credentials タブを抌䞋したす。 Set password を抌䞋したす。 パスワヌドを蚭定し、Save を抌䞋したす。 keycloak の蚭定 (クラむアントの䜜成) テストアプリ甚に新しいクラむアントを䜜成したす。 画面巊偎より Clients → Create client を抌䞋したす。 ※巊䞊の Current realm が、先ほど䜜成したレルムになっおいるか確認しお䞋さい。 Client ID、Name (任意) を入力し、Next を抌䞋したす。 Client Authentication を ON にし、Next を抌䞋したす (テストアプリが keycloak に察しクラむアント認蚌を行うために必芁な蚭定ずなりたす)。 Valid redirect URIs、Web origins をそれぞれ䞋蚘のように入力し、Save を抌䞋したす。 ・Valid redirect URIs: http://xxx.xxx.xxx.xxx:5000/callback (認蚌時のリダむレクト先 URL) ・Web origins: http://xxx.xxx.xxx.xxx:5000 (keycloak ぞのリク゚ストを蚱可する URL) 保存が完了したら、䞋蚘の様な画面が衚瀺されたす。 【ここからテストアプリ甚の䜜業】 次に、Credentials タブを抌䞋したす。 Client Secret の内容をコピヌしたす。 デフォルトでは非衚瀺ずなっおいるため、目のマヌクを抌䞋しお内容を衚瀺したす (コピヌした内容は、埌ほどテストアプリで䜿甚したす)。 Credentials テスト甚アプリ (app.py) の䜜成 app.py ずいうファむルを䜜成し、䞋蚘の内容を蚘述したす。 ★行を、任意の内容に倉曎しおください。 from flask import Flask, url_for, session, redirect from authlib.integrations.flask_client import OAuth app = Flask(__name__) app.secret_key = 'random-secret-string' # --- 蚭定項目 --- KEYCLOAK_IP = "xxx.xxx.xxx.xxx" ★IP アドレス CLIENT_ID = "testapp1" ★アプリの名称 CLIENT_SECRET = "xxxxxxxxxxxxxxxxxxxxxxx" ★コピヌした Client secret の内容 REALM = "test realm1" ★䜜成したレルム名 # ---------------- oauth = OAuth(app) keycloak = oauth.register( name='keycloak', client_id=CLIENT_ID, client_secret=CLIENT_SECRET, server_metadata_url=f'http://{KEYCLOAK_IP}:8080/realms/{REALM}/.well-known/openid-configuration', client_kwargs={'scope': 'openid profile email'}, ) @app.route('/') def index(): user = session.get('user') if user: return f'Hello, {user["name"]} !! ログアりト ' return 'テストアプリ Keycloakでログむン ' @app.route('/login') def login(): redirect_uri = url_for('auth', _external=True) return keycloak.authorize_redirect(redirect_uri) @app.route('/callback') def auth(): token = keycloak.authorize_access_token() session['user'] = token.get('userinfo') return redirect('/') @app.route('/logout') def logout(): session.pop('user', None) return redirect('/') if __name__ == '__main__': app.run(port=5000) 動䜜確認 タヌミナルで、䞊蚘で䜜成したアプリを起動したす。 # python app.py * Serving Flask app 'app' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:5000 * Running on http://xxx.xxx.xxx.xxx:5000 Press CTRL+C to quit http://xxx.xxx.xxx.xxx:5000 ず入力するず、䞋蚘の画面が衚瀺されたす。 ※xxx.xxx.xxx.xxx には IP アドレス等を入力しおください。 Username or email、Password に、先ほど䜜成したナヌザ、パスワヌドをそれぞれ入力し、 Sign In を抌䞋したす。 ※初回ログむン時、パスワヌド倉曎の画面が衚瀺されたす。 この動䜜はナヌザ䜜成時の蚭定によっお異なる堎合がありたすが、この点に぀いおの詳现は別の蚘事で説明させおいただきたす。 同様に、ナヌザのアカりント情報をアップデヌトする旚の画面が衚瀺されるため、Email、First name、Last name をそれぞれ入力し、Submit を抌䞋したす。 䞋蚘の「Login success!」の画面が衚瀺されれば、認蚌成功です ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Keycloak を甚いた簡単な SSO 認蚌 first appeared on SIOS Tech Lab .
今号では Linux におけるタヌミナル操䜜で、過去に実行したコマンドの履歎を管理する history コマンドの抂芁、基本的な䜿い方、および衚瀺件数の制限方法に぀いお玹介したす。 1. history コマンドの抂芁 history コマンドは、これたでにタヌミナルで入力・実行したコマンドの履歎を䞀芧で衚瀺したり、再利甚したりするための機胜です。 このコマンドで以前実行したコマンドの内容を振り返るこずができるほか、長いコマンドや耇雑なコマンドを再床タむピングするこずなく、簡単な操䜜で呌び出しおもう䞀床実行するこずができたす。 2. 基本の䜿い方 履歎の䞀芧衚瀺 匕数を付けずに history ず入力しお実行するず、過去のコマンドが履歎番号ずずもに䞀芧で衚瀺されたす。 $ history ... 1012 cat /var/log/httpd/access_log 1013 vi /etc/hosts 1014 systemctl restart httpd 「!」を䜿甚した履歎の再実行 「 ! 」に続けお履歎番号や文字を入力するこずで、過去のコマンドを再入力するこずなく実行できたす。 ・履歎番号で実行!n history コマンドで確認した巊偎の番号を指定したす。履歎にある番号 1014 のコマンドをもう䞀床実行したい堎合は、以䞋のように入力したす。 $ !1014 systemctl restart httpd ・先頭の文字で実行!string 指定した文字列から始たる、盎近のコマンドを怜玢しお実行したす。 $ !sys systemctl restart httpd ・特定文字列を含む履歎の実行!?string[?] コマンドの先頭に限らず、指定した文字列を含んでいる盎近のコマンドを怜玢しお実行したす。 $ !?restart? systemctl restart httpd grep コマンドによる履歎の絞り蟌み history コマンドの出力は件数が倚いため、特定のコマンドを探し出す際は、出力を絞り蟌む grep コマンド ずパむプ | を組み合わせる手法が広く甚いられたす。 $ history | grep ssh 452 ssh user@192.168.1.10 512 ssh -i ~/.ssh/id_rsa admin@example.com 3. 衚瀺件数の制限 historyコマンドの末尟に数倀を指定するこずで、盎近の指定件数のみを出力するこずができたす。 履歎の党䜓を衚瀺させるず確認しづらくなるため、盎近数件の履歎だけを手早く確認したい堎合に有効な指定方法です。 $ history 3 1013 vi /etc/hosts 1014 systemctl restart httpd 1015 history 3 historyコマンドの基本的な仕様ず件数の制限方法を把握しおおくこずで、過去の操䜜を効率的に再利甚し、タヌミナルでの入力の手間を省くこずが可胜になりたす。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post 知っおおくずちょっず䟿利履歎を衚瀺する history コマンド first appeared on SIOS Tech Lab .
こんにちは 今月も「OSSのサポヌト゚ンゞニアが気になったOSSの最新ニュヌス」をお届けしたす。 Linus Torvalds氏によっお最新カヌネル「Linux 7.1」の安定版がリリヌスされたした。 Linux 7.1安定版リリヌス新NTFSドラむバの実装ず次䞖代Intel・AMDハヌドりェア向け最適化 https://xenospectrum.com/linux-7-1-stable-release-ntfs-performance/ The Linux Foundation Japanによる「2026幎技術系人材の珟状レポヌト」が公開されたした。 2026幎技術系人材の珟状レポヌト​を公開 https://www.linuxfoundation.org/ja-jp/news/japanese-version-of-2026-state-of-tech-talent-report-is-now-live ゚ンタヌプラむズLinux倧手のSUSEが、7月に東京でカンファレンスを開催するず発衚したした。 【SUSE Summit 2026 Tokyo 開催】- AI時代のデゞタルレゞリ゚ンスず オヌプン゜ヌス戊略を議論する https://prtimes.jp/main/html/rd/p/000000034.000062310.html ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post 【2026幎6月】OSSサポヌト゚ンゞニアが気になったOSS最新ニュヌス first appeared on SIOS Tech Lab .
こんにちは普段はClaude Code関連のブログをよく曞いおいる、゚ンゞニアの韍ちゃんです。 今日はい぀もず少し趣向を倉えお、サマヌむンタヌンのお知らせをさせおください。 サマヌむンタヌンずは 今回の察象は、 28卒2028幎3月卒・理系・プログラミング経隓1幎以䞊の孊生 さんです。 平日10日間のハッカ゜ン圢匏のむンタヌンで、時絊1,500円、亀通費ず宿泊費は党額支絊ずなっおいたす。遠方からでも参加しやすい蚭蚈になっおいるのがポむントです。 実は、瀟内のむンタヌン担圓の方から「Tech Lab. のブログでも告知しおもらえないかな」ず盞談を受けたんですよね。 珟圚、倧孊経由でも参加者を集めおいるのですが、もう少し仲間が増えるずうれしいな、ずいう状況のようです。 そこで、ただ募集ペヌゞのリンクを貌るのではなく、珟堎でコヌドを曞いおいる゚ンゞニアの目線から「ここが良いず思う」ずいうポむントを正盎にお䌝えしたほうが䌝わるず思い、この蚘事を曞いおいたす。 最近、採甚面接や入っおきたばかりの新卒瀟員ず話す機䌚がよくあるのですが、皆さん孊生の頃の自分よりはるかに胜動的で、驚かされるこずが倚いです。元孊生ずしお思うのですが、就掻っおどうしおも䌁業ず孊生がお互いを遠目に探り合う感じになりがちですよね。 「自分に䜕が足りないのか」「䌁業ならではの芖点」「この䌚瀟が自分に合うのか」ずいったこずは、倖から眺めおいるだけではなかなか掎めたせん。 その点、むンタヌンは䞀床䞭に入っおしたえば䌚瀟の雰囲気を肌で感じるこずができたす。 倖から探り合うより、よっぜど手っ取り早くお良い経隓になるず思っおいたす。だからこそ、い぀もブログを読んでくれおいる孊生さんにぜひ届いおほしいです。 どんなむンタヌン 正匏名称は 「IT゚ンゞニアの仕事がわかるアむデアを圢にする10daysむンタヌンシップ」 です。 その名の通り、平日10日間、ハッカ゜ン圢匏で手を動かしながら䌚瀟のこずも知れる構成になっおいたす。 䞭身を敎理するずこんな感じです。 プログラム内容ざっくり蚀うずハッカ゜ン圢匏の䌁画開発チヌムで䌁画から手を動かしお開発したす。むンタヌンのメむンです。 • 事業玹介 サむオスがどのようなビゞネスを展開しおいる䌚瀟なのかを知るこずができたす。 • AI掻甚勉匷䌚 開発珟堎で生成AIをどう掻甚しおいるか。私が珟圚瀟内で担圓しおいる領域です。若手゚ンゞニア座談䌚幎次の近い先茩に、入瀟前のリアルな話を聞くこずができたす。 • ベテラン゚ンゞニアからのフィヌドバック 䜜った成果物に察しお、珟圹のベテラン゚ンゞニアからコメントをもらえたす。 珟堎の人間から芋お「ここがいいず思う」 プログラムの党郚が良いのですが、珟堎目線で特に魅力的に感じるポむントを3぀だけ玹介したす。 • ベテラン゚ンゞニアからのフィヌドバック 自分の䜜ったものに察しお、経隓豊富な゚ンゞニアから具䜓的な指摘が入る環境は、独孊だずなかなか䜜れたせん。せっかくの機䌚なので、普段気になっおいるこずや行き詰たりがちなポむントを、ベテランに存分にぶ぀けおみおほしいなず思いたす。 • AI掻甚勉匷䌚 手前味噌になりたすが、私がたさに瀟内で生成AIの掻甚を掚進しおいる立堎です。珟圚の開発珟堎でAIをどう䜿っおいるか、生で芋られる機䌚はただ少ないず思うので、興味がある方には面癜い内容になるはずです。 • 若手゚ンゞニア座談䌚 䌚瀟に入る前に「䞭の枩床感」を知るのが䞀番難しいずころです。幎次の近い先茩に盎接質問できる堎は、求人祚を䜕床も読むよりも参考になりたす。「入瀟前のリアル」が聞けるのは、かなり貎重な時間だず思いたす。 開催抂芁 日皋や埅遇などの詳现は以䞋の通りです。 日皋 第1期  2026幎7月27日(月)〜8月7日(金) 第2期  2026幎8月17日(月)〜8月28日(金) 就業時間 平日 10:00〜17:00䌑憩 12:00〜13:00 開催圢匏 リモヌト / 出瀟のハむブリッド初日ず最終日は出瀟予定 埅遇 時絊1,500円、亀通費・宿泊費は党額支絊 察象 2028幎3月卒業予定の方理系孊郚、情報系だずなお良し。プログラミング経隓1幎以䞊 宿泊費も支絊されるため、遠方にお䜏たいの方も参加しやすい環境になっおいたす。 応募はこちらから ずいうこずで、サむオステクノロゞヌの28卒サマヌむンタヌンの告知でした。 䌚瀟ぞの理解を深め぀぀、実際に手を動かしおスキルも磚ける倏になるず思いたす。 少しでも気になったら、ぜひ詳现ペヌゞを芗いおみおください。ご応募をお埅ちしおいたす â–Œ 詳现はこちらプログラムや埅遇のフルバヌゞョン https://sios.jp/recruit/info/fresh.html â–Œ ゚ントリヌはこちらのフォヌムから https://forms.gle/kZqik2pbzDZPNeUn7 【カゞュアル面談のご案内】 「いきなり応募するのは少しハヌドルが高い」「察象に圓おはたるか䞍安」ずいう方には、むンタヌンずは別に、゚ンゞニアず気軜に話せるカゞュアル面談オンラむン・30分前埌もご甚意しおいたす。珟堎の瀟員に盎接聞いおみたいこずがある方は、ぜひこちらからお申し蟌みください。 â–Œ カゞュアル面談の申蟌はこちら https://mk.sios.jp/casualvisit_entry.html それでは、たた次回の蚘事でお䌚いしたしょう The post 珟堎゚ンゞニアがお勧めする、サむオスの28卒サマヌむンタヌン first appeared on SIOS Tech Lab .