.NET 関連の情報をほぼ週刊配信
.NET 関連の情報をほぼ週刊配信
3/22にdraw(tokyo);#2というオーディオビジュアルのパーティがCIRCUS TOKYOで開催されて、自分はサブフロアのオープンでAnielさんのVJとして出演した。とにかくナイスパーティで、draw crewとスタッフ、演者、CIRCUS TOKYO、お客さんに感謝。ありがとうございました。 【イベント告知】 draw(tokyo); #2 | #function_draw 🗓️2025/03/22 (土) 14時~ 🏙️CIRCUS TOKYO 🎟️前売¥4000+1D 当日¥4500+1D タイムテーブル公開!! Live coding、ジェネVJ、マシンライブ、DJを楽しめるオーディオビジュアルイベントです! ▼前売チケット&詳細はこちら▼https://t.co/6O9Zfi1aN5 pic.twitter.com/xChMKDNakI— draw(); (@f
AWS、.NETのLinuxコンテナ化を容易に。LinuxコンテナからActive Directoryにアクセスできる「Credentials Fetcher」をオープンソース化。 Amazon Web Services(AWS)の.NETオープンソースチームは、Linuxコンテナ内のサービスからActive Directoryへのアクセスを実現する「Credentials Fetcher」をオープンソースとして公開したことを発表しました。 The AWS .NET #opensource team is pleased to announce the general availability of credentials-fetcher, an open source project to help .NET and Windows developers alike access Mic
2月にブログに書きましたが、 Visual Studio 17.1 Preview 3の頃、C# 11 候補として「引数の null チェック」構文が入っていました。 m(null); // ArgumentNull 例外が出る。 void m(string x!!) { } 今現在(VS 17.2 Preview 5)でもこの構文は生きているんですが、次(たぶん、17.2正式リリースでも17.3 Preview 1でも)でいったん取りやめになるそうです。 取りやめの経緯 C# チームとしては、今、Preview リリースをしてみて反応を見てその後どうするかを決めたりしているわけですが。 LangVersion preview があるのはそのためです。 とはいえ、普通に考えて、Preview 機能まで追いかけている人がそんなに多いわけもなく、 正式リリースされるまでどんな機能が追加されてい
変数は再生モード中に変更した値は元に戻りますが、インライン(グラフ中のみで使用している値)の値は再生モードを解除しても値は変更されたままになります。 変数はドラッグ&ドロップしてグラフ上に配置出来ます。 ドラッグ&ドロップして配置した場合はGet Variableユニットになります。 ユニットユニットは処理の単位で、何らかの処理を実行する単位です。 グラフの何もない所で右クリックする事であいまい検索(ファジー検索)画面を開いて、ユニットを選択したり、検索窓に対象を絞った検索をしてユニットを選択することが出来ます。 その他ユニットのポートからドラッグして、接続できるユニットから選択することも出来ます。 ポートポートはユニットに付いている接続部分で、処理の流れを作るフローポートと値を渡すデータポートがあります。 上の例ではStartユニット(スタート時に1回実行される)からDebug Logユ
Win32 APIをアプリケーションから利用すると、Windowsを最大限に活用できる。CやC++の開発者であれば既存の仕組みを容易に利用できるものの、C#やRustのような言語からWin32 APIへアクセスするには、手動でAPIのラッパーやバインディングを作成する必要がある。この方法はエラーが起こりやすく、広範なAPIをカバーする拡張性にも欠けている。 近年では、さまざまな言語からWin32 APIを呼び出す必要性が高まっている。これを背景として、ラッパーやバインディングで強く型付けされた慣用的な表現を提供し、開発者の負担を軽減する幾つかのコミュニティープロジェクトも登場している。.NET向けの「P/Invoke」や、Rust向けの「winapi-rs」などが有名だ。 これらのプロジェクトは有望なものの、手動でメンテナンスされているため、広範なAPIを持続的にカバーするのは困難であり、
Turing株式会社のUXチームでインターンをしている東大4年の三輪です。 自動運転のUXを向上させるため、UXチームでは自動運転の「可視化」ソフトウェアの開発に取り組んでいます。 このソフトウェアはTuringが販売する車のディスプレイに搭載される予定です。AIが認識している世界をユーザにも見える形で示すことで、ユーザは自動運転AIの振る舞いをよりよく把握することができるようになります。 画面は開発中のものです 可視化ソフトウェアは、自動運転AIの出力を受け取り、解釈し、Unity上で描画します。この際、自動運転AIと可視化ソフトウェアの間の通信はgRPCで行うことになっています。しかし、Unity上でのgRPCはさまざまな事情でやや複雑な構成を取る必要があります。 この記事では、UnityでgRPCサーバを実装するステップを解説します。 gRPC gRPCはRPC(Remote Pro
ボックス化とは まず、ボックス化とは何か? ひとことで言えば、値型のデータをオブジェクト(参照型)に変換するプロセスのことです。 以下のような型変換は典型的なボックス化の例です。 ちなみに、オブジェクトから値型に変換することをボックス化の解除と言います。 「いやいやこんな型変換使わないでしょ😗」と思われるかもしれませんが、実は色々な場面で不意に起きがちです。 例えば、様々な型を受け付けるmyListという変数を宣言する際に、var myList = new List<object>();と宣言してしまうと値型のデータをaddするたびにボックス化が起きます。 多くの型を受け入れ可能で一見便利に見えるボックス化ですが、アプリケーションに悪影響を及ぼす可能性があるため、使用するかどうかは慎重に検討すべきです。ボックス化の解除も同様ですね。 なぜ悪影響が及ぶのか? ボックス化が悪影響を及ぼす理由
Microsoftがまた一つ開発した技術をひそかに終わらせようとしている。このところMicrosoftはUWP (Universal Windows Platform)に関して積極的に取り組んでいる様子がなかった。むしろ、UWPの優先度を下げるような取り組みをしばしば発表しており、いずれUWPの開発を停止して互換性維持の状態へ移行させるのではないかと見られていたが、「Windows App SDK」の開発においてその姿勢が明らかになった。 Microsoftは10月19日、「Developing for Windows with the Windows App SDK · Discussion #1615 · microsoft/WindowsAppSDK · GitHub」において、UWPが実質的に互換性維持のために提供される状態へ入り、代わりに「Windows App SDK」へ開発が
Screen Capture API 現在 Windows には画面をキャプチャする方法が 3 通りくらい用意されている。一番速いのはどれなのか?それぞれ検証してみたい。(他にも非公開の API があるらしいが、ここでは触れない) なお、記事中のソースは説明のため色々省いている。一通り動作するものはこちら。 https://github.com/i-saint/ScreenCaptureTest GDI 石器時代の API だが、今でも機能するしお手軽。 注意すべき点として、GetSystemMetrics() や GetWindowRect() を使う場合、Visual Studio 上のプロジェクトの設定、"Manifest Tool" にある "DPI Awareness" を "Per Monitor High DPI Aware" に設定しておくべきである。これを怠ると、該当 A
No trial. No credit card required. Just your GitHub account. We’re excited to release .NET 5.0 today and for you to start using it. It’s a major release — including C# 9 and F# 5 — with a broad set of new features and compelling improvements. It’s already in active use by teams at Microsoft and other companies, in production and for performance testing. Those teams are showing us great results tha
ユーザーコードでは Task/ValueTask (ジェネリック版含む) を直接返すことが可能の場合でも原則として非同期メソッドにして await することをおすすめします。 原則として、というのはこの記事で紹介するようなポイントを理解した上で最適化のために行うのは良いのですが、ユーザーコードでは落とし穴にハマるのを避けるためにほとんどのケースで素直に非同期メソッドにした方がよい、という話です。 Task/ValueTask を直接返す、返さないとは そもそも Task/ValueTask をそのまま返すコードというのはどういうものかというと、次のようなコードです。 public async Task Main() => await NantokaAsync(); public ValueTask NantokaAsync() { // 非同期を必要としない WriteAsync を呼び出
クラウドネイティブな「.NET 5」が既存の.NET Frameworkアプリにもたらすインパクト:.NET 5モダナイズ入門(1) 既存の.NET Frameworkアプリの.NET 5への移行に関する考慮事項やレガシーアプリのモダナイゼーションについて解説する連載。初回は、.NET統合の現状や.NET 5のリリースにおけるキャッチアップすべきことなどについて。 2020年11月、「.NET 5」リリース 企業向けアプリや社内システムで多く使われている「.NET Framework」。その最新版「.NET 5」が2020年11月にリリースされることをご存じでしょうか。一方、.NET Frameworkは、2019年リリースの「.NET Framework 4.8」が最終メジャーアップデートとなり、以降は新機能の追加は行われずメンテナンスのみとなることが決まっています。 しかしながら、企業
<ItemGroup> <!-- 新しく指定する場合 --> <アイテム種別 Include="[globパターン]" プロパティ名1="プロパティ値1"> <プロパティ名2>プロパティ値2</プロパティ名2> </アイテム種別> <!-- 既存のアイテムに追加したい場合 --> <アイテム種別 Update="[globパターン]" プロパティ名1="プロパティ値1> <プロパティ名2>プロパティ値2</プロパティ名2> </アイテム種別> </ItemGroup> PublishSingleFile この件について、まず挙げられるのがPublishSingleFileフラグだろう。 dotnet publishの実行時、PublishSingleFile=trueプロパティを追加すれば、付随するアセンブリファイルが全て一つの実行可能ファイルにまとめられる。 また、必ずネイティブバイナリ
昨年リリースされた.NET 6は、マイクロソフトが長らく目指してきた「すべてのアプリのための統一プラットフォーム」の1つの到達点だ。Windowsのみならず、あらゆるプラットフォームで、デスクトップやWebだけでなく、どんなアプリでも。2002年の.NET Framework 1.0のリリース以来、20年目を迎える.NETは、果たしてどこまで行き着いたのか? Visual Studio 2022(関連記事:開発生産性の向上を実感!64ビット化した「Visual Studio 2022」の魅力)に引き続きマイクロソフトコーポレーション 井上章氏、日本マイクロソフト 横井 羽衣子氏が解説してくれた。 すべての開発者に選択肢を 進化を続けてきた.NET .NET 6の話の前に、まずは.NETおよび.NET Frameworkについておさらいしておこう。 特定の言語に依存しない開発環境を目指して生
今回の記事はC#のIncremental Source Generatorについて。 C#ではSource Generatorを用いることで、コンパイル時に属性などの情報から動的にコードを生成することが可能です。これはシリアライザや通信層のライブラリなどによく使われていて、ボイラーコードの生成を自動化するのに役立ちます。また、近年ではNativeAOTへの対応から、従来ではリフレクションやIL生成で行っていた処理をSource Generatorに置き換える作業が進んでいます。 そこで今回はRoslynの基本的な部分からIncremental Source Generatorの実装までを解説していきます。ややとっつきにくさはありますが、使いこなせれば非常に強力なツールになるので、特にライブラリなどを開発する方は覚えておくと良いでしょう。 前提知識 C#の基礎的な知識 構文解析に関する基本的
Update 2023-10-02: The maintenance period for Grpc.Core has been extended again, until at least October 2024. See announcement for up to date info on Grpc.Core. Update 2022-05-03: The maintenance period for Grpc.Core has been extended until May 2023. See announcement for more info on the future of Grpc.Core. TL;DR grpc-dotnet (the Grpc.Net.Client and Grpc.AspNetCore.Server nuget packages) is now t
In previous releases of .NET Core, I’ve blogged about the significant performance improvements that found their way into the release. For each post, from .NET Core 2.0 to .NET Core 2.1 to .NET Core 3.0, I found myself having more and more to talk about. Yet interestingly, after each I also found myself wondering whether there’d be enough meaningful improvements next time to warrant another post. N
こんにちはecbeingでアーキテクトをやっている宮原です。 New Normal なコードの書き方 の第04回目、今日は「null許容参照型」について説明いたします。 null許容型 null許容参照型 null許容値型 まとめ 本記事は 息抜きC# 記事の第04回目です。 第03回目「型Switch」はこちら。 null許容型 さて、「null許容参照型」を説明する前に「null許容型」のおさらいをしておきたいと思います。 値型である int や bool は null を代入できませんが、後ろに「?」をつけると「nullを代入できる値型」を表現することが出来ます。 int i1; // int型 i1 = 0; // 整数は代入できる i1 = null; // nullは代入できない(コンパイルエラー) int? i2; // int の null許容型 i2 = 0; // 整数
導入 TwitterのTLでヤスハラユウジさんのポッドキャストが流れてきたので聞いてみました。 voicy.jp 「ゲームプログラミングでは例外処理の実装は不要なのでは?」というお題で、興味深く拝聴しました。7分弱の音源なのでみなさんも是非お聞きください。 内容について直接の意見はありません。土屋もUnityでコード書いている時にtry-catchを書く事は無いと思います。秒間60フレームで処理してる時にメモリ確保に失敗して例外が送出された時、対応しようがあるとはちょっと想像できません(例外処理してもしなくてもアプリは落ちるんじゃないかと思います)。 ただ、「try-catchを書かない事」と「例外処理をしない事」は別の話です。try-catchは例外処理という機構の一部に過ぎず、我々ゲームプログラマも日常的に例外処理コードを書いているんだよという話を書いておこうと思います。 例外処理≒実
ConsoleAppFramework v5 - ゼロオーバーヘッド・Native AOT対応のC#用CLIフレームワーク 2024-06-13 ConsoleAppFrameworkの完全に新しいバージョンをリリースしました。完全に設計しなおして実装も完全に作り直された、何もかもが新しいフレームワークになっています。設計指針として「Zero Dependency, Zero Overhead, Zero Reflection, Zero Allocation, AOT Safe」を掲げ、もちろん、他を圧倒的に引き離すパフォーマンスを実現しています。 これはコールドスタートアップ・ウォームアップなしでのベンチマークとなっていて、CLIアプリケーションでの実際での利用に最も即したものだと考えています。System.CommandLineと比較すれば280倍!メモリアロケーション量もほかのフレ
祝 .NET 6 GA アドベントカレンダー、23日の記事になります。 .NET 6 のリリースに伴い、C# の言語バージョンがついに 10.0 となりました。 C# の進化は早く、ちょっと気を抜いている隙に、見たことのない書き方のコードがどんどん出現します。 その一方で、業務の現場では、5年前10年前に書かれたソースコードを保守することも決して珍しくありません。 新しいコードでも古いコードでも、「なんだっけこれ?」という書き方がでてきたときに、同じことを従来の書き方/現在の書き方でどうやるかのリファレンスにできるよう、主要な機能・構文ごとに縦断的に整理してみました。 以下お品書きです。 プロパティ 値の参照渡し クラス・構造体・レコード コレクションと LINQ タプル 変数の文字列化 null の扱い 型推論 メンバ名の参照 非同期処理・並列処理 IDisposable と using
C#をLinuxやコンテナで動かせるようになって久しくC#をコンテナで実行している人も多いでしょう。 C#はlinuxのamd64(x86_64)とarm64の両方に対応しているので、ライブラリや実装コードに気を払えば「同一コードベースでマルチプラットフォーム動作」が可能です。 また、Visual StudioでDockerfileを自動生成できることも手伝いC#のコンテナイメージは簡単に作れます。 今回は、そんなC#のコンテナイメージをlinux/amd64・linux/arm64のマルチプラットフォームに対応させるやり方を紹介します。 構成 ベースとなるDockerfile デフォルトのDockerfileは何をしているのか 利用イメージがマルチプラットフォーム対応しているか確認する マルチプラットフォームビルドに対応する マルチプラットフォームビルドを実行する GitHub Acti
C#の特徴と将来性 はじめまして、大田一希(@okazuki)です。普段は外資系のIT企業でサポート系のエンジニアをしています。 C#は、2002年の最初のバージョンが出たときから18年間使い続けています。業務でも使用する一方、プライベートではいくつかのOSSのメンテナンスを担当しています。 ▲運営中のブログ 今回は、私の今までのキャリアをふりかえりつつ、一番好きな言語であるC#についてお話したいと思います。 最新アップデートでより直感的なコーディングが可能に C#は、バージョン9が2020年の11月に発表されます。この18年間の間に着実に進化を重ねている言語です。GitHubやStack Overflowの言語ランキングでも毎年10位以内をキープし続けています。 C#9.0ではトップレベルステートメントやレコード型などにも対応していて、データを格納するためのイミュータブルな型を定義したり
MicrosoftからIntroducing Garnet – an open-source, next-generation, faster cache-store for accelerating applications and servicesという記事が今日公開されて、Garnetという新しいインメモリデータストアがOSSとして公開されました。Microsoft ResearchでFASTERを手掛けていたチームによるもので、FASTERはC#実装の高速なキーバリューストアでした。今回のGarnetはその発展形のようなもので、FASTERベースのストレージと、Redis互換のプロトコルによる、インメモリデータストアになっています。詳しくはGarnetのほうのブログA Brief History of Garnetで。GarnetもC#で作られています。 ベンチマークによると、Re
以下のことを思います。 GetProperty は毎回取得する必要がない、 リフレクションだから遅い。 素直にName="aaa" として静的コード実行したほうが早い。 せめて式木でキャッシュしてください。 1個WebApiとかで、1個の要求として考えたらたらたいしたことないけどサーバー全体して考えて、かつ共通である程度のロジックから呼び出せれているなら早く終わるコードの方がよい。 .NET5 とか.NET 6とかでリフレクション速度改善されているなんて声も聴きベンチマークをしてみました。 ※2023/11/12 追記各Runtimeごとの性能を図ってみる。 ベンチマークコード ベンチマーク.NET を使い以下のようなコードを書きました。 [SimpleJob(RuntimeMoniker.Net481)] [SimpleJob(RuntimeMoniker.NetCoreApp31)]
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く