enchantMOONとはなんだったのか。

enchantMOONを作ったUEIの清水CEOによる、enchantMOONとはなんだったのか、という一連のつぶやき。 自分で後で読むためにまとめました。 一連の呟きが終了したようなので、ひとまず編集完了とします。
91
shi3z @shi3z

買った:コクヨ 『コクヨ デジタルノート CamiApp S メモパッドタイプ Android版 NST-CAS-PA5-AM』#アマゾンポチ と入れて@返信でカートに追加・後で買う via @amazonJP amazon.co.jp/dp/B00MGCE2VS/…

2014-08-22 12:19:20
shi3z @shi3z

両開きのが欲しかったが、なんか予約受け付けてないようなのでとりあえずシングルのを買った。両開きもどうせ買う

2014-08-22 12:19:49
shi3z @shi3z

ところで最近になってenchantMOONが一体全体なんだったのか、自分でも作ってる最中には気付かなかったことがいくつかポロポロ出て来て、何に使えばいいのか、何のためにこれが存在しているのかわかるようになってきた。明日の夏だ一番!電脳空間カウボーイズ祭りではそのへんの話をしよう

2014-08-22 12:30:02
shi3z @shi3z

enchantMOONはもともと手書き版ポメラというコンセプトでスタートした。当初はAndroidを素で使って、それにノートとして使い易いシンプルなシェルを乗せて売るつもりだった。しかし同時にキーボード付きのプログラミング入門端末も検討してた。

2014-08-22 12:32:14
shi3z @shi3z

しかしどうしてもデジタイザを入れると原価が跳ね上がる。それに会社の体力として二つのハード製品のラインを同時に立ち上げるのは無理があった。そこでなんとかこの二つを一緒にできないかと無茶なことを考えた。でもCESで発表した時点までは、まだプログラミング機能はオマケだった

2014-08-22 12:33:18
shi3z @shi3z

CESで動くデモを作ろうとして、WebKitでMOONBlockを動かしてみたら、3fpsしかでなかった。チューニングされてないAndroidだとWebViewはここまで遅かったのだ。これは困った。仕方ないのでケビンがenchant.jsだけが高速に動作するVMを開発した。

2014-08-22 12:34:40
shi3z @shi3z

この時点では、アプリ開発のメイン言語をRubyにするかJavaScriptにするかまだ迷っていた。データは全てベクトルだし、テキスト処理に近いから集合処理が得意なRubyはMOONのアプリを書くのに向いてると思っていた。が、mRubyの実装がまだ安定してないので延期した

2014-08-22 12:36:20
shi3z @shi3z

その状態でアラン・ケイのところにいってデモをした。アラン・ケイはデモが命、の人なのでプレゼンを作るよりデモをしろと言われてenchantMOONの試作機とMOONBlockをデモした。するとケイが言った。「学習曲線をどう捉えてる?誰もプログラミング段階へ移行しようとしない」と

2014-08-22 12:42:31
shi3z @shi3z

ケイ「Hypercardを思い出してみるがいい。あれはなぜ成功した?ハイパーリンクは誰でも理解できるし簡単だ。けどAutomaterは?なぜ誰も使わない?なぜ失敗した?便利だがよくわからないからだ。つまりハイパーリンクくらい簡単にしなければ、ただビジュアル化しただけでは失敗する」

2014-08-22 12:43:44
shi3z @shi3z

ケイ「ハイパーリンクのオーサリング段階から、プログラミング段階への移行をどのように促すか、それが最大の問題だしこのプロジェクトの関心事だ。encantMOONの学習曲線をどのように設計するのか」

2014-08-22 12:44:40
shi3z @shi3z

そこでハイパーリンクを作る時、ただリンクができるのではなく、MOONBlockのプログラムができるようにした。リンクを作る行為そのものが無意識的にプログラミングになっているのだ。リンクを作ったあとでHackすると、ユーザは自分が既にプログラミングしていたことに気付く仕掛けだ

2014-08-22 12:47:37
shi3z @shi3z

するとenchantMOONの質的な意味が変化した。これが変化したということに僕はそれからたっぷ16ヶ月は気付かなかった。開発するのが大変すぎたし、対処すべき問題は山のようにあった。そしてそれがどういう意味を持つのかようやくハッキリと理解できたのはつい先週のことだ。

