dotNetConf 2015 Japan with JXUG
dotNetConf 2015 Japan で登壇してきました。
OneDrive にも: https://onedrive.live.com/view.aspx?cid=5C622397E11C979D&resid=5c622397e11c979d%21224309&app=PowerPoint
祝15周年
自己紹介に、しばらく入ると思います。祝15周年。
うちのサイト、ほんとに C# が表に出たのと同じ年からやってる(2000年に発表、CTP提供)ので、C#が15周年ならうちも15周年。正確に言うと、C# のプレスリリースが出たのが6月で、うちのサイトがパブリックになったのは年末なので、半年程度のラグはあるんですが(サイト作った当初は当時在籍中の大学内ローカルだった)。
そりゃおっさんにもなるわ。
.NET 系の勉強会もやっぱり .NET と共に平均年齢上がってたりして、たまーに見かける若い人が委縮していたり(というのが今日もいらっしゃったり)しますが。今、マイクロソフト自身も、.NET も、新しい世代が新しいことやってる勢いがあるので、若い人もおっさんに負けずに紛れ込んでほしいなぁと思ったり。あと、.NET 系(も取り上げる)勉強会で言うと、プロ生とかUnity部とかはかなり若い感じするので、そういうところに行ってみるのもおすすめ。
個人的には、代替わりって結構好きでして。代替わりが好きというか、世代間断絶みたいなのが嫌いというか。.NET の偉大なる父というと Anders ですけども、応援したいのはむしろ ScottGu (Azure 系の偉い人)とか Mads (C# の偉い人)だったり。
もう1回
4/17 にも、【第9回 Sansan .NET勉強会】dotNetConf 2015を振返る とか言うのやります。
僕のやつ、今日はスライド資料見せて話すだけで、デモとか一切なかったですが。あるいは、「時間が余ったら話す」的なスライドが結構ありまして、その辺りも「やり残し」ではあります。この辺り、4/17 に話すかも!(実際のところ、ノープラン。その場の空気見て具体的にどう話すか考えようかと)
まあ、正直なところ、今、時期が大変よいので、C# 6.0とか7.0がらみはノープランでもいくらでも話すことがあったりして。ゴールデンウィークは(引きこもりとしては大変遺憾ながら帰省するついでに)大阪で ++C++とC#++について駄弁る会- #vshtc とかもやったりします。
nameof
そうそう。おまけ。
世の中には、社内で「int 派 VS System.Int32 派」とかいう派閥争いをしている会社があるそうでして。
C# 6.0 で(というか Roslyn 化で)、以下のような地味ーーな新機能も実は入っていたりします。つまり、今までは Int32派の分が悪かった。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
enum X : System.Int32 // C# 5.0 までは int としか書けなかった | |
{ | |
A, B, C, | |
} |
地味なので、僕なんかも「ああ、言われてみれば」くらいの感想だったんですけども、Int32派曰く「当然知っていたけども、言うと立場が悪くなるだけだから黙ってた」そうでして。
さて、今日のスライドで、nameof のところで特に触れなかった話題が1つ。↓これ。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var name1 = nameof(System.Int32); // OK | |
var name2 = nameof(int); // コンパイル エラー |
nameof 式の中に書けるのは識別子(変数名とかプロパティ名とか)だけで、キーワードは書けない。結果、nameof(int) はコンパイルできないわけですが。これを、件のInt32派がInt32擁護に使ったりするそうで。
いや、その理屈はおかしいだろ。
nameof はリファクタリング都合で使うものです。nameof(X) に対して、X を一斉リネームした時に、リファクタリング漏れがないように使うもの。nameof(int) って。int (キーワード)をリネームする気かよ。
まあ、そんな問題よりも、今日話せなかった nameof 式の問題として、実は以下のようなものがあったり。
nameof 式、結局、C# 6.0 ではメソッドのオーバーロードを解決できません。例えば、以下のようなコード(メソッド X のオーバーロードが2つある)を書いて、X をリネームしても、nameof(X) のところは変化させれなかったりします。nameof(X) だけではどっちのXなのか区別がつかないので。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using static System.Console; | |
public class Program | |
{ | |
static void Main() | |
{ | |
WriteLine(nameof(X)); | |
} | |
static void X(string s) { } | |
static void X(object o) { } | |
} |
コメントを残す