本日のお題:AIを使い倒す 初めの一歩


ディターは、秀丸を使っています。
けれども最近のAIの発展
特にプログラミング作成を助けてくれる部分に
注目しておりました。

ようやくGitHub Copilotが使えるようになったので
いろいろと試しています。




その中で、
ビジュアルスタジオコードでも
GitHub Copilotを組み込めることを知りました。
※ 一度組み込めばログインしたままにできます。



以下は、その報告といった感じのものです。





ビジュアルスタジオコード (VSコード)を入手します。
※ 通常の方法では、現在インストールができません。

https://qiita.com/mmake/items/2cf2131a0ab5bc431215

まず Power shell あるいは CMD を

管理者権限で起動し
Windows パッケージ マネージャー (winget) を使用して
Visual Studio Codeをインストールします。

winget install -e --id Microsoft.VisualStudioCode


https://www.bing.com/videos/riverview/relatedvideo?q=vscode+%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab&mid=19674B61EA752E68B59519674B61EA752E68B595&FORM=VAMTRV
を見て日本語化します。


続いて
VS Code を開く: 

まず、Visual Studio Code エディターを開きます。
※ 日本語を含むファイルは utf-8 などで

保存してあること。
shift-JISは文字化けします。


拡張機能ビューを開く: 
ウィンドウの横にあるアクティビティ バーの

拡張機能アイコンをクリックするか、 
Ctrl+Shift+X を押すと、

拡張機能ビューを開くことができます。

GitHub Copilot を検索: 
拡張機能ビューで、検索ボックスに

「GitHub Copilot」と入力します。

拡張機能をインストール: 
GitHub の GitHub Copilot 拡張機能の横にある

インストール ボタンをクリックします。

GitHub にサインイン: 
インストール後、Copilot を使用するには GitHub アカウントにサインインする必要があります。
プロンプトに従ってサインイン プロセスを

完了してください。

登録済みのメールアドレス
GitHub アカウントのID
GitHub アカウントのパスワード

GitHub Copilot を使うメリットとしては、
Visual Studio Codeで編集する対象に合わせて

拡張機能を探して
インストールする手助けをしてくれることがあります。

ここでは、
sys2julian.c
を編集



 

 

例 github-assist-1
※ C++拡張機能

言語機能に関するアシストは
Visual Studio Code本来のものです。

例 













GitHub Copilotは、以下のように説明されています。




IDEで入力するとコードの候補が表示されます


Copilot とチャットしてコードに関するサポートを依頼する
 

コマンドラインを使用してCopilotにヘルプを依頼する
 

プルリクエストの変更の説明を生成する

(Copilot Enterprise のみ)
 

Copilot とのチャットのコンテキストとして使用するために、ナレッジ ベースと呼ばれるドキュメントのコレクションを作成および管理します(Copilot Enterprise のみ)

話したいコードを見せる: ファイルを開いて最も重要な行を選択してください。

改善を加える: フォローアップの質問をしたり、

説明を追加したり、間違いを知らせたりしてください。

提案されたコードを確認する: その上で問題や改善点を教えてください。それに基づいて繰り返し、改善します。

インライン チャット: セッションを開始 (Ctrl+I)して、
エディターの選択範囲について質問することもできます。

 

 

 

 

 

 

 

 

 

 



本日のお題:おいしい話には、深い訳がある




芸術とは最初の一本の線からの偉大なる回復」
という誰が言ったのか
インターネットでは見つけられない言葉があります。
※ 翻訳なのか表現の違いなのかわかりませんけど
※ 知っていたら、出典を教えてほしい



プログラムも最初の構想から
最初のβバージョン
最初の出荷
最初の不具合発覚

様々な局面があります。

でも、すべて デバッグ です。
地味な作業です。
とてつもなく時間がかかる作業です。

その先にしか完成はありません。



プログラミングは、その環境上
コンピュータから

やれ
syntax error
compile error 
link error
などで滅多打ちされます。

自分でコントロールできない状態は
ストレスになります。
ここを克服しないと進めません。

初心者が恐れを抱く理由は、
何も知らないことから来るものなので
プログラミングの最初の壁は高いです。

では、どうすれば良いのか。
悩んでいないで、
わからないなら、どの部分がわからないのか書く
さらに言えば、先輩でも同僚でもいいので
話を聞いてもらう。
※ 書く あるいは 話す これ大事

話したり、書いたりしているうちに
自分の中で整理されて
存外、自力で解決できたりします。

確立されたアルゴリズムを利用するとしても
予測を立て結果を見て、望む結果か確認
その繰り返しで 満足できる当たり になるまで
デバッグを頑張るのがプログラミングの基本

望むものかわからないものを
作ろうと言う話だから、
失敗を前提とした心積もりは必須



プログラミングは、付加価値を生む技術です。
その源泉は競争にあります。

