SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
誰でも出来る
ローカル開発環境作り
システム開発をしていく上での3つの環境
• 本番環境:システム(サービス)を実際に稼働させる環境
• テスト環境:稼働できるかテストを行う環境
• 開発環境:開発を行う環境
ローカル開発環境とは?
本番と同じ環境を手元のマシンに構築したもの
ローカル開発環境を作るメリット
• ネット上に公開する前に、開発途中でも手元でサイト
の表示や動作確認などのテストを行える。
• 個人のローカル環境に依存せず、チームで同じ環境を
構築できる。
しかし、ちょっと待った
本当にローカル環境に、
本番と同じ環境を構築していいのか?
あんまり余計なものを入れたくない。
ローカルはローカルだけの環境にしていたい。
もし構築に失敗して戻せなくなったら困る。
そもそも本番用のOSと違うやん。。
では、どうすればいいのか
仮想化する
仮想化とは
1台のコンピュータ上に、ソフトウェアの仮想的なコンピュータを作成すること。
仮想化されたコンピュータ(仮想マシン)上に、ホストOSとは別のOSを入れて動か
すことが出来る。
不要になったら簡単に削除することもでき、ホストOSの環境に影響を及ぼさない。
例えば、
ホストOSのMac OS X上に、
ゲストOSとしてLinuxやWindowsを動かすこと
が出来る。
ローカル開発環境を作る方法
手元のマシンで作成した仮想マシン上に本番と同じ環
境を構築する。
そこで開発やテストを行う。
作る上で必要なもの
• 仮想化ソフトウェア(VirtualBox)
• 開発環境作成ツール(Vagrant)
• ターミナル
仮想化ソフトウェア
(VirtualBox)
• 仮想マシンを作成するアプリケーション
• ホストOS上にソフトウェアで仮想的なPCを作成し
て、その中で別のゲストOSを実行する。
開発環境作成ツール
(Vagrant)
• 仮想化ソフトを使って、簡単に環境構築、管理などをCUI(コマンド)
で行うツール
• boxと呼ばれるテンプレートを作れば、同一構成の複数の仮想マシ
ンを簡単に作成できる。
• Vagrant自体には仮想化の機能は搭載されておらず、別途仮想化ソ
フトウェアが必要となる。
• デフォルトの仮想化ソフト(プロバイダ)は、VirtualBox※が指定され
ている。
※Vagrantは元々、VirtualBoxのフロントエンドとして作られた。
ターミナル
コマンドを使って、コンピュータやアプリケーション
の操作や処理を行うもの
全体的な仮想化のイメージ
ローカル開発環境を作る手順
1. VirtualBox、Vagrantのインストール
2. 仮想マシンのテンプレート(box)の選定、ダウンロード
3. Vagrantの初期化、設定ファイル(Vagrantfile)の作成
4. 仮想マシンを起動
5. 仮想マシンにログイン
6. webページの表示
7. ホスト側で作業ができるようにする
8. 本番と同様の環境を構築
9. 構築した環境をbox化 (任意)
1. VirtualBox、Vagrantのインストール
各公式サイトから無料でダウンロードできる。
VirtualBox
https://www.virtualbox.org/wiki/Downloads
Vagrant
https://www.vagrantup.com/downloads.html
2. OS(boxファイル)の選定、ダウンロード
「box」とは仮想マシンのテンプレート。
boxの中には事前にインストールされたOSや、VirtualBoxの設定ファイルな
どが含まれている。
いろんなboxがインターネット上で無料で配布されているので、
本番環境に合わせたboxを選び、ダウンロードする。
公式配布サイト http://www.vagrantbox.es/
$ vagrant box add <box名> <URLまたはパス>
3. Vagrantの初期化、設定ファイル(Vagrantfile)の作成
作業ディレクトリを作成し、移動する。
使いたいboxを指定し、vagrantを初期化する。
$ vagrant init <box名>
初期化すると「Vagrantfile」という設定ファイルが作成される。
Vagrantfileを編集し、以下の部分のコメントを外す。
#config.vm.network "private_network", ip: 192.168.33.10
↓
config.vm.network "private_network", ip: 192.168.33.10
4. 仮想マシンを起動
Vagratfileがあるディレクトリで、仮想マシンを起動する。
$ vagrant up
コマンドを実行すると、VirtualBoxが指定したboxファイルを元に、仮想
マシンの作成と起動が実行される。
起動が完了したら、VirtualBox上で仮想マシンの状態を確認できる。
5. 仮想マシンにログイン
仮想マシンが起動している状態で、リモートログインをする。
$ vagrant ssh
[vagrant@localhost ]$
と表示されたらログイン成功
6. webページの表示
ブラウザでページを表示させるためは、Apacheなどのサーバーソフトをインストールする。
$ sudo yum install httpd
サーバーを起動し、ブラウザで192.168.33.10に接続すると
ページ(デフォルトではApacheのテストページ)が表示される。
$ sudo service httpd start
http://192.168.33.10/
仮想マシンのドキュメントルート(ブラウザで表示されるファイルが置かれたディレクトリ)は、
デフォルトで/var/www/htmlになっているので、そこでindex.htmlなどを作成すると、ブラウザで表示される。
7. ホスト側で作業ができるようにする
ホスト側のVagrantfileの置いてあるディレクトリ(作業ディレクトリ)と、
ゲスト側の/vagarantが元々共有ディレクトリになっている。
共有ディレクトリにファイルを置くと、ホストでもゲストでも参照できる。
そして、ドキュメントルートの/var/www/htmlに、上記/vagrantのシンボリック
リンク(すでにあるディレクトリに別名をつけて、 その名前で参照できるようにする)
を作成する。
$ sudo ln -fs /vagrant /var/www/html
こうすることで、/var/www/htmlは、/vagrantと同じものとして扱われるので、
結果的に、今後はホスト側の作業ディレクトリ上で、作業ができるようになる。
8. 本番と同様の環境を構築
ApacheやPHP、Ruby、MySQL、Gitなど
各種必要なソフトやツールをインストールする。
例)
$ sudo yum install httpd
$ sudo yum install mysql
$ sudo yum install git
9. 構築した環境をbox化 (任意)
現在の仮想マシンの状態をそのままboxにする。
$ vagrant package
完了したら、「package.box」というファイルが作成される。それに名前を付けてboxに追加
する。
$ vagrant box add <box名> package.box
boxの一覧を確認する。(boxの保存場所は、 /.vagrant.d/boxes/)
$ vagrant box list
作ったboxをチームで共有すると、全員が同じ環境で開発やテストを行うことが出来るようになる。
仮想マシンの管理の仕方
仮想マシンを使わない時は、停止(シャットダウン)しておく。
$ vagrant halt
保留(一時停止)することも出来る。(シャットダウンよりも起動が早い)
$ vagrant suspend
保留から再開
$ vagrant resume
仮想マシンが不要になったら削除できる。(Vagrantfileは残る)
$ vagrant destroy
Vagrantの基本コマンド一覧
vagrant init:Vagrantを初期化し、Vagrantfileを作成する
vagrant ssh:SSHでゲストOSにログインする
vagrant up:仮想マシンを起動
vagrant status:状態確認
vagrant suspend:保留(保存して止める)
vagrant resume:再開する
vagrant halt:ゲストOSをシャットダウンして仮想マシンを停止状態にする
vagrant reload:仮想マシンの再起動。haltしてupするのと同じ
vagrant destroy:削除する
ローカル開発環境は、
仮想マシンを使うと、
容量の許す限り何個でも作れるので、
さまざまなソフトやツールを試すことが出来ます。
それを繰り返し、
より良い環境を構築していきましょう。

