僕は発展途上技術者

Vagrant 入門 - Vagrant 1.1.x 以降でイメージのスナップショット機能を使う

Vagrant には sahara という、ある時点のイメージの状態を保存しておいて、いつでもその時点に戻ることができる便利なスナップショット機能を追加するプラグインがあるのですが、1.1.x 以降利用できなくなっていました。

困ったなー、と思っていたのですが、解決方法はなんのことはない。1.1.x で VMWare などの他の仮想化ツールに対応はしましたが、以前と変わらず VirtualBox を使っている場合は、VirtualBox マネージャー(VirtualBox の GUI クライアント)を起動して、そこからスナップショット機能を使えばいいのです。

Vagrant の機能自体ではないので、「Vagrant 1.1.x 以降で」というよりは「Vagrant 1.1.x 以降を使っていてイメージのスナップショット機能を使う」ということになりますが。。



ちなみに、プラグインでなく、Vagrant 自体にスナップショット機能を追加して欲しいという要望は GitHub の issues に挙がっているのですが、Vagrant は以前から VirtualBox 以外の仮想化ツールにも対応することは予定されていたようで、VirtualBox 以外でスナップショット機能が使えるとは限らないため、本体がその機能を持つことは見送られているようです。

» add 'vagrant snapshot' option · Issue #143 · mitchellh/vagrant

Vagrant の作者は Mitchell Hashimoto さん。日系人でしょうか、苗字が日本名というだけでなんだか親しみが湧きます。

システムやアプリは内製が一番、では職業プログラマは不要なのか?




システムは内製が一番なんじゃないか、と何となく感じたのは、まだ社会人なりたての頃。

「弁当の買い出し」でPCの面白さに目覚めた にあるように僕がプログラムと呼べるようなものを書き始めたのは社会人になってからなのだが、業務を改善するためのちょっとしたシステムをノーツや Perl の CGI などを使って作るのが楽しかった。

ベンダーに投げてそこそこの開発費で作ったであろう社内システムよりも、僕が作った「ちょこっとシステム」の方が、自分含め現場で使う人たちの要望をすぐに反映させて修正できずっと使いやすかった。

使う人自身がつくってしまうのが結局一番いいんじゃないかとおぼろげながら感じ、そしてちょっと勉強すればそれが可能なソフトウェアこそ、その理想形に近い分野なんじゃないかと思ったのが20年近く前、まだ Netscape が有料だった頃だ。

そして現在、やる気さえあればプログラミングを学ぶことは当時に比べて格段に簡単になっていると思うし、例えば Ruby on Rails のようなフレームワークを使えば、ユーザー登録のような以前だったらそこそこ面倒な機能も、あっという間に実装できる。サーバーだって、クラウドのサービスを使ったりすれば、月数百円〜数千円でとりあえず始められる。Heroku とか使えば無料だ。

iPhone アプリのようなスマートフォン向けアプリは Web アプリほど簡単とは言わないまでも、頑張って書籍とかで Objective C を勉強したり、あるいは Titanium などを使えば、そこそこのものを作り上げ App Store で公開するところまではいけると思う。

そういう時代では、旅行好きな人が旅行好きが欲しいと思うアプリを作ればいいし、自転車好きが自転車好きのためのアプリを作ればいい。歴史や城が好きでたまらない友人に Rails をやってみたらと勧めたら城フォトというウェブサービスを作ってしまった。

では職業プログラマは不要になるのか?というとそうではないと思う。

僕はどちらかというと、作りたいものありきでプログラマーになった、アプリ側に近い人間なのでよく分かるのだが、〇〇好きが自分のためにシステムやアプリを作ると、最初の動くところまでは何とか完成し、数人〜数百人が使うレベルまではいくのだが、その後色々な壁にぶち当たる。たとえば、サーバーのことがよくわかっていないのでパフォーマンスが思うように出ないとか、コードが汚かったりテストコードを書いていないのでメンテナンスが難しくなってきたり、などだ。

職業プログラマ、いわゆるプロと呼ばれる人たちは、そういうところで的確にアドバイスしたり、ヘルプに入ったりする役割が求められているんじゃないかと思う。

例えば、サーバーの構成の見直しをアドバイスしたりパフォーマンスチューニングを提供するインフラエンジニア、定期的にコードレビューをしたりペアプロして、効率的なコードの書き方をアドバイスするプログラマー、使いやすい UI/UX をアドバイスするデザイナー、などなど。

大学のとき僕は機械科で、旋盤などの工作機械が並ぶ工作室というものがあったのだが、そこには機械の使い方を教えてくれたりいろいろアドバイスをしてくださる技官の方がいた。技官の方はコツなどを教えてくれるけれど、代わりに作ってくれるわけではなく、あくまでも旋盤を実際にいじってものを作るのは自分自身だ。魚を代わりに獲ってくれるのではなく、魚の釣り方を教えてくれたわけだ。

