今回はVagrantのメリットまでですが・・
この連載のゴール
連載の最後まで読んでいただくと Dockerとは何か、どんなメリットがあるのか
より理想的な開発環境とはどんなものか、テスト環境や本番環境への影響は?
といったことがわかるようになります。おそらく。
前提
サーバーを自分でセットアップしたことのない方、ようこそ!
そして黒い画面1に不慣れな方、ようこそ!
以下、インフラ?そんなの仕事じゃないよ?
な方に向けた記事です。
正確な説明や絶妙な比喩よりも、わかりやすさを優先します。
ケース: 開発環境セットアップ
突然ですが、
「会社のホームページ作ってよ 」と頼まれたらどうしますか?
もちろん HTMLを書けばいいんですが、同時にブラウザで確認もしたい。
Windowsなら XAMPP、Macなら MAMPをインストールするかもしれません。
ですが
「新製品のホームページは会員ページもほしいから Node.jsで!
あ、ついでに前任者が Rubyで作ったこのサイトも引き継いで !!
でも速いらしいし、Go言語で作り直したサイトも見てみたいなあ 」
となってくると・・つらい・・。
それぞれが依存するプログラミング言語やライブラリが氾濫、
唯一の設定ファイル
に書き込まれる複数プロジェクトの設定値・・
そしてプロジェクトごとに使いたい Javaや MySQLのバージョンが違う・・・
仮想化
そんな折、開発環境を仮想化する
という魔法が生み出されました。
プロジェクトごとに、お互い隔離された開発環境
を作ればいいじゃん!という。
以前から
Macの中で Windowsを起動したり、Windows上に Android端末を再現したり
時代を遡れば Windows上でスーパーファミコンを(ry
という天才たちがいましたが、その思想を受け継いだ2のが仮想化・・
仮想化とは、英語ならバーチャライゼーション、バーチャルにすること。
つまり実態を隠して見かけを変えること
ですが、上の例でいえば
物理的には Macだけれど、使ってみると Macでも Windowsでもある状態のこと。
この仮想化を開発環境にも適用してみよう
というのが一般的になった
のが数年前です。
Docker前夜: Vagrant + VirtualBox
火付け役は Vagrant
とVirtualBox
というソフトウェアたちでした。
これらについては
Qiitaにたくさんの導入記事があるので
仮想化未経験で興味がある方はぜひ、チャレンジしてみてください。
実際、Dockerじゃなくても、開発環境を仮想化すれば大きなメリットがあります。
- 各プロジェクトが使う言語、バージョン、ライブラリが明確になる
- それぞれのプロジェクトが隔離され、影響範囲が限定的になる
- [HTTPサーバ]のように同じ[ポート]を使うプロジェクトでも複数同時に起動できる
- ホスト3に複数バージョン入れにくいミドルウェア4でも複数バージョン同時起動ができる
- 「俺の環境では動く」がかなり軽減される5
今回のまとめ
Webサイトやアプリを作る開発者としても
仮想化技術やその周辺ツールをうまく使えば
より便利で柔軟な開発環境を手にすることができます。
ぜひ今後のためにも
Vagrantと VirtualBoxはインストールしておきましょう!