114
Osaka ComCamp 2016 powered by MVPs 10年前 「Microsoftの社員 だと思って働け!」 と教育されて 気がさして出てった人 から見た「外の世界」の話 Ver 0.2

10年前「Microsoftの社員だと思って働け!」と教育されて嫌気がさして出てった人から見た「外の世界」の話 #JCCMVP

Embed Size (px)

Citation preview

Osaka ComCamp 2016 powered by MVPs

10年前「Microsoftの社員だと思って働け!」

と教育されて嫌気がさして出てった人

から見た「外の世界」の話Ver 0.2

早速ですが…訂正を…

Osaka ComCamp 2016 powered by MVPs

1015年前「Microsoftの社員だと思って働け!」

と教育されて嫌気がさして出てった人

から見た「外の世界」の話

Osaka ComCamp 2016 powered by MVPs

1015年前「Microsoftの社員だと思って働け!」

と教育されて嫌気がさして出てった人

から見た「外の世界」の話

すいません願望からか

サバ読んでました!(意外と年取ってたw)

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

Webアプリケーション総明記

OS仮想化の潮流

テスト自動化・CI/CDの台頭

クラウドの猛威

MS変わって来たんちゃうん?ええんちゃうん?期 OSコンテナ技術総明記

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く

俺 ESXi気に入り、テスト環境一式作る

俺 自動テストは触っていた、CIサーバを探す

俺 Jenkinsに惚れ込みCI現場で作る

俺 Docker内だけで「受入テストパイプライン作る俺 MSのプロダクト&Jenkinsの自動化する

本日は

「在る老害の仕事歴」

について、

当人の感想文を

発表するものです

(「プログラマと環境」という視点から)

どういうことよ?

ちょい待ち!「得るモン」

何よ?

知らん!自分で「何か」

持ってけ!

あ、でも…

昨日のレビュー指摘は全部それっ

言いたいこと

• OSSオレは好きだし、追っかけてみて

–食わず嫌いしてるなら一度

• 昔MSキライになった人、今一度見よう

–食わず嫌いしてるなら一度

• Devの人ら、いっしょにDevOpsしよ!

–もっとグイグイはみ出そうぜ

Part.0

お前、

だれやねん

自己紹介

• 通称:みうみう,「なんで来たん?」氏

• Twitter:@kazuhito_m

• Github:kazuhito-m

• 老害度:38歳、独身、意識低い系

• 職業:プログラマ(SIer、ビジネスアプリ属),自動化大好きおじさん

– フリーランス,屋号「みうらさんとこ」

• 好きなもの:自動化,「継続的なんとか」

– CI/CDとか大好物

– 「楽する」ためには「苦労は厭わない」

三浦 一仁(ミウラ カズヒト)

自己紹介

• 通称:みうみう,「なんで来たん?」氏

• Twitter:@kazuhito_m

• Github:kazuhito-m

• 老害度:38歳、独身、意識低い系

• 職業:プログラマ(SIer、ビジネスアプリ属),自動化大好きおじさん

– フリーランス,屋号「みうらさんとこ」

• 好きなもの:自動化,「継続的なんとか」

– CI/CDとか大好物

– 「楽する」ためには「苦労は厭わない」

三浦 一仁(ミウラ カズヒト)

”昔話大好きおじさん”で良いです!

Part.1

話しをしようあれは今から

18年前だったか…

時は1997年

1997年

みうら、社会人になりました。

• 50人程度のギョームアプリ作る会社

• 入社当初はOJTでプログラマ

–OOな設計のクラサバアプリをVB6で作ってた

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

199x〜200x年代は、

オブジェクト指向が花開いた時代

どうやって開発してたのか…オレの年代の人は

「ハッ?VB6でオブジェクト指向?出来るわけねーじゃんwくっさw」

「それ…昔の話やからってホラふくなよw」とか言うけど…

VisioでER設計

Accessでテーブル設計

※当時こんなアイコンちゃいますけどw

自社製独自DBデザイナ

残念ながら参照整合性を手入力

マルチRDBMS種なDDL群

MDBをインポート