2014-08-22 12:48:55
shi3z @shi3z

今年の頭にもういちどアラン・ケイに会いに行き、アドバイスが欲しい、と言うと「アドバイスすることはない。これは君たちのものだ。君たちが思った通りにやればいい。そのほうがずっといいものができる」と突き放された。この時は途方に暮れたが、そういいつつもそれから2時間に渡って話をしてくれた

2014-08-22 12:50:53
shi3z @shi3z

そのときケイが何を意図していたのか良くわからなかったが、いまになってようやく解った。つまりenchantMOONは、デジタルノートではなかったのだ。デジタルノートではなく、手書きプログラミング端末といったほうが正しかったのだ。

2014-08-22 12:52:18
shi3z @shi3z

ノートのように使おうと思った人たちが途方にくれた理由は主にそれだった。そしてたとえばフォルダ分けとかファイルとか、それまで当たり前だった概念を入れようとしてもどうもしっくりこないので理解できるようになるまでそういう機能は入れないようにしようと決めていたから、いまのかたちになった

2014-08-22 12:54:26
shi3z @shi3z

するとenchantMOONのページとは、実はノートのページのように見えて、実際にはコンピュータのメモリそのものである。だからハイパーリンクで互いを参照できることに違和感がない。ここにファイルやフォルダの概念を導入すると、ファイル内部にハイパーリンクできるのかという議論になる

2014-08-22 12:55:43
shi3z @shi3z

enchantMOONを使うという行為は、行為そのものがプログラミングである。なぜならメモリー(ページ)に直接データを書き込んでいるわけだから。それをシーケンシャルに、つまり左上から右下にむかって読まれることを想定して書くわけだ。これはプログラミングの基本要素の「順序」である

2014-08-22 12:56:45
shi3z @shi3z

ハイパーリンク、これは明らかに「分岐」である。そして「繰り返し」は分岐の一部なのでハイパーリンクが循環していれば繰り返しであるとこじつけられなくもないが、それは詭弁であって、実際にはいわゆる「繰り返し」はブロックに頼るしかない。ブロックから見るとページ上の情報は操作対象にすぎない

2014-08-22 12:58:32
shi3z @shi3z

つまり、enchantMOONで書かれたものは、無意識のうちになされていることではあるけれども、全てがプログラムの一部なのだ。こうなった明らかな原因はハイパーリンクを特別扱いせず、シールアプリの一種として実装したところから始まった

2014-08-22 12:59:24
shi3z @shi3z

これから24時間以内にリリースされるMOONPhaseの新バージョンは、とても地味な変化しかないが、本質的には決定的な変化をする。それはノートストレージの採用だ。これはノート全体で共有される環境変数で、ページを跨いでも保持される。

2014-08-22 13:01:02
shi3z @shi3z

これに伴ってプラグイン扱いだった罫線、プロンプトなどのブロックも標準搭載されるほか、超高機能なキットが追加される。さて、ということは今のところMOONBlockとノートは別れているように見える。だが実際には一体性が強いものだということが解って来た。

2014-08-22 13:02:24
shi3z @shi3z

とすると次の段階はブロックとページがもっと密に結合するべきだという話になる。完全に別れるのではなく、部分的にプログラミングできるところを増やして行くか、とにかくもう少しマシな別の展開というのを考えられるようになるはずだ。つまりプログラミング端末であることを隠す必要はないということ

2014-08-22 13:03:34
shi3z @shi3z

おそらくそういう意味でプログラミング端末としての本能を覚醒させるのが、さらに次のS-IVBの課題となるだろうということをようやく認識した。ただ、あんまり進化を急いでもユーザーの方々がついて来れないのでステップ・バイ・ステップでやっていくしかない。ペースはもう少し落とすべきかも

2014-08-22 13:05:47
shi3z @shi3z

まあでも今回のバージョンアップではMOONBlockが超絶進化するので、それだけでかなり遊びの幅は広がるだろう。そしてそもそものenchantMOONの有効な使い方自体を発見したのがつい最近なので、それをもっと試す必要が有る。

2014-08-22 13:07:12