演習Index

意欲はあるけど、どこから勉強したらよいのかわからない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の気分次第で自由に更新してしまいます。この前と変わってる!とクレーム入れないように。