アキュムレータ

KV-STUDIOではアキュムレータを多用します。
アキュムレータを使うと演算命令を連続的に書けるので見やすいです。
また、一時退避的なDMも不要です。
私はマイコン(Z80)出身なので違和感なく使いますがPLCから始めた人は使いにくいようです。
※アキュムレータは実デバイスではないので・・・。
PCの関係者であればKV-STUDIOのスクリプトを使うと良いのではないでしょうか。
(お客様の許可が出れば、の話ですが)

便利?

mgcです。

今年も無事に花粉症を発症しまして
大変な時期を過ごしておりますが皆さまいかがお過ごしでしょうか。

次回からのメルセデスのSクラスに
また特殊技術が採用されるというニュースを見ました。

その特殊技術というものが斬新で
雨が降ってきた場合や、雪が降ってきた場合、前方を照らしているヘッドライトの形を
雨のマークや雪の結晶のマークに一定時間変化させるというものです。

確かに素晴らしい技術だと思うのですが
本当に必要なのでしょうか?

現代に溢れるもののうち必要なものを通り越していろいろな機能を付加し
その分値段が上がっているというものをよく目の当たりにします。
便利とはなんなのでしょうか。
便利というのは難しいなとこのニュースを見て感じました。

無線技術

こんにちはmtjです。

最近無線の進化はすごいと感じています。

それも家でヘッドセットを使用しているのですが断線で以前の有線ヘッドセットがダメになり今回無線にしてみようと考えたためです。

あまり遅延があっても音は問題がないので無線にしました、steelseriesの無線ヘッドセットです。
送受信機とヘッドセットという構成で送受信機は独自規格ですが音ゲーをしていても遅延を感じないくらい高速通信をしています。
今までと比べて充電をしないといけない欠点はありますがケーブルの取り回し等を考えるとかなり楽になり遅延も少ないのでかなり良い買い物をしたなと感じています。

無線のイメージといえば遅延が大きくそういった速度が要求されているものでは使えないと思っておりましたが考えを改めました。

今使っているマウス、キーボード等も余裕があれば無線にしてすっきりさせたいですね。
よく考えないと結局充電ケーブルでごちゃごちゃしそうですが。

Xamarin.Formsを使用してWindowsデスクトップアプリ開発

モバイル用のクロスプラットフォームUIツールキットのXamarin.Formsですが、Windowsデスクトップアプリにも使えるようになるそうです。今後使うかも知れないのでとりあえずメモ。

https://qiita.com/tan-y/items/cf5088c6853ebb1b6c64
https://qiita.com/tan-y/items/e08d297c2d013214eb83

冬の電気自動車

福井県の国道8号線で大雪による3日間の立ち往生が発生しました。
こんな時に電気自動車はどうなるでしょうか?
急速充電さえ可能ならば一酸化炭素中毒の危険性が減って安全なのですが。
ドイツは2040年までに内燃機関のクルマを無くす計画です。
あと22年の間に夢のような電池が開発されることを期待します。

医療の進歩

mgcです。

最近の医療の進歩にはとても驚かされます。
手術を終えた患者に対し、痛みを和らげるよう24時間遠隔で監視され
痛み止めが切れる前になると自動で一定量の痛み止めを注射するようになっているようです。
これは手術後の痛みを和らげる為だけではなく
リハビリへの移行を早める為としても良いのだそうです。

手術後のリハビリはかなりの痛みを伴うものと聞いたことがあります。
ただ上記の方法をとっているとその後のリハビリへの移行が患者にとって苦痛にはなりにくいようです。
痛みをコントロールすることで早期回復が望める、、
医療の進歩は本当にすごいです。

ソフトの価格と出来

こんにちはmtjです。

ソフトでは内部のソースまではわかりません

普通に動いていれば何も問題ないのでソースが汚かろうが、綺麗だろうがお客さんには関係ありません。
ではどんな時にソースの汚さで問題になるかというと基本は異常時と変更時です。

異常時の場合はソースが複雑な方が修正が長引き修正による不具合も起きやすくなります。
変更時は変更箇所が多くなったり多い分テスト、手戻りも多くなり費用が必要になります。

では汚いソースで行う利点は何かというと考える時間がいらない分速度が速い=安いということです。
もちろん上手く行けばの話ですが設計、共通化の検討等もしないため手戻りがなければかなり早くなると思います。

もちろんですが上記は小さいソフトならばの話です、大きくなればなるほど共通化による同じようなコードがなくなっていくので基本は設計もコードも綺麗なほうがはやくなります。

只お客さんから見ると金額と仕様書のみなのでそういった後々の部分については頼む側からすれば全くわからないのが現状です。
頼むときの指標にするためにソフト開発のレベルを測るための指標が何かあるといいのかもしれません。

C#のZip拡張メソッド

以前にブログに記載しました、C#7で追加された分解の機能に関係するお話。

この分解が増えたことで、LINQのZip拡張メソッドをもっと使いやすくできるのではなかろうかと思い、新しいZip拡張メソッドを作成してみました。

まず、いままでのZip拡張メソッドの例。


var xArray = new[] { 1.1, 2.2, 3.3 };
var yArray = new[] { 4.4, 5.5, 6.6 };
foreach (var item in xArray.Zip(yArray, (x, y) => new { x, y })) {
    Console.WriteLine($"X={item.x} , Y={item.y}");
}

xArrayとyArrayをマージして新しい匿名クラスを作成しています。
匿名クラスを作成するラムダ式を指定するのが面倒ですね。

で、新しく追加したZip拡張メソッドを使用すると以下のようになります。


var xArray = new[] { 1.1, 2.2, 3.3 };
var yArray = new[] { 4.4, 5.5, 6.6 };
foreach (var (x, y) in xArray.Zip(yArray)) {
    Console.WriteLine($"X={x} , Y={y}");
}

匿名クラスを使用せず、Tupleクラスのインスタンスを返すようにしました。
C#7で増えたタプルではなく、昔からあるTupleクラスなので、通常ならば値にアクセスする場合、item.Item1やitem.Item2などのようにxやyの名称がなくなり可視性が悪いですが、分解のお陰で、xとyの名称そのままで値にアクセスできるようになりました。

ちなみに、新しく作成したZip拡張メソッドの実装は以下となります。


public static IEnumerable<Tuple<T1, T2>> Zip<T1, T2>(this IEnumerable<T1> items1, IEnumerable<T2> items2) {
    return items1.Zip(items2, (item1, item2) => Tuple.Create(item1, item2));
}

同じようにして、3つのシーケンスをマージするメソッド、4つのシーケンスをマージするメソッドと、いくつか作成しておくと便利です。

100年人生

人生100年という時代が訪れます。
還暦(60歳)になったとき、あと40年生きなければなりません。
朝昼晩、死ぬまでに4万3千800回の食事をします。
(60歳の時点ですでに6万5千700回の食事をしている!!)
おそらく勤めていた会社の寿命のほうが短くなるのでは?
ハローワークが老人で溢れます。

機種変更

mgcです。

以前ブログでお話ししていたのですが
この間現場に出ているときにIphone6がフリーズし、
1日スマホが使用できなくなる現象が発生しました。
もちろん再起動もできませんでした。

電源が切れるのをひたすら待ち、やっと再起動を行い再度使用できることが出来ました。。
が!
さすがにこのスマートフォンと長くお付き合いすることは出来ないと思い
ようやく機種変更を行いました。

結局IphoneXに変更しましたが慣れてしまえば操作性も気にならないですね。
新しい機能と言ってもこれと言って便利だったりするわけでもなく、
少し残念な気がしますが、これから2年間ほどお世話になろうと思います。