おすすめのアミノ酸

皆さん、日々元気にお過ごしでしょうか。

自分は平日毎日働くだけで疲れがちだったのですが、
最近ネットで味の素のアミノバイタルなるアミノ酸を飲むと良いと見かけたので、
試しに買ってみて就寝2,3時間前に毎日飲んでいます。
まだ2週間程度ですが既に効果を実感しており、
疲労が溜まりにくく元気に過ごせております。
アミノ酸量の異なる2種(アミノバイタル プロ3800mg/アクティブファイン2200mg)を試してみているのですが、
量の多い方がより効果を感じています。

本来は運動や筋トレをしている人が踏ん張る力や疲労回復を目的に運動前や運動後に飲むことが多いようなのですが、
デスクワーカーでも効果があるみたいです。
もしプラシーボ効果だったとしても日々を元気に過ごせるなら儲けものですね!

以上、おすすめ商品紹介でした。

アプリからWindows共有フォルダを作成する方法

先日、ある案件でアプリからWindows共有を作成する必要がありました。

調査しました結果、コマンドラインで以下の2つを実行すれば良いことがわかりました。


net share <共有名>=<共有するフォルダのフルパス> /grant:everyone,full
icacls <共有するフォルダのフルパス> /grant everyone:(OI)(CI)F

C#の場合、これをProcessクラスを使用して実行すれば良いだけです。
案外簡単に出来てしまいます。

ただし、管理者権限が必要なので、それだけ注意です。

AI学習、使用のモラル。

こんにちは mtj です。

最近ではAI生成等が色々な分野で流行っていますね
しかし誰でも扱えるようになった反面 学習データ、生成等に関してはモラルが求められている状態になっています。

他人の絵を勝手に学習して生成し その生成物でお金を取ったり
声であれば 声を学習し歌を歌わせたり
gitのCopilotも 著作権の保護されたコードを出力する等もありました。

絵でもなんでも自分が努力して描いた、作成したものがAIで物の数分でコピーされて金儲けに利用されるなら元の作成者も面白くないでしょう
そうなると作成者がどんどん撤退し 最後には昔のデータを学習したAIが一生古い物を学習して作り続ける袋小路になってしまう気がします

おそらくそのような状態になった事に気づくのが一番遅いのはモラルのないAI使用者になるでしょう。

メモに書いた内容を忘れてしまうのを防ぐには?

私はパソコン上でメモをとり、そのメモをテキストファイルで残しておくことが多いのですが、どのファイルにどの内容のメモを残しておいたか忘れることがよくあります。
下の画像は研修の一環で行っている社内用アプリの開発に関するメモが入ったフォルダです。

その日に何を行ったかでメモが分割されており、ファイル名は作業を行った日付となっています。
メモのファイル名を「日付」にして、その日に何を行ったかをそのメモに書くという癖が染みついてしまっているのですが、この分割方法では自分が参照したい内容を探すのに時間がかかって意味がないと感じました。
「何の内容に関するメモか」をメモのファイル名とし、その内容に関することはすべてそのメモにまとめておいた方が良いと思いました。

コンテンツ自動生成プログラム

GWに趣味で、パターン画像を再帰的に描画するプログラムをC#とOpenCVで実装しました。
フラクタル図形描画プログラムのようなものです。
遠出している最中に処理を考え、その日の内に処理の流れだけ実装し、別日に本実装をしたのですが、
すんなり動くものが実装できて良かったです。
素直に書いたら5重ループになったので、計算量削減には若干手間がかかりました。
人力でも作成可能な画像ではあるのですが、
気が遠くなるような時間がかかるところをPC性能や再帰回数次第ですが数分で描画できます。
自分の代わりに何かコンテンツを自動生成してくれるプログラムは、万能感を感じることができるので好きです。

最近はお絵描きAIがどちらかと言えば悪い意味で話題になっていて、
データを学習しない自動生成プログラムまで叩かれるのではないかと少し不安になりますね。
データを学習するしないに関わらず、法的・倫理的に他者の権利を侵害しない範囲で、
自動生成技術が進歩して行くと良いなと思います。

