環境構築(仮想化ソフトウェア、サーバーOS)
ソフトウェアの入手
以下のものを入手してください。
Oracle VM VirtualBoxのインストール
デフォルトインストールしてください。VirtualBox Networkingの機能は必要です(デフォルトでインストールされるはず)。
仮想マシンのセットアップ(server1)
- VirtualBoxマネージャーで[新規]をクリックします。
- 仮想マシンの名前、バージョン、メモリサイズを入力します。
-
ファイルサイズを指定しますが、20GBだと不安なので可変サイズで100GBくらいにしておけば安心です。
-
仮想マシンが作成されました。引き続き、[設定]をクリックします。
- クリップボードは双方向にしておくと便利です。
- 仮想マシンも快適に動作してほしいので、プロセッサー数は1つではなく2つくらいにしておきましょう。ただし割り当てが多すぎるとシステム全体のパフォーマンスが悪くなるのでやめましょう。
- ネットワークの設定は後で変更しますが、インストール時はNATを有効にしましょう。
- ホストOSと仮想マシンの間でデータをやりとりするために、共有フォルダを設定しましょう。
- OSのインストールイメージ(ISOファイル)を仮想マシンのストレージに光学ドライブとして追加しましょう。
- [OK]をクリックして設定を完了します。
-
仮想マシンを起動します。
- 設定が自分の環境にあっているかを確認して[次へ]をクリックします。
-
Standard Evaluationのデスクトップエクスペリエンスを選択して[次へ]をクリックします。
- [次へ]をクリックします。
-
カスタムを選択します。
-
[次へ]をクリックします。
-
インストールが開始します。
-
Administratorのパスワードを設定します。
-
ログオンします。
-
[いいえ]を選択します。
-
VirtualBox Guest AddinsのCDイメージを仮想マシンに挿入します。これを入れるとホストOSとゲストOSの間でいろいろ便利な機能が利用できるようになります。
-
VBoxWindowsAdditionsをダブルクリックしてインストールします。
-
インストール後に再起動します。
-
ホストキー+Delでログオン画面を表示します。うまくいかない場合はメニューから入力>キーボード>送信 Ctrl-Alt-Delを選択します。
-
[システム]を開いて、コンピューター名を変更します。
-
コンピューター名を設定後、再起動します。
- Windowsをシャットダウンし、仮想マシンのストレージの設定でOSのインストールイメージの割当を除去します。
Chrome, Firefoxのインストール
OSインストール直後はIEしか利用できませんが、演習では複数ブラウザを利用するので、ChromeとFirefoxをインストールしてください。IEのセキュリティ構成でダウンロードがブロックされる場合は、ブロックされたサイトを信頼済サイトに追加してください。
仮想マシンのセットアップ(server2)
server1のセットアップと同じ手順でserver2をセットアップしてください。
※server1をserver2に読み替えること。
※知識がある人はserver1の仮想マシンのクローンを作成し、コンピューター名を変更する方法でもOK。
演習用ネットワーク環境A
演習用ネットワーク環境A
以下のネットワークを仮想環境上に構築します。
network1
仮想環境内部で実現するLANです。VirtualBoxのネットワークアダプタの内部ネットワークを利用して実現します。このネットワークに接続したホスト間で通信することを目的としています。この内部ネットワークはインターネットやホストOSと直接接続していません。
server1
IISによってWebサーバーの役割を実現します。
server2
Webサーバー以外のサーバーの役割を実現します。DHCP、DNS、AD CSなどのサービスを提供します。
client1
クライアントPCの役割を実現します。
演習環境について
演習で使用するハードウェア・ソフトウェアは以下のものです。いろいろ書いていますが、高めのスペックのPCが1台と、インターネット環境があればOKです。
ハードウェア・OS
- Windowsパソコン(メモリ8GB以上、仮想化テクノロジー利用可能が望ましい、SSDが望ましい、Oracle VM VirtualBoxが動作できること)※MacでBoot Campを使用するのは本質的でない部分でいろいろ苦労するのでお勧めしません。
- Oracle VM VirtualBox(WIndows版)
- Windows Server 2016(評価版で可)
- Windows 10(評価版で可)
演習中に追加インストールするソフトウェア
- Google Chrome
- Firefox
- Wireshark(パケットアナライザ)
- Fiddler(Web Debugger)
- サクラエディタ
- Visual Studio Community
演習中に構成するWindows Serverの機能
- DHCP
- DNS
- IIS
- AD CS(Active Directory証明書サービス)
意欲はあるけど、どこから勉強したらよいのかわからないITエンジニアの卵たちへ
はじめに
waveです。はてなダイアリーでは過去に技術的なことを中心に日記を書いてました。
当時はSilverlightという技術に傾倒して猛烈に記事を書き続け、Microsoft技術で有名なブロガーさんたちともコラボさせてもらい、充実した日々を送っていました。Silvelightの終了とともに私のブログ熱も終了し、事実上引退していました。
そんなwaveが再び記事を書きたい、そういう気にさせられる出来事がありました。
Silverlightからの引退後はHTMLでのアプリケーション開発をしており、Webのテストの自動化に興味を持っていろいろ試行錯誤してました。Selenium(Web Driver)が実用的になりはじめていましたが、所詮はブラウザを操作するエンジンに過ぎず、まだまだ実際の開発現場でテストに使うには非効率でした。そこでWeb Driverをラップした独自のライブラリを開発し、考えられるだけの効率化を施し、自社製品の結合テストに適用する手前までこぎ着けました。しかし、現状の開発チームの人的リソースでさらにテストの自動化をやるのはなかなか難しいという問題がありました。
そこで、入社してからまだ数年経っていない若手に白羽の矢が立ちました。早速、お手製のライブラリやら、テストの作成の仕方をまとめた資料を読んでもらって、ミーティングを行いました。
どう?できそう?
そう言われた若手たちはポカーンとしていました。彼らはプログラミング経験がほぼない状態で入社し、研修を受けたもののの、開発経験はほぼゼロだったのです。ウルトラマニアックなオレオレライブラリによる自動テストの話など、いきなり理解できるわけがありません。それ以前に、研修内容もC/C++/C#のデスクトップ開発の話に限定されており、Webアプリケーションがどのような仕組みなのか、理解がなかったのです。
これはまずいと思いました。彼らには基礎がない。でも自分はどうやって基礎を身に着けたんだっけ?そういえば自分が社会人になったときは大手SIerで至れり尽くせりの研修を受け、コンピューターやネットワークの基礎を学ぶことができてました。でも、在籍中の会社の規模では大手のように手厚い研修は望めません。基礎もなくコード書きの仕事ばかりやっていると、いろいろな弊害が出てしまいます。その場その場で検索して答えを見つけることができたとしても、システムを設計するための応用力がつきません。
彼らにWebアプリケーションを理解してもらい、Webテストの自動化を遂行してもらうのに必要な前提スキルを身に着けてもらう、何かいい方法はないだろうか。少し悩んで、こう考えました。
- Webアプリケーションはクライアントサイド(HTML/CSS/JavaScript)とサーバーサイドで構成されているが、今回の目的ではクライアントサイド+サーバーとのインターフェースを中心に理解すればよい。
- インターフェースの中核はHTTPプロトコルである。そしてその基盤となる技術体系はTCP/IPである。
- Webアプリケーションはインターネット上の分散システムであり、関わりの深いDNSや認証局の知識は必要。
しかし、そういうことはどのようにして身につければよいでしょうか。座学だけじゃ頭でっかちになるだけで身につかないから、実機演習は必須です。でも、問題は演習環境です。一昔前なら安物のPCをたくさん手に入れてLANケーブルで繋いで物理的なネットワークを構築するところですが、いろいろと大変です。演習する人数分そろえたらエライことになります。
すばらしいことに、最近のPCはプロセッサのコア数、メモリ量とも充実し、ハードウェア仮想化技術の支援もあって仮想マシンを複数同時に動かしてもわりとストレスなく動作するようになりました。SSD搭載ならものの数秒でWindowsが起動するくらい猛烈に快適です。
あとはOSなどのソフトウェアですが、都合上Windowsを使います。開発者としてMSDNライセンスを割り当てられていれば問題なく入手できますし、ない場合は評価版を利用することで代用できます。
このような経緯から、仮想環境を利用し、OSのインストール、WebサーバーやDNSのセットアップ、Webアプリケーションの作成などを演習することにしました。
おそらく研修を行っているところでは、今では演習に仮想環境を利用していることでしょう。そして、このようなコンテンツも門外不出で存在していることでしょう。しかし、知識は共有されるべきです。waveは自分のブログでコンテンツを作成して公開してしまおうと思います。そのほうが面白いですよね。
これから作成して投稿するコンテンツは、インターネットの情報の波と向かい合い、意欲はあるけど、どこから勉強したらわからない。そのようなITエンジニアの卵たちへ捧げます。
なお、コンテンツは新たにブログ向けに書き下ろします。
このシリーズの使い方
- 実機演習を前提としています。さらっと読むだけでも無意味ではないですが、自分で手を動かしていろいろ考えてアウトプットすることに意義があります。一度アウトプットを経験すれば2回目以降はさらっとアウトプットできます。そんなもんです。
- ソフトは無償利用可能なものを使用しますので、いまどきのスペックのPC(メモリは多めに必要)が1台あれば自宅で演習できます。会社でお給料をもらっている時間だけでなく、自分が自由にできる時間で好きなようにやってください。
- 学習する上で、すでに世の中に存在する優れた記事を活用します。wave自身も勉強しながら記事を書きます。理解すべきキーワードやポイントを示した上でそこへのリンクを貼ります。もちろん興味がわけばその記事をまるっと読んだり、わからないキーワードをどんどん検索したりしてて、理解を深めてください。
想定するターゲット
いちおう入社して1,2年くらい経過して多少なりとも現場経験がある若手を想定しているので、OSインストールしたり、コマンドプロンプトでping打って疎通確認したりすることはできることを前提としています。作業したことはあるけど、原理はようわからん、という感じでしょうか。割とベテランなwaveですが、自分が勉強しながら面白いと思ったことを整理して書くので、たぶんベテランでも面白いと思います。
その他もろもろのポリシー
- 気に入っていただけたら、記事へのリンクは自由に貼ってください。
- 記事に誤りを見つけたら、クレーム入れてください。すぐに返信できないかもしれませんが、できる範囲で改善を試みます。コメントで結構です。コメントだとやりにくい場合はwave1008@gmail.comへどうぞ。
- ブログなので日付つきの記事になりますが、内容は随時アップデートします。変更履歴は原則として重要な内容のみ(誤りの訂正など)を明記しますが、それ以外はwaveの気分次第で自由に更新してしまいます。この前と変わってる!とクレーム入れないように。