xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

C# 7 のサンプルコードを GitHub に公開しました

C#

これまで C# 7 の新機能を検証するときは何度もサンプルコードを作って / 消してを繰り返していたのですが...、ぎたぱそ先生 (@guitarrapc_tech) に「作ってくれたら僕が喜ぶ!」と言われたのもあって、約束を守るために一念発起してまとました! @guitarrap…

ラムダ形式メンバーの拡張

C#

2016/09/24 (土) の朝、Expression-Bodied Everything (= どこでもラムダっぽく) に関する Pull-Request が Roslyn の master ブランチにマージされました! C# 6 ではプロパティとメソッドの 2 箇所についてラムダ形式のメンバーを記述することができました…

throw 式

C#

2016/09/21 (水) の朝方、throw 式に関する Pull-Request が master にマージされました!これにより、これまでステートメント (文) としてのみ提供されていた throw を式として記述できるようになります。 throw 式が使えるところ パッと確認した範囲では、…

Roslyn の開発進捗が更新されました - 2016/09/21

2016/09/21 (水) の朝方、とある Pull-Request のマージにより Roslyn の開発状況/進捗 (Language Feature Status) が更新されました。でも実際に変更を加えたのは 2016/08/30 (火) っぽいので、約 1 か月前から決まっていた内容です。 Language Feature Sta…

Spy++ が見つからないときの対処方法

Windows のデスクトップアプリ (今だとクラシックデスクトップアプリって言うんでしたっけ?) 開発者にとっては必需品と言っても過言ではないレベルの神ツールである Spy++。ウィンドウハンドルやウィンドウメッセージを拾う楽しさを知ってしまうと、別プロ…

Roslyn の開発進捗が更新されました - 2016/08/04

2016/08/04 (木) の朝方、Gafter 先生の Pull-Request が master にマージされ、それにより Roslyn の開発状況/進捗 (Language Feature Status) が更新されました。 以下はその引用です。 C# 7 / Visual Basic 15 に搭載予定 Feature Branch State Address o…

任意の型を戻り値に持つ非同期メソッド

C#

これまでの非同期メソッドは void / Task / Task<T> のいずれかを戻り値にしなければならないという制約がありました。 非同期メソッドが C# 5 で導入されてから早 4 年。もはやこれを「制約」と感じることはほとんどないくらい馴染んでしまっていますが、C# 7 </t>…

サクッと簡単!Excel → PDF 変換

会社で今日こんなお願いをされました。 このフォルダ以下にある全部の Excel ファイルを PDF にしてほしい!ファイル数メッチャあるからチマチマやってられーん!Help !! ということでサクッとツールを作ってあげたわけですが、案外便利なのではないかと思っ…

C# 7 をライブコーディングで解説してきました vol.2

7/16 (土)、福井大学でソフトウェア技術者サミット in 福井 2016が開催され、そこに参加/登壇してきました。ハッシュタグは #sesfukui (Software Engineer Summit in Fukui)。 開催の運びとなったのは VSUG DAY - THE FINAL - の懇親会で僕の師匠である小島…

型分解 - タプルから変数への展開

C#

7/12 (火) の早朝、長らく検討/開発されてきた待望の Deconstructions (= 型分解) が Roslyn の master ブランチにマージされました!(型分解というのは僕のテキトーな訳で、正式名称は未定) タプル構文が複数の値をひとつにまとめる機能だったのに対し、Dec…

タスクバーのアイコン表示が壊れたときの対処方法

Windows 10 を使っていると、タスクバーに表示される Microsoft Edge などの UWP 関連アプリのアイコンの表示がおかしくなるときがあります。以下の画像で言うところの、Edge とか Store のアイコンみたいな感じです。今回はこれにハマったのでメモ。 原因と…

変数宣言式

C#

約一か月前に C# 7 の新機能についてライブコーディングをしたと思ったら、もうその情報だけでは足りていなくて焦っている今日この頃。 あれから Roslyn のリポジトリ には大きな変化がありました。 future ブランチが master ブランチにマージされた! いく…

LINQ 大好き C#er がアイドルグループ LinQ のセットリスト考えてみた

C#er といえば LINQ が大好き!もちろん LinQ も大好き!? 昔は Twitter で LINQ と呟けば LinQ のメンバーさんにフォローされたり Fav されたりしたものでした。その頃から「せっかく LinQ なんて超素敵な名前だったら LINQ を題材にしたアルバムでも作れ…

C# 7 をライブコーディングで解説してきました

ここまで数回に渡って C# 7 の新機能について解説してきました。記事は以下にまとめてありますので是非ご覧ください。 と、そんなこんなまとめていたのを「C# ユーザー会 //build/ 2016 振り返り勉強会」で解説してきました。当日の朝にクローンしてきたばっ…

型スイッチ

C#

F# などの関数型言語をやっている方にはおなじみのパターンマッチング。「10 年おせーよ!」と言われそうですが、C# 7 にもそんな待ちに待った (?) 機能が搭載されそうです。主に既存の is キーワードと switch キーワードを拡張した、型に対するマッチング…