ソフトウェアも、つくりたいものをプロが全部代わりに作ってあげる、というのではなく、高度な専門知識や経験を活かしたアドバイスをしたり、さわりの部分や難しい部分は手伝って作るけれども、あとはそれを欲しいと思っている人自身にまかせる、という形がもっとあったほうがいい。そうすれば、もっと使えるシステムやアプリが増えるんじゃないかと思っている。

Vagrant 入門 - Mac 上に仮想マシンを簡単に用意する

» Vagrant 入門 - Windows 上に Linux の仮想マシンを簡単に用意する - 僕は発展途上技術者

に続いて、今度はメインマシンの Mac に Vagrant をインストールしてみました。

こちらは Windows 上と比べて、さらに格段に簡単でした。

以下手順を紹介します。

Virtual Box のインストール



Vagrant は仮想マシンをコマンドで簡単に用意できるツールですが、実際に仮想マシンを作るのは Virtual Box というソフトウェアです。

Virtual Box の Downloads ページより Mac 版をダウンロードしてインストールします。



インストールはすべてデフォルト設定でOKです。

Vagrant のインストール



次に Vagrant をインストールします。

Vagrant Downloads のページより最新(2013/3/15時点)の 1.1.0 を選び、Mac 版である Vagrant.dmg をダウンロードして、インストールします。



これも特に気にすることなく、デフォルト設定でインストールします。

Vagrant は 1.0.x までは gem でインストールできたのですが、1.1.0 よりこの .dmg ファイルでのインストールとなっています。1.0.x 以前の Vagrant を gem で入れている場合は、新しいバージョンをインストールする前に削除しておくことが推奨されています。

仮想マシンを起動



ターミナルより


vagrant -v


と入力してVagrant がちゃんとインストールされているかを確認してみましょう。バージョン番号が表示されれば OK です。

起動する仮想マシンのイメージをダウンロードして Vagrant に登録します。仮想マシンのイメージは .box という拡張子がついたファイルで、例えば http://www.vagrantbox.es/ には、いろいろな種類の OS のイメージファイルが用意されています。

このうち、今回は Ubuntu lucid 32 を起動してみます。


vagrant box add lucid32 http://files.vagrantup.com/lucid32.box


と入力します。http://files.vagrantup.com/lucid32.box という .box ファイルを lucid32 という名前で登録する、という意味です。

ファイルは数百メガバイトのサイズなので、ダウンロードに少し時間がかかります。

次に、


vagrant init lucid32


を実行して lucid32 を初期化します。初期化すると Vagrantfile というファイルが作成され、各種設定が書き込まれています。この Vagrantfile があるフォルダ上で実行しないと以降のコマンドは効きません。

いよいよ仮想マシンの起動です。


vagrant up


仮想マシンが起動したら、


vagrant ssh


でログインします。

どうでしょう?あっという間に仮想マシンを起動してログインするところまでできたのではないでしょうか。

Vagrant の他のコマンドについては

» Vagrantで簡単仮想マシン構築 \| Ryuzee.com

が参考になります。

起動した仮想マシンを止めるコマンドは、


vagrant halt


です。

Vagrant 入門 - Windows 上に Linux の仮想マシンを簡単に用意する

naoya さんによれば、「便利すぎて鼻血が出ました」という Vagrant を触ってみて、僕も Git を最初に触った以来の衝撃を受けました。

» Vagrant - naoyaのはてなダイアリー

開発者、それも gem で入れることから、Ruby を使う開発者の一部で話題になっているようなのですが、Vagrant はこれからプログラミングしようと思っている初心者や、開発環境を用意する必要があるデザイナーにこそ、強力なツールなんじゃないかと思っています。

Vagrant が便利に思えるひとつのケースとして、Windows の上に Linux の仮想マシンを用意する、というのが挙げられます。Web 業界にいると勘違いしてしまいそうになるのですが、世の中のほとんどの人は開発者も含めて Windows を使っているでしょう。そういう人が PHP や Ruby などを始めてみたいと思った時に、難関となるのが環境構築です。Mac や Linux 上に構築するのに比べて、Windows 上でそういったサーバー系の言語を使おうと思った時の環境構築は面倒です。

Vagrant を使えば、簡単に仮想マシンを Windows の上に用意できます。仮想マシンというのは文字通り、仮想なマシン、もう一台マシンが手に入るようなものです。

