再インストール

サポートセンターに電話で問い合わせると「Windowsを再インストールしてみてください」と言われました。
いやいや、まだ問題の原因が解明されていない。
そして、「してみてください」というのはどういう事か?
我々、ラダーマンのPCには各社のエンジニアリングツールが山ほどインストールされている。
Windowsを再インストールした後、それらのツールも再インストールするには1日仕事になる。
なぜなら、再インストールしたソフトの数だけアップデートが必要になるから。
ましてや、「再インストールしてみて…」というのは「再インストールしたところで問題が解決する確証はない」という事。
結局、自分で色々調べて問題は解決しました。(もちろん、再インストール無しで)
最近、確かに、「Windowsのせい」にして逃げようとする傾向が強いと思う。
リンゴ屋さんにも「BootCampの再インストールを…」と言われた事がある。
メーカー様、サポートの質を上げて頂きたい。

どちらが良いのか…

mgcです。

最近ロボットアームを触る機会がよくあります。
そこで設備によってロボットの制御方法が異なることに対して
よく戸惑いがあるのですが

ロボット側でティーチングを行いそのポイントに移動するよう
シーケンサ側でいちいちポイントを指示してあげるのか

一連の動作をするようロボット側でプログラムを組み
シーケンサ側からは起動指令のみを渡してあげるのか…

前者のデメリットはタクトタイムが伸びてしまう可能性がある事と
ラダーが複雑化してしまうことだと思います。
メリットはどのメーカーのロボットにも基本的に対応可能ということ。

後者のデメリットはロボットのメーカーによってプログラムの書き方が異なるので
その都度ロボットのプログラムについて理解しなければならない点
メリットはタクトタイムの短縮が可能な点とラダーがシンプルになるという点だと思います。

んー…どちらが良いものか考えものです…

展示会等を見て

こんにちはmtjです。

展示会を見ましてソフト系の展示会はAI、IOT、遠隔操作等が流行っていると感じました。

世の中が省力化に動いているような気がします。

ARを使い技術者が遠隔から作業者に指示を出す、ロボットにAIを組み込み配置等が変化しても柔軟に適応できる
IOT、遠隔通信技術により遠隔からでも保守、状態の確認が可能になる等です。

まだまだAIと言っても展示会用に特化していて、実際にはプログラムで状態判定をしているかAIかわからないもの等もありますがあと数年後には
単純作業はAIを導入したロボットが行うのではと感じました。

AIの保守、導入コスト等が解決されればすぐに広まるのではないかと感じました。

10年後が楽しみになりました。

ソフトウェアのローカライズ

ソフトウェアのローカライズとは、外国の言語にも対応することを言います。
弊社のソフトウェアもローカライズを行う場合があります。

英語が主ですがローカライズを行う際、
どのような単語や表現を使うべきか気を付けています。
あまりにも長い単語を使うと、デザイン的にもはみ出してしまったり、
2行で表示されたりしてしまいます。

例えば「輝度」という単語に対して、
一番しっくりくる英単語が「Brightness」だった場合、
英語表示の場合は文字数が多く、
場合によってはスペースが足りなくなってしまいます。

自分のスマートフォンを英語表示に切り替えてみると、
狭い画面の中でどのような表現がされているのかとても参考になりました。
適切な表現とアイコンで、使いやすいソフトウェアを開発したいと思います。

SSD

最近、会社で使用しているデスクトップPCとノートPCをSSDに交換しました。
NVMeなのでHDDに比べて、シーケンスアクセスで10倍、ランダムアクセスで100倍近く高速です。

PC操作時の色々なタイミングで速度を実感でき、快適に開発が行えるようになりました。

PCのフォント

Windows10のシステムフォントは游ゴシックになりました。
また、個別にフォントの種類と大きさを選択する機能が無くなりました。
ノートPCの解像度が2880×1800の場合、Windows10の文字は肉眼では見えません。
「えー!どうすんの?」
Windows10の新機能にディスプレイのカスタムスケーリングがあります。
これを150%に設定すると2880×1800が1920×1200になります。
いつもの感じで少し縦長になりました。(ラダーマンは縦長が好き!)
「あのね、個別にフォントサイズをいじらんと全体の解像度を調整してよ」
という事なのでしょう。
多種多用なディスプレイに対応するための賢い方法だと思います。

