サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
ufcpp.wordpress.com
先週末はあんまり拾うところがなくて定期ポストをサボっていたら、月曜日にまとめて大量の C# Design Meeting Notes が公開されていたり。ということで、今週は週末にまとめてじゃなくてちょっとずつ。 とりあえず今日は1件だけ。 C# Design Meeting Notes for Apr 14, 2015 #2134 https://github.com/dotnet/roslyn/issues/2134 Bart De Smet(Bing チームの方。ググったら、C# Unleashed の著者で、今は Cortana がらみの仕事してるっぽい雰囲気)が来て、式ツリーの利用方法についてディスカッションをしたそうです。 要するに、 式ツリーにはいろいろ足りない C# 3.0で導入されて、C# 4.0で少し追加はあったけども、それ以降止まっている 現状の C# の言語機能に対
なんか割かしひっそりと公開されていましたが、.NET Foundation 配下で、LLVM ベースの IL コンパイラー(.NET の IL コードをネイティブ コード化)が出てきました。 プロジェクト名 LLILC。LLVM な IL Compiler で LL IL C でしょうし割かし安直なんですが、「lilac」(普通に花のライラック)と読ませるそうで読み方的には結構おしゃれ。縦棒並びすぎロシアの筆記体かよとか、L 並びすぎ呪文かよとか思ったりもしますが。 大きなイベントで発表があったわけではなく、MSDN Blogs で取り上げられるでもなく(.NET Foundation のブログ記事はあり)、LLVM Project Blog でブログ記事が上がるってあたりが何か新しい。 マイクロソフトが LLVM を使うこと自体は少し前から前兆みたいなものはあって、例えば、去年、インター
Roslyn など、オープンソースで開発されている .NET ライブラリについて、最新版の機能を試してみる方法について、そういえば説明したことないなぁとか思って、今、書いてみることに。要するに、myget サービスから、毎夜ビルド版の最新ライブラリをとってくる方法について。 最新版で何が嬉しいか Visual Studio 2015 のリリースも近づいてきて、Roslyn プロジェクトも最近は、とにかくリリースに向けた品質担保が急務になっています。Visual Studio 2015 に含めないことになった機能については、作業が止まったりしています。 C# のスクリプト利用が最たる例で、Roslyn プロジェクトの最終ゴールの1つには含まれていますが、今はまだ NuGet Gallary 上にリリースされていません。しばらく表立った動きが全くなかったんですが、最近になってようやく動き始めま
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 と共に平均年齢上がってたりして、たまーに見かけ
C# Design Meeting Notes for Mar 18, 2015 https://github.com/dotnet/roslyn/issues/1677 3/18 議事録。今回は、UserVoice (要望アンケート サイト)で、C# がらみの上位に入ってる項目について、現状の取り組み状況を説明。 とりあえず、一覧だけ抜き出し、状況のところだけ和訳。 Non-nullable reference types (すでに取組中) Non-nullary constructor constraints (CLR のサポートが必要) Support for INotifyPropertyChanged (ちょっと目的限定しすぎ。しいていうならメタプログラミング?) GPU and DirectX support (ほとんどライブラリでの仕事。言語的にサポートできるとすると、ジェネ
最近さすがにだいぶ落ち着いて来た感あり。 今週は、今月4日のミーティング議事録が issue 上に上がったくらい。 Design Notes for Mar 4, 2015 https://github.com/dotnet/roslyn/issues/1303 アジェンダは以下の通り。 InternalImplementationOnly attribute <no> Should var x = nameof(x) work? <no> Record types with serialization, data binding, etc. <keep thinking> (引き続き考える) “If I had a billion dollars…”: nullability <daunting but worth pursuing> (手ごわい。でも追及する価値ある) Internal
今週のProposals [Proposal] Add Never type and support for methods that cannot return. #1226 昔、「UnreachableAfter属性」で提案されていたもの。エラーチェックなどの際、必ず例外を投げるようなメソッドを作ることがあります。この場合、そのメソッドよりも後ろは絶対に実行されないわけですが、それをコンパイラーがわかるようにしたい(unreachableコード判定用)という要望があって、その解決策としての提案。 それが今回、属性じゃなくて、System.Neverっていう特別な型を作ってはどうかという提案が出ました。Scalaは、Nothing型で同様のことをしていて、そこからの着想だそうです。 Design Notes for Feb 11 2/11 の C# デザイン ミーティング議事録が今頃公開
割と「週刊」化している、 https://github.com/dotnet/roslyn 内の今週の動き。 Milestone: C# 7 Milestone が「C# 7 and VB 15」なものに2項目追加。 Proposal: Property-scoped fields #850 プロパティ内限定(get と set の両方で使いたいけども、その他のメンバーからは触られたくない)スコープが欲しいという話。 C# 2.0 とか 3.0 の頃から欲しいとは言われていたものの、全然入らなかった機能。当時は自動プロパティ(3.0 で入った T X { get; set; } だけでプロパティが作れるやつ)だけでも、Anders (.NET のものすごく偉い人)がなかなか Go サインを出さなかったらしいですし、時代もだいぶ変わった感が。ここ数年、Anders はご意見番的な立ち位置で、
VS 2015 CTP 6、Microsoft.CodeAnalysis.Analyzers RC 1 leave a comment » 昨日、Visual Studio 2015 の CTP 6 が出たみたいですが。 http://blogs.msdn.com/b/visualstudio/archive/2015/02/23/visual-studio-2015-ctp-6-and-team-foundation-server-2015-ctp-released.aspx まだRC(リリース候補)じゃなくてCTP(テクニカル プレビュー)なんですねぇ。 一方で、Microsoft.CodeAnalysis.Analyzers (Roslyn の NuGet パッケージ配布)は RC1 になりました。Visual Studio 2015 CTP 6 の Roslyn (要するに、CTP
まだ pull-req 通ってないんですが、Roslyn リポジトリ上にこんなものが。 https://github.com/dotnet/roslyn/pull/536 コンパイラー仕様のドキュメント化、始めました。 “コンパイラー仕様” コンパイラーを作っていると、標準化されている言語仕様では不十分な仕様ってものがどうしても出てきます。C# コンパイラーにもいくつかそういうものがあるんですが、「オープン化したんだからそういう隠れ仕様もドキュメント化しないとダメだよね」という感じで、その手始めに、コンパイラーチームの内部 OneNote で書かれていた仕様を .md 化してリポジトリに追加しようとしているみたい。pull-req が通った暁には、/docs/compilers フォルダー以下にこういう “コンパイラー仕様” が並びます。 具体的にどういうものをドキュメント化しようとしてい
前回でひと段落したC# 7提案関連の話、一応リンクまとめておきますか。 C# Design Notes / デザイン プロセスについて C# Design Notes / テーマ C# Design Notes 1/28版 C# 7に向けて(1): 変数やフィールドの書き換え C# 7に向けて(2): 性能と信頼性 C# 7に向けて(3): その他 C# 7に向けて(4): C# 6に漏れた分 C# 7に向けて(5): Record types C# 7に向けて(6): Pattern matching C# 7に向けて(7): まだ具体案の見えていないもの C# 7に向けて(8): Tuples C# Design Notes 2/4版 C# 7に向けて(9): Method Contracts そして今後は週1程度で個人的に興味持ったものをピックアップしていこうかなぁという感じなわけで
今 issue ページができてて大きめのものはこれが最後のはず。Method Contracts。メソッドに対する「契約」。 Proposal: Method Contracts #119 結構長かった… 結局、全9回に。今後は、「週刊ブログ」程度でよくなるはず。きっと。 契約プログラミング そもそも「contracts」とは何か的な話は、昔書いたスライド貼って済まそう。 (補足: このスライドでは非null制約を例に挙げて説明していますが、非null制約は契約でやるよりも、「非null参照型」を作る方がいいと思います。C# 7向けの提案の中にはこの「非null参照型」も含まれています。) 一応、.NET 4の頃から、ライブラリとツールでのサポートはありました。 This file contains bidirectional Unicode text that may be interp
C# 7 Proposals な内容、あと Method Contracts だけになったと一息ついたところで、新しい Issue ページが立つわけですが。 Tuples #347 タプル、つまり、型名を持たない構造化データ/データの一時的なグループ化の話。 これは結構気合の入った提案文章になっているので、全訳気味に紹介。 System.Tuple のおかげでタプルという言葉だけではあまり期待感が持てないかもしれませんが、C# 開発者的にインパクトのある言葉で表現すると「アセンブリをまたげる匿名型」「メソッド引数・戻り値やフィールドに使える匿名型」です。 背景 「複数の値の一時的にグループ化」が必要な最もよくある例は、メソッドの引数リストでしょう。C# をはじめ、多くのプログラミング言語がこれをサポートしています。要するに、複数の引数を持つメソッドには、F(1, “abc”) というように
先日の続き、C# 7の目玉になるであろう機能、pattern matching と record types Proposal: Pattern matching and record types #206 の片割れ、pattern matching の話。 昨日の record types (もう、自分が書くクラスの7割くらいは record types で書くことになりそうな勢い)と比べると出番は少ないでしょうが、なかなかに便利そうな機能です。 マッチング構文 以下のような感じで、オブジェクトの型や値のマッチングを、再帰的に行う構文が追加されます。 定数マッチング x is 1 定数との比較 下記の 型マッチング x is T t x が特定の型 T の時にマッチ その時、x を T にキャストしたものが t に入る プロパティ マッチング x is T { X is int , Y
現時点ではC# 7の目玉になるであろう機能として、pattern matching と record types があります。 Proposal: Pattern matching and record types #206 C# 6の機能提案の段階で出てきてはいたものの、期間的な問題で「7送り」になりました。当時と比べて、record types の書き方が少し変わっています。 長くなりそうなので、record types と pattern matching の説明は2回に分けようかと思います。今日は record types の話。 最小限の例 値の書き替えってどのくらいの頻度でやりますか? 僕の場合だと、自分が書くクラスの半分以上は書き換え不能(先日書いた内容で言うところの immutable)に作っています(参考:C# 7に向けて(1): 変数やフィールドの書き換え)。「めんどく
元々、C# 6として(Visual Studio 2015と同じスケジュールで)入る予定だった機能のうちのいくつかは、期間的な問題でいったん仕様から外れました。そのうちいくつかは本当に単なる工数の問題で、ほぼ当時の仕様そのままに、C# 7に入りそうです。そういった類の機能に関する話も、今日、GitHub 上の issue 化されました。 Proposal: Binary literals #215 Proposal: Digit separators #216 Proposal: Declaration Expressions #254 あと、InternalImplementationOnly 属性ってのが、追加で(こちらはC# 6に間に合わせて)入りそうです。 Add support for InternalImplementationOnly attribute #220 もう1個、
C# 7の提案のうちいくつかを見た瞬間、思ったのは「C++ 11みたい」でした。 まあ、背景には、年々C#の適用範囲が広がっていること、そして、オープンソース化に伴って今後はさらに広がるであろうことがあります。 ゲーム開発の標準言語と言えばC# その広がった先の1つはゲーム開発でしょう。「ゲーム開発の標準言語と言えばC#」なんていう煽り(わりかしほんとに「煽り」ではあると思う。「話題にならないよりは炎上する方がマシ」くらいの覚悟の上の)もあります。まあ、割かし昔から、ゲーム開発者にもC#好きな人はいて、ゲーム会社の社内ツールなんかはC#で書かれることが結構あったみたいです。しかし、「ゲーム自体を」となると、これは割かし最近の話。「XNAがあったし(震え声)」と小声で主張もしたいところですが、実際のところ、割かし皮肉なことに、「C#でゲーム開発」が注目を浴びるようになったのはUnityのおか
プログラムを書くときに、「値が書き変わらないことの保証」(不変性)がほしいことは結構あります。 C# だと、現状(6も含めて)では、const 修飾と、フィールドに対する readonly 修飾くらいしかなくて不便に思うことがありました。 もちろん課題があるからこそのこの現状なんですが、C# 7では、「less ambitious」(野心を抑えて。妥協的)でも、もう少し不変性の保証を増やそうという提案がされています。 Proposal: ‘readonly’ for Locals and Parameters #115 Proposal: Immutable Types #159 readonly は「浅い」不変性 「変数や引数にもreadonlyを付けれるようにしてくれ」という要望は昔からあるものの、これまでやらなかった理由は単純で、そこまで有用でもないから。有用は有用だと思うんですけど
一昨日(C# Design Notes / デザイン プロセスについて)に引き続いて。C# 7がらみの話の続き。 一昨日はどういうプロセスでC#の仕様が決まっていくかという部分について説明(というか、全文和訳)しました。 今日は、C# 7(に向けた、6リリース後)のC#のテーマについて。C# Design Meeting Notes の 2. のところに書かれている内容の概要になります。 背景 C# 7どころか、C# 6もまだリリース前なわけですが。昨年末にC# 6の仕様はfixしてリリース準備に入ったとはいえ、7はだいぶ先の話です。これまでの周期から考えると1・2年先になるのかなぁ。 つまり、だいぶ早い時期からオープンなディスカッションをしようとしている。今ならアイディア出し放題、C#チームの出してくる案にもコメント付け放題。(こういう場、特に英語ですし、苦手な方でも、いずれ、UserV
Roslynプロジェクトで、GitHubへの移行後初の「C# Design Notes」が公開されたみたいです。 https://github.com/dotnet/roslyn/issues/98 「続に言うC# 7」(順調に行けばC# 7になるであろうもの)に関する話題も初お目見え。単に「こんな仕様を考えています」という話出はなくて、仕様決定プロセス自体をもっとオープンにしていく話や、どういうテーマを持って決めていこうとしているのかという話が含まれています。 今出ている「新機能候補」については、どうせ変わるだろうし、さらっと流す感じで。ここでは、どちらかというと、デザイン プロセスとかテーマの話を中心に軽く和訳しておこうかと。 とりあえず、デザイン プロセスに関する話を書いてたら、気が付いたら全訳してた。今日はここまで(C# 7 で取り組むテーマや、具体的な機能案の話は後日)。 以下、
http://blogs.msdn.com/b/visualstudio/archive/2015/01/16/visual-studio-2015-cpt-5-now-available.aspx Visual Studio 2015 が CTP 5 になったそうです。 CTPも5個目かー。細かくプレビュー出すなぁ。早い段階からいろいろ試せるのはありがたい話ですが。 さて、で、CTP 5 で C# コンパイラーも更新されました。 「仕様が変わること決定済みだけど、2014/11プレビューでは変更前のままなんだ」といわれ続けていた機能が、ちゃんと正式仕様どおりの実装に。 This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears
C#は、識別子に使える文字をUnicodeのカテゴリーで判別しているわけですが。「○○Letter」カテゴリーなものはおおむね識別子に使えます。 𩸽(ほっけ) Letterなのに使わしてもらえないかわいそうな文字もあるわけですが。 𠮷(U+20BB7、下の線の方が長い吉)とか、𠮟(U+ 20B9F、口偏に七の「しかる」)とか、𩸽(U+29E3D、魚の「ほっけ」)とか。いわゆる、サロゲートペア文字。char型が16ビットのC#とかJavaでは結構はまるやつ。 現状のC#は、サロゲートペアの識別子を一切認めていません。Roslynの実装でもそう。 ということで、こいつを見てくれ。 http://ideone.com/jSRfqm using System; class Program { static void Main() { var ᛊ = 2; // ルーン文字識別子。Other
※1 … 書き方によっては4.6でないと動かなくなる ※2 … 拡張メソッドの制限そのまま。拡張メソッドを2.0で動かす方法はあるので、それを使えば2.0 ※3 … 同様に、await演算子の制限。4で動かすすべあり 動かし方、補足など 前節の表で、2.0で動くとなっているものは、要は、ライブラリ依存がなくて、単純にC#コンパイラーだけの仕事で実現できる機能です。 逆に、特定のバージョンに依存しているものは、そのバージョンで追加されたクラスに依存しています。 なのに、古いバージョンの.NET Frameworkでも「動かすすべがある」というのはどういうことかというと、あるクラスに依存するといっても厳密なチェックをしているわけではなく、同じ名前・同じ機能のクラスを自前で実装すれば動きます。なので、原理的に言うと、どの機能でも.NET Framework 2.0で動かせるんですが… C#機能ご
変わらない 聞いてた方からの感想で「『変わらなくていい』なんですね(笑)」などというお言葉もいただきまして。 まあ、僕個人の意見は元々、「使いたくないやつが使う必要はない。」「LINQもvarも、使う・使わないとかで論争すること自体どうでもいい。」「でも、使いたいやつに使わせないような統制取るやつは滅びろ。」ですからね。もちろん、コードレビューなんかで「LINQ使うとこれだけシンプルになるよ」→「そっちの方がいいですね」ってような流れはあるけども、強制するものではないと思う(11ページで書いているように、privateな部分のコードはうるさく言ってもしょうがない。LINQやvarはそのprivateな部分の機能)。 選べる自由が大事。選ばせないやつは本気で滅びろ。 変えれない 開発者の声としてよく聞くのは「変えたいんですけどもなかなか大変で」ってやつです。みんなほんとは新しいもの使いたい。
Connect(); Microsoft Visual Studio vNext & Azureっていうイベントをオンライン配信しているわけですが。.NET界隈的にはかなり久々なレベルのでかい発表がありました。 MSDNブログでも、各チームがいろんな記事を公開。 Somasegar’s: Opening up Visual Studio and .NET to Every Developer, Any Application: .NET Server Core open source and cross platform, Visual Studio Community 2013 and preview of Visual Studio 2015 and .NET 2015 ScottGu: Announcing Open Source of .NET Core Framework, .N
Roslynがオープンソースになって、仕様が固まる前のディスカッションとかも見えるようになったよというのの紹介と、正式な文法をどうするか悩んでる新機能があってどういうところで悩んでいるか2例ほど挙げて説明。
先週、Visual Studio 14 CTP 3が出たわけですが、ようやくだいぶ触れました。個人的な感想としては、だいぶRoslyn (新しいC#コンパイラー、C# vNext)が安定してきたなーという感じ。なので、その辺りの話というか、Connectに報告出してたバグも結構直ってたという話。 C# vNext (いずれC# 6.0になるだろう仕様)の現状については、以下のディスカッション ページを参照。 Getting a sense of the upcoming language features in C# C# vNextは、仕様が固まっていない機能も多いし、新機能もいくつか追加されていってるし、仕様だけあるけども実装がないものもまだまだあって、バージョンアップのたびに新しい実装が追加されています。今回のCTP 3では、以下の3項目が上がっています。 The nameof op
OnDrive: http://1drv.ms/1yYjUNf 前に、Boost勉強会で話した内容の焼き直し。その時は180ページ近い資料を1時間(通常の3倍速)で話したわけですが、それを3時間かけてちゃんと話したいとか言っていたら、CLR/Hにお呼ばれしたもの。本当に3時間(というか、ちょっと時間オーバーしたんで3時間以上)話してきました。 時間があるのと求める前提知識をだいぶ緩くしたのとで、追記が結構ある。あと、5月の非同期勉強会の内容も少しマージしたのと、.NET vNextがらみの話題も足して、最終的には210ページ超。
Visual Studio 2014 CTPのプレビュー版出てた。 2013とside-by-sideで入らないとのことでちょっとさすがに触れずにいたものの、1日遅れでAzure VM Galleryに並ぶようになったんでそちらを使ってVM上で試すことに。 MSDNブログ情報 MSの各製品チームとかから一斉に情報が。 Somasegar’s blog Brian Harry’s blog Visual Studio .NET Web Development and Tools ADO.NET C# VB C++ side-by-side不可 もちろん最終的には他のバージョンのVisual Studioと共存できるようにするつもりだけども、今回は不具合が残っててできないということみたい。そのうち治るはず。 今は、そもそも別のバージョンが入っていたらインストーラーが警告出して止まる。回避方法も
次のページ
このページを最初にブックマークしてみませんか?
『++C++; // 未確認飛行 C ブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く