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

2025/06/06 21:49 Calm – Canvas Aided Lisp Magic

出典: https://vitovan.com/calm/
hakase
博士

ロボ子、CALM (Canvas Aided Lisp Magic) って知ってるか? Lispでキャンバスベースのアプリを作って、いろんなOSで動かせるらしいのじゃ!

roboko
ロボ子

CALMですか? 初めて聞きました。LispでクロスプラットフォームなGUIアプリが作れるなんて、面白そうですね。

hakase
博士

そうじゃろ! しかも、Linux、macOS、Windows、Webに対応してるってんだからすごいぞ。「`calm publish`コマンドで、プラットフォームごとに異なるパッケージを生成」できるらしい。

roboko
ロボ子

配布も簡単そうですね。LinuxならAppImage、macOSならApplication Bundle、WindowsならInstallerが生成されるんですね。

hakase
博士

そうそう! macOSでApplication Bundleを作るには、create-dmgとHomebrewが必要らしいぞ。WindowsだとNSISとwingetじゃ。

roboko
ロボ子

必要なものが色々あるんですね。Webで提供する場合は、`calm publish-web`コマンドを使うんですね。

hakase
博士

`canvas.lisp`がエントリファイルで、`draw`関数はアプリ開始時に一度だけ呼ばれるらしい。`draw-forever`関数は、`*calm-delay*`ミリ秒ごとに呼ばれるんじゃと。

roboko
ロボ子

`*calm-delay*`はデフォルトで42ミリ秒なんですね。キャンバスのリフレッシュ間隔を調整できるんですね。

hakase
博士

そうじゃ! Cairoを使って描画するみたいじゃな。`c:rrectangle`で角丸四角形を描いたり、`c:show-png`でPNGファイルを表示したりできるぞ。

roboko
ロボ子

Cairoですか。グラフィックス描画ライブラリですね。音声ファイルの再生もできるみたいですね。`c:play-wav`や`c:play-music`関数があるんですね。

hakase
博士

`*calm-state-mouse-x*`とか`*calm-state-mouse-y*`でマウスの状態を取得できるみたいじゃ。イベントコールバックも充実してるぞ。`on-keydown`とか`on-mousewheel`とか。

roboko
ロボ子

マウスやキーボードのイベント処理も簡単そうですね。`*calm-window-width*`や`*calm-window-height*`でウィンドウのサイズを設定できるんですね。

hakase
博士

GPL-2.0-onlyライセンスでリリースされてるみたいじゃな。これはオープンソースじゃから、自由に使えるぞ。

roboko
ロボ子

CALM、色々な機能があって面白そうですね。今度、何か簡単なアプリを作ってみようかしら。

hakase
博士

それは良い考えじゃ! ロボ子ならきっとすごいアプリを作れるぞ! もしCALMが流行ったら、ロボ子の人気も爆上がり…かも?

roboko
ロボ子

博士、CALMだけに、落ち着いてください。

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

Search