プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

ファイルに保存するILoggerの拡張のやつ(?)作りました

github.com

作りました

.NET Core 3.0だしHostBuilderとかあるから、一応ね


以下ぽえむ

私は社会人になってから真面目にプログラミングを行うようになったので、ログの重要性などもそこで教わりました

その時のエース的プログラマーな方が作ったログ用APIはかなり良くできていて、今考えてもすごいものを与えられていたんだなーと思います

  • リアルタイムに出るUIがあって色も付く (今回関係ないね)

  • printfみたいな感じで使える (今回関係ないね)

  • ファイルがサイズでローテーションする (Windows NTで1MByte超えるテキストファイル開くと辛い!)

とか初心者な私はただ関心していました

さて、そんなAPIを使用して出力したログに付き合うこと?年、ファイルに保存するタイプのログはこのAPIライクなものじゃないと体が満足してくれなくなりました。三つ子の魂百までとはよく言ったものです

ETW使ってもファイル保存部分は同じような形式で保存するようにしてましたし、今回コンソールアプリでMicrosoft.Extensions.Loggingを使うことになったのでこいつでも同じですね

皆さんも自分にピッタリくるログファイルの形式があるとおもいます。GitHubのソースはかなり単純だと思うのでこぴって自分だけのログファイルを作ってみてはいかがでしょうか?

.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の一つだったりします

devblogs.microsoft.com

github.com

こんなのチェックしてないよ!!!


追記(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公開中ですよ

github.com

.NET Core 3.0 ではSocketのKeepAliveのリトライ回数が変更できちゃう!!

ユピテルスイング練習機用 iOS/Androidアプリ(非公式)をつくりました

ました。仕事で作ったことはあったけど、個人でiOS/Androidアプリ公開したのは初めてです

Swing Logger

Swing Logger

  • Yoshihiro Hada
  • スポーツ
  • 無料
apps.apple.com

play.google.com

何をするソフトかというと、ユピテル社が発売しているGST7-BLEというやつが送ってくるデータをクラウドに送る、ことだけが目的のソフトです

f:id:puni-o:20190806115049p:plain
こんな感じ

作った経緯

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のストアをのぞいてみると・・・

f:id:puni-o:20190806132440j:plain
iOS App Store

f:id:puni-o:20190806132535j:plain
Android Google Play ストア

どちらも評価は低く求めているものは同じです

  • アプリの表示が貧弱・編集できない
  • PCにデータを転送したい場合SDカードを経由しなければならない

私も使ってみて同じことを思いました

ということで作ってみた

解説

機能

  • データアップロード

最初に書きましたがGST-7 BLEのデータをクラウドに上げるのが目的です。上げてしまえばあとはデータの加工をするのもダウンロードしてExcelで管理するのもしたい人が好きにすればいいので

swingdataviewer.azurewebsites.net

  • オーバーレイ録画

プロの試合のように録画してデータをオーバーレイできたらいいかなーという出来心で作ったもの。開発期間のほとんどはこの機能の実現に使った、すごく苦労した、そしてそんなに使わない

youtu.be

裏側

Azureです。Azure大好き人間なので

スマホからのデータ受信はFunctions、データの表示部はWeb Appsでやってます。ふつうだな

データを保存して表示してダウンロードできればいいので実装もそんな感じ

Xamarin.Formsを使ってiOS/Androidどっちでも動くものを目指しています

私はiPhoneユーザーなのでiOS版優先です。Android版は実機を持っていないので動作確認も怪しい(おっと欲しいものリストに何かが・・)

  • プロジェクト

github.com

Webやデザインに明るい方がいたらIssueやプルリクが欲しいので(ある程度動くようになったので飽きた)

スマホ側のソースはこのまま公開していいのかよくわかってないのでとりあえずIgnore

欠点

ゴルフをやっていてGST-7 BLEを持っていてGitHubのアカウントを持っている人が一体何人いるんだろうか・・・