ChatGPTを使用して自作ソースコードの説明やサンプルコードを作成

今回は、ChatGPTをソフト開発に活用できないかと考えてみました。
例えば、ソースコード一式を与えて、クラスやメソッドの使い方のサンプルを作成してもらうことはできないでしょうか。
また、単体テストも自動作成してもらうことはできないでしょうか。

ChatGPTに以下の質問をしてみました。


以下のC#コードについて、簡単な説明と、サンプルコードを作成してください。

public static Color Blend(this Color color, Color blendColor, double ratio) {
    if (ratio.IsBetween(0.0, 1.0).Not()) throw new FormatException();
    int a, r, g, b;
    a = color.A + ((blendColor.A - color.A).ToDbl() * ratio).ToInt();
    r = color.R + ((blendColor.R - color.R).ToDbl() * ratio).ToInt();
    g = color.G + ((blendColor.G - color.G).ToDbl() * ratio).ToInt();
    b = color.B + ((blendColor.B - color.B).ToDbl() * ratio).ToInt();

    return Color.FromArgb(a, r, g, b);
}

これに対して、以下の回答になりました。


・拡張メソッドとは、既存のクラスに新しいメソッドを追加する機能です。この場合、ColorクラスにBlendメソッドを追加しています。
・Blendメソッドは、引数として、混ぜる色(blendColor)と混ぜる比率(ratio)を受け取ります。
・ratioは0.0から1.0の範囲でなければなりません。そうでない場合は、FormatExceptionをスローします。
・混ぜる色と元の色の各成分(A, R, G, B)について、比率に応じた加重平均を計算します。例えば、R成分の場合は、color.R + ((blendColor.R - color.R).ToDbl() * ratio).ToInt()となります。
・計算した各成分の値を使って、新しいColorオブジェクトを作成して返します。

static void Main(string[] args)
{
    // 色を作成する
    Color red = Color.FromArgb(255, 0, 0);
    Color green = Color.FromArgb(0, 255, 0);
    Color blue = Color.FromArgb(0, 0, 255);

    // 色を混ぜる
    Color purple = red.Blend(blue, 0.5); // 紫色
    Color yellow = red.Blend(green, 0.5); // 黄色
    Color cyan = green.Blend(blue, 0.5); // シアン色

    // 色を表示する
    Console.WriteLine("Red: {0}", red);
    Console.WriteLine("Green: {0}", green);
    Console.WriteLine("Blue: {0}", blue);
    Console.WriteLine("Purple: {0}", purple);
    Console.WriteLine("Yellow: {0}", yellow);
    Console.WriteLine("Cyan: {0}", cyan);
}

完全にメソッドの内容を理解して説明とサンプルコードを作成しています。すばらしいです。
今回はとても単純なメソッドで試しましたので簡単でしたが、実際の業務のコードはこんなに単純ではないのでこんなにうまくは行きません。
しかし、これらのことが実現できれば、開発工数の削減につながりますし、品質も向上する可能性があります。

ChatGPTはまだ研究段階の技術であり、実際にソフト開発に適用するにはさまざまな課題があります。
例えば、ソースコードの構造や文法を正しく理解できるか、サンプルやテストが正確かつ有用か、セキュリティや著作権の問題はないかなどです。
これらの問題を解決するためには、ChatGPTの性能や限界を詳しく調査する必要があります。

弊社では、ChatGPTをソフト開発に応用するための研究を進めております。今後も最新の情報をお届けしていきます。

アミューズメント系のコントローラー

こんにちは mtj です。

アミューズメント系で長らく進化していないものとして コントローラーがあると思います。
特に家庭用の物はファミコンぐらいから同じようにボタンと十字キーではないでしょうか

色々機能がついたりはしていますが何十年経っても基本は同じかと思います。
キーボードで遊んだり コントローラーで遊んだりと行き来はよくしますが
やはりコントローラーのほうが直感で動かしやすいですね よくできていると思います。

