nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

Docker for Windowsで"could not read CA certificate"エラーが発生した時の対応方法

Docker for Windowsのバージョンを上げた時などで、つぎのようなエラーメッセージがでてDockerがほぼ使えない状態になってしまいます。

could not read CA certificate "C:\Users\\.docker\machine\machines\default\ca.pem": open C:\Users\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

私はDocker Toolbox(Docker for Windowsの前身)を同居させようとしたら、ぶっ壊れて上の状態になりました。現在、開発中のバージョンでは対応されているようですが、まだリリースされていないため、現在発症した場合は、手動で対応する必要があります。という訳で、以下に手順を纏めます。

続きを読む

Xamarin.Forms.GoogleMaps.Bindings 2.2.0リリースしました

Xamarin.Forms.GoogleMapsのバインディング対応ライブラリを更新しました。

更新内容はひとまず以下の通り。

  • UpdateRegionBehaviorの追加
  • UpdateCameraPositionBehaviorの追加
  • MoveToRegionBehaviorでanimatedを指定できるように変更

近いうちに、もう少し本体へ追従するよう修正します。

UpdateRegionBehaviorの追加

こんな感じで、地図の表示場所をバインドで更新できるようにしました。

<googleMaps:Map x:Name="MyMap" HorizontalOptions="Fill" VerticalOptions="FillAndExpand" MyLocationEnabled="True">
    <googleMaps:Map.Behaviors>
        <bindings:UpdateRegionBehavior Region="{Binding Region}" Animated="{Binding Animated}"/>
    </googleMaps:Map.Behaviors>
</googleMaps:Map>

UpdateCameraPositionBehaviorの追加

同様にカメラアングルもバインドで変更できるようにしました。

<googleMaps:Map x:Name="MyMap" HorizontalOptions="Fill" VerticalOptions="FillAndExpand" MyLocationEnabled="True">
    <googleMaps:Map.Behaviors>
        <bindings:UpdateCameraPositionBehavior CameraUpdate="{Binding CameraUpdate}" Duration="{Binding Duration}"/>
    </googleMaps:Map.Behaviors>
</googleMaps:Map>

Durationを指定しない、もしくはnullを指定するとアニメーションなしでカメラアングルが変更されます。

MoveToRegionBehaviorでanimatedを指定できるように変更

完全に認識外で漏れていたので追加しました。こんな感じで利用します。

public MoveToRegionRequest Request { get; } = new MoveToRegionRequest();

public Command MoveToTokyoCommand => new Command(() =>
{
    Request.MoveToRegion(
        MapSpan.FromCenterAndRadius(
            new Position(35.681298, 139.766247),
            Distance.FromKilometers(2)),
        Animated);
});

ドキュメントの正式な更新はまた今度。

以上です。

InfragisticsさんとCData Software Japanさんから頂いた肉セットを食べてみた

de:code大喜利の景品でお肉をいただいたのですが、頂いたらレポ要求を頂きました。

f:id:nuitsjp:20180526234835p:plain

そういう訳で、先日到着したのでレポを書きました。

www.nuits.jp

レポかいたら書いたで今度は

お、おう。

ということで、贅沢にも焼き豚丸ごと一つ使って、妻と二人で豚丼作って食べました!

f:id:nuitsjp:20180530101651j:plain

米より肉の方が多くなりました。

さてお味ですが、甘辛く調理されておりタレがとても美味しかったです。味付けが濃すぎることもなく、肉のそのものと、油のうま味が感じられ、良いお肉なんだろうなあと実感じました。

自腹で買ったらこんな贅沢な食べ方はできませんでしたね!

という訳で、InfragisticsさんCData Software Japanさんありがとうございました!

...レポはこんなもんで良いですかね?w

de:code大喜利でInfragisticsさんとCData Software Japanさんから頂いた肉セットを開封してみた

de:code 2018のエキスポ会場をフラフラしていたら、Infragisticsさんのブースで捕まって、なんだか無理やり強制的に大喜利に参加させられました。

なんでも、上位入賞者には5000円~1万円分のお肉セットがもらえるとか?

まぁどうせ当たらないしと思ってたら。。。

当たっちゃいました!w

配送手続きしてたら

f:id:nuitsjp:20180526234835p:plain

と言われましたので、肉レポを上げたいと思います。

お肉は↓こんな箱に入ってやってきました。

f:id:nuitsjp:20180526235114j:plain

ナルトベースさんてとこの商品だそうです。

箱を開けてみると…

f:id:nuitsjp:20180526235222j:plain

こんな感じで肉が入ってました。

入っていたのは三つ。

f:id:nuitsjp:20180526235305j:plain

至高の吊るし焼き豚(バラ)

f:id:nuitsjp:20180526235352j:plain

至高の吊るし焼き豚(モモ)

f:id:nuitsjp:20180526235433j:plain

至高のローストポーク(ロース)

阿波の金時豚だそうな(よく知りませんが)。こんな感じに調理するそうです(まだ食べてません)。

f:id:nuitsjp:20180526235926j:plain

うまそうだ。

InfragisticsさんCData Software Japanさんありがとうございました!

de:code 2018のシアターセッションで登壇してきました

登壇といってもシアターセッションという15分枠でしたが。

https://www.microsoft.com/ja-jp/events/decode/2018/

JXUGのイベントで以前お話しした内容を、de:codeでも話してほしいとMVP伝手でお話をいただいたのがきっかけでした。

jxug.connpass.com

セッション内容はこちらのエントリーにまとめてありますので、良かったらご覧ください。

www.nuits.jp

15分枠とはいえ、デベロッパー向けのカンファレンスとしては、自分自身で最大規模のイベントでお話しさせていただく機会となり、率直に言って、機会をいただけたことは非常にうれしかったです。

ただ緊張してたこともあり、一番大切なことを言い忘れました。

「Event TrackingはAOPを利用すれば、非常に簡単・綺麗・高効率・高品質に実装できますが、Xamarinでは現時点では難しいです。
しかし、誰かが仕組みを作ればみんなが幸せになれるので、近いうちに作成にトライしたいと思います。その際は、Twitterで告知もさせていただきますので、ご協力いただけると幸いです。」

まぁ、私はXamarinは完全に趣味にしかできていないし、アプリ完成させたことないし、私はあまり幸せにならないんですけどね!

もとい、私生活が立て込んでいて(天使のような娘が生まれたので!)なかなか時間が取れず、寝不足を推して資料修正や発表練習をしましたが、非常にいい経験ができたと思います。

お声がけいただきましたMicrosoftさん、そしてそもそもこの機会のきっかけとなったJXUGの皆様には感謝の念が絶えません。

ありがとうございました!

Xamarin.Forms.BehaviorsPack 2.0.0 リリース:究極に簡単に全てのイベントへコマンドをバインドできるようになりました

個人的にはタイトルは煽りでもなんでもなく、本気のつもりです。

例えば、PageのAppearingイベント発生時にCommandを実行したい場合、次のように記述すればOKです。

<ContentPage ...
             bp:Pages.Appearing="{Binding AppearingCommand}"

Xamarin.Formsのすべての要素の、すべてのイベントに対応しています。

これまでであれば、EventToCommandBehaviorを利用して以下のように記述する必要がありました。

<ContentPage ...>
    <ContentPage.Behaviors>
        <bp:EventToCommandBehavior 
            EventName="Appearing" 
            Command="{Binding AppearingCommand}"/>
    </ContentPage.Behaviors>

コンパクトに記述できるようになったかと思います。

詳細は以下に記述します。

続きを読む