Sansan × gloops 「Microsoft MVP と考える C# の今とこれから 」に参加してきた

Sansan × gloops 「Microsoft MVP と考える C# の今とこれから 」 - connpass に参加してきました。 .NET 系の勉強会は初参加です。 Sansan の方と C# MVP の尾上さんとのパネルディスカッション?的な雰囲気で、参加者も一部議論に参加するという形式でした。

ハッシュタグは最初 #.netsansan でしたが、ドットを含むせいでハッシュタグとして認識されないという問題が発覚し、 #dotnetsansan に変更になったようです。

ついていけてない部分とか聞き逃した部分もありますが、折角なのでメモや感想などまとめておきます。登壇者の方と参加者の方の意見が入り混じってたり、自分の恣意的な解釈が入っている可能性もあるので注意。

var の使用について

var を使うと IDE 外でソースを見た時*1に型がわからないことがあって辛くない?という話。

  • varを使って困る、ということは、開発者間でソースコードの共有や理解が足りないのでは?
  • 型が明示されていなくても、変数名が適切であればそう困ることはないのでは?

個人的には var は使いたければどんどん使えばいい派です。少なくとも右辺がコンストラクタ呼び出しであれば使わない理由は全くないと思います。それ以外は好みかなーぐらい。

dynamic の使用について

  • C# の世界の外から来るものに対して適用するとよい
    • SQL
    • JSON
    • COM
    • Office などのオートメーション
  • リッチクライアントで簡単なものであればかなり便利に使える
  • Late Binding
  • 型なし DataSet
  • パフォーマンスはやはり悪いので、積極的には使わないほうがよい?

Generics の共変性

  • Resharper を使えば in/out をサジェスト?してくれるらしい
  • 値型には使えない
  • 反変ってどこで使うの?

共変、反変ってしばらく使わないとすぐ忘れるんですがどうしたら。

async/await について

C# 5.0 で非同期処理の記法がどえらい簡潔になりました。

  • 単なる syntax sugar であり、非同期処理の抱える問題を解決しているわけではない
  • デスクトップアプリなどで UI スレッドが固まるのを防ぐために非同期処理を使ったりするが、そもそも非同期処理はモデル内部で閉じるべき
  • ユーザーから見たレスポンス自体は別に速くなるわけではない、スレッドをスイッチする分むしろ遅くなることもあるのでは?
  • 並列処理を行う場合など、パフォーマンスに寄与する場合なら使える
  • Windows ストアアプリでは内部処理が COM だったりするので、並列処理をするつもりで実は内部的にシーケンシャルになってしまい、意味が無かったりするらしい
  • 気軽に使うな

記法が簡潔になったからって気軽にばんばん使っていいわけじゃなく、非同期処理のリスク(ロックなど)を十分に考慮して使え、ってことですかね。巷には async/await の使用を気軽に勧めるようなサイトが多いようです。

.NET 関連の OSS の動向

  • 昔の .NET は all-in-one だった
  • 今は OSS 化が進んでいるため、色々なアーキテクチャーを選べるようになった
  • MS はかつて NUnit に対する MSTest や、 Git に対する TFS など、サードパーティの技術に対していちいち別の標準技術を用意してそれを推してきた
  • 今では VS2013 で Git を標準サポートするなど、サードパーティ技術のサポートを進めている
  • Dapper いいよ

VS2013 だと Express でも Git 使えるんですね。 SVN ェ・・。

MS-PL ってどうなん

  • ほとんど MIT で微妙に違う
  • 最近はあまり使われなくなってきている?

Windows Server の運用について

  • すごく安定している
  • メモリダンプが読めるとよい

以前は Windows Server は運用面に不安があるような印象もありましたが、最近は?かなり安定して使えるようです。

バージョンアップについて

  • MS がバージョンごとの差異を結構丁寧に公開している
  • 勢いで上げてみてもいきなりおかしくなるようなことはあまりない
    • しかし長く使っていると以前はなかったような問題が発生したりすることもある
      • 調べたら実は仕様が変わっていた、とか

後方互換性というと Java がかなり気をつかっている部分ですが、 .NET も結構気をつけてるんですかね。マイグレーションはやったことがない。

おわりに

初めに書いたとおり .NET の勉強会は初参加でしたが、想像してたほど怖くなく、良い具合に刺激になりました。仕事で使うのは C# が多くなってきているわりに知識がだいぶアレなのでもうちょっと .NET 系の勉強会も参加してみたいんですが、なかなか情報をキャッチアップできてない・・。

あと会場をお貸し頂いた Sansan 株式会社さん、あそこはミーティングスペースなんでしょうか、なんか植物多かったり机と椅子がウッディな感じだったり照明がいい感じだったりとナチュラルな雰囲気でものっそいおしゃれでした。懇親会ではタダ酒やタダピザまでいただいて、いたれりつくせりでなんか申し訳ないぐらい。ありがとうございました。

名刺管理のサービスを展開されているそうです。名刺をスマフォで撮影してクラウドに乗っけて読み取ってデータ化、という感じみたいです。 CM に孤独のグルメの人が出てました。

あとこの会社さん、徳島にサテライトオフィスがあるそうですよ。凄いですね。

都内ですら自宅勤務できないこんな世の中じゃ

*1:GitHub 上でのソースコードレビューとか