標高+1m

Don't be rational.

神山に引っ越してきました

f:id:ympbyc:20150619113533p:plain

6/15日から、株式会社PILOTサテライトオフィス開設要員として、徳島県神山町に赴任してきました。合わせて新設した研究開発部 PILOT Proto Lab の拠点作りで慌ただしい日々を送ってます。

proto.pilotz.jp

3Dアルゴリズミックモデリングプロジェクションマッピング、VR、ドローン、ライブストリーミングなど、面白そうなものに片っ端から手を出して行こうと準備を進めています。

f:id:ympbyc:20150619114424j:plainf:id:ympbyc:20150619114431p:plainf:id:ympbyc:20150619114911j:plain

よろしくお願いします。いつでも遊びに来てください。

f:id:ympbyc:20150619114352p:plain

f:id:ympbyc:20150619162736j:plain

玲音はBeOSユーザーだった!? lainのLisp開発環境を発掘!

f:id:ympbyc:20150613140739p:plain

こんばんは。アマチュアLisp考古学者の山下です。先週弊社でピザを焼きながら唐突に話題に上った、lainのHandiNAVIにLispソースコードが表示されているシーンについて検証していきます。

幻のLisp開発環境を手に入れてコネクトワイヤードしたい!

f:id:ympbyc:20150612193455j:plain

まずは先人たちの研究によって判明している事項のまとめ:

以上のことはwikipedia英語版のSerial Experiments Lainの記事にまとまっています。

ちなみに、このライフゲーム、お好みのCommon Lispのリスナーに書けば動くんですが、ちょっと見た感じ停止しないっぽいので、カウンターつけるなり、next-cycle の頭とかに (sleep 1) くらい入れてやると良いです。

f:id:ympbyc:20150612234757p:plain

それはさておき、今回特定したいのは、Lispを表示しているこのエディタ、開発環境の正体です。

f:id:ympbyc:20150612195505j:plain

この画像をよく見ると、一部隠れているもののウインドウのタイトルが読めます。CRowViewCL。まずはこれをGoogleサーチしてみました。

CRowViewCL - Google Search

検索結果は一件。 なんと件の環境をブラウザ上に再現しているサイトが出てきます。

http://mebious.neocities.org/public_html/Infornography.html

f:id:ympbyc:20150612200026p:plain

mebious.neocities.org 謎しかないけどワイヤードの世界を体験出来ます。 誰か詳細知ってたら教えてください。 wired.entry.neocities

このページのおかげでわかったことは、CRowViewCLは実在のソフトウェアではないことと、件のエディタがIDEであるということ。確かに元画像にもIDEという文字は見て取れます。

Apple NewtonやCoplandへのリファレンスから、最初はMacNeXTSTEPかのソフトウェアかと推理したのですが、よく観察するとどうもそうではなさそうです。

  1. メニューバーがウインドウに内包されている。
  2. フォントがChicagoだ。

Copland ProjectのPinkのスクリーンショットでも、メニューバーは画面上部にあり、Chicagoフォントが使われているのが確認できるので、アップルのシステムという線は捨てて捜査を進めました。

ではなんなのか

このページによると、各エピソードの終わりに表示される"To Be Continued"のBeのカラーリングがBe Inc.の昔のロゴをリゼンブルしているらしい。BeOSも出自からしAppleと関係が深い。ビビビッと来ましたね。

f:id:ympbyc:20150613134904p:plain

おもむろに"BeOS IDE"と検索してみると……ビンゴ!

f:id:ympbyc:20150612203337j:plain

  • フォントが一致. どちらもCourier 10 BT Roman
  • ウインドウの枠線が一致。1pxの線と直角を多用するBeOSの可愛らしい特徴が出ています
  • メニューバーの色が一致
  • メニューバーの項目、File   Project   Windowが一致。ツールバー右端にはみ出ている Data が決定的証拠.
  • ツールバーの下の sources が一致

この画面は、 CodeWarrior 1.5 for BeOSスクリーンショットです。CodeWarriorなんて初めて聞いたけど、XCode以前に一大帝国を築いていたIDEらしいです。対応言語はC,C++,Pascal,Javaで、残念ながらCommon Lispは入っていないようです。

HandiNaviで動くLispの開発環境CRowViewCLのモデルは、Code Warrior for BeOSだということが判明しました。

