まず「サンドボックス」から
サンドボックスというのは、直訳すれば「砂場」です。子どもが砂場で遊ぶとき、砂が飛び散っても砂場の外までは汚れませんよね。プログラムを動かすときも同じ発想で、「ここから外には影響が出ない、閉じた場所」を用意しておく。それがサンドボックスです。
Claude Codeのようにコマンドを実行したりファイルを書き換えたりするツールでは、この考え方がとても重要になります。うっかり想定外のコマンドが走っても、砂場の中で完結していれば大きな事故にはなりません。
では「プロキシ」とは
プロキシ(proxy)は「代理」という意味の英語です。ネットワークの世界では、自分が直接インターネットに出ていくのではなく、間に立ってくれる代理人を経由して通信することを指します。
会社のビルの受付をイメージするとわかりやすいと思います。外から来た人がいきなり社員の席まで行くことはできず、必ず受付を通る。逆に社員が外に荷物を出すときも受付を経由する。この受付にあたるのがプロキシです。
合わせると「サンドボックスプロキシ」
この2つを組み合わせたのがサンドボックスプロキシです。閉じた実行環境(砂場)から外部への通信を、必ず代理人(プロキシ)を通すようにする仕組みを指します。
ポイントは、砂場の中にいるプログラムが「自分で好きな相手と通信する」ことができない点です。外に出たいなら必ず受付を通る。受付は「この相手ならOK」「この相手はダメ」と判断できるので、通信先をコントロールできます。
なぜこんな面倒なことをするのか
正直、最初は「ただ通信するだけなのに、わざわざ間に何か挟むのは面倒では?」と思うかもしれません。でも、AIコーディングツールのように自分で判断してコマンドを実行するプログラムを動かす場合、これがかなり効いてきます。
たとえば、依存パッケージをインストールしようとして、実は見覚えのないサーバーに接続しにいっていた、というケース。人間なら「あれ?」と気づけますが、自動で動いているときは見逃されがちです。通信が必ず一か所を通るようになっていれば、そこで止められますし、後から「どこと通信したか」を確認することもできます。
身近な例で言うと
子どもにスマホを渡すとき、フィルタリングを設定しますよね。「このサイトは見ていい」「これはダメ」という判断を、スマホ本体ではなく回線側でやる。あれに近い発想です。使う側(=サンドボックスの中身)を信用しきらなくても、通り道を押さえておけば安全性が保てる、という考え方になります。
できるようになること
- 通信先の制限:許可した宛先以外には出ていけないようにする
- 通信内容の記録:いつ、どこと通信したかを一か所で把握できる
- 環境の切り離し:サンドボックス内から、社内ネットワークなど本来触るべきでない場所に直接届かないようにする
注意しておきたいところ
便利な反面、うまく設定できていないと「必要な通信までブロックされて動かない」という状態になります。パッケージのダウンロードやAPIへのアクセスが失敗するとき、原因がコードではなくプロキシ側の許可設定だった、というのはよくある話です。
エラーメッセージにタイムアウトや接続拒否が出ていて、しかも手元のブラウザからは同じURLが普通に開ける——そんなときは、通り道のほうを疑ってみるといいと思います。
用語としてはやや硬いですが、中身は「砂場の中から外に出るときは、必ず受付を通してもらう」というだけの話です。そう理解しておけば、設定画面やドキュメントで出てきても迷わないはずです。
このページは役に立ちましたか?