タプル構文 - 多値戻り値のサポート

C#

C# 7 では言語機能としてタプル (複数の値をまとめる) 構文 がサポートされそうです。これまでも複数の値を簡易的にパッケージングする機能として System.Tuple<T1, T2, ...> が提供されていましたが、より可読性が高く、パフォーマンスが良くなる形になる見込みです。例</t1,>…

最新の C# コンパイラ を利用してビルド/デバッグしてみた

そんな方法はひとつしかない、リポジトリをクローンしてビルドすることだ ということでやってみましょう!ちなみにこの記事は 5/9 現在の情報を基に書いています。近い将来に変更になる可能性は多分にありますので、その点ご了承ください m( )m Step.1 - Ros…

ローカル関数の使いどころ - LINQ 拡張 -

C# 7 で搭載予定のローカル関数。その詳細は以下を参照いただくとして、どういうケースで使えそうかと考えていたら「あ、そうか LINQ だ!」と思ったので紹介します。 yield (遅延評価) の罠 と書くだけで察しの良い方はお気付きかと思いますが、yield を含…

ref 戻り値 / ref ローカル変数

C#

今回は ref 戻り値 (Ref Returns) と ref ローカル変数 (Ref Locals) について見ていきます。それぞれの機能は端的に言うと以下のようなものです。 名称 機能 Ref Returns メソッドの戻り値を参照として返す Ref Locals 値を参照として受ける C++ に嗜みがあ…

ローカル関数

C#

コードを書いていると、稀に関数の中に「そこでしか使わない関数」を作りたくなる場合があります。例えば再帰処理などはその最たるものかと思います。C# 6.0 まではデリゲートを駆使して以下のように書いていました。 static void Main() { //--- 再帰処理し…

数値セパレーター

C#

C# 6.0 までの数値リテラルでは、桁数がどれだけになっても区切り文字を入れることができませんでした。今回 C# 7 で数値セパレーター (= Digit Separators) という機能が追加され、数値リテラルを自由に桁区切りしてグルーピングできるようになりました。 …

2 進リテラル

C#

すでに当たり前のように使っている機能ですが、C# 6.0 までは整数リテラル (整数値を表記する方法) として 10 進数と 16 進数がサポートされています。10 進数はそのまま数字を並べるだけ、16 進数は数値の前に 0x / 0X の接頭辞を付けます。 var dec = 123;…

Visual Studio 15 Preview で C# 7 を試す

C#

2016/03/30、Microsoft が開催したビッグイベント //build/ 2016 に合わせて Visual Studio 15 Preview が公開されました。 Visual Studio "15" Preview Downloads 今回の //build/ では bash が Windows 上でネイティブで動いたり、Bot Framework が公開さ…

Docs.com がソースコード表示に対応しました

もはやタイトルの通りなのですが、Docs.com がソースコードにも対応しました。複数の言語に対応していて、ブログへの埋め込みもサポートしています。 サンプル 具体的には調べていないですが、結構多くの言語に対応しているようです。とりあえず C# のソース…

Azure Function で Slash Commands 作ってみた

//build/ 2016 の Day 2 キーノートで Azure Function という機能が発表されました。Amazon Web Services を使っている方には Azure 版の Lambda と言えば分かりやすいでしょうか。コードをそのまま登録しておけば Web API が実装できてしまうという、超絶カ…

Cloud Translator - Slash Commands によるお手軽翻訳 -

最近は ChatOps って素晴らしいなぁと思う日々を送っております。会社でも導入されていて bot に話しかける楽しさなんかを感じています。巷では Slack が大流行りなのでそういう体験をされている方もきっと多いと思います。 Slack の良いところは生の API を…

DependentUpon を利用した入れ子ファイル管理

継承関係にあるクラスを作るとき、1 ファイルにたくさんの派生クラスを書くか 1 クラス 1 ファイルで分割するかで悩んだ経験ありませんか?今回はそんな迷える子羊のための機能を紹介します。 1 つのファイルに実装を収める 基本は 1 クラス 1 ファイルのル…

DeclarativeSql v0.2.2 リリース

ちょうど 2 ヵ月前にリリースした DeclarativeSql v0.2 をマイナー更新し、v0.2.2 をリリースしました。最近 v0.2 系を使ってくださっている会社さんがあるとの連絡を受けまして、内心かなり嬉しく思っています :) 今回はマイナーということで機能改善がメイ…

脱・読みづらいコード!今日から一段上のプログラマーになる方法 5 選

「ソースコードを綺麗に書く」というのは、プログラマーであれば誰しもが心掛けたいと思っている極めて重要な事柄です。そもそも「綺麗なコードってなんぞ?」という感じですが、いくつかあると思います。 改行位置/空行の数/インデントなどに一貫性があり整…

30 分のライブコーディングでテトリス作った

2016/2/20 (土)、Japan ComCamp 2016 powered by MVPs という Microsoft MVP が中心となったイベントが全国一斉に開催されました。僕は例年通り北陸エリア (金沢開催) を担当していて、毎年恒例で超大好評の C# MVP によるドキドキ・ライブコーディング対決…