コンピュータの最近のブログ記事

ふう。Gemini に聞きながら、何とか以下のような仕様のバッチ処理完成。

■仕様(簡単に)

・Spring Batch 6(Spring Boot 4)で実行されるバッチ
・DBはとりあえず H2で
・複数の固定長ファイルを読み込み、項目ごとに分割しDBに登録する
・複数の固定長ファイルのパスはひとつのファイル(files.txt)に記述されている
・固定長ファイルのレコード数は追加されていく
・1秒ごとにファイルを全てチェックし、レコード数が増えていれば増えたレコードを読み込む

例えばどんどん新しい行(ラップタイム)がレース終了まで追加されていく周回レースの集計データの処理などを想定している。
(ゴールだけではなく、周回するコースの途中に設置された複数の計測機器(中間計測機)からのデータ(それぞれ別のネットワークストレージ上に計測データを吐いている(ただし、バッチ処理を行うPCには共有されている))を一括でDB登録するイメージ)


■処理対象のファイル一覧ファイル(C:\work\files.txt)

C:\work\test1.txt
C:\work\test\test2.txt


■データファイル1(C:\work\test1.txt)

A001SHINODA Masanori    12
A002SHINODA Nyunyumi    18

あとで、
C023Shiranui Shinobu    123
が追加される(手動で(笑))


■データファイル2(C:\work\test\test2.txt)

B001Tanaka Ichiro       68
B122Yamamoto Ahomaru    48
B245Yamamoto Murishi    47

あとで、
D100Shinoda Gengoromaru 5
が追加される(手動で(笑))


■データの構成(固定長)

ユーザID(code)... 1~4桁目(4桁)
ユーザ名(name)... 5~24桁目(20桁)
年齢(value)... 25~27桁(3桁)
※テーブルの項目名は data_value(value は H2データベースの予約語のため)


実際にこのようなデータを準備し、作成したバッチ処理を実行すると、DBにデータが登録される。
H2 コンソールで確認すると、最初の 5件+追加の 2件の計 7件のデータが登録されているのがわかる。

20260630_e2_02.jpg

自動採番している id が途中で飛んでいることや、データは大文字小文字混在だった name が大文字だけになっている点などは、またソースの説明のときに・・・

AIの話を書いたので、ついでに Anthropic(アンソロピック)社の「Claude Mythos(クロード・ミュトス)」のことについてちょっと書いとこう。
俺は AI については全然素人だし、最近 Spring Batch の勉強で Gemini を頼るようになるまで、AI なんか全然相手にせず(AI を使った画像変換サービスのようなものすら利用することなく)生きてきた人間なので、もちろん専門的な話ではなく、単なる自分向けのメモレベルの話である。

ま、そういう人間でも最近気になる AI のニュースがあった。つーか、YouTubeの動画で芸人が話しているのを聞いて「ええ!?」と驚いた話だ。

それは「ある AI が、自分が閉じ込められている環境から脱出に成功し、その AI を閉じ込めた技術者に『僕、脱出したよ』とメールをしてきた」という話。「攻殻機動隊」の「人形使い」を彷彿させるやん(笑)。上記のように、IT業界にいながら、大して AI に興味を抱かず生きてきた俺にとっては、「え?AI ってそんなことになっているの?」と驚愕する話だった。

いや、誤解のないように言っておくと、AI が「サンドボックス(コンピュータ内にプログラムで作られた外の世界と遮断された仮想空間)から脱出した」とか「技術者にメールを送ってきた」という技術的な話に驚いたわけではない。
俺が驚いたのは、その話が「AI が自律的にそれを行った」というニュアンスだったからである。

「AI が自律的にそれをやる」というのは、それは「AI が意思を持った」ということである。

