Write(ライト)

組み込みツール
Write
ライト
指定したパスにファイルを書き出すツール。ファイルが無ければ新規作成、同じパスに既存ファイルがあれば中身を丸ごと差し替える。Claudeが裏側で呼ぶツールの1つで、Claude Codeに最初から組み込まれている

料理ブログをClaude Codeで作っている初心者向け

料理ブログに新しいレシピ記事ファイルを1個追加したい時、テンプレを別プロジェクトに横展開したい時、旧フォーマットの記事を新フォーマットで丸ごと作り直したい時に呼ばれる。「ターミナルで空ファイルを作ってエディタで開いて中身を貼り付けて」の手順を、Claudeに「このパスにこの中身で」とまとめて頼むと Write が動いてファイルが完成する

噛み砕くと

ノートを1ページ用意して、最初から最後まで一気に書いて閉じる。これがWriteのイメージです。

途中までしか書いてない既存ページを開いて、ある行だけ消しゴムで消して書き直す、という器用なことはしません。1ページ全部、白紙にして書き直す動きをします。

だから新規ファイルを置く時は素直に強い。逆に既存ファイルを少しだけ直したい時に呼ぶと、本来触らなくていい部分まで全部書き換えてしまいます。

Write を呼ぶと画面に何が出るのか

料理ブログのフォルダで「すき焼きのレシピ記事を新規で追加して」とClaudeに頼むと、こういう動きをします。

● Write(~/projects/cooking-blog/content/recipes/sukiyaki.md)
  ⎿  Wrote 42 lines to ~/projects/cooking-blog/content/recipes/sukiyaki.md
     ---
     title: すき焼き
     category: 鍋料理
     ---
     # すき焼きの作り方
     ...

「Write(パス)」が呼んだツール名と書き込む先、「Wrote 42 lines」が実際に書き出した行数。指定したパスにそのままファイルが作られて、中身が42行分入った状態になります。

同じパスに既存ファイルがあった場合、表示は「Wrote 42 lines」のままで、警告は特に出ません。中身は新しい42行に置き換わって、元の中身は消えます。これが事故の発火点になります。

料理ブログで「新規レシピ記事ファイル」を作る再現手順

「世界の鍋料理を紹介するブログ」を例に、すき焼きの記事を1本追加してみます。

ステップ1: 保存先のフォルダを先に用意する

Writeはファイルを書き出すツールであって、フォルダを作るツールではありません。フォルダがない場所にいきなり書こうとするとエラーになります。最初に手で作っておきます。

$ mkdir -p ~/projects/cooking-blog/content/recipes

mkdir -p は「途中のフォルダもまとめて作る」指定。recipes までの道が一発で揃います。

ステップ2: Claudeに記事の中身を伝える

ターミナルでClaude Codeを起動して、こう頼みます。

> ~/projects/cooking-blog/content/recipes/sukiyaki.md に
  すき焼きのレシピ記事を書いて。
  材料表は table 形式、手順は番号付きリストで。

保存先のパスと、記事の中身の組み方まで指定すると、Claudeは中身を組み立てて Write に渡します。

ステップ3: Claudeが Write を呼ぶ

Claudeの応答に「Write(...)」のブロックが出ます。

● Write(~/projects/cooking-blog/content/recipes/sukiyaki.md)
  ⎿  Wrote 38 lines to ~/projects/cooking-blog/content/recipes/sukiyaki.md

これでファイルが新規作成されました。指定パスにすき焼き記事が38行入った状態で置かれています。

ステップ4: できたファイルを目視で確認する

ブラウザのプレビュー、もしくはエディタでファイルを開いて、中身が想定通りか見ます。Claudeが書いた中身を最終確認するのは私の仕事です。

Editで済むのにWriteで全消し──新人がよくやる事故

これが一番ハマるところです。Writeは「ファイルの中身を丸ごと差し替える」動きをします。既存のレシピ記事の「材料表だけ表組みに直したい」みたいな小さな修正で Write を呼ぶと、本来触らなくていい本文・写真URL・前書きまで全部、Claudeが書き直した版に置き換わります。

「あれ、書いたつもりのない注釈が消えてる」「写真URLが微妙に違う」が起きるのは、ほぼこのパターンです。

使い分けの判断ライン:

  • Write: ファイルがそもそも無い、または中身を100%作り直したい時。新規レシピを追加する、テンプレを横展開する、旧フォーマットから新フォーマットに丸ごと作り直す
  • Edit: 既存ファイルの中の「ある1ヶ所」だけを変える時。タイトル行を直す、リンクを1個追加する、誤字を直す
  • MultiEdit: 同じファイルの中で複数ヶ所をまとめて直す時。Editを5回呼ぶ代わりに1回で済む

Claudeも内部で「既存ファイルの編集はEditを優先、新規作成または完全リライトのみWrite」を推奨基準として動きます。明示的に「Writeで全部書き直して」と指示しない限り、既存ファイルの細かい修正でいきなり Write が選ばれることは少ないです。

ただ、依頼の言い回し次第で Claude が「全部書き直し」と解釈する場合があります。「整理して」「整えて」「リファクタして」だけだと範囲が読めない。「タイトル行だけ直して、他は触らないで」と限定したほうが事故が減ります。

料理ブログでの使いどころ

シナリオ1: 旧フォーマットのレシピ記事を新フォーマットで丸ごと作り直す

1年前に書いたレシピ記事は、材料が「醤油大さじ2、砂糖大さじ1、…」と段落の文章で書いてありました。新しい記事は材料表を <table> でまとめる方針に揃えたい。

Editで散文の1行を表に直そうとすると、置換対象の文字列が長くて壊れやすい。Read で旧記事の中身を読ませて、Write で新フォーマット版を一気に書き出す方が速くて事故も少ないです。

シナリオ2: テンプレを別の料理ブログプロジェクトに横展開

すでに動いているブログの .claude/settings.json を、もう1個立ち上げる別ジャンルのブログにそのまま持っていきたい。

Read で元プロジェクトの設定を読ませて、Write で新プロジェクト側のパスに同じ内容を書き出す。コピペでも済みますが、設定値の中の「料理ブログ専用」の部分だけClaudeに書き換えさせて Write、までやらせると手作業が消えます。

シナリオ3: README雛形をAIに作らせて新規作成

料理ブログのトップに置く README.md をまだ書いていない。「うちのブログのコンセプト・取り扱うジャンル・記事の探し方を200字くらいでまとめて」と頼むと、Claudeが原稿を組み立てて Write でファイルを作ります。新規ファイル作成は Write の本来の用途で、迷わず使える場面です。

初心者が踏みやすい落とし穴

  • 保存先のフォルダがまだ無い状態で Write を呼ぶ。Writeはファイル本体は作りますが、途中のフォルダは作りません。先に mkdir -p でフォルダを揃えてから頼む
  • 絶対パスじゃない書き方で頼む./recipes/sukiyaki.md のような相対パスは受け付けません。~/projects/cooking-blog/content/recipes/sukiyaki.md のように、家の住所で書く絶対パス形式に揃えます
  • 既存ファイルを Read せずに上書きする。Claude Codeは既存ファイルを Write で上書きする前に Read で中身を確認するのが基本動作です。「今すぐ Write で全部書き直して」と急かすと、元の中身を読まないまま上書きが走り、消したくなかった部分が消えます
  • Editで済む小さな修正で Write を呼ぶ。タイトル1行だけ直したいのに「全部書き直して」と頼むと、本文・写真URL・前書きまで Claude の解釈で書き換わります。範囲を「タイトル行だけ」と明示する
  • 「整理して」「整えて」だけで頼む。範囲が読めない依頼は Write で全消しに化けやすい。「材料表の部分だけ表組みにして、他は触らないで」のように、触る範囲・触らない範囲を分けて指定する
  • 書き出し直後に内容確認をしない。Wrote 行数が表示されても、中身が想定通りかは別問題。ブラウザのプレビューやエディタで実物を1回開いて見る習慣が事故防止になります

