タグ

ブックマーク / qiita.com/toRisouP (5)

  • 次世代Rx「R3」解説 - Qiita

    今回の内容 C#向けの新しいReactiveExtensions(Rx)ライブラリ「R3」について、従来のRxとの変更点を紹介します。 R3について リポジトリ R3 開発元はUniTaskやMagicOnionなどを公開しているCysharp社であり、メインの開発者はUniRxの作者でもあるneuecc氏です。 どんなライブラリか 「R3」はReactiveExtensions(Rx)を現代に合わせてより洗練した形に再定義/再実装した、C#用のライブラリです。 というのも、Rxは10年以上前に登場した概念であり、当時はまだ非同期処理に対するベストプラクティスが模索されていたタイミングでした。 そのためRxは「LINQをEventにも適用できる」という側面も持ちつつ「非同期処理にも用いることができる」という2つの側面をもった、少しややこしいライブラリとして登場しました。 そして2024年現

    次世代Rx「R3」解説 - Qiita
    lugecy
    lugecy 2024/02/18
  • Visitorパターンで型によるswitchやif判定を消す - Qiita

    今回の話 「Visitorパターン」を使ってswitch文やif文での型分岐を置き換えてみよう、という話です。C#で書いてます。 (サンプルコードはだいぶ端折ってるのであまり突っつかないで下さい) switchやif文のどこが良くないのか 「型の判定によって処理を分岐する」という実装をswitchやifで作ってしまうと、後から構造を変更した際などに問題が起きる可能性があります。 (そもそもオープンクローズド原則違反になってしまう) たとえば「型をみてデータ構造を変換する」といった場合はこの問題を踏みやすいです。 例:データ構造を1:1変換する 「RPGのキャラクター(ジョブ)」という概念があったとしましょう。 これは基底クラスであり、派生先にいくつかのジョブがあってそれぞれで独自のパラメータを保持しています。 /// キャラクターの抽象クラス public abstract class C

    Visitorパターンで型によるswitchやif判定を消す - Qiita
  • 【C#】async/awaitのキャンセル処理まとめ - Qiita

    はじめに C#におけるasync/awaitを使う上で、絶対に意識しないといけないものは「キャンセル処理」です。 正しく処理をキャンセルしないとメモリリークを起こしたり、デッドロックやデータ不整合を引き起こす可能性があります。 今回はこの「async/awaitにおけるキャンセル処理」について話します。 対象 C#におけるasync/await全般 Task/ValueTask/UniTaskすべてに共通します Unity含む C#のasyc/awaitについてイマイチ自信が持ててない人 先に「結論」 asyncメソッドはCancellationTokenを引数に取るべき await対象が引数にCancellationTokenを要求する場合は省略せずに渡すべき OperationCanceledExceptionの取り扱いを意識するべき 解説 そもそも「キャンセル」とは何を指すのか そも

    【C#】async/awaitのキャンセル処理まとめ - Qiita
  • 【Unity】Model-View-(Reactive)Presenterパターンとは何なのか - Qiita

    はじめに 今回はUnityにおける「Model-View-(Reactive)Presenterパターン」とは何なのかについて解説します。 対象読者 Unity開発者 UniRxを使うことができる UnityにおけるGUI周りの実装に困っている GUI周りの設計パターン Model-View-(Reactive)Presenterパターン(略してMV(R)Pパターン)とは、UnityにおけるGUI周りの設計パターンの一種です。 「GUI」とはいわゆる「ユーザインターフェース」のことで、ゲーム中における「画面上に表示される情報」や「メニュー」や「ボタン」といったものを指します。 (ざっくりいえば、uGUIのことだと思って下さい) GUI周りの実装手法というものはUnityに限らず、複雑になりがちな難しい部分です。 そのためいろいろな設計パターンが考案されてきました。 代表的なもので言えばMV

    【Unity】Model-View-(Reactive)Presenterパターンとは何なのか - Qiita
  • 2022年現在におけるUniRxの使いみち - Qiita

    はじめに 私が「UniRx入門」という記事を書き始めてから5年、最後に投稿してから4年が経過してしまいました。 記事を更新していなかったこの数年間で、UniRxを取り巻く環境が大きく変わってしまいました。 UniRxというライブラリ自体に特に大きな更新はないのですが、UnityのC#バージョンがアップデートされたり、UniRxよりも便利なライブラリが登場したりしました。 今回は2022年現在のUnityにおけるUniRxの立ち位置と、その使い方について解説します。 UniRxの立ち位置 現代のUniRxの状況 2017年頃の古いバージョンのUnityにおいては.NET 3.5相当のかなり貧弱なC#しか用いることができませんでした。 非同期処理にasync/awaitすら使えず、「コルーチン」で書くか「UniRx」で書くかという状況でした。 そのため、時間が関係した処理はコルーチンかUniR

    2022年現在におけるUniRxの使いみち - Qiita
  • 1