2022年5月30日月曜日

プロパティパターン in C# 10.0

どうも、もりもりです。

今回はC# 10.0で改良されたパターンマッチングのプロパティパターンをちょこっと触ってみました。

プロパティパターン (C# 8.0)

まずはC# 8.0で使用できるようになったプロパティパターンのサンプルです。
プロパティパターンは、プロパティに対して再起的にマッチングを行うパターンです。 プロパティだけでなくフィールドにも使用できます。

例えば、下記のようなPointクラスのXとYによって返す値を決定したいコードがあったとします。

static int GetScore(Point p)
{
    if (p.X == 1 && p.Y == 2)
    {
        return 0;
    }
    else if (p.X > 0)
    {
        return p.X;
    }
    else
    {
        return -1;
    }
}

上記のコードを、プロパティパターンを使用すると下記のように書くことができます。
(switch式でさらに簡潔にしてます。

static int GetScore(Point p)
    => p switch
{
    { X: 1, Y: 2 } => 0,
    { X: var x, Y: _ } when x > 0 => x,
    _ => -1
};

呼び出し側はこんな感じで。

var p1 = new Point(1, 2);
var score = GetScore(p1);
Console.WriteLine($"p1 score : {score}");

var p2 = new Point(10, 10);
score = GetScore(p2);
Console.WriteLine($"p2 score : {score}");

var p3 = new Point(-3, 0);
score = GetScore(p3);
Console.WriteLine($"p3 score : {score}");

結果はこうなります。

p1 score : 0
p2 score : 10
p3 score : -1

C# 10.0での拡張

このプロパティパターンですが、入れ子のプロパティやフィールド参照で書けるようになったみたいです。

下記のようなクラスがあったとします。

class Item
{
    public string Name { get; set; }
    public Attribute Attribute { get; set; }
}

class Attribute
{
    public bool? A { get; set; } 
}

ItemクラスのNameの文字列長をチェックしたい場合、 下記のように{ Name.Length: 1 }と書けるようになりました。

var item1 = new Item() { Name = "A", };
if (item1 is { Name.Length: 1 })
{
    Console.WriteLine($"single char");
}

また、下記のようにAttributeクラスをnewしてると 「A is null」の方を通りますが、Attributeのプロパティに何もセットしない場合は 「A is not null」の方を通ります。これは{ Attribute.A: ・・・ }と書いても、まずAttributeオブジェクトのnullチェックをしているためです。

var item2 = new Item() { Name = "ABC", Attribute = new Attribute() { }, };
if (item2 is { Attribute.A: null })
{
    Console.WriteLine($"A is null");
}
else
{
    Console.WriteLine($"A is not null");
}

自分用のメモとして残しているのでちょっと分かりにくいかもですが、より簡潔にコードを書けるようになっているのだなということはなんとなく分かっていただけたかと。 掘り下げてみたい方はすみませんがググってみてください。

以上、もりもりでした。

2022年5月20日金曜日

登記事項証明書をオンライン請求してみた!

とある申請のため、登記事項証明書を取得する必要がありました。
オンライン請求すると手数料が安いということもあり、初めて登記・供託オンライン申請システムを使い、請求してみました。


申請者情報の登録


登記・供託オンライン申請システムを使用するには、申請者情報登録、つまりユーザー登録が必要です。


メールアドレスがIDになるわけではなく、自分でIDを決めなければいけないのが面倒ですね。
最終利用から1年が経過すると、申請者情報削除通知メールが送られ、そこから30日以内にログインしないと自動的に削除されます。削除されると、同じIDで再登録することができません。


請求


システムには古さを感じますが、「登記・供託オンライン申請システム 申請者操作手引書 ~商業・法人 かんたん証明書請求編~」という操作手引書が公開されており、それに従えば請求手続きは難しくありません。

まず、請求に必要な情報を入力します。今回は、窓口で受け取るので、交付方法に「窓口受取」を選択し、受取場所に最寄りの法務局を指定します。


情報入力後、請求情報を送信します。


納付


処理状況を確認すると、送信後すぐには「納付」ボタンは表示されませんが、しばらくすると表示されます。


納付ボタンを押し、処理を進めると、e-Govの電子納付画面に遷移します。


利用している金融機関を選び、銀行のサイトにログインすると、払込先情報が入力され、すぐにPay-easyによる払込ができる状態になっています。これは非常に便利でした。

払込が完了すると、「納付済み」にステータスが変わります。

受取


処理状況が「手続終了」になると、法務局での受取が可能です。


受取時に何が必要か分からず、とりあえず申請番号だけをメモして法務局に向かいました。通常の申請窓口とは違う窓口で、オンライン請求した旨を伝えると、氏名、住所、請求通数、そして申請番号を紙に記入し、無事に証明書を受領することができました。

実はこの記事を書くにあたり、初めて手引書を見たのですが、そこに

請求した証明書を登記所の窓口で受け取る場合には,「処理内容照会(電子納付情報表示)」画面を印刷し,あらかじめ設けてある記載欄に, 請求に係る通数を記載したものを登記所の窓口に提出していただく必要があります。

と書かれていました。これを持参すれば、よりスムーズに受け取ることができますね。


またいつか、どこかで。

2022年5月15日日曜日

Pixel Buds購入、ワイヤレスイヤホンは探せる方がいい

こんにちは、やっまむーです。

先日のことです。

紛失!!

ワイヤレスイヤホンの利用者が必ずやるという片耳紛失、私もついにやってしまいました。
ちゃんとケースに入れたんです、それなのに何故か無い。
鞄の中も、直前に立ち寄った場所も探しましたが結局見つかりませんでした。
片耳だけでは使えませんし、今更有線のイヤホンには戻りたくありません。
泣く泣く新しいものを買うことにしました。

タイミングよく、Google StoreのセールでPixel Budsのセールが行われていたので購入しました。
決めてはGoogleの「デバイスを探す」サービスが使えることでした。

「デバイスを探す」サービスとは

「デバイスを探す」サービスはGoogleが提供している文字通り、Android端末を探しだすサービスです。
アカウントに紐づいているデバイスの現在位置を確認したり、音を鳴らしたり、リモートでデバイスの保護をすることができます。(※.利用のための設定は必要です)

Pixel Budsはこのサービスに対応しており、万が一紛失したとしても最後の位置情報を知ることができます。
またいつ何時、紛失するかわからないので、保険のためにサービス利用の設定を行いました。

ペアリングから設定までの手順

まずはスマホとPixel Budsのペアリングを行います。

Pixel Budsの場合、ペアリング時にGoogleアカウントとの関連付けが行われます。
接続すると、他のBluetooth機器とは異なる専用の設定画面になります。

「デバイスを探す」の画面では接続中のイヤホンから音を鳴らしたり、最後に接続した場所の確認ができます。

最後に接続した場所の確認には、Androidアプリの「デバイスを探す」が必要になります。
もしインストールされていなければ、ここでインストールを促されます。
インストール済みであれば、Pixel Budsが関連付けられたアカウントで「デバイスを探す」にログインすると、最後に接続した場所、時間が確認できます。

これで再び落としたとしても効率よく探すことができます。
まあ、そもそも落とさないようにするのが一番ですけどね。

ではではー。