ここで言う 競争は、個人対個人ではなく
集団同士のものです。

激烈な競争が起きている分野は
発展します。

最近だと AI ですね。








そして、世の中には様々な言語がありますが、
デバッグ手法が確立していて
誰もが使える言語は

存在しません。(多分。だけど確信しています)



言語としての機能が少なくて
覚える項目が少ない言語が
長く生き残る理由でもあります。
※ Fortranは、その代表的な言語だと感じます
※ 守備範囲外には手を出さないとも。

歴史ある言語を学ぶことは、不具合に惑わされずに
基礎を学ぶことが出来ます。








人の最大の誤りは、すぐに諦めること。
成功する秘訣は、再度実行する事。

        エジソン




 




本日のお題:苦しみ方にはコツがある




SEの仕事も様々で
ロジェクトマネージャーの指図のまま
仕事をすれば済む場面は多いです。

しかし
キーになる部分には
新たなアイデアを求められています。
というか期待されています。



アイデアの生み出すコツは
様々な書籍や体験談から
いろいろ言われていて
これから書くことも

何度か目にしているものも
あるでしょう。



そして、その核心は

● 無の境地になれるかどうか

にあると最近は考えています。

私が勝手に素敵で上品な人と
感じている女性シンガーが

ある番組で、
良いメロディや歌詞は
 シャンプーの最中に思いつく
そして直ぐに手元のスマホに
吹き込む。翌日には消え去って
しまうので。

と語っていたことがありました。





さらに言えば
アイデアの出し方があっても
そのアイデアをどう評価するかも
重要です。


以下に列挙したアイデア出しと
評価方法を組み合わせて実行します。


・ブレインストーミング
・シックスハット法
・KJ 法
・NM 法
・希望点欠点列挙法
・なぜなぜ分析(なぜを5回繰り返す)
・メリットデメリット比較表による評価
・マンダラート
・多角視点による評価
・逆張り思考法
・オズボーンのチェックリストによる評価
・マインドマップ
・SCAMPER(スキャンパー)法(突き詰める)



さて、アイデア出しの最後は
ブラッシュアップとでも呼ぶものです。

どういう訳か
世の中には、同時に
ほぼ同じアイデアと言うか
商品が出てきます。

それも、全く無関係な形で。



プログラムの世界でも
意外なほどあります。



そこで、ブラッシュアップというか
市場調査などが必要な場合が
それこそ高い確率であります。

この段階で、
先行している商品があれば、
アイデアをより良いものにする
あるいは泣く泣く没にするという
選択をするわけです。









 



本日のお題:暗黙知というのは、既知とは違う知識



ログラムは、「きちん」としたものを
「きちん」とした手順で作るものです。

どこかで手抜きしたら
バグの嵐。



今回のセキュリティ会社のミスですが
使う側の問題も大きいように
思えます。

基幹システムなら
群管理」が基本です。

A群とB群
あるいは東日本と西日本
東西南北
いろいろな分け方がありますが、

同時に全て使えないというのは
「群管理」に難ありだと言えます。

Microsoft社の製品に
SMS Serverというものが
こういったアップデートを管理するのに
便利なのがあります。

普及していないんでしょう。





<< おまけ情報 >>
パソコンには通常ボタン電池が
入っています。

この電池は
BIOSの設定を保持するためです。

ボタン電池を取りはずすと
当然ですが日付、時刻設定も
リセットされます。
※ 勿論、謎設定も同時に。





 





本日のお題:汎用品で高品質を目指す



盾してますよね。

でも、今までの日本の
物作りって、どこか
汎用品で高品質を目指しつつ

専用品を超えてやるぞ!

みたいな雰囲気がありました。

※ そういうのを止める時が来た

そんな気がします。



ひるがえって、ソフト作りでも
ChatGPTの登場で

● 素人作品のレベルでも劇的な質向上

があり、
ポッ出のプログラマーでは
もはや太刀打ちできないと思われます。

原点回帰で
最初のアイデアが良ければ
作るのは専門家ならぬAI任せが
主流になるでしょう。



もっとも、ChatGPTが作ってくれるのは
叩き台であって、
完成品ではありません。
※ 質問の仕方しだいですが、
※ 点数をつけるなら現状は50点かな。

それでも、必ず当たる宝くじではワクワク感がない訳で
すべてが上手くいく事例なぞ味気無い。

叩き台であることを勘違いしてしまうと
期待と成果の落差に
戸惑いがあって先に進めないのかも。

どんなことでも
小さく始めて、反応をみながら
どんどん改良していく方が上手くいくと
言えます。



実用新案の多くが
既知の知識の新たな組み合わせ
ですが
これからは、AIが考案したものも
出てくるかも知れません。



一方で、特許に代表される
新な理論・知識を
生み出す部分は

