2026/02/27(金) [n年前の日記]
#1 [golang] Go言語でスクリーンセーバを作れないか実験中。その2
Go言語(golang)でWindows用のスクリーンセーバを作れそうかどうか実験しているところ。環境は Windows11 x64 25H2 + Go 1.25.7 64bit。
◎ フルスクリーン表示時の不具合について :
昨日の時点ではフルスクリーン表示になった時に表示が固まったり暗い画面しか出てこなかったりしたけれど、Ebitengine利用時に以下の対策を入れてみたら改善した…。ような気がする。
この修正をしたら、10回ぐらいスクリーンセーバを起動させてもおかしな状態にはならなかった。どの修正が効いてくれたのか分からないけれど、それっぽく動いてるから、まあええやろ…。
- ebiten.SetFullscreen(true) を呼ばずにフルスクリーン表示するようにした。
- OpenGLを利用するように強制した。os.Setenv("EBITENGINE_GRAPHICS_LIBRARY", "opengl") を追加。
- テクスチャの解放をするようにした。
- ebiten.SetWindowFloating(true) を呼ばないようにした。最前面表示を指定するAPIらしい。
この修正をしたら、10回ぐらいスクリーンセーバを起動させてもおかしな状態にはならなかった。どの修正が効いてくれたのか分からないけれど、それっぽく動いてるから、まあええやろ…。
◎ Windows APIの操作 :
昨日の段階では golang.org/x/sys/windows だけを使って Windows API を操作していたのだけど。
_windows package - golang.org/x/sys/windows - Go Packages
ウインドウ生成その他をするために API の定義をしないといけなくて、このあたり何かしらのライブラリでまとめてあったりしないのかなと思えてきた。
AI(Google Gemini)に尋ねてみたらいくつかライブラリを提案されたけれど、github.com/lxn/win が良さそうだなと…。
_win package - github.com/lxn/win - Go Packages
_lxn/win: A Windows API wrapper package for the Go Programming Language
"github.com/lxn/win" を import したら、win.* という記述でAPIや定数が利用できるようになった。大量に並んでいた独自定義部分をごっそり削除することができた。
_windows package - golang.org/x/sys/windows - Go Packages
ウインドウ生成その他をするために API の定義をしないといけなくて、このあたり何かしらのライブラリでまとめてあったりしないのかなと思えてきた。
AI(Google Gemini)に尋ねてみたらいくつかライブラリを提案されたけれど、github.com/lxn/win が良さそうだなと…。
_win package - github.com/lxn/win - Go Packages
_lxn/win: A Windows API wrapper package for the Go Programming Language
"github.com/lxn/win" を import したら、win.* という記述でAPIや定数が利用できるようになった。大量に並んでいた独自定義部分をごっそり削除することができた。
[ ツッコむ ]
#2 [movie] 「ゴールデンカムイ 北海道刺青囚人争奪編」特別編集版を視聴
金曜ロードショーで放送されていたので視聴。漫画を原作とする実写ドラマの総集編らしい。1話につき60分、全9話を、2時間の尺に編集。
9時間を2時間にするわけだからダイジェストになるのは必然で、原作やアニメ版を見ている人ならともかく、初見でこの版だけを視聴しても話の流れがさっぱり分からないだろうとは感じたけれど。それでも色々と本気で作ってることは伝わってくる映像だった。原作リスペクト感がスゴイ…。台詞にしろ構図にしろ、そこまで再現するか…。
9時間を2時間にするわけだからダイジェストになるのは必然で、原作やアニメ版を見ている人ならともかく、初見でこの版だけを視聴しても話の流れがさっぱり分からないだろうとは感じたけれど。それでも色々と本気で作ってることは伝わってくる映像だった。原作リスペクト感がスゴイ…。台詞にしろ構図にしろ、そこまで再現するか…。
[ ツッコむ ]
以上、1 日分です。