Microsoftの見方を変えたプロダクトたち
序章
恥の多い生涯を送って来ました。
自分には、Microsoftの提唱する世界観というものが、見当がつかなかったのです。私はLinux, Java界隈で育ちましたのでVisual Studioをはじめて見たのは、よほど大きくなってからでした。(嘘)
ポエムなので読んでも大したことは得られませんよ、と前置きしておきます。
昔話
もう20年以上も前の話なのですが、新卒時には当時流行っていたダウンサイジングの波のもとVB6で社内システムを作るお仕事をしていました。それはそれで快適な使い心地だったのですがMS製品あるあるのおせっかい(MS Wordを使えばわかるあれ)とベンダーロックイン(当時そんな言葉は知りませんでしたが)が嫌いでした。学生時代はUnix(といってもSolarisなのでこれまたある意味ベンダーものだったのですが)でどうにもMSとWindowsが狙う「全部MS製品にすれば幸せだぜ」という世界観が好きになれませんでした。
そんなこともあって何度かの転職の過程で嫌MSを強めていったわけですが2000年代というのは世間としてもブラウザ戦争IEの陣の影響でMSを嫌う人が多い、そんな時代だったと思います。それから私はLinux, Javaといった界隈を中心に生活してきたのでした。
最初の転機
皆さんも感じているようにやはりサティア・ナデラだと思います。
2016年にひょんなことからシアトルで開催されるDockercon2016に行けることになりました。Dockerといえば基本的にはLinux由来の技術ですが、Dockerconでは実に多くのMS社のセッションがありました。当時の私には知る由もなかったのですがWindowsコンテナが発表されたのは実にそのすぐ後の話でした。そんなことは良いとして、そこでほとんどのMS社員はWindowsを使っていないのです。Macを使ってプレゼンし、Linuxの解説をするという。そして挙げ句にはMS love LinuxとプリントされたTシャツを着ているのです。これは衝撃でした。
TypeScriptとVSCode
また、その頃からNode.jsを使うようになりました。JavaScript界隈に出入りするようになるとTypeScriptが目につくようになります。最初は嫌AltJS派閥だったのですが、これまたこの頃から流行りだしたVSCodeとTypeScriptの相性がめちゃくちゃよかったのです。GoogleがTypeScriptを公式に採用し、npmライブラリもTypeScriptで書かれているものが増えました。また、AWS SDK for JSもTypeScriptで書かれていることもあり、TypeScriptに触れる機会は格段に増えました。実際に書くようになるとTypeというだけあって型定義の冗長感があるのですが悪くないと思えました。
そして言わずもがなVSCodeです。今でもメインエディタになっています。
C#と.NET Core
そうしてTypeScript(Node.js)大好きっ子さんになったのですが、とあるプロジェクトのアーキテクトとしてDockerとTypeScript(Node.js)で作られたアプリをAmazon ECSで動かす構成を決めつつあったある日のことでした。大人の事情ってやつです、急にAzure上でC#でやることになったのです。青いイナズマが僕を攻めたのです。
弊社は.Net系のスキルセットの人が多く、自分とその周りが少数はではあったので、勇者になれなかった俺はしぶしぶC#する決意をしました。
当時のAzureはAWSと比較するとイマイチこなれない部分が多かった気がします。Classic(ASM)からARMの移行期だったからだと思います。あれから3年ほど経ってAzureもARMベースで完成度を高めたなと思います。
そこは置いておいて、C#です。当時ちょうど.Net Coreが2.0になりまともにLinux上で動くものになりました。Windows+Visual Studioしか選択肢のない.NET Framework 4だったら死んでも嫌だった(会社辞めたかも)のですが、実にこの.NET Core 2.0はMac, VSCodeで普通に開発できちゃいました。あれ、MSさん、これVisual Studioの売上大丈夫なんですかと心配になったほどに。そしてTypeScriptを経由したこともありC#の文法には比較的早く慣れました。むしろ過去の互換をひきずったアレな感じのJavaよりも良いんじゃね?と。そしてここで私はJavaから離れました。
Azure DevOps
Trac(懐かし、流石にもうメンテ終了したみたい)から始まりRedmine, Github, GitlabといろいろIssue Trackingを使ってきましたがAzure DevOps(もとVSTS)というのが流れ込んできました。最初は複雑すぎて涙目でしたが、このAzure DevOpsというやつ、スルメのようで実に細かいところまで設計が行き届いています。これはぜひ別の機会に書きたいと思いますが、歴代使ってきたITSのいずれよりも最終的に手に馴染みました。(習得時間はそれなりにかかったのですが)
WSL2
Windowsでの開発って大っきらいでした。yumやaptのようなパッケージマネージャーが無く(Chocolateyはありますが初っ端からつまってすぐに捨てました)開発環境構築がひどく面倒なのです。しかもNode.jsやPythonなどでちょいちょいあるGCCとかgypを使う系で謎エラーが出やすいのです。DOSコマンドもPowerShellも最悪に使いにくいのです。bash, zshとか使いたいのですがCygwinとかも結局良くハマる。SSHもOpenSSHが使いにくくputty形式とか。とにかく嫌いでした。
そこに颯爽と現れたのはWSL2でした(初代WSLはdockerが使えない時点でダメでした)。決してWindowsが好きなわけではないのですが、4年くらいデュアルブートでUbuntuを使ってみた結果として周辺機器、ゲーム、Office文書の編集などの面でWindowsが結局のところ楽だという結論に達しました(開発環境としては最底辺でしたが)。そして、WSL2を去年の春くらいから試用し、十分使えると判断して以前から最近のApple思想に反感を覚えていたMacを捨てました。
終章
というわけで嫌MS派だった私のところにいつの間にか入り込んで来たMS製品たち。かつての囲い込み感を潜めて選択の自由を与えつつ、個々の製品の出来の良さで陥落された感があります。今でも決して「MS Love」と言える感じではないのですが、口うるさい女子委員長のことを「あれ!? こいつ少し可愛いかも」と思えるようになった・・・かもしれませんね。
おしまい
Discussion