Dockerized開発の「レイテンシ」を殺せ:Sublime Textで実現するゼロ・フリクションなコンテナ開発術
多くのエンジニアが「Docker内での開発は重い」という呪縛に囚われている。VS CodeのRemote Containersは便利だが、リソース消費が激しく、エディタの挙動が重くなる瞬間に思考が分断されることはないだろうか。
私は、Sublime Textの「極限までの軽さ」を維持しつつ、Docker環境をローカルライクに操作する「Remote SSH over Docker」という戦略を推奨している。これは、Dockerコンテナを単なる実行環境ではなく、「SSHサーバが常駐する軽量な開発ノード」として扱い、Sublime Textをそこに直結させる手法だ。
—
1. なぜ「マウント」ではなく「SSH接続」なのか
コンテナのディレクトリをホスト側にマウント(bind mount)して編集するのは、ファイルシステムイベントの遅延(特にmacOSのDocker Desktop環境)により、IDEのインデックス生成が破綻する最大の原因だ。
Sublime Textの強みは、その圧倒的なI/O処理速度にある。コンテナ内にSSHサーバを仕込み、Sublime Textの `SFTP` パッケージ(または `RemoteSubl`)を経由して接続することで、ホストOSのファイルシステムを経由しない「直接的な編集」が可能になる。
コンテナ側の仕込み(Dockerfile)
開発用コンテナには必ずSSHサーバを常駐させる。
開発用ステージでのみSSHを有効化
RUN apt-get update && apt-get install -y openssh-server \
&& mkdir /var/run/sshd \
&& echo ‘root:password’ | chpasswd \
&& sed -i ‘s/PermitRootLogin prohibit-password/PermitRootLogin yes/’ /etc/ssh/sshd_config
SSHポートを公開
EXPOSE 22
CMD [“/usr/sbin/sshd”, “-D”]
—
2. 「RemoteSubl」によるシームレスな編集体験
Sublime Textで真に生産性を上げるには、`RemoteSubl` プラグインが不可欠だ。これは、SSH経由でコマンドラインから `subl` コマンドを叩くと、ホスト側のSublime Textでファイルが開かれるという、魔法のような仕組みだ。
実務で役立つ神ショートカット
設定ファイル(`Preferences > Key Bindings`)に以下のマッピングを仕込み、コンテナ内での操作スピードを極限まで高める。
[
// コンテナ内のログ監視から瞬時にファイルへジャンプする設定
{ “keys”: [“alt+shift+g”], “command”: “goto_definition” },
// プロジェクト全体の検索を高速化(Dockerのオーバーヘッドを無視できる)
{ “keys”: [“ctrl+p”], “command”: “show_overlay”, “args”: {“overlay”: “goto”} }
]
—
3. 設定の共有化:チームの「開発作法」をコード化する
チーム開発で最もコストがかかるのは「個々人の環境の差異」だ。Sublime Textの設定は `Packages/User` 配下のJSONをGit管理し、プロジェクトごとに `project.sublime-project` ファイルを生成してリポジトリに含めるのが鉄則である。
推奨されるプロジェクト構成例 (`.sublime-project`)
コンテナ開発において、不要なディレクトリ(`.git` や `node_modules`)のインデックスを無視させ、検索負荷を劇的に下げる。
{
“folders”: [
{
“path”: “.”,
“folder_exclude_patterns”: [“.git”, “node_modules”, “vendor”, “.cache”],
“file_exclude_patterns”: [“.log”, “.tmp”, “.DS_Store”]
}
],
“settings”: {
“tab_size”: 4,
“translate_tabs_to_spaces”: true,
“trim_trailing_white_space_on_save”: true, // 保存時に余計な空白を除去し、コミットログを汚さない
“ensure_newline_at_eof_on_save”: true
}
}
—
4. 現場で震えるほど役立つ「隠れた」テクニック
1. ビルドシステムとの連携
Dockerコンテナ内のテスト実行を、Sublime Textの中から実行する。`Tools > Build System > New Build System` で以下を作成する。
{
“shell_cmd”: “docker exec -it
“file_regex”: “^[ ]File \”(…?)\”, line ([0-9])”,
“selector”: “source.js”
}
これで `Ctrl+B` を押すだけで、コンテナ内のテストが走り、結果がSublimeのコンソールに出力される。コンテナにアタッチする必要すらなくなる。
2. LSPの活用
Sublime Textを現代のIDEたらしめているのは `LSP` パッケージだ。コンテナ内に言語サーバ(`pyright`, `gopls` 等)をインストールし、ホストのSublimeからソケット経由で接続すれば、VS Codeと遜色ない補完が、VS Codeの1/10のリソースで実現する。
—
最後に:アーキテクトからの助言
ツールは「宗教」ではない。重要なのは、「エディタが何を抽象化し、何を直接操作しているか」を理解することだ。
Docker上の開発環境は、往々にして物理環境との分離により「見えない壁」を生む。今回紹介したSSH経由でのSublime Text運用は、その壁を「ネットワーク」という透過的なレイヤーに置き換えるものだ。
まずは、一つの小さなサービスからこの構成を導入してほしい。エディタが重くてイライラする無駄な時間が消え、コードの本質に向き合う時間が確保できたとき、あなたは初めて「開発スピード」という概念を再定義できるはずだ。
さあ、設定ファイルを書き換え、コンテナとSublimeを「接続」しよう。あなたのコードは、もっと速く動くはずだ。