C# おすすめ書籍

弊社では主にC#を用いてソフトウェア開発を行っています。
そこで初学者の方向けにおすすめの書籍をご紹介します。

1. 新・標準プログラマーズライブラリ なるほどなっとく C#入門
著者:出井 秀行 氏
対象者:プログラミングを初めて学ぶ方
・プログラミングの基礎から丁寧に解説されています。
変数やif などの制御文が初めての方でも、読み進める事ができると思います。
Unityスクリプトに初めて触れる方向けの参考書としても良いと思います。

2.独習C# 新版
著者:山田 祥寛 氏
対象者:VBAなど他の言語を少しでも触れた事がある方
・C#の言語仕様やオブジェクト指向について体系的に学べます。
本書でC#の基本部分は網羅しているので、本格的に学びたい方が
最初に読む本として適していると思います。

3.実戦で役立つ C#プログラミングのイディオム/定石&パターン
著者:出井 秀行 氏
対象者:C#を実務で使う方、C#のレベルアップを目指す方
・C#で「こう書くべき」というイディオムが豊富に紹介されています。
プログラミングの難しさの一つとして、何通りもの書き方が存在する事が
挙げられますが、定石とも言える書き方をその理由とともに紹介されています。
特にLINQやコレクションの操作を磨きたい方におすすめです。

4.増補改訂版 Java言語で学ぶデザインパターン入門
著者:結城 浩 氏
対象者:オブジェクト指向をさらに学びたい方
・言語はJavaで書かれていますが、C#の基礎を知っていれば読み進められます。
デザインパターンを学ぶことで、インタフェース、継承、委譲などの使い方
とオブジェクト指向についての理解を深められます。
もっと早く読んでいれば良かったと思えた本です。

信頼できる内容を、体系的に学習する事が近道だと思います。
以上、おすすめの本でした。

.NET Framework から .NET Core へ

C#などで作成した既存のプロジェクトを .NET Framework から .NET Core へ移植するのに必要な作業量を調べるツールが有ることを知ったのでメモ。

.NET Portability Analyzer

早速、社内ライブラリで試してみたところ、.NET Coreでさポートされていない機能の一覧が合計25箇所表示されました。DataContextとRemotingに関する内容が大半です。
これくらいなら対応できそうです。

あとは参照している別ライブラリ類ですが、どうも.NET Coreプロジェクトから.NET Framework を使用しているDLLが使用できるようなので大丈夫そうです。
試していないですが、以下のサイトなどで出来ているのでなんとかなるのでしょう。
https://qiita.com/soi/items/e1cf2abf9845164bf439

装置仕様

mgcです。

お客様から提示いただく装置仕様は装置製作の要といっても過言はないと思います。
その装置仕様を基に製造、制御が動きを作成していくからです。

仕様が定まらず納期問題の為、着手し一度実装を行ったものに対して
仕様変更が起きることが多々ありますが
正直2度手間,3度手間になってしまい、さらに実装が遅れ出荷が遅れるという
悪循環が起こってしまいお客様への印象も悪くなってしまいます。

なかなか完成品を目の当たりにしていないので
仕様を固めるのは難しいかもしれませんが
きちっと仕様が決まっているものに対しての実装は
やはり実装が行いやすいです。

VRデバイスと酔い

こんにちはmtjです

少し前にVRデバイスの販売ラッシュがありました
Oculus,VIVE,PSVRと一時期はVRが次世代デバイスのような感じで頻繁に表に出ていました。

現状は落ち着いておりますが それぞれ新製品も出しております
現在はスタンドアロンで動かすことが可能なOculus Quest等も発売されております

VRデバイスを触ったことが無い人は分からないと思いますが 動くものを体感できるVRは強烈に酔います
普段から車とかで酔いやすい人は酔い止めも一緒に購入した方が良いです

自分はあまり酔わないほうですが長時間していると少し気分が悪くなりました。

VRに慣れないうちはプラネタリウムVRとか猫VR、海VRとか眺めるだけのもので我慢しましょう

VRの酔いにくくなる工夫とかが増えてくればこれからも第一線でなくともアミューズメント系で流行るのではないのかなと思います

画面デザイン

先日、ポスター制作や動画編集を専門にされている方と、
お話をする機会がありました。
どうすれば良いデザインができるのか率直に伺ったところ、
その方は「同業他社のデザインを研究する」そうです。

ソフトウェア制作の現場においても、
お客様からデザインを指定される場合や、
新規でデザインを考えなければならない場合などがあります。

特に新規でデザインを考えなければならない場合、
他の同じような機能を持つソフトはどのような画面構成をしているのか、
実際に自分が使う立場として参考にするというのは、
非常に重要なポイントだと思いました。

ソフトウェアにおいてもユーザー目線で、
使いやすい UI / UX を心がけたいと思います。

DataGridViewに任意のコントロールを表示

今回もまたWindowsFormsのDataGridViewコントロールを拡張したお話。

任意のコントロールを表示できるセルを実装しました。

セルのValueプロパティにコントロールをセットすると、セルの描画位置にそのコントロールが表示されます。

もちろん、セルに表示したコントロールを操作することが可能です。

今回の実装により、DataGridViewで表現できる幅がさらに広がりました。

夏の幕開け

mgcです。

大変ご無沙汰をしております。
長期間現場に出ておりました。

現場に出ている間に梅雨が明け、本格的な夏へと入ってしまいました。
8月に入り熱中症で搬送される方が急増し、亡くなられている方もおられるみたいですね。

お盆は連休工事の為、出張で外出しておりますが
連休の為工場内は冷房無しでの作業となります。
十分注意をし体調管理は万全にしたいものですね。

こまめに水分補給を行い今年の夏を乗り切りましょう。

プログラム言語

mtjです。

プログラム言語は各分野、端末、行いたい事に特化しているか等で様々な言語を使用しています。
最近VB6を行って思ったことはメインで使い慣れている言語があることでいろんな言語に対応できることが可能だと思いました。

基本的なメモリの動き、スレッドの動き等が身についたため他の言語ではC#のあれが簡単に書けるとか、C#で自動でやっていることを自分で書かないといけない等
C#で置き換えて考えていけるのでどの言語もすんなり基本的なことは行えるようになりました。

1つの言語をメインで頑張るのも悪くないことだと感じました

新旧開発環境

社内のPC開発環境は、主にVisual Studioを用いてC#で開発しています。
時折お客様からVB6などで作られた、
既存ソフトウェア資産の保守を依頼される場合があり、
その場合はVB6などのコードを読んで、必要な実装を行います。

Visual Studioは非常に優れたIDEなので、
古い言語や開発環境を使ってみると、特にそれを実感します。
必要な実装部分にさっと飛んで元に戻ってきたい。
自動でインデントを付けて欲しい。
コードを色で分かりやすく表示したい。

これらは普段当然のように使っている機能のなので、
とにかく様々な事が気になってしまいました。
最近の言語や開発環境は、
それだけ改善されて使いやすくなっているということですね。

それにしてもVB6が動作しているPCは、
スタンドアローンなWindowsXPが多いと思います。
現在もまだ多く使われているかと思いますが、
そろそろハードの限界も視野に入れる必要がありそうです。

DataGridViewのホットトラッキング

今回もWindowsFormsのDataGridViewコントロールを拡張したお話。

マウスカーソル下にあるセルの背景色・前景色を自動で変更する処理(ホットトラッキング)を社内ライブラリに実装しました。プロパティの設定だけで実現できるのでコーディング不要です。

内部処理は、DataGridViewのOnCellPaintingメソッドをオーバーライドし、マウスカーソル下かによってCellStyleを変更することで実現しています。