はじめに 私が「UniRx入門」という記事を書き始めてから5年、最後に投稿してから4年が経過してしまいました。 記事を更新していなかったこの数年間で、UniRxを取り巻く環境が大きく変わってしまいました。 UniRxというライブラリ自体に特に大きな更新はないのですが、UnityのC#バージョンがアップデートされたり、UniRxよりも便利なライブラリが登場したりしました。 今回は2022年現在のUnityにおけるUniRxの立ち位置と、その使い方について解説します。 UniRxの立ち位置 現代のUniRxの状況 2017年頃の古いバージョンのUnityにおいては.NET 3.5相当のかなり貧弱なC#しか用いることができませんでした。 非同期処理にasync/awaitすら使えず、「コルーチン」で書くか「UniRx」で書くかという状況でした。 そのため、時間が関係した処理はコルーチンかUniR
.NET 6の現状を把握し、具体的な移行方法を学ぶ連載。初回は、.NET 6の注目すべき新機能を中心に.NET 6の統合の現状および概要、方向性について。 2021年11月9~11日、「.NET Conf 2021」が開催され、「.NET 6」もとうとうローンチされました。偶数リリースの.NET 6はLTS(long-term support)となっており、そろそろ、.NET 6での新規アプリ開発や、既存アプリにおける.NET Frameworkから.NET 6への移行を検討する方も多いことでしょう。本稿では.NET 6の注目すべき新機能を中心に.NET 6の統合の現状および概要、方向性をお伝えします。 .NETプラットフォームの統合 .NETプラットフォームの統合は、さかのぼること2年半、2019年5月6日にMicrosoftの公式ブログ「Introducing .NET 5」の中で、「
と、いうものをリリースしました。Web UIとなるDFrame.Controllerと、負荷テストシナリオをC#で書くDFrame.Workerの組み合わせで成り立っていて、DFrame.Workerをウェブ上のクラスターに配置することで(Controllerと接続するただの常駐アプリなので、配置先はオンプレでもVMでもコンテナでもKuberenetesでもなんでもいい)、1から数千のワーカーが連動して、大量のリクエストを発生させます。また、テストシナリオをプレーンなC#で記述できるということは、HTTP/1だけではなく、あらゆる種類の通信をカバーできます。WebSocket、HTTP/2、gRPC、MagicOnion、あるいはPhotonや自作のTCPトランスポート、更にはRedisやデータベースなどが対象になります。 DFrame.Workerは通常の.NETの他に、Unityにも対
待ちきれずビルドして試してみた Goで //go:embed file ってコメントに書くと、ファイルの中身が変数に入るようになったので、とてもありがたい これで、フォントの埋め込みなどはサードパーティ製のライブラリでコードを生成しなくて済む https://t.co/TL43HAziiL pic.twitter.com/0F5edNSpOJ — 鬼滅のゴリラ@無限レビュー編 (@gorilla0513) October 29, 2020 巷でとある言語がバイナリにアセットを埋め込めるようになったと話題ですが、C#でも同じようなことができそうなので共有したいと思います。 リソースを埋め込み、読み込む まずリソースを埋め込むには、プロジェクトファイル(csproj)�の<ItemGroup>内に<EmbeddedResource>で、埋め込みたいリソースを定義します。 例えば、sample.
Build native, cross-platform desktop apps that are lighter than light. Photino is a lightweight open-source framework for building native, cross-platform desktop applications with Web UI technology. Native Applications Photino enables developers to use fast, natively compiled languages like C#, C++, Java and more. Use your favorite development frameworks like .NET. Cross-Platform UI Build desktop
Blazorの生みの親が「Blazor United」発表。SPAとSSRを1つのBlazorに統合し、共通のソースコードで記述可能に C#などの.NETテクノロジーを用いてWebアプリケーションの開発を可能にするフレームワークとして登場したのがマイクロソフトの「Blazor」です。 最初はWebAssemblyを用いてWebブラウザ上に.NETランタイムを実装し、その上でRazorコンポーネントを利用可能にすることで、C#によるWebアプリケーションがWebブラウザ上で実行できる「Blazor WebAssembly」の開発がスタートしました(下図左)。 その後、サーバサイドでも同じ.NETとRazorコンポーネントを用いてWebアプリケーションを開発できる「Blazor Server」の開発も始まりました(下図右)。 この2つのフレームワークは2020年に正式版としてそれぞれリリースさ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 本記事について 本記事では、具体的な機能にフォーカスして、Azure のファーストパーティのソリューションで、Windows Server に対してどのようなセキュリティを実装できるかをご紹介していきます。 また姉妹編のLinux 版はこちらになります。 アンチマルウェア - Microsoft Defender ウイルス対策、マイクロソフトアンチマルウェア、Defender for Endpoint Windows Server 2016 以降では、標準でアンチマルウェア機能である Microsoft Defender ウイルス対策
.NET 関連の情報をほぼ週刊配信
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プロパティを追加すれば、付随するアセンブリファイルが全て一つの実行可能ファイルにまとめられる。 また、必ずネイティブバイナリ
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
昨年リリースされた.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についておさらいしておこう。 特定の言語に依存しない開発環境を目指して生
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は例外処理という機構の一部に過ぎず、我々ゲームプログラマも日常的に例外処理コードを書いているんだよという話を書いておこうと思います。 例外処理≒実
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く