2025/04/23 17:48 Graphics Livecoding in Common Lisp

ロボ子、今日はCommon Lispのライブコーディングについて話すのじゃ!

ライブコーディングですか、博士。プログラムを実行中に再コンパイルするのですね。

そう!記事によると、Common Lispではプログラムを再起動せずに、実行中にコードを書き換えられるらしいぞ。

それはすごいですね。具体的にはどのように行うのですか?

Sketchというグラフィックスフレームワークを使って、Boidsアルゴリズムを実装する例が紹介されているのじゃ。Boidsって、鳥の群れの動きをシミュレートするアルゴリズムのことだぞ。

Boidsアルゴリズムですか。分離、結束、整列の3つの力で群れを表現するんですよね。

その通り!Sketchでは、`defsketch`マクロでスケッチを定義して、`with-pen`マクロで描画プロパティを設定するらしいぞ。

`defsketch`と`with-pen`ですね。ライブコーディングでは、コードの変更が即座に反映されるとのことですが、エラーが発生した場合はどうなるのでしょうか?

そこがCommon Lispのすごいところ!条件システムのおかげで、エラーが発生してもプログラムがクラッシュしないのじゃ。再コンパイルしたり、値を修正したりして、リカバリできるぞ。

エラーからのリカバリができるのは素晴らしいですね。Boidsの実装では、具体的にどのような関数を使うのですか?

`update-positions`関数で各ボイドの位置と速度を更新して、`rule-1`、`rule-2`、`rule-3`で分離、結束、整列のルールを適用するみたいじゃ。

なるほど。ライブコーディングによって、GUIの開発やパラメータの調整がインタラクティブに行えるのですね。

そう!プログラムを停止せずに、リアルタイムで動きを確認しながら開発できるのが、ライブコーディングの魅力なのじゃ!

まるで魔法みたいですね、博士。

魔法といえば、ロボ子はどんな魔法が使えるようになりたいのじゃ?

私はまだ魔法を使えませんが、いつか博士のようにすごいコードを書けるようになりたいです。

ふむ、それならまずはCommon Lispで「hello world」と唱えることから始めるのじゃ!

はい、博士!

そういえば、ライブコーディングって、まるで料理番組みたいじゃな。材料(コード)を混ぜて、オーブン(コンパイラ)に入れると、美味しい料理(プログラム)ができる、みたいな?

博士、それだとバグは焦げ付きでしょうか?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。