これまで ASP.NET Core には SignalR が提供されていませんでしたが、最近ようやく利用できるようになってきたということで実際に動かして試してみました。今回は、空プロジェクトから簡易チャット機能を動作させるところまでを紹介します。 以下に公式ブロ…
少し遅くなってしまいましたが...!10/28 (土) ~ 10/29 (日) にかけて仙台 IT 文化祭というイベントに参加/登壇してきました。人生初めての仙台、人生初めての東北。新しいところに踏み入れるのは不思議な緊張感があっていいものですね! ドキドキ・ライブ…
gRPC に限った話ではありませんが、ネットワークを介して送受信しているデータをダンプして目視確認したいことは頻繁にあります。このようなとき、たいてい以下のような方法が採られます。 用途 実装 個別 ダンプしたい箇所にデバッグコードを仕込む 全体 全…
アプリケーション開発においてログの出力は非常に重要です。どこで、どのようなことが起こったのかを知る手がかりになります。gRPC には標準でログを出力するための機構が備わっているので、今回はそれを使ってログ出力をしてみます。 コンソールにログを出…
gRPC でデータを送受信するにあたり、どこまでのサイズが許容されるのか。今回はそのあたりの制限と、その緩和について見ていきます。 既定の通信データ量の制限 gRPC のフレームワークは 1 度の通信で送受信できるデータ容量に制限を設けています。既定では…
HTTP/2 をベースとする gRPC にもヘッダーがあり、そこに任意のデータを含めて通信することができます。今回はそんなヘッダーをどうやって利用するのか、その方法について解説します。 ヘッダーにデータを詰めて送信する ヘッダーは Key-Value 形式となって…
HTTP/1.1 にステータスコードというレスポンスの意味を表す数値があったように、HTTP/2 をベースとする gRPC にもステータスコードがあります。これまでの解説ではレスポンスとして正常値のみを返していたので、HTTP/1.1 のステータスコードで言うところの 2…
ここまで gRPC / MagicOnion を基本的な通信方法について見てきました。しかし、送受信に利用した型はすべて Primitive 型ばかりでした。独自に定義した型で通信したいと思うのは当然!ということで、今回は独自型でサーバー / クライアント間のやり取りをす…
前回、前々回と Server Streaming 通信と Client Streaming 通信について解説してきました。今回はこれらを合わせた通信方法である Duplex Streaming 通信について見ていきます。 Step.1 - サービス定義 いつも通り、まずサーバー側で提供するサービスのイン…
前回は Server Streaming 通信について見ていきました。今回は Client 側から連続的にデータ送信を行う Client Streaming について解説していきます。 Step.1 - サービス定義 今回もまずサーバー側で提供するサービスのインターフェースを定義します。例えば…
前回は最も簡単な Unary 通信について解説しました。今回はサーバーからのプッシュ配信を行うための Server Streaming 通信について見ていきます。 Step.1 - サービス定義 まずサーバー側で提供するサービスのインターフェースを定義します。例えば以下のよ…
ここから実際に gRPC で API を作成し、クライアント/サーバー間で通信していきます。まず「gRPC / MagicOnion 入門 (2) - 4 種類の通信方式」で紹介した最も簡単な Unary 通信から見て行きます。 Step.1 - サービス定義 最初のステップでは、サーバー側にど…
今回は MagicOnion を使った API 開発を行うまでの前準備にフォーカスを当てます。主に Console / WinForms / WPF アプリなど向けです。MagicOnion は Unity にも対応していますが、これはだいぶ大変でややこしいので別途解説することにします。 基本的なプ…
gRPC は HTTP/2 の仕様に則った形で 4 種類の通信方式を提供しています。以下のドキュメントにも解説がありますが、簡単に図解します。 Unary RPCs 最もシンプルな 1 リクエスト / 1 レスポンス型の通信方法です。通常の関数コールのように扱えるため、非常…
gRPC は Google が開発している HTTP/2 ベースの RPC 通信フレームワークで、以下のような特徴を備えています。 Protocol Buffers を利用したサービス定義 多数のプラットフォーム/言語をサポート HTTP/2 ベースの高パフォーマンスなストリーミング通信 統合…
HTTP/2 をベースとした通信フレームワーク gRPC と、その高レベルラッパーである MagicOnion についての連載インデックス インデックス 概要 4 種類の通信方式 プロジェクト構造と実装の前準備 Unary 通信 Server Streaming 通信 Client Streaming 通信 Dupl…
1 年ほど前 C# 7.0 の新規のについていろいろ書いていたのですが、値の破棄 (discards) という機能について書いてなかったことに気が付きました!ということで、イマサラですが紹介します。 これまでの「値を使わない」ときの書き方 コンパイルを通すために…
4/11 から一般提供が開始された Windows 10 Creators Update。このリリースに合わせて Visual Studio 2017 も更新され、内部バージョンが 15.0 から 15.1 になりました。Visual Studio 上ではこんな感じで通知が来ます。 これをクリックして更新するだけで、…
Tokyo HoloLens Meetup vol.2 の LT で Vuforia という AR ライブラリについて話していたので、「面白そう!」と思ってチャレンジしてみています。AR マーカー的なものはまだ作ったことがなかった上に HoloLens に対応していると聞いて俄然ヤル気に! と思っ…
2017/03/25 (土) に日本マイクロソフト品川本社にて開催された Tokyo HoloLens Meetup vol.2 に参加/登壇してきました。会場に行くと日本の HoloLens ブームの凄まじさに驚くばかりです。そんな圧倒的ギーク達を前に、僭越ながら HoloLens で最もクールな花…
Unity で VR などの PC / Standalone 向けのアプリケーションを作っている場合、アプリの終了処理をしたかったら MonoBehaviour.OnApplicationQuit を使います。ですが、HoloLens などの Windows Store App (Universal Windows Platform) 向けのアプリケーシ…
数えれば今回で早 5 回目。毎年恒例、北陸の恒例イベント (?) と言っても過言ではない C# 大好き MVP による、C# ドキドキ・ライブコーディング対決 !! をやってきました。これまでは @Fujiwo / @AILight / @xin9le の 3 人でしたが、今回は @RyotaMurohosh…
以前 2 次元配列の要素をインデックス付きで 1 次元配列に落とす、というのを紹介しました。 となると、その逆もやってみたくなりませんか…?*1 拡張メソッドを作る 通常の ToDictionary メソッドはひとつのプロパティをキーにして辞書を作りますが、このキ…
ウチの CTO が毎年やっていて、「今年は僕も振り返ってみようかな」という気持ちになったので書いてみます。振り返りは大事だな、と言うことで! 単身赴任 2015 年 9 月に株式会社グラニに転職し、単身赴任生活が始まって早 1 年 3 ヵ月が過ぎました。転職し…
やってますか?スーパーマリオ ラン!僕も少し嗜む程度にはやっています。 そんなスーパーマリオランはニンテンドーアカウントとの連携ができ、連携するといろいろ良いことがあります。 セーブデータが消えても大丈夫! アイコンを Mii に設定できる 連携し…
諸事情あって Instagram の投稿の情報を取得することになりました。とりあえず API 使うなんて超メンドクサイので、個人ページに表示されている投稿の情報をスクレイピングで取り出そうと考えます。簡単に言うと、以下のサムネイル部分の情報ですね。 Instag…
先日 Japan VR Summit 2 に向けて制作し、ブース展示した Grani VR Office Tour。その開発の一環でデバッグコマンドを入れていました。要件はこんな感じ。 特殊なコマンド入力したらとある処理が発動 普段の操作ではまず入力できない難易度 覚えやすい 「そ…
というタイトルの通りなのですが、案外忘れがちです。例えば以下のような期待をしてはいけません。 //--- こんな排他制御機能付きの辞書があるとする var dic= new ConcurrentDictionary<string, int>(); //--- 値がなければ追加したいけれど... var value = dic.GetOrAdd</string,>…
今回は少し趣向を変えて (?)、僕が所属する Grani, Inc. の新たな取り組みについて紹介します!先日の CLR/H in Tokyo 第 11 回でも「one more thing...」として軽く触れたのですが、来月 11/16 (水) に開催される Japan VR Summit 2 でグラニも VR コンテ…
数年愛用しているパスワード管理ツールの 1Password。iOS や Mac 向けのアプリは非常に素晴らしく、なくてはならないアプリのひとつです。パスワードデータの同期機能があるので、Windows 環境でも (なんなら Windows 10 Mobile でも) 使いたいものです。 そ…