技術レベルの向上

mgcです。

ご無沙汰しております。
今年に入ってから出張ばかりでなかなか社内に居る時間が無く
久しぶりに社内に帰ってきました。

PLCの技術レベルの向上は非常に難しい事なのではないかと
最近ふと思いました。
PLCは特定の機器を動かすためのツールであり
その特定の機器についての理解が不可欠だからです。
各シリンダ等の動き方であったりどういう使い方をするのかであったり
PLCに接続されている機器に対しての理解が無く
ただただ出力を出すだけでは動きとして成立しません。

そういったことから現場経験はもちろん
使用した機器の豊富さであったりということが
PLCの開発技術者としては技術力の向上なのではないかと思います。

折り畳みスマホ

最近折り畳みスマホが話題になっている。
つい最近ではとある折り畳みスマホの発売が延期になりました

中国も韓国も取り組みが早く期待の製品ではあると思います
折り畳みの耐久性、問題等すべて解決すれば文句なしのスマホになるとも思われます

折り畳み問題が解決すれば既存のテレビ等も折り畳みが考慮され面積を占めてしまう液晶も引き出し等に折りたたんで片づけておくことも可能になればいいなと思います
折り畳みスマホで止まらずその先の発展も楽しみです

発売されたとして買うかと問われれば買わないと思います。
現在のスマートフォン並みの耐久性があるかでいえば確実にない可能性が高く、1年も経てば問題が洗い出される改良されるのではないかと思っているからです

弊社のソフトウェア開発で主に使用しているC#には型があります。
型にはメンバー情報や許可される演算の種類など決めることで、
目的に必要な型を選んで使用する事ができます。
コンパイラによってタイプセーフ(型安全)が確認できることも、
大きなメリットですね。

一般的に型とは、何かをつくるもとになるもの、という意味です。
プログラムには開始処理があって、
データを取得する処理、解析する処理、結果を出力する処理、
終了する処理、どんなプログラムでも大きな処理の流れはだいたい同じです。

その処理一つ一つを大きな型として捉えることができるようになると、
プログラム全体を見渡せるようになり、
ステップアップに繋がったように思います。

画像処理ライブラリの機能追加

最近、画像処理案件が続いてあり、社内の画像処理ライブラリに色々と機能追加を行いました。

a) ライブラリの64bit対応
b) 画像処理の並列化
c) 欠陥素子補正
d) 色マッチング処理

まだまだ機能追加したいことがあるのですが、時間が足りないです。
無限に開発をしていたいのですが時間は有限なのでしかたないですね。

高性能マウスとプログラミング

こんにちはmtjです。

現在自分は社内でも高性能マウスを使用しています。
昔家で安物のマウスを使用していた時にすぐスイッチ関連がだめになるので家で使用しており、その流れで会社でも使用しています。

大体の高性能マウスにある特徴的な機能としてはマウス更新頻度の調整があることです。
マウスカーソルの更新頻度があがることにより早く動かしても滑らかな軌跡になります。

しかしこの更新頻度一部のマウスの移動、ドラッグ等に反応するアプリでは重たくなります。
マイクロソフトEXCELをウィンドウを持った時にもったり感がでたり、そもそも描画が満足にできなかったりします。

更新頻度が高ければその分マウス移動イベント、ウィンドウサイズ変更イベントが発生するためでそのために間引き処理等が入っていないアプリの場合には処理がもたつき操作不能になってしまいます。

時代が進めば今作っているよりも何倍も高速なデバイス等が現れ予想外のバグが発生したりする可能性もあるのではないかと感じました。

変換・無変換キー

梅の花も満開を過ぎて、
日中は暖かい日差しを感じる事も多くなってきました。
私も最近、桃の花の枝を買って帰りました。
つぼみが開くのが楽しみです。

キーボードの変換・無変換キーですが、
スペースキーの隣で非常にアクセスのいい好立地にあるのに、
機能としてはいまいちでもったいない感じがします。

