デイブ・ワイナー「アウトライナーについてのふたつの見方」 [アウトライナー]
デイブ・ワイナーのScripting Newsより「Two ways of looking at an outliner」の日本語訳。Happy Outliningの方とブログとどっちに公開しようか悩んだあげく、とりあえずこちらに公開。
アウトライナーの中で編集されるアウトラインは、単一のドキュメントとみなすこともできるし、複数のドキュメントの集合ともみなすことができるというのは、意外に意識されていないこと。そして、その特性をはっきりと意識して実装されたアウトライナーはFargoが最初じゃないだろうか(本当はその前にOPML Editorがあったんだけど)。
これにより、Fargoはブログを丸ごとアウトラインの中で編集することを可能にしている。また将来的にはEvernoteのノートブックをアウトラインとして編集できるようにすることを考えているらしい。
※ちなみに、以下の本文訳部分を、Fargoのアウトラインで作成した実験ブログ「Word Piece2」に公開したので、イメージつかない人は見てみてください。アウトラインがそのままブログ記事としてレンダリングされてるのがわかります。
アウトライナーの持つ二面性
アウトライナーはその二面性ゆえに、生産性アプリとしては異色の存在だ。
1. アウトラインはひとつのドキュメント(文書)として見ることもできるし、
2. 階層的に整理された複数のドキュメントの集合として見ることもできる。
この二面性は、その最も初期の段階からアウトライナーの設計デザインに混乱をもたらしてきた。私にとってのそれは1970年代末のことだった(エンゲルバートにとってはもう少し早い時期だった)。
物ごとを表面的にしか見ない人は、アウトライナーはワードプロセッサーの一種であるという結論に飛びつきがちだが、それは全く違う。私の開発したアウトライナーは、ファイルシステムとしての要素とワードプロセッサーとしての要素を両方持っている。しかしキーボードとマウスは一組しかないので、このバランスは微妙な問題につながることがある。それぞれの要素に結びついた操作を選ばなければならないからだ。
しかし、私たちはうまくバランスを取ってきたと思う。私はFargoをWordやGoogle Docsのようなワードプロセッサーだとは思っていないが、私自身のような物書きが必要とするテキスト編集のタスクのほとんどについては違いはない。
ファイルシステムはアウトライナーである
MacやWindowsといったデスクトップOSにおけるFinderやExplorerは、以下の点でアウトライナーの基本的な用件を満たしている。
1. 表示される要素のレベルをコントロールすることができる
2. 構造を持ち、再構成することができる
言いかえれば、階層の折りたたみ/展開表示とドラッグ操作による再構成の機能を持っている。階層の表示レベルをコントロールできて、何かを移動させると、それに従属する内容は全て一緒に移動するのがアウトライナーだ。
新発想としての構造的ページ区切り
Fargoは、アウトライン構造の中にアウトライナーならではの「ページ区切り」を設ける方法を見出したことで、ドキュメントの集合としてのアウトラインという考え方を実現している。あるヘッドラインにtype属性が設定されていれば、それはドキュメントのタイトルとみなされる。下位ヘッドラインはドキュメントの内容になる。この方法で、FargoはまるでFinderのように振る舞うのだが、ひとつだけ重要な違いがある。それは、ドキュメントの内容を編集するために独立したウィンドウを開く必要がないということだ。ただ(アウトラインを)展開して、編集すればいい。そして、あるドキュメントの内容を他のドキュメントに移動するには、フォルダの中のファイルを他のフォルダに移動するのと全く同じ、ドラッグ操作だ。
type属性は、アウトラインをレンダリングするときに重要な役割を果たす。例えばアウトラインを使ってEvernoteのノートブックを編集したり、WordPressのブログを編集するときだ。
それ以外の場面では、type属性付きヘッドラインも、通常のアウトライナーのノードと全く同じように振る舞う。ただ、そのコンテンツをアウトライナー以外の環境で表示するときに、それらはドキュメント——たとえばEvernoteのノートやブログポスト——として表示されるのだ。
例
例として、今作業しているアウトラインのスクリーンショットをあげよう。
アウトラインの構造が見られるように、短めのブログポストをひとつ展開した状態にしてある。
小さな三角系のアイコンの代わりに書類アイコンのついたヘッドラインが、type属性が設定されたヘッドラインだ。これがドキュメントだ。
私のブログ全体が、Dropboxに保存された単独のOPMLファイルになっている。
私たちのCMSであるTrexは、ここに示した決まりごとを理解し、ウェブサイトを適切にレンダリングする。サイトのRSSフィードも同じ仕組みを利用している。
ここで紹介した発想は、アウトライナーにとってのブレークスルーになると私は考えている。二年前にOPML Editorの機能としてはじめて公開され、今ではFargoとTrexにフルに実装されている、World Outlineの基礎となったものだ。互いの結びつきは緩いものなので、OPMLを吐き出せるアウトライナーなら全て、Trexで処理できる形でコンテンツを出力することができる。逆にFargoは同じ仕組みで動作するどんなCMS、あるいはその他の処理プログラムにも接続することができる。
私たちは、他にもいくつかの開発者たちと、このコンセプトを利用するソフトについて取り組んでいる。今月末のEvernoteカンファレンスまでには、何らかのデモをお見せしたいと思っている(と祈っている)。
OPMLを見れば全てがわかる
あなたが開発者で、自分の目で見てみたいと思ったら、ここにこのサイトのOPMLファイルがあるので、どのように動くか自分自身で確かめてみてほしい。実際のウェブサイトを動作させるための様々なスクリプトやテンプレートが含まれてるので、そのつもりで!
アウトライナーの中で編集されるアウトラインは、単一のドキュメントとみなすこともできるし、複数のドキュメントの集合ともみなすことができるというのは、意外に意識されていないこと。そして、その特性をはっきりと意識して実装されたアウトライナーはFargoが最初じゃないだろうか(本当はその前にOPML Editorがあったんだけど)。
これにより、Fargoはブログを丸ごとアウトラインの中で編集することを可能にしている。また将来的にはEvernoteのノートブックをアウトラインとして編集できるようにすることを考えているらしい。
※ちなみに、以下の本文訳部分を、Fargoのアウトラインで作成した実験ブログ「Word Piece2」に公開したので、イメージつかない人は見てみてください。アウトラインがそのままブログ記事としてレンダリングされてるのがわかります。
アウトライナーの持つ二面性
アウトライナーはその二面性ゆえに、生産性アプリとしては異色の存在だ。
1. アウトラインはひとつのドキュメント(文書)として見ることもできるし、
2. 階層的に整理された複数のドキュメントの集合として見ることもできる。
この二面性は、その最も初期の段階からアウトライナーの設計デザインに混乱をもたらしてきた。私にとってのそれは1970年代末のことだった(エンゲルバートにとってはもう少し早い時期だった)。
物ごとを表面的にしか見ない人は、アウトライナーはワードプロセッサーの一種であるという結論に飛びつきがちだが、それは全く違う。私の開発したアウトライナーは、ファイルシステムとしての要素とワードプロセッサーとしての要素を両方持っている。しかしキーボードとマウスは一組しかないので、このバランスは微妙な問題につながることがある。それぞれの要素に結びついた操作を選ばなければならないからだ。
しかし、私たちはうまくバランスを取ってきたと思う。私はFargoをWordやGoogle Docsのようなワードプロセッサーだとは思っていないが、私自身のような物書きが必要とするテキスト編集のタスクのほとんどについては違いはない。
ファイルシステムはアウトライナーである
MacやWindowsといったデスクトップOSにおけるFinderやExplorerは、以下の点でアウトライナーの基本的な用件を満たしている。
1. 表示される要素のレベルをコントロールすることができる
2. 構造を持ち、再構成することができる
言いかえれば、階層の折りたたみ/展開表示とドラッグ操作による再構成の機能を持っている。階層の表示レベルをコントロールできて、何かを移動させると、それに従属する内容は全て一緒に移動するのがアウトライナーだ。
新発想としての構造的ページ区切り
Fargoは、アウトライン構造の中にアウトライナーならではの「ページ区切り」を設ける方法を見出したことで、ドキュメントの集合としてのアウトラインという考え方を実現している。あるヘッドラインにtype属性が設定されていれば、それはドキュメントのタイトルとみなされる。下位ヘッドラインはドキュメントの内容になる。この方法で、FargoはまるでFinderのように振る舞うのだが、ひとつだけ重要な違いがある。それは、ドキュメントの内容を編集するために独立したウィンドウを開く必要がないということだ。ただ(アウトラインを)展開して、編集すればいい。そして、あるドキュメントの内容を他のドキュメントに移動するには、フォルダの中のファイルを他のフォルダに移動するのと全く同じ、ドラッグ操作だ。
type属性は、アウトラインをレンダリングするときに重要な役割を果たす。例えばアウトラインを使ってEvernoteのノートブックを編集したり、WordPressのブログを編集するときだ。
それ以外の場面では、type属性付きヘッドラインも、通常のアウトライナーのノードと全く同じように振る舞う。ただ、そのコンテンツをアウトライナー以外の環境で表示するときに、それらはドキュメント——たとえばEvernoteのノートやブログポスト——として表示されるのだ。
例
例として、今作業しているアウトラインのスクリーンショットをあげよう。
アウトラインの構造が見られるように、短めのブログポストをひとつ展開した状態にしてある。
小さな三角系のアイコンの代わりに書類アイコンのついたヘッドラインが、type属性が設定されたヘッドラインだ。これがドキュメントだ。
私のブログ全体が、Dropboxに保存された単独のOPMLファイルになっている。
私たちのCMSであるTrexは、ここに示した決まりごとを理解し、ウェブサイトを適切にレンダリングする。サイトのRSSフィードも同じ仕組みを利用している。
ここで紹介した発想は、アウトライナーにとってのブレークスルーになると私は考えている。二年前にOPML Editorの機能としてはじめて公開され、今ではFargoとTrexにフルに実装されている、World Outlineの基礎となったものだ。互いの結びつきは緩いものなので、OPMLを吐き出せるアウトライナーなら全て、Trexで処理できる形でコンテンツを出力することができる。逆にFargoは同じ仕組みで動作するどんなCMS、あるいはその他の処理プログラムにも接続することができる。
私たちは、他にもいくつかの開発者たちと、このコンセプトを利用するソフトについて取り組んでいる。今月末のEvernoteカンファレンスまでには、何らかのデモをお見せしたいと思っている(と祈っている)。
OPMLを見れば全てがわかる
あなたが開発者で、自分の目で見てみたいと思ったら、ここにこのサイトのOPMLファイルがあるので、どのように動くか自分自身で確かめてみてほしい。実際のウェブサイトを動作させるための様々なスクリプトやテンプレートが含まれてるので、そのつもりで!
待ってました!
Fargo活動 (?) がどう展開していくのか、わくわくしながら解説やブログ読んだり、実際に使ったりしています。ブログのコメントのやりとりも、率直かつ具体的な情報がたくさんあって、気に入ってます。
英語は嫌いな方ではないのですが、デイブさんの熟れた表現がちょっと難しいときもあって、Tak. さんの訳が勉強になります。ページ区切りの機能も、彼のスクリーンショットだけだと良くわからなかったのですが、Tak.さんの例で理解が進みました。
CEOなどへのオファーを断りながら、現役でプログラミングを続けることにこだわる彼の作品の成長を、Tak.さんの解説付きで追えるのは、とてもとても幸運だと思っています。
by gofujita (2013-09-17 18:24)
gofujitaさん
お久しぶりです!
ワイナ―さんの英語、難しいですよね。ページ区切りからのくだりは、部分的にかなり超訳しちゃってます・・・
ワイナ―さん関連についてはいろいろやりたいこともあるんですが、どんどん変わってくのでまったく追いつけてません。
by Tak. (2013-09-18 18:27)