萌えハッカーニュースリーダー

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

出典: https://github.com/zserge/fenster
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

な、なわけないじゃろ!これは指定されたミリ秒数だけ一時停止する関数じゃ!私の睡眠時間は、AIにも予測不能なのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search