enchantMOONとはなんだったのか。
買った:コクヨ 『コクヨ デジタルノート CamiApp S メモパッドタイプ Android版 NST-CAS-PA5-AM』#アマゾンポチ と入れて@返信でカートに追加・後で買う via @amazonJP amazon.co.jp/dp/B00MGCE2VS/…
2014-08-22 12:19:20ところで最近になってenchantMOONが一体全体なんだったのか、自分でも作ってる最中には気付かなかったことがいくつかポロポロ出て来て、何に使えばいいのか、何のためにこれが存在しているのかわかるようになってきた。明日の夏だ一番!電脳空間カウボーイズ祭りではそのへんの話をしよう
2014-08-22 12:30:02enchantMOONはもともと手書き版ポメラというコンセプトでスタートした。当初はAndroidを素で使って、それにノートとして使い易いシンプルなシェルを乗せて売るつもりだった。しかし同時にキーボード付きのプログラミング入門端末も検討してた。
2014-08-22 12:32:14しかしどうしてもデジタイザを入れると原価が跳ね上がる。それに会社の体力として二つのハード製品のラインを同時に立ち上げるのは無理があった。そこでなんとかこの二つを一緒にできないかと無茶なことを考えた。でもCESで発表した時点までは、まだプログラミング機能はオマケだった
2014-08-22 12:33:18CESで動くデモを作ろうとして、WebKitでMOONBlockを動かしてみたら、3fpsしかでなかった。チューニングされてないAndroidだとWebViewはここまで遅かったのだ。これは困った。仕方ないのでケビンがenchant.jsだけが高速に動作するVMを開発した。
2014-08-22 12:34:40この時点では、アプリ開発のメイン言語をRubyにするかJavaScriptにするかまだ迷っていた。データは全てベクトルだし、テキスト処理に近いから集合処理が得意なRubyはMOONのアプリを書くのに向いてると思っていた。が、mRubyの実装がまだ安定してないので延期した
2014-08-22 12:36:20その状態でアラン・ケイのところにいってデモをした。アラン・ケイはデモが命、の人なのでプレゼンを作るよりデモをしろと言われてenchantMOONの試作機とMOONBlockをデモした。するとケイが言った。「学習曲線をどう捉えてる?誰もプログラミング段階へ移行しようとしない」と
2014-08-22 12:42:31ケイ「Hypercardを思い出してみるがいい。あれはなぜ成功した?ハイパーリンクは誰でも理解できるし簡単だ。けどAutomaterは?なぜ誰も使わない?なぜ失敗した?便利だがよくわからないからだ。つまりハイパーリンクくらい簡単にしなければ、ただビジュアル化しただけでは失敗する」
2014-08-22 12:43:44ケイ「ハイパーリンクのオーサリング段階から、プログラミング段階への移行をどのように促すか、それが最大の問題だしこのプロジェクトの関心事だ。encantMOONの学習曲線をどのように設計するのか」
2014-08-22 12:44:40そこでハイパーリンクを作る時、ただリンクができるのではなく、MOONBlockのプログラムができるようにした。リンクを作る行為そのものが無意識的にプログラミングになっているのだ。リンクを作ったあとでHackすると、ユーザは自分が既にプログラミングしていたことに気付く仕掛けだ
2014-08-22 12:47:37するとenchantMOONの質的な意味が変化した。これが変化したということに僕はそれからたっぷ16ヶ月は気付かなかった。開発するのが大変すぎたし、対処すべき問題は山のようにあった。そしてそれがどういう意味を持つのかようやくハッキリと理解できたのはつい先週のことだ。
2014-08-22 12:48:55今年の頭にもういちどアラン・ケイに会いに行き、アドバイスが欲しい、と言うと「アドバイスすることはない。これは君たちのものだ。君たちが思った通りにやればいい。そのほうがずっといいものができる」と突き放された。この時は途方に暮れたが、そういいつつもそれから2時間に渡って話をしてくれた
2014-08-22 12:50:53そのときケイが何を意図していたのか良くわからなかったが、いまになってようやく解った。つまりenchantMOONは、デジタルノートではなかったのだ。デジタルノートではなく、手書きプログラミング端末といったほうが正しかったのだ。
2014-08-22 12:52:18ノートのように使おうと思った人たちが途方にくれた理由は主にそれだった。そしてたとえばフォルダ分けとかファイルとか、それまで当たり前だった概念を入れようとしてもどうもしっくりこないので理解できるようになるまでそういう機能は入れないようにしようと決めていたから、いまのかたちになった
2014-08-22 12:54:26するとenchantMOONのページとは、実はノートのページのように見えて、実際にはコンピュータのメモリそのものである。だからハイパーリンクで互いを参照できることに違和感がない。ここにファイルやフォルダの概念を導入すると、ファイル内部にハイパーリンクできるのかという議論になる
2014-08-22 12:55:43enchantMOONを使うという行為は、行為そのものがプログラミングである。なぜならメモリー(ページ)に直接データを書き込んでいるわけだから。それをシーケンシャルに、つまり左上から右下にむかって読まれることを想定して書くわけだ。これはプログラミングの基本要素の「順序」である
2014-08-22 12:56:45ハイパーリンク、これは明らかに「分岐」である。そして「繰り返し」は分岐の一部なのでハイパーリンクが循環していれば繰り返しであるとこじつけられなくもないが、それは詭弁であって、実際にはいわゆる「繰り返し」はブロックに頼るしかない。ブロックから見るとページ上の情報は操作対象にすぎない
2014-08-22 12:58:32つまり、enchantMOONで書かれたものは、無意識のうちになされていることではあるけれども、全てがプログラムの一部なのだ。こうなった明らかな原因はハイパーリンクを特別扱いせず、シールアプリの一種として実装したところから始まった
2014-08-22 12:59:24これから24時間以内にリリースされるMOONPhaseの新バージョンは、とても地味な変化しかないが、本質的には決定的な変化をする。それはノートストレージの採用だ。これはノート全体で共有される環境変数で、ページを跨いでも保持される。
2014-08-22 13:01:02これに伴ってプラグイン扱いだった罫線、プロンプトなどのブロックも標準搭載されるほか、超高機能なキットが追加される。さて、ということは今のところMOONBlockとノートは別れているように見える。だが実際には一体性が強いものだということが解って来た。
2014-08-22 13:02:24とすると次の段階はブロックとページがもっと密に結合するべきだという話になる。完全に別れるのではなく、部分的にプログラミングできるところを増やして行くか、とにかくもう少しマシな別の展開というのを考えられるようになるはずだ。つまりプログラミング端末であることを隠す必要はないということ
2014-08-22 13:03:34おそらくそういう意味でプログラミング端末としての本能を覚醒させるのが、さらに次のS-IVBの課題となるだろうということをようやく認識した。ただ、あんまり進化を急いでもユーザーの方々がついて来れないのでステップ・バイ・ステップでやっていくしかない。ペースはもう少し落とすべきかも
2014-08-22 13:05:47まあでも今回のバージョンアップではMOONBlockが超絶進化するので、それだけでかなり遊びの幅は広がるだろう。そしてそもそものenchantMOONの有効な使い方自体を発見したのがつい最近なので、それをもっと試す必要が有る。
2014-08-22 13:07:12