Rational Rose で論理/物理クラス設計

自社製独自

コンバータ

テーブルのカタチしたクラスモジュールファイル群(変更しちゃダメな奴)

テーブルのカタチしたクラスモジュールファイル群(変更(拡張)していいヤツ)

MSのDBライブラリを

ラップしたモノ

VBプロジェクトの自社製雛形

ビジネスクラスとGUIを実装!

(ある程度自社都合のカタチを仕込まれた)ビジネスクラスの雛形

データ設計

業務視点のなアプリ設計

コンパイル VB6で出来たexe

どうやって開発してたのか…オレの年代の人は

「ハッ?VB6でオブジェクト指向?出来るわけねーじゃんwくっさw」

「それ…昔の話やからってホラふくなよw」とか言うけど…

VisioでER設計

Accessでテーブル設計

※当時こんなアイコンちゃいますけどw

自社製独自DBデザイナ

残念ながら参照整合性を手入力

マルチRDBMS種なDDL群

MDBをインポート

Rational Rose で論理/物理クラス設計

自社製独自

コンバータ

テーブルのカタチしたクラスモジュールファイル群(変更しちゃダメな奴)

テーブルのカタチしたクラスモジュールファイル群(変更(拡張)していいヤツ)

MSのDBライブラリを

ラップしたモノ

VBプロジェクトの自社製雛形

ビジネスクラスとGUIを実装!

(ある程度自社都合のカタチを仕込まれた)ビジネスクラスの雛形

データ設計

業務視点のなアプリ設計

コンパイル VB6で出来たExe

MS製品がというより…

「これが出来る

メカニズム」

にほれこんだ!(今で言うRAD,MDA,技術的にはORM,FW)

これだけ見たら…楽なんだがなぁ• その頃作ってた「クライアント・サーバの業務アプリ」というものの構成は…

Lan(イーサネット)内

サーバ クライアント クライアント(サーバも兼ねる)

RDBMSサーバ(SQLServer,Oracle等)

(自分たちの)VB6アプリ

RDBMSサーバ(SQLServer,Oracle等)

(自分たちの)VB6アプリ

もしくは

で、一年生の俺に課された仕事は…

• 「インストールテスト」という仕事

–ある日「インストールテストしといて」という命令が

• 何それ?意味は?

–先輩「インストールしてカンタンなテストするんや」

–オレ「???」

と、いうのも

なんとも行けてない…

• この時期、事故が多数起こっていて…– ライブラリ(DLL)が足らず起動不能

– ライブラリ(DLL)のVerが古くて途中アベンド

– OSの組合わせで異なった挙動

– 他アプリのインストール組合わせで不可解な動き

• が、リリース後に発覚

なぜかというと

最後の「テストしにくいとこ」やな

• 当時インストーラは…– 「インストーラ作成系ツール」でビルドするもの

• 最後はexeファイルに

– MSのライブラリ、(あれば)サードライブラリ、自前のDLL/EXE、を登録

– くわしくはここらへん

なので、ある程度サポートしてくれるものの「今リリースで新たなDLL増えた」などは入れ忘れやVerマチガイもあり、事故ってた

なので

ざっくり言うと

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

…というようなテストを「環境の組み合わせ分」するテストが必要だったのです

(今で言うところの「インストール + スモークテスト + α」みたいなものでしょうか)

ん?「環境の組み合わせ分」

さっき「割と単純」と書いたな…

クライアント

(自分たちの)VB6アプリWindows98

SE

クライアント

(自分たちの)VB6アプリWindows95

クライアント

(自分たちの)VB6アプリWindowsNT

クライアント

(自分たちの)VB6アプリWindows

2000

クライアント

(自分たちの)VB6アプリWindowsMe

さっき「割と単純」と書いたな…

クライアント

(自分たちの)VB6アプリWindows98

SE

クライアント

(自分たちの)VB6アプリWindows95

クライアント

(自分たちの)VB6アプリWindowsNT

クライアント

(自分たちの)VB6アプリWindows

2000

クライアント

(自分たちの)VB6アプリWindowsMe

おいおい、

割と量あるぞ?これ…

