Cy#の河合です。今回、『UniTask』という新しいUnity用の非同期処理ライブラリを公開しました。 [GitHub – Cysharp/UniTask] 新規公開、ではありますが、実は新しいわけではなく、元々UniRxの機能として公開していたものを、分離したものとなります。併せてUniRxも更新していて、お互いに依存が一切ない独立したものになっています。 概要に関しては、以前に公開した以下のスライドで詳しく述べていますが、改めてまとめてみます。 async/awaitまでのC#/Unityの非同期処理 一般に、非同期処理はコールバックで完了後のメソッドを呼び出す形で実装できます。Unityも例外ではなく多用されていますが、 複雑な処理でネストが多重になる その際、内側の例外は外側には伝搬されない 処理順序がコードから見えなくなる といったような、いわゆるコールバック地獄に陥ります。代
この記事は Qiita C# Advent Calendar 2021 23日目の記事です。 マルチスレッドプログラミングにおける問題。 原子性 コンパイラによる命令の並び替え メモリバリアについて acquire / release acquire / releaseの取り扱いづらさ sequential consistency C#でのマルチスレッド関連操作 lock (statement) volatile (keyword) Volatile (class) Interlocked (class) Common Language Infrastructure (CLI)における volatile read/write の仕様 まとめ References この記事のお話の流れは、①マルチスレッドプログラミングで発生する問題、②それらの問題に対処するためのメモリバイアについて、③それ
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
C#使う人って全然外部プロセス呼び出して処理ってしないよね。というのは、Windowsがなんかそういうのを避ける雰囲気だから、というのもあるのですが、ともあれ実際、可能な限り避けるどころか絶対避ける、ぐらいの勢いがあります。ライブラリになってないと嫌だ、断固拒否、みたいな。しかし最近はLinuxでもばっちし動くのでそういう傾向もどうかなー、と思いつつ。 避けるというのはOSの違いというのもありそうですが、もう一つはそもそも外部プロセスの呼び出しが死ぬほど面倒くさい。ProcessとProcessStartInfoを使ってどうこうするのですが、異常に面倒くさい。理想的にはシェルで書くように一行でコマンドと引数繋げたstringを投げておしまい、と行きたいのですが、全然そうなってない。呼び出すだけでも面倒くさいうぇに、StdOutのリダイレクトとかをやると更に面倒くさい。非同期でStdOutを
変更履歴 サービス名を Visual Studio Code Online と間違えて書いていたので Visual Studio Online に修正しました。 セルフホストについて追記しました 環境のカスタマイズについての記事へのリンクを追加 本文 Microsoft Ignite 2019 のキーノート見てたらまさかの!!ということで以下のページから試してみました。 online.visualstudio.com サインインして環境を作る 開始するを選ぶとサインインする画面になります。 以下のように Azure サブスクリプションとかを選ぶようになったのですが課金は Azure いるのかなぁ???Azure サブスクリプション持ってない人がどういうフローになるのか気になる…。 環境のカスタマイズとかは VS Code のリモート開発の devcontainer.json とかで出来るみ
Microsoftは最近、「Project Verona」という旗印の下、「インフラのための安全なプログラミング」に向けた新言語の創出という目標を掲げ、人気のプログラミング言語「Rust」からのアイデアを取り入れることを明らかにして注目を集めていた。 Microsoftのリサーチャーであり、ケンブリッジ大学コンピューター研究所に在籍していたこともあるMatthew Parkinson氏は、2019年11月にProject Veronaについて初めて詳細を語り、Microsoftがこのプロジェクトを間もなくオープンソース化すると約束していた。 Microsoft Researchは今回その約束を果たし、Project VeronaをGitHub上でオープンソース化し、同プロジェクトに関するさらなる詳細と、より優れたメモリー管理とコンパートメント化、「広範囲に及ぶサンドボックス化」を通じてより
Unity C# のコードフォーマットの方法は複数ありますが、プロジェクトで一貫したコードスタイルを取り決めておくことで、チームはクリーンで読みやすく、スケーラブルなコードベースを作り上げることができます。このブログでは、独自のコードスタイルガイドを作り、それを維持するうえで使えるガイドラインと例をいくつか紹介します。 なおこの記事で紹介する内容は、Microsoft が公開している推奨事項に則ったものであることをお断りしておきます。この記事を読んだことを機会に、皆さんのチームにとって最適な方法を見つけてください。 1 つの Unity プロジェクトに何人の開発者が携わっていても、1 人の開発者によって開発されたように感じられるのが理想的です。スタイルガイドは、より一貫性のあるコードベースを作成するアプローチを一本化するための助けとなります。 できるだけ業界標準に準拠し、独自のスタイルガイ
戦国時代だったテキストエディタ界をVisual Studio Codeが天下統一しつつあるそうだ。 Stack Overflowの調査によると、Visual Studio Codeの人気は2018年の35%から2019年には51%に達し、他のエディタが越えられれなかった40%のラインをオーバーしてきたとのこと。また、記事ではVisual Studio Codeを「テキストエディタの進化の最終地点」と評価している。 エディタ戦争というと長らくEmacs vs VI (最近はvim)が語られていたが、これらの「初期のエディタ」は「コピーやペースト、アンドゥなどの機能を利用するのに独自の方法を使うなど、新たに使い始めるにはハードルが高い」と評価している。人気度もEmacsが4~5%、vimが25%程度とVisual Studio Codeには及んでいない。
We are pleased to announce that the March 2020 release of the Python Extension for Visual Studio Code is now available. You can download the Python extension from the Marketplace, or install it directly from the extension gallery in Visual Studio Code. If you already have the Python extension installed, you can also get the latest update by restarting Visual Studio Code. You can learn more about
こんにちは、アーキテクトの小林です。 前回の記事では、さまざまなプロバイダから提供される情報がフラットな KeyValue データ構造に変換され、後勝ち方式でカスケーディングされていることをご紹介しました。 今回の記事では、フラットな設定情報から階層構造を持ったクラスのプロパティに値をバインドする方法と、設定ファイルが更新されたときに自動的に設定情報を再読み込みさせる方法を紹介します。 まだ前回の記事をお読みでない方は以下をお読みください。 blog.ecbeing.tech 最初から用意されている appsettings.json 設定をバインドする さて、ASP.NET Core Web アプリケーションを新たに作成すると、appsettings.json に最初から以下の設定が用意されています。 appsettings.json { "Logging": { "LogLevel":
お題を3つ並べましたが、記事は逆順で書いていきます!というわけで、UniTask v2.2.0を出しました。改めてUniTask v2とはUnityのためのゼロアロケーションasync/awaitと非同期LINQを実現するライブラリで、とv2リリース時の解説記事を貼っつけましたが、ちょいちょい細かい改善を続けてまして、今回v2.2.0になります。 PlayerLoopへのループ挿入のカスタマイズ対応 現状のUnityはPlayerLoop上で動いていて、Unity 2020.1のリストをここに置いておきましたが、デフォルトでは120個ぐらいのループがエンジンから駆動されています。UpdateループだけでもScriptRunBehaviourUpdate, ScriptRunDelayedDynamicFrameRate, ScriptRunDelayedTasks, DirectorUpd
Cy#の河合です。去年、UniTask – Unityでasync/awaitを最高のパフォーマンスで実現するライブラリという形で紹介させていただきましたが、今回全てのコードを書き換えた新バージョンをリリースしました。 GitHub – Cysharp/UniTask UniTask v2では、コードの徹底的な書き換えにより、ほぼ全てがゼロアロケーション化しました(技術的詳細は後ほど述べます)。これによりパフォーマンスの大幅な向上を果たしているほか、新たに非同期シーケンスと、それに対応する非同期LINQが組み込まれました。その他、DOTweenやAddressableなどの外部アセットに対するawait標準対応も組み込まれ、より利便性が高まっています。 v2の前に、まず、async/await はC# 5.0から搭載されている機能で、従来コールバックの連鎖やコルーチンで処理していた非同期コ
Cy#の河合です。今回新しくオープンソースライブラリとして、マスターデータの管理用途を主眼に置いた、読み取り専用のインメモリデータベースを公開しました。 [GitHub – Cysharp/MasterMemory] 今までのゲーム開発の経験から、「省メモリ(インメモリということもあり使用メモリ量には気を使う」「高速なデータベースロード(構築に時間がかかるとゲームの起動速度に大きく影響する)」「高速な検索(ディクショナリのルックアップと同程度のクエリ)」の3点を重視して作りました。以下がベンチマークの結果となります。 MasterMemory、SQLite、LiteDB、RocksDBがインプロセス、Memcachedのみ別プロセスのマシン内通信による比較です。SQLite(ファイル読み込み型)の4700倍高速で、1クエリでのアロケーションはゼロです。また、保存時のファイルサイズも極小です
こんにちは、アーキテクトの小林です。 .NET Framework は長年に渡って多くの Windows ベースのアプリケーションの開発現場で採用されてきたものですから、.NET Core への移行は「まだまだこれから」という状態ではないかと思います。 .NET Framework のアプリケーションを .NET Core に移行しようと思ったとき、違いが大きすぎて最初に困惑するポイントが設定情報の管理方法の違いであろうかと思っています。 当社の主力製品である ecbeing も .NET Framework でつくられていますが、ecbeing は EC のパッケージ製品ですのでお客様のニーズに合わせて設定による機能のオンオフや、機能の挙動の変更が可能になっており、非常に多くの設定項目が存在します。 したがって設定情報の管理の柔軟さは ecbeing 社のエンジニアにとっては、とてもとて
2019年7月30日、Serverless Community(JP)が主催するイベント「Serverless Meetup Tokyo #12」が開催されました。世界各地で運営されているServerless Architectureやその周辺技術について情報を共有する本コミュニティ。今回は、株式会社Speeeのオフィスにて、3人のエンジニアが知見を共有しました。プレゼンテーション「Azure Serverless 2019 Summer edition」に登壇したのは、 株式会社ゼンアーキテクツの三宅和之氏。講演資料はこちら AzureのServerlessについて 三宅和之氏:私のほうから、「Azure Serverless 2019 Summer edition」ということで、AzureのServerlessについて少し全般的な話と……というのは、このコミュニティの人はあまりAzur
Get notified in your email when a new post is published to this blog We are pleased to announce that the May 2019 release of the Python Extension for Visual Studio Code is now available. You can download the Python extension from the Marketplace, or install it directly from the extension gallery in Visual Studio Code. You can learn more about Python support in Visual Studio Code in the documentati
「AWS App2Container」リリース。Javaや.NETアプリを自動的にコンテナ化してくれるコマンドラインツール Amazon Web Services(AWS)は、Javaや.NETアプリケーションをコンテナ化してくれるコマンドラインツール「AWS App2Container」をリリースしました。 Introducing AWS App2Container a new tool you can use to modernize your .NET & Java applications into containerized applications. https://t.co/rXLD0qKapu pic.twitter.com/cn68drSQTX — Amazon Web Services (@awscloud) July 1, 2020 クラウドを中心にコンテナ環境が充実
C#クックブック/プログラマー脳/電子回路、マジわからん、など、ITエンジニア向け新刊案内(2023年3月) 毎月登場する大量の新刊の中から、ITエンジニアが興味を持ちそうな書籍を選んで紹介する「ITエンジニア向け新刊案内」を今月から試験的に始めます。毎月、月初に公開予定です(ひとまず半年をめどに継続し、評判が良ければさらに続けたいと思います)。 多くのITエンジニアにとって書籍を通じた情報の入手は現在でも重要視されています。書籍選びにぜひお役立てください。 ここで紹介するのは、主に2023年2月1日から2月28日までのあいだに発刊された書籍です。これらを「技術書」「ビジネス書」「資格/教本」「その他」に分類しています。各書籍はAmazon.co.jpへのリンクが貼られています(アフィリエイトではありません)。 この新刊案内がどのように作成されたかについては記事の最後にまとめましたので、興
データアナリティクス事業本部の貞松です。 今回はデータ分析でも機械学習でもない話です。 細かい経緯はさておき、ゲーム開発におけるクライアントサイド(主にUnityを想定)だけでなく、サーバーサイドまで一貫してC#で開発することを想定した場合の知見を蓄積する為の社内タスクフォースが発足しました。 その活動の一環でCysharpの河合様とコンタクトを取らせていただき、ゲームサーバーに関する勉強会を実施していただくことになりました。 本記事は、上記勉強会のまとめ的な内容と個人的に重要だと感じたポイント、またゲームサーバーの開発を加速するCysharp製のライブラリについて記載します。 2020.9.16更新 : 当日のスライドをシェアいただいたので追加しました! 株式会社Cysharpについて 今回の勉強会で講師をしていただきました河合様が代表取締役を務められているCysharpのコーポーレート
えーあーー みなさん聞こえますでしょうか。この記事はC# アドベントカレンダー17日めのために書かれました。 いくつかみかけた、async/await と java loom/goroutine的なものを比較する議論に興味があり、少し追ってみた感想です。実装まで深く調べられてません。 TL;DR Green Thread Experiment Results #2398 .NET の runtimelabにて、async/awaitの代替としてのグリーンスレッドを検証した結果が公開されていたが、今後も async/await でいくという結論になっている。 JVM (Java) は対象的に、コードの書き方をなにも変えなくてもランタイムが自動的にI/Oを非同期にしてくれる夢のVirtual Thread を導入した。 Rust界隈では「Why async/await ? why? why?
Microsoftが「ML.NET 1.5.2」を公開、.NET開発者向け機械学習フレームワーク:ONNXエクスポートなどの機能も強化 Microsoftは、.NET開発者向けのオープンソース機械学習(ML)フレームワークの最新版「ML.NET 1.5.2」を公開した。Model Builderツールで「Azure ML」を使ってオブジェクト検出モデルをトレーニングできるようになった他、ML.NET CLIで画像分類モデルをローカルでトレーニングすることも可能になった。 Microsoftは2020年9月25日(米国時間)、オープンソースの.NET開発者向けクロスプラットフォーム機械学習(ML)フレームワークの最新版「ML.NET 1.5.2」を公開した。 ML.NETでは、.NETエコシステムから離れることなく、MLやデータサイエンスの経験が乏しい開発者でも、.NETアプリケーションにM
async/await、聞いたことはあるけどなんだか難しそう。と思って使ってなかったりしませんか? これに対する自分の答えは、「難しい使い方で使うと難しい。」 逆に言えば、簡単な使いみちで使う分にはめっちゃ簡単なんですよ。 なので早速今から簡単な使い方を紹介していきます。 どこで使えるか ズバリ、「状態の制御」。 ゲームを作る上では必須ですが、状態を扱うサンプルコードって意外と少ないんですよね。 状態というのは例えば、「タイトル画面」「インゲーム画面」「リザルト画面」みたいな画面だとか、 RPGなら「マップを歩いている」「村人と会話している」など。 後は「ロード中」なんかも状態と言えますね。 このスライドにおける素直で読みやすいコードとは 色んな思想があるとは思いますが、このスライドにおいて自分が考えている素直で読みやすいコードとは、 「同じ抽象レベルの状態の制御が同じ場所で行われている」
Building new functionality, writing unit tests, and learning new technologies has never been easier or more fun. Today we are announcing the retirement of the Visual Studio for Mac IDE. Visual Studio for Mac 17.6 will continue to be supported for another 12 months, until August 31st, 2024, with servicing updates for security issues and updated platforms from Apple. While the decision has been made
今回の内容 C#向けの新しいReactiveExtensions(Rx)ライブラリ「R3」について、従来のRxとの変更点を紹介します。 R3について リポジトリ R3 開発元はUniTaskやMagicOnionなどを公開しているCysharp社であり、メインの開発者はUniRxの作者でもあるneuecc氏です。 どんなライブラリか 「R3」はReactiveExtensions(Rx)を現代に合わせてより洗練した形に再定義/再実装した、C#用のライブラリです。 というのも、Rxは10年以上前に登場した概念であり、当時はまだ非同期処理に対するベストプラクティスが模索されていたタイミングでした。 そのためRxは「LINQをEventにも適用できる」という側面も持ちつつ「非同期処理にも用いることができる」という2つの側面をもった、少しややこしいライブラリとして登場しました。 そして2024年現
※1JVMオプションを下記のように変更しました。 -Xms2048m -Xmx4096m 変更方法は下記サイト(2021年5月11日時点)を参考しました。 https://pleiades.io/help/idea/tuning-the-ide.html#common-jvm-options VSCodeの起動が早いことが確認できました。 しかしIntelliJ IDEAでもJVMオプション変更後はまぁまぁ早いので、これでも良いかなと感じました。 Java環境作成 VSCodeでJava環境を作成するにあたっては公式サイトやググってもらうといっぱい出てきます。 僕が試した2021年5月時点では下記のようにしました。 拡張機能のインストール Javaとビルドツール(Gradle)に関する拡張機能をインストールしました。 Java Extension Pack・・・必要な拡張機能を全て入れてく
TL;DR .NET Core(2.2)上で倍精度浮動小数点を使った演算を行うと、同じ順序で計算させても環境によって計算結果がズレるから、比較するときとか注意すべきではないかと考える1。 実際やったこと 実行したテストの内容は以下の通り [-90°,+90°]の区間を1°につき128分割してその弧度を計算した。 予め計算されている上記に対応した弧度を元にして、sin,cos,tan及び、sin/cosを標準のSystem.Mathを使い計算した。 弧度の計算方法 弧度の計算は、以下の二種類を利用した。以下、対応するDegreesをdとする。 単純にd*(Math.Pi/180)を計算させた。 jglmを参考に倍精度浮動小数点の上位32bitを分割した上で、仮数域を拡張して、高精度計算を行った2。 実行環境一覧 今回も多数のご協力を得る事が出来た。 また、この検証を進めるに当たり、多くの方か
Version 1.89 is now available! Read about the new features and fixes from April. July 1, 2020 by Brigit Murtaugh, @BrigitMurtaugh Leveraging the power of Docker containers and the Windows Subsystem for Linux 2 (WSL 2), you can preserve your Windows environment by developing your applications in the sandboxed familiarity of a container in a deeply integrated Linux kernel. May brought us a couple of
お手軽Linux(Ubuntu) GUIアプリ開発 初級 前編 2021/4月追記 Rider .net5 でのGUI開発に移行しています UbuntuとRiderとC# GUIアプリの開発 Sqlite3の利用 Dapperの導入 Dapperについてまとめてみた Dapper Extensionの導入 Dapperの拡張ライブラリ 比較検討 Swaggerを使う Stoplight Studioなどを使う 本当に使ってよかったOpenAPI (Swagger) ツール C#からPythonを実行する C#からPythonスクリプトを呼び出す DataGridViewとModelのバインディングの実現 URL treeView Jetson Nanoへのデプロイの仕方 開発はMac上のVisualSudioMacで行います 前編は5まで Sample File プロジェクトはGtk#を
Microsoft、.NET開発者向け機械学習フレームワークの新版「ML.NET 1.2」を発表:ML.NETアプリとWebアプリを統合可能に Microsoftは、.NET開発者向けの機械学習(ML)フレームワークの最新版「ML.NET 1.2」を発表した。下位互換性を維持しながら、さまざまな改良を施した。予測と異常検知を担うパッケージや「TensorFlow」を使うためのパッケージが正式版になった。 Microsoftは2019年7月17日(米国時間)、.NET開発者向けのオープンソースのクロスプラットフォーム機械学習(ML)フレームワークの最新版「ML.NET 1.2」を発表した。 ML.NETはWindowsやLinux、macOSに対応する。AutoML(Automated Machine Learning)を利用して、カスタムMLモデルを簡単に作成するための「Model Bui
印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます 「Visual Studio 2019」の一般提供が米国時間4月2日に開始された。このリリースには、開発者の生産性向上を目的とした新機能が多数含まれている。 Microsoftは今回のリリースで、リアルタイムのコラボレーション機能やGitHub統合をVisual Studioに直接組み込んだほか、コードのリファクタリングとデバッグも簡素化し、機械学習によってインテリジェントなコード提案と検索を改善した。 Visual Studioは「Stack Overflow Developer Survey 2018」で、プログラマーがソフトウェア開発に使用する統合開発環境(IDE)の人気ランキングの2位に選出されている。 Visual Studi
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く