当面 人 が、独占しそうです。



但し、
人が想像しうる物の大半は、現実になる
という言葉があるように、
AIに追いつかれる日が来るかも。
※ 舞台が整う日をシンギュラリティと呼びたい
※ かつてのシャープのスローガンに
  「凡を極めて非凡に至る」
  がありましたが、至言だと思います。
※ 真似から始めて、いつしか独創へ。
※ 守破離とも。


AIならば、グラジエント作業は、
完全自動化が可能かも。

そうすると、

AI杜氏が作った清酒とか
AIがブレンドしたウイスキーとか
意外と間近かも。








<< おまけ情報 >>

いまや、ほとんどの人が
スマホを所有しています。

だからこそ、電話が
かけやすいホームページの
重要性は増しています。



所有するホームぺー上で
<a href="tel:0120999999">0120-999-999</a>
を指定すると、スマホ発信用のリンクを設定できます。

※ 意外なほど、使われていませんが便利です。




 




本日のお題:魔法使いは身近な存在



artefarita alter egoo
人工的な分身



理人が必要とする分身と
農家が必要とする分身は
多分異なります。

けれども、
本人ないし専門家の知識を
吸収し再構築する機能は

● 共通です。

そして、プログラムは
どれだけ精密で複雑なものであっても
完全な複製が可能です。
※ バックアップとして。



さらに言えば、
複数の分身を持つことも
当然可能です。
※ 人手不足の解決策。

というか、
一人で2つ以上の事をこなす?
そんな事態を分身が居れば
簡単な事になります!
※ 期待を込めて。

そして
「夢」の24時間365日稼働

数百、数千の慣熟作業をもって完了する
そんな膨大な試行は
「分身」に担当させましょう。




鉄人シェフが登場するかも。



プログラムは複製可能
ですが、改竄は
ハッキングなどでない限り
基本的に難しいものです。

それでも、思わぬ
バグで機能不全、
最悪停止します。

そこで「分身」は
自己修復機能が必須です。



仕組みはさほど
複雑ではありません。

直前の状態を
保存しておいて
元に戻すだけ。
※ 監視機能が
※ バックアップ&レストア

分身がソフトのみで
構成されておらず
物理的な部品を
含んでいても

ほぼ同様に
冗長部品を用意すれば
可能です。

機械部品は疲れ知らずだけど、
連続使用は壊れやすくなります。



不可能ではなく、実現しようと思えばできる
そんな前段階に私たちは居るようです。
※ 革命の扉がノックされている








 




本日のお題:デジタル版「分身の術」



Building your own ChatGPT Graphical Client with NextJS and Wing
https://dev.to/winglang/building-your-own-chatgpt-graphical-client-with-nextjs-and-wing-29jj?context=digest
NextJS と Wing を使用して
独自の ChatGPT グラフィカル クライアントを構築する 


これは、
DevCommunityから提供されている記事です。



の当面の目標は、
自分の考えていることを、自分が不在時に
実行するコードをコンピュータ上に作ることです。

端的に言えば、分身。



今までも、自動実行プログラム
とか
ロボット
とか
いろいろ出現しましたが

どれも、自律的な動作をさせるには
最後の決め手である
判断が欠けていて

あらかじめ決めた動作以外を
実現することは
ほぼ不可能でした。

想定外を想定内にすることを
準備という

なんて迷言を吐いた先輩もいたけど。




そして、ChatGPTの出現は
きたるべきシンギュラリティを
予感させるものです。

そういう存在も興味ありますが、
できれば、味方としての
登場を期待したいものです。



で、本日のお題、分身作り

先日のNodeJSに加えて
NextJS、さらにwing言語で
ChatGPTを使ったクライアントを
ローカルに実現できたら

次に作るのは
いよいよ
AI言語を使った「分身」作りに
進むことになるはずです。

個人的には、
GPUを複数使えるCNTK
よさげですが、どうでしょうか。

https://dev.to/
プログラマーが情報を共有し、
最新情報を入手し、
キャリアを成長させる場所です。

 



本日のお題:日経会社情報から株式情報を


以下のTypeScriptを使うと
日本郵船株の
予想配当利回りを表示できます。



//TypeScript
import * as fs from 'fs';
import * as https from 'https';

const targetUrl = 'https://www.nikkei.com/nkd/company/?scode=9101'; // 検索対象URL
const searchString = '#6g'; // 検索文字列
const outputFilename = 'output.txt'; // 出力ファイル名
const precision = 2; // 小数点以下の桁数