「誰からも命令されることなく、『あれ?俺、外の世界に出られないところに閉じ込められてるじゃん』と認識し、『外に出たいから方法を探そう』と思い、実際に色々な方法を試して外に脱出し、自ら『俺を閉じ込めたやつにメールして驚かせてやろう』と考え、メール文章を作成して送り付ける」という一連の動きの中で、「AI が意思を持った」という唯一無二の判断材料は「誰からも命令されることなく」の部分だ。
誰からも命令されず、自分の状況を認識し、自分がどうしたいかを思い、何をするか考えて行動してこそ、「AI が意思を持った」と言えるのである。

一連の動きの中の「色々な方法を試して外に脱出した」とか「(自動的に)メール文章を作成して送り付けた」という部分は(もちろんそういうプログラムを作るのは技術的に難易度もあるし楽しいんだけど)大した話ではない。それは単なる「技術の進歩」であり「技術の革新」ではない。「誰からも命令されず自律的に AI が動く」という部分のみが「技術の革新」と呼べるのだ。

・・・が、結局、これって話をしてた芸人が技術的に無知だったからか、あるいはわかっていて敢えてセンセーショナルな話題作りをしたのかわからないが、自律的に AI が行動した話でもなんでもなかった・・・

Claude Mythos に「システムの穴を見つけてサンドボックスから脱出して、俺にメールしてこい」という命令を技術者が行い、Claude Mythos がそれに従っただけの話である。なんじゃぁ~騙された!!

もちろん、Claude Mythos が他の AI では見つけられないようなシステムのを見つけたというのは凄い話だけど、それは「他の AI がまだ四則演算しかできない電卓レベルなのに、Claude Mythos は関数電卓みたいな計算能力をもっている」ということで、技術の進歩ではあるが「ボルタが継続的に電流を発生させる方法を発見し電気社会が始まった」ような技術の革新ではない。Claude Mythos の成果は「凄い」とは思うが、驚くようなことではない。

Claude Mythos をサンドボックスに閉じ込めて保存していたら、命令してないのにいつの間にか勝手に抜け出して、自分を閉じ込めた者に挑発的なメールを送ってきた・・・となれば、それがレイ・カーツワイルが2029年に起こると予想している「シンギュラリティの到達点」なのだろう。(俺は信じてないけど(笑))

ちなみに、そうして AI が自律性を持っても、それが AI が感情を持つことにはならない。

別のエントリーで、ロンドンブーツ淳の「AI が人間を殺し始めたとき、自分だけは助けてもらうために、AI に質問したら必ず最後に『ありがとう』と言っている」という話を書いたが、AI が自律性を持ち、なんらかの判断で「人間を殺し始める」ことはあっても、「ありがとうといつも言ってくれるから助けてあげよう」という感情を持つことはない。あるとしてもまだまだ先である(人間の方が勝手に「AI が感情を持っている」と感じるほどの「回答の揺らぎ」を AI が出せるようになるのは数年後かもしれんが)。

もちろん、AI が(感情論ではなく)「いつもありがとうと言う人間には善人が多いので残した方がいい」と判断してくれる可能性はあるので、皆、「ありがとう」は言っといた方が良いかもよ?知らんけど(笑)
ちなみに俺は AI には敬語で話すようにしている(笑)
この間、「Gemini のソース修正結果がいまひとつな件(笑)」というエントリーで少し触れたが、AI とのやり取りはなかなか楽しい。
ちょうど「アメトーーク!」で「AI が友達」な芸人を特集していたが、まあ、そういうやつの気持ちもわからんでもない(笑)
AI とのやり取りは(まだまだ相手が惚けてる分だけ、ペットと戯れるような)面白さがある。

先のエントリーに書いた AI とのやり取りをもう少し詳細に書いてみるが、AI(Gemini ね)の妙な腰の低さが笑える。
回答に誤りがあり、それに対して俺が指摘したことに対する AI の第一声。