関連するコマンド・ツールへの動線

  • Read(リード) - ファイルの中身をClaudeに見せるツール。Writeで既存ファイルを上書きする前のセットで使う
  • /init(イニット) - プロジェクト用の覚え書き CLAUDE.md の雛形を半自動で作るスラッシュコマンド。料理ブログを始めた初日に1回叩く
  • /memory(メモリー)CLAUDE.md をエディタで開いて手で編集するスラッシュコマンド。Writeで作った設定の細かい調整に使う
  • CLAUDE.md(クロードドットエムディー) - プロジェクト用の覚え書きファイル本体。Writeで新規作成・全置換することもある
  • /agents(エージェンツ) - 専門エージェントの管理画面を開くスラッシュコマンド。設定ファイルをWriteで書き出す動きが裏で走る
  • /clear(クリア) - 会話履歴をリセットするスラッシュコマンド。Writeで一気に長文を書き出した後に呼ぶことが多い
  • /compact(コンパクト) - 会話履歴を要約して圧縮するスラッシュコマンド。Writeで生成物を確定した後の整理に使う
  • Skills(スキルズ) - 再利用できる作業手順をまとめておく仕組み。Writeでスキル定義ファイルを書き出す
  • Hooks(フックス) - ツール実行の前後に処理を差し込む仕組み。Write実行の直前に検閲を走らせる用途で使われる
  • MCP(エムシーピー) - Claude Codeに外部ツールを足す仕組み。Writeで MCP 設定ファイルを書き出す場面がある

参考リンク

書き方

Write(file_path, content) ─ 保存先のパスと書き込む中身の2つを指定して呼ぶ。file_path は絶対パス(家のどこから見ても同じ住所の書き方、例: <code>/home/user/projects/cooking-blog/content/recipes/sukiyaki.md</code>)が必須

やってみるとこうなる

入力

「~/projects/cooking-blog/content/recipes/sukiyaki.md にすき焼きのレシピ記事を書いて。材料表は table 形式で」と頼む

出力例

● Write(~/projects/cooking-blog/content/recipes/sukiyaki.md)
  ⎿  Wrote 38 lines to ~/projects/cooking-blog/content/recipes/sukiyaki.md

このページに出てきた言葉

絶対パス
ファイルの場所を「家のどこから見ても同じ住所」で書く方式。例: <code>/home/aisola/projects/cooking-blog/content/recipes/sukiyaki.md</code>。Writeはこの形式しか受け付けない
相対パス
「ターミナルでいまいる場所からの道順」で書く方式。例: <code>./content/recipes/sukiyaki.md</code>。Writeでは使えない
mkdir
ターミナルで新しいフォルダを作るコマンド。<code>-p</code> をつけると、途中のフォルダもまとめて作ってくれる
エディタ
文章を書いたり書き換えたりするためのアプリ。Windowsの「メモ帳」、Macの「テキストエディット」、VS Code、vim、nano など
ターミナル
黒い画面で文字のコマンドを打ち込む画面。Windowsだと「コマンドプロンプト」「PowerShell」、Macだと「ターミナル」アプリ
Edit
既存ファイルの「ある1ヶ所」だけを書き換えるツール。Writeと違って、それ以外の部分には一切触れない
MultiEdit
同じファイルの中で複数ヶ所をまとめて書き換えるツール。Editを連打する代わりに1回で済ませる
Read
ファイルの中身をClaudeが読むためのツール。既存ファイルを Write で上書きする前は Read で中身を見せておくのが安全
.claude/settings.json
プロジェクトごとのClaude Code設定を入れておくファイル。許可するツール、無効化するツール、環境変数などをまとめて書く
README.md
プロジェクトの入り口に置く説明書ファイル。何のプロジェクトか、どう使うか、を書いておく場所

関連項目

公式ドキュメント

https://code.claude.com/docs/en/tools-reference

-

← 戻る