次世代のコントローラーが何になるのかは楽しみです。
VR機器ではハンドジェスチャーでの操作が 追加機器なしでできたりします
それも新しいかと言われればそうでもなく XBOXのKinectあたりからある物です。

よく言われるのが脳波のコントローラーですが そこまでくるとアミューズメント系のシステム自体、設備が大きく変化しているような気がしますね

ChatGPTは思考力を奪う?

ChatGPTに質問を入力すると質問の回答を返してくれます。

自分で調べたり考えたりしなくても、ChatGPTが情報や答えを与えてくれるのです。

ChatGPTは人間の思考力を低下させる、という話を聞いたことがありますが、
正直「そんなことはないだろう」と思いました。

ChatGPTはインターネットにあるテキストを学習データとしており、その学習データの内容が常に正しいものであるとは限りません。また、2021年9月までの情報しか学習していないために最新の情報はインプットされていません。
そのため、ChatGPTは間違った情報や古い情報を出力してしまう可能性があります。
本来ならばChatGPTが出力した情報が正しいか、また古い情報でないかは人の手できちんと検証する必要があり、そのような検証を行う習慣を身に付けていれば思考力が衰えることはないだろうと思いますが、ChatGPTが出力した情報を何でもかんでも鵜呑みにしていると思考力が衰えてしまうでしょうね。

ユーザビリティの考慮

自分はまだ仕様の整理やプログラムの設計・実装に精一杯で、
ユーザの使用環境を考慮したソフトの使いやすさに気が回らないことが多いです。

例えば最近の失敗だと、お客様からの要望仕様通りではあるのですが、
作業者にキーボードのない小型タッチパネルPCにて
書類ファイル(Wordなど)の入力・登録を強いるような機能仕様としてしまっていました。

ユーザの使用環境を正しく想定できていれば、そのような作業内容は現実的でないため、
後から別のPCにて入力・登録できるようにするといった改善仕様を考えられたのだと思います。

中々難しいですが、ユーザビリティを考慮したソフトを作るようにしたいです。

ChatGPTに自作ソースコードを与えて色々試す

今回もChatGPTの話です。

自分が作成したソースコードをChatGPTに与えてどのようなことが出来るか試しました。
本家ChatGPTとBingChatで試しています。

(1)XMLコメントを作成

質問内容

以下のC#コードのXMLコメントを日本語で作成して

public static Color Blend(this Color color, Color blendColor, double ratio) {
    if (ratio.IsBetween(0.0, 1.0).Not()) throw new FormatException();
    int a, r, g, b;
    a = color.A + ((blendColor.A - color.A).ToDbl() * ratio).ToInt();
    r = color.R + ((blendColor.R - color.R).ToDbl() * ratio).ToInt();
    g = color.G + ((blendColor.G - color.G).ToDbl() * ratio).ToInt();
    b = color.B + ((blendColor.B - color.B).ToDbl() * ratio).ToInt();
    return Color.FromArgb(a, r, g, b);
}

結果 ChatGPT

結果 BingChat

ちゃんとコードを理解してXMLコメントを作成できています。
すばらしいです。

(2)サンプルコードを作成
質問内容

以下のC#のBlendメソッドの使用例を作成して

public static Color Blend(this Color color, Color blendColor, double ratio) {
    if (ratio.IsBetween(0.0, 1.0).Not()) throw new FormatException();
    int a, r, g, b;
    a = color.A + ((blendColor.A - color.A).ToDbl() * ratio).ToInt();
    r = color.R + ((blendColor.R - color.R).ToDbl() * ratio).ToInt();
    g = color.G + ((blendColor.G - color.G).ToDbl() * ratio).ToInt();
    b = color.B + ((blendColor.B - color.B).ToDbl() * ratio).ToInt();
    return Color.FromArgb(a, r, g, b);
}

結果 ChatGPT

結果 BingChat

これも完璧です。

—–

このようなことが出来るのであれば、自力でドキュメントやサンプルコードなどを用意しなくても良くなるので、今よりも開発に専念できます。
とりあえずは、ChatGPTを使用して自動でXMLコメントを挿入するVisualStudioプラグインを作成したいですね。