
自分の開発環境を「理想」に近づけるはじめの一歩
macOS開発者の皆さん、こんにちは!これまでの連載で、Multipassの導入から基本操作、VS Code連携、そしてDocker活用まで、その強力な機能の数々を紹介してきました。
Multipassが提供する軽量かつ柔軟なUbuntu仮想環境が、開発ワークフローの可能性が広がっていくことを実感できたのではないでしょうか。
しかし、単に仮想環境を立ち上げるだけでは、まだ「理想の開発環境」とは言えません。本当に価値があるのは、その環境上であなたが日々使う特定の開発スタックを、いかに効率的かつクリーンに構築・運用できるか、という点が重要です。
例えば、
「ローカル環境を特定のライブラリやデータベースで汚したくない…」
「プロジェクトごとに異なるNode.jsやPythonのバージョンを使い分けたい…」
「新しい技術スタックを気軽に試したいけど、環境構築が面倒…」
もしあなたがこのような悩みを抱えているなら、ぜひこの記事を役に立ててください。
この記事では、Multipassインスタンス上にNode.js + PostgreSQL、そしてPython + Djangoといった具体的な開発スタックを構築する手順を、ステップバイステップで解説します。
さらに、パフォーマンスを最大限に引き出すための最適化のヒントもご紹介します。
あなたが、この記事を読み終える頃には、Multipassを駆使して、どんな開発スタックも自由自在に構築できる自信がつくでしょう。
さあ、あなたのmacOS開発環境を次のレベルへと引き上げましょう!!
これまでの学習内容の振り返り
- 第1回: 導入編 – Multipassの基本的な概念と、macOSへの簡単なインストール方法を学び、軽量Linux環境の導入の第一歩を踏み出しました。
- 第2回: 基本操作編 – インスタンスの起動、停止、削除といったライフサイクル管理に加え、ホストOSとの効率的なファイル共有方法を習得しました。
- 第3回: 開発環境連携編 – VS CodeのRemote – SSH拡張機能を使って、Multipassインスタンスをシームレスなリモート開発環境として活用する方法を解説しました。
- 第4回: Docker活用編 – Docker Desktopの代替として、Multipass上にDocker環境を構築し、コンテナを使った開発・テストを行う方法を学びました。
対象読者
- Multipassの基本的な操作を理解しているmacOS開発者
- ローカル環境をクリーンに保ちつつ、特定の開発スタックを構築したい方
- Node.js、Python、PostgreSQL、Djangoなどの技術スタックをMultipass上で動かしたい方
- 開発環境のパフォーマンス最適化に興味がある方
動作検証環境
この記事で紹介するcurlコマンドの動作は、以下の環境で検証しています。
- OS : macOS Tahoe Version 26.0
- ハードウェア : MacBook Air 2024 M3 24GB
- Multipass : Multipass version 1.16.1
目次
- 1. 事前準備: Multipassインスタンスの作成とVS CodeでのSSH接続
- 1. Multipassインスタンスの作成
- 2. VS Code Remote – SSH拡張機能のインストール
- 3. MultipassインスタンスへのSSH接続設定
- 4. VS CodeからMultipassインスタンスに接続
- 2. 実践例1: Node.js + PostgreSQL開発環境の構築
- 構成図
- Node.jsのインストールとバージョン管理(nvm)
- PostgreSQLのインストールと設定
- 簡単なWebアプリケーションのデプロイと動作確認
- 3. 実践例2: Python + Django開発環境の構築
- 構成図
- Pythonのインストールと仮想環境(uv)
- Djangoのインストールとプロジェクト作成
- データベースの設定
- データベースの初期設定とマイグレーション
- ALLOWED_HOSTSの設定
- 開発サーバーの起動と動作確認
- 仮想環境の無効化と依存関係のロックファイル生成
- 4. パフォーマンス最適化のヒント
- Multipassインスタンスのリソース割り当て再考
- ファイルI/Oの最適化
- 5. FAQ: よくある質問と回答
- 6. まとめ:あなたの開発環境をカスタマイズ
- 7. 参考資料
1. 事前準備: Multipassインスタンスの作成とVS CodeでのSSH接続
本記事で紹介する開発スタックを構築する前に、Multipassインスタンスの作成と、VS CodeからインスタンスへSSH接続するための準備を行います。
これにより、macOSから直接インスタンス内のファイルを編集したり、ターミナルを操作したりできるようになり、開発効率が大幅に向上します。
1. Multipassインスタンスの作成
まずは、開発環境のベースとなるUbuntuインスタンスを作成します。ここでは、ある程度の開発作業に耐えうるリソースを割り当てておきます。
multipass launch --name my-dev-vm --cpus 2 --memory 4G --disk 30G
--name my-dev-vm
: インスタンス名をmy-dev-vm
とします。--cpus 2
: CPUを2コア割り当てます。--memory 4G
: メモリを4GB割り当てます。--disk 30G
: ディスク容量を30GB割り当てます。
インスタンスが起動したら、IPアドレスを確認しておきましょう。
multipass info my-dev-vm | grep IPv4 | awk '{print $2}'
2. VS Code Remote – SSH拡張機能のインストール
VS CodeからMultipassインスタンスにSSH接続するために、「Remote – SSH」拡張機能をインストールします。
- VS Codeを開き、左側のアクティビティバーから「拡張機能」アイコンをクリックします。
- 検索バーに「Remote – SSH」と入力し、Microsoftが提供する拡張機能をインストールします。
3. MultipassインスタンスへのSSH接続設定
VS CodeからSSH接続するためには、SSHキーの準備とVS CodeのSSH設定ファイル (~/.ssh/config
) の編集が必要です。
- SSHキーの生成:
まだSSHキーを持っていない場合は、ホストOSのターミナルで以下のコマンドを実行して生成します。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_multipass_rsa -N ""
- 公開鍵のインスタンスへの登録:
生成した公開鍵 (~/.ssh/id_multipass_rsa.pub
) をMultipassインスタンスに転送し、authorized_keys
に追加します。
# 公開鍵をインスタンスに転送
multipass transfer ~/.ssh/id_multipass_rsa.pub my-dev-vm:/home/ubuntu/id_multipass_rsa.pub
# インスタンスに接続し、公開鍵をauthorized_keysに追加
multipass shell my-dev-vm << EOF
mkdir -p ~/.ssh
cat ~/id_multipass_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_multipass_rsa.pub
EOF
- VS CodeのSSH設定ファイル (
~/.ssh/config
) の編集:
macOSの~/.ssh/config
ファイルを編集し、Multipassインスタンスへの接続情報を追加します。
Host my-dev-vm
HostName <MultipassインスタンスのIPアドレス>
User ubuntu
IdentityFile ~/.ssh/id_multipass_rsa
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
HostName
: 上記で確認したMultipassインスタンスのIPアドレスに置き換えてください。User
: Multipassインスタンスのデフォルトユーザーはubuntu
です。IdentityFile
: 生成した秘密鍵のパスを指定します。
4. VS CodeからMultipassインスタンスに接続
VS CodeのRemote – SSH拡張機能を使って、Multipassインスタンスに接続します。
- VS Codeの左下にある緑色の「リモートインジケーター」をクリックします。
- コマンドパレットが表示されたら、「Remote-SSH: Connect to Host…」を選択し、
my-dev-vm
を選択します。 - 初めて接続する場合は、フィンガープリントの確認を求められることがあります。「Continue」を選択してください。
これで、VS CodeからMultipassインスタンスにSSH接続され、インスタンス内のファイルを直接編集したり、統合ターミナルでコマンドを実行したりできるようになります。
より詳細な手順やトラブルシューティングについては、Multipass on macOS 徹底活用 (3) – VS Code連携で開発効率を爆上げ! を参照してください。
2. 実践例1: Node.js + PostgreSQL開発環境の構築
このセクションでは、macOS上にMultipassでUbuntuインスタンスを構築し、そのインスタンス内でNode.jsアプリケーションとPostgreSQLデータベースを動作させる開発環境を構築します。ホストOS(macOS)のVS CodeからSSH接続して開発を行い、Webブラウザからアプリケーションにアクセスする構成です。
構成図