ブルーライトカットメガネ

こんにちはmtjです。

最近メガネを買うときはブルーライトカットメガネにしています。
とりあえず付けれるものは付けとこうという考えですが正直あまり効果は実感できません。
昔からPCに向かって作業等をしていたため慣れているのもあって目の疲れを感じにくいのかもしれません。

次買うものは無しを選んでみて効果を確認したく思っています。

レンズは無色のブルーライトカットメガネがいいかもしれません、色付きも度合いがあるのかもしれませんが色付きのメガネで買い物等をすると
肉の色が変色しているように見えたりで正しく色がわからないので古い肉なのか新しい肉なのかよくわかりにくかったり傷んでいるものの見分けがつきにくくなったりしている気がします。

そういう意味でも無色のメガネは買っておかないといけないなと感じました。

コメントもコードの一部

他者の書いた古いソースコードの修正したり、機能追加をしたり、
メンテナンスする機会がありました。
思った以上に時間を費やしてしまったのですが、その主な原因は、
①処理の大きな流れが見えてこない
②なぜその処理を行っているのかが分からない

というものでした。
時間が経ったり、当事者ではない人が読んだりすると、
その開発者がどのような考えでその処理に至ったのか、
なかなか理解できない事を実感しました。

コードのコメントには「なぜそうするのか」など、
コードからは読み取れない情報を記入するべきだとあります。
一方、何でも書けばよいわけではなく、
余計なコメントは可読性を損なってしまいますが、
それでも無いよりはあったほうが助かります。

メソッドやクラスを定義するときと同じように、
使う側の相手の気持ちになって、使いやすいように、
読み手の気持ちになって、処理の理由がわかりやすいように、
適切なコメントを考えたいと思います。

 

ActionデリゲートやFuncデリゲートでタプルを使用

またC#のタプル(ValueTuple)の話です。

ActionデリゲートやFuncデリゲートは、複数個の引数を指定することができます。
例えば以下のようにstring型の引数を2つ受け取るActinデリゲートを受け取るHogeメソッドが定義できます。
(実装内容に意味は無いのであくまで参考の実装です)


void Hoge(Action<string, string> action) {
    action("aaa", "bbb");
}

これで動くのは動きますが、2つのstring引数が何者なのかコードからは全く読み取れないですね。
このメソッドを作った本人で無いと使用できないメソッドになっています。
今までならなせいぜいXMLコメントに引数の意味を記載してメソッド使用者に伝えることになります。
XMLコメントに「第一引数は名前、第2に引数はIDです。」みたいなことが書いてあれば、利用者は以下のように実装が可能でしょう。


Hoge((name, id) => {
    Console.WriteLine(name);
    Console.WriteLine(id);
});

しかし、タプル(ValueTuple)を使用すれば、このような問題は解決します。
先程のHogeメソッドを以下のように変更し、string型2つを保持するタプル変数1つにします。


void Hoge(System.Action<(string Name, string Id)> action) {
    action(("aaa", "bbb"));
}

これならば、2つのstring型に名前が付き、いちいちXMLコメントに記載しなくても最低限の意味は分かるようになりました。(あくまで最低限。XMLコメントが不要ということでは無いです。)
利用者側の実装は以下のようになります。


Hoge(x => {
    Console.WriteLine(x.Name);
    Console.WriteLine(x.Id);
});

60回目の誕生日

とうとう、その日がやって来ました。
いつもと変わらない朝のハズなのに
何故か、ひどくヘコんだ気分でした。
これから、益々、廃人に向かて行く。
決して元気になったりしない。
TVで足腰と意識のしっかりしたご老人を見ると
本気で羨ましいと思う。
自分もそうなりたいと思う。
どうしたらあのようなご老人になれるのだろうかと思う。
足腰が丈夫でもボケたら周りに迷惑。
頭がしっかりしていても車イスなら自分が地獄。
最悪の場合、30年かけて弱っていくわけで。
それでも「生きたい」と思うだろうか?