考えたくないけど…

• さらに…

• 今回は「先輩が環境を用意してくれてた」から良いものの…

•万が一つぶれて「環境作成からしなくちゃならない」

だったら…

さらに

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

✕環境の 組合せ分

さらに

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

✕環境の 組合せ分

すごいめんどくさい!

…と明らかにわかる

責任が伴う重大なもの…なのだけど

• そう、インストールテストは– ある程度重要

–手順化できるくらい明確

– しかし時間がかかる

– 待ち時間が多い

– が”終わり”を見てないとアカン

•総じて「こういうテスト」だ

–「面倒臭いが、手が抜けない」

–「単純だが、時間がかかる」

責任が伴う重大なもの…なのだけど

• そう、インストールテストは– ある程度重要

–手順化できるくらい明確

– しかし時間がかかる

– 待ち時間が多い

– が”終わり”を見てないとアカン

•総じて「こういうテスト」だ

–「面倒臭いが、手が抜けない」

–「単純だが、時間がかかる」

だから、

一年生に

お鉢が回ってくる…と思う(当時の上司様、どうなん?)

壮絶にやりたくないオレは…

当時の三浦一仁(20歳)

やりた無いなぁ…なんとか

ならんかなぁ…

壮絶にやりたくないオレは…

当時の三浦一仁(20歳)

やりた無いなぁ…なんとか

ならんかなぁ…

古来より「業務アプリ開発者達が戦ってきた事」は…

1.環境構築のプログラム化(〜AsCode)&自動化

2.環境構成のフリーズドライ

3.物理筐体の用意

だったんじゃないだろうか?

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x・手作業でPC探してくる、「ブートセレクタ」入れる

・手でOSのインストールディスクを入れる

・手動でウィザード形式の対話型を進んでいく

・手動でディスク入れたり、インストールしたり

・バッチでProgramFilesとsystem32とレジを退避

・手で電源入れて、OS選ぶ

・バッチで退避ファイルを書き戻す

・手動でディスク入れたり、インストールしたり

・手作業でアプリにログインしたり操作したり

アプリ・インストラビルド ・手動にてアプリビルド、インストーラの編集・ビルド

やること・使うもの 想定:Win,VB6,クラサバ

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x・手作業でPC探してくる、「ブートセレクタ」入れる

・手でOSのインストールディスクを入れる

・手動でウィザード形式の対話型を進んでいく

・手動でディスク入れたり、インストールしたり

・バッチでProgramFilesとsystem32とレジを退避

・手で電源入れて、OS選ぶ

・バッチで退避ファイルを書き戻す

・手動でディスク入れたり、インストールしたり

・手作業でアプリにログインしたり操作したり

アプリ・インストラビルド ・手動にてアプリビルド、インストーラの編集・ビルド

やること・使うもの 想定:Win,VB6,クラサバ

うーん…だいたいが

「時間のかかる手作業」

「状態保存できないもの」

ばかりじゃないか…

Part.2

OSS・Linuxへ向かいたい

2001年ごろ

当時の三浦は

•三年目、当時のみうらは…なんとなく思っていた

–MS系…なんかイヤなってきたなぁ

–オレこのままでええんやろか…

事実と個人的ないまぜだけど…

• 連携とれてるところは、とことん親和性が良い

• デザインの統一

• なんだかんだ言っても最大勢力だったから習得して損なし

• 当時の(オレの)イメージMSの良いとこ

• 排他的

• 拝金主義

• 露骨なロックイン

– 怪文書”ハロウィーン文書”

• 方針を「びみょうな時間感」で変えてくる

• 「対話型・ウィーザード」GUI文化

MSのヤナとこ

• ヤナとこが良いとこを上回ってるなぁ感

ここが「環境作成&

インストールの自動化」を阻む!

別の事情として…

• 自社が

–「MS/Windows至上主義」

•デザインガイド/MSプロダクトの設計以外は設計にあらず

–あと…

さらに

MS「次VerからVS系全部ご破産な!.Netってのするから」

(.Net構想)

.Net発表のインパクト

• これは別に「悪い話」では無かった– VBとかは「半端OO言語」を脱する

