読者です 読者をやめる 読者になる 読者になる

xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Unity における Windows Store App のアプリケーションライフサイクル

Unity で VR などの PC / Standalone 向けのアプリケーションを作っている場合、アプリの終了処理をしたかったら MonoBehaviour.OnApplicationQuit を使います。ですが、HoloLens などの Windows Store App (Universal Windows Platform) 向けのアプリケーシ…

1 次元配列から 2 次元辞書を作ろう

以前 2 次元配列の要素をインデックス付きで 1 次元配列に落とす、というのを紹介しました。 となると、その逆もやってみたくなりませんか…?*1 拡張メソッドを作る 通常の ToDictionary メソッドはひとつのプロパティをキーにして辞書を作りますが、このキ…

ニンテンドーアカウントが Outlook.com で受信できないときの対処

やってますか?スーパーマリオ ラン!僕も少し嗜む程度にはやっています。 そんなスーパーマリオランはニンテンドーアカウントとの連携ができ、連携するといろいろ良いことがあります。 セーブデータが消えても大丈夫! アイコンを Mii に設定できる 連携し…

React ベースでもお構いなし!API を使わずに Instagram の投稿サマリーをスクレイピングで取得する

諸事情あって Instagram の投稿の情報を取得することになりました。とりあえず API 使うなんて超メンドクサイので、個人ページに表示されている投稿の情報をスクレイピングで取り出そうと考えます。簡単に言うと、以下のサムネイル部分の情報ですね。 Instag…

HTC Vive でコナミコマンド実装してみた

先日 Japan VR Summit 2 に向けて制作し、ブース展示した Grani VR Office Tour。その開発の一環でデバッグコマンドを入れていました。要件はこんな感じ。 特殊なコマンド入力したらとある処理が発動 普段の操作ではまず入力できない難易度 覚えやすい 「そ…

ConcurrentDictionary.GetOrAdd のファクトリーメソッドは排他制御されていない

というタイトルの通りなのですが、案外忘れがちです。例えば以下のような期待をしてはいけません。 //--- こんな排他制御機能付きの辞書があるとする var dic= new ConcurrentDictionary<string, int>(); //--- 値がなければ追加したいけれど... var value = dic.GetOrAdd</string,>…

1Password for Windows Store をインストールする方法

数年愛用しているパスワード管理ツールの 1Password。iOS や Mac 向けのアプリは非常に素晴らしく、なくてはならないアプリのひとつです。パスワードデータの同期機能があるので、Windows 環境でも (なんなら Windows 10 Mobile でも) 使いたいものです。 そ…

Spy++ が見つからないときの対処方法

Windows のデスクトップアプリ (今だとクラシックデスクトップアプリって言うんでしたっけ?) 開発者にとっては必需品と言っても過言ではないレベルの神ツールである Spy++。ウィンドウハンドルやウィンドウメッセージを拾う楽しさを知ってしまうと、別プロ…

サクッと簡単!Excel → PDF 変換

会社で今日こんなお願いをされました。 このフォルダ以下にある全部の Excel ファイルを PDF にしてほしい!ファイル数メッチャあるからチマチマやってられーん!Help !! ということでサクッとツールを作ってあげたわけですが、案外便利なのではないかと思っ…

タスクバーのアイコン表示が壊れたときの対処方法

Windows 10 を使っていると、タスクバーに表示される Microsoft Edge などの UWP 関連アプリのアイコンの表示がおかしくなるときがあります。以下の画像で言うところの、Edge とか Store のアイコンみたいな感じです。今回はこれにハマったのでメモ。 原因と…

最新の C# コンパイラ を利用してビルド/デバッグしてみた

そんな方法はひとつしかない、リポジトリをクローンしてビルドすることだ ということでやってみましょう!ちなみにこの記事は 5/9 現在の情報を基に書いています。近い将来に変更になる可能性は多分にありますので、その点ご了承ください m( )m Step.1 - Ros…

ローカル関数の使いどころ - LINQ 拡張 -

C# 7 で搭載予定のローカル関数。その詳細は以下を参照いただくとして、どういうケースで使えそうかと考えていたら「あ、そうか LINQ だ!」と思ったので紹介します。 yield (遅延評価) の罠 と書くだけで察しの良い方はお気付きかと思いますが、yield を含…

