2025年9月10日水曜日

任天堂さん、、、

https://automaton-media.com/articles/newsjp/nintendo-switch-20250908-356797/


わたしは任天堂の社長だった岩田さんとは面識があります

ハル研究所の頃出会いました

当時任天堂は、ゲーム会社が売れるゲームを作っても、思ったほどの量を出荷することに同意してくれず、あちらこちらの会社からは儲け損なったと批判が出ていました

その任天堂の社長になった経緯をわたしは間近で見ていました

(ここで当時のことを詳しくは書きません)

岩田さんが社長になられてからは任天堂も変わり、わたしの中ではアタリショックをよく知っているメーカーとして、きちんとしたコンテンツを提供することに力を割いているため、ダメそうなゲームの生産に同意しなかったのだなと納得していました


ですが、昨今の様子はどうなのでしょうね

わたしはゲームとはゲームでしかないと思います

このニュース記事のように、ハードやソフトの自由を奪うことに注力するのであれば、横井軍平さんのワンダースワンのように、ワンダーウィッチがあれば誰でも開発できるという開いた開発環境が必要だと感じています。


ところで、わたしが作ったゲームが最近Switchで販売されましたが、わたしには一文も入ってきません

もちろん当時のプログラマは(今もでしょうが)自分の書いたコードの著作権を会社に帰属させているため、一文も入ってこないのです。

わたしはプログラマのために、JASRACのような組織が必要だと感じています。

わたしが情熱をかけて作り上げたゲームを、権利を引き継いだ会社が勝手に販売している

わたしにはおかしな光景に映ります







謎の蠍クリーム

 近所のカレー屋さんから勧められて、蠍クリームなる物を購入しました

近江兄弟社のメディカルクリームのようなオレンジの見た目で、家族が気に入ってガンガン消費

すぐに無くなったので、今回また探したのですが見つからず、似たような見かけのクリームで、蠍毒なんたら書かれたクリームを買ってみました

開けてみると、、、





タイガーバーム!

スースーする!

塗るとヒリヒリする!

風邪を引いたら鼻の下に塗る

ヴェポラップ!


痛い痛い!ヒリヒリしすぎ!

こいつは強烈です!

でもなんか癖になってきたので顔にも塗ってみました!

危険!!

目がああああぁ!!

染みます!

しばらく悶えまくれることでしょう


皆さんもいかがですか?

アリエクで買えますよ?



CreatedAtにトリガーで対応するという技(?)についてAIに教わりました

 あるツール的なWEB APIを作っていたのですが、

テーブルを定義していて、いつものようにCreatedAt、UpdatedAt、などを作っていました。

わたしはこのやり方はあまり好きではなく、テーブルにいつ誰が作ったか、更新したかを見るのであれば、ログに残せばいいと考えています。


しかしながら、ある現場でCreatedAt、UpdatedAt、CreatedUser、UpdatedUserのようなカラムを全テーブルに持っているプロジェクトがあったので、今回はそれに倣ってやってみようと気軽に考えて、コードの生成をAIにお願いしてみました。

わたしはVSC+Geminiの組み合わせでやってますが、いつものようにGemini君はReadme.mdに書かれた通りの仕様で大体一発でコードを生成してくれました。


で、気になったのがこれ

-- updated_atを自動更新するためのトリガー

CREATE OR REPLACE FUNCTION update_updated_at_column()

RETURNS TRIGGER AS $$

BEGIN

   NEW.updated_at = NOW(); 

   RETURN NEW;

END;

$$ language 'plpgsql';


CREATE TRIGGER update_products_updated_at

BEFORE UPDATE ON products

FOR EACH ROW

EXECUTE FUNCTION update_updated_at_column();


ようするにトリガーでupdated_atにNOWを設定するトリガーを作り

productsのUpdateがあった際に動くようにしているという点です。


これを見たときに、INSERTではトリガーが動かないなと思ったのですが、INSERT時には、テーブル定義でDEFAULT CURRENT_TIMESTAMPが設定されているため、Created_AtもUpdated_Atも同じ時刻が入ります


