マークダウンメッセージボックス

メッセージボックスをマークダウン記法で記載できると、表示方法の幅が広がり役立つのでは無いかと思い、社内ライブラリに追加してみました。
スタイルシートも設定できるようにしました。

使い方は以下のようになります。


var msg = new MarkdownMsgBox("#ヘッダA\n* 項目A\n* 項目B\n\n##ヘッダB\nメッセージA\nメッセージB\n\n-----\n1. 項目C\n1. 項目D", "テスト", MsgBoxButtons.OKCancel);
msg.StyleSheet = "h1 {font-size=30pt;  border-bottom: solid 4px Gray; color: Blue;}\nh2 { font-size = 20pt; border-bottom: solid 2px Gray;color: DarkBlue; }";
msg.Show();

結果のメッセージボックス表示は以下のようになります。

海外主張中

シンガポール国立大学(NUS)に出張中です。
この国の76%は中国系、17%はマレー系、7%がインド系です。
にもかかわらず(中国系が圧倒的に多いのに)、公用語は英語です。
英語が話せれば何系の人であろうと会話ができます。
この大学にもいろんな国の学生がいます。
世界大学順位No.12(アジア順位No.1)というのが納得できます。
英語を話せない東大生は世界で34位止まりです。
日本にカタカナがある限り日本人の英語力は向上しないでしょう。
わざわざカタカナに変換することで元の言葉を破棄してるわけですからね。
それに、ニュースでも中国人の名前を日本の漢字読みで発音します。
これは大変失礼なことです。中国には中国の発音がありますから。
まったく違う発音で自分の名前を呼ばれたあなたは返事をしますか?
トランプ氏のことをとやかく言う前に日本人は外国語についてもっと真剣に考えないといけません。

オートメーション

mgcです。
最近、Youtubeでいろいろな工場の動画を見るのにはまってまして
たまたまAMGという車の工場の動画を見た時の話なのですが、
この工場はエンジン一つ一つを作業者が手作業で組み立てていました。

世間はオートメーションの時代なのにすごく珍しいなと
見入ってしまったのですが、
一つのエンジンを一人の作業者が担当するというところにも驚かされました。
量産を考えるなら、流れ作業で工程ごとに分けたほうが効率がいいのではないかと思ったからです。

そもそも量産を考えるならすべてロボットに任せればいいのですが。。。

ただそこまで手作業にこだわる理由がわかりませんでした。
ロボットでは補え切れない何かがあるのでしょうか。
気になるところです。

オーブン調理

mtjです。

冷凍ポテト等オーブンで調理することで油等を使用せずに作る事ができます。
冷凍ポテトは外がカリカリになり、焼き餃子も同じようになります。
もちろん電気代は少々かかりますが油の処理等が簡単になるのでおすすめです。
フライパンの前につかなくてもいいので色々楽もできます。
アルミホイルを被せたこ焼きを焼けばレンジで調理するとはまた違った感じに出来上がります。

以外とオーブンは便利なので色々使ってみると面白いかもしれません。

スイスの時計師

週末にスイスの時計師についてのドキュメンタリーを見ました。
彼らは、極小部品を組み込んだゼンマイ仕掛けの機械式時計を年に数本、
手作業で仕上げています。

納期に間に合うよう、スケジューリングを行い、
設計に基づき、数百に及ぶ部材を手配し、彫金師など関係者と協力しながら、
部品の加工や組立てを根気強く行います。

とにかく非常な集中力と忍耐力で作業を進めるのですが、
その中で彼らが大切にしているのは、「顧客のニーズに応えること」は勿論ですが、
「自分の技術に対して拘りを持つこと」、「その技術を全て注いだ製品に誇りを持つこと」だそうです。それにより製作中のモチベーションを保っています。

同じものづくりに携わる者として、この心構えは大切にしたいと感じました。

KeyValue属性

C#のお話です。

KeyとValueのペアを定義できる属性があると汎用に使えて便利ではなかろうかと思い、KeyValueAttribute属性クラスと、列挙型の場合に簡単にKeyValue属性の値にアクセスするためのEnumInfoクラスを作成してみました。以下に使用例を記載します。