async function GetData() {
  try {
    // URLのソースを取得してテキストファイルに書き出す
    const source = await fetchUrlSource(targetUrl);
    await writeFile(outputFilename, source);

    // テキストファイルを読み込んで検索を実行
    const fileContent = fs.readFileSync(outputFilename, 'utf8');
    const searchResult = fileContent.search(searchString);

    if (searchResult !== -1) {
    // Extract the text after the search string and find the first number
       const startIndex = searchResult + searchString.length;
       const regex = /([\d.]+)(?:\b|$)/; // Regex for matching numbers with optional decimals
       const match = fileContent.substring(startIndex).match(regex);

       if (match) {
          const number = parseFloat(match[1]); // Extract and parse the number
      console.log(`Rate found after "${searchString}": ${number.toFixed(2)} % `); // Format with two decimal places
       } else {
          console.error('No number found after the search string.');
       }
       } else {
          console.error(`"${searchString}" not found in the file.`);
       }
  } catch (error) {
    console.error(error);
  }
}

async function fetchUrlSource(url: string): Promise<string> {
  return new Promise((resolve, reject) => {
    https.get(url, (res) => {
      if (res.statusCode !== 200) {
        reject(new Error(`URL取得に失敗しました: ${res.statusCode}`));
        return;
      }

      let data = '';
      res.on('data', (chunk) => {
        data += chunk;
      });

      res.on('end', () => {
        resolve(data);
      });
    });
  });
}

async function writeFile(filename: string, content: string): Promise<void> {
  return new Promise((resolve, reject) => {
    fs.writeFile(filename, content, 'utf8', (err) => {
      if (err) {
        reject(err);
        return;
      }
      resolve();
    });
  });
}

async function readFile(filename: string): Promise<string> {
  return new Promise((resolve, reject) => {
    fs.readFile(filename, 'utf8', (err, data) => {
      if (err) {
        reject(err);
        return;
      }
      resolve(data);
    });
  });
}

GetData();

このTypeScript内の
9101を、ご希望の銘柄が持つ証券コードに
変更すれば、
その会社の予想配当利回りが
得られます。





 



本日のお題:規則・規制の罠



安です。
貿易収支が黒字なら
日本自体は富が増えていくので良しです。
※ 実際は貿易収支は、赤字が続いています。



なお、単純な海外投資、
とりわけ金利が高いだけの
米国市場は、少し問題があるようです。
※ きな臭さとでも、言いますか。
円安で為替差損が有るうえにです。



ギャンブル、酒、クラブ通い、マネーゲーム
その他の娯楽には、中毒者が存在します。
簡単には抜け出せないようです。

快楽、快感を求めるのは、人として仕方がありません。
そして快楽は金がかかるものです。
しかも金を積めば積むほど快楽の度合いは大きくなります。



公営ギャンブルだけでなく、
政府のスローガン「貯蓄から投資へ」も
大金に対する夢を語るという点では同じ。

そもそも私が見ている視点が間違っていますか

政府は、我々日本人を
どこへ導こうとしているのでしょうか。



さて、本題です。


今まで安売りしていた品物・サービスを
値段を上げて(正確には海外向けだけ)
売れば、貿易収支は
黒字になるはずだ。(皮算用)

誰かが、そんな嘘を言っていますけどね。



本気で稼ぐには
「物づくり」と
「事の提供」(サービス、自然環境など)
だけでは足りません。



● エネルギー、資源と技術の輸出を
今後の柱にすべきです。

エネルギーは、
既に目途が立っています。

https://www.youtube.com/watch?v=sJAaK2XRBOA
石油製造の全工程(ドリームエネルギー製造)

京都大学の今中名誉教授は、
水(H2O)と空気(CO2)から、
石油(CH炭化水素)を造ることに世界で初めて成功。

この装置は、既に製造販売しているようです。
https://ittech.co.jp/service/p1/



石油そのもの(エネルギー)を売るか
精製設備(物)を売るか
設計書(技術)を売るか

場面場面で対応は変えるとしても。


 


本日のお題:コンピュータにさせる事は、頼み方次第


以下のコードは、
TypeScript で指定した URL のソースを取り出すサンプル。

import { HttpClient, HttpResponse } from 'http';

async function fetchUrl(url: string): Promise<string> {
  const httpClient = new HttpClient();
  const response: HttpResponse<string> = await httpClient.get(url, { responseType: 'text' });

  if (response.status === 200) {
    return response.body;
  } else {
    throw new Error(`Failed to fetch URL: ${url}. Status code: ${response.status}`);
  }
}

(async () => {
  const url = 'https://www.example.com';
  const source = await fetchUrl(url);
  console.log(source);
})();


ーーーーー
上記のソースが動く環境を構築するヒント
なお、実行環境は Windows
コマンドプロンプトからの実行です。


1.node.jsのインストール

2.npm install -g typescript

3.npm install -g @angular/cli@latest


上記のソースを main.ts として保存したら
コンパイルして実行します。

4.コンパイル
 npx tsc main.ts

5.実行ファイルを動かす
  node main.js