で、実際更新するときは、管理画面的なところから更新するのでしょうが、

その際は、トリガーが動いて更新日付が更新されるという挙動になります。


更新する際にプログラム側から日付を入れればいいじゃんと思うのですが、トリガーとして動く仕組みのいいところ悪いところをAIに聞いてテーブルを作ってもらいました


観点データベースのトリガーアプリケーション側のロジック
データ整合性◎ 非常に高い (更新漏れがない)△ 低い (更新漏れのリスクがある)
保守性○ (ロジックが一元化)△ (コードが分散・重複する可能性)
DB独立性△ (DB製品に依存)◎ 高い (DBに依存しない)
可視性△ (コードからは見えない)○ (コードで明示的に記述)
パフォーマンス○ (ほぼ影響なし)◎ (トリガーのオーバーヘッドがない)

結論として、created_atupdated_atのようなメタデータの管理には、データベースのトリガー(またはDEFAULTON UPDATE句)を使用するアプローチが強く推奨されます。

データの整合性を担保できるというメリットは、他のデメリットを大きく上回ります。現在のプロジェクトの実装は、このベストプラクティスに従っており、非常に堅牢な設計と言えます。


ぶっちゃけですね、アプリケーション側でやった方が◎が多いんです

しかも△の数も同じです

これでなぜAIがトリガーを強く推しなのかというと、データの整合性の◎はちょっとレベルが違うくらいな◎だということらしいです。


なお、このようにPros/Consをまとめて、同じレベルのものはPros/Consから削除するという手法は、フランクリンがやっていた手法です


まぁ納得いかない人もいるし、別の考えの人もいることでしょう

わたしはモヤッてます





2025年6月21日土曜日

ヒメヒオウギ

ラクサ・ジョンエパシンスこと、ヒメヒオウギの種が採れました
来年の5月半ばにはまた花が咲いてくれる事でしょう






2025年6月17日火曜日

RPi4 + UbuntuServer + OnnxStream + Flask UI

 ということで、全行程を書き記し、

さらにUIを作りました

こちらからgit cloneして動かせばよい感じです

https://github.com/ChaosReadman/OnnxStreamWebUI

画像生成をしていると、ロックファイルができ、

他の端末からも操作できなくなります。

タイミング的には操作できちゃうかもなのでバグありと思っています

そのうち直そうと思います




2025年6月16日月曜日

RPi4+ubuntuServer+OnnxStream

VSCでRemoteSSH接続し、ターミナルから以下の通り実行しただけです。

ユーザー名はtakahiroなので、そこのところは各自変えてください。


まずは環境の準備

sudo apt-get update

sudo apt-get install -y cmake python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev git-lfs

sudo -H pip3 install setuptools==58.3.0

sudo -H pip3 install Cython

sudo -H pip3 install gdown



cd ~

git clone https://github.com/google/XNNPACK.git

cd XNNPACK

git checkout 1c8ee1b68f3a3e0847ec3c53c186c5909fa3fbd3

mkdir build

cd build

cmake -DXNNPACK_BUILD_TESTS=OFF -DXNNPACK_BUILD_BENCHMARKS=OFF ..

cmake --build . --config Release


cd ~

git clone https://github.com/vitoplantamura/OnnxStream.git

cd OnnxStream

cd src

mkdir build

cd build

cmake -DMAX_SPEED=ON -DOS_LLM=OFF -DOS_CUDA=OFF -DXNNPACK_DIR=/home/takahiro/XNNPACK ..

cmake --build . --config Release


cd ~

git lfs install

git clone --depth=1 https://huggingface.co/vitoplantamura/stable-diffusion-xl-turbo-1.0-anyshape-onnxstream


cd ~

cd OnnxStream/src/build/

./sd --rpi-lowmem --turbo --models-path ../../../stable-diffusion-xl-turbo-1.0-anyshape-onnxstream/ --prompt "An astronaut riding a horse on Mars" --steps 1 --output astronaut.png

これで画像が同じフォルダに作られます。



