spawn は「新しく立ち上げる」こと
英単語の spawn は、もともと「(魚や蛙が)卵を産む」「次々に発生させる」という意味です。プログラミングの世界では、今動いているプログラムが、別の処理を新しく立ち上げることを指して使われます。日本語の記事やログでは「spawnする」「サブプロセスをspawnする」といった書き方をよく見かけます。
正直、最初にこの単語を見たときは「起動(start)や実行(run)と何が違うの?」と思う人が多いはずです。ニュアンスとしては、親が子を産み出すという関係性が含まれているのがポイントです。単に何かを実行するのではなく、「呼び出した側(親)」と「新しく生まれた側(子)」という上下関係ができます。
例え話:厨房の親方と弟子
レストランの厨房を想像してください。注文が10件まとめて入ったとき、親方が全部一人で作るとお客さんを待たせてしまいます。そこで親方は弟子を3人呼んで、「お前はサラダ、お前はスープ、お前は肉を焼け」と指示を出します。
この「弟子を呼んで担当を割り振る」行為が spawn にあたります。ここで大事なのは次の点です。
- 弟子はそれぞれ自分の持ち場で独立して作業する
- 親方は弟子の作業が終わるのを待ったり、結果を受け取ったりできる
- 弟子が作業に失敗したら、親方がそれを把握して対処する
- 親方が店を閉めれば、弟子の作業も終わる
プログラムで spawn されたプロセスも、これと同じ関係です。親の指示で生まれ、独立して動き、結果を親に返し、親が終われば基本的に一緒に片付けられます。
Claude Code の文脈で出てくる spawn
Claude Code のようなツールの解説やログでこの言葉が出てくる場面は、だいたい次の2種類です。
外部コマンドを立ち上げる
ツールがあなたのマシン上で git や npm といったコマンドを実行するとき、内部では新しいプロセスを spawn しています。エラーメッセージに spawn ... ENOENT のような文字列が出ることがあり、これは「立ち上げようとしたコマンドが見つからなかった」という意味です。
別の作業役を立ち上げる
大きなタスクを分担させるために、親側が別の作業単位を新しく走らせる場合にも spawn という言い方をします。厨房の例で言えば弟子を呼ぶ方です。親が全体の進行を管理し、子が個別の作業を担当します。
流れで見ると分かりやすい
この「結果を受け取る」ところまでが一連のセットだと考えておくと、ログを読むときに迷いません。子が何かを出力すれば、それは親のログに流れ込んでくることが多いですし、子がエラー終了すれば親側にもエラーとして伝わります。
つまずきやすいポイント
初心者が引っかかりやすいのは、spawn したプロセスは「別の世界」で動いているという感覚です。たとえば、ある場所でディレクトリを移動したつもりでも、別に spawn されたプロセスは自分の作業ディレクトリを持っています。環境変数も、親から渡されたものだけを持っていて、あとから親側で変えても自動では反映されません。
もう一つは、エラーの読み方です。spawn という単語がエラーメッセージの先頭に付いていると、たいていは「処理の中身」ではなく「立ち上げそのもの」で失敗しています。コマンド名のタイプミス、インストールされていない、パスが通っていない——このあたりを先に疑うと解決が早いです。
言葉としての使い分け
| 言葉 | ニュアンス |
|---|---|
| run / execute | 単に実行する。親子関係を強調しない |
| spawn | 親が子を新しく生み出す。親子関係と独立性を含む |
| fork | 自分自身を複製する形で子を作る(より低レベルな言い方) |
どれも「新しい処理が走る」ことには違いないので、厳密に区別しなくても読み進められます。ただ、spawn と書かれていたら「ああ、親がいて子が生まれたんだな」と頭の中で親子の絵を描けると、ログやドキュメントの意味が一段クリアになります。
このページは役に立ちましたか?