第42回勉強会(2015/07/28) Motion Control班 ジニアス平井氏の世界を学ぶ 第2回

このBlogでも何度かファン心満載の記事を書きましたが、ジニアス平井さんという、Microsoftで素晴らしいデモの数々を披露されている方がいらっしゃいます。

今回は、Windows女子部でいただく機会を得た、ジニアスさんのデモコードを学ぼうという勉強会、第2回めです。

.NET Framework 4.5.1を利用して書かれた数々のデモは、Windows女子部の勉強会でももちろんのこと、多くのコミュニティ勉強会や、Microsoft Technical イベントで公開されてきたものです。

今回はKinect v1によるピアノアプリのデモコードを分析。

鍵盤部分の画面表示の箇所では、椎野さんから補足説明が。

  • StackPanel(表現を積み重ねて表示させる)
  • Grid(グリッド表示でコマの場所をそれぞれ指定)
  • Canvas(左上の起点を0.0とした座標表示)

これらの表現方法では、Gridが最も精密に描画が出来るようですが、いかんせんレンダリング(描画)にパワーが要るため、環境のスペックによってはかなり読み込みに時間がかかってしまうとのこと。なるほど、表示結果のバランスだけではなく、処理速度も考慮して表現方法を選択しなくてはいけないのですね……。それがたぶん、素晴らしいというだけではなくて、見ているひとたちが皆満ち足りて、楽しく感じるデモに仕上がる一匙なのでしょう。これ、プログラムだけではなくて、生活や仕事の気遣いでも同じですね。

動く、鳴る、反応する、という出来上がったデモを見ていると、わたしにとっては、なにをどう考えて積み重ねるとこのような動作になるのか、予測もつかず気が遠くなりそうなのですが、コードの塊についてひとつひとつ、こういう意味のものをこう積み重ねている、と教えてもらってゆくと、いつも、物事の因数分解をしているような気持ちになります。

Kinect に鍵盤を表示させ(画像を描画し、鍵盤ごとの位置幅をとる)、
身体の中心から腕の座標を取り(Kinectで身体それぞれの支点を取得)、
鍵盤上の座標に腕の動作が組み合わさった時に、鍵盤に対応した音が鳴り(条件付け)……。

これらがそれぞれ、ソースコードの塊となって、シンプルに記述され、わかりやすいコメントが付けられて、「美しいコード」として目の前に出てくると、プログラムがわからないわたしも感嘆するばかりです。

ちなみに、このコード、「美しい」というのはコミュニティのメンバーの贔屓目ではありません。

VisualStudio に用意されている機能のひとつに、「コードメトリクス」というものがあります。

コード メトリックス データの操作

これは、Microsoftが数多のソースコードの状態とエラーを解析し、ひとの眼をベースにではなく、機械的に、「重複コードの有無」「コードの誤記述」など複数の条件をもとにしてコードを数値化し、コードの冗長さを判定してくれる機能です。

ジニアスさんのコードは実はすでに3本ほど、このコードメトリクスで判定をさせていただいているのですが、すべてオールグリーン。

前回ご同席された広島のコミュニティに所属されているMVPの方が、
「オールグリーンを初めて見た」
と呟かれていましたが、ヒトにも機械にも「美しい」コード、を見る機会をいただいたというだけでも、勉強になる時間でした。

Windows女子部の勉強会を振り返ると、「シンプル」で「楽しい」こと。それがすべての芯になっているのだなということがわかります。

創造するとき、そして行き詰まった時、いずれも、因数分解のように、すこしずつ紐解いて、シンプルなものに辿り着くこと。

学ぶということは、そのための方法をたくさん身に付けることなのだな、と、そんなふうに思った一日でした。

MotionControl班リーダーさん、ジニアスさん、ありがとうございました!