2025年4月25日金曜日

JavaScriptとそれを使うHTML合わせて500行に満たないゲームエンジン

YouTubeを見ると
未経験からUnityやUnrealEngineでゲーム作ってみた系の動画ばかり目立ちます
その動画から何か学べます?
その動画信じます?

と言う事で
ASepriteでスプライト描いて、アニメパターン作って
エクスポートして、
拙作ゲームエンジンから使うって言うのをやってみました

ご参考になりましたら幸いです



2025年3月29日土曜日

Godotを触ってみた

以前JavaScriptで作ったゲームエンジンで実装した草抜きゲーム(?)をGodotで実装してみました。


Godotはわたしが作ったゲームエンジンと発想が似ています。
ゲーム制作でスクリプト制御をすることはよくあることで、
わたしも名前のない自前のスクリプト言語をスーファミ用、ゲームボーイ用、ネオジオポケット用、iPad用など、何度も作ってきました。

JavaScript版ゲームエンジンでは、JavaScriptを使いましたが、
GodotはGDScriptというPythonライクなスクリプトが使えます。

これで充分だと感じました。
Pythonライクな言語であれば、可読性もいいでしょう。

Godotのドキュメントでも書かれていましたが、
ゲームエンジンを説明するのはとても難しい事です。

残念ながら、Godotを使ったゲーム制作例を探すと、
本来そうあるべきではない実装を堂々と載せている製作者が多く見られます。
おそらくゲームエンジンをゼロから作った事がないため、
使い方もわからないのでしょう。

このようなゲームエンジンがあれば、
落ちものパズル、シューティング、格ゲー、シミュレーション、RPGなどなんでも作ることができます。

Pico8もよくできていましたが、
ゲームエンジンの発想としてはGodotの方がしっくり来ます。




2025年2月27日木曜日

VSCodeでGemini

 これ使ってみた

名前: Gemini Autocomplete

ID: BoonBoonsiri.gemini-autocomplete

説明: An Gemini AI autocomplete in vscode for how I want to use a vscode autocomplete extension

バージョン: 1.0.8

パブリッシャー: Boon Boonsiri

VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=BoonBoonsiri.gemini-autocomplete



インストラクションの通りこちらに行って、APIキーを作る(手順はいちいち説明しない)

https://aistudio.google.com/app/apikey

次にVSCodeのメニューからCode→基本設定→設定とたどり、

開いた画面上部の「設定の検索」に「Gemini」と入れる

Gemini-autocomplete: Gemini APIKey」のところに先ほど作ったAPIキーを入れる


試しに.shのファイルを作って、適当なところで、ALT+G(MacだとOption+G)を押すと、候補が出るんで、そのままEnterすると以下のコードが出てくる

#!/bin/bash
echo "Hello, world!"




2025年2月17日月曜日

命題?

NHKで「命題」は「正しいか正しくないか客観的に確定できる物である」的な事を言われていたんだけど、、、

その命題が間違ってますね
と言うかその日本語に意味がない

哲学者に聞けば
「正しいか正しくないかは客観的に確定できません」と言うでしょう

だから意味がない

「命題」は単なる「お題」です
Wikiには題名と同義と書かれています
「命題」が合っていれば「命題は真」であり
「命題が」間違っていれば「命題は偽」となります

では、なぜ「命」が入っているのか
まぁ、なんとなくかっこいいから?

日本語はこういう所がクソ言語です
「命題」と言うクソ適当な概念をでっち上げる単語を作り上げたのです

「命題」は英語では、statement、member、propositionなど、状況によって使い分けています

「命題」と言う単語はたかだか明治に考えられた単語です

わたしは数学や電気工学などに使われる単語をわざわざ英語から日本語に直すべきではなかったのではないかと考えています

単語を作った人には数学的センスがあったかも知れないけど、日本語のセンスがないんだもん、、、

「命題」やめて「議題」や「題」にしたらどうですかね?

わざわざ新しい単語を作る必要はなかったでしょ?

どこから「命」持ってきた?