.NET Core 3.0 にしたらWindowsのバージョンが変わった話
釣り気味のタイトルです
無事に .NET Core 3.0 がリリースされたので早速使ってみましょう
コード
Console.WriteLine("Environment.Version\t" + Environment.Version); Console.WriteLine("RuntimeInformation.FrameworkDescription\t" + RuntimeInformation.FrameworkDescription); Console.WriteLine("Environment.OSVersion\t" + Environment.OSVersion);
結果
// .NET Core 2.2 Environment.Version 4.0.30319.42000 RuntimeInformation.FrameworkDescription .NET Core 4.6.27817.03 Environment.OSVersion Microsoft Windows NT 10.0.18362.0 // .NET Core 3.0 Environment.Version 3.0.0 RuntimeInformation.FrameworkDescription .NET Core 3.0.0 Environment.OSVersion Microsoft Windows NT 6.2.9200.0
Windowsのバージョン!!!
これは事前にアナウンスされているBreaking Changesの一つだったりします
こんなのチェックしてないよ!!!
追記(2019/09/26 16:53)
上記2個めのリンクは違う内容だったようです。 詳しくはコメント欄みてください。 本現象の解説まで書いていただいてあります。 コメント必読です。 なんなら本文読まずにコメントだけ読んでください
困ること
例えば Windows 10 1703 で追加された機能を使いたい時なんかは
var version = Environment.OSVersion.Version; if (version.Major > 10 || version.Major == 10 && version.Build >= 15063) { // Windows 10 1703 以降の機能 }
なんて書いたりするわけで、これをそのまま .NET Core 3.0 に持ってくるとメジャーバージョンが6になって if の中に入ってくれなくなります
とりあえず
private Version GetOSVersion() { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) return Environment.OSVersion.Version; // Windows以外はしらないよ var osDescription = RuntimeInformation.OSDescription.Replace("Microsoft", "").Replace("Windows", "").Trim(); var descriptions = osDescription.Split("."); if (descriptions.Length < 3) return Environment.OSVersion.Version; if (!int.TryParse(descriptions[0], out var major) || !int.TryParse(descriptions[1], out var minor) || !int.TryParse(descriptions[2], out var build)) return Environment.OSVersion.Version; return new Version(major, minor, build); } { var version = GetOSVersion(); if (version.Major > 10 || version.Major == 10 && version.Build >= 15063) //・・・ }
みたいな感じでお茶を濁しましょう、これがいいことなのか悪いことなのかは知りません
こんな感じでお茶を濁して .NET Core 3.0 用を作ったライブラリRxSocket
公開中ですよ
.NET Core 3.0 ではSocketのKeepAliveのリトライ回数が変更できちゃう!!
ユピテルスイング練習機用 iOS/Androidアプリ(非公式)をつくりました
ました。仕事で作ったことはあったけど、個人でiOS/Androidアプリ公開したのは初めてです
apps.apple.com何をするソフトかというと、ユピテル社が発売しているGST7-BLEというやつが送ってくるデータをクラウドに送る、ことだけが目的のソフトです
作った経緯
GST-7 BLEとは?
私は初心者ゴルファー歴15年くらいのベテラン初心者なんですが、ゴルフって自分のステータスをいろいろと数値化できるところが魅力の一つだと思います
ゴルフやっていない人でも中継を見たことがある人は結構いると思いますが、たまに選手後方のカメラでボールの軌跡が出たりヘッドスピード等の数値が出たりしてませんか?(渋野選手メジャー制覇おめでとう)
あれは大体Trackmanという軍事用に使用されていたドップラーレーダー式弾道追尾システムで測定しています https://ja.wikipedia.org/wiki/トラックマン_(ゴルフ用具)
ゴルフやっている人はみんなあれが欲しいんですが、2~3百万円する代物なので個人で買うにはだいぶハードルが高すぎです
ということで、一般人にも手の届く測定器として人気があるのがYupiteru GOLF GST-7 BLEです
ドラコン選手も愛用しているとかしていないとか。とにかくコスパがいい代物です。Amazonの評価も高いです、納得です
公式アプリ
GST-7 BLEのBLEはBluetooth Low Energyで、BLEでスマホの公式アプリにデータを飛ばすことができます。BLEがいらない人はGST-5という一世代前のものがあるのでそっちを買うはずです。ということでGST-7を買った人は全員がこの公式アプリを入れて試すはずです
各OSのストアをのぞいてみると・・・
どちらも評価は低く求めているものは同じです
- アプリの表示が貧弱・編集できない
- PCにデータを転送したい場合SDカードを経由しなければならない
私も使ってみて同じことを思いました
ということで作ってみた
解説
機能
- データアップロード
最初に書きましたがGST-7 BLEのデータをクラウドに上げるのが目的です。上げてしまえばあとはデータの加工をするのもダウンロードしてExcelで管理するのもしたい人が好きにすればいいので
swingdataviewer.azurewebsites.net
- オーバーレイ録画
プロの試合のように録画してデータをオーバーレイできたらいいかなーという出来心で作ったもの。開発期間のほとんどはこの機能の実現に使った、すごく苦労した、そしてそんなに使わない
裏側
Azureです。Azure大好き人間なので
スマホからのデータ受信はFunctions、データの表示部はWeb Appsでやってます。ふつうだな
データを保存して表示してダウンロードできればいいので実装もそんな感じ
Xamarin.Formsを使ってiOS/Androidどっちでも動くものを目指しています
私はiPhoneユーザーなのでiOS版優先です。Android版は実機を持っていないので動作確認も怪しい(おっと欲しいものリストに何かが・・)
- プロジェクト
Webやデザインに明るい方がいたらIssueやプルリクが欲しいので(ある程度動くようになったので飽きた)
スマホ側のソースはこのまま公開していいのかよくわかってないのでとりあえずIgnore
欠点
ゴルフをやっていてGST-7 BLEを持っていてGitHubのアカウントを持っている人が一体何人いるんだろうか・・・
Azure Maps Tileを使う
Azureのサービスの一つにAzure Mapsというのがあります
上記リンクの説明を見ると地理情報サービスって感じですが、地図サービスももちろんあります
独自(?)の地図コントロールも提供されています
azuremapscodesamples.azurewebsites.net
Bing MapsのころからMicrosoftの地図コントロールは出来が良かったのでこれも期待できそうです
Azure Mapsのタイルを使用する
ここからが本題
地図のタイルと言えばOpen Street Mapが有名ですね。Google Map高いからね、意識低い系企業さんなんかは「無料で使える地図」って認識で使うんですね。まぁそんなことしていたらOSS潰れちゃうから企業はちゃんと寄付なり課金なり自前サーバー立てるなりした方がいいと思います
ということでAzure Mapsつかいましょ。ざっくりした地図でいいならStandard S0で毎月25万トランザクション(15タイルで1トランザクション)の無料分がついてきます、かなり安いとおもいます
実際にOpen Street Mapと比較してみましょう
Azure Maps Tile
Open Street Map
重ねてみる
・・・昔を思い出しますね
まとめ
地図がスカスカなのはまだ我慢できるとして、幹線道路がずれているのは勘弁してほしいところです。今後このタイルが更新されるのか謎なんですが、更新してくれるんですかね?ゼンリンさんからデータ買い取ったりしてくれないですかね?