私はソフトでキーマッピングを変更して使っています。
例えば無変換キーはこんな感じです。
無変換 + J : カーソルキー左 (連打で高速移動、長押しでHome)
無変換 + L : カーソルキー右 (連打で高速移動、長押しでEnd)
無変換 + I : カーソルキー上 (連打で高速移動、長押しで先頭へ)
無変換 + K : カーソルキー下 (連打で高速移動、長押しで最後尾へ)
無変換 + U : BackSpace
無変換 + O : Delete
無変換 + Space : Enter
などなど。

うまく利用するとマウスへの手の移動が減り、
楽に入力することができます。
道具が自分の手に馴染んでいく感じが心地良いです。

ログ + スクリーンキャプチャ

インフォテックで作成するソフトではログファイルを必ず出力するようにしています。

稼働している設備でなにか問題が発生した場合などにログファイルを調べれば、エラーメッセージ・例外スタックトレース・通信内容・シーケンス状態などが全てわかるようにしています。
これにより問題発生時の原因究明・問題改善が容易になります。

今回、ログ出力に機能追加を行い、エラーメッセージを表示する直前にスクリーンキャプチャ画像ファイルを保存する機能を追加しました。
これにより問題発生時の状況把握がさらに容易になります。

先日もこの機能のおかげで、装置問題発生時のA/D即値や波形が確認できたことで、問題が装置側にあることがすぐに分かり即解決できました。

ガラスのデバイス

mtjです。

友達がタブレットを落としてしまいガラス(主に画面)が割れてしまったとのことでもうちょい画面のガラスについては何とかならないのかなと思いました。
自分はノートPCのトラックパッドは割ったことがありますがスマホの画面は割ったことがないためあまり経験がないのであれですが結構割っている人は見ます。

ガラスの画面はタッチパネル液晶と相性がとても良いです、クリアでタッチの感触も心地よいです。
昔はガラスのマウスパッド等もありました(マウスが削れます)

割れずにさらに現在のタッチ感触、硬度そのままの素材があればいいのですが現状はそのようなものはないと思うので
液晶自体は割れない素材表面にシート等で硬度を高めにすれば落としても割れるのはシートだけで交換も容易と思ったのですが
メーカーが実践しないということは自分の知らないとこでそれ以外の理由があるのでしょう。

自分の能力を知るということ

要求される内容に対して、
1. そもそも実現が可能かどうか
2. 実現するためにどの程度の日数がかかるのか
プログラミングを始める前に、これらの情報が必要となります。

知識や経験が豊富にあればよいのですが、
自分が今までにやったことがない事だと、非常に苦労します。
これらを見誤ると開発のリスクとなり、
納期などに重大な影響を与えてしまいます。

自分の能力を知るということは、
自分に必要な工数を正しく見積もることができる、
という側面を持っていると思います。

未知の事柄は当然調べなければなりませんが、
調べた結果を自分の知識レベルに落とし込み、
実現までの道のりを描くことができるよう、
意識しながら技術を向上させていきたいと思います。

64bitのOpenCV

画像処理ライブラリOpenCVを良く使用するのですが、いつも32bit版のDLLを使用しています。
本来なら64bit版を使用したいところですが、同じソフト内で使用する他のライブラリが32bitしか無いことが少なからずあり64bit版を避けていました。

今回、32bit版と64bit版でどの程度の性能差があるのかが気になり確認してみました。
その結果、64bit版に変更するだけで3割くらい速度アップしました。
処理内容にもよるでしょうか、単純に速くなるのはありがたいです。
それと64bitにすることで1プロセスが使用できるメモリ上限も増えるので、メモリ不足の心配も少なくなります。

今後はできるだけ64bit版を使用するようにし、32bitでしか動作しないライブラリなどは32bitの別プロセスで実行し、プロセス間通信でやりとりする作りが良いと考えています。面倒ですけど。