Reflectionによるプロパティ名の取得

先日、クラスの持つプロパティ名をExcelファイルに列挙すると言った作業を行うことになりました。
対象となる複数のクラスから特定の条件を満たすプロパティの名前のみを列挙する必要があり、
始めは手作業で地道にコピーしていたのですが、途中でReflectionを用いれば自動で列挙可能だと気付きました。
プロパティには列挙条件を示す属性が付与されていたのですが、
属性を取得できることを失念していました。

取得には以下のようなコードを使用しました。
※正確に再現したコードではないのでミスなどあるかもしれません


private static List<string> GetHogeIsHugaPropertyNames(Type type) {
    return type.GetProperties()
               .Select(p => (p, Attribute.GetCustomAttribute(p, typeof(HogeAttribute)) as HogeAttribute))
               .Where(x => x.Item2 != null && x.Item2.IsHuga)
               .Select(x => x.p.Name)
               .ToList();
}

これに気付かなかったため時間を少し溶かしてしまいました。
何か作業する際は開始前に作業手順を確認し、
繰り返し手作業を行う必要があるようならどうにか自動化できないかを考えるようにしたいと思います。

プログラミングのゲーム

こんにちは mtjです。

色々とSwitchのゲームを見ていると割とプログラム系のゲームが多い

”つくってわかる はじめてゲームプログラミング”とかを見てもよくできていると思うし
こういうものからPGに入ったほうがプログラミングの楽しさがわかると思う。

自分はPGの教材を最近は読みませんが、昔に読んだ記憶では ループをさせて 標準出力に1,2等を表示するような例が多かったと思う
正直上の例ではPGはわかるがPGの楽しさは全く無いと感じる。

そういう意味ではSwitchのプログラミング系のゲームは動きを見ながら調整でき 自分で作り変えている感がすごい出ていると思う。

正直コンソールでの勉強はもう古いように感じる、せめてフォーム、画面を出しての動作か Webブラウザ上で勉強する系のプログラムのほうが覚えやすく、楽しいんじゃないかと感じた。

ディスプレイサイズとコードの読みやすさ

2週間ほど前に業務で使用するディスプレイを新調していただけました。
23.5インチほど(解像度1920*1200)から31.5インチ(解像度2560*1440)になったのですが、
コーディングがやりやすくなって大変ありがたいです。
コードの表示領域が大きくなるとこれだけ変わるのかと驚いています。

特にコードの読みやすさが格段に上がりました。
今までは横に長いコードに読み辛さを感じていたのですが、
視野内中心部に余白有りでコードが表示できるようになり問題がなくなりました。

適宜改行を挿入して読みやすく整形しておくに越したことはないと思いますが、
開発者全員が大きなモニタを使用することが確かなプロジェクトであれば、
多少横に長いコードを書いても支障はないのかもしれませんね。

C# ファイルがロックされているかを取得

C#でファイルが開かれてロックされているかを取得したかったので.netを調べたが、どうも無いみたい。
無いものは自作。FileInfoクラスのIsLocked拡張メソッドを社内ライブラリに追加しました。
(どこかのサイトを参考に作成したのですが、どこか忘れてしまいました。)

使用頻度は少ないですが、なにかの役にはたつでしょう。


public static bool IsLocked(this FileInfo file) {
    if (file == null) return false;
    if (file.Exists.Not()) return false;
    try {
        using var _ = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
    } catch {
        return true;
    }
    return false;
}

今年初めに実家に戻った時福井の雪を久しぶりに見ました。
自分の子供の時より少なく 10cmぐらい積もった程度でした。

雪国で暮らしていると雪で一面白くならないと冬が来た感じがしません
最近は福井でも12月はあまり降らなくなっているのでいいものが見れたと思います。

子供のときから雪を見ていると雪が降ってきても冬だなー程度しか思うことはなく
考えることといえば明日自転車で学校いけるのか 電車が止まって帰れないんじゃないかになります。
電車が止まる、自転車通学できなくなれば何十分も真っ白で一直線の農道を歩くことになります。
雪で歩きにくく、寒いので割と苦行でした。

ReSharperのInlay Hints機能の表示切り替え