Contenu connexe

Tendances

Babelで先取り次世代javascript
Babelで先取り次世代javascriptBabelで先取り次世代javascript
Babelで先取り次世代javascriptTsuyoshi Maeda
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門Hori Tasuku
 
Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?Yoshinori Nakanishi
 
Reactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみたReactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみたTsuyoshi Maeda
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdateYuki Iwanari
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
DevOps for Small Starter
DevOps for Small StarterDevOps for Small Starter
DevOps for Small Starter大要 伊藤
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Takashi Kanai
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話Kazuto Kusama
 
Vagrant入門以前
Vagrant入門以前Vagrant入門以前
Vagrant入門以前katanyan
 
Jenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携するJenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携するregret raym
 
(自分流)Gitの運用ルール
(自分流)Gitの運用ルール(自分流)Gitの運用ルール
(自分流)Gitの運用ルールErina Takei
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Masayuki Morita
 

Tendances (20)

Babelで先取り次世代javascript
Babelで先取り次世代javascriptBabelで先取り次世代javascript
Babelで先取り次世代javascript
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?
 
Reactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみたReactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみた
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
 
邪道Jenkins
邪道Jenkins邪道Jenkins
邪道Jenkins
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
DevOps for Small Starter
DevOps for Small StarterDevOps for Small Starter
DevOps for Small Starter
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話
 
