読者です 読者をやめる 読者になる 読者になる

zowのプログラムな日々

日々のプログラミングとか

熱は落ち着いた・・・かな?

相変わらず喉がガラガラで鼻水もくしゃみも出てるんだけど、熱の方は落ち着いてきた。喉の炎症もなんとか喉で収まった感じ。気管支まで下りなくて良かった。と言っても油断は禁物なので、部屋の中でもマスクして過ごしてる。鼻が詰まってるのでマスクすると呼吸がつらいんだけど、喉の保護優先だ。仕方ない。

なんとかPCの前に座れるようになったので、Xamarinについて改めて調べてみた。

そもそもC#って言語はMSが作った物で、.NETってのはJavaで言うVMみたいなもん。で、MSがC#オープンソースにしたので、そのVM的な物のオープンソース実装を作ってそれがMono。そのMonoの上でC#は動くってことらしい。Monoは各プラットフォーム向けに開発されてて、MaciOSAndroidなんかで動く。この各環境向けに特化したツールを提供しているのがXamarin.Macだったりする。Monoプロジェクトは実質的にXamarin社が開発してて、元々Monoはオープンソースだったんだけども、Xamarin社が提供しているツール等は有償でクローズドだった物が、MSに買収された事でオープンソースになったらしい。つまりMac上でWinのアプリが作れたり、LinuxでWinのアプリが作れたり、もちろん逆もできたりするらしい。

かなりざっくりだけども、雰囲気的にはこんな感じだと思う。

あまりMSの環境を使うことがないので、C#とか.NETは縁遠い言語や環境だったりするんだけども、なんとなく理解したのは、MSは以前と違ってWin以外のプラットフォームとの親和性について本腰いれて上げてきてるなーって事。バルマー時代のイケイケなMSでは考えられなかった事だ。

www.youtube.com

C#Macのアプリを作ったりするにしても、どのみちCocoa固有の機能使うんだから、Cocoaについて勉強しなきゃならんのでしょ?と思ったんだが、これも各環境毎の差分を吸収したメタな物があるらしくて(それがXamarin.Formsかな?フォーマットがXAMLか?スマホ環境間の差分吸収みたいな感じだけど)それを使えば各環境間のUI差分も吸収してくれるっぽい。

重要なのは今までXamarinが作ってたツール無償化されてオープンになったことよりも、MSがこのプロジェクトに関して乗り気だということだと思う。もし今後このXamarinが提供してきた機能をどんどんオープンにして発展させていくのであれば、ある意味全プラットフォーム共通で動く、しかもJavaよりも動作が速くカオスじゃない言語がちゃんとしたソフトウェアベンダから提供されるという事だ。そうすることによって、開発者を囲い込むことでまたWin帝国を復興させようとしているんだと思う。なかなか頭がいい。

自分もそうだけど、スクリプト系の開発者はMacを使ってる率が非常に高いと思う。これはMacUNIX環境だからで、そのまま作って実行することが出来る環境(OS)だからという理由が大きい。でも開発環境もDockerとかVagrantとかが主体になってきて、githubにあげたらCIツールがテスト環境で自動テスト、みたいなのが主流の今となってはMacである必然性が薄くなってきている。更に昔のMacと違い、今のMacは開発者等のパワーユーザにとってどんどんと魅力が無くなってきている。ソフト的な話ではなく、ハード的な話だ。例えばクアッドコアのCPUはiMacの上位かMacPro以外では積んでる物が無い。ノートにしてもメモリ増設も出来ず、デスクトップ機のMacMiniでさえメモリ増設が出来ない仕様だったりする。こんなハードを誰が買うのか。漢字Talkの頃からのMacユーザの私でも次に買うべきPCが無いので、恐らく次はメイン環境を乗り換えるだろう。(WinじゃなくてLinuxにするだろうけど)。

そういう今、開発者の環境をMS陣営が言語から狙って崩してくるというのは非常に興味深い。このままC#が実権を握ったら、もしかしたら開発者は一斉にWinに乗り換えるんじゃなかろうか。もともと開発者はいい環境があればそっちに流れる。Macを使う前はIBMThinkPadを使ってる人が大半だったはずだ。またThinkPadに戻るとは思えないが、キーボードがしっかりしていてスペックもサポートもちゃんとしてるノートPCが出てきたら乗り換える人は出ると思う。

とりあえず、MSとMonoとC#が今後どういう展開を見せてくるのかは注目しておきたい。いやマジでC#勉強しよっかな。