nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Visual Studio and Development Technologies。なお掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Xamarin(Formsもね)で.NET Standard 2.0なライブラリを利用する

Visual Studio 2017 Update 3がリリースされたことで、待望の.NET Standard 2.0が利用できるようになりました。 XamarinでもAndroidやiOSからは既に利用可能なようです。UWPは少々お待ちください?(少々っていつ?誰か教えて さて、使うにはまずは.NET Stan…

.NET Standard 2.0対応クラスライブラリを作る

Visual Studio 2017 Update 3の個人的な目玉は何と言っても、.NET Standard 2.0対応です。 という訳で、早速Xamarinの共通部分を2.0にして試してみましょう! 入ってないのかよ(´・ω・`) しかも、「他のフレームワークをインストールする」のリンク先に無い…

Visual Studio 2017 Update 3でAzure Functions and WebJobs Toolsを有効にする方法

Visual Studio 2017 Update 3では、デフォルトでAzure Functions and WebJobs Toolsがインストールされているのですが、おそらく?PreviewのUpdate3用の様で、デフォルトではAzure Functionsのプロジェクトテンプレートが有効になりません。 個別にUpdate 3…

Visual Studio 2017 Update 2へUpdate3を適用する方法

普段Visual Studioの更新は、VSメニューバーの「ツール」>「拡張機能と更新プログラム」から入れられた気がするのですが、どうも今回は2017.08.15時点ではそこから上げられないようです? という訳で、Visual Studio Installerを手動で起動して(インストー…

KAMISHIBAIセルフ プロモーション:一貫性を保ったイベント通知

先日これまでのXamarin.Formsの経験や、PrismのPageNavigationServiceへの貢献を通して得たノウハウを整理して形にした、KAMISHIBAI for Xamarin.Formsをリリースしました。 前述のエントリーや、Github上のドキュメントでもKAMISHIBAIのメリットについては…

Xamarin.Forms.GoogleMaps.Bindings 2.1.0の追加機能解説

昨日、Xamarin.Forms.GoogleMaps.Bindings 2.1.0のリリースを告知しましたが、あれだけだと不親切なので使い方が少し癖のある部分の解説を追記しておきます。 www.nuits.jp 追加した機能のうち、つぎの3つは少し使い方が特殊です。 Support MoveCamera Suppo…

Release Xamarin.Forms.GoogleMaps.Bindings 2.1.0

ちょっと放置状態になってしまっていたXamarin.Forms.GoogleMaps.Bindingsを、「だいたい」Xamarin.Forms.GoogleMaps 2.1.0まで対応しました。 未対応機能があれば、良かったら教えてください。 とりあえず、対応内容は以下の通りです。 Transition to .NET …

KAMISHIBAI for Xamarin.Forms 1.1.0をリリースしました。

ServiceLocatorを追加して、Page生成のDependency Injection対応が可能となりました。 KAMISHIBAIをPrismと併用する記事を書かなきゃなと思っていたら、神のようなタイミングで記事化してくださった方がいらっしゃいまして。 blog.okazuki.jp かずきさん、あ…

Xamarin.FormsでListView選択時にエレガントに詳細画面へ遷移する2つの方法 with 紙芝居 & BehaviorsPack

エレガントは言い過ぎ&タイトル長い上&ダイマでごめんなさい。 KAMISHIBAI for Xamarin.FormsとXamarin.Forms.BehaviorsPackの合わせ技でこんな簡単にListViewで選択されて画面遷移してパラメーター渡しするのが簡単に書けますよという紹介です。 こんな感…

KAMISHIBAI for Xamarin.Forms 1.0.0をリリースしました。

ここしばらく作っては消しを繰り返していた、お手製画面遷移ライブラリ をリリースしました。コードとドキュメントはGithub上に公開しています。利用の際はNuGetからインストールして利用してください。 目指したのは Xamarin.Formsで可能なあらゆる画面遷移…

AxoCoverというVisual Studio拡張のカバレッジツールが素晴らしい

無料です。以上です。じゃ、怒られるので少しだけ紹介を。

Service LocatorをInjectionするパターンの再考察

しばらく前に、Dependency InjectionパターンとService Locatorパターンの記事を書きました。 www.nuits.jp この中で、私はService Locatorパターンは次の点でDependency Injectionパターンに劣ると記載しました。 本来不要であるServiceLocatorへの依存が発…

REST APIをAzure MobileApps SDKを利用して実行する

前回のエントリーではMicrosoft.Rest.Clientを利用してAzure API AppのREST APIを利用しました。 www.nuits.jp ちなみにこれ、AutoRestというプロダクトの一部みたいですね。今日もう少し調べてて知りましたw さて、前回のエントリーを書いたところ、Mobile…

Hello, Azure API Apps with Xamarin.Forms

前回、Azure API Appの簡単な利用方法を解説しました。 www.nuits.jp 今回は、これをXamarin.Formsから利用してみましょう。 Xamarinプロジェクトを作成する XamarinにAPI App呼び出しを組み込む MainPageViewModelの作成 MainPage.xamlの修正 APIクライアン…

Hello, Azure API App with .NET Core

本エントリーでは、Microsoft Azure上でWeb(REST) APIを構築するAPI App初心者向けのエントリーです。 対象読者は以下を想定しています。 Azureのアカウントは作成した API App使いたいけど何も分からない とりあえずAPIを公開して呼び出すところまでの手引…

.NET Standardや.NET Coreでmscorlib 2.0.5.0の参照がないと怒られた場合の対処方法

.NET StandardのプロジェクトからPCLのプロジェクトを無理やり参照しようとしたような場合に発生します。 PackageTargetFallbackを指定しているような場合です。 System.~系への参照が、PCLでは明示的にバージョンが指定されているが.NET Standard側では明…

Xamarin.Forms.BehaviorsPack 1.2.0をリリースしました。

新たにSelectedItemBehaviorを追加しました。 ListViewで選択された行のItemを引数にCommandを実行するシンプルなBehaviorです。 EventToCommandBehaviorでも似たことはできますが、SelectedItemBehaviorはCommand実行後にSelectedItemを解除することができ…

Xamarin.Formsで「ビルド アクション 'EmbeddedResource' は、プロジェクトのターゲットの 1 つ以上でサポートされていません。」の解決方法

2017年7月現在、良く遭遇します。 最初に開いたソリューションで良くなるかも。 起きたら、ソリューションを閉じて開き直したら99%直ります。 ゴミみたいな記事でゴメン(´・ω・`) 追記: 手動でビルドアクションを一度コンパイルにして埋め込みリソースにし…

Service LocatorとDependency InjectionパターンとDI Container

一度ちゃんとまとめておこうと思いまして書いてみました。 本エントリーでは次の点を整理したいと思います。 ServiceLocatorパターンとは何か? Dependency Injection(以降DI)とは何か? DI Containerとは何か? これらを使うと何がうれしいのか? Service…

アプリケーションオブジェクト ライフサイクルパターン

アプリケーションを構築する際に、登場するオブジェクトの生存期間は多岐にわたります。 ユーザーがインターフェースからアクションを起こしたときに、それに伴うインタラクションが完了するまでの間だけ生存するオブジェクト。 アプリケーション起動から終…

Prism 6.3の変更点 目次(for Xamarin.Forms)

Prism6.3のアップデートにおける変更点をまとめました。 以下をご覧ください。 www.nuits.jp www.nuits.jp www.nuits.jp 今回はこれだけ!

Prism 6.3の変更点 その3 新規要素(for Xamarin.Forms)

本エントリーではPrism6.3で新たに追加された機能をいくつか紹介します。 EventToCommandBehavior IApplicationLifeCycleの追加 IApplicationStore IDeviceService

Prism 6.3の変更点 その2 画面遷移関連(for Xamarin.Forms)

Prism 6.3のXamarin.Forms向けで最も大きな変更があったのが画面遷移関連です。 機能追加もありますし、注意が必要な破壊的変更もあります。

Prism 6.3の変更点 その1 Pris.Core

Prism 6.3がリリースされてからすでに2カ月。書こう書こうと思っていたのですが、後回しにしまくっていたのでここに変更点をまとめます。 for Xamarin.Formsの範囲が対象となります。 と、言っておきながら、本エントリーではWPFおよびUWPとも共通のPrism.Co…

.NET StandardプロジェクトでInternalsVisibleToを設定する方法

.NETには、例えばinternalなクラスやメソッドのUnitTestをUnitTestプロジェクトから呼び出す仕組みとして、「InternalsVisibleTo」という属性があります。 従来の.NET Frameworkプロジェクトでは、プロジェクト作成時にPropertiesの下にAssemblyInfo.csが作…

Xamarin.Forms用の汎用Behaviorライブラリをリリースました

Xamarin.Forms用の汎用Behaviorライブラリをリリースました! www.nuget.org コード&詳細ドキュメント(まだ下記中ですが)はこちらにあります。 github.com たとえば、こんな感じでイベント発生時にEventのパスを指定してEventのプロパティを引数にCommand…

.NET StandardプロジェクトをxUnitでテストする方法

.NET Standardのプロジェクトをテストするために、.NET Standardのテストプロジェクトを作成するとxUnitのテストが認識されずテストできません。 現状ではつぎのようにすることで対応できます。 Testプロジェクトを.NET Coreのコンソールアプリケーションと…

【Xamarin.Forms】汎用的なBehavior集ライブラリを作ってる

ふと思い立って、汎用的なBehaviorライブラリを作ってます。 とりあえず作っているのは Eventを指定してEventが発生したら何かする抽象Behavior Eventが発生したらCommandを実行するBehavior DisplayAlertを表示してCommandを実行するBehavior ActionSheetを…

【メモ】Xamarin.FormsでPopModalしてもStackからPageが解放されない問題と、限定的な回避策

あくまでメモです。 検証などが不十分なので、鵜呑みにはしないでください ここでの回避策は特定の利用方法における限定的な回避策です ModalStackが適切な状態になるわけではありません さて ModalStackからPageをPopすると、画面は前画面に戻るが、ModalSt…

Xamarin.FormsでAndroidやiOSで例外がさっぱりわかんねえよ!って時の一つの解決方法

なんだかVisual Studio 2017になって、例外が余計に分かりにくくなったような気がするのは気のせいでしょうか? 本当、どうでもいいことでミスしていて(MasterDetailPageのMaster側のPageにTitleを設定するのを忘れていた。。。とか)、でもそれに気が付け…

Xamarin.Forms Navigation Overview

久しぶりにJXUGでしゃべらせていただきました。 完全に物理バックボタンを忘れていたので、そのうちどこかで追記なり補足します。 jxug.connpass.com 発表に利用した資料はこちらに公開しています。 docs.com ただ、スライドだけで理解いただけるものを作る…

【メモ】PrismでMasterDetailPageと付き合うコツ

そのうち、きっちりまとめ直しますがひとまずメモを。 MasterDetailPageを利用する際に、Prismの画面遷移イベントとライフサイクルイベントをうまく活用するコツをメモっておきます。

【メモ】INavigationがPlatformによって実装が異なる話

あくまでメモでなのでご注意を 網羅的な説明になっていません 内容の正誤を十分検証していません つぎのようなコードを呼ぶとき page.Navigation.PushAsync(new NewPage()); NavigationプロパティはINavigationインターフェースの実装クラスで、その実態はNa…

【Xamarin.Forms】DisplayAlertを表示するBehavior

みなさんWPF用のMVVMインフラストラクチャであるLivetをご存知ですか? ふとしたきっかけで、Livetの機能を見ていて 「指定されたEventでダイアログを表示し、その後ViewModelをよびだす」 機能が、Xamarin.Formsでも使えると便利だなと思いました。 そこで…

Blue Monkey Architecture Overviewに対する訂正

先日公開した、つぎの記事について何点か指摘をいただきました。 【Xamarin】Blue Monkeyプロジェクト Architecture Overview コメント入り掲載 - nuits.jp blog 指摘の通り、前述の記事には明らかに誤った記載が何点かありました。読んでいただいた方には大…

「Xamarinのインストールが遅い」は本当かどうか試してみた

結論 「くそ早い」 以上! で、終わる訳にもいかないので詳細をもう少し解説したいと思います。

Prism 6.3.0がリリースされました

去年末からリリースの待たれていたPrism 6.3.0が先ほどリリースされました。 https://github.com/PrismLibrary/Prism/wiki/Release-Notes-6.3.0 今回のリリースはXamarinから見ると非常に多くの魅力的な機能追加が含まれています。 画面遷移時に、遷移前処理…

技術書典2 & 超技術書典でXamarin本出します

すでにご存じの方もいらっしゃると思いますが、つぎの技術同人誌イベントにてXamarin本を出典します! techbookfest.org techbookfest.org (Xamarin.Mac)初心者向けの記事からディープな記事まで、一部メンバーが入れ込み過ぎて、えのさんも呆れるほど書き…

【Xamarin】Blue Monkeyプロジェクト Architecture Overview コメント入り掲載

【追記】 本エントリーは大幅に見直す予定です。現在検討中の内容は以下に公開しています。 Blue Monkey Architecture Overviewに対する訂正 - nuits.jp blog 【追記終了】 先日Infragisticsさんのイベント「Infragistics Day 2017 Spring」にて、現在進行形…

Infragistics Day 2017 Spring でBlue Monkeyについて話してきました

発表資料はこちらになります。 Blue monkey architecture overview from Atsushi Nakamura www.slideshare.net 入れ込み過ぎて喋り過ぎたかも。。。 気合い入り過ぎました

XamarinがVisual Studio 2015と2017で共存可能になったぽい?

タイトルのまんまですが、そうっぽいかも? 少なくとも基本的な機能は共存できています。 細かい部分で問題があるかもしれませんが、とりあえず第一報まで。

PrismでViewModelがバインドされないときの調査方法

私も良くやるので、もっとも有効な調査方法をさらっと書いておきます。

【解決済】引数渡しなし&マルチスレッドで、呼び出し元とオブジェクトを共有するいい方法

2017.02.19 追記: 本件は、以下のアドバイスで解決することができます。 @nuits_jp ThreadLocal でダメなら AsyncLocal でどうじゃ? と思った— あえとす 2017-beta.2 (@aetos382) 2017年2月18日 AsyncLocalなんて追加されていたんですね。全く知りませんで…

Prismで、いつの間にかAutowireViewModelが不要になってた話

色々いじってて、おかしいおかしいと思ったらPrism for Xamarin.Forms 6.2.0のリリースノートの記述にこんな内容が ViewModelLocator.AuowireViewModel is now done automatically. This is now an opt-out feature https://github.com/PrismLibrary/Prism/w…

Xamarin.FormsのPage遷移の詳細に迫る

なんかちょっと久しぶりに書いている気がします。 みなさん、いかがお過ごしでしょうか。私は諸々忙しくて辛いです。 今回はXamarin.Formsの画面遷移、正確には画面遷移スタックについて掘り下げてみたいと思います。 ここまで理解しておく必要があるケース…

IoC コンテナ パフォーマンスバトル on Xamarin in 2017

少し前に、PC上でのIoCコンテナのパフォーマンス調査を行いました。 www.nuits.jp 今回はXamarin上で調査しましたので、その情報を共有したいと思います。 それでまずは結果から見てみましょう。 まずはUnityの性能を100%としたときの評価グラフです。 具体…

Prism for Xamarin.Forms 6.3.0アップデートの注意事項

ちょっとTLで話題になっていたのでせっかくだから文章でまとめようかと思いエントリーにしてみました。 6.3.0の正式版リリース時にも注意が必要な事項 6.3.0-pre独自の注意事項(リリースまでにはおそらく改修されるだろう内容) についてまとめてみましたの…

VMwareのHDDのベンチマークを取ってみた

前々から気になっていたのでVMwareの仮想HDDについてパフォーマンスを測定してみました。 ただ、手軽にベンチマークを取得するため、CrystalDiskMarkを利用しました。 このソフトウェアは、手軽にベンチが取得できる反面、正確性はあまり高くないという話も…

2016年に最も読まれた記事 TOP10 世の中まだまだWindows 7

なんだか皆んなが書いていて自分も書きたくなってまとめて見ました。 「2016年に」も何も、去年始めたブログなので、このブログ全体のランキングみたいなものです。 では早速行って見ましょう。

IoC Battle in 2017

さて、今年もやってまいりました! DIコンテナの頂上決戦、IoC Battle in 2017!! さて、今回も最強の挑戦者たちが(ry 冗談です(´・ω・`) ちょっとUnity死亡説があった為、IoCコンテナの情報を整理していたらこんな記事を見つけました。 IoC Battle in …