仮想マシンを作ることができるソフトウェアには、他にも VMWare など以前からありましたが、Vagrant が使う Virtual Box は無料である、という点が大きい。そして仮想マシンの大きな特徴として、マシン1台全体が一つのファイルなので、そのファイルをやりとりすることで、環境まるごと一つを他の人に渡したりできるという点が挙げられます。

今回 Linux の仮想マシンを用意するのですが、その仮想マシンに PHP や Ruby を用意するほうが Windows にそれらを用意するよりも楽ですし、もっと言えば、PHP や Ruby が最初から使える状態になったマシンを用意することもできるのです。

前置きが長くなってしまいました。Windows 上に Vagrant をインストールして Linux の仮想マシンを一つ用意するところまでの手順を紹介します。

普段は Mac を使っているのですが、家にあるおんぼろ PC の Windows XP にインストールしてみました。

Virtual Box のインストール



Vagrant は仮想マシンをコマンドで簡単に用意できるツールですが、実際に仮想マシンを作るのは Virtual Box というソフトウェアです。

Virtual Box の Downloads ページより Windows 版をダウンロードしてインストールします。



インストールの際はデフォルトの設定で、「次へ」を押し続けました。

Vagrant のインストール



次に Vagrant をインストールします。

Vagrant Downloads のページより最新(2013/3/15時点)の 1.1.0 を選び、Windows 版である Vagrant.msi をダウンロードして、インストールします。



これも特に気にすることなく、デフォルト設定でインストールします。

GitHub for Windows のインストール



あとで Vagrant で仮想マシンを用意したあと、そのマシンにログインするために ssh というツールを使うことになるのですが、Windows にはこの ssh が始めから用意されていません。Windows 上の ssh はいくつかあるのですが、どうせ後々使うことになって便利だと思うので GitHub for Windows をインストールします。GitHub for Windows は GitHub を Windows から使えるようにするアプリケーションですが、ssh も含まれているのです。

GitHub for Windows のページよりダウンロード、インストールします。



環境変数の設定



つまづくとしたらたぶんここのステップだと思います。と言っても注意深くタイプすれば大丈夫です。

[スタート] > [コントロールパネル] > [システム] > [詳細設定] > [環境変数]

を選び、下側のシステム環境変数の中から変数名が Path となっているところをダブルクリック、値の最後が c:¥vagrant¥vagrant¥bin となっていることを確認した上で、そのあとに


;$VBOX_INSTALL_PATH


を追加します。



このキャプチャの通りになっていたら OK です。

仮想マシンを起動



いよいよ最後のステップです。

最後は次々 Vagrant のコマンドを入力していって、仮想マシンを起動します。

コマンドの入力は Windows のコマンドプロンプトを使うのではなく、さきほど GitHub for Windows をインストールしたときに一緒に用意された Git Shell を使います。



デスクトップ上にある Git Shell をダブルクリックして起動します。

Vagrant がちゃんとインストールされているかを確認してみましょう。


vagrant -v


と入力してバージョン番号が表示されていれば OK です。




次に起動する仮想マシンのイメージをダウンロードして Vagrant に登録します。仮想マシンのイメージは .box という拡張子がついたファイルで、例えば http://www.vagrantbox.es/ には、いろいろな種類の OS のイメージファイルが用意されています。

このうち、今回は Ubuntu lucid 32 を起動してみます。


vagrant box add lucid32 http://files.vagrantup.com/lucid32.box


と入力します。http://files.vagrantup.com/lucid32.box という .box ファイルを lucid32 という名前で登録する、という意味です。

ファイルは数百メガバイトのサイズなので、ダウンロードに少し時間がかかります。

次に、


vagrant init lucid32


を実行して lucid32 を初期化します。初期化すると Vagrantfile というファイルが作成され、各種設定が書き込まれています。この Vagrantfile があるフォルダ上で実行しないと以降のコマンドは効きません。

いよいよ仮想マシンの起動です。


vagrant up


を実行します。このとき、以下のような警告がでたら、「ブロックを解除する」を選びます。



仮想マシンが起動したら、


vagrant ssh


でログインします。

以下、無事ログインできたところです。

Welcome to Ubuntu! と表示されています。



どうでしょうか?

.box ファイルをダウンロードするところは少し時間がかかるかもしれませんが、全体では比較的少ない手順なので、楽に Linux 環境まるごと一つ用意できるのではないでしょうか。

Vagrant の他のコマンドについては

» Vagrantで簡単仮想マシン構築 \| Ryuzee.com

が参考になります。

起動した仮想マシンを止めるコマンドは、


vagrant halt


です。

Vagrant は他にもいろいろな使い道がありそうです。これから機会があれば順次紹介していきたいと思います。

プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Raspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Twitter @jishiha

最近のエントリー

アーカイブ