また、HandiNAVIでBeOSのバイナリが走っていることから、Copland OS EnterpriseはBeOSの亜種なのではないかという仮説が立ちます。

Code Warrior for BeOSlainを結びつける記述はどこにも発見できなかったので、きっと新発見だと思います。

せっかくなので再現画像を作ってみました。Code Warrior for BeOSのウインドウに、Emacsでハイライトしたライフゲームソースコードをハメ込んでいます。

f:id:ympbyc:20150612215426p:plain

Reptoidsボタンがあるツールバーは依然謎のままです。昔の映像だと、他のボーダーはスムースなのにツールバーの上だけジャギってるので、ハメ込みじゃないかと思ってます。ちなみにReptoidはヒト型爬虫類のことです。あとは頼みます。

HandiNavi=Palm説 (追記 2018/09/30)

Reptoidsの出処を突き止めました。Reptoidという名前のゲームがCodeWorriorのPalm OSSDKにサンプルとして付属していたようで、Palm,Inc.のRoger Floreというハッカーが作ったもののようです。

出典: Palm Hacker's Salon CodeWarrior講座 第2回 サンプルを改造してみる

f:id:ympbyc:20180930002313g:plainf:id:ympbyc:20180930002319g:plain ツールバーに注目

HandiNaviのハードウェアはApple Newtonをモデルにしているというのが定説ですが、Palm説も浮上してきました。

というわけで幻の開発環境の正体の本命は、Palm上のBeOSで動くCommon Lisp対応のCodeWorriorということになります。

f:id:ympbyc:20181001151126p:plain


p.s. 

  • BeOSが気になってきた方はHaiku OSとかいじってみると楽しいと思います。
  • Code Warriorの体験談お寄せください。

Source code - SEL wiki

Clojure界隈楽しい & life on runtime

Clojure/West 2015のビデオ見始めたんですが、今年は豊作だったみたいですね。

多次元パラメータスペースを使ったジェネレティブアート。最高! Quilの上にMany Worldsってライブラリを作ったそうです。

www.youtube.com

前から気になってたcloxp。githubできてた。今日ちょっと触ってみて #tokyoclj で軽く紹介しました。JS版Smalltalk環境のLively Kernel上のClojureの開発環境という、超ニッチなところ攻めて来てます。ランタイムでlive object触って開発するのまじ楽しっすよ。今度のSmalltalk勉強会で日本のSmalltalker達に紹介する予定です。

www.youtube.com

ランタイムで開発といえば、ちょっと違うけどもう一つ。Figwheel。ランタイムの状態を壊すことなくトライアンドエラーサイクルを回せるってもの。こちらは普通のエディタ使えるのでマス受けしそう 。 www.youtube.com

まだいくつかしか観れてないですが、他にも面白いtalkいっぱいあります。乱数のやつとか。Clojure界隈不思議なことしてる人が多くて楽しいです。Something beyond ordinary programmingみたいなの好きな人は要チェック!

www.youtube.com

ランタイムでの開発って話でいうと実は僕も作ってるものがあって、近いうちに発表できるとこまで持って行きたいなと思ってます。Fluxアプリをブラウザ上で開発しちゃおうってもの。これはClojure関係なくてVanilla JS。まだPoCでWIP. よかったら一緒にやりましょう。

github.com

なんか久しぶりに開発意欲が湧いてきた。 #tokyoclj 行ってよかった。来週のClojureScript勉強会も行きます。

次元ベース宇宙の性質と勉強会のお知らせ

f:id:ympbyc:20150506120157g:plain

よく忘れるのでメモ。

任意のn次元空間Aからn+m次元図形aを観測できるとき、aが存在するn+m次元空間は必ずそのうちのn本の軸をAと共有している。

例えば、理想的な4次元空間(xyzw空間)に於いて、観測装置がxyz空間にあって、3次元立体がxyw空間にあるとき、この立体はxy平面に張り付いた体積0の2次元断面として観測されるはずだけど、z方向の厚みを素粒子一粒分すら持てないため光学的な観測は不可能。

重力はこういう風にはみ出てるんじゃないかっていうのがvacuum energyとかunified field theoryとかひも理論とかグラビトンの話につながる。証明が難しいけど論理的にはとても自然。

