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

<channel>
	<title>開発効率化 | 週末起業ラボ</title>
	<atom:link href="https://shumatsu-lab.com/tag/%E9%96%8B%E7%99%BA%E5%8A%B9%E7%8E%87%E5%8C%96/feed/" rel="self" type="application/rss+xml" />
	<link>https://shumatsu-lab.com</link>
	<description>本業の隣で、もう一つのキャリアを</description>
	<lastBuildDate>Sat, 22 Aug 2026 23:42:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://shumatsu-lab.com/wp-content/uploads/2026/02/cropped-IMG_2742-32x32.jpeg</url>
	<title>開発効率化 | 週末起業ラボ</title>
	<link>https://shumatsu-lab.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">252581404</site>	<item>
		<title>Claude Design→Code｜handoffで既存プロジェクトに統合</title>
		<link>https://shumatsu-lab.com/claude-design-to-claude-code-handoff/</link>
		
		<dc:creator><![CDATA[ムラサキ]]></dc:creator>
		<pubDate>Sat, 02 May 2026 10:05:22 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[AI活用]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[開発効率化]]></category>
		<guid isPermaLink="false">https://shumatsu-lab.com/?p=1241</guid>

					<description><![CDATA[昨日公開したClaude DesignでLPを生成した実測レポートの続編です。Designで生成したモバイルアプリのマッチング画面モックを、筆者の個人サービスの既存Reactプロジェクトに統合するところまで実行しました。 [&#8230;]]]></description>
										<content:encoded><![CDATA[

<p class="wp-block-paragraph">昨日公開した<a href="https://shumatsu-lab.com/claude-design-lp-generation/">Claude DesignでLPを生成した実測レポート</a>の続編です。Designで生成したモバイルアプリのマッチング画面モックを、筆者の個人サービスの既存Reactプロジェクトに統合するところまで実行しました。</p>







<p class="wp-block-paragraph">SE歴20年・Claude Max 5x契約の筆者が、Handoff to Claude Codeを使って既存リポジトリに統合した一次体験です。結論から言うと、Design→Codeの受け渡しはURL経由のfetch方式で、Design枠は消費せずCode枠+3%のみ、実装完了まで約1時間、437テスト全パス・Viteビルド成功までたどり着きました。</p>







<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/03/murasaki_icon.png" alt="ムラサキ" class="speech-icon-image" /></figure><div class="speech-name">ムラサキ</div></div><div class="speech-balloon">

<p class="wp-block-paragraph">Design単体の検証は昨日済ませたので、今回は「本番寄りの既存プロジェクトに統合する」実運用フェーズの記録です。</p>

</div></div>







<div class="slb slb-tldr">
  <div class="slb-tldr__head">
    <span class="slb-mono slb-tldr__label">TL;DR / 三行要約</span>
          <span class="slb-mono slb-tldr__meta">8 MIN READ · UPDATED 2026.04</span>
      </div>
  <ol>
          <li>Handoffの受け渡しはURL経由の静的fetchで、Design側の生成処理は走らない。Code枠のみ課金対象。</li>
          <li>既存React+Vite+Tailwindプロジェクトへの統合が約1時間弱で完了。437テスト全パス・Viteビルド成功。</li>
          <li>Claude CodeがTailwindクラス変更に伴うテスト更新・他ページへの影響封じ込めを計画段階で自発的に設計。</li>
      </ol>
    <div class="slb-tldr__badges">
          <span class="slb-badge slb-badge--hi">
        RESULT — Code枠+3%・437テスト全パス      </span>
          <span class="slb-badge">
        TOOL — Claude Design → Claude Code（Max 5x）      </span>
          <span class="slb-badge">
        COST — Design枠0消費・Code枠+3%のみ      </span>
      </div>
  </div>
    





  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Handoff to Claude Codeの正体</a><ol><li><a href="#toc2" tabindex="0">「Send to local coding agent」ダイアログの中身</a></li><li><a href="#toc3" tabindex="0">APIエンドポイント経由のURLフェッチ方式</a></li><li><a href="#toc4" tabindex="0">追加指示欄で統合方針を伝えられる</a></li></ol></li><li><a href="#toc5" tabindex="0">ターミナルで受け取る（CLI経由の実行）</a><ol><li><a href="#toc6" tabindex="0">Copy commandで取得してClaude Codeに貼り付ける</a></li><li><a href="#toc7" tabindex="0">Design枠は消費しない（Code枠のみ課金）</a></li></ol></li><li><a href="#toc8" tabindex="0">Claude Codeが自発的にやったこと</a><ol><li><a href="#toc9" tabindex="0">Design成果物fetchと既存コード探索を並行実行</a></li><li><a href="#toc10" tabindex="0">テーマ衝突を検出して逆質問</a></li><li><a href="#toc11" tabindex="0">計画書に既存技術的癖の回避策まで含めてきた</a></li></ol></li><li><a href="#toc12" tabindex="0">実装結果の実測</a><ol><li><a href="#toc13" tabindex="0">変更ファイル4つ・437テスト全パス・ビルド成功</a></li><li><a href="#toc14" tabindex="0">クォータ消費はCode枠+3%のみ</a></li><li><a href="#toc15" tabindex="0">見た目の再現度と既存機能の両立</a></li></ol></li><li><a href="#toc16" tabindex="0">Design→Codeフローで見えた注意点</a><ol><li><a href="#toc17" tabindex="0">テーマ衝突は必ず起きる想定で計画する</a></li><li><a href="#toc18" tabindex="0">既存自前コンポーネントの扱いは追加指示で明示する</a></li><li><a href="#toc19" tabindex="0">言語・型設定は追加指示で回避する</a></li><li><a href="#toc20" tabindex="0">mainブランチには直接適用しない（必ずフィーチャーブランチ）</a></li></ol></li><li><a href="#toc21" tabindex="0">よくある質問</a></li><li><a href="#toc22" tabindex="0">最後に：受け渡しの安全設計とClaude Codeの現場対応力</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Handoff to Claude Codeの正体</span></h2>







<p class="wp-block-paragraph">Claude DesignのExportメニューにある「Handoff to Claude Code」は、Design側で生成したUIモックをClaude Codeに引き渡すための公式機能です。どういう仕組みで動いているのかを実測しました。</p>







<h3 class="wp-block-heading"><span id="toc2">「Send to local coding agent」ダイアログの中身</span></h3>







<p class="wp-block-paragraph">Designプロジェクト画面の右上「Export」→「Handoff to Claude Code&#8230;」を選ぶと、「Send to local coding agent」というダイアログが開きます。ダイアログの中身は次の3要素です。</p>







<ul class="wp-block-list">

<li>Claude Code用の指示コマンド（コード風の枠に表示される）</li>







<li>Copy commandボタン（指示文をクリップボードにコピー）</li>







<li>Give the agent more detailの自由記述欄（追加指示を書ける）</li>

</ul>







<p class="wp-block-paragraph">オプションとして「Download zip instead」のチェックボックスもありました。URLが何らかの理由で使えない場合に、ローカルzipダウンロードに切り替えてClaude Codeのチャットに手動で投入する代替手段です。</p>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/claude-design-handoff-dialog-with-context.webp" alt="Handoffダイアログの初期表示" /><figcaption class="wp-element-caption">Handoffダイアログの初期表示</figcaption></figure>







<h3 class="wp-block-heading"><span id="toc3">APIエンドポイント経由のURLフェッチ方式</span></h3>







<p class="wp-block-paragraph">表示される指示コマンドは次のような形です。<br><br>Fetch this design file, read its readme, and implement the relevant <br>aspects of the design. <br>https://api.anthropic.com/v1/design/h/&lt;project-id&gt;?open_file=Matches+Screen.html<br>Implement: Matches Screen.html</p>







<p class="wp-block-paragraph">Anthropic側のAPIエンドポイントにDesignの成果物がホストされ、Claude Code側がそのURLをfetchして読み込む設計です。Claude Codeのログを見ると、実際にはfetch後にgzip圧縮ファイルが保存され、それを解凍して読み込む流れになっていました。</p>







<p class="wp-block-paragraph">この方式の利点は、Design側がCode側のファイルシステムを直接操作しないこと。受け渡しは読み取り専用の配信で、ローカルに何を書くかはすべてClaude Code側の判断に委ねられます。</p>







<h3 class="wp-block-heading"><span id="toc4">追加指示欄で統合方針を伝えられる</span></h3>







<p class="wp-block-paragraph">デフォルトの指示コマンドだけでは「このデザインを実装して」という漠然とした依頼にしかなりません。今回は自由記述欄に以下の統合方針を入力しました。</p>







<ul class="wp-block-list">

<li>対象プロジェクト（既存のReact + Vite + Tailwind）と置換対象ファイルの明示</li>







<li>作業ブランチ名</li>







<li>既存自前コンポーネントを優先使用する方針</li>







<li>モックデータは破棄して既存のAPI関数に接続する方針</li>







<li>作業フロー（CLAUDE.md/BUGS.mdを読む→既存機能を把握→計画提示→承認後に実装）</li>

</ul>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/claude-design-handoff-dialog.webp" alt="追加指示を入れた状態のダイアログ" /><figcaption class="wp-element-caption">追加指示を入れた状態のダイアログ</figcaption></figure>







<p class="wp-block-paragraph">この欄に既存資産の情報を詰め込むと、後述の通りClaude Codeが計画段階で既存コードと整合性を取るための下調べをしてくれます。</p>







<h2 class="wp-block-heading"><span id="toc5">ターミナルで受け取る（CLI経由の実行）</span></h2>







<p class="wp-block-paragraph">Handoffの受け取り方はいくつか選べますが、今回はClaude Code CLI経由で実行しました。</p>







<h3 class="wp-block-heading"><span id="toc6">Copy commandで取得してClaude Codeに貼り付ける</span></h3>







<p class="wp-block-paragraph">流れはシンプルです。</p>







<ol class="wp-block-list">

<li>ダイアログのCopy commandボタンをクリック</li>







<li>ターミナルでプロジェクトディレクトリに移動</li>







<li><code>claude</code> でClaude Code CLIを起動</li>







<li>クリップボードの指示コマンドを貼り付けてEnter</li>

</ol>







<p class="wp-block-paragraph">これだけで、Claude CodeがURLをfetchして実装準備に入ります。Mac版Claude Code、VSCode拡張、JetBrainsプラグインなど他のインターフェースでも同じコマンドを貼り付ければ動くはずです。</p>







<div class="wp-block-cocoon-blocks-tab-box-1 blank-box bb-tab bb-check block-box">

<p class="wp-block-paragraph">Handoff実行前に<code>git checkout -b feat/matches-screen-from-design</code>のようなフィーチャーブランチを切っておくこと。既存のmainブランチに直接書き込まれると、気に入らない結果のときに戻すコストが高くなります。</p>

</div>







<h3 class="wp-block-heading"><span id="toc7">Design枠は消費しない（Code枠のみ課金）</span></h3>







<p class="wp-block-paragraph">今回の作業前後でClaude Designの週次枠を実測した結果、Handoff後もDesign枠の消費はゼロでした。Claude Codeが fetch する先は静的配信のURLなので、Design側の生成処理は走っていないと理解できます。</p>







<p class="wp-block-paragraph">代わりにClaude Code側の5時間セッション枠が25%から28%へ3ポイント増加。Max 5xプラン実測で、1本の本格的な統合作業がCode枠の+3%で済む計算になります。Claude Codeの<a href="https://shumatsu-lab.com/claude-opus-4-7-release-side-job-impact/">Opus 4.7・Sonnet 4.6・Haiku 4.5のコスト感</a>を踏まえると、個人開発レベルなら十分現実的な消費ペースです。</p>







<h2 class="wp-block-heading"><span id="toc8">Claude Codeが自発的にやったこと</span></h2>







<p class="wp-block-paragraph">指示を投げたあとのClaude Codeの挙動が想像以上に賢く、Handoffの価値の大半はここにあると感じました。</p>







<h3 class="wp-block-heading"><span id="toc9">Design成果物fetchと既存コード探索を並行実行</span></h3>







<p class="wp-block-paragraph">実行開始直後、Claude Codeは「デザインファイル取得と既存コードの探索を並行実施」と宣言し、実際に両方を同時に走らせました。</p>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/claude-code-ask-theme-choice.webp" alt="fetchと既存探索の並行実行ログ" /><figcaption class="wp-element-caption">fetchと既存探索の並行実行ログ</figcaption></figure>







<ul class="wp-block-list">

<li>「デザインファイルを取得する」→「gzip圧縮ファイルが保存された。解凍して読む」→「デザインファイル完全に取得できた」</li>







<li>その間に既存プロジェクトの<code>CLAUDE.md</code>・<code>BUGS.md</code>・既存ページ・関連コンポーネントを探索</li>

</ul>







<p class="wp-block-paragraph">統合型の実装では、新規資産（Design出力）と既存資産（プロジェクトのコード）の両方を把握しないと計画が立てられません。Claude Codeはこの並行実行を自動で判断していました。</p>







<h3 class="wp-block-heading"><span id="toc10">テーマ衝突を検出して逆質問</span></h3>







<p class="wp-block-paragraph">取得完了後、Claude Codeは「設計に入る前に重要な決定を確認」として、AskUserQuestionツールで逆質問を投げてきました。</p>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/claude-code-parallel-fetch.webp" alt="テーマ衝突の逆質問画面" /><figcaption class="wp-element-caption">テーマ衝突の逆質問画面</figcaption></figure>







<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">

<p class="wp-block-paragraph">デザインはウォームクリーム（#FAF7EF）の明るいテーマですが、既存プロジェクトはネイビー（#0a1628）のダークテーマです。対象ページをどちらに合わせますか？</p>

</blockquote>







<p class="wp-block-paragraph">選択肢として「デザイン通り（明るいクリーム）」「ダークテーマに合わせる」「他の内容を入力」の3択が提示されます。さらに各選択肢には、右カラムに「背景: #FAF7EF（ウォームクリーム）カード: #FFFFFF + 薄影 テキスト: #2B2B2B アクセント: #E5A621（ゴールド）→ デザイン通りの見た目になる → 他ページはダークテーマのまま」という帰結説明が付いていました。</p>







<p class="wp-block-paragraph">指示されていない判断ポイントを自発的に発見して、帰結まで提示して確認を取る挙動です。Design→Code統合の実運用では、この「既存環境との衝突検出」が一番重要なステップだと実感しました。</p>







<h3 class="wp-block-heading"><span id="toc11">計画書に既存技術的癖の回避策まで含めてきた</span></h3>







<p class="wp-block-paragraph">テーマ判断（今回は「デザイン通り」を選択）のあと、Claude Codeは詳細な計画書を提示してきました。</p>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/claude-code-plan-review.webp" alt="プランレビュー画面" /><figcaption class="wp-element-caption">プランレビュー画面</figcaption></figure>







<p class="wp-block-paragraph">計画書の構成は次の通りです。</p>







<ul class="wp-block-list">

<li>Context（作業の前提）</li>







<li>対象ファイル（4ファイルを明示）</li>







<li>カラーパレット（Design出力から抽出した7色）</li>







<li>重要テクニック</li>







<li>メインコンポーネントの新構造（ASCIIアートで描画）</li>







<li>ページ側の変更点</li>







<li>実装手順</li>







<li>再利用する既存資産</li>







<li>検証方法</li>

</ul>







<p class="wp-block-paragraph">特に「重要テクニック」の項目が秀逸で、次のように書かれていました。</p>







<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">

<p class="wp-block-paragraph">Tailwindの<code>bg-white</code>等はindex.cssの<code>!important</code>でダーク上書きされる</p>

</blockquote>







<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">

<p class="wp-block-paragraph">インラインスタイル（<code>style={{ background: '#FAF7EF' }}</code>）を使えば<code>!important</code>の影響を受けない</p>

</blockquote>







<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">

<p class="wp-block-paragraph">既存ロジック（API関数・カスタムフック・フィルター関数）はすべて維持</p>

</blockquote>







<p class="wp-block-paragraph">プロジェクトの既存CSSが持つ「<code>!important</code>でTailwindを上書きする」という技術的癖を読み取り、それを回避する具体的な戦略まで計画段階で組み込んでいます。追加指示に含めていなかった内容を、既存コードを読んで自律的に発見した挙動です。</p>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/claude-code-plan-card-structure.webp" alt="メインコンポーネントの新構造設計" /><figcaption class="wp-element-caption">メインコンポーネントの新構造設計</figcaption></figure>







<h2 class="wp-block-heading"><span id="toc12">実装結果の実測</span></h2>







<p class="wp-block-paragraph">計画を承認してから実装完了までは、逆質問の往復を含めて約1時間弱でした。</p>







<h3 class="wp-block-heading"><span id="toc13">変更ファイル4つ・437テスト全パス・ビルド成功</span></h3>







<p class="wp-block-paragraph">最終的な変更内容は次の通りです。</p>







<ul class="wp-block-list">

<li>メインコンポーネント：デザイン通りに全面再設計（トレーナー情報帯・2カラム中央揃え本体・フッター帯・ゴールドグラデーションのリクエストボタン）</li>







<li>ページ側：ページ背景#FAF7EFをインラインスタイルで設定してダークテーマ上書きを回避、countバッジ付きタブフィルター、アイコンボックス付きセクションヘッダー</li>







<li><code>index.html</code>：Zen Maru Gothic / M PLUS Rounded 1cフォントを追加</li>







<li>テストファイル：クラス名ベースassertionを削除・更新</li>

</ul>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/claude-code-implementation-complete.webp" alt="実装完了メッセージ（437テスト pass）" /><figcaption class="wp-element-caption">実装完了メッセージ（437テスト pass）</figcaption></figure>







<ul class="wp-block-list">

<li><code>npm run test:run</code>の結果：437 passed / 0 failed</li>







<li>Viteプロダクションビルド：成功</li>







<li>コミットまで自動で完了</li>

</ul>







<p class="wp-block-paragraph">Tailwindクラス名に依存した既存テストをClaude Codeが自律的に書き換えた点が重要です。デザイン変更でTailwindクラスが変わるとテストが壊れやすい問題を先回りして対処しています。</p>







<h3 class="wp-block-heading"><span id="toc14">クォータ消費はCode枠+3%のみ</span></h3>







<figure class="wp-block-table"><table><thead><tr><th>枠</th><th>作業前</th><th>作業後</th><th>消費</th></tr></thead><tbody><tr><td>Claude Code 5時間セッション（Max 5x）</td><td>25%</td><td>28%</td><td>+3%</td></tr><tr><td>Claude Code 週間枠（すべてのモデル）</td><td>24%</td><td>24%</td><td>変化なし</td></tr><tr><td>Claude Design週間枠</td><td>参考値</td><td>参考値</td><td>0%（別タスクでの消費は除く）</td></tr></tbody></table></figure>







<p class="wp-block-paragraph">Design→Codeの受け渡しは静的ファイルのfetchなので、Design側の生成処理は走りません。Code側の実装作業だけが課金対象になる構造です。大規模なリファクタや新機能開発ではなく既存画面の置き換えだったため、Code枠の消費も軽く済みました。</p>







<h3 class="wp-block-heading"><span id="toc15">見た目の再現度と既存機能の両立</span></h3>







<p class="wp-block-paragraph">実装後の対象画面と、他ページの画面を並べると、テーマの封じ込めが機能していることが確認できます。</p>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/target-page-after.webp" alt="実装後の対象画面（クリームテーマ）" /><figcaption class="wp-element-caption">実装後の対象画面（クリームテーマ）</figcaption></figure>







<p class="wp-block-paragraph">対象ページ側はDesign出力通りのクリーム色背景とカード、ゴールド系アクセント、丸ゴシック系フォント。既存ロジック（方向フィルター、表示用バッジ、情報帯など）も維持されています。Design出力には無かった既存機能も、既存コードから読み取って再実装してくれた形です。</p>







<figure class="wp-block-image"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/04/other-page-unchanged.webp" alt="変更の影響を受けなかった他ページ（ダークテーマ維持）" /><figcaption class="wp-element-caption">変更の影響を受けなかった他ページ（ダークテーマ維持）</figcaption></figure>







<p class="wp-block-paragraph">一方の他ページ側は元のダークネイビーテーマをそのまま維持。インラインスタイルでダークテーマ上書きを封じ込めた戦略が、他ページに一切漏れていません。追加指示に「他ページには影響させるな」と書いていなかったにもかかわらず、Claude Codeが計画段階でこの分離を設計していたことになります。</p>







<h2 class="wp-block-heading"><span id="toc16">Design→Codeフローで見えた注意点</span></h2>







<p class="wp-block-paragraph">3件のDesign検証に続けて今回の統合作業を実行して、実運用で押さえておきたいポイントが見えてきました。</p>







<h3 class="wp-block-heading"><span id="toc17">テーマ衝突は必ず起きる想定で計画する</span></h3>







<p class="wp-block-paragraph">Design側は配色・フォント・余白を独立に設計するため、既存プロジェクトと100%一致するケースはほぼありません。AskUserQuestionで逆質問が来るパターンを想定し、判断材料（既存テーマの色コード・フォント・CSS設計思想）を事前に整理しておくとスムーズです。今回は「index.cssで<code>!important</code>上書き」という癖が事前に整理されていたからこそ、Claude Codeが回避策を提示できた側面もあります。</p>







<h3 class="wp-block-heading"><span id="toc18">既存自前コンポーネントの扱いは追加指示で明示する</span></h3>







<p class="wp-block-paragraph">追加指示欄で「既存自前コンポーネントを再利用する」「Design出力に同等コンポーネントが含まれていても既存版を優先」と明示したことで、Claude Codeは計画段階で再利用リストを作り、Design出力の一部をそのまま活かしつつ既存コンポーネントを維持する判断をしました。明示がなければDesign出力をそっくりそのまま置き換える形になっていた可能性があります。</p>







<h3 class="wp-block-heading"><span id="toc19">言語・型設定は追加指示で回避する</span></h3>







<p class="wp-block-paragraph">Design出力はJavaScriptで来ましたが、プロジェクトによってはTypeScript化を自動で試みる挙動もありうるため、追加指示欄に「JavaScript (.jsx)を維持。TypeScript化しない。」と明記しておくのが安全です。今回はこの一文があったため、Claude Codeは一切TS化を試みず既存のJS構成を尊重しました。</p>







<h3 class="wp-block-heading"><span id="toc20">mainブランチには直接適用しない（必ずフィーチャーブランチ）</span></h3>







<p class="wp-block-paragraph">Handoffの挙動は予測不能な部分があり、最初の1手で既存のmainが壊れるリスクがあります。今回はフィーチャーブランチで作業し、mainへのマージは後日の追加検証フェーズに持ち越しました。Claude Codeを使った個人開発の運用ノウハウは<a href="https://shumatsu-lab.com/claude-code-personal-service-development/">Claude Codeで個人サービスを作った正直な話</a>にまとめてあります。</p>







<h2 class="wp-block-heading"><span id="toc21">よくある質問</span></h2>







<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Claude Code CLI以外でもHandoffは使える？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">

<p class="wp-block-paragraph">使える。ダイアログのタイトルが「Send to local coding agent」となっている通り、ローカルで動くコーディングエージェント全般を対象にしている。Mac版Claude Code・VSCode拡張・JetBrainsプラグインのいずれでも、Copy commandで取得した指示コマンドを貼り付ければ同じ挙動になるはず。今回はCLI経由で実測したが、他のインターフェースでも検証価値はある。</p>

</div></dd></dl></div>







<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Design枠とCode枠、両方消費される？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">

<p class="wp-block-paragraph">筆者の実測ではDesign枠は消費しなかった。Claude Codeがfetchする先は静的ファイル配信のURLで、Design側の生成処理は走っていないため。Code側の実装作業だけが枠消費の対象になる。大規模な画面生成と統合を繰り返す場合でも、Code枠だけを気にすれば運用できる。</p>

</div></dd></dl></div>







<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">既存の自前コンポーネントとDesign出力が重複したときはどうなる？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">

<p class="wp-block-paragraph">重複時は追加指示欄の明示に従う。今回は「既存自前コンポーネントを再利用する」「Design出力に同等コンポーネントが含まれていても既存版を優先」と伝えたところ、Claude Codeは計画段階で再利用する既存資産のリストを作り、Design出力の見た目を活かしつつ既存ロジック(API関数・カスタムフック・フィルター関数)はすべて維持する判断をした。明示しなければDesign出力でそっくり置き換えられていた可能性がある。</p>

</div></dd></dl></div>







<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">デザインと既存プロジェクトでテーマが食い違ったらどうなる？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">

<p class="wp-block-paragraph">Claude Codeが計画に入る前にAskUserQuestionツールで逆質問してくる。今回はウォームクリーム(#FAF7EF)のデザインと既存プロジェクトのダークテーマ(ネイビー#0a1628)が衝突し、「デザイン通り」「ダークテーマに合わせる」「他の内容を入力」の3択と、各選択肢を選んだ場合の配色・影響範囲まで提示された。「デザイン通り」を選んだ結果、計画書にはindex.cssの!importantによるダーク上書きをインラインスタイルで回避する対策まで盛り込まれていた。指示していない判断ポイントを自発的に見つけて確認を取ってくる挙動だ。</p>

</div></dd></dl></div>







<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Handoffで受け取ったコードは既存スタックに合わせてくれる？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">

<p class="wp-block-paragraph">ある程度合わせてくれる。追加指示で「Tailwind CSS v3を維持」「CSS変数を尊重」と明示すれば、Design出力が異なるスタイリング方式だったとしても変換する挙動になる。ただし100%自動調整されるわけではないので、計画書レビュー時に「既存スタックとの整合が取れているか」を筆者が確認する工程は必須。</p>

</div></dd></dl></div>




<div class="wp-block-cocoon-blocks-faq faq-wrap blank-box block-box cocoon-block-faq"><dl class="faq"><dt class="faq-question faq-item"><div class="faq-question-label faq-item-label">Q</div><div class="faq-question-content faq-item-content">Handoffを実行する前にやっておくべき準備はありますか？</div></dt><dd class="faq-answer faq-item"><div class="faq-answer-label faq-item-label">A</div><div class="faq-answer-content faq-item-content">
<p class="wp-block-paragraph">必ずフィーチャーブランチを切ってから実行してください。Handoffの挙動には予測できない部分があり、mainに直接書き込まれると戻すコストが高くなります。筆者はgit checkout -b feat/matches-screen-from-designで作業しました。あわせて追加指示欄に対象ファイル・既存資産の優先方針・言語設定を書くと計画の精度が上がります。</p>
</div></dd></dl></div>






<h2 class="wp-block-heading"><span id="toc22">最後に：受け渡しの安全設計とClaude Codeの現場対応力</span></h2>







<p class="wp-block-paragraph">今回の統合作業ではっきりしたのは、受け渡し方式が読み取り専用で安全なことと、Claude Codeがテーマ衝突や既存コードの技術的癖まで拾って計画に反映する対応力の高さだ。</p>







<ul class="wp-block-list">

<li>Handoff to Claude CodeはAPI経由のURLフェッチ方式で、DesignとCodeのファイルシステムを直接繋がない安全な設計</li>







<li>Design枠は消費せず、Code枠のみ+3%で本格的な既存プロジェクト統合が完了した実測値</li>







<li>テーマ衝突・既存コード癖・テスト更新などの「実運用で必要な判断」を、Claude Codeが計画段階で自発的に拾ってくれる</li>

</ul>







<p class="wp-block-paragraph">Design単体の検証は<a href="https://shumatsu-lab.com/claude-design-lp-generation/">前回の記事</a>で完結しましたが、本当の価値はDesign→Code handoffによる「初稿生成→実装まで一本化される体験」にあると実感しました。次はClaude Code v2.1.114時代の他の新機能も<a href="https://shumatsu-lab.com/claude-code-powerup-guide/">/powerup入門</a>あたりと繋げて試していく予定です。</p>







<p class="wp-block-paragraph">一次情報に当たりたい場合は、Anthropic公式の<a href="https://www.anthropic.com/news/claude-design-anthropic-labs">Claude Design発表記事</a>{target=&#8221;_blank&#8221; rel=&#8221;noopener noreferrer&#8221;}、Opus 4.7の仕様をまとめた<a href="https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-7">Anthropic APIドキュメント</a>{target=&#8221;_blank&#8221; rel=&#8221;noopener noreferrer&#8221;}、<a href="https://code.claude.com/docs/en/model-config">Claude Code公式ドキュメント</a>{target=&#8221;_blank&#8221; rel=&#8221;noopener noreferrer&#8221;}の3つを確認するのが早い。</p>







<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://shumatsu-lab.com/wp-content/uploads/2026/03/murasaki_icon.png" alt="ムラサキ" class="speech-icon-image" /></figure><div class="speech-name">ムラサキ</div></div><div class="speech-balloon">

<p class="wp-block-paragraph">main/masterへのマージは追加検証フェーズに回します。Claude Codeで自作サービスをどこまで自動化できるかは、別記事でまた検証予定です。</p>

</div></div>



]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1241</post-id>	</item>
	</channel>
</rss>
