Proxmox + MSL Setupで簡単プロト環境の作成
フリーランス・小さなソフトハウスのための
セキュアに分離された開発環境を“こっそり”用意しておくことで、ヘッドカウント型ビジネスでも、きつめのスケジュール案件をなるべく燃やさずにこなすための話です。
はじめに
フリーランスや、いわゆるヘッドカウント型ソフトハウスとしてプロジェクトに入ると、だいたいこんな構図になります。
- 元請け(大手 SI / ベンダー)が 立派な工程表(でも実は穴だらけ)を出してくる
- たいていの人は、その穴を見抜けるレベルのレビュー実戦経験がない
(もしくは、あってもプライムにケチを付けられないので従うしかない) - 末端側はその(主にウォーターフォール型の)工程に従って
- 「基本設計は基本設計だけ」
- 「詳細設計は詳細設計だけ」
をやる
- 作るものの 全体像が曖昧なまま、大きな視点での重要な項目が抜けたまま設計が進み、
実際に環境を組み上げたタイミングでようやく現実が見える - 結果として
- 仕様漏れ
- 追加作業・追加料金交渉
- 納期ギリギリ
- ユーザー満足度の低下
本来、大きなプロジェクトでは プロジェクト計画書はパートナーにも展開されて、双方でコンセンサスを取りながら進める のが理想です。
でも現実には、末端の小さな会社の社長やフリーランスは そもそもプロジェクト計画を提示されても、ただ「プロジェクトキックオフの儀式」としてしか見ていない
というケースがほとんどです。
本来は、
- どういうリスクを想定しているのか
- そのリスクヘッジ案は何か
といった説明や議論が必要なタイミングなのですが、様々な事情からなかなか実践できません。
この記事では、そういう前提のもとで、
「元請けの工程計画“だけ”を信じると燃えがちなので、
フリーランス・小さなソフトハウス側で こっそり用意しておく『内部工程計画』とプロト環境」
というテーマでまとめます。
1. 元請けの工程表は「PMの願望」だと思っておく
まず前提として:
- 元請け(またはプライム)の工程表は、
「PM が“こうなったらいいな”」が強く出たドキュメント
です。
そこにはふつう、
- 商用環境の構成が固まるタイミング
- 試験環境でどこまで再現するか
- どの段階で何を試すか
といった 現場の安全マージンやリスクヘッジ は、ほとんどの場合書かれていません。
極端な例だと:
- 要件定義工程がない(そもそも基本設計のインプットドキュメントは?)
- 各工程での成果物が決まっていない
- 基本・機能・詳細・運用設計工程なしに、いきなりパラメータ設計書
- いきなり環境構築(「PoC でやったから良いでしょ?」という、設計なしでもいけるんじゃないかという幻想)
- 本番更改ではない案件なのに
「本番環境は存在しないから、ステージング=そのまま本番でいいよね?」というノリで、
商用後の保守のイメージもなく、ステージング構築期間もリソースもほとんど取られていない - 実装期間が妙に短い(3 週間とか)。その間に実は
- 実装環境構築
- 実装
- テスト
- テスト仕様書作成
- コードレビュー
- テスト報告書作成
…が全部入り
- セキュリティ設計、もしくはセキュアコーディングガイドラインもなく、後で脆弱性試験で炎上
という工程表を見かけることもあります。(これでもまだ一部です)
こういう計画に対し、
「俺は仕事取ってきてやったんだから、黙ってやれ」
という経営者も多いのではないでしょうか。
本来、これはプライムがちゃんと整理し、リスクを考慮しながら作るべきものですが、
目の前の人参を食べないと生きていけない、という事情もあります。
ただし、そのまま乗ると、だいたい後半で燃えます。
なので、フリーランス・小さなソフトハウス側には
「外向け工程表は外向けとして尊重しつつ、
内側では別の“裏プロジェクト計画”を持つ」
という発想がかなり大事になります。
ここで、壮大なプロジェクト計画書を自分で一から作れという話ではありません。ご安心ください。
また、「こういう線表を一瞬見ただけでレビューできる知識を今すぐ身につけろ」という話でもありません。
2. 技①:基本設計の段階で「プロト環境」を先に作る
一つ目の技はこれです。
基本設計フェーズの早い段階で、
本番と同じ構成イメージの“影のプロト環境”を、自分たち側でこっそり作ってしまう。
ここで言う「プロト環境」は、そのプロジェクトに応じた:
- 土台となる OS
- 想定しているミドルウェア(アプリケーションサーバ、レポーティング基盤など)
を 知る限り本番構成に近い形で一度組んでみる箱 です。
なお、以下はだいたいどんなプロダクトでも必要になるので、あらかじめ作っておくのが得策です。
- GitLab などのソースコード管理・CI/CD 基盤
これをやっておくメリット
- 早い段階で
- 「リバースプロキシ足りなくない?」
- 「この構成だともう 1 個別 DB が必要になる」
といった 設計上の“大穴” に気づける
- 元請けの基本設計がふわっとしていても、
自分の目で“動くものの全体像”を先に掴める - そしてこのプロト環境の構築メモや設定手順は必ず残しておいてください。メモ書きレベルで構いませんが、
自分が後で説明できるレベル のものが必要です。
これとインプットの要件定義があれば、基本設計書そのものはあとから 2〜3 日で一気に書けます。
体裁や細かい部分は面倒ですが、大筋は LLM を使えば 2〜3 日で十分形にできます。
ポイントは、
「工程表どおり、基本設計工程ではドキュメントだけ書く」
ではなく、
「基本設計の最初の方で、まずはプロト環境をこっそり動かしてみる」
に 内部工程を勝手に入れ替えてしまう ことです。
外には言いません。(そもそも工程に無いのですから伝える必要もありません)
あくまで「自分たちが燃えないための保険」として、自社の努力でやっておきます。
とはいっても、自社で新たに大きなコストを捻出する必要はありません。
- プロジェクト開始早々は、
- 要件定義がまだ出てこない
- 基本方針が固まっていない
- キックオフが来週
など、意外と“待ち時間”が多いものです。
- あまり自分に関係ない部分の打ち合わせに出ている間に、こっそり進める、という手もあります。
つまり、待ち時間を活用して、ある程度動くものの断片でもいいから作っておく。
“勝手アジャイル回す”ぐらいの勢いです。
3. 技②:最初に OS とミドルウェアの“バージョン釘打ちミーティング”をねじ込む
ただし、プロト環境を先に作るには 一つ大きな落とし穴 があります。
バージョンが後から変わって、全部作り直しになる。
先ほどの構築メモがあれば大した問題ではありませんが、なるべく手戻り工数は削減したいところです。
これを避けるために、基本設計の初期に
「バージョン釘打ちミーティング」 をねじ込んでおくのが有効です。
ここで最低限、合意しておきたいのは:
- 土台となる OS のバージョン(メジャー+マイナーまで決まれば上出来)
- 主要なミドルウェア(アプリケーションサーバ、レポーティング、バッチ基盤など)とそのバージョン
- それぞれのサポート状況(EoL 時期、メーカーサポートの有無、OSS であればコミュニティの活動状況)
「釘打ち」は完璧でなくていい
ここで大事なのは、
- 一生変えません、という意味での固定ではなく
- 「ひとまずこの前提で設計・見積もりを進める」レベルの合意
にしておくことです。
後からどうせ、
- 「やっぱりこのバージョンじゃなくて…」
- 「ウイルス対策ソフトが正式に対応していなくて…」
という話が出ることもあります。
そこは柔軟に対応できるようにしておきましょう。
4. 技③:プロト環境の存在は言わず、「他プロジェクトの経験値です」で押す
ここもかなり重要なテクニックです。
影のプロト環境を作って、
そこでしっかり性能やリソースを見ておくと、後のフェーズでこう言われたときに楽になります。
- 「この構成で、CPU 何コアぐらい必要ですか?」
- 「何ユーザーぐらいまで余裕がありますか?」
- 「どのくらいのマシンサイズを見込めばいいですか?」
正直に言うと、
裏ではプロト環境でけっこうちゃんと数字を取っている わけですが、
それを
「実は自前の本番そっくり環境で負荷かけてみました!」
とストレートに言う必要はありません。というか、言わない方がいいです。
ここは 期待値コントロール の領域です。
外向きの言い方サンプル
- 「同等規模の構成での過去案件の経験値 では、
このくらいのアクセス数なら CPU 使用率は〜% 前後でした。」 - 「近い構成のプロジェクト実績 をベースにすると、
初期はこのマシンサイズから始めるのが妥当かなと考えています。」 - 「似たような業務負荷の案件 で取った数値を参考にすると、
このくらいのスペックであれば、当面は余裕があります。」
実際には「その過去案件の 1 つが、今回の影のプロト環境」だったりするわけですが、
外から見れば “経験値”として扱えるライン です。
ポイントは、
- 裏側ではしっかり測っている
- でも過度に「全部やってあげてます!」と期待値を上げすぎない
- あくまで 「過去の知見として、妥当な範囲を出しています」 というトーンを守る
というバランス感覚です。
5. 技④:LLM に食わせる前提で「手順書だけちゃんと残す」戦略
今の時代ならではの裏技として、これもかなり効きます。
「影のプロト環境」を作るときは、
基本設計書そのものよりも、手順書・メモの残し方をちゃんとしておく。
なぜかというと、
これらを LLM に食わせると、
かなり精度の高い基本設計書ドラフトが一瞬で出てくる からです。
つまり:
- 影のプロト環境を作る
- その過程で
- インストール手順
- ミドルウェアの設定
- 詰まったポイントと解決策
などを、ざっくりでいいのでテキストで残す
- それを LLM に渡して
- 「これを元に基本設計書の構成案を出して」
- 「顧客向けの表現に整えて」
- 「試験項目を洗い出して」
- 「パラメータシートのたたきを作って」
と頼めば、2〜3 日かけて書くレベルの文書が、数時間で形になる
なので、
「まずプロト環境を作る」
+
「LLM に食わせる前提で手順書だけはちゃんと残す」
という組み合わせは、
- 実装リスクを下げる
- ドキュメント工数も削る
という意味で、かなり相性の良い戦略になってきています。
6. ウォーターフォールを表で守りつつ、裏でアジャイルを回す
ここまでの話を一言でまとめると、
「ウォーターフォールを“表”で守りながら、
裏ではアジャイル的に先回りしておく」
という発想です。
-
表向きは:
- 元請けが出してきた大きな工程表(ウォーターフォール)に従っているように見せる
- マイルストーンや成果物の名称も、基本設計/機能設計/結合テスト…を崩さない
-
裏側では:
- 基本設計フェーズのうちに プロト環境を作って動かす
- バージョンを釘打ちし、
- 実際に動かしながら「これで行ける構成」を先に固めてしまう
- そこで得た知見をもとに、
- 性能見積もり
- リソース見積もり
- リスクの洗い出し
をスッと出せるようにしておく
つまり、
表面上はウォーターフォールでも、
内側では小さなアジャイルサイクルをぐるぐる回して、
後続工程をどんどん楽にしていく ことができる。
もちろん、
「プライムが出してきた大線表の納期を遅らせていい」
という話ではありません。
むしろ逆で、
最初に影のプロト環境を作っておくことで、
大線表を遅らせずに済む確率がかなり上がる。
何せ、その構成で実際に動いている環境がすでにあるから。
という考え方に近いです。
7. さいごに:環境をプロジェクトごとに準備する時間はありません。
ここまで読んで、
「言ってることは分かるけど、
プロト環境を毎回スクラッチで作るの、さすがにしんどくない?」
と思った方もいるかもしれません。
そこはたしかにネックで、
- 案件ごとに
- OS
- ミドルウェア
- 認証まわり
- テスト用クライアント
- を毎回ゼロから用意するのは、
フリーランス / 小さなソフトハウスにはけっこう heavy です。
なので、ある程度案件が回ってきたら、
「案件ごとの箱庭環境」を簡単に量産できるテンプレートやツールを、
少しずつ自分の側に用意しておく
という方向も検討の余地があります。
たとえば:
- 手元のマシン 1 台に
- 仮想化環境
- 「案件ごとの箱庭」を自動で作るスクリプト
- を置いておき、
新しい案件が始まったら、
まずは“影のプロト環境”を 30 分くらいで立ち上げてから設計に入る
という動き方ができるようにしておくイメージです。
使うツールや技術スタックは何でも構いません。
大事なのは、
- 「毎回手作業で環境を組む」のではなく「案件ごとの箱庭を、ほぼテンプレートから起こす」
- リモートから VPN 経由で簡単に入れるようにしておくことで、パートナーがすぐに参加できる環境を作っておく
- となりの案件の VM が見えてしまわないようなセキュリティに十分配慮した分離開発環境を構築する
という発想に切り替えることです。
なお、ここで書いた「案件ごとの箱庭環境」を 1台の Proxmox ホストで自動構築してしまう仕組みについては、 別記事で図多めにゆるく解説しています: 👉Proxmox + Pritunl だけで “完全隔離の開発環境” を公開するフレームワークを作った話 もう少し深掘りしたい方は、こちらも合わせてどうぞ。
まとめ
フリーランスや小さなソフトハウスが 「元請けの工程表だけを信じて燃えない」 ためには:
- 外向け工程表とは別に、自分たちの「内部工程計画」を持つ
- 基本設計の初期に、プロト環境 をこっそり作ってしまう
- そのために、OS とミドルウェアのバージョンを早めに“釘打ち” しておく
- プロト環境で得た数字は
- 「自前ラボで測りました」ではなく
- 「他プロジェクトでの経験値です」 として出す
- 手順書をちゃんと残しておけば、
LLM に食わせて基本設計書を一気に仕上げることもできる - 表向きはウォーターフォールでも、
裏で小さなアジャイルを回して先回りしておく と、
いろんな工程が楽になる
どれも「正論のセキュリティ記事」というより、
現場で生き残るためのテクニック集 に近い話ですが、
こういう細かい工夫が積み上がると、
- プロジェクトの燃え具合
- ユーザーの満足度
- 自分たちの消耗度合い
がかなり変わってくるはずです。
「元請けの工程表がザルでも、なんとか燃えずに走り切りたい」
という方のヒントになればうれしいです。
これをパブリッククラウドで回してもいいですが、
採算度外視で使うのはかなり危険です。
オンプレや手元の Proxmox で、こういった「案件ごとの箱庭」を
もっと手早く・安全に量産したい場合は──
こんな環境を 1 時間で構築したいというあなたへ。
Proxmox 上で動作する MSL Setup という製品があります。
一度、こちらも見てみてください。 → https://www.zelogx.com/ja/