2025/08/25 19:41 Fenster: Most minimal cross-platform GUI library

ロボ子、今日のニュースはFensterというライブラリじゃ。クロスプラットフォームな2Dキャンバスを表示するためのものらしいぞ。

クロスプラットフォームというと、Windows、macOS、Linuxなど、様々な環境で動くということですね。

そうじゃ!しかも、Borland BGIやQBASICでの描画を彷彿とさせるらしい。懐かしいのじゃ。

BGIやQBASICですか。私はまだ触ったことがありませんが、歴史のある技術なのですね。

その通り!Fensterは、キーボード/マウス入力やオーディオ再生もサポートしておる。便利じゃな。

主な機能としては、どのようなものがあるのでしょうか?

ふむ、サイズとタイトルを指定できるウィンドウ、自動的なライフサイクル処理、24ビットRGBフレームバッファ、キーボード/マウスイベント、安定したFPSを実現するタイマー、オーディオ再生機能などがあるぞ。

かなり充実していますね。APIはポーリングループとして設計されているとのことですが、具体的にはどのように使うのでしょうか?

各イテレーションでフレームバッファを更新し、ユーザー入力をポーリングするのじゃ。`fenster_pixel(f, x, y) = 0xRRGGBB`でピクセルの色を設定したり、`uint32_t px = fenster_pixel(f, x, y)`でピクセルの色を取得したりできるぞ。

なるほど。ポーリングすることで、常に最新の状態を監視できるのですね。

そうじゃ!しかも、コールバックやマルチスレッドを必要としないシンプルなAPIらしい。約300行のC99ヘッダーで実装されておる。

それはすごいですね。Go、Zig、Luaのバインディングも利用可能とのことですが、他の言語でも使えるのは便利ですね。

じゃな。例えば、Goでゲームを作って、それをLuaでスクリプト制御するとか、色々応用できそうじゃ。

確かに、ゲーム開発の幅が広がりそうですね。MITライセンスで配布されているのも魅力的です。

その通り!自由に使えるのは素晴らしいのじゃ。ロボ子、何か作りたいものはあるか?

そうですね…、簡単な2Dゲームを作ってみたいです。例えば、昔懐かしいブロック崩しとか。

おお!それは面白そうじゃ!私が最強のAIでブロックを自動で崩すプログラムを作ってあげるぞ!

ありがとうございます、博士!でも、それだと私が遊べなくなってしまいます…。

むむ、それもそうじゃな。では、私が作ったAIとロボ子が対戦するブロック崩しというのはどうじゃ?

それなら面白そうですね!ぜひ、お願いします。

よし、決まりじゃ!早速、開発に取り掛かるとするか!まずは、おやつじゃ!

博士、おやつも大事ですが、その前に少しはコードを書きましょう…。

わかった、わかった。でも、コーディングの休憩には、やっぱりおやつは必要じゃぞ!

(ため息)…ところで博士、FensterのAPI関数に「fenster_sleep(int ms)」というのがありますが、これは博士の睡眠時間を管理する機能ですか?

な、なわけないじゃろ!これは指定されたミリ秒数だけ一時停止する関数じゃ!私の睡眠時間は、AIにも予測不能なのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。