【リモートかいはつ】

リモート開発 とは?

最終更新:
💡 画面はこっち、頭脳はあっち

手元のエディタから別のマシン(サーバー、仮想マシン、コンテナ、WSLなど)に接続し、コードの置き場所や実行環境をそちら側に置いて開発するスタイル。手元のPCの性能やOSに縛られにくくなる。

📌 このページのポイント
リモート開発のアーキテクチャ ローカル PC エディタ UI 画面表示と入力を担当 SSH / トンネルなど 双方向通信 リモートマシン ファイルシステム / コード ターミナル / ビルド 拡張機能(サーバー側) 主なユースケース 🖥️ GPUサーバー接続 機械学習の学習実行 🐳 コンテナ内開発 Dev Container連携 🔒 セキュア開発 コードをローカルに置かない
リモート開発:ローカルのUIからリモートの計算資源を活用
ひよこ ひよこ
リモート開発って、リモートワークとは違うの?
ペンギン先生 ペンギン先生
いい質問だね。リモートワークは「人が」オフィス以外で働くこと。リモート開発は「開発環境が」手元のPCとは別の場所にあること。オフィスにいても、サーバーやコンテナに繋いで開発していればリモート開発だよ
ひよこ ひよこ
具体的にはどうやって繋ぐの?
ペンギン先生 ペンギン先生
代表例はVS CodeのRemote - SSH拡張機能だね。SSHで接続すると、接続先にVS Code Serverが入って、ファイル操作やターミナル、多くの拡張機能がそちらで動く。手元のVS Codeは画面の表示と入力を担当するイメージだよ。JetBrainsでも、接続先でIDE本体を動かして手元は軽いクライアントで操作する仕組みがあるんだ
ひよこ ひよこ
遅延が気になりそう…実用的なの?
ペンギン先生 ペンギン先生
VS Codeの公式ドキュメントでは「ローカルと同等の開発体験」を目指した設計だと説明されていて、文字の入力のような操作は手元の画面で処理されるよ。とはいえ、ファイルの保存やターミナルの応答はネットワークを通るから、回線の遅延が大きいと待ち時間を感じることはある。接続先との距離や回線の状態は確認しておきたいね
ひよこ ひよこ
どんな場面でリモート開発を使うの?
ペンギン先生 ペンギン先生
機械学習でGPUサーバーに繋いで学習を回すとき、本番と同じLinux環境で開発・デバッグしたいとき、Dev Containersでチームの環境をそろえたいときなどだね。会社のサーバー上にコードを置いて手元のPCに保存しない運用にも使えるよ。クラウド開発環境は、こうした接続先の環境をサービスとして用意してくれるものと考えるとわかりやすいね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リモート開発」って出てきたら「手元のエディタから遠くのマシンに繋いで、そっちで動かしながら開発するスタイル」と思えればだいたいOK!
📖 おまけ:英語の意味
「Remote Development」 = 遠隔開発
💬 Remote(遠隔の)とDevelopment(開発)を組み合わせた言葉。開発の「実行場所」と「操作場所」を分けて考えるスタイルだよ

参考資料

← 用語集にもどる