gofujita notes

on outline processing, writing, and human activities for nature


Smalltalk とアウトライナー

Smalltalk を朝と夕方、時間があれば最優先でさわるようになってから4か月たった。今、主にさわっている Smalltalk は PharoSqueak Smalltalk

プログラミング言語処理系という枠におさまらない、OS でもあるような環境で、何冊かのテキストをよみながらコードをかく練習をくり返している。以下は、これまでに学んだテキストのリスト。

これ以外に、英語圏や日本語圏の Smalltalk のコミュニティーの人たちが発信する情報から学ぶことも多い。オンライン情報から具体的なプログラミングのスタイルを学びやすいのも、独学の身としては、うれしいかぎり。

上にあげた Pharo のサイトにあるコミュニティー情報は参考になるものが多いし、Squeak Wiki は本当におもしろい。@sumim さんのウェブサイトQuera の記事、そしてツイートは、Smalltalk を学ぼうとする人にとっては、欠かすことのできない存在である。

テキストやウェブサイトに出てくるコードを写経したり、その途中でみかけた気になるクラスとそれに含まれるメソッドのコードをよみながら、Workspace という Smalltalk と対話できるような場所でクラスを試しにつかったり、にた機能のぼくのクラスをつくってみたり。

プログラミングというのは、少なくともぼくにとって難しいことなのだとずっと思っていたけれど、難しいことは難しいけれど、ナンというか、タイヘン愉しい。

Smalltalk のおもしろさとすばらしさを、少しずつかいていきたいと思っているけれど、Smalltalk をつかっていると初期の Smalltalk や Squeak を実装したダン・インガルス Dan Ingalls さんや他の Smalltalk デザイナーたちがこちらにやってきて話しながら、あるいは Smalltalk そのものと対話しながら何かをつくっているような心もちになることが多い。この感覚がたまらなくいい。

今のところ Smalltalk は趣味であり、なぜあなたは Smalltalk を使っているのかといわれたら、Smalltalk が好きだからあたり前のことをやってるんだと、答えるだろう。

ついでにいっておくと、Smalltalk の歴史をしらべるのも大好きで、アラン・ケイ Alan Kay とインガルスの論文や記事をよむことも、隙をみつけてはつづけている。

できれば、Smalltalk を、かきながら考えたり、広い意味でのシミュレーションしたりするガレージのような場所につくりこんでいきたいと思っている。でも、それが〈カタチ〉になるまでには、より多くの場面で利用できるように「抽象化 abstraction」できるまでには、少し時間がかかりそう。

そんな Smalltalk との日々とは並行して、相変わらず毎日、アウトライナーでかきながら考え、考えながらかいている。アウトライナーとのつきあいは、もう10年になる。ずっとお世話になっているアウトライナーに何かお礼がしたいのだけれど、自分には何ができるだろうかと、よく考える。

ぼくにとってのアウトライナーの基礎になるのは、Tak.さんの「ピース」の話し。これこそが、アウトライナー機能の核になる要素を説明する仮説 theory である。

Tak.さんの「ピース」話しは、『書くためのアウトライナー・プロセッシング』でよむことができる。それをぼくなりに短くえいやとかくと、以下のようになる。

名詞や文節もピースなら、センテンスもピース。パラグラフもピースであり、論文あるいは本一冊もピース。そしてそれらのすべてが自分なりの意味をもち、それぞれが関係からまた新しい意味が生まれる。ピースはどの単位でも入れ替え可能で、その変化によって全体の意味が育つこともあれば、崩壊することもある (笑)。

そのピースのダイナミクスを生み出すしかけをアウトライナーが担っている訳だけれど、アウトライナーとそこに置かれたテキスト情報だけでは、ダイナミクスは起こらない。上にかいたようなピースの動態は、ぼくたちがそれをよみ、意味を評価し、手を動かすことによって初めて生まれる。

そしてこの「ピース理論」の実装としてのアウトライナーは、デイブ・ワイナー Dave Winer さんが1970年代の半ばからつくりつづけてきた作品を中心に考えている。ThinkTank や MORE、Fargo や Little Outliner、そして Drummer のアウトライナーなど。

実際につかっているのは、頻度の多い順にかくと Spacemacs org-mode (Emacs) と先にかいた Drummer のアウトライナー、そして DynalistOmniOutliner。Org-mode は あの有名なテキストエディターの Emacs なので、Emacs Lisp を学びながらのんびり自分用につくりこんでいきたいが、まずは Drummer アウトライナーから、アウトライナーデザインのスタイルを学びたいとタクランでいる (ニヤリ)。

で、ぼくの今の夢は、Smalltalk とアウトライナーがそれぞれの役割をもつような、上位階層をみつけること。

パーソナル・コンピューティング personal computing ということばが、何となく候補として浮かんでいるけれど、まだそれ (だけ) ではうまくピースがハマらないことは、はっきり分かっている。

ぼくが今できる次のことを進めながら、つくっては壊し、壊しながらつくることを繰り返しながら、そしてシェイクをつづけながら、自分なりの〈カタチ〉を探していきたい。