– 「ランタイム統一」は世の流れ

• ただし、立場別に「過敏に反応」–技術者:技能がパラダイムシフトでご破産

–企業:過去資産が使えないorこの先レガシー

• 反対運動も…

– VB.NOT

ここでみうらは…「スキルがご破産になるなら、

新しいとこで新しいこと

やったらええしなぁ」

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

a

MSクライアント・サーバ全盛期

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

一社目やめるとともに脱MS!OSSで(主にLinuxとそのアプリ )

の世界へと華麗に転身♪

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

a

MSクライアント・サーバ全盛期

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

一社目やめるとともに脱MS!OSSで(主にLinuxとそのアプリ )

の世界へと華麗に転身♪

できませんでした。そんな世の中あまくない…

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

a

MSクライアント・サーバ全盛期

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

a

MSクライアント・サーバ全盛期

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる

できなかったので…この線は「ゆったり」と

ゆるい目標をたてた–「PG人並みインフラちょとわかる」プログラマ

–主戦場はLinuxにしよう

•Winはどうせ職場でやる

•最終形態は「家にWin無い生活」

–言語はJavaにしよう

–選ぶ道具はすべて「OSS」にしよう

井の中のなんとやら…

• OSS…そしてLinuxは…とんでもない広い「大海」だった

–「ディストリビューション」と呼ばれる「横のバリエーション」

–その上で走る「プログラムパッケージ」の量

• 広い!…けど傾向から2つにしぼった

–ディストリは「パッケージ管理方式」で系統がわけられるため、一つずつ学ぶ• RPM系:FedoraCore(後にCentOSに乗りかえ)

• deb系:Debian(後にUbuntuに乗りかえ)

で、Linux・OSS系で

さっきの

「インストールテスト」と同じことを

をしてみようとすると…

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x・手作業でPC探してくる

・「PXEインストール」でネットワーク(Lan内)から

・「KickStart」で自動インストール

・「パッケージを列挙したスクリプト」の実行

・スクリプトで/binや/libなどを退避

・手で電源入れて、OS選ぶ

・バッチで退避ファイルを書き戻す

・パッケージインストールorコマンドorどっかからコピー

・手作業でアプリにログインしたり操作したり

アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド

やること・使うもの 想定:CentOS,Xのアプリ,クラサバ

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x・手作業でPC探してくる

・「PXEインストール」でネットワーク(Lan内)から

・「KickStart」で自動インストール

・「パッケージを列挙したスクリプト」の実行

・スクリプトで/binや/libなどを退避

・手で電源入れて、OS選ぶ

・バッチで退避ファイルを書き戻す

・パッケージインストールorコマンドorどっかからコピー

・手作業でアプリにログインしたり操作したり

アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド

やること・使うもの 想定:CentOS,Xのアプリ,クラサバ

割と

「環境構築のプログラム化(〜AsCode)」に考慮がある!

ええやんLinux!

ええやんOSS陣営!

と、当時は思ってた

のですが

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x・手作業でPC探してくる

・「PXEインストール」でネットワーク(Lan内)から

・「KickStart」で自動インストール

・「パッケージを列挙したスクリプト」の実行

・スクリプトで/binや/libなどを退避

・手で電源入れて、OS選ぶ

・バッチで退避ファイルを書き戻す

・パッケージインストールorコマンドorどっかからコピー

・手作業でアプリにログインしたり操作したり

アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド

やること・使うもの 想定:CentOS,Xのアプリ,クラサバちょっと…現実的じゃない?

(オレは常用してるけど)

BIOSの技術なのでLinuxオンリーじゃない

Windowsにも「Unattended Install(無人セットアップ)」

という技術が当時あった

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x・手作業でPC探してくる

・「PXEインストール」でネットワーク(Lan内)から

・「KickStart」で自動インストール

・「パッケージを列挙したスクリプト」の実行

・スクリプトで/binや/libなどを退避

・手で電源入れて、OS選ぶ

・バッチで退避ファイルを書き戻す

・パッケージインストールorコマンドorどっかからコピー