話は変わって、なんとなく勉強会というかビアバッシュでも開きたいなと思ってます。幾何学 ∪ 理論物理学 ∪ 計算機科学みたいなテーマで、ビール片手に語り合う会に興味がある方はぜひtwitterで教えてください。 Minori Yamashita (@ympbyc) | Twitter

数人でも興味ある方がいれば会場とビール確保してatndだかcompassだかなんだかで募集かけます。

Brian Greeneが最高

I wanna be a part of the pathway towards truth. I don't care what that truth is. I just wanna help to find it. And if string theory is wrong, get rid of it!

考えてることも科学に対する姿勢も話し方も大好き。World Science Festivalのディスカッション全部めちゃくちゃ面白いのでおすすめ。

日本語訳ついてるのだとこれとか

www.ted.com

それから、これはひも理論関係ないけどe8の話面白い。

www.ted.com

やっぱり理論物理学って面白い。

高次元立方体を描く

f:id:ympbyc:20150412222058p:plain

先日の記事で触れたように、次元数の軸が、どれかの次元の軸についての方程式になっていた場合どんな挙動になるのかの実験のためにn次元単位立体を描画するプログラムを書いています。プログラマだと実験の道具を自分の指先でちょちょいと作れてとても便利。

今日の夕方にJSFiddleで暇つぶしに書いていたら、n次元(0含む)の立方体の辺を描画するものが呆気ないほど簡単にできてしまいました。

超立方体 - Wikipedia
正八胞体 - Wikipedia

5次元立方体のワイヤフレーム。コード末尾の方のstatedが次元数(軸の数)。"Edit in JSFiddle"から、この数値を変えたりして実験できます。

gistはココ: gist: Draw n-dimentional cube on canvas.

あくまでスクリプト的なコードで、効率などは無視していますが、わりかしシンプルに表現できました。

仕組みとしては、

  1. x軸の角度と、y軸の角度をパラメータとして受け取って、この2軸が作る角度を等分割して残りの軸を割り当てる。
  2. 次元軸の置換(permutation)について、 これと {0: 1, 1: 1, ..., n: 1}ベクタplotVertexを呼ぶ。
  3. plotVertexは座標ベクタを舐めて、各スカラーxについて半径xの円周と軸の交点に向けて辺を描画する。この交点を保存しておいて、次の辺のスタート地点とする。

という、定規とコンパスを使う時と全く同じ仕組みになっています。

出来上がった図形は、立体を2次元に投影するときに、互いに直角ではない角度を直角であると錯覚するのと全く同じように、全ての角度が直角であると錯覚して見る必要があります。

以下ギャラリーです。辺の重なりの奥-手前関係は考慮していないので注意。

2次元立方体 2-cube

f:id:ympbyc:20150412231031p:plain

3次元立方体 3-cube

f:id:ympbyc:20150412235728p:plain

4次元立方体 4-cube

f:id:ympbyc:20150412235756p:plain f:id:ympbyc:20150412235819p:plain

5次元立方体 5-cube

f:id:ympbyc:20150412235834p:plain f:id:ympbyc:20150412235845p:plain

6次元立方体 6-cube

f:id:ympbyc:20150412235947p:plain f:id:ympbyc:20150412235955p:plain f:id:ympbyc:20150413000007p:plain

7次元立方体 7-cube

f:id:ympbyc:20150413000042p:plain

8次元立方体 8-cube

f:id:ympbyc:20150413000503p:plain

9次元立方体 9-cube

f:id:ympbyc:20150413000523p:plain

ちゃんと各頂点に次元数本の辺が集まっているのが確認できます。

次元が増えるにつれて赤くなっていくのは、色を設定し忘れた軸方向の線が、デフォルトの赤で引かれているからです。

暇を見つけて改良していきます。任意の軸についての回転を実装すればだいぶ把握しやすくなりそう。

編集履歴

Apr 18 2015

  • もっとうまいやり方を思いついたのでコードを修正しました。美しくなったけどネストした再帰のせいで重くなった。

Apr 19 2015

  • コードを修正して、軸を、等分割位置から0.1τずらすようにしました。ちょうど重なって繋がっているように見えていた線分がうまいことズレて見れるようになった。

  • 任意の軸方向にスケールできるようにしました。

f:id:ympbyc:20150420101117g:plain

関連記事

ympbyc.hatenablog.com