C#で名称を忘れやすい語句について、簡単な解説・用例とともにまとめました。 実装やコードレビューなどの場面でお役に立てば幸いです。 /// ドキュメンテーションコメント クラスやメンバーの説明を記述するのに利用する。 /// <summary> /// This class performs an important function. /// </summary> public class MyClass {}
async/awaitの鬼門の一つとして、適切なキャンセル処理が挙げられます。別に基本的にはそんな難しいことではなく、CancellationTokenSourceを作る、CanellationTokenを渡す、OperationCanceledExceptionをハンドリングする。というだけの話です。けれど、Tokenに手動でコールバックをRegisterしたときとか、渡す口が空いてないものに無理やりなんとかするときとか、タイムアウトに使った場合の始末とか、ちょっと気の利いた処理をしたいような場面もあり、そうした時にどうすれば良いのか悩むこともあります。 こういうのはパターンと対応さえ覚えてしまえばいい話でもあるので、今回はAlterNatsの実装時に直面したパターンから、「外部キャンセル・タイムアウト・大元のDispose」が複合された状況での処理の記述方法と、適切な例外処理、そして最
はじめに 私が「UniRx入門」という記事を書き始めてから5年、最後に投稿してから4年が経過してしまいました。 記事を更新していなかったこの数年間で、UniRxを取り巻く環境が大きく変わってしまいました。 UniRxというライブラリ自体に特に大きな更新はないのですが、UnityのC#バージョンがアップデートされたり、UniRxよりも便利なライブラリが登場したりしました。 今回は2022年現在のUnityにおけるUniRxの立ち位置と、その使い方について解説します。 UniRxの立ち位置 現代のUniRxの状況 2017年頃の古いバージョンのUnityにおいては.NET 3.5相当のかなり貧弱なC#しか用いることができませんでした。 非同期処理にasync/awaitすら使えず、「コルーチン」で書くか「UniRx」で書くかという状況でした。 そのため、時間が関係した処理はコルーチンかUniR
はじめに C#を使う際に、今日から使えそうなパフォーマンス改善につながる小ネタを10個まとめてみました。 BenchmarkDotnetを使ってベンチマーク測定したコードは下記においてあります。 ※他にもこんなのあるぜっていうのは是非教えて頂けると幸いです🙇♂️ 1. Capacityを設定する System.Collections.Generic に定義されているListなどのクラスはコンストラクタを呼び出す際にCapacityを設定することで無駄なアロケーションを削減できる可能性があります。 Listなどは内部に配列を持っており、Addなどの操作によってその配列サイズに収まらない要素数になった際に新しく配列を確保します。(現状の配列サイズ x 2サイズの配列を確保) 必要な要素数が明確な場合はCapacityを設定して無駄なアロケーションを避けるようにすることでパフォーマンス改善が
C#を体系的に網羅したC#プログラマのバイブルが、C# 8.0に合わせて全面改訂。言語仕様からクラウドも考慮したWebアプリ開発、デスクトップアプリ構築まで、C# 8.0の基本から高度なテクニックまでを詳しく紹介します。C# 8.0では、パターンマッチング、範囲構文、非同期メソッドの大幅拡張、null許容参照をはじめさまざまな新機能の追加と改善がされています。本書はこうした新機能もしっかりとフォロー。詳細な説明と、豊富なサンプルコードを用意し、初心者はもちろん中上級者の要望にも応える一冊です。 目次 はじめに 1章 C#の基礎 1.1 なぜC#なのか 1.2 C#の主な特徴 1.2.1 マネージコードとCLR 1.2.2 専用よりも汎用を 1.3 C#標準と実装 1.3.1 多数のMicrosoft .NET(一時的なものとして) 1.3.2 .NET Standardによる複数の.NET
CA.unityはサイバーエージェントが運営するUnityをテーマにした勉強会です。サイバーエージェントのサービス開発者と社外の開発者を交えて、Unityに関する知見を共有します。河合宜文氏からは、Cysharp社のOSSについて紹介がありました。 Cysharpのモットーは「C#の可能性を切り開いていく」河合宜文氏(以下、河合):「A quick tour of the Cysharp OSS」というテーマでCysharpの河合が話します。お願いします。 私は河合宜文と言って、Cygamesの子会社であるCysharpという会社で社長をしています。今回イベントを主催したサイバーエージェントの子どもの子どもなので、孫会社です。Cysharpはいろいろとやってはいて、目に見えるところで一番大きなものは、OSSの提供だと思っているんですが、我々は「C#の可能性を切り開いていく」というのをテーマ
C#で複数のExceptionがまとめられたAggregateExceptionを正しくハンドリングする方法についてまとめました。 AggregateExceptionとは? Flatten Handle 参考 続きを読む FlutterでRiverpodを使っているウィジェットをWidgetbookでカタログ化する方法です。 はじめに Riverpodを使ったウィジェットを作る appBuilderを使ってProviderScopeで囲う ProviderScopeのoverrideにプロバイダーのモックを設定 関連 続きを読む RiderでNuGetパッケージのキャッシュを消す方法です。 はじめに 方法 続きを読む RiderでUnityの機能を使ったDLLをビルドする方法です。 やりたいこと .NETソリューションとプロジェクトを作成 .NETプロジェクトにUnityEngineを参
こんにちは!今年の冬も暖房なしで頑張る佐藤です。 みなさん、C#(.Net)使ってますか?弊社では、主にバックエンド開発に使われていますが、Java8とかで開発してた時に感じた、いろいろな不満が解消されていて、いい言語だなあとひしひし感じています。 さて、C#の開発をする際にメジャーなエディターといえば、Visual Studio、Riderだと思います。 それらも、とても便利なエディターではあるのですが、IDEなのもあって多少スペックが必要+ライセンス契約をする必要がある=金銭のやりとりが発生する、等の理由のために、多少敷居の高さがあるんじゃないかな〜と個人的に感じています。 また、私自身が、他の言語の開発ではほぼVisual Studio Codeを使っているのもあって、VSCodeとVisual Studioを一緒に起動して開発するのもなんだかなあ… と感じていました。 そこで、11
Async in C#, .NET, and Unity: Allocation and state machine builders While helping with little something that uses Unity I came across the rabbit hole async/await support is in Unity. Historically Unity used generators (known as coroutines in Unity’s world) to support async/multiple-frames-spanning computation. In 2017 they added initial support for async/await but without any meaningful libraries
はじめに 現在進行形でC#のみを使って個人でソシャゲ作りを試しているyoship1639です。 本記事はQiita夏祭り2020「〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら」のテーマに沿った内容となっています。 近年のソーシャルゲーム界隈は多様化が進んでクライアントサイドだけではなくサーバーサイドもあらゆる言語やフレームワークが試みられていますが、クライアントもサーバーも統一の言語で構成されているのはほとんどないかと思われます。言語にはその言語の得意分野があると思うので。 しかし、今まさに私が開発中の環境が好きな言語で開発しやすいという理由でクライアントもサーバーもC#で構成した作りになっているので、どのような構成でどうすれば最低限のソシャゲの基盤が作れるかを、解説が長くなり過ぎないようにまとめることが出来ればと思います。 三部構成で、クライアント実装、サーバー実装、AWS
Cy#の河合です。今回、.NET CoreアプリケーションとUnityのために新しく「ZLogger」というロガーを公開しました。非常に高速、かつ、以前に紹介したZStringをバックエンドに持つことにより、文字列整形時のアロケーションをなくしています。主に .NET Core 向けに開発したものですが、Unity(IL2CPPやモバイル環境を含む)でも動くように調整してあります。 GitHub – Cysharp/ZLogger 特にコンテナ化において、標準出力は重要です。例えばDatadog LogsやStackdriver Loggingは、コンテナの標準出力から直接ログを収集します。Thw Twelve-Factor App – XI. Logsの項でも、標準出力への書き出しが推奨されています。そのような中で、ローカル環境用の装飾過多なログや、低速なConsole.WriteLin
JSON から C#、TypeScript、Swift、Go などの型定義を生成してくれる VS Code 拡張機能GoC#TypeScriptSwiftVSCode いつも、https://quicktype.io を使ってたのですが、VS Code 拡張機能があることにさっき気づきました。 Paste JSON as Code 例えば OpenWeather のレスポンスの JSON をクリップボードに格納してる状態で VS Code のコードパレットから Paste JSON as Code を選択すると… トップレベルの型名を入れるように言われるので適当に入れます。 そうすると、こんな感じのコードを生成してくれます。 ファイルタイプから言語を認識してくれるみたいで、上の例では .cs のファイルに対して張り付けた結果になります。試しに .swift の拡張子のファイルに貼ると以下の
先日 @okazuki さんが C# で出来ること一覧 を書いていて、とても同意だった。C# 10年以上やってきて、その成長には満足しているし、対応ソリューションやプラットフォームは凄いものがあると思っています。 しかしこの記事では、あえて C# が逆に向かないことが何かを考えてみました。 あくまで個人の見解であり、同意できないことがあることは事前に同意してきます C# Love なので、非常にバイアスがあります 他の言語そこまで知らないので、どの言語がいいという話はありません 普段 C# か Node.js で開発しているので、そもそも C# に向かないことを自分がやっていないだけというオチはあるかも Hello World までが遠い LINE イベントや外部ハッカソンなど、Microsoft の外で活動する際、C# は Hello World までの時間が Node.js や Pyt
更新履歴 2020/03/23 IoT について追記 その他に帝国兵さんのツイートを追加 サーバーレスカテゴリーを追加して AWS Lambda を追加 ASP.NET Core Razor Pages を追記 2020/03/24 kennakamu さんの「個人的に C# が向かないと思うこと」へのリンク追加 本文 昔ブログにこんな記事を書きました。 C# で何か出来るのか?まとめてみた あれから 2 年が経って昔からある Windows 専用の .NET Framework に対する新機能の提供が終わり、クロスプラットフォームに対応した .NET Core が今後のメインストリームとして .NET 5 → .NET 6 のように進化していくことが 2019 年 5 月の Build 2019 で発表されました。以下の Blog 記事がアナウンス後に発表されています。 Introduc
この記事について この記事ではC#の「ラムダ式」についてなんとなくわかったつもりになれるを目標に説明をします。 そのため多少端折ってたり、厳密じゃない説明もでてきます。ご了承ください。 もし厳密な解説を知りたい方は、次の記事がオススメです。 【LINQの前に】ラムダ式?デリゲート?Func?な人へのまとめ【知ってほしい】 この記事で出てくる用語 ラムダ式 デリゲート Action Action<T> Func<TResult> Func<T, TResult> はじめに ラムダ式って何 C#に限らず、プログラミングをしていると「ラムダ式」という用語を耳にすることがあります。 果たしてこの「ラムダ式」とは何をするためのもので、あるとどうして嬉しいのか、それぞれ解説していきます。 「その場で」関数を書ける機能がラムダ式 「ラムダ式」という名前からしてかなりいかつい印象をうける人もいるでしょう。
Help us understand the problem. What is going on with this article? みんな、プログラミングしてる? Rxがまた賑やかだなって時代なので実際UniRxを使った運用経験があるのでちょっとそのことについて書く。 UniRx?なにそれ?って方は以下の記事参考にしてください。 Qiita記事: UniRx入門 個人の感想 地獄そのものでした。 自身がLとして開発入る時は二度と採用することはないです。 UniRx自体はとても素晴らしいものですが、使うものによっては神にでも悪魔にでもなれるマジンガーZみたいな存在です。 この記事はUniRxを貶しているわけではなく、UniRxを使いこなす自信がない場合は採用を考えたほうが良いという記事です。 UniRxの良いところ シンプルにかける 可読性が上がる 制御実装が楽になる よく見かけるのはこ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く