//KeyValue属性を使用した列挙型の定義
public enum Idol {
    [KeyValue("Age", 16), KeyValue("Height", 162), KeyValue("BloodType", "A")]
    Chihaya,
    [KeyValue("Age", 14), KeyValue("Height", 145), KeyValue("BloodType", "O")]
    Yayoi,
    [KeyValue("Age", 13), KeyValue("Height", 158), KeyValue("BloodType", "B")]
    Ami,
    [KeyValue("Age", 13), KeyValue("Height", 158), KeyValue("BloodType", "B")]
    Mami,
}

//列挙型の拡張メソッドクラス
public static class IdolExtension {
    private static EnumInfo<Idol> EnumInfo { get; } = new EnumInfo<Idol>();
    public static int Age(this Idol idol) => EnumInfo[idol].GetValue<int>("Age");
    public static int Height(this Idol idol) => EnumInfo[idol].GetValue<int>("Height");
    public static string BloodType(this Idol idol) => EnumInfo[idol].GetValue<string>("BloodType");
}

//拡張メソッドの使用例
public void Sample() {
    int age = Idol.Chihaya.Age();
    int height = Idol.Chihaya.Height();
    string bloodType = Idol.Chihaya.BloodType();
}

上記のように、簡単に列挙型の拡張メソッド(Age,Height,BloodType)が出来上がりました。
静的なデータの場合はこの方法で拡張メソッドが定義できます。

しかし、動的なデータの場合は、今まで通り拡張メソッドを自力でゴリゴリ書かないといけないですね。属性でラムダ式が使えれば改善できると思うのですが。残念です。

同期モードを使用した直線補間。

QD77MS16で5軸以上の直線補間動作を実現しました。
仮想軸は使用せず、同期モードを使用しましたので最大16軸
の直線補間動作が可能です。
同期モードを使用する一番の理由は「カムの手回し」ができることです。
「カムの手回し」とは、主軸を動力軸から手動軸に切り換えて主軸と従軸の動作を確認することです。
手動軸のハンドルを正方向に回すと従軸は正方向に同期し、ハンドルを逆方向に回すと従軸も逆方向に同期します。
同期モードの状態で手動パルサを使うと「カムの手回し」を電子的に行うことができます。

自動運転?

mgcです。

以前、ニュースを見ていた際にある記事が目に留まりました。
それは、高速道路などでゆっくりと追い越し車線を走る車をボタン一つで
強制的に走行車線に戻すという技術が開発されたというものでした。

これはレクサスが導入した新しいシステムで
自車と前方の車を通信し、自車から安全に走行車線に戻す指示を行うというものでした。

自動車の開発も進みとうとうここまで来たか。。

思っていたのですが。

実はエイプリルフールの企画だったようです。
このニュースが掲載された日付は4月1日
これはまんまと騙されてしまいました。

CPU

mtjです。

最近AMDのRyzenが出ました、不評のBulldozerからZENアーキテクチャに変化です。
そんな自分も新品好きなのでFXの最上位が現状なのですが、DDR3で古くなってきたので乗り換え用と考えているところです。

ZENは仮想コアに対応しており、Bulldozerと比べてシングルスレッド辺りの性能強化を狙っているそうです。
Bulldozerは論理コア8等にし、intelの4コア8スレッドの仮想技術に総合性能(8スレッドフル稼働)なら勝てるという
思想のでしょう。

Zenはそこらへんを気にしてか仮想コア技術に対応しました、最高で8コア16スレッドです。
また色々メモリ最適化、演算プロセスが、消費電力がうんぬんってありますが詳しい話は別のところに書いてあると思われます。

使用者側からいうと性能が良くなるのはもちろんですが、消費電力が低いのがいいなと感じました。
最高性能のRyzenでもTDP95Wです。

FX-9590がTDP220Wなので約半分です。
TDPが低くなれば発熱も低いだろうということで色々助かりそうです。

まだ出たばっかなので様子見ですが、なかなか期待できそうなCPUだと思われます。

波形発生器クラス

制御系ソフトでは外部からのAD入力値をロギングして演算や制御を行うことがよくあります。

社内での開発時はAD入力機器が無い場合が多いので、AD入力のデバッグ用に波形発生器クラスを社内ライブラリに実装しています。

このクラスを使用すると、指定した条件の経時変化波形を作成できます。今のところDC ・矩形波・サイン波・CSVファイルによる任意波形の4種類に対応しています。

あとは必要になったらパルス波・三角波・ノコギリ波・複数の波形発生器の合成波くらいを実装すればだいたいのことは試せるはず。