3カ月ほど前からVisualStudioに拡張機能のReSharperを導入しました。
リファクタの提案をしてくれたり、スニペットを登録できたりと、何かと便利に感じています。

そのReSharperなのですが、デフォルトで型推論varの実際の型であったり、
引数のパラメータ名であったりを表示してくれる機能 Inlay Hints があります。
この機能、他者が書いたコードを読む際には大変便利なのですが、
下記例のように1行が長くなってしまい、逆に不便に感じることがしばしばあります。

a
Inlay Hintsで冗長になる例

そこで、任意のタイミングでInlay Hintsの表示/非表示を切り替える方法があれば良いのにと思い調べてみたところ、
ReSharperの公式マニュアル[1]に記載されていました。
以下の方法でできるようです。

1. スクロールバー上部アイコンを右クリックして表示したコンテキストメニューから切り替える
2. エディタ上で Ctrl+Shift+Alt+5 ショートカットキーを押す
3. ResharperのOptions -> Environment -> Inlay Hintsで、
Enableのチェックを外す or visibilityをShowAlwaysから別の項目に変更する


1. InlayHintsコンテキストメニュー


3.-ReSharperのOptions

2は押すキー数が多く、3はOptionsウィンドウを開くのに一手間かかるので、
この中だと個人的には 1のコンテキストメニューが一番手軽だと感じました。

マニュアルには、visibilityをPush-To-Hintにすることで、
Ctrlキー長押し?やCtrlキー2回押しで表示を切り替えれる旨の記載があるのですが、
こちらは上手く再現ができませんでした。
圧倒的にこちらの方が手軽なので、VisualStudioにて再現できた方がいれば、
その手順など教えていただけると嬉しいです。

[1] インレイヒント | ReSharper: https://pleiades.io/help/resharper/Inline_Parameter_Name_Hints.html

初級ソフトウェア品質技術者 資格試験

11月に、初級ソフトウェア品質技術者 資格試験を受けました。
ソフトウェアの品質技術を身につけ、品質の向上を目的とした試験で、
ソフトウェアの品質向上に関する知識を体系的に学ぶ為に受験しました。

試験に関しては、初級試験の合格率は40%前後なので、きちんと学習しないと合格は難しいようです。
また今回の試験から新しいシラバス(Ver.3.0)となっており、出題範囲も広くなっています。
私の場合はシラバスの用語をピックアップしながら、テキストを読み進めるスタイルで学習しました。
実務で品質を扱っていないと用語や概念が難しい部分もありますが、
ソフトウェアのライフサイクル(企画~廃棄まで)を意識して、
今はどのプロセスの内容の事を指しているのかを把握する事が重要だと感じました。

学習した内容を生かして、
今後は社内のプロセス改善や品質向上に役立てていきたいと思います。

macでの開発

iPhoneアプリの開発を今後行っていくため、初めてmacをさわりました。
今までほぼWindowsしか扱ってこなかったので、これまでの常識とは異なることが多く大変ですね。

どうにかこうにかテレワークで開発が行える所まで準備ができ、少しずつ慣れていっているところです。

新しいことを学ぶのは大変ではあるものの楽しくて良いです。
時間が無限にあれば良いのですが、そうは行かないのでまずは既存の開発を前倒しして、早いことiPhone開発を初めたいところです。

自作PC

こんにちは mtjです

今回自分の使用しているPCをAMDからintel12世代にしました。
CPUの交換は約3年ぶり IntelCpuは10年ぶりぐらいになります。
DDR5+intel12世代で色々と快適になりました。

久しぶりのCPU交換だったので色々失敗
AMDCPUは交換時にすっぽんしてしまったのでマザボにダメージがあるかもしれません。
CDドライブの電源コネクタにエアーをしなかったので内部でショートしたのかCDドライブも動かなくなりました。

CDドライブはだめになりましたが intelCpuもCPUクーラーも簡易水冷にしましたが問題なく動いています。
消費電力は高負荷時で約500Wぐらいでした。
PCは満足な状態になったのでいい買い物だったと思います。

簡易水冷をつけて思いましたがPCケースが大分狭いと感じました。
時代の流れでグラボ等色々巨大化してるので10年前のPCケースではもうそろそろ限界かもしれません。
今度大きい変更のときにPCケースも新しくするべきかもしれません。