ちょまど氏、C#への惜しみない愛を語り、C#の機能紹介ライブコーディングに挑戦!
C#が好きすぎて、2016年3月にマイクロソフトに入社したというちょまど氏。「Cが進化してC++に、そしてC++++となるかと思いきや、4つの+を略してC#となった」名前の由来に始まり、冒頭から惜しみないC#への愛を語った。
まずはC#の特徴の1つだというコードの美しさを、イベントのサンプルコードを例にして「簡単に書くことができる、すばらしい!」と、紹介した。次に「LINQ(Language-Integrated Query)」について解説。数字の配列から要件にかなう数字を抽出して加工する処理を、SQL文のようにメソッドチェーンで書き、作成した数字をConsole.WriteLineメソッドで表示するところまでを見せ、コレクションの操作を直感的に行えることをアピールした。
C#はこの2つ以外にも、多値戻り値を可能にする「タプル」や非同期処理のための「async/await」、型引数を受け取る「ジェネリクス」、匿名関数「ラムダ式」など、最近の言語が持っている機能を多く持つ。ちょまど氏は「とてもモダンな言語!」と絶賛した。
続いてちょまど氏は「C#の機能紹介ライブコーディング」をスタート。まずは、「Visual Studio 2017」のRC版を起動し、その起動と.slnファイルの展開の速さを紹介した。2017年3月7日に正式リリースされたVisual Studio 2017では、ソリューション展開やプロジェクト作成の速度がかなり向上したという。
そして、ライブコーディングでは、async/awaitとJSON.NETのサンプルとして、天気予報を取得するREST APIを叩いてJSONデータをリクエストし、自前のclassにデシリアライズしてからコンソールに表示させるデモを行った。その中でVisual Studioの便利機能である「Paste JSON As Classes」を使い、クリップボードにあるJSON生文字列を「クラスとして貼り付ける」機能も見せた(これが一番聴衆の反応が良かった)。
しかし、途中で、 会場の電波状況が混雑によりあまりに酷かったため、(JSON.NETを入れようとした時の)NuGet Package Manager(C#のパッケージ管理ツールシステム)が「読み込み中」でストップ。デモ続行不能となり、ちょまど氏は焦っていたが「私の前にセッションをして、デモ失敗した牛尾先輩がこの会場電波やばいって言ってたから、こんなこともあろうかとプランBを用意しておきました……」と、泣く泣く事前に録画しておいたビデオに切り替えていた。「本当は全部ライブでやりたかったです」
Visual Studio 2017×C#の効率性をアピール
なんとか動画でライブコーディングを再現し、ちょまど氏は“おさらい”として、ポイントを次のようにまとめた。まず、一般的な言語ではコールバック処理などが必要な非同期処理を、C#ならawaitを使い、たった1行で記すことができる。
さらに、Visual Studioでは、先ほども登場したNuGetを利用するとGUIで参照パッケージを管理できることや、C#の処理系はオープンソースで、コンパイラや中身などは全てGithub上で閲覧可能であることが解説された。
「『マイクロソフトのオレオレ言語なんじゃないの?』『Windowsでしか動きません、とかあるんじゃないの?』というように、C#については誤解も多いけれど、.NET環境があればあらゆるプラットフォームで動きます!」と、ちょまど氏は語気強く語る。そして「あらゆるプラットフォームで動くといえば、思い出す彼」としてJavaを引き合いに出した。JavaがJVM(Java仮想マシン)の上で動くことにより、結果的にあらゆる環境で動く仕組みになっているのと同じように、「C#も.NET環境の上で動くことで結果的にあらゆる環境で動くっていうのは同じ!」と解説した。
ちなみに、MacでC#を動かすには「Visual Studio for Mac」(2017年3月中旬時点ではプレビュー版)をインストールするのが一番早い。残念ながら、先ほど紹介された「JSONをclassに変換して貼り付け」などの細かい機能は未実装だ(Windows版はフル機能を搭載し、先述した通り3月7日にVisual Studio 2017が正式リリースされている)。
それでは、「C#では何ができるのだろうか?」――その問いに対して、ちょまど氏は「いろんなプラットフォームで動くアプリができます!」と元気よく答える。Windowsはもちろん、Microsoft HoloLensやWindows 10 Mobile/Windows Phoneなど、マイクロソフト製品が対象となっているのは想定内だ。さらに、開発環境「Xamarin(ザマリン)」を使えばAndroidやiOS、Macのアプリまで開発できる。