・手作業でアプリにログインしたり操作したり

アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド

やること・使うもの 想定:CentOS,Xのアプリ,クラサバちょっと…現実的じゃない?

(オレは常用してるけど)

BIOSの技術なのでLinuxオンリーじゃない

Windowsにも「Unattended Install(無人セットアップ)」

という技術が当時あった

今見てみると、

少し「ひいき目」

でした

それを踏まえても

• ともあれ、OSS陣営は…–(先のケースで)圧倒的な事例の情報量

–コンソール文化や「自動化に積極的」な文化

•ええやんLi(ry

Part.3

世は

Webシステムへ2001年ごろ〜

そうこうしているうちに…

• 世の業務アプリのデファクトが「Webアプリケーション」に

• サーバサイドJavaが隆盛に向かった時期

–みうらはOSS側へ向かってたのでJava(orLL)のデベロッパでむかえた

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

a

MSクライアント・サーバ全盛期

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる

Webアプリケーション総明記

俺 Javaサーバサイドアプリしこたま書く

良い方向かな?• 構成は…

– アプリがサーバ側に移動

– 「個々クライアントにインストール」が「サーバにデプロイ」という行事に変わった

Lan(イーサネット)内

サーバ クライアント

RDBMSサーバ(SQLServer,Oracle等)

Webブラウザ自分たちが作ったWebアプリ

良い方向かな?• 構成は…

– アプリがサーバ側に移動

– 「個々クライアントにインストール」が「サーバにデプロイ」という行事に変わった

Lan(イーサネット)内

サーバ クライアント

RDBMSサーバ(SQLServer,Oracle等)

Webブラウザ自分たちが作ったWebアプリ

あれ?構成物が減った?やった!楽になったw

ところがどっこい

サーバ クライアント

RDBMSサーバ(SQLServer,Oracle等)

自分たちが作ったWebアプリ

Webブラウザ

Webブラウザ

WindowsXP

クライアント

Webブラウザ

Windows2000

クライアント

MacOS

ところがどっこい

サーバ クライアント

RDBMSサーバ(SQLServer,Oracle等)

自分たちが作ったWebアプリ

Webブラウザ

Webブラウザ

WindowsXP

クライアント

Webブラウザ

Windows2000

クライアント

MacOS

増えとるw今度は「OSとブラウザ」の

組み合わせと戦うハメに…

じゃあインストールテスト(的なもの?)はどうなんの?

クラサバ時代とWeb時代の比較

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

アプリ・インストラビルド

クラサバ

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境をクリーニング

アプリをデプロイ

アプリ・アーカイブビルド

ハード調達

インストールディスクIN

OSインストール作業

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリサーバ クライアント

クラサバ時代とWeb時代の比較

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

アプリ・インストラビルド

クラサバ

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境をクリーニング

アプリをデプロイ

アプリ・アーカイブビルド

ハード調達

インストールディスクIN

OSインストール作業

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリ• テストはまだ必要

–アーカイブするときにコピーor設定ミスがあり得る

• サーバサイド

–AsCodeは以前からほぼなってる

–「LAMP構成の一式インストール」など「簡易化」が進んだ

• クライアントサイド

–Windowsが主なら、相変わらず手順書との戦い

–ただしブラウザだけなので関連アプリインストールとクリーニングが不要に

Part.4

OS仮想化

がやってきた2005年ごろ〜

前からあったけど…

• 「OS仮想化技術」が一般的なもの

として普及

–VMWareを筆頭に

•後に無料化したのも起爆剤に

–OSSの仮想化技術も続く

• 構成を一式で扱えるように

• 境界を飛びこえて移植可能に

–異種OS間

–ハードウェア・ソフトウェア間

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

Webアプリケーション総明記

OS仮想化の潮流

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く

俺 ESXi気に入り、テスト環境一式作る

むちゃむちゃ出来るな…

• 構成の柔軟さがエグく出来るようなった

Windows

Linux

Linux

Windows

ESXi

Windows

Windows

Linux

どちらをホストOSにしても構わない

一台に複数台OSで「システム構成」を再現

Linux

Windows

Windows

Virtual to Physical (V2P)

Linux

Windows

Windows

Physical to Virtual (P2V)

なんでもありやな…

なにより

自分にとってすごかったのは…

• 「環境をフリーズドライできる」こと–クリーンな環境から始められる

–「開発終了した数年前のテスト環境」なども蘇らせれる

–(ソノ気になれば)本番一式を持って帰ってこれる

じゃあインストールテスト

にはどう(ry

クラサバ時代とWeb時代の比較

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

アプリをデプロイ

アプリ・アーカイブビルド

ハード調達

インストールディスクIN

OSインストール作業

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリサーバ クライアント

作業は変わらず手動を含むが、

コンソール(実機じゃない)で出来るように

クライアントとサーバを一台ずつハード調達せずともよくなった

クリーンな状態をフリーズドライして

いつでも蘇らせれるので「環境のクリーニング」が

不要に

ちなみに…

利用はどちらもあちらもありませんが

OSSプロダクト

• OS仮想化の多くのプロダクトはOSS

KVM

Xen

VirturalBoxQEMU

VMWareシリーズ

Windows Virtual PC

Hyper-V

OpenVZ

Part.5

自動テストCI/CDの普及

2010年ごろ〜

ここへきて

• 「Devから来た技術(開発手法)」が開花

– 自動テストが一般的に

• テスト¥ビルドツールが発達

– 「自動テストをどうまわす?」からCI(継続的インテグレーション)が生まれる

• Jenkins流行る

– 「ビルド・デプロイ」までもループの中に入れてしまう考え方、CD(継続的デリバリー)が発表される

– 「UIの自動テスト」が課題になり、プロダクトが生まれ始める

• Seleniume , Friendly

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

Webアプリケーション総明記

OS仮想化の潮流

テスト自動化・CI/CDの台頭

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く

俺 ESXi気に入り、テスト環境一式作る

俺 自動テストは触っていた、CIサーバを探す

ついにインストールテスト

で手付かずだった部分に

AsCode(自動化)の手が

ソフトウェア開発の技法は強い…

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

アプリをデプロイ

アプリ・アーカイブビルド

ハード調達

インストールディスクIN

OSインストール作業

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリサーバ クライアント

ビルドツールの発達で、アプリのビルド、

アーカイブのビルドが確実なものに

UIテストのプロダクトにより、

自動テスト可能にCIサーバが自動起動の起点と

一連の動作をつなぐ橋渡し役に

ソフトウェア開発の技法は強い…

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

アプリをデプロイ

アプリ・アーカイブビルド

ハード調達

インストールディスクIN

OSインストール作業

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリサーバ クライアント

ビルドツールの発達で、アプリのビルド、

アーカイブのビルドが確実なものに

UIテストのプロダクトにより、

自動テスト可能にCIサーバが自動起動の起点と

一連の動作をつなぐ橋渡し役に

• 一気に「自動化可能」な場所が増える

–あと残すのは「物理」か…

Part.6

クラウドの猛威2013年ごろ〜

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

Webアプリケーション総明記

OS仮想化の潮流

テスト自動化・CI/CDの台頭

クラウドの猛威

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く

俺 ESXi気に入り、テスト環境一式作る

俺 自動テストは触っていた、CIサーバを探す

俺 Jenkinsに惚れ込みCI現場で作る

ここへきて

• 「クラウドにサーバを構築」するのが容易かつリーズナブルな時代に

– 「必要な時に必要なだけ借りる」文化が根付いた

–上記前提の設計パターンが生み出された

• 従来「ハード」だった部分すらもソフト化

– 「サーバを一台立てる」「結線する」「増設する」ような操作をソフトウェア化、WebのUIから可能に

• 操作すべてをプログラマブルに

– すべての操作をWebAPI化、操作用SDKも提供

–上記の「ハード」の操作がプログラムで書けるのでいわば「ハードの自動化」が可能に

ついについにインストールテスト

の不可侵部分すらも…

これは前回までの…

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

アプリをデプロイ

アプリ・アーカイブビルド

ハード調達

インストールディスクIN

OSインストール作業

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリサーバ クライアント

クラウドの導入により…

クラウドインスタンス用意

ミドル・サードのインスト

アプリをデプロイ

アプリ・アーカイブビルド

クラウドインスタンス用意

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリサーバ クライアント

ハードの操作が必要だった

部分+

OSインストール部分がごっそりなくなる

この操作はスクリプトに

より、自動化可能

クラウドの導入により…

クラウドインスタンス用意

ミドル・サードのインスト

アプリをデプロイ

アプリ・アーカイブビルド

クラウドインスタンス用意

ブラウザインストール

環境を選び

代表的業務のテスト

Webアプリサーバ クライアント

ハードの操作が必要だった

部分+

OSインストール部分がごっそりなくなる

この操作はスクリプトに

より、自動化可能

インストールテストはほぼすべて「自動化可能」に!

Part.7

そして、今2015年〜

よくわからない年表1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

Webアプリケーション総明記

OS仮想化の潮流

テスト自動化・CI/CDの台頭

クラウドの猛威

MS変わって来たんちゃうん?ええんちゃうん?期 OSコンテナ技術総明記

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く

俺 ESXi気に入り、テスト環境一式作る

俺 自動テストは触っていた、CIサーバを探す

俺 Jenkinsに惚れ込みCI現場で作る

俺 Docker内だけで「受入テストパイプライン作る俺 MSのプロダクト&Jenkinsの自動化する

もうつい先日とかそういうの

• みうら、最近MSにいわば「出戻って」きてます

–評判聞いたり

–勉強会行ったり

–Windowsの自動化仕事受けたり

• そこで感じるのは…

ということ

隔世の感がすごい

なにやら

• ウワサによると…

– ”Microsoft love Linux”前でCTOが写真とってる

– VS系の言語(.NET周り)も「後発のOO」を経て円熟期に入ってる

– OSS陣営のエバンジェリスト達が集まってきてるらしい

– DevOpsに力を入れている

–GUIだけでなくスクリプト(AsCode)な文化が発達

– クラウド(Azure)に力入れている

– Linuxで開発できる手段をいろいろ提供しだした

– 最近、開発者仲間から「MS変わったらしいよ」「いいらしいよ」をよく聞く

なにやら

• ウワサによると…

– ”Microsoft love Linux”前でCTOが写真とってる

– VS系の言語(.NET周り)も「後発のOO」を経て円熟期に入ってる

– OSS陣営のエバンジェリスト達が集まってきてるらしい

– DevOpsに力を入れている

–GUIだけでなくスクリプト(AsCode)な文化が発達

– クラウド(Azure)に力入れている

– Linuxで開発できる手段をいろいろ提供しだした

– 最近、開発者仲間から「MS変わったらしいよ」「いいらしいよ」をよく聞く

えっ?

オレが出てった時に

「気に入らん」言うたとこ、全部変わってんちゃうん?

原点に立ち返って

•総じて

–「面倒臭いが、手が抜けない」

–「単純だが、時間がかかる」

て言ってた「インストールテスト」今のMSの文化・技術でやったら

どうなるんやろ?

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x

・クラウド(AWS,Azure,etc...)でインスタンス起動

・プロビジョニングツール(PS/PS DSC)でパッケージ管理(OneGet,Chocolatey)を蹴る

・クラウドにイメージを保存

・クラウドからOSインスタンスを起動

・インストーラDLしてサイレントインストール

・テストPG(Friendry使用)で業務操作

アプリ・インストラビルド・アプリはMSBuild、インストーラはInstallSheeld等でそれぞれビルド

やること・使うもの 想定:Win7,C#,クラサバ

一連をCIサーバで起動、自動運転、通知

先ほどの作業を照らしてみると…

ハード調達

インストールディスクIN

OSインストール作業

ミドル・サードのインスト

環境を選び

環境をクリーニングし

アプリをインストールし

代表的業務のテスト

クリーン環境の退避

x

・クラウド(AWS,Azure,etc...)でインスタンス起動

・プロビジョニングツール(PS/PS DSC)でパッケージ管理(OneGet,Chocolatey)を蹴る

・クラウドにイメージを保存

・クラウドからOSインスタンスを起動

・インストーラDLしてサイレントインストール

・テストPG(Friendry使用)で業務操作

アプリ・インストラビルド・アプリはMSBuild、インストーラはInstallSheeld等でそれぞれビルド

やること・使うもの 想定:Win7,C#,クラサバ

一連をCI

サーバで起動、自動運転、通知

(コケさえしなけりゃ)

ほぼ全自動!

答えを待つだけに!

MS…変わったかもなぁ

これからのMSには期待しかない

Part.8

まとめっぽいの※注.超主観ですよ

MSとOSS

MSとOSS

• 「新規性」と「トレンド」の発生が企業からOSSに移った十数年– 自身がOSSに注目し始めたころから「新しい技術」や「デ

ファクトになるようなトレンド」は、OSS側から生まれてくるようになったと思う

– 今、SIerの業務システムの開発での道具の大多数はOSS由来のもの

– MSさえ「OSSを応援する立場」になったなら、今後ますますその流れに拍車がかかると思われる

–個人的には「MSが作るOSSプロダクト」に期待

OSSを追いかける意味

OSSを追いかける意味

• 個人的な価値– インターネットさえあれば、だれでも利用・習熟・改良が

できる(ことが多い

• みんなにチャンスがある

• 最悪「根性」の出しようがある

•著名プロダクトで「プルリク通った」時のうれしさたるや

– 文化が好き

• これは「OSS」というより 「Unix/Linux」文化かも

• 「自動化」とか好きなら…

• ビジネス的な価値– 先見の明あらば「先行者」となれる

はっ!そう言えば…

このセッションって

“DevOps系”やった気がする!

Devはもっと「歌って踊れるDev」

のはず

Devはもっと「歌って踊れるDev」のはず• 2年前から「ずーっと引っかかってること」

オレは上の資料を2年前から「バイブルかのごとく」何度も見てるんですが…

Devはもっと「歌って踊れるDev」のはず• この資料の最後にこんな「煽り」がある

その定義なら、オレたちが「Opsが出来るプログラマ」になっても”スーパーエンジニア”名乗られへんやん!

は、置いといて…

1998年頃

2001年頃

2005年頃

MS MS以外(主にOSS)

2010年頃

2013年頃

2015年頃

MSクライアント・サーバ全盛期

Webアプリケーション総明記

OS仮想化の潮流

テスト自動化・CI/CDの台頭

クラウドの猛威

MS変わって来たんちゃうん?ええんちゃうん?期 OSコンテナ技術総明記

俺 VB6で猛烈にアプリ書く

俺 インストールテストとかしてる

俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く

俺 ESXi気に入り、テスト環境一式作る

俺 自動テストは触っていた、CIサーバを探す

俺 Jenkinsに惚れ込みCI現場で作る

俺 Docker内だけで「受入テストパイプライン作る俺 MSのプロダクト&Jenkinsの自動化する

Devはもっと「歌って踊れるDev」のはず

こんな落ちこぼれでもいや、落ちこぼれだったからこそ

(バツゲームかのごとく)一年生の時から

「インフラのはじっこ」に触れて仕事している…

オレみたいなプログラマーはいっぱい居ると思うんです

Devだって(本番以外の)

”環境のお守り”している事が多いのでは?

Devはもっと「歌って踊れるDev」のはず

• 今、自分は「オレ、プログラマーや!」言うてるのに、なぜか「インフラチーム」に居るわけで…

–(プログラマが”精鋭部隊”過ぎて寄してもらえないみたいですが…)

• そこからながめるに…

「プログラム出来るインフラエンジニア」

より

「インフラ知ってるプログラマ」

の方が多い(気がする

足らぬは「Ops」…

「Ops」が「運用」と訳されるなら…

「運用」はその現場ごとに存在する

その現場でないとわからねぇ

Devはもっと「歌って踊れるDev」のはず

•素養は足りてる!

•Developerのみなさん、もっと「垣根を超えて」参りましょう!

–活躍の場所はあります!

•Let’s DevOps!