まずは、Web開発で非常に人気の高い「Node.js + PostgreSQL」のスタックをMultipassインスタンス上に構築してみましょう。フロントエンドからバックエンドまで、JavaScript/TypeScriptで一貫して開発したい方には特におすすめの組み合わせです。
Node.jsのインストールとバージョン管理(nvm)
Node.jsのバージョン管理には、nvm
(Node Version Manager) を使うのが一般的です。これにより、プロジェクトごとに異なるNode.jsバージョンを簡単に切り替えることができます。
まず、Multipassインスタンスに接続し、nvm
をインストールします。
# Multipassインスタンスに接続
multipass shell <instance-name>
# nvmをインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# nvmをシェルにロードするために、シェルを再起動するか、以下のコマンドを実行
source ~/.bashrc # または ~/.zshrc など、お使いのシェルに合わせて
# nvmがインストールされたことを確認
nvm --version
nvm
がインストールできたら、任意のNode.jsバージョンをインストールし、使用するバージョンを設定します。
# 利用可能なNode.jsバージョンをリストアップ
nvm ls-remote
# 最新のLTSバージョンをインストール
nvm install --lts
# 特定のバージョンをインストール(例: v20.19.5)
nvm install 20.19.5
# 使用するバージョンを設定
nvm use --lts # または nvm use 20.19.5
# Node.jsとnpmがインストールされたことを確認
node -v
npm -v
これで、Multipassインスタンス上でNode.js開発を行う準備が整いました。
PostgreSQLのインストールと設定
次に、データベースとしてPostgreSQLをインストールします。Ubuntu環境では apt
コマンドで簡単にインストールできます。
# PostgreSQLをインストール
sudo apt update
sudo apt install -y postgresql
# PostgreSQLのサービスが起動していることを確認
sudo systemctl status postgresql
# PostgreSQLのデフォルトユーザー(postgres)のパスワードを設定
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'your_postgres_password';"
# Djangoプロジェクトで使用する新しいデータベースユーザーとデータベースを作成
# ここでは例としてユーザー名: myuser, パスワード: mypassword, データベース名: mydb を使用します。
# これらの値は、後述のDjango設定ファイル (settings.py) で使用します。
# 新しいデータベースユーザーを作成
sudo -u postgres createuser --interactive
# Enter name of role to add: myuser <-- ここで 'myuser' と入力
# Shall the new role be a superuser? (y/n) n
# Shall the new role be allowed to create databases? (y/n) y
# Shall the new role be allowed to create more new roles? (y/n) n
# 作成したユーザー 'myuser' のパスワードを設定
sudo -u postgres psql -c "ALTER USER myuser WITH PASSWORD 'mypassword';"
# 新しいデータベース 'mydb' を作成し、所有者を 'myuser' に設定
sudo -u postgres createdb -O myuser mydb
# 作成したユーザーでpsqlに接続できるか確認
psql -U myuser -d mydb
# パスワードを求められたら 'mypassword' を入力
# \q で終了
[!NOTE]psql -U myuser -d mydb
で接続する際に「FATAL: Peer authentication failed for user "myuser"
」のようなエラーが発生する場合があります。これはPostgreSQLの認証設定が原因です。
これを解決するには、pg_hba.conf
ファイルを編集し、myuser
がパスワード認証で接続できるように変更する必要があります。
pg_hba.conf
ファイルの編集:
PostgreSQLのバージョンを確認し(例:psql --version
)、sudo nano /etc/postgresql/<バージョン番号>/main/pg_hba.conf
でファイルを開きます。
ファイル内でlocal all all peer
の行を探し、peer
をmd5
またはscram-sha-256
に変更します。
# "local" is for Unix domain socket connections only
local all all md5 # または scram-sha-256
- PostgreSQLサービスを再起動:
設定変更を反映させるために、PostgreSQLサービスを再起動します。
sudo systemctl restart postgresql
[!TIP]
PostgreSQLの認証設定(pg_hba.conf
)を変更することで、ホストOSからの接続を許可することも可能です。開発用途であれば、multipass info <instance-name> | grep IPv4 | awk '{print $2}'
で取得したIPアドレスからの接続を許可する設定を追加すると便利。
簡単なWebアプリケーションのデプロイと動作確認
Node.jsとPostgreSQLの環境が整ったので、簡単なWebアプリケーションをデプロイして動作を確認してみましょう。ここでは、Express.jsを使ってシンプルなAPIサーバーを作成します。
まず、ホストOS側でプロジェクトを作成し、multipass mount
でインスタンスに共有します。
# ホストOS側でプロジェクトディレクトリを作成
mkdir my-node-app
cd my-node-app
# Multipassインスタンスにマウント
multipass mount $(pwd) <instance-name>:/home/ubuntu/my-node-app
次に、Multipassインスタンスに接続し、マウントしたディレクトリに移動してExpress.jsアプリケーションを作成します。
# Multipassインスタンスに接続
multipass shell <instance-name>
# マウントしたディレクトリに移動
cd my-node-app
# npmプロジェクトを初期化
npm init -y
# Expressとpg(PostgreSQLクライアント)をインストール
npm install express pg
index.js
というファイルを作成し、以下のコードを記述します。
コード内の<your-db-user>
, <your-database-name>
, <your_password>
の箇所を、データベースの設定に合わせて変更してください。
// index.js
const express = require('express');
const { Pool } = require('pg');
const app = express();
const port = 3000;
// PostgreSQL接続設定
const pool = new Pool({
user: '<your-db-user>',
host: 'localhost',
database: '<your-database-name>',
password: '<your_password>',
port: 5432,
});
app.get('/', (req, res) => {
res.send('Hello from Node.js app on Multipass!');
});
app.get('/users', async (req, res) => {
try {
const client = await pool.connect();
const result = await client.query('SELECT NOW() as current_time;'); // 例として現在時刻を取得
res.json({ message: 'Users data (example)', currentTime: result.rows[0].current_time });
client.release();
} catch (err) {
console.error('Error executing query', err.stack);
res.status(500).send('Database error');
}
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
アプリケーションを起動します。
node index.js
ホストOSで以下のコマンドを実行し、MultipassインスタンスのIPアドレスを確認してください。<instance-name>
は、ご自身のMultipassインスタンス名に置き換えてください。
multipass info <instance-name> | grep IPv4 | awk '{print $2}'
動作確認1:
取得したIPアドレスを使用して、macOSのWebブラウザからhttp://<取得したIPアドレス>:3000
にアクセスしてください。「Hello from Node.js app on Multipass!」と表示されれば成功です。
動作確認2:
macOSのWebブラウザからhttp://<取得したIPアドレス>:3000/users
にアクセスしてください。以下のような現在時刻が表示されれば成功です。
{"message":"Users data (example)","currentTime":"2025-10-02T09:21:57.050Z"}
[!NOTE]
もしホストOSからアクセスできない場合は、Multipassインスタンスのファイアウォール設定を確認してください。UbuntuではUFW (Uncomplicated Firewall) が有効になっている場合があります。sudo ufw allow 3000/tcp
でポートを開放できます。
3. 実践例2: Python + Django開発環境の構築
このセクションでは、macOS上にMultipassでUbuntuインスタンスを構築し、そのインスタンス内でPython/DjangoアプリケーションとPostgreSQLデータベースを動作させる開発環境を構築します。
macOSのVS CodeからSSH接続して開発を行い、Webブラウザからアプリケーションにアクセスする構成です。
構成図

次に、Python開発で人気のWebフレームワーク「Django」をMultipassインスタンス上に構築してみましょう。ここでは、高速なパッケージ管理ツール「uv」を使用して、Pythonのバージョン管理と仮想環境の構築を行います。
Pythonのインストールと仮想環境(uv)
uv
はPythonのバージョン管理機能も内包しており、pyenv
のような外部ツールなしでPythonをインストール・管理できます。
# Multipassインスタンスに接続
multipass shell <instance-name>
# uvがインストールされていることを確認(未インストールの場合はインストール)
# curl -LsSf https://astral.sh/uv/install.sh | sh
# echo "$HOME/.local/bin" >> ~/.bashrc # または ~/.zshrc
# source ~/.bashrc # または source ~/.zshrc
# uvを使って最新版Pythonをインストール(例: 3.13)
# 特定のバージョンを指定する場合は uv python install 3.x のように指定
uv python install 3.13
# プロジェクトディレクトリを作成し、移動
mkdir my_django_project
cd my_django_project
# uvを使ってプロジェクトを初期化し、Pythonバージョンを固定
# これにより、.python-versionファイルが作成され、uvはこのバージョンを使用します。
uv init --python 3.13
uv python pin 3.13
# 仮想環境を作成
# uvは自動的に.venvという名前で仮想環境を作成します。
uv venv
# 作成した仮想環境をアクティベート
source .venv/bin/activate
# Pythonとuvのバージョンを確認
python -V
uv --version
[!TIP]uv init
コマンドは、pyproject.toml
や.python-version
ファイルを作成し、プロジェクトの初期設定を行います。uv venv
は、そのプロジェクトの.venv
ディレクトリに仮想環境を作成します。
Djangoのインストールとプロジェクト作成
仮想環境が有効な状態で、uv
を使ってDjangoをインストールします。
# 仮想環境がアクティベートされていることを確認(プロンプトに(.venv)などが表示されているはずです)
# uvを使ってDjangoパッケージをインストールします。
uv pip install Django
# Djangoプロジェクトを作成します。
django-admin startproject mysite .
データベースの設定
DjangoプロジェクトでPostgreSQLデータベースを使用するために、設定を行います。MultipassインスタンスにPostgreSQLがインストールされていない場合は、「1. 実践例1: Node.js + PostgreSQL開発環境の構築」を参照してインストールしてください。
まず、DjangoからPostgreSQLに接続するためのライブラリをインストールします。Psycopg3は、PythonとPostgreSQL間の最新かつ推奨されるアダプターです。
# PostgreSQL接続用のライブラリ (Psycopg3) をインストール
uv pip install psycopg
次に、Djangoプロジェクトのmysite/settings.py
ファイルを編集し、データベース設定をPostgreSQLに変更します。Django 3.2以降では、django.db.backends.postgresql
エンジンがPsycopg3をサポートしているため、特別な設定変更は不要です。
# mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydjangodb', # データベース名
'USER': 'myuser', # データベースユーザー名
'PASSWORD': 'mypassword', # データベースパスワード
'HOST': 'localhost', # PostgreSQLが動作しているホスト
'PORT': '', # PostgreSQLのポート (デフォルトは5432)
}
}
[!NOTE]NAME
,USER
,PASSWORD
は、PostgreSQLのセットアップ時に設定した値に合わせてください。
Psycopg3に関する詳細情報は、公式ドキュメントを参照してください。
データベースの初期設定とマイグレーション
Djangoプロジェクトの初期設定として、データベースのマイグレーションを行います。
# データベースのマイグレーションを実行します。
python manage.py migrate
ALLOWED_HOSTSの設定
DjangoアプリケーションをMultipassインスタンスの外部からアクセスできるようにするため、mysite/settings.py
ファイルの ALLOWED_HOSTS
にMultipassインスタンスのIPアドレスを追加する必要があります。
- MultipassインスタンスのIPアドレスを確認:
ホストOSで以下のコマンドを実行し、MultipassインスタンスのIPアドレスを確認してください。<instance-name>
は、ご自身のMultipassインスタンス名に置き換えてください。
multipass info <instance-name> | grep IPv4 | awk '{print $2}'
mysite/settings.py
を編集:
MultipassインスタンスにSSH接続し、mysite/settings.py
ファイルを開きます。
multipass shell <instance-name>
nano ~/my_django_project/mysite/settings.py
ファイル内で ALLOWED_HOSTS = []
の行を探し、確認したIPアドレスを追加します。
# mysite/settings.py
ALLOWED_HOSTS = ['<MultipassインスタンスのIPアドレス>']
# 例: ALLOWED_HOSTS = ['192.168.64.5']
# または、開発環境でのみ一時的に全てのホストからのアクセスを許可する場合
# ALLOWED_HOSTS = ['*']
変更後、ファイルを保存してエディタを終了します。
開発サーバーの起動と動作確認
開発サーバーを起動し、WebブラウザでアクセスしてDjangoの初期ページが表示されるか確認します。
# 開発サーバーを起動します。
python manage.py runserver 0.0.0.0:8000
macOSのWebブラウザからhttp://<取得したIPアドレス>:8000
にアクセスしてください。Djangoのロケットアイコンが表示されれば成功です。
仮想環境の無効化と依存関係のロックファイル生成
開発サーバーを停止し、仮想環境を無効化します。その後、プロジェクトの依存関係を厳密に固定するために、uv lock
コマンドでロックファイルを生成します。このファイルをバージョン管理システムに含めることで、チームメンバー間や異なる環境間で、常に一貫性のある再現可能なインストールが可能になります。
# 開発サーバーを停止します (Ctrl+C)。
# 仮想環境を無効化します。
deactivate
# 依存関係のロックファイルを生成します。
uv lock
4. パフォーマンス最適化のヒント
Multipassインスタンス上で開発スタックを運用する際、パフォーマンスは非常に重要な要素です。ここでは、インスタンスのパフォーマンスを最大限に引き出すためのヒントをいくつかご紹介します。
Multipassインスタンスのリソース割り当て再考
Multipassインスタンスは、デフォルトで限られたリソース(CPU 1コア、メモリ 1GB、ディスク 5GB)で起動します。開発スタックによっては、これでは不十分な場合があります。multipass set
コマンドを使って、インスタンスのリソースを調整できます。
# インスタンスを停止
multipass stop <instance-name>
# CPUを4コアに、メモリを8GBに、ディスクを50GBに設定
multipass set local.<instance-name> cpus=4
multipass set local.<instance-name> memory=8G
multipass set local.<instance-name> disk=50G
# インスタンスを起動
multipass start <instance-name>
# 設定が反映されたことを確認
multipass info <instance-name>
[!TIP]
リソースは必要に応じて割り当て、使い終わったら解放することで、ホストOSのパフォーマンスへの影響を最小限に抑えることができます。
ファイルI/Oの最適化
Multipassの共有フォルダ機能は便利ですが、ホストOSとインスタンス間のI/Oオーバーヘッドにより、大量のファイルI/Oが発生する作業(例: npm install
、pip install
、データベース操作、ビルドキャッシュなど)ではパフォーマンスが低下する可能性があります。
- 共有フォルダの選択: 共有フォルダは、設定ファイル、ソースコード、ドキュメントなど、ファイル数が少なく、頻繁に変更されないリソースファイルに限定することをお勧めします。
例えば、以下のようなプロジェクト構造の場合、my-project
ディレクトリ全体を共有するのではなく、src
や config
のようなディレクトリのみを共有対象とすることを検討します。
my-project/
├── src/ # ソースコード (共有対象候補)
├── config/ # 設定ファイル (共有対象候補)
├── docs/ # ドキュメント (共有対象候補)
├── .git/ # Gitリポジリ (共有非推奨 - インスタンス内部)
├── node_modules/ # Node.jsパッケージ (共有非推奨 - インスタンス内部)
├── .venv/ # Python仮想環境 (共有非推奨 - インスタンス内部)
├── data/ # データベースファイルなど (共有非推奨 - インスタンス内部)
└── logs/ # ログファイル (共有非推奨 - インスタンス内部)
頻繁に読み書きが発生するディレクトリ(node_modules
、Python仮想環境の.venv
、データベースファイル、ログファイルなど)は、Multipassインスタンスの内部ストレージに配置し、必要に応じてホストOSと同期する運用を検討しましょう。
uv
のキャッシュ活用:uv
はダウンロードしたパッケージをキャッシュするため、一度インストールしたパッケージは次回以降のインストール時に再ダウンロードが不要となり、処理時間を大幅に短縮します。
5. FAQ: よくある質問と回答
Q1: 複数の開発スタックを同時に動かすことはできますか?
A1: はい、可能です。Multipassは複数のインスタンスを同時に起動できるため、それぞれのインスタンスで異なる開発スタックを構築し、並行して作業することができます。例えば、node-dev
インスタンスでNode.jsアプリを、python-dev
インスタンスでDjangoアプリを動かすといった使い分けができます。ただし、ホストOSのリソース(CPU、メモリ)には限りがあるため、同時に起動するインスタンスの数や割り当てるリソースには注意が必要です。
Q2: Multipassインスタンスのバックアップはどのように行えば良いですか?
A2: Multipass自体には組み込みのバックアップ機能はありませんが、インスタンスのディスクイメージをコピーすることで手動でバックアップを作成できます。インスタンスのディスクイメージは通常、~/Library/Application Support/multipass/data/multipassd/vault/instances/<instance-name>/
にあります。インスタンスを停止した状態でこのディレクトリをコピーすることで、バックアップとして保存できます。また、cloud-init
スクリプトを適切に管理していれば、いつでも同じ環境を再構築できるため、これも一種のバックアップ戦略と言えます。
Q3: 開発スタックを構築する際に、他に注意すべき点はありますか?
A3: 以下の点に注意すると良いでしょう。
- ポートフォワーディング: ホストOSからMultipassインスタンス内のサービスにアクセスする場合、必要に応じてポートフォワーディングを設定するか、インスタンスのIPアドレスを直接利用します。
- 環境変数: データベースの接続情報など、機密性の高い情報は環境変数として設定し、コードに直接書き込まないようにしましょう。
- SSHキー: セキュリティのため、SSH接続にはパスワード認証ではなくSSHキー認証を使用し、キーは適切に管理してください。
cloud-init
の活用: 開発スタックの構築手順をcloud-init
スクリプトとして記述しておくと、新しいインスタンスを起動する際に自動で環境をセットアップできるため、非常に効率的です。
6. まとめ:あなたの開発環境をカスタマイズ
本記事では、macOS上でMultipassを活用し、VS Codeとの連携を通じて、Node.js + PostgreSQL、Python + Djangoといった具体的な開発スタックを効率的に構築・運用する方法を解説しました。
Multipassは、macOSをクリーンに保ち、軽量かつ独立したLinux開発環境を提供する強力なツールであり、VS CodeとのSSH連携により、ローカル開発と変わらない快適な開発体験を実現します。
- 事前準備: Multipassインスタンスの作成からVS CodeでのSSH接続まで、開発を始めるための基盤を整えました。これにより、ホストOSからインスタンス内のファイルを直接編集し、ターミナルを操作できる開発環境が確立されます。
- Node.js + PostgreSQL:
nvm
とapt
を組み合わせることで、最新のWebアプリケーション開発環境を構築しました。 - Python + Django:
uv
を導入することで、Pythonのバージョン管理と仮想環境構築、パッケージ管理を高速化・簡素化しました。Psycopg3を利用したPostgreSQL接続設定や、ALLOWED_HOSTS
の設定など、Djangoアプリケーションを外部からアクセス可能にするための設定も行いました。 - パフォーマンス最適化: Multipassインスタンスのリソース割り当て(CPU、メモリ、ディスク)の正確な設定方法や、ファイルI/Oの最適化(共有フォルダの適切な利用、
uv
のキャッシュ活用)により、開発体験をさらに向上させるヒントを提供しました。
これらの実践例はあくまで一例です。あなたの開発ニーズに合わせて、Multipassインスタンスを自由にカスタマイズし、理想の開発環境を追求してください。
この記事があなたの開発に役立ったと感じたら、ぜひSNSでシェアしてください。Multipass for macOSの魅力をより多くの開発者に伝え、快適な開発環境構築の輪を広げましょう!
7. 参考資料
- Multipass 公式ドキュメント
- nvm (Node Version Manager) GitHubリポジトリ
- PostgreSQL 公式ドキュメント
- Django 公式ドキュメント
- uv 公式ドキュメント
- uv GitHubリポジリ
8. 免責事項
本記事の内容は、執筆時点での情報に基づいています。ソフトウェアのバージョンアップ等により、手順や設定が変更される可能性があります。本記事の内容を参考に作業を行う際は、ご自身の責任において実施してください。いかなる損害が発生した場合でも、筆者および公開元は一切の責任を負いません。