Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,586 views

Published on

「Osaka ComCamp 2016 powered by MVPs」(2016/02/20)の「Infrastrucure as Code/DevOps系」枠にて発表させて頂いたスライドです。(時間:50分)

申し込みサイト : http://connpass.com/event/24027/

Published in: Technology
  • Be the first to comment

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

  1. 1. Osaka ComCamp 2016 powered by MVPs 10年前 「Microsoftの社員 だと思って働け!」 と教育されて 嫌気がさして出てった人 から見た「外の世界」の話 Ver 0.2
  2. 2. 早速ですが… 訂正を…
  3. 3. Osaka ComCamp 2016 powered by MVPs 1015年前 「Microsoftの社員 だと思って働け!」 と教育されて 嫌気がさして出てった人 から見た「外の世界」の話
  4. 4. Osaka ComCamp 2016 powered by MVPs 1015年前 「Microsoftの社員 だと思って働け!」 と教育されて 嫌気がさして出てった人 から見た「外の世界」の話 すいません 願望からか サバ読んでました! (意外と年取ってたw)
  5. 5. よくわからない年表 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の自動化する 本日は 「在る老害の仕事歴」 について、 当人の感想文を 発表するものです (「プログラマと環境」 という視点から)
  6. 6. どういうことよ? ちょい待ち! 「得るモン」 何よ?
  7. 7. 知らん! 自分で「何か」 持ってけ!
  8. 8. あ、でも…
  9. 9. 昨日のレビュー指摘は全部それっ 言いたいこと • OSSオレは好きだし、追っかけてみて –食わず嫌いしてるなら一度 • 昔MSキライになった人、今一度見よう –食わず嫌いしてるなら一度 • Devの人ら、いっしょにDevOpsしよ! –もっとグイグイはみ出そうぜ
  10. 10. Part.0 お前、 だれやねん
  11. 11. 自己紹介 • 通称:みうみう,「なんで来たん?」氏 • Twitter:@kazuhito_m • Github:kazuhito-m • 老害度:38歳、独身、意識低い系 • 職業:プログラマ(SIer、ビジネスアプリ 属),自動化大好きおじさん – フリーランス,屋号「みうらさんとこ」 • 好きなもの:自動化,「継続的なんとか」 – CI/CDとか大好物 – 「楽する」ためには「苦労は厭わない」 三浦 一仁(ミウラ カズヒト)
  12. 12. 自己紹介 • 通称:みうみう,「なんで来たん?」氏 • Twitter:@kazuhito_m • Github:kazuhito-m • 老害度:38歳、独身、意識低い系 • 職業:プログラマ(SIer、ビジネスアプリ 属),自動化大好きおじさん – フリーランス,屋号「みうらさんとこ」 • 好きなもの:自動化,「継続的なんとか」 – CI/CDとか大好物 – 「楽する」ためには「苦労は厭わない」 三浦 一仁(ミウラ カズヒト) ”昔話大好きおじさん” で良いです!
  13. 13. Part.1 話しをしよう あれは今から 18年前だったか…
  14. 14. 時は1997年 1997年 みうら、社会人になりました。 • 50人程度のギョームアプリ作る会社 • 入社当初はOJTでプログラマ –OOな設計のクラサバアプリをVB6 で作ってた
  15. 15. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 MSクライアント・サーバ全盛期 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる
  16. 16. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 MSクライアント・サーバ全盛期 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 199x〜200x年代は、 オブジェクト指向が 花開いた時代
  17. 17. どうやって開発してたのか… オレの年代の人は 「ハッ?VB6でオブジェクト指向?出来るわけねーじゃんwくっさw」 「それ…昔の話やからってホラふくなよw」とか言うけど… VisioでER設計 Accessでテーブル設計 ※当時こんな アイコンちゃいます けどw 自社製 独自DB デザイナ 残念ながら 参照整合性を 手入力 マルチRDBMS種な DDL群 MDBを インポート Rational Rose で 論理/物理クラス設計 自社製 独自 コンバータ テーブルのカタチした クラスモジュールファイル群 (変更しちゃダメな奴) テーブルのカタチした クラスモジュールファイル群 (変更(拡張)していいヤツ) MSのDB ライブラリを ラップしたモノ VBプロジェクト の自社製雛形 ビジネスクラスと GUIを実装! (ある程度自社都合の カタチを仕込まれた) ビジネスクラスの雛形 データ設計 業務視点のなアプリ設計 コンパイル VB6で出来たexe
  18. 18. どうやって開発してたのか… オレの年代の人は 「ハッ?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)
  19. 19. これだけ見たら…楽なんだがなぁ • その頃作ってた「クライアント・サーバの業務アプリ」 というものの構成は… Lan(イーサネット)内 サーバ クライアント クライアント (サーバも兼ねる) RDBMSサーバ (SQLServer,Oracle等) (自分たちの) VB6アプリ RDBMSサーバ (SQLServer,Oracle等) (自分たちの) VB6アプリ もしくは
  20. 20. で、一年生の俺に課された仕事は… • 「インストールテスト」という仕事 –ある日 「インストールテストしといて」 という命令が • 何それ?意味は? –先輩「インストールしてカンタンな テストするんや」 –オレ「???」
  21. 21. と、いうのも
  22. 22. なんとも行けてない… • この時期、事故が多数起こっていて… –ライブラリ(DLL)が足らず起動不能 –ライブラリ(DLL)のVerが古くて途中アベンド –OSの組合わせで異なった挙動 –他アプリのインストール組合わせで不可解な動き • が、リリース後に発覚
  23. 23. なぜかというと
  24. 24. 最後の「テストしにくいとこ」やな • 当時インストーラは… –「インストーラ作成系ツール」でビルドするもの • 最後はexeファイルに –MSのライブラリ、(あれば)サードライブラリ、自前 のDLL/EXE、を登録 –くわしくはここらへん なので、ある程度サポートしてくれるものの 「今リリースで新たなDLL増えた」などは 入れ忘れやVerマチガイもあり、事故ってた
  25. 25. なので
  26. 26. ざっくり言うと 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト …というようなテストを「環境の組み合わせ分」するテストが 必要だったのです (今で言うところの 「インストール + スモークテスト + α」 みたいなものでしょうか)
  27. 27. ん? 「環境の組み合わせ分」 ?
  28. 28. さっき「割と単純」と書いたな… クライアント (自分たちの) VB6アプリWindows98 SE クライアント (自分たちの) VB6アプリWindows95 クライアント (自分たちの) VB6アプリWindowsNT クライアント (自分たちの) VB6アプリWindows 2000 クライアント (自分たちの) VB6アプリWindowsMe
  29. 29. さっき「割と単純」と書いたな… クライアント (自分たちの) VB6アプリWindows98 SE クライアント (自分たちの) VB6アプリWindows95 クライアント (自分たちの) VB6アプリWindowsNT クライアント (自分たちの) VB6アプリWindows 2000 クライアント (自分たちの) VB6アプリWindowsMe おいおい、 割と量あるぞ?これ…
  30. 30. 考えたくないけど… • さらに… • 今回は 「先輩が環境を用意してくれてた」 から良いものの… • 万が一つぶれて 「環境作成からしなくちゃならない」 だったら…
  31. 31. さらに ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 ✕環境の 組合せ分
  32. 32. さらに ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 ✕環境の 組合せ分 すごい めんどくさい! …と明らかにわかる
  33. 33. 責任が伴う重大なもの…なのだけど • そう、インストールテストは –ある程度重要 –手順化できるくらい明確 –しかし時間がかかる –待ち時間が多い –が”終わり”を見てないとアカン • 総じて「こういうテスト」だ –「面倒臭いが、手が抜けない」 –「単純だが、時間がかかる」
  34. 34. 責任が伴う重大なもの…なのだけど • そう、インストールテストは –ある程度重要 –手順化できるくらい明確 –しかし時間がかかる –待ち時間が多い –が”終わり”を見てないとアカン • 総じて「こういうテスト」だ –「面倒臭いが、手が抜けない」 –「単純だが、時間がかかる」 だから、 一年生に お鉢が回ってくる …と思う (当時の上司様、どうなん?)
  35. 35. 壮絶にやりたくないオレは… 当時の三浦一仁(20歳) やりた無いなぁ… なんとか ならんかなぁ…
  36. 36. 壮絶にやりたくないオレは… 当時の三浦一仁(20歳) やりた無いなぁ… なんとか ならんかなぁ… 古来より 「業務アプリ開発者達が戦ってきた事」は… 1.環境構築のプログラム化 (〜AsCode)&自動化 2.環境構成のフリーズドライ 3.物理筐体の用意 だったんじゃないだろうか?
  37. 37. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・手作業でPC探してくる、「ブートセレクタ」入れる ・手でOSのインストールディスクを入れる ・手動でウィザード形式の対話型を進んでいく ・手動でディスク入れたり、インストールしたり ・バッチでProgramFilesとsystem32とレジを退避 ・手で電源入れて、OS選ぶ ・バッチで退避ファイルを書き戻す ・手動でディスク入れたり、インストールしたり ・手作業でアプリにログインしたり操作したり アプリ・インストラビルド ・手動にてアプリビルド、インストーラの編集・ビルド やること・使うもの 想定:Win,VB6,クラサバ
  38. 38. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・手作業でPC探してくる、「ブートセレクタ」入れる ・手でOSのインストールディスクを入れる ・手動でウィザード形式の対話型を進んでいく ・手動でディスク入れたり、インストールしたり ・バッチでProgramFilesとsystem32とレジを退避 ・手で電源入れて、OS選ぶ ・バッチで退避ファイルを書き戻す ・手動でディスク入れたり、インストールしたり ・手作業でアプリにログインしたり操作したり アプリ・インストラビルド ・手動にてアプリビルド、インストーラの編集・ビルド やること・使うもの 想定:Win,VB6,クラサバ うーん…だいたいが 「時間のかかる手作業」 「状態保存できないもの」 ばかりじゃないか…
  39. 39. Part.2 OSS・Linux へ向かいたい 2001年ごろ
  40. 40. 当時の三浦は • 三年目、当時のみうらは… なんとなく思っていた –MS系…なんかイヤなってきた なぁ –オレこのままでええんやろか…
  41. 41. 事実と個人的ないまぜだけど… • 連携とれてるところは、とこと ん親和性が良い • デザインの統一 • なんだかんだ言っても最大勢 力だったから習得して損なし • 当時の(オレの)イメージ MSの良いとこ • 排他的 • 拝金主義 • 露骨なロックイン – 怪文書”ハロウィーン文書” • 方針を「びみょうな時間感」で 変えてくる • 「対話型・ウィーザード」GUI 文化 MSのヤナとこ • ヤナとこが良いとこを上回ってるなぁ感 ここが 「環境作成& インストールの自動化」 を阻む!
  42. 42. 別の事情として… • 自社が –「MS/Windows至上主義」 •デザインガイド/MSプロダクト の設計以外は設計にあらず –あと…
  43. 43. さらに MS「次Verから VS系全部ご破産な! .Netってのするから」 (.Net構想)
  44. 44. .Net発表のインパクト • これは別に「悪い話」では無かった –VBとかは「半端OO言語」を脱する –「ランタイム統一」は世の流れ • ただし、立場別に「過敏に反応」 –技術者:技能がパラダイムシフトでご破産 –企業:過去資産が使えないorこの先レガシー • 反対運動も… – VB.NOT
  45. 45. ここでみうらは… 「スキルがご破産になるなら、 新しいとこで 新しいこと やったらええしなぁ」
  46. 46. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 a MSクライアント・サーバ全盛期 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 一社目やめるとともに脱MS! OSSで(主にLinuxとそのアプリ ) の世界へと華麗に転身♪
  47. 47. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 a MSクライアント・サーバ全盛期 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 一社目やめるとともに脱MS! OSSで(主にLinuxとそのアプリ ) の世界へと華麗に転身♪ できませんでした。 そんな世の中あまくない…
  48. 48. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 a MSクライアント・サーバ全盛期 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 俺 「脱MS!」をがんばる
  49. 49. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 a MSクライアント・サーバ全盛期 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 俺 「脱MS!」をがんばる できなかったので…この線は「ゆったり」と ゆるい目標をたてた –「PG人並みインフラちょとわかる」プログラマ –主戦場はLinuxにしよう •Winはどうせ職場でやる •最終形態は「家にWin無い生活」 –言語はJavaにしよう –選ぶ道具はすべて「OSS」にしよう
  50. 50. 井の中のなんとやら… • OSS…そしてLinuxは… とんでもない広い「大海」だった –「ディストリビューション」と呼ばれる 「横のバリエーション」 –その上で走る「プログラムパッケージ」の量 • 広い!…けど傾向から2つにしぼった –ディストリは「パッケージ管理方式」で系統が わけられるため、一つずつ学ぶ • RPM系:FedoraCore(後にCentOSに乗りかえ) • deb系:Debian(後にUbuntuに乗りかえ)
  51. 51. で、 Linux・OSS系で さっきの 「インストールテスト」 と同じことを をしてみようとすると…
  52. 52. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・手作業でPC探してくる ・「PXEインストール」でネットワーク(Lan内)から ・「KickStart」で自動インストール ・「パッケージを列挙したスクリプト」の実行 ・スクリプトで/binや/libなどを退避 ・手で電源入れて、OS選ぶ ・バッチで退避ファイルを書き戻す ・パッケージインストールorコマンドorどっかからコピー ・手作業でアプリにログインしたり操作したり アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド やること・使うもの 想定:CentOS,Xのアプリ,クラサバ
  53. 53. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・手作業でPC探してくる ・「PXEインストール」でネットワーク(Lan内)から ・「KickStart」で自動インストール ・「パッケージを列挙したスクリプト」の実行 ・スクリプトで/binや/libなどを退避 ・手で電源入れて、OS選ぶ ・バッチで退避ファイルを書き戻す ・パッケージインストールorコマンドorどっかからコピー ・手作業でアプリにログインしたり操作したり アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド やること・使うもの 想定:CentOS,Xのアプリ,クラサバ 割と 「環境構築のプログラム化(〜AsCode)」 に考慮がある! ええやんLinux! ええやんOSS陣営!
  54. 54. と、 当時は思ってた のですが
  55. 55. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・手作業でPC探してくる ・「PXEインストール」でネットワーク(Lan内)から ・「KickStart」で自動インストール ・「パッケージを列挙したスクリプト」の実行 ・スクリプトで/binや/libなどを退避 ・手で電源入れて、OS選ぶ ・バッチで退避ファイルを書き戻す ・パッケージインストールorコマンドorどっかからコピー ・手作業でアプリにログインしたり操作したり アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド やること・使うもの 想定:CentOS,Xのアプリ,クラサバ ちょっと…現実的じゃない? (オレは常用してるけど) BIOSの技術なので Linuxオンリーじゃない Windowsにも 「Unattended Install(無人セットアップ)」 という技術が当時あった
  56. 56. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・手作業でPC探してくる ・「PXEインストール」でネットワーク(Lan内)から ・「KickStart」で自動インストール ・「パッケージを列挙したスクリプト」の実行 ・スクリプトで/binや/libなどを退避 ・手で電源入れて、OS選ぶ ・バッチで退避ファイルを書き戻す ・パッケージインストールorコマンドorどっかからコピー ・手作業でアプリにログインしたり操作したり アプリ・インストラビルド ・手動にてアプリビルド、パッケージの編集・ビルド やること・使うもの 想定:CentOS,Xのアプリ,クラサバ ちょっと…現実的じゃない? (オレは常用してるけど) BIOSの技術なので Linuxオンリーじゃない Windowsにも 「Unattended Install(無人セットアップ)」 という技術が当時あった 今見てみると、 少し「ひいき目」 でした
  57. 57. それを踏まえても •ともあれ、OSS陣営は… –(先のケースで)圧倒的な事例の情報量 –コンソール文化や「自動化に積極的」な文化 •ええやんLi(ry
  58. 58. Part.3 世は Webシステムへ 2001年ごろ〜
  59. 59. そうこうしているうちに… • 世の業務アプリのデファクトが 「Webアプリケーション」に • サーバサイドJavaが隆盛に向かっ た時期 –みうらはOSS側へ向かってたの でJava(orLL)のデベロッパで むかえた
  60. 60. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 a MSクライアント・サーバ全盛期 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 俺 「脱MS!」をがんばる Webアプリケーション総明記 俺 Javaサーバサイドアプリしこたま書く
  61. 61. 良い方向かな? • 構成は… – アプリがサーバ側に移動 – 「個々クライアントにインストール」が 「サーバにデプロイ」という行事に変わった Lan(イーサネット)内 サーバ クライアント RDBMSサーバ (SQLServer,Oracle等) Webブラウザ 自分たちが作った Webアプリ
  62. 62. 良い方向かな? • 構成は… – アプリがサーバ側に移動 – 「個々クライアントにインストール」が 「サーバにデプロイ」という行事に変わった Lan(イーサネット)内 サーバ クライアント RDBMSサーバ (SQLServer,Oracle等) Webブラウザ 自分たちが作った Webアプリ あれ?構成物が減った? やった!楽になったw
  63. 63. ところがどっこい サーバ クライアント RDBMSサーバ (SQLServer,Oracle等) 自分たちが作った Webアプリ Webブラウザ Webブラウザ WindowsXP クライアント Webブラウザ Windows2000 クライアント MacOS
  64. 64. ところがどっこい サーバ クライアント RDBMSサーバ (SQLServer,Oracle等) 自分たちが作った Webアプリ Webブラウザ Webブラウザ WindowsXP クライアント Webブラウザ Windows2000 クライアント MacOS 増えとるw 今度は「OSとブラウザ」の 組み合わせと戦うハメに…
  65. 65. じゃあ インストールテスト (的なもの?)は どうなんの?
  66. 66. クラサバ時代とWeb時代の比較 ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 アプリ・インストラビルド クラサバ ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境をクリーニング アプリをデプロイ アプリ・アーカイブビルド ハード調達 インストールディスクIN OSインストール作業 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリサーバ クライアント
  67. 67. クラサバ時代とWeb時代の比較 ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 アプリ・インストラビルド クラサバ ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境をクリーニング アプリをデプロイ アプリ・アーカイブビルド ハード調達 インストールディスクIN OSインストール作業 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリ • テストはまだ必要 –アーカイブするときにコピーor設定ミスがあり得る • サーバサイド –AsCodeは以前からほぼなってる –「LAMP構成の一式インストール」など「簡易化」 が進んだ • クライアントサイド –Windowsが主なら、相変わらず手順書との戦い –ただしブラウザだけなので関連アプリインストール とクリーニングが不要に
  68. 68. Part.4 OS仮想化 がやってきた 2005年ごろ〜
  69. 69. 前からあったけど… • 「OS仮想化技術」が一般的なもの として普及 –VMWareを筆頭に •後に無料化したのも起爆剤に –OSSの仮想化技術も続く • 構成を一式で扱えるように • 境界を飛びこえて移植可能に –異種OS間 –ハードウェア・ソフトウェア間
  70. 70. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 MSクライアント・サーバ全盛期 Webアプリケーション総明記 OS仮想化の潮流 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く 俺 ESXi気に入り、テスト環境一式作る
  71. 71. むちゃむちゃ出来るな… • 構成の柔軟さがエグく出来るようなった Windows Linux Linux Windows ESXi Windows Windows Linux どちらをホストOSに しても構わない 一台に複数台OSで 「システム構成」を再現 Linux Windows Windows Virtual to Physical (V2P) Linux Windows Windows Physical to Virtual (P2V) なんでもありやな…
  72. 72. なにより 自分にとってすごかったのは… • 「環境をフリーズドライできる」こと –クリーンな環境から始められる –「開発終了した数年前のテスト環境」なども 蘇らせれる –(ソノ気になれば)本番一式を持って帰って これる
  73. 73. じゃあ インストールテスト にはどう(ry
  74. 74. クラサバ時代とWeb時代の比較 インストールディスクIN OSインストール作業 ミドル・サードのインスト アプリをデプロイ アプリ・アーカイブビルド ハード調達 インストールディスクIN OSインストール作業 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリサーバ クライアント 作業は変わらず 手動を含むが、 コンソール(実機じゃない) で出来るように クライアントとサーバを 一台ずつハード調達 せずともよくなった クリーンな状態を フリーズドライして いつでも蘇らせれるので 「環境のクリーニング」が 不要に
  75. 75. ちなみに…
  76. 76. 利用はどちらもあちらもありませんが OSSプロダクト • OS仮想化の多くのプロダクトはOSS KVM Xen VirturalBoxQEMU VMWareシリーズ Windows Virtual PC Hyper-V OpenVZ
  77. 77. Part.5 自動テスト CI/CDの普及 2010年ごろ〜
  78. 78. ここへきて • 「Devから来た技術(開発手法)」が開花 –自動テストが一般的に • テスト¥ビルドツールが発達 –「自動テストをどうまわす?」から CI(継続的インテグレーション)が生まれる • Jenkins流行る –「ビルド・デプロイ」までもループの中に入れてし まう考え方、CD(継続的デリバリー)が発表される –「UIの自動テスト」が課題になり、プロダクトが生 まれ始める • Seleniume , Friendly
  79. 79. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 MSクライアント・サーバ全盛期 Webアプリケーション総明記 OS仮想化の潮流 テスト自動化・CI/CDの台頭 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く 俺 ESXi気に入り、テスト環境一式作る 俺 自動テストは触っていた、CIサーバを探す
  80. 80. ついに インストールテスト で手付かず だった部分に AsCode(自動化) の手が
  81. 81. ソフトウェア開発の技法は強い… インストールディスクIN OSインストール作業 ミドル・サードのインスト アプリをデプロイ アプリ・アーカイブビルド ハード調達 インストールディスクIN OSインストール作業 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリサーバ クライアント ビルドツールの発達で、 アプリのビルド、 アーカイブのビルドが 確実なものに UIテストのプロダクト により、 自動テスト可能に CIサーバが 自動起動の 起点と 一連の動作を つなぐ 橋渡し 役に
  82. 82. ソフトウェア開発の技法は強い… インストールディスクIN OSインストール作業 ミドル・サードのインスト アプリをデプロイ アプリ・アーカイブビルド ハード調達 インストールディスクIN OSインストール作業 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリサーバ クライアント ビルドツールの発達で、 アプリのビルド、 アーカイブのビルドが 確実なものに UIテストのプロダクト により、 自動テスト可能に CIサーバが 自動起動の 起点と 一連の動作を つなぐ 橋渡し 役に • 一気に「自動化可能」な場所が増える –あと残すのは「物理」か…
  83. 83. Part.6 クラウドの猛威 2013年ごろ〜
  84. 84. よくわからない年表 1998年頃 2001年頃 2005年頃 MS MS以外(主にOSS) 2010年頃 2013年頃 2015年頃 MSクライアント・サーバ全盛期 Webアプリケーション総明記 OS仮想化の潮流 テスト自動化・CI/CDの台頭 クラウドの猛威 俺 VB6で猛烈にアプリ書く 俺 インストールテストとかしてる 俺 「脱MS!」をがんばる 俺 Javaサーバサイドアプリしこたま書く 俺 ESXi気に入り、テスト環境一式作る 俺 自動テストは触っていた、CIサーバを探す 俺 Jenkinsに惚れ込みCI現場で作る
  85. 85. ここへきて • 「クラウドにサーバを構築」するのが 容易かつリーズナブルな時代に –「必要な時に必要なだけ借りる」文化が根付いた –上記前提の設計パターンが生み出された • 従来「ハード」だった部分すらもソフト化 –「サーバを一台立てる」「結線する」「増設する」よ うな操作をソフトウェア化、WebのUIから可能に • 操作すべてをプログラマブルに –すべての操作をWebAPI化、操作用SDKも提供 –上記の「ハード」の操作がプログラムで書けるので いわば「ハードの自動化」が可能に
  86. 86. ついについに インストールテスト の不可侵部分 すらも…
  87. 87. これは前回までの… インストールディスクIN OSインストール作業 ミドル・サードのインスト アプリをデプロイ アプリ・アーカイブビルド ハード調達 インストールディスクIN OSインストール作業 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリサーバ クライアント
  88. 88. クラウドの導入により… クラウドインスタンス用意 ミドル・サードのインスト アプリをデプロイ アプリ・アーカイブビルド クラウドインスタンス用意 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリサーバ クライアント ハード の操作が 必要だった 部分 + OSインストール 部分が ごっそり なくなる この操作は スクリプトに より、 自動化 可能
  89. 89. クラウドの導入により… クラウドインスタンス用意 ミドル・サードのインスト アプリをデプロイ アプリ・アーカイブビルド クラウドインスタンス用意 ブラウザインストール 環境を選び 代表的業務のテスト Webアプリサーバ クライアント ハード の操作が 必要だった 部分 + OSインストール 部分が ごっそり なくなる この操作は スクリプトに より、 自動化 可能 インストールテストは ほぼすべて 「自動化可能」に!
  90. 90. Part.7 そして、今 2015年〜
  91. 91. よくわからない年表 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の自動化する
  92. 92. もうつい先日とかそういうの • みうら、最近MSにいわば「出戻って」きてます –評判聞いたり –勉強会行ったり –Windowsの自動化仕事受けたり • そこで感じるのは… ということ 隔世の感がすごい
  93. 93. なにやら • ウワサによると… –”Microsoft love Linux”前でCTOが写真とってる –VS系の言語(.NET周り)も「後発のOO」を経て円熟 期に入ってる –OSS陣営のエバンジェリスト達が集まってきてるらしい –DevOpsに力を入れている –GUIだけでなくスクリプト(AsCode)な文化が発達 –クラウド(Azure)に力入れている –Linuxで開発できる手段をいろいろ提供しだした –最近、開発者仲間から 「MS変わったらしいよ」「いいらしいよ」をよく聞く
  94. 94. なにやら • ウワサによると… –”Microsoft love Linux”前でCTOが写真とってる –VS系の言語(.NET周り)も「後発のOO」を経て円熟 期に入ってる –OSS陣営のエバンジェリスト達が集まってきてるらしい –DevOpsに力を入れている –GUIだけでなくスクリプト(AsCode)な文化が発達 –クラウド(Azure)に力入れている –Linuxで開発できる手段をいろいろ提供しだした –最近、開発者仲間から 「MS変わったらしいよ」「いいらしいよ」をよく聞く えっ? オレが出てった時に 「気に入らん」 言うたとこ、 全部変わってんちゃうん?
  95. 95. 原点に立ち返って • 総じて –「面倒臭いが、手が抜けない」 –「単純だが、時間がかかる」 て言ってた「インストールテスト」 今のMSの文化・技術でやったら どうなるんやろ?
  96. 96. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・クラウド(AWS,Azure,etc...)でインスタンス起動 ・プロビジョニングツール(PS/PS DSC)で パッケージ管理(OneGet,Chocolatey)を蹴る ・クラウドにイメージを保存 ・クラウドからOSインスタンスを起動 ・インストーラDLしてサイレントインストール ・テストPG(Friendry使用)で業務操作 アプリ・インストラビルド ・アプリはMSBuild、インストーラは InstallSheeld等でそれぞれビルド やること・使うもの 想定:Win7,C#,クラサバ 一 連 を C I サ ー バ で 起 動 、 自 動 運 転 、 通 知
  97. 97. 先ほどの作業を照らしてみると… ハード調達 インストールディスクIN OSインストール作業 ミドル・サードのインスト 環境を選び 環境をクリーニングし アプリをインストールし 代表的業務のテスト クリーン環境の退避 x ・クラウド(AWS,Azure,etc...)でインスタンス起動 ・プロビジョニングツール(PS/PS DSC)で パッケージ管理(OneGet,Chocolatey)を蹴る ・クラウドにイメージを保存 ・クラウドからOSインスタンスを起動 ・インストーラDLしてサイレントインストール ・テストPG(Friendry使用)で業務操作 アプリ・インストラビルド ・アプリはMSBuild、インストーラは InstallSheeld等でそれぞれビルド やること・使うもの 想定:Win7,C#,クラサバ 一 連 を CI サ ー バ で 起 動 、 自 動 運 転 、 通 知 (コケさえしなけりゃ) ほぼ全自動! 答えを待つだけに!
  98. 98. MS…変わったかもなぁ これからのMSには 期待しかない
  99. 99. Part.8 まとめっぽいの ※注.超主観ですよ
  100. 100. MSとOSS
  101. 101. MSとOSS • 「新規性」と「トレンド」の発生が企業からOSS に移った十数年 – 自身がOSSに注目し始めたころから「新しい技術」や「デ ファクトになるようなトレンド」は、OSS側から生まれてくる ようになったと思う – 今、SIerの業務システムの開発での道具の大多数は OSS由来のもの – MSさえ「OSSを応援する立場」になったなら、今後ますま すその流れに拍車がかかると思われる – 個人的には「MSが作るOSSプロダクト」に期待
  102. 102. OSSを 追いかける意味
  103. 103. OSSを追いかける意味 • 個人的な価値 – インターネットさえあれば、だれでも利用・習熟・改良が できる(ことが多い • みんなにチャンスがある • 最悪「根性」の出しようがある • 著名プロダクトで「プルリク通った」時のうれしさたるや – 文化が好き • これは「OSS」というより 「Unix/Linux」文化かも • 「自動化」とか好きなら… • ビジネス的な価値 – 先見の明あらば「先行者」となれる
  104. 104. はっ!そう言えば… このセッションって “DevOps系” やった気がする!
  105. 105. Devはもっと 「歌って踊れるDev」 のはず
  106. 106. Devはもっと「歌って踊れるDev」のはず • 2年前から「ずーっと引っかかってること」 オレは上の資料を2年前から 「バイブルかのごとく」何度も見てる んですが…
  107. 107. Devはもっと「歌って踊れるDev」のはず • この資料の最後にこんな「煽り」がある その定義なら、オレたちが 「Opsが出来るプログラマ」になっても ”スーパーエンジニア”名乗られへんやん!
  108. 108. は、置いといて…
  109. 109. 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」のはず こんな落ちこぼれでも いや、落ちこぼれだったからこそ (バツゲームかのごとく) 一年生の時から 「インフラのはじっこ」に触れて 仕事している… オレみたいなプログラマーは いっぱい居ると思うんです
  110. 110. Devだって (本番以外の) ”環境のお守り” している事が 多いのでは?
  111. 111. Devはもっと「歌って踊れるDev」のはず • 今、自分は 「オレ、プログラマーや!」言うてるのに、 なぜか「インフラチーム」に居るわけで… –(プログラマが”精鋭部隊”過ぎて寄してもら えないみたいですが…) • そこからながめるに… 「プログラム出来るインフラエンジニア」 より 「インフラ知ってるプログラマ」 の方が多い(気がする
  112. 112. 足らぬは「Ops」… 「Ops」が「運用」と 訳されるなら…
  113. 113. 「運用」は その現場ごとに 存在する その現場でないと わからねぇ
  114. 114. Devはもっと「歌って踊れるDev」のはず •素養は足りてる! •Developerのみなさん、 もっと「垣根を超えて」 参りましょう! –活躍の場所はあります! •Let’s DevOps!

×