2つのテキストファイルの差分を表示するプログラム作成

そういえば、業務外では全くプログラミングに触っていなかったな、と思ったので、最近コーディングの練習も兼ねて、業務外でも少しでもいいからプログラミングに触ろうと思いました。
最近DiffMatchPatchというライブラリを使用する機会があったので、Winmergeのように2つのテキストファイルの差分を表示するWindowsフォームコントロールを制作してみようと思いました。

現時点ではまだ形になるものはできていませんが、少しずつ機能を完成させていければ、と思います。

C#でCPUパフォーマンス解析

作成したアプリの各処理のCPU使用量を知りたい場合、VisualStudioがインストールされている環境ではパフォーマンスプロファイラを使用すれば良いのですが、本番環境の本番運用ではそうはいきません。

というわけで、C#でCPUパフォーマンス解析を行う機能を実装しました。

詳細は記載しませんがざっくり説明すると、ProcessThreadインスタンスのTotalProcessorTimeプロパティでプロセッサを使用した時間の合計値が取得できるので、各処理開始から終了までのTotalProcessorTimeの差を積算していき、
各処理ごとのCPU使用量を集計することで実現できます。

この集計結果を定期的にログファイルに出力しておけば、問題発生時や性能改善時の役立ちそうです。

技術の進歩

こんにちはmtjです。

色々な展示会にいきますが本当にデジタル関連の進歩は早いなと感じます。
一昔前ならARMで低発熱、低電力で小さいPCがという話だったのですが

現代はクラウド、無線技術の進歩でリモートで操作、もしくはリモート、クラウドに演算機能を配置し
小さい端末で現場に反映する等を行っています。
intelのRealSensもそうですが人のボーン検知も今では普通のスマホのカメラで可能になったり
一般の人でもそういった物が触りやすくなっています。

こういった技術が展示会等でも溢れているとソフトを扱う側、特に学生はいろんな技術を簡単に扱える時代なんじゃないかと感じます。
なんでも扱える反面 何も作らなくても技術が使える分どう扱うかの発想が大事になってきますね。

ソフトを作る側でも既存の技術をどう上手く使うかというのが課題な気がします。
0から作っていては予算、時間も足りません その時に既存の技術を使用して時間も予算も低く抑えるのがソフト技術者の腕になってきているのだと感じます。

WindowsFormにおけるコントロールの別ウィンドウ化

弊社で最も規模の大きなプロジェクトはWindowsFormにて開発が行われています。

先日、そのプロジェクトにてコントロールを別ウィンドウ化する処理を
既存の実装を参考にして実装したのですが、
予想以上に手軽に出来て驚きました。

以下のようにするだけでした。

// 別ウィンドウとなるフォームを作成
var window = new Form {
	Owner = this.ParentForm,
	Width = this.Width,
	Height = this.Height
};
// 別ウィンドウ化したい対象コントロールの親コンテナに新規ウィンドウをセット
// (別ウィンドウに移し替える)
targetControl.Parent = window;
// 別ウィンドウクローズ時に親コンテナを元に戻すように
window.FormClosed += (_, _) => {
	targetControl.Parent = this;
};
window.Show();

親コンテナのSetterは参照を移し替えるだけかと思い込んでいたのですが、
配置も移し替えるのですね。
便利に作られていてありがたいです。

仕事を依頼した人との認識違いを防ぐために

最近、先輩や上司から仕事を頼まれたとき、仕事に取り掛かる前に、説明してもらった作業内容・作業手順をエクセルにまとめ、それを依頼者に見せて自分のまとめた内容が合っているかどうか確認して頂く、ということを行っています。
また、そのエクセルは仕事を依頼した人と共有し、必要に応じて、作業中にも作業内容・手順の修正・加筆を行っています。

説明してもらった作業内容を自分が正しく理解しているかを見てもらい、
間違っている部分や足りない部分があれば指摘して頂くことで、
私と仕事を依頼した人との認識をすり合わせることができます。
このことで、作業中に私と仕事の依頼者の認識の違いによるミスや手戻りが発生するのが少なくなっていると感じているので、これからも続けていこうと思います。

Windows11の小さいタスクバー

Windows11では残念なことに「小さいタスクバー」表示が設定から出来なくなりました。
ノートPCなどでは限られたデスクトップ領域を広く使用したいので小さくしたいですよね。

レジストリを直接弄れば小さく出来るのですが、日時やアイコンがはみ出ていてブサイクです。

どうにか出来ないかと調べていると、フリーソフトのTClockを使用すると改善できることが分かりました。
助かりました。
※似たソフトにTTClockというものがありますが、これは全く別のソフト。

プログラムのできるSEとできないSE

こんにちはmtjです

PGの書けるSEと 書けない(書いたことがない)SEとのことで
自分は両方に合ったことがありますが だいたい上手くいくのはPGの書けるSEでしょう

書けないSEでうまくいっている例はSEの人がすごい勉強家でPGの知識、システムの知識等様々な分野で精通しているか
直下のプログラマーが優秀で大体の事を実現できる、対処してくれる人がいるかな気がします
(そもそも勉強家なSEはPGやってないだけでやれば書ける人が多いと思いますが)

PGを書いたことがあるということは リソースの考え方等作る知識があるので無理な事は無理ということができる可能性が高いです。
書いたことがないSEは無理かどうかも分からず承諾して 結果実現時に頓挫している例をよく見る気がします。

自分の経験ではなんちゃってSEを見る機会が多めだったのでSEと聞くとちょっと身構えてしまいます。

栄養ドリンクと夏季休暇

皆さんは休日、どのように過ごされていますでしょうか。

自分は疲労により椅子に座る気力もなくベッドに転がってだらだらとスマホを弄るなど、
無をしてしまうことが多々あります。
流石にもっと精力的かつ有意義に過ごしたいと思い、
先々週から週末に栄養ドリンクのユンケルを1本飲むようにしてみています。
流行りのエナジードリンクでなく栄養ドリンクなのは、
エナドリは学生時代に飲み過ぎたせいか少し苦手になってしまったからです。
まだ2週だけですが、心なしか週末に心身共に元気な状態で過ごせた気がします。
(プラシーボかもしれませんが。。。)

ところで、弊社は明日から15日まで一応夏季休業となっております。
この連休も元気に過ごせるよう、ユンケルを飲んでおこうかなと思っています。
皆様もお体にはお気をつけて、元気にお過ごしください。

ゲリラ雷雨

昨夜、関東では激しい雷雨に見舞われたそうです。
群馬県では局地的に1時間に120mm以上の雨が降った所もあるそうで、
想像しただけでも恐ろしいなと思いました。

この時季になるとゲリラ雷雨が特に起こりやすくなりますね。
激しい雨による道路の冠水や川の増水、落雷、突風などに
皆様くれぐれもお気を付けください。

UVCカメラ対応

先日、WEBカメラなどUVC規格のカメラを使用する案件を行いました。

いつもはUVCカメラのアクセスはOpenCVで行っていたのですが、OpenCVで露光やフォーカスなどのサポート有無や値範囲の取得方法が分からず(対応いていない?)、しかたないのでDirectShowを使用しました。

DirectShowのCOMオブジェクトを直にアクセスして操作するのはなかなか大変でしたが、良い経験になりました。
ライブラリ化を行ったので今後の案件では楽に使用できそうです。