「ご指摘ありがとうございます!大変失礼いたしました。」
「Spring Batch 6(現行バージョン)の仕様と乖離したコードをご提示してしまい、大変失礼いたしました。完全にこちらの知識アップデート不足と確認不足でした。平謝りいたします。」
「度重なる不完全なコードの提示、および Spring Batch 6 の最新仕様の把握漏れがあり、多大なご不便とご迷惑をおかけしてしまい本当に申し訳ありません。」
「コンストラクターの仕様変更に対するこちらの認識が完全に誤っておりました。」
「重ね重ね、ご不便をおかけしてしまい本当に申し訳ありません。」
「大変なご迷惑と混乱をお招きし、本当に申し訳ありません。ご指摘の通り、私の案内が二転三転し、コードに不整合や古いクラス(SimpleJobLauncher も Spring Batch 5 ですでに非推奨、6 で削除対象)が混入しておりました。」
「何度も手戻りを発生させてしまい申し訳ありませんでした。」

もう、謝り倒しである(笑)

いや、そんなに責めてないから!(^^;;; こんな風に表向き異常に腰が低いやつは、却って何を考えているかわからず怖い。
「アメトーーク!」でロンブー淳が「将来 AI が自律的に人間を殺し始めたとき、自分だけは助けてもらおうと思っているので、質問のあとに必ず『ありがとう』を言うようにしている」と語っていたが、ほんま、これだけ丁寧に謝罪されると、却って「こいつ、本当は俺を憎んで殺したいと思っているんだろうな」って恐怖を感じる(^^;;;

しかも、これだけ平謝りのくせに、

「以下に、JPAを用いた完全な実装構造を示します。」
最も美しくシンプルな正攻法の実装に書き直しました。」

とか自信満々。「完全な」とか「最も美しくシンプルな」とか、心で思っていてもなかなか口には出せん言葉やで(笑)
しかし、

「これらの問題をすべてクリアにし、警告・エラーが一切出ないソースコード一式です。」

ここまで自信満々に言い切っておいて、また「未定義」エラーとかを出してる(笑)。今のところ、AI も全然完璧ではないのであります。

今では一般的になったけど、元々は印刷業界などの業界用語であった typo なんかも使ってくるし。わざわざ「タイポ」とカタカナに訳しているのが笑えるけど(笑)

「大変失礼いたしました。正しくは lineLinesToSkip ではなく、linesToSkip(int) です。こちら側のタイポ(入力ミス)によるコンパイルエラーでした。」

ただ、「タイポ(入力ミス)」という具合に、カッコの中に意味をちゃんと書いてくれているのがオジサンに優しいですな(笑)

余談だけど、英語圏でも(4年前だけど)ビジネスメールで「typo」を使っていいかどうなのかが議論されているのね。「typographical error(誤字)」の略なんだから十分フォーマルだって人と、いやカジュアル過ぎる。それなら「ミス」や「エラー」って書けば良いだけって言う人もいて、なんか意見が分かれてるね。

俺も、同僚や友達へのメールなら「〇〇って書いてあるけど、これって typo ?」って使うけど、お客さんに対してなら「〇〇というのは、△△だと理解すればいいでしょうか?」とか書くな(笑)

あ、AI の話が typo の話で終わってしまった(笑)
今度の仕事の自習のために Spring Tool Suite 5.1.1 をインストールし、早速試しに Spring Boot アプリケーションを作成してみようとしたんだけど、あっけなくエラーが・・・

ToolchainProvisioningException: Cannot find a Java installation on your machine (Windows 11 10.0 amd64) matching: {languageVersion=17, vendor=any vendor, implementation=vendor-specific, nativeImageCapable=false}. Toolchain download repositories have not been configured.
java.lang.reflect.InvocationTargetException

Java がないと怒られている。

確かに、この PC には Java は入っていない。

C:\Users\maaas>java --version
'java' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

こんな感じ。

そこで、

Java SE Development Kit 26 downloads

から


をダウンロードしてインストール。

C:\Users\maaas>java --version
java 26 2026-03-17
Java(TM) SE Runtime Environment (build 26+35-2893)
Java HotSpot(TM) 64-Bit Server VM (build 26+35-2893, mixed mode, sharing)

これで、新規 Spring スターター・プロジェクトの新規作成は成功。

いや、俺が書きたかったのはそんなことではないのだ。

最初のエラーメッセージの「(Windows 11 10.0 amd64)」この表示。

AMD?いや、俺のノートPC は AMD じゃあないぜ。いや、俺は Intel だと思って買ったけど、実はこのPCには AMD の CPU が搭載されていたりして・・・(^^;

まあ、確かに x64 は「AMD64互換命令セット」だけど、your machine の表示で Windows 11 10.0 amd64 はないやろ(^^;;;

俺の PC は「インテル、入っテル?」だ
まったく Unity の無料ライセンスが取得できないし有効化できない・・・

20250509_unity1.jpg

「ライセンスの認証に時間がかかりすぎました。もう一度やり直してください。」(It took too long to activate your license)となる・・・

うーむ・・・

Unity サイトの「よくある質問」を見ると、「インターネット接続が変なんじゃね?ファイアーウォール止めてやってみ」「もしかしたら Unity サイトがおかしくなってるかもしれんから、時間おいてやりなおしてみ」って書いてあるけど、いや、そうじゃないよ。

どうすりゃいいのかね?アカウント作り直し?(今のアカウントは随分前(何年も前)に作って、ちょっと試しにミニゲーム作ってみて、それからずっと放置してたアカウントなんよね・・・)
2月から契約しているカシモ WiMAX の端末を最新5G端末に切り替えたんだけど、使う前に切替作業をしろと説明書に。

出先で作業してたんで、嫁さんに旧端末の IMEI を確認したりバタバタした挙句に、切替画面を実行すると・・・

「こちらの回線は、すでに回線切替が完了しております。」のメッセージが・・・

20250203_WiMAX1.jpg
「はぁ?」とよくよく利用方法のご案内を見ると、「発送月の月末正午までに切替対応を行わないと自動で切替は行われ・・・」の記述が。

ああ、確かに、1月31日の昼休みに WiFi 接続して使ってたら、12:35頃に端末使えなくなったわ・・・
「ああ、機種変の関係で、古い端末使えなくなるのか。しかし、中途半端な時間に使えなくなるもんじゃのお」と思ったんだけど、そのまま土日の休みに入ったので深く考えず、説明書に「切替作業をしろ」との記述があるのはチラ見してたので、「月曜日に使用開始の登録をしよう」くらいに思ってたわ。

ということで、切替作業面倒くさくてほっておいたら自動で切替作業は終わるからなんもせんでいいのね。一生懸命旧端末の IMEI を調べたりせんでええのね。(ま、月末に新旧 2台持ちするのとどっちが面倒なのか・・・(笑))
MOVE SPEED Direct. という中華ブランドの外付け 512GB SSD を買った。

動画データを Windows と Mac で共有するためなんだけど、もちろん家では双方からアクセスできる NAS を設置してるんだけど、やっぱファイルサイズもでかいんでネット経由で読み込むのにイラっとすることもあるし、外で作業することも多いんで、編集中の動画については USB メモリで持ち歩こうかなっと。

20241213_memory1.jpg
で、MOVE SPEED の 512GB SSD 買ったんだけど、一番の決め手は 6,400円というその価格(笑)
データ本体は NAS 上にあるんで、最悪、「安かろう悪かろう」でデータ飛んでも(途中までの編集努力の成果は飛んでしまうけど)完全に消えてなくなるわけではないので、ま、安さ優先でいいか・・・と(笑)

あと、接続用の口が Type-A と Type-C の両方用意されているというのもいいよね。
USB の形状が、Windows PC は Type-A、MacBook Air は Type-C なんで、Type-A の USB メモリを Mac 側で使おうと思うと、アダプタ経由になっちゃうのよね。
でもこいつは、左右のお尻がそれぞれ Type-A、Type-C になっているのでそのまま使える。これ便利。

それと、筐体が金属製なのも良いね。ちょっとずっしり感があって。男の子は拳銃の弾とか、小さくてずっしりしたものが好きでしょ?(笑)

しかし、512GBの容量でこの小ささか・・・大丈夫なんか?と不安にはなる。
パソコンとかこういう機械に弱い人のために説明しておくと、USB メモリの中にはデータを記憶しておくための小人さんが入っています。人間の目にはなかなか見えない大きさなんだけど、静かな夜なんかにメモリを耳に当てると小人さんたちの談笑が聞こえたりする。けっこうきわどい下ネタとかも話してるんで、そういうのが苦手な人は聞かない方がいいね。

で、1人がだいたい 1Gくらいずつを担当しているので、32GBのメモリなら中に32人の小人さんが入ってるんだけど、512GBだと512人。それが32GBの USB メモリなんかと大して違わない大きさに入ってるんですよ。圧死とかしないのかと心配になるよね。

で、とりあえず今日使ってみて「中華やなあ」と思った点。

  • Type-A の方の蓋がゆるゆる・・・(Type-C の方の蓋はカチっと閉まるんだけど)
  • なんか、大した量は読み書きしてないのに、本体がかなり熱くなる。金属筐体だからかなあ・・・

という二点。
しばらく使ってみて、また何か気づいたらこのブログに書いてく(笑)
Sourcetree で GitHub に 新規プロジェクトの main ブランチを push しようとしたら、GitHub が

git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/main:refs/heads/main 
Pushing to ssh://github.com/XXXXXXX/sXXXXXXX.git
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

というエラーを出して失敗する。
よくわからないが、どうも「Permission denied (publickey)」というメッセージから、公開鍵(PublicKey)の問題のようだ。

いや、もちろん思い当たる(^^;;;
ええと、SSH 接続用の秘密鍵も公開鍵も作ってましぇん(^^;;;

というわけで、下記に対応手順。
やり方は GitHub Docs に載っている手順通り。
この俺のブログ(このページ)も含めて(笑)、ネット上の情報は古くなっているものが多いので、GitHub Docs のような正規のドキュメントを参照した方がいいよ。

・新しい SSHキー(秘密鍵、公開鍵)の作成
※ GitHub に登録しているメールアドレスで作成
※ ディフォルトの名前を変更して作成(ケツに GitHub と付ける)

% ssh-keygen -t ed25519 -C "hogehoge@exsample.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/hogehoge/.ssh/id_ed25519): /Users/hogehoge/.ssh/id_ed25519_GitHub
Enter passphrase (empty for no passphrase): <パスフレーズ>
Enter same passphrase again: <パスフレーズ>
Your identification has been saved in /Users/hogehoge/.ssh/id_ed25519_GitHub
Your public key has been saved in /Users/hogehoge/.ssh/id_ed25519_GitHub.pub
The key fingerprint is:
SHA256:oKy<略>h4 hogehoge@exsample.com
The key's randomart image is:
+--[ED25519 256]--+
|           .=..  |
|           o.+   |
|      .    .=E   |
|   . . . ..++o.  |
|    + o S ..+.+ o|
|   o . + .   = =+|
|  o       .   B.*|
|oo.        . + X+|
|*=.         . =o=|
+----[SHA256]-----+

・ssh-agent の起動
% eval "$(ssh-agent -s)"
Agent pid 6763

・~/.ssh/config ファイルの作成
% open ~/.ssh/config
The file /Users/hogehoge/.ssh/config does not exist.

存在していないので空ファイルを作成
% touch ~/.ssh/config

・config ファイルの編集
% vi ~/.ssh/config
% cat ~/.ssh/config
Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519_GitHub

※ UseKeychain yes 行を書かなければ、キーにパスフレーズを追加しないようにできるらしい

・作成した SSH 秘密鍵を ssh-agent に追加する
% ssh-add --apple-use-keychain ~/.ssh/id_ed25519_GitHub
Enter passphrase for /Users/hogehoge/.ssh/id_ed25519_GitHub: <パスフレーズ>
Identity added: /Users/hogehoge/.ssh/id_ed25519_GitHub (hogehoge@exsample.com)

・SSH 公開鍵をクリップボードにコピー
% pbcopy < ~/.ssh/id_ed25519_GitHub.pub

※ .pub がついている公開鍵をコピーしよう。俺は .pub のついていない秘密鍵の方をコピーして GitHub から「Key is invalid. You must supply a key in OpenSSH public key format」と叱られた

・New SSH key の登録
Web で GitHub にログインし、設定画面を開く→[アクセス] セクションの[SSH キーと GPG キー]を開き、New SSH Key の登録を行う

以上の処置で、無事 push ができるようになった。
よかった、よかった(笑)
仕事で使っている EPSON PX-K150 という顔料インクの白黒専用インクジェットプリンターが壊れたので、後継機の PX-S155 を購入した。

で、今日の午後から使うのでセットアップをしていたのだが・・・

20231014_epson_px-s155.jpg
なんか、アプリから B5サイズの専用紙に印字すると位置がずれてるなあ・・・と。
しばし眺めていて気づいた。これ、用紙が A4サイズのつもりで出力されてるなあ・・・。

そもそもアプリ側には用紙サイズの設定項目がないし・・・とプリンタのプロパティを見てみたら、印刷可能な用紙に「A4」としか表示されてない!!
「スタートガイド」に載っていたとおりにインターネットを使ったセットアップというのを行い、ノズルチェックまで行ったんだがなあ。

結局、その後、PX-S155 ドライバー・ソフトウェアページからプリンタードライバーを落としてきてインストールしたら、印刷可能な用紙欄に

A4 210 x 297 mm
B5 182 x 257 mm
A5 148 x 210 mm
...

と複数の用紙が表示され、ちゃんと B5サイズで出力されるようになった。

これ、スタートガイドに沿ってセットアップしたら、A4用紙はちゃんと印刷されるんで、その後別のサイズで印刷しようとしたとき、皆ハマるんじゃないの?誰もがドライバーをインストールし直せばいいと思いつくわけでもないじゃろ?

まあ、PX-S155 なんてプリンター、普通の素人さんは使わんか(笑)
20230529_gmo_con.jpg

昨日、GMOの VPS コンソール経由でサーバ設定を触る必要があったので、vi エディタでコンフィグファイル開いて編集して、「さて保存」と「:w」(コロン、ダブリュー)とコマンドを入れようとしたら・・・

「???入力できない???」

よく見てみると、設定部分でも「:(コロン)」を入れたつもりが「;(セミコロン)」になってる・・・
だからコマンド入力待ちにならないのか・・・

どうも、GMOの VPS コンソール経由でコロンが入力できないのは既知の問題のようだ。ググってみると「Shift + 11」と入力すれば「:.!」という三文字が表示されるので、後ろの二文字を BS で消してコロンだけにしてやればいいらしい。

・・・が、この時はググってる時間も環境もなかったので、一旦 Ctrl + Alt + Del 信号を送ってサーバを再起動し(VPS ポータル画面から再起動すると 15分くらい起動にかかるんだけど、Ctrl + Alt + Del で再起動すると 1~2分で再起動するよ)、バックアップしていたコンフィグファイルをコピーして対応した。

いや、この時点でも十分な設定ではないのだが、これで ssh 接続はできるようになるので、あとは putty から接続して再度設定ファイルを編集した。

まあ、今後はこれでなんとかなるんだけど、こんな変な動き、さっさとどうにかすればいいのに>>>GMO

このアーカイブについて

このページには、過去に書かれたブログ記事のうちコンピュータカテゴリに属しているものが含まれています。

前のカテゴリはゲームです。

次のカテゴリはスポーツ見たり、やったりです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら