標高+1m

Don't be rational.

ソバの脱穀

9月頭に蒔いたソバに無事実が付き、刈り取って干していた。 昨日きれいに晴れたので庭で脱穀をした。

最近電子工作クラブの中学生たちと遊んでいるminetest(マイクラクローン)の農業Modで、スノコ的なものに叩きつけて脱穀することを学んだので、笊に叩きつけてみることにした。

うまく取れたけど葉や茎が混ざったので、今度風で飛ばす。

1年目なので無理せず庭で育てたら、羽釜一杯分しか取れなかった。蒔いた分より増えたからよし。来年は山の畑で1年分作るぞ。

f:id:ympbyc:20181229024534j:plainf:id:ympbyc:20181229024543j:plainf:id:ympbyc:20181229024526j:plainf:id:ympbyc:20181229024551j:plain

今年は庭でいつでも焚火ができるようにしたのが嬉しい。燃料は前の川で流木を拾える。

LispマシンMirai

mirai screenshot

この記事は 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年前のソフトウェアということになります。

symbolics
嗚呼憧れのSymbolics

ここら辺の事情は、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リスナに落としてくれます。

mirai error dialog
エラーダイアログ. CLのリスタート機能が生かされていて、よくあるOKしかないダイアログよりずっと柔軟.

common lisp listener for Mirai
リスナ

REPLが繋がっているというのは、そんなに珍しくはなくて、例えばBlederではPythonコンソールが使えたりしますが、Miraiのリスナのすごいのは、これがMiraiのプロセスそのものだというところです。

単純にスクリプティング用にAPIが提供されているというのではなく、動いているプロセスの実装そのものであるところの生きたオブジェクトがウヨウヨいる海を自由に泳ぎ回ることができます。CLOSのMOP等も使って、アプリケーションを実行中に内側から好きなように改変できてしまうという魅力が、上記WiLikiのLisp:Geometryにて存分に語られています。

さてこのリスナ、そのままだと使いづらいのですが、ACLEmacs連携機能を使って、Emacsに繋いで使うことができます。Miraiに付いてきたelispはEmacs20用のものでしたが、数か所書き換えたらすんなり動きました。ネットワーク越しに繋ぐので、ローカルでもリモートでもいけます。

Mirai on winxp talking to NT Emacs on win10
ホストOS(win10)上のNT EmacsとゲストOS上のMiraiを繋いだところ

こうなるともういつものLispハッキングと変わりません。ACL Runtimeは、dumplispやdisassembleが無いのと、ドキュメンテーション文字列が皆無でdescribeも大して役に立たないことを除けば、普通のAllegro CLです。*2

準備が整ったら、どんどん式を評価していきましょう。

aproposでどんな手続きが定義されているかは探れるのですが、describeがまるで役に立たないので困ります。

usless describe
役立たずのdescribe

N-Worldのオンラインドキュメンテーションを公開してくれている方がいるので、それとにらめっこすることになります。以下のリンク先のWide Open World Programmer's GuideにLispの情報が載っています。N-Worldのものですが、Miraiと高い互換性があります。 N-World 3.0 Online Documentation

全然大したことはしていませんが、動画を撮りました。のんびりご覧ください。ほんとはかっこよくboidsでも飛ばしたかったんですが、Lispエイリアンのモデリングで力尽きてそこまでいけませんでした。

www.youtube.com

Lisp界隈だとライブオブジェクトプログラミングという言い方はあまり聞きませんが、開発と実行が分かれていない環境はやはり楽しいし、オブジェクトの数が多ければ多いほど、ソフトウェアが複雑であるほど面白いように思います。こんなソフトウェアが増えればいいなあ。

Lisperならこんなに面白いおもちゃもなかなかないんじゃないでしょうか?うっかり手に入れちゃった人は遊んでみましょう。

just ask

*1:ほんとはN-Worldが欲しかったのですが、NGCも持っていないそうなのでMiraiで我慢します。N-World持っている方ぜひ譲ってください。

*2:実はdisassembleしたくてFranzにACL 5を安く売ってくれないか掛け合ってみましたが、ライセンスの発行にエンジニアを動かす必要があるとのことで、だめでした。ACL 10 Professionalの値段を出せば買えるようです。

関西Lispユーザー会でしゃべってきました

13日に神戸大学で開催された関西Lispユーザー会に初参加して、発表してきました。

スライドです。 docs.google.com

瀧先生のLispマシン TAKITAC 7 f:id:ympbyc:20181013171702j:plain f:id:ympbyc:20181013170255j:plain

懇親会でも憧れの人たちと濃い話ができて面白かったです。

当日お会いした方々、運営の皆様お世話になりました。今後とも一つよろしくお願いします。

Lisp最高!

id:t-sin さんが詳細なレポートを書かれています。 octahedron.hatenablog.jp

自然保存プロジェクト Nature Conservation Project

キーボードを筆、Lispを絵の具、GPUをキャンバスにして絵を描いている。

Lately I've been painting pictures, with Lisp as brushes and GPU as canvases.

Inspiration:

f:id:ympbyc:20180805192511j:plain

Development:

f:id:ympbyc:20180914121152p:plain

Snapshot:

f:id:ympbyc:20180914121231p:plain

次の宇宙の子孫たちのために、現象のダイナミクスアーカイブしておきたい。

I feel the need to archive the dynamics' of natural phenomena for my descendants in the next universe.

夏の過ごし方 -- 外気からエネルギーを得て生きる

f:id:ympbyc:20180726120528j:plain

あまりエアコンが好きではない。

どこもかしこも冷やしすぎだ。冬より寒いわ。 キンキンに冷えた室内で寒い寒いと思って、外にでて暖まっていると、他の人が出てきて、「暑っ!」とか言っている。アホかこれが普通じゃ、と思う。

毎年夏は夏バテ気味で乗り切ってきて、夏はバテるもんだと思ってきたけど、今年はバテていない。

飯を最小限しか食わなければ全然暑くないという事に気付いた。

夏は皮膚から熱エネルギーを得れるから炭水化物はあまり必要ないんじゃないか。

キュウリに塩塗ってかじったり、スイカ食べて体温下げたり、川で泳いだりして、余裕しゃくしゃくである。

人間、冬は太り、夏は痩せるものさ。

熱量(カロリー)を摂って燃焼させておいて、暑い暑いといってエアコンで地球を暖めるのは止めて、外部エネルギーを取り込もう。火力発電から太陽光発電に切り替えるようなものだ。

地球から生まれた人間が、地球で生きられないはずはないじゃないか。環境は敵対ではなく適応するものである。

理論編

生命活動維持に外気のエネルギーを利用できることが信じられない人のために。

ヒトの体温調節より、人体が一定の温度に保たれるとき、以下の等式が成り立つ。

M = E ± R± C ± S

  • M:代謝による熱産生量
  • E:蒸発
  • R:輻射
  • C:伝導,対流
  • S:蓄熱量

身長172cmウエスト70cmの人体を37°Cで保温(S=0)することを考える。

放射率表より皮膚の放射率は0.99、服は0.95
2-14. 種々の物質の熱伝導率より綿の熱伝導率は0.03、綿布は0.08(W/m K)
蒸発はとりあえず0とする。

これを ★ 熱の計算: 放熱に入力して計算する。

冬 (外気0° 3cm厚の綿):

f:id:ympbyc:20180726151538p:plain M = 0 + 36×1.72 + 41×1.72 + 0 = 132W = 113kcal/hr

夏(外気37° 綿シャツ一枚): f:id:ympbyc:20180726151841p:plain

M = 0 + 0 + 0 + 0 = 0W = 0kcal/hr

めっちゃ大雑把だけど、言いたいことは、冬は体温を維持するためだけでかなりの熱量を産生する必要があるが、夏の暑い時間は外気温だけで保温できるので、熱を産生する必要がない。ということ。

発汗によって失われる水分やミネラルは補給する必要があるが、糖はいらない。