Vagrant入門以前
Vagrant入門以前Vagrant入門以前
Vagrant入門以前
 
Jenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携するJenkinsの導入 vol.02 Bitbucketと連携する
Jenkinsの導入 vol.02 Bitbucketと連携する
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
(自分流)Gitの運用ルール
(自分流)Gitの運用ルール(自分流)Gitの運用ルール
(自分流)Gitの運用ルール
 
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
 

Similaire à 誰でも出来るローカル開発環境の作り方

2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~normalian
 
MetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくまMetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくまc-mitsuba
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何Kana SUZUKI
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
Microsoft によるオープンなweb デバッグ環境 comm tech festival-
Microsoft によるオープンなweb デバッグ環境 comm tech festival-Microsoft によるオープンなweb デバッグ環境 comm tech festival-
Microsoft によるオープンなweb デバッグ環境 comm tech festival-Yoshihisa Ozaki
 
オープンキャンパススライド2017
オープンキャンパススライド2017オープンキャンパススライド2017
オープンキャンパススライド2017robo_lab
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめxyzplus_net
 
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!Satoru Nasu
 
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsShuhei Eda
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
実践・ブラウザテスト自動化
実践・ブラウザテスト自動化実践・ブラウザテスト自動化
実践・ブラウザテスト自動化takahiro sakuma
 
無料環境でWindows Mobileアプリ開発
無料環境でWindows Mobileアプリ開発無料環境でWindows Mobileアプリ開発
無料環境でWindows Mobileアプリ開発7shi
 
これからのOpenShiftの話をしよう
これからのOpenShiftの話をしようこれからのOpenShiftの話をしよう
これからのOpenShiftの話をしようKazuto Kusama
 
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...Yusuke Furuta
 

Similaire à 誰でも出来るローカル開発環境の作り方 (20)

2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~
 
Dev ops
Dev opsDev ops
Dev ops
 
MetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくまMetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくま
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
Windows azureって何
Windows azureって何Windows azureって何
Windows azureって何
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
Microsoft によるオープンなweb デバッグ環境 comm tech festival-
Microsoft によるオープンなweb デバッグ環境 comm tech festival-Microsoft によるオープンなweb デバッグ環境 comm tech festival-
Microsoft によるオープンなweb デバッグ環境 comm tech festival-
 
オープンキャンパススライド2017
オープンキャンパススライド2017オープンキャンパススライド2017
オープンキャンパススライド2017
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
 
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
Windows Server Essentials用PowerShell コマンドレットを使ってみよう!
 
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOpsサイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
実践・ブラウザテスト自動化
実践・ブラウザテスト自動化実践・ブラウザテスト自動化
実践・ブラウザテスト自動化
 
無料環境でWindows Mobileアプリ開発
無料環境でWindows Mobileアプリ開発無料環境でWindows Mobileアプリ開発
無料環境でWindows Mobileアプリ開発
 
これからのOpenShiftの話をしよう
これからのOpenShiftの話をしようこれからのOpenShiftの話をしよう
これからのOpenShiftの話をしよう
 
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
 

誰でも出来るローカル開発環境の作り方