DependentUpon を利用した入れ子ファイル管理

継承関係にあるクラスを作るとき、1 ファイルにたくさんの派生クラスを書くか 1 クラス 1 ファイルで分割するかで悩んだ経験ありませんか?今回はそんな迷える子羊のための機能を紹介します。 1 つのファイルに実装を収める 基本は 1 クラス 1 ファイルのル…

多次元配列を LINQ で簡単に扱おう

コレクション操作と言ったら LINQ!もはやコレがないと今の時代のプログラマとしてご飯を食べていけなくなるくらい、ないと困る存在であり強い味方です。 以前インデックス付きで簡単にアクセスする方法として、Indexed 拡張メソッドを作ってしまおうという…

Null 許容型の既定値付き文字列変換

タイトルはそれっぽいですが、大したことありません。何度も作るのがめんどくさいのでメモとして残しておこうというだけのカジュアルなものです。 Null 許容型の文字列化 Web でもクライアントでもそうですが、MVVM 的な考え方をする場合に「データとしては …

Azure Web Appsで補足できなかった例外を確認する

ここ 3 ヵ月ほど Mashup Award 11 向けのサービスを作っていました。そこで相も変わらず超お手軽な Azure Web Apps を使っていたのですが、本番のデモ中にサービスがダウンするという事件が発生しました。独自に記録していたアクセスログが途切れていたので…

NuGetパッケージの取得エラーを回避する

諸事情で CocosSharp を使ってみようということになり NuGet から PCL 版の取得を試みました。 ですが、安心した顔で待っていたら以下のような大変不親切なエラーを見てガッカリ...。 私の現在の環境は Visual Studio 2015 Enterprise ですが、バージョンが …

OWINセルフホストのサービスを外部公開する

ASP.NET 5 が OWIN を互換レイヤーとしてサポートすることを決定したということで、OWIN is dead などという記事を書いたわけですが。率先して選ぶことは減ってきているのかもしれませんが、そうは言っても OWIN は (一応) 現役です。 ASP.NET 5はどうしてOW…

ClickOnceアプリケーションを外部exeから起動する

ClickOnce を使ってアプリケーションを配布している人は減っているような気がしないでもないですが、そうは言っても社内イントラネット環境などではやはり重宝します。そうするとアプリケーション連携などで ClickOnce アプリケーションを別の exe から起動…

ASP.NET MVC 6でCamel CaseなJSONを出力する

半月ほど前になりますが Visual Studio 2015 が正式にリリースされました。コードページの問題などいろいろありますが、本当にたくさんの機能追加や機能改善があります。そんな機能たちの中でも最近は特に ASP.NET 5 / MVC 6 に関心があって、サンプルとして…

SignalRのコネクション切断時に自動再接続する

リアルタイムな双方向通信を容易に実現させてくれる SignalR。その特性上、常時サーバー側とクライアント側のコネクションを張っています。定期的に ping を飛ばし合って死活監視を行い、長時間接続状態を確認できなければコネクションは切断されたものとみ…

AccessViolationExceptionを捕捉できるようにする

最近お仕事で開発している SignalR 製の Web アプリケーションが本日... を遂げるという怪奇事件が起こりました。常時接続なので落ちないように結構気を配っていたので、かなり思わぬ事態でした。何事かとイベントビューアーでログを見ていると、ODP.NET を…

Visual Studio CodeのShell拡張を一括削除する

Visual Studio Code を使っている方はどれくらいいるでしょうか?クロスプラットフォームなコードエディターとしてにわかに注目を集めるコイツですが、Windows 環境にインストールするとエクスプローラーのファイル選択時の右クリックメニューにコマンドが表…

Azure上のリソースを別リソースグループに移動する

ひとつ前の記事でも紹介しましたが、Microsoft Azure のプレビューポータルからリソースグループという概念が導入されました。そして、各リソース (= Web Apps / 仮想マシンなどのサービスひとつひとつ) は必ずどこかのリソースグループに属するようになって…

Monaco上のファイルを一括ダウンロードする

Azure Web App (旧 Azure Websites) に統合されているオンライン IDE の Visual Studio Online "Monaco"。多くの開発言語/ファイル形式をサポートし、ビルドしたり出力結果が表示できるのは当然こと、シンタックスハイライトやインテリセンスによる補完まで…

paiza.IOの実行環境を覗き見る方法4選

ブラウザだけで様々な言語のコードを即時実行できる、超便利なオンラインプログラミング環境 paiza.IO。前の記事で C# で実行環境を調査するという遊びをやっていました。 C#もOK! paiza.IOでお手軽オンラインプログラミング - xin9le.net 今回はその延長と…

using staticするとObsoleteが警告されない

Obsolete 属性、使ってますか?「もう古い API だから使わないでねー」とコンパイラ警告を出すて注意喚起するための便利属性です。以下のように利用します。 class Program { [Obsolete("NewMethod を利用してください")] public static void OldMethod(){ .…

Unicodeエスケープ文字を元に戻す

稀に出くわす Unicode 文字のエスケープシーケンス。以下のようなヤツです。 var text = @"\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c\uff01"; その文字をプログラムで戻さなければならない場合があります。今回はそんな方法のメモ。 正規表現の置換…

PHPのechoにBOMが混入するのを防ぐ

C#er な私が PHP の記事なんて書くことになるとは...。ペチパーな方には当たり前かもしれませんが、最近業務でハマったのでメモとして残します。 こんな時間まで仕事するなんて完全に負け組感ある。チキショー、PHPなんて嫌いだ。— じんぐる (@xin9le) 2015,…

PropertyGridを実行時に読み取り専用にする

みなさん PropertyGrid 使ってますか?プロパティ名と値を一覧にして閲覧/入力させてくれるコントロールです。Visual Studio のプロパティでも使われているアイツですね。Windows Forms と言えば DataGridView がすべて!みたいな風潮も多少なり (謎) ありま…

AutoMapperで特定の命名規則で変換する

WebアプリケーションやMVVMに則ったクライアントアプリケーションを作っていると、ModelとViewModelの相互変換がよく行われます。設計におけるレイヤーの違いを埋めるこの型変換ですが、基本的に同じような名前/型のプロパティが並ぶため、変換コードの実装…

Web APIでリクエスト単位のキャッシュを利用する

ASP.NET Web APIで開発している際、パフォーマンスを上げるためにリクエスト中で取得/生成した値をキャッシュして使い回したいケースがあります。特にWeb APIにはHTTP Message Handlerという機構があるので、外側のレイヤー (Handler) で共通処理として認証…

Visual Studio 14 CTPでC# vNextを試す

2014年6月3日にVisual Studio 14 CTPがリリースされました。次世代コンパイラサービスであるRoslyn、クラウド最適化や大幅なライブラリ統合が進んでいるASP.NET vNextが搭載されています。これらだけでも十分お腹いっぱいになりそうですが、我らがC#にも新し…

IIS Expressを64bitモードで動かす

Visual StudioでWebアプリ開発をするときによくお世話になるIIS Express、これは既定では32bitモードで動作します。これまでのWebアプリ開発では特に何事もなかったのですが、最近業務で以下のような環境下での開発をしていてハマりました。 Windows 7 x64 V…

Azure Web Sitesの仮想ディレクトリにWeb Deployする方法

Azure Web Sitesには仮想アプリケーション/仮想ディレクトリという機能があります。wwwrootなどのルートディレクトリでなくても (その他のサブフォルダでも) 仮想的なルートディレクトリとして認識させ、アプリケーションを動作させることができます。設定は…

CSV/TSVなどの区切り文字形式ファイルを簡単生成

CSV (Comma-Separated Values : カンマ区切り)、TSV (Tab-Separeted Values : タブ区切り)、SSV (Space-Saparated Values : 半角スペース区切り) と言った「データを特定の区切り文字で区切って並べたファイル形式」があるのはご存知の事と思います。特に表…

ASP.NET MVCでCamel CaseなJSONを出力する

ASP.NET MVCでWebアプリを開発しているときに非同期でサーバーからJSONを取得するのはよくあることだと思います。このとき、サーバー側は標準機能のJsonResultを利用してJSONの生成を行うのが定石ですが、.NETのクラスインスタンスのプロパティから名前と値…

Azure Web SitesでIP制限をかける方法

2013年11月13日、Visual Studio 2013 Launch EventにおいてVisual Studio Online (コードネーム : Monaco) が発表されました。MonacoはAzure Web Sitesを利用した開発をサポートしていますが、サイトのURLはWebサイトができた瞬間から完全に全世界Openなので…

ActionFilter属性を利用した簡易時間計測

One ASP.NET Advent Calendar 2013の19日目担当、今年4度目の登場@xin9leです。そろそろ完全に大顰蹙のような気がしていますが、気にしないことにして...。今回は大好きなSignalRのお話ではなく、ASP.NET MVCやWeb APIにあるAction Filterを使った処理時間の…

Web APIからSignalRへの連携

One ASP.NET Advent Calendar 2013も17日目になりました。すでに3度目の登場です、@xin9leです。ASP.NET/IISのMVPさんよりも多く登場していて場違い感を多少なり感じておりますが、今回も飽き足らずSignalRのネタで攻めます。ご了承ください。 最近の体験談 …

暗黙的にenumに変換できるゼロ

ここ最近、#じんぐる先生とか言って部署の新人さんにC#プログラミングを教えています。クラス/継承/多態などのオブジェクト指向の基礎から時間を掛けてみっちりと。そんな中、例題を出して説明しながら答え合わせしていたとき次のような現象に出くわしました…

DynamicSignalR

One ASP.NET Advent Calendar 2013、12日目を担当させて頂きます@xin9leです。「1000年に1度のアイドル」と言われて人気を博した橋本環奈ちゃんじゃないですが、「北陸のイケメンMVP」とか嘘八百言われつつの2回目の登場です。今回も前回同様SignalRネタです…

Azure Web Sites + WebSocketにおけるSignalR Transport

One ASP.NET Advent Calendar 2013、3日目担当の@xin9leです。昨年に引き続き@chack411さんの後ろで光栄です。この1年はASP.NET MVC、SignalR、Web APIなどなど、ASP.NETの技術を次々と業務に実践投入してEnjoyしてました。特にSignalRは毎日のように触れ合…

Web APIでPUT/DELETEに失敗するときの対処

ひと月ほど前、仕事でASP.NET Web APIを使った開発をしていたときでした。コントローラーにキチンとCRUDを実装し、開発環境のIIS Expressで動作確認も無事終え、部内のテストサーバーのIISにホストしました。そしてそのAPIを利用することになっている同僚に…

システムメニューを操作するビヘイビア

WPFはUI要素に関する操作は恐ろしいほどに柔軟です。(意味があるかは別として) コンボボックスの項目に動画を流すことすら簡単にできてしまいます。ですが、ウィンドウに関する操作はWindows Formsの方が楽だったなと思う場面がいくつもあります。そう感じる…

VisualTreeの子孫要素を取得する

非常に稀なことかもしれませんが、UIコントロールの奥底にある要素にアクセスして操作したい場合があります。例えば、DatePickerコントロールとして提供されているけれども、何かの都合でその中のTextBox部分をイジらなければならない、と言ったケースです。…

ボタンをプログラム側からクリックする

クライアントアプリケーションを作成していると、稀に「ボタンをクリックしたことにしたい」場合があります。ボタンのイベントハンドラやコマンドを直接呼び出すのもありかもしれませんが、何か気持ち悪い感じがしないでもないのでクリックを模倣してみまし…

ExpressWeb上のWordPressをAzureに移行する

Windows Azureが提供するWeb Sitesは超クールなヤツです。簡単で綺麗な管理サイトでの操作/設定だけでなく、Visual StudioやWebMatrixとの親和性も非常に高く、作成したサイトをビックリするほどお手軽に発行/ホストできます。ExpressWebさんは非常に安価で…

例外発生時にリトライする

アプリケーションの要件によっては「ココは失敗してもらっちゃ困る!」という処理が出てきます。こんな場合に例外が発生したりすると、もう目も当てられない状態になります。失敗しないように制御することは大事ですが、失敗しないことを過度に期待するのは…

Azure Web Sitesでカスタムドメインを設定する

Azure Web Sitesは大変にお手軽です。インフラ関連に疎い僕でも簡単にサイト公開できちゃうので、とっても好きです。そんなAzure Web Sites上にサイトを作成すると、標準では「http://○○○.azurewebsites.net」のURL (azurewebsites.netのサブドメイン) が振…