クラックリング -- パーカッシブなジャグリング
こんにちは、クラックラーのノリです。今日で26歳になりました。
今日は新しい遊びを発明しました。
木製の密なボールでパームジャグリングをするといい音が鳴ったので、リズムを作るようにわざと音を鳴らしてみた。
これがクラックリング:
ボールにアクリル絵の具を塗って、半乾きの状態でクラックリングすると、クラックルボールができる。
流行ってほしい!
パーカッシブなジャグリングには、Chuka chuksという先輩がいる。そちらも面白い。
嬉しいこと
妻が昔少しだけかじったポイを再開したので、家族全員で市内のジャグリングサークルに通っている。 公園に行くときもしょっちゅう、彼女はポイを回して僕はボールを投げている。
会話するLISP
スケッチ
Talking REPL. Common Lisp forms from SLIME are captured with Emacs Lisp and sent to Festival's old Scheme to be spoken. All communications are done in S-expression. Fun but not great. yet. pic.twitter.com/mrExwGJ3sJ
— Minori Yamashita (@ympbyc) February 19, 2019
LispマシンMirai
この記事は lisp Advent Calendar 2018 の25日目に書かれました。
メリークリスマス!
一月ほど前に、ワイヤードを漂っていたMiraiのバイナリをうっかり手に入れてしまったので、 環境を作って少し遊んでみました。*1
CG制作統合開発環境Miraiのコードベースは、1980年代のSymbolicsで作られたS-Graphicsに端を発します。S-Graphicsは92年にニチメングラフィックス(旧:日本シンボリクス,現:NGC)に売却され、IRIXとWindows NTに移植されてN-Worldになり、これを下敷きにしてMiraiが作られました。現在はIzWareが権利を保有しています。Miraiのリリースが1999年なので、20年前のソフトウェアということになります。
ここら辺の事情は、Practical Scheme WiLikiのLisp:Geometryの項目を参照してください。
簡単に機能の一部を紹介すると、
- Geometry: Winged Edgeポリゴンモデラ
- Painting: テクスチャエディタ
- Animation: アニメーションエディタ(スケルタル、ディスプレイスメント、スクリプトなど色々使える)
- UV Editing: UVマップエディタ
- 3D Painting: モデルに直接色が塗れる
ソリッドボディやゼリー状の物体の物理シミュレーションなども行えるようです。
Miraiと言えば映画Lord of the Ringsのゴラムのモデリングに使われたエピソードが有名ですが、この記事ではモデラとしての側面ではなく、Symbolicsから連綿と受け継がれてきたLispマシンのバイブスに注目します。モデラに興味がある方は、Wings 3Dを使ってみるとよいかと思います。
MiraiはAllegro Common Lisp 5.0のACL Runtimeの上で動いています。面白いのが、裏にLispのリスナがいて、タスクトレイのアイコンのコンテキストメニューからInterrupt Lispを選ぶだけで、簡単にアクセスできてしまうことです。
他にもなにかしらエラーが発生したときに出るダイアログのDebugボタンなどから、すんなりとLispリスナに落としてくれます。
REPLが繋がっているというのは、そんなに珍しくはなくて、例えばBlederではPythonコンソールが使えたりしますが、Miraiのリスナのすごいのは、これがMiraiのプロセスそのものだというところです。
単純にスクリプティング用にAPIが提供されているというのではなく、動いているプロセスの実装そのものであるところの生きたオブジェクトがウヨウヨいる海を自由に泳ぎ回ることができます。CLOSのMOP等も使って、アプリケーションを実行中に内側から好きなように改変できてしまうという魅力が、上記WiLikiのLisp:Geometryにて存分に語られています。
さてこのリスナ、そのままだと使いづらいのですが、ACLのEmacs連携機能を使って、Emacsに繋いで使うことができます。Miraiに付いてきたelispはEmacs20用のものでしたが、数か所書き換えたらすんなり動きました。ネットワーク越しに繋ぐので、ローカルでもリモートでもいけます。
こうなるともういつものLispハッキングと変わりません。ACL Runtimeは、dumplispやdisassembleが無いのと、ドキュメンテーション文字列が皆無でdescribeも大して役に立たないことを除けば、普通のAllegro CLです。*2
準備が整ったら、どんどん式を評価していきましょう。
aproposでどんな手続きが定義されているかは探れるのですが、describeがまるで役に立たないので困ります。
N-Worldのオンラインドキュメンテーションを公開してくれている方がいるので、それとにらめっこすることになります。以下のリンク先のWide Open World Programmer's GuideにLispの情報が載っています。N-Worldのものですが、Miraiと高い互換性があります。 N-World 3.0 Online Documentation
全然大したことはしていませんが、動画を撮りました。のんびりご覧ください。ほんとはかっこよくboidsでも飛ばしたかったんですが、Lispエイリアンのモデリングで力尽きてそこまでいけませんでした。
Lisp界隈だとライブオブジェクトプログラミングという言い方はあまり聞きませんが、開発と実行が分かれていない環境はやはり楽しいし、オブジェクトの数が多ければ多いほど、ソフトウェアが複雑であるほど面白いように思います。こんなソフトウェアが増えればいいなあ。
Lisperならこんなに面白いおもちゃもなかなかないんじゃないでしょうか?うっかり手に入れちゃった人は遊んでみましょう。
just ask
関西Lispユーザー会でしゃべってきました
13日に神戸大学で開催された関西Lispユーザー会に初参加して、発表してきました。
スライドです。 docs.google.com
瀧先生のLispマシン TAKITAC 7
懇親会でも憧れの人たちと濃い話ができて面白かったです。
当日お会いした方々、運営の皆様お世話になりました。今後とも一つよろしくお願いします。
Lisp最高!
id:t-sin さんが詳細なレポートを書かれています。 octahedron.hatenablog.jp