ラベル MoE の投稿を表示しています。 すべての投稿を表示
ラベル MoE の投稿を表示しています。 すべての投稿を表示

2022年11月27日日曜日

moeをgithub pagesに移転しました

moeをgithub pagesに移行しました。


それにあわせて色々と内容を見直してます。以前よりも導入が容易になっているので、メモの方法論に興味がある方はどうぞ!なにかあれば、ここのコメント欄に書くか、twitter、Mail等で連絡して下さい。

私が運営している他のgithub pagesについてもよろしく! 

2022年11月18日金曜日

howmのタイトル表示方法変更

最近、moeのHPをgoogleSiteからGitHub Pagesに移行しようと画策しており、その過程でスクリプトを見直している。 今までは、howmファイルのファイル名と一行目を対応させたコメントファイルを作成していたが、これを各エントリのコメントを変更するだけにする。コメントファイルは、XC_cwrtで自動作成すればいい。これなら、スクリプトをLOADEVENTに登録しても、以前のように無限ループに陥る心配をする必要がなくなるわけだ(多分)。

やり方

以下を編集して取込み。

XC_cwrt    = 2    ; コメントファイル作成は    0:手動 1:確認有 2:自動

以下をScriptフォルダに保存。

title2comment.js

//!*script

// コメントのないhowmファイルの一行目をコメントに

for (var a = PPx.Entry.AllEntry; !a.atEnd(); a.moveNext() ){
  // フォルダを除外
  if (a.Attributes & 16){
    continue;
  // .howmかつコメントがないファイルへの処理
  } else if (a.Name.match(/.howm$/i) && a.Comment.match(/^$/i)){
    var dir = PPx.Extract('%1');
    var entryName = a.Name;
    var f = dir + "\\" + entryName;
    // 一行目を読み込む。文字化けする場合は"sjis"を"utf-8"に
    var s = readFile(f, "sjis");
    // 2~40字を切り取ったものをコメントに
    a.Comment = s.slice( 2,40 );
  }
}

// ファイルの一行目を読み込む関数
function readFile(fname, charset) {
  if (charset == undefined) {
    charset = "_autodetect_all";
  }
  var adTypeBinary = 1, adTypeText = 2;
  var adReadAll = -1,   adReadLine = -2;
  var s = new ActiveXObject("ADODB.Stream");
  s.Type = adTypeText;
  s.charset = charset;
  s.Open();
  s.LoadFromFile(fname);
  var text = s.ReadText(adReadLine);
  s.Close();
  return text;
}

howmファイルを入れているフォルダで以下を実行。

*diroption -thisbranch cmd:"*script %0\Script\title2comment.js"

2021年12月14日火曜日

PPeでhowmファイルを作成

僕はhowmファイルとPPxでメモ環境を構築している(参照:MoE)。

今まではhowmファイルの作成、編集にはxyzzyを用いていたが、これをPPeでできるようにする。これでPPx単体でMoEをできるようになり、導入のハードルが下がるかも?

*edit %*nowdatetime(Y-N-D-HMS).howm -new -k *editmode -modify:silent %%: *insert "= %%bn%%bn[%*nowdatetime(Y-N-D-HMS)]" %%: *cursor -3,3,0

以下をPPxフォルダに保存。

template.howm

=  


=の後ろに空白があり、それに続けて改行を3つ入れている。*insertでは改行文字の入力ができないので(多分)必要になる。

以下のコマンドで、howmファイルを作成できる。

*edit %*nowdatetime(Y-N-D-HMS).howm -new -k *editmode -modify:silent %%: *insertfile %%0template.howm %%: *insert "[%*nowdatetime(Y-N-D-HMS)]" %%: *cursor -3,3,0

追記2021-12-25

最近の更新で*insertで改行を入れられるようになった!感謝!

2021年3月27日土曜日

ファイルを他のファイルと紐付け

僕はhowm形式でメモを取っている(参考:MOE)。
メモファイルを他のファイルと紐付けしたい時がある。

・関連するメモ
・画像ファイル
・PDFファイル
・etc

アウトラインプロセッサならこういう機能のやつもありそうだが、ファイラだと実装は無理かなとあまり追求してこなかった。
最近、リストファイルを利用すれば可能なことに気づいた。

やり方

Paper Plane xUI Module Junk parts が必要。

KC_main	= {	; PPcメイン窓
\ENTER    ,*ifmatch CX,%n %: *execute ,%'ppcx_cmd' %: *stop
    %K"@\ENTER"
CLOSEEVENT ,*ifmatch CX,%n %: *alias ppcx_cmd = %%K"@\ENTER" %: *stop
^\ENTER	,*ifmatch CX,%n %: *stop
	*ifmatch "o:e,a:d-",%0%Y.txt %: *execute C,*jumppath "%0%Y.txt" %: *stop
	*alias ppcx_cmd = *makelistfile %0%Y.txt -basic -comment -marked %%: %%K"@Q" %: *ppc -r -bootid:x -single %1 -k *linemessage 登録するファイルを選択してください
BS ,*ifmatch 4,%*DirectoryType %: %K"@^LEFT %: *stop
	%K"@BS
}

1.メモファイル上でCtrl+Shift+Enterを押すと、独立窓が開く。紐付けしたいファイルをマークして、Shift+Enter。これでPPxフォルダに、「メモファイルのファイル名.txt」というリストファイルが作成される。
2.次からはCtrl+Shift+Enterでそのリストファイルに潜れる。

解説

・ファイル名が同じリストファイルを作って開いているだけ。howm形式だとかぶることがないので機能する。
・この方法でリストファイルに潜ると、BackSpaceでListFileを保存したフォルダに移動してしまう。なのでPaper Plane xUI Module Junk partsを使い、リストファイルか否かを判別して「履歴を戻る」をしている。
・これだと一つのフォルダ内のファイルしか登録できない。あとで追加したい場合は*ppcfileを使うといい。

2020年12月28日月曜日

PPx+howmでtodo管理

僕はPPx+howmでメモ環境を構築している(参考:MoE)。これに

  • 一行編集からタイトルを指定してhowmファイルを作成
  • 一行編集からhowmファイルのタイトルを変更

を追加して、todo管理もできるようにする。




 準備


以下をScriptフォルダに保存。それぞれ「タイトルを指定してhowmファイルを作成」「タイトルを変更」「タイトルを取得」するスクリプト。

settitle.js
//!*script

// howmファイルを作成する
// 第一引数:作成するフォルダ
// 第二引数:タイトル
// *script %0Script\makehowm.js,%1,homuhomu
// editor %*script(%0Script\makehowm.js,%1,%*now(date))

var fso = PPx.CreateObject("Scripting.FileSystemObject");
var dirname = PPx.Arguments.Item(0);
var filename = PPx.Extract("%*nowdatetime(Y-N-D-HMS)")+".howm";
var filepath = fso.BuildPath(dirname,filename);
var str="= ";

// 引数が複数あればそれをつなげる
for (var i = 1; i < PPx.Arguments.length; i++) {
  if (i==1){
    str += PPx.Arguments.Item(i);
  } else {
    str += ","+PPx.Arguments.Item(i);
  }
}

str += "\r\n\r\n\r\n["+PPx.Extract('%*now')+"]";

var file = fso.OpenTextFile(filepath, 2, true);
file.Write(str);
file.Close();
PPx.result = filename;

changetitle.js

//!*script
// 与えられたhowmファイルのタイトルを変更するスクリプト
// 第一引数:howmファイルパス
// 第二引数:変更するタイトル
// *script %0Script\changetitle.js,%R,homuhomu

var s="";
var str = "";
var filepath = PPx.Arguments.Item(0);
var fso = PPx.CreateObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(filepath, 1);

// 引数が複数あればそれをつなげる
for (var i = 1; i < PPx.Arguments.length; i++) {
  if (i==1){
    str=str + PPx.Arguments.Item(i);
  } else {
    str=str + ","+PPx.Arguments.Item(i);
  }
}

s = "= "+str+"\r\n";

f.ReadLine(); //空読みで一行目を飛ばす

while (!f.AtEndOfStream) {
s += f.ReadLine()+"\r\n"; //sに一行づつ読み込み
}
f.Close();

//PPx.Echo(s);

// 書き込み
var f2 = fso.OpenTextFile(filepath, 2);
f2.Write(s);
f2.Close();


gettitle.js

//!*script
// 与えられたhowmファイルの一行目の2文字~30字を切り取ったものを返すスクリプト
// 第一引数:howmファイルのパス
// %*script(%0Script\gettitle.js,%R)

var filepath = PPx.Arguments.Item(0);
var objFileSys = PPx.CreateObject("Scripting.FileSystemObject");
var objInFile = objFileSys.OpenTextFile(filepath, 1);
var str = objInFile.ReadLine().slice( 2,30 );
objInFile.Close();

PPx.result = str;


以下を編集して取り込み。パスは各自で読み替えてください。
KC_main	= {	; PPcメイン窓
\K	,*ifmatch "/D:\\Temp\\todo/",%1 %: *script %0Script\settitle.js,D:\\Temp\\todo,%"todo"%E %: *stop
	%K"@\K"
\E	,*ifmatch "/D:\\Temp\\todo/",%1 %: *script %0Script\changetitle.js,%R,%"todoの変更"%{%*script(%0Script\gettitle.js,%R)%}%: *stop
	%K"@\E"
}

_Command	= {	; ユーザコマンド・関数
todo	= *script %0Script\settitle.js,D:\Temp\todo,%*arg(1)
}


やり方


*todo メモの内容

でメモを作成。todoフォルダでShift+Kを押すと表示される一行編集に入力してもいい。


todoフォルダでhowmファイルにカーソルをあわせ、Shift+Eを押すとタイトルを変更できる。


追記 2021-01-28

*todo の引数がなければtodoフォルダを開く設定は以下のようになる。

_Command	= {	; ユーザコマンド・関数
todo	= *ifmatch !0,0%*arg(1) %: *script %0Script\settitle.js,C:\Users\tukasa\Dropbox\todo,%*arg(1) %: *stop
	*execute C,*jumppath "C:\Users\tukasa\Dropbox\todo" %: *focus C
}

2020年2月10日月曜日

PPxをアウトラインプロセッサに

僕は今まで、PPxとhowmを組み合わせてメモ環境を作っていた(参考:MoE)。
ここにさらに

1.エントリ順序の任意設定
2.レベルの実装

を追加して、PPxをアウトラインプロセッサとして使えるようにする。



実装は以下のようになる。

1.エントリ上で特定のキーを押すことで、エントリ位置の入れ替えやレベルの変更を可能に
2.コメントファイル作成時、エントリ順で記載する。行頭の空白も保存
3.コメントファイルの記載順序で拡張コメントソート

準備


以下の2つのファイルをScriptフォルダに保存。

MakeOutlineComment.js

//!*script
// カレントディレクトリに一行目とファイルパスを対応させたコメントファイル(00_INDEX.txt)を作成
// アウトラインプロセッサ用。行頭の空白を維持し、エントリの順番通りに書き出す

var strLine = "\r\n";
var fs = PPx.CreateObject("Scripting.FileSystemObject");

for (var i = 0; i < PPx.EntryAllCount; i++) {
  // エントリがディレクトリの時の処理
  if (PPx.Entry(i).Attributes & 16) {
    if (PPx.Entry(i).Name == "."){
      strLine += PPx.Entry(i).Name + "\t*\r\n";
    } else if (PPx.Entry(i).Name == "..") {
      strLine += PPx.Entry(i).Name + "\t**\r\n";
    } else if (PPx.Entry(i).Comment=="") {
      strLine += PPx.Entry(i).Name + "\t" + PPx.Entry(i).Name + "\r\n";
    } else {
      strLine += PPx.Entry(i).Name + "\t" + PPx.Entry(i).Comment + "\r\n";
    }
  // エントリがhowmのときの処理
  } else if (PPx.Entry(i).Name.match(/.howm$/i)) {
    // ファイルの一行目を取得
    var f = fs.OpenTextFile(PPx.Entry(i).Name, 1);
    var title = f.ReadLine().slice( 2 );
    // コメントの最初に空白があればそれを反映
    if (PPx.Entry(i).Comment.match(/^ +/)) {
      var heading = PPx.Entry(i).Comment.match(/^ +/);
      strLine += PPx.Entry(i).Name + "\t" + heading + title + "\r\n";
    } else {
      strLine += PPx.Entry(i).Name + "\t" + title + "\r\n";
    }
    f.Close();
  }
}
if (strLine == "\r\n"){
  PPx.Quit();
} else {
  strLine += '00_INDEX.txt\t *** COMMENT FILE ***';
}

// 00_INDEX.txtに書き込み
var f2 = fs.OpenTextFile("00_INDEX.txt", 2, true, -1); // unicodeで書き込み
f2.Write(strLine);
f2.Close();

OutlineSort.js

//!*script
// 拡張コメントソート用。拡張コメント1を利用。
// 00_INDEX.txtの記載順に連番を付ける。

var fs = PPx.CreateObject("Scripting.FileSystemObject");
if (!fs.FileExists("00_INDEX.txt")) {
  PPx.Quit();
}

// ゼロ埋め
function zeroPadding(num,length){
    return ('0000000000' + num).slice(-length);
}

var array = {};

var stream         = new ActiveXObject("ADODB.Stream");
    stream.type    = 2;
stream.charset = "Unicode";
stream.open();
stream.loadFromFile("00_INDEX.txt");

var i = 1;
var firstLine = '';
while(!stream.EOS){
  firstLine = stream.readText('-2').split("\t")[0];
  array[firstLine]=i;
  i +=1;
}
stream.close();

for (var i = 0; i < PPx.EntryAllCount; i++) {
  if (PPx.Entry(i).Name.match(/.howm$/i)) {
    var num = zeroPadding(parseInt(array[PPx.Entry(i).Name]),4);
    PPx.Entry(i).SetComment(1,num);
  }
}


以下を編集して取込。

KC_main = { ; PPcメイン窓
^\LEFT ,*comment "%*regexp("%*comment","s/^\s?(.*)/$1/")"
^\RIGHT ,*comment " %*comment"
^\DOWN = @DEL @INS @DOWN
^\UP = @UP @DEL @INS
F7 ,*script %0Script\MakeOutlineComment.js
COMMENTEVENT1 ,*script %0Script\OutlineSort.js
}
MC_sort = {
拡張ソート&1 = 24,-1,-1,B11111,1
}
XC_cwrt = 0


対象フォルダでSを押してソートメニューを出し、拡張ソート1を選択する。


やりかた


1.エントリ位置やレベル調整をカーソルキーで行う:

Ctrl+Shift+カーソル上下:エントリ位置変更
Ctrl+Shift+カーソル左右:エントリレベル変更



2.F7を押して現在のエントリ状態を保存する:

COMMENTIVENT1に設定しているMakeOutlineComment.jsが実行され、現在のエントリ状態をコメントファイルに保存する。
それ以降は、フォルダを再読み込み時にOutlineSort.jsが実行され、保存時と同じ並びでソートされる。

2014年8月28日木曜日

PPvからメモを取る


あいさつ


自分の書いたメモなり他の文書なりをPPvで閲覧している時、何かを思いついてメモを取りたい時がある。

その時、これまでは一々howmフォルダまで戻ってから、ファイル作成メニューを出してメモを作成。そしてまたさっきまで作業をしていたフォルダを戻る、ということをしていた。

面倒だし、億劫になってメモを取る枷になるのでこれを克服する。例によって2ストロークキーを利用。

やり方


予め、Paper Plane xUI  Key Moduleをダウンロードして、その中にあるPPXKEY.DLL(64bitならPPXKEY64.DLL)をPPxフォルダに入れておきましょう。

以下を編集して取込

-|K_ppv =

KV_main = { ; PPcメイン窓
^X ,*setnextkey K_ppv
}

K_ppv = { ** comment **
H ,%Ob D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) G:\howm
^Z ,%KC"@BS @N"
^X ,*script %0\Script\PPvChangeDir.js
}


K_ppv(2ストローク目)の下2つはPPv上で階層移動でやったコマンドです。一番上が今回追加したコマンド。G:\howmにhowm形式でファイルを作成する(参考:Memo on the Electron - MoE用設定)。パスのところは適当に読み替えてください。

これで、PPv上でCtrl+Xを押してからCtrl+Hを押すことで、howmフォルダにhowmファイルを作成することができる。 いつでもどこでも思いついたことをメモにできて、かつ、それまでしていた作業を中断することもない。



以前は2ストロークキーを使わずにやってたけど(参考:PPvからエディタを開く)、結局はコマンドを忘れて使わなくなった。
「何かやりたいことがあればとりあえずCtrl+Xを押してみて、次に何するか考える」というのがいいのかもしれない。「何かしたいことがあればとりあえずランチャを起動してみて、それから考える」というのに近いでしょうか?僕は、「なんかしよう」という漠然とした意識状態で反射的にCtrl+Spaceを押し、fenrirを起動。表示されるコンマ数秒で少しだけ意識が明瞭になり、あーこんな感じだよねと1~2文字入力。表示されるリストを見てさらに少し意識がまとまり、何かのソフトを起動する、ということをしている。

次にしたいこととか


  • C_x C_x 階層移動(上か下)
  • C_x C_z 階層移動(上へ)
  • C_x C_h メモを取る

の3つが、今のところPPvでやっていること。やり始めて数日だが、作業の効率は格段に上がったように思う。
今まではなんだかんだで、PPvを中心にするということはできてなかった。次回あたりは、さらにPPvからできる操作を増やしてみようと思う。

2014年7月4日金曜日

PC上でプリントへの書き込みでやってたことをする

あいさつ


僕は、howmで作ったデータをプリントアウトして、その余白に色々と書き込み、後でそれを元データに反映させる、という仕方で、文章の推敲をしている。





このプリントを、ボールペンを片手に読み、気になったところ、思い付いたことがあれば、それを余白に書き込む。それを数度繰り返し、その書き込みを元のデータに反映。書き込みをしたプリントは捨てる、ということをしている。


プリンタが壊れたことを機に、これをPC上だけで再現できないか、と考えた。


やってることの分析


ここでやっていることを分析すると、


  1. 文章を読むことによって、脆弱な箇所を見つけてチェック
  2. その箇所に関して思い付いたことをメモる
  3. それを元にして文章を作成する


の三段階。

まず、1~2回目は、脆弱な箇所をチェックしながら読む。このあたりがわかりにくいな、文章になってないな、というように。

こんなふうに、「書き直し」と書き込んだり


 「悪文」と書き込んだりして、脆弱だと判断した箇所がわかるようにしている。



これによって、どの箇所を直せばいいのかが明確になれば、次はその箇所について、思い付いたことを書く。そうして、後でその箇所を修正する文章を書くときの参考になるようにする。その脆弱な箇所に差し替える文章をすぐに作れそうだ、と判断したら、試しにそれを書いたりもしているようだ。

このときは適当に余白を利用。どの箇所についての書き込みかわかるように、線を伸ばして指示をしている。



文章化までのプロセス


なぜこの過程が必要かというと、

いきなり文章を訂正するのは難しい

からだ。そこで、文章を書くまでに、通常は頭の中で行っている作業を

  • 読んでいてわからない箇所へチェック
  • その箇所について思い付いたことを箇条書きに
  • その箇条書きを元にして文章を考える

みたいに、簡単な段階的作業に分割してしまう。この過程を、時間をおいて少しずつ行うことで、いつもは頭の中で一気にやるために大変な、「文章全体から脆弱な箇所を見つけ出し、新しい文章を作って差し替える」という複雑な作業の負担を軽減しているのではないか、と思うのだ。

PCでやるには


この分析があってるとしたら、普通にPCでも実行できそうですね。要は、脆弱な箇所をチェックし、アイデアを書き込む仕組みがあればいい。というわけでやってみる。PPxとCatMemoNoteを使います。

  • PPv→プリント
  • CatMemoNote→プリントの余白

という対応関係です。



CatMemoNoteへの書き込み過程


PPvで修正したい文章を表示。同時に、CatMemoNoteも起動させておく。そして、文章を読みながら、気になった箇所の見出しをCatMemoNoteに書き込んでいく。また、どう気になったか、気づいたことがあればそれを書き込んでもいい。

その箇所について、こういうことを書けばいいのかな、と思い付いたアイデアがあれば、それを箇条書きにする。また、この差し替えるための文章を思いつけばそれを書き込んでもいい。これを何度か繰り返し、一段落すれば、次はCatMemoNoteの書き込みを元に、元データに反映させる。

元データへの反映過程


CatMemoNoteを横に見ながら、不十分だとチェックされた箇所を、書き込まれたアイデアを元に修正していく。そこに書き込まれた文章で使えそうな文章があれば、それを挿入してもいい。

これを、 すべての書き込みに対して行う。もちろん、書いている途中で「これは別に反映させなくてもいいな」と判断した箇所は、反映させなくていい。


CatMemoNoteの記述方法


個々のメモは、切り取り線で区切る。また、その日初めてこの作業を行うときは、ショートカットキーで日付を入力する。



ちょっと前にした書き込みと、内容がかぶっていないかは気にしないでいい。かぶろうがかぶるまいが、思い付いたことがあればそのたびに、切り取り線で区切って書き込んでいく。



プリントの場合は、以前の書き込みが自然に参照できるので、ダブることが無い。この点はPC上でやる方法のデメリットなのかもしれない。

MoEのフォルダを流動的にする

メモの2区分


メモには

  • 短期的なもの
  • 長期的なもの

の2つがある。

短期的なものというのは、例えば何かに載せるために書いている文章や、今取り組んでいる課題をどう解決するかなどの、集中的に取り組んでいて、数日、数週間単位で何か成果を出したいもの。何かすぐに解決したい課題があれば、それについて思いつくことをとりあえず片っ端からメモに書き出す。何かを読んでそこでわかったことを書き出す。そしてそれらをまとめ、また何か課題が見つかればそれに関してメモを作って…という感じだ。

長期的なものというのは、例えばソフトウェアカスタマイズのように、特に急いで取り組む必要が無い、数ヶ月単位でメモを集め、活用するような性質をもったもの。例えば僕の場合は、何かの時に思い付いたらそのたびにメモに書き留めて、ある程度たまったらそれを参照して形にする、ということをしている。


短期的なメモの課題


この2つの種類のメモのうち、普段目にし、扱う機会が多いのは圧倒的に前者。だがこのとき、カテゴリーフォルダ(howm2)は不適当に働く。

ちなみに、カテゴリーフォルダはこのように、 フォルダ名=その中にあるファイルのカテゴリーになっていて、そのなかにメモを階層構造を作らずに保存している。






その1 ― いま取り組んでいる課題がわかりにくい



一つが、重要度での区別をつけられないということ。それゆえ、後で課題を再開するのに余計な手間がかかる。

このカテゴリーフォルダには、すべてのメモが時系列順に並んでいる。その中には、まとまった文章、頭を整理するために書きだしたメモ群、といったように、同じカテゴリーでも異なった種類のメモが雑多に混じっている。それゆえ、パッと見て、前回はどこまで考察を進めたのかだとか、次は何に取り組めばいいのかということが、判然としない場合が多い。

そこで、ビューアとタイトル表示とを利用、最近作ったメモから内容を順番に見ていくことによって、前回まで考察していたことを頭に呼び起こす作業をしている。できればこれを省略したい。


その2 ― 複数のテーマが混じっていて利用しにくい



あるテーマについて考えているとき、同じテーマについて過去に書いていたことを参照したい場合がある。しかし、このときカテゴリーフォルダという区分しか用意されていないので、すぐに必要なメモだけを抜き出す、ということができない。カテゴリーフォルダという区分は大雑把過ぎて利用できないのだ。

これまで、これを克服しようとして、カテゴリーフォルダ内にサブフォルダを作るだとか、あるいは関係するファイルのみをマスクするなどを試したが、うまく機能するところまではいかなかった。


カテゴリーフォルダという枠組みが悪いのではないか


これをどう見るかだが、扱っている対象が、短期的にしか価値を持たない情報であるのに、カテゴリーフォルダという、固定した枠組み内で処理しようとしたのが間違いだったのではないのか。このように総括する。

これを克服するには、カテゴリーフォルダという区分を廃し、「とりあえずフォルダを作る」 ということをして、そのフォルダを中心にメモを活用する仕組みを考えなければならない。


日時から自動でフォルダ名を決める


というわけで、現在時刻から自動で名付けたフォルダを基点にすることにする(仮のディレクトリ名を日時から自動で決める)。フォルダ作成時には、現在時刻から自動でつけたhowm形式のフォルダ名がデフォルトで入力されるようにする。これなら一々名前を考える必要もないし、名前が同フォルダの他のフォルダとかぶらないかを気にする必要もない。「とりあえずフォルダを作る」ということが可能になるのだ。

howmフォルダに、その時々でフォルダを作成。何か思いついたことがあれば、それをまとめてそのフォルダに内部に作成する。あるいはhowmフォルダにメモを作った後、このフォルダを作成してそこに移動する。



判別の必要があるときには、フォルダにコメントを付ければいい(参考:フォルダにコメントを付ける)。


こうすることで、その時々の必要に応じた細かな区分でメモをまとめることができる。「その2 ― 複数のテーマが混じっていて利用しにくい」という問題が解決するわけだ。

このまとまりは当然、時間が経てば理解不能になる期限付きのものではあるが、この用途であれば特に問題はない。



長期フォルダとの分離


短期的なメモについては、このようなしかたでhowmフォルダに保存。長期的なメモについては、今まで通りカテゴリーフォルダに保存するようにする。必要になれば、howmからhowm2へ該当するメモを移動する、というのは以前のとおり。

こうすることで、howmフォルダに行けば、今取り組んでいる短期的な課題がすぐにわかるわけだ。



メモを元にメモを作成したとき



それまでに書いたメモを元にしてメモを書くときには、新しい時系列フォルダを作成してそこに保存するようにする。


例えば「PC上で推敲」とコメントで名付けたフォルダがあり、そこにあるメモを一つのメモにまとめたいとする。その時は、新しくフォルダを作成し、その中にメモを新たに作成する。



②が古いフォルダ。①が新しいフォルダですね。両方共、同じコメントをつけるとわかりやすいかもしれない。

また、古いフォルダで反映されなかったメモも、新しいフォルダに移動する。そして今後、思い付いたことがあったとすれば、すべて新しく作ったフォルダに保存する。

これで、「その1 ― いま取り組んでいる課題がわかりにくい」という問題は解決するわけだ。一旦中断したあと、「PC上で推敲」の考察を再開したいときは、時系列逆順で上の方にある「PC上で推敲」フォルダを見ればいい。もし、その上で、それに関してそれ以前に書いていたメモを見返したいのであれば、一つ古いフォルダを参照すればいい。

また、このようにすることで、自動的に重要なファイル、今の自分の課題に関係したファイルのみを選別することができる。今までは一々、不要になったファイルをマークし、ゴミ箱フォルダに移動することで、フォルダの状態を保つ必要があった。これならその過程も省ける。上の方にあるフォルダが、自分の課題に関係したものである可能性が高いわけですね。howmフォルダにフォルダがたまってきたなら、そのときは古いフォルダを閲覧し、要不要を判断してからフォルダごとゴミ箱フォルダへ移動すればいい。

2014年6月19日木曜日

フォルダにコメントを付ける


挨拶


MoEで新しくフォルダを作る際、考えるのが面倒なので、最近はフォルダ名を日時から自動でつけている(参考:仮のディレクトリ名を日時から自動で決める)。

だが、識別のために、後々フォルダ名を付け直したくなる場合がある。普通にリネームしてももちろんいいのだが、他のフォルダと名前がかぶったりというのを一々気にしたくないので、コメントで処理できるようにする。

やり方


以下を編集して取込

KC_main = { ; PPcメイン窓
^R ,*comment "%ee%"コメントの編集"%{%*comment%|%}"
}

XC_cwrt = 2 ; コメントファイル作成は 0:手動 1:確認有 2:自動

これで、Ctrl+Rでコメントを付けることができる。もちろんフォルダ以外でも可能。
また、コメントを自動保存するように設定している。


MakeComment.jsの修正



今までのMakeComment.jsだと、フォルダにつけたコメントが消えてしまうので、そこだけ対処しておく。


MakeComment.js

//!*script
//カレントディレクトリに一行目とファイルパスを対応させたコメントファイル(00_INDEX.txt)を作成

var strLine = "\n";
var currentDir = PPx.Extract('%1');
var objFileSys = PPx.CreateObject("Scripting.FileSystemObject");

for (var i = 0; i < PPx.EntryAllCount; i++) {
  // サイズが0のファイルとディレクトリは読み込まない
  if (PPx.Entry(i).Size == 0) {
    if (PPx.Entry(i).Comment != ""){
      str = PPx.Entry(i).Name + "\t" + PPx.Entry(i).Comment + "\n";
      strLine =  strLine + str;
    }
  }
  // 拡張子がtxtとhowmのファイルを読み込む
  else if (PPx.Entry(i).Name.match(/.howm$/i)) {
    var entryName = PPx.Entry(i).Name;
    var objItem = currentDir + "\\" + entryName;
    // ファイルの内容を取得
    objInFile = objFileSys.OpenTextFile(objItem, 1);
    // ファイル名+Tab+一行目の最初二文字~100字を切り取ったもの+改行をstrに代入
    str = entryName + "\t" + objInFile.ReadLine().slice( 2,100 ) + "\n";
    strLine =  strLine + str;
    objInFile.Close();
  }
}

// カレントディレクトリに00_INDEX.txtを作成
strCreateFile = objFileSys.BuildPath(currentDir,"00_INDEX.txt");
objFileSys.CreateTextFile(strCreateFile);

// 00_INDEX.txtに書き込み
objOutFile = objFileSys.OpenTextFile(strCreateFile, 2);
objOutFile.Write(strLine);
objOutFile.Close();
// F5で更新
PPx.Execute("%K\"@[F5]\"")

2014年4月23日水曜日

MakeComment.jsの自動実行?


挨拶


つかさです。

MakeComment.jsという、僕が以前作ったスクリプトがある。これは、テキストファイルの一行目とファイル名とを対応させるコメントファイルを作るもの。テキストファイルでためたメモのタイトルを一覧表示させるために使う。



以前から、このスクリプトを自動実行できればいいなと考えていた。今までは、
KC_main = { ; PPcメイン窓
F6 ,*script %0\Script\MakeComment.js
}

のようにF6に登録し、気になった時にこのキーを押していたのだが、この動作を省略したかったのだ。

ファイル作成時に実行


最初は、メモファイルをためているhowm2以下のフォルダに行けば、MakeComment.jsを実行する仕組みを考えてた。LOADEVENTらへんを使えばできるんじゃないかな、と。だが、あまりしっくりこないのでずっと棚上げにしていた。メモの閲覧のために、メモフォルダ付近を行ったり来たりというのは頻繁にあるし、そのたびにスクリプト実行されてもなぁ、と。

が、最近、メモファイルを作成するときに、同時にこのコマンドを実行すればいいだけでないかと気づく。
%Ob D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) %1 %: *script %0\Script\MakeComment.js

これなら、割と無駄もなくいいんじゃないかな、と。ただ、これだとこの時に作成したhowmファイルだけはファイル名表示になって、そこだけは少し不完全。

ファイル作成後に実行


フォルダ内にあるファイルは常にタイトル表示をしていてほしい。コメントファイルが作成されていないファイルはひとつも見たくない、という場合は、ファイル作成後にスクリプトを実行するようにする。
%Obsq D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) %1 %: *script %0\Script\MakeComment.js

ただ、これだと、xyzzy起動中はPPcを操作することができなくなるみたいだ。

まとめ


今のところ、ファイル作成時に実行する方法をとっている。僕は、Shift+Kで表示する新規ファイル作成メニューの一つとして、howmファイル作成を登録しているので、次のようになる。
-|M_makefile =

M_makefile = { ** comment **
&howm = %Ob D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) %1 %: *script %0\Script\MakeComment.js
&TXT = *set name=%1\%"テキストファイル"%{%|.txt%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&CFG = *set name=%1\%"CFGFile"%{%|.cfg%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&PlainFile = *set name=%1\%"PlainFile"%E %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&VBS = *set name=%1\%"VBScript"%{%|.vbs%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&JS = *set name=%1\%"JScript"%{%|.js%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
}

KC_main = { ; PPcメイン窓
\K ,%M_makefile,H
}

実用的には特に問題もないし、しばらくはこれでやってみようと思う。


2014年3月31日月曜日

文章の修正過程


修正過程の段階


三つの過程からなる。

  1. プリントアウト
  2. プリントへの書き込み
  3. 元データへの反映

プリントアウト


前回のファイルを開き、プリントアウトする。

  • 読みやすさ
  • ある程度文章が詰まっているほうが紙の無駄にならなくていい

というののバランスを考えて、以下の様な形式にしている。二段組。あとファイル名とか日付とかも入るように。




プリントへの書き込み


これを持ち歩き、喫茶店とか集中できるところに行って修正をする。
文章を読み、何か気になることとか不十分だなと感じる箇所があれば、その点について書き込みをする。

  • 入れ替え
  • 文章の付け加え
  • 文章の削除
  • 読みにくい文章を直す
  • 不要な箇所の削除
  • 必要な箇所の追加
  • 誤字の修正

などなど。
基本的に突き詰めて考えなくても、適当にやればいいのだが、個々の作業過程を意識的に分離すると捗ることもある。「今回はどこを削れるか中心に読んでみよう」みたいに。文章を削る作業と、わかりやすくするために追加する作業とは別なのかな、という印象はある。

基本的には余白に書き込むのだが、長くなりそうで書ききれないという場合は、野帳だとからくがき帳だとかに後でわかるように書き込む。

元データへの反映


次は、この書き込みを元のデータに反映する。
もしも、元のデータも残しておきたいという場合であれば、そのコピーをhowm形式で作る。末尾に連番を降るといいかもしれない。あと、修正箇所が多すぎる場合には、元データの修正ではなく、一から書き直す場合もある。

この過程で、元の文章から削ぎ落とす節があるけれども、またもしかしたらつかうかもしれないという場合は、同じフォルダに新しくそのファイルを作り、そこにコピペして保存する。
このようにして修正を終えたら、またそれをプリントアウト。修正して反映して…というのを繰り返す。

だから、フォルダ内には、連番が振られた各バージョンと、反映されずに残っている個々の箇所のファイルとが存在することになる。




その他


DocとかTeXとか


ある程度の分量になり、見出しに階層構造をつけたくなったり引用をつけたくなったりした場合には、Word形式とかTeX形式に移行する。
先の過程で修正をしたhowmファイルをコピペ。見出しとかについて整える。そうして、次からは、これに対して先にしていた修正を行っていく。やることは同じで、

  1. プリントアウト
  2. 書込み
  3. 元のデータに反映

全体と個別


ある程度まで文章が大きくなると、それを全て読んでから修正、という過程が面倒になる。そのようなときは、作業を分割するのがいい。

まずは、文章全体をプリントアウト。これについては、可読性の確保のため、基本あまり書き込みをしないようにする。これを読み、修正が必要だと思われる箇所をチェック。ページ数だとかをどっかにメモっておく。どこどこは修正が必要だというように。
そして、その修正が必要だと判断したページだけをプリント。次からは、その箇所だけを読んで修正作業をする。書き込みもこれに。全体的な文書は、たまに必要なときに参照する、というように。そうして、その書き込みを元データに反映。これを、最初に気になった箇所を全てに対して行う。
それが終われば、全体的な文章をまたプリントアウト、また同じ過程を繰り返す。

CatMemoNoteの利用


ある程度文章が煮詰まってくると、PCのデータ上だけでも修正できるようになる。
その時にはCatMemoNoteを併用する。

データを修正しながら、思いついたことはここにメモ。全体的な構成に関する思いつきは、とりあえずここに書き込む。このような思いつきは賞味期限が短く、howm形式で保存しても後々ノイズになるからだ。
それ以外の思いつきについても、とりあえずここに書き込んでもいい。その場合は、ある程度時間がたてばそれをhowm形式で個別に保存する。

その他、プリントに書き込まれたものを反映させる過程で使う場合がある。その書き込みを元に一旦ここで文章化。CatMemoNote上で編集をし直し、体裁を整えてから元のデータにコピペで反映、ということをする。

2014年3月29日土曜日

CatMemoNoteを使って文章のたたき台を作る

最初


まずは叩き台を作るための、関係するアイデアが書かれているhowmファイルの準備。
howm2のカテゴリーフォルダに関係するメモがあるはずなので、ふつうはそれを使う。

まとめる


CatMemoNoteを起動。PPvでhowmファイルを閲覧しながら、気になったことをメモをしていく。





すべてのファイルを閲覧し終わったら、このメモを構成しなおす。単純に入れ替えればそれで済むのであればCatMemoNote上で。もう少しややこしそうならば、新たにエディタを開き、CatMemoNoteに書かれたメモを参考にしながら文章を作る。

もちろんhowmファイルを作成してそこに書くのでもいいし、あーでもこれ文章なるのかなーとか不安なのであれば、xyzzyのスクラッチを開いてそこに書き、それで都合が悪くなれば全消しして、というのでもいい。

フォルダ移動


このようにしてできた叩き台の文章を、howm形式で保存する。

そのときには、これまでのアイデアメモがあったのとは別のカテゴリーフォルダをhowm2に新たに作成して、そこに入れる。だから、この時点では、そのフォルダには一つしかファイルが入っていない状態になる。


 とりあえずここまでがひとつの過程。次からは、これを修正する過程に移る。

2014年3月25日火曜日

文章のたたき台を作る過程の変遷


あいさつ


つかさです。
今回は、たまったテキストファイルのメモを元にして、まとまった文章を作る方法論です。具体的にはA4で5枚分以上くらいの分量を想定してます。

二つの段階


その過程だが、二つに分けることが出来ると思う。

  • たたき台を作る
  • それを修正していく

修正段階


後者については今までで方法論はほぼ確立している。基本的には、

  1. 草稿をプリントアウト
  2. そのプリントに書き込みを加えて
  3. 修正元のデータに反映させる

を繰り返すことで行う。


その1 書いた文書をプリントアウトする


モノクロレーザープリンタがあれば便利。無ければコンビニでPDFプリントとかになる。

その2 プリントに書き込みを加えて修正


プリントしたものを読み、修正していく。書き加えとか入れ替えなどなど。
基本的にはプリントにボールペンで修正を書き込んでいく。もし大きく変えたい部分や、新しく思いついたことなどがあれば、どの箇所の修正なのかわかるようにして野帳や計算用紙に書くのでもいい。
この過程は適当にやればいいのだが、個々の過程を意識的に分離して行うと捗る気がする。

その3 元のデータに反映


そうして訂正したプリントを元にして、元のデータを修正する。この時は、元のファイルを直接編集するのでもいいし、元データは残し、そのデータをコピーしたhowmファイルを新しく作ってそれを編集するのでもいい。
また、構成上元のデータから削除したい箇所があるが、あとで使うかもしれないと思うものは、新しくhowmファイルを作ってそこにコピーし、保存する。

まとめ


これを繰り返すことで、徐々に文章を完成に近づけていく。最初のたたき台は適当なものでいい。この過程で、必要だけど考察が済んでいないところだとかが明らかになるはずだから、それについて個別にリストアップし、埋めていく。

ある程度文章が大きくなって、見出しなどでも階層構造を付けたくなったときには、TeXなりWordファイルなりの形式にして同じ過程を繰り返す。

たたき台を作る段階


だが、前者についてはこれまでまとまったものがなかった。一応色々模索はしてたが、あまりこれというものがなかった。

前提


howmフォルダに、いくつかアイデアメモがたまっているというのが前提。そのメモをPC上でまとめる方法を模索する。
PCを使わない方法としては、例えばたまったメモをClipMarkFile.jsでクリップボードにコピー、それを印刷してそれを元にして考察するという方法があり得る。だが、何度かやったけれどもあまりうまくいかなかった。あと、適当にコピペして一つの文章に無理矢理したりもしてたが、原始的すぎてこれもどうかなというのがあった

メモのメモ


これは、メモからメモを作る環境をどうやって整えるかという問題になる。たまったメモを見ながら、思いついたこととか使えそうな部分をメモにとって、それを元にして文章を作るのだ。

メモを閲覧した直後に、そこで頭に残ったことを元にしてまとまった文章を書けるというのであれば一番早いのだが、そもそもメモが構成だったものではない以上無理そうだ。どこかにメモを書出し、それを構成し直すという過程が必要になる。

アナログだったら、何か図を書くとかそれぞれのメモの連関図を作るとか何かいろいろあり得るのかもしれないが、基本的には文字だけで十分じゃないかと僕は思っている。

たたき台を作る過程の変遷


このメモをどうやってとるかだが、

  1. howmファイルにメモ
  2. ChangeLogにメモ
  3. CatMemoNoteにメモ

という変遷をたどった。

その1 howmファイルにメモ


メモを閲覧するフォルダのなかに、メモ用のhowmファイルを作成して、そこにメモをしていく。
他のメモとごっちゃになり、後で続きをやるときに取り出しにくいというデメリットや、途中でメモをまとめる作業を中断してしまった場合、このファイルがノイズになってしまうというデメリットがあった。

その2 ChangeLogにメモ


別に今までと同じようにhowmファイルの形式にする必然性無いよなと気づいて、次に試したのがChangeLog。本来はプログラムの変更履歴を書き留めるテキスト形式だが、メモにも使える。
特定のファイルを開いている時にこれを呼び出すと、呼び出し元のファイル名とか日付とか入力された状態でこのメモが開くという仕組み。これだと他のメモに埋もれる心配も無い。ただ、ひとつのフォルダに一つのメモしか作成できないということと、メモは基本PPvで閲覧するからChangeLogを呼び出すのがやりにくいという理由からやめる。

その3 CatMemoNoteにメモ


考えれば、ここで作るメモはずっと残っている必要もないし、ファイルとしてきちんと残すとか考える必要特に無いよなと気づいて、試したのがCatMemoNote。
これは一時的なメモに特化したソフト。メモの作成も削除も容易だし、ウィンドウの表示非表示もホットキーでできる。というわけで今はこれに落ち着いています。

具体的な使い方


howm2のカテゴリーフォルダをPPvで閲覧する。CatMemoNoteをひらき、気になったことをコピペしたり、思いついたことを書き込んだりする。
メモを閲覧し終えたら、CatMemoNoteに書き込まれたメモを元にして再構成する。順番入れ替えたり文章を付け加えたりなど。あるいは、ここに書き込まれたのを参考にしながら、エディタを開き文章を作ってもいい。

備考


  • 見出しをつけるのは面倒なので、日付の定型文を区切りに入れる
  • 時間が経過した書き込みはhowm形式にして保存、書き込みを消す
  • このメモを元にしてさらにメモを書きたい場合はxyzzyのスクラッチを利用する
  • 途中で思いついたことは、CatMemoNoteの別ウィンドウに書き込んでもいい
  • 何か適当なことを書きたい場合は、まずCatMemoNoteに書いてからhowmにするのでもいい

2014年1月20日月曜日

Emacsでhowmファイルを任意のフォルダに作成(改)-キーバインドと色付け


Emacsでhowmファイルを任意のフォルダに作成を少し変更。
僕は、howmファイルを見やすくするために、見出しと小見出しの二つをつけている。**が見出しで***が小見出し。



  • Ctrl+:を押せば行頭に**を挿入
  • Ctrl+]を押せば行頭に*を挿入

し、また見出し行は色を変えて目立つようにxyzzyではしていた。

これをemacsでも実装してみる。前回のコードに

  • キーバインド
  • 色づけ

を付け足してます。

howm-create2dir.el

;;; howmファイルを作成
(defun make-howm-create2dir-file (&optional howm-dir)
  (interactive)
  (let* ((filename (format-time-string "%Y-%m-%d-%H%M%S.howm"))
  (filepath
   (if howm-dir
       (concat (file-name-as-directory howm-dir) (format-time-string "%Y-%m-%d-%H%M%S.howm"))
     (format-time-string "%Y-%m-%d-%H%M%S.howm"))))
    (find-file filepath)
    (if (eq (point-max) (point-min))
 (progn
   (insert (format-time-string "= \n\n[%Y-%m-%d %H:%M]\n"))
   (goto-char (+ (point-min) 2))))
    ))

;;; 本体
(defun howm-create2dir (arg)
  (if (file-directory-p arg)
      (progn
 (make-howm-create2dir-file arg)
 (howm-create2dir-mode))))

;;; メジャーモード
(define-derived-mode howm-create2dir-mode nil "howm2dir"
       "homu mode"
       (define-key howm-create2dir-mode-map "\C-c,c" 'make-howm-create2dir-file)
       (define-key howm-create2dir-mode-map (kbd "C-:") 'hateda-heading)
       (define-key howm-create2dir-mode-map (kbd "C-]") 'hateda-heading2)
       (font-lock-add-keywords
        nil
        '(("^\\*\\*\\*.*\n" . my-face-b-1)
   ("^\\*\\*.*\n" . my-face-b-2))))

;;; フェイス
(defface my-face-b-1 '((t (:foreground "white" :background "SteelBlue"))) nil)
(defface my-face-b-2 '((t (:foreground "white" :background "blue"))) nil)
(defvar my-face-b-1 'my-face-b-1)
(defvar my-face-b-2 'my-face-b-2)

;;; 行頭に見出しをつける
(defun hateda-heading ()
  (interactive "*")
  (save-excursion
    (beginning-of-line)
    (insert "**")))

(defun hateda-heading2 ()
  (interactive "*")
  (save-excursion
    (beginning-of-line)
    (insert "*")))

(provide 'howm-create2dir)
(provide 'howm-create2dir-mode)

色の付け方は
  • deffaceで色を設定
  • font-lock-add-keywordsで割り当て

という順序らしい。

2014年1月19日日曜日

Emacsでhowmファイルを任意のフォルダに作成

xyzzyで使ってたhowm-create2dir.lをEmacsに移植してみる。



howm-create2dir.は、引数に取ったディレクトリにhowm形式のファイルを作成する拡張Lisp。PPxと組み合わせての使用を想定している。

Emacsの設定


以下をsite-lispフォルダに保存する。

howm-create2dir.el

(defun make-howm-create2dir-file (&optional howm-dir)
  (interactive)
  (let* ((filename (format-time-string "%Y-%m-%d-%H%M%S.howm"))
  (filepath
   (if howm-dir
       (concat (file-name-as-directory howm-dir) (format-time-string "%Y-%m-%d-%H%M%S.howm"))
     (format-time-string "%Y-%m-%d-%H%M%S.howm"))))
    (find-file filepath)
    (if (eq (point-max) (point-min))
 (progn
   (insert (format-time-string "= \n\n[%Y-%m-%d %H:%M]\n"))
   (goto-char (+ (point-min) 2))))
    ))

(defun howm-create2dir (arg)
  (if (file-directory-p arg)
      (progn
 (make-howm-create2dir-file arg)
 (howm-create2dir-mode))))

(define-derived-mode howm-create2dir-mode nil "howm2dir"
       "homu mode"
       (define-key howm-create2dir-mode-map "\C-c,c" 'make-howm-create2dir-file))

(provide 'howm-create2dir)
(provide 'howm-create2dir-mode)

以下を.emacsにコピペ。

;; howm-create2dir読み込み
(require 'howm-create2dir)

;; howmファイルをhowm2dirモードで開く
(setq auto-mode-alist
      (cons (cons "\\.howm$" 'howm-create2dir-mode) auto-mode-alist))

PPxから呼び出す


ここからはPPx側の設定。
%Ob E:\emacs\bin\runemacs.exe -execute ("howm-create2dir \"%*regexp("%1","s/\\/\\\\/g")\"")

みたいなのを適当なキーかメニューに登録して実行すれば、カレントディレクトリにhowmファイルを作成する。
%*regexpの箇所でやってるのは、%1で取得したパスの修正。たとえばD:\howm\hogeならD:\\howm\\hogeとなるようにしている。 僕は、このコマンドをファイル作成メニューの一つとして登録している。

-|M_makefile =

M_makefile = { ** comment **
&howm = %Ob E:\emacs\bin\runemacs.exe -execute ("howm-create2dir \"%*regexp("%1","s/\\/\\\\/g")\"")
&TXT = *set name=%1\%"テキストファイル"%{%|.txt%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&CFG = *set name=%1\%"CFGFile"%{%|.cfg%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&PlainFile = *set name=%1\%"PlainFile"%E %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&VBS = *set name=%1\%"VBScript"%{%|.vbs%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
&JS = *set name=%1\%"JScript"%{%|.js%} %: *makefile "%'name'" %: editor "%'name'" %: *jumppath "%'name'" /entry
}

KC_main = { ; PPcメイン窓
\K ,%M_makefile,H
}

2013年10月24日木曜日

PPvからエディタを開く

カテゴリーフォルダ内にあるメモファイルを、PPvで順番にざっと眺めているとき、エディタを開きたいと思うことがある。大きく分けて、

  • 閲覧しているファイルをエディタで開く
  • 閲覧しているファイルをエディタ開いてPPvを閉じる
  • 閲覧しているファイルと同じフォルダにhowmファイルを作成する
  • howmフォルダにhowmファイルを作成する

の4パターンがある。


閲覧しているファイルをエディタで開くとは、気づいた誤字の訂正や付け加え等のちょっとした修正をしたい場合である。このとき、修正後にはすぐまたメモを順番に閲覧する作業に戻るのだから、PPvは開いたままの状態がいい。

閲覧しているファイルをエディタで開いてPPvを閉じるとは、メモに大きな修正を加えたい場合である。このとき、メモの閲覧作業は一旦中断することになるから、PPvは閉じていたほうがいい。

閲覧しているファイルと同じフォルダにhowmファイルを作成するとは、メモを閲覧している途中でそのカテゴリーに関する何か新しい思いつきをして、それを書き留めたい場合である。

howmフォルダにhowmファイルを作成するとは、メモを閲覧している途中でそのカテゴリーと関係ないことについて思いつき、それを書き留めて一時フォルダに保存したい場合である。

やりかた


以下を取り込む。
KV_main = { ; PPvメイン窓
E ,%"Text edit"%Orib,editor %FDC -g %L
\E ,%K"@Q" %: %"Text edit"%Ob,editor %FDC -g %L
N ,%Ob D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) %1
\N ,%Ob D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) D:\howm
}

Eで閲覧しているファイルをエディタで開く。コマンドラインオプションで行番号を送り、そこにスクロールさせている。これはeditorにxyzzyを設定している時の例なので、違うエディタの場合は -g %L の箇所を変えてください。

Shift+Eで閲覧しているファイルをエディタで開いてPPvを閉じる

Nで閲覧しているファイルと同じフォルダにhowmファイルを作成する

Shift+Nでhowmフォルダにhowmファイルを作成する。D:\howmの箇所は、howmフォルダのパスに読み替えてください。

2013年10月13日日曜日

野帳で素早く考えをまとめたい

素早く考えをまとめたい


僕はもともと、あまり記録とかを残すタイプではなかった。何かを経験したり誰かの行為を見て、それで自分の行為を変えようと思ったら「ああ次からはこれこれの場合にはこれこれをしないようにしよう」と心のなかで何度かつぶやいて、他のことは忘れる、というようにしていた。重要では無いことはすぐに忘れる、そのほうが精神衛生上もいいし、むしろ覚えてたらノイズになってダメだと思っていた。これのおかげてたいていの人との記憶も出来事もほとんど覚えていない。いつだか知らないが、意識的にそのように切り替えたのだと思っている。

だが最近は意図的に思考過程を残している。ほえほえ日記もそうだし他にもつかさ名義やそれ以外で色々と形になるものを残している。自分の考えたことの記録が残っているというのは、それはそれで利点はある。先の仕方だと、なぜそのようにしたのか自体は記憶として残らないのだ。自分の試行錯誤を他のひとと共有するという意味ではこれは意味がある。

だが、この方法のせいで思考や行為の変化のスピードが落ちているように思う。これ自体は創造的な作業ではなく、自分が既に持っているものを、分解し、対象化し、相手に合わせて何度も構築し直すという作業であり、ここ数年で自分の思想自体は発展していない。

というわけで、何かについて一々記録を残すという方針を変えようと思う。考えているのは、手帳の利用。具体的には、野帳を使ったスタイルになるだろうか。今まではデータ化前提だったが少し意義は変わってくる。

MoEについて


僕がずっとやってきたのはMoEだった。これの特徴の第一の点は、カードでこれまでやられてきた考察をPC上で実現することにある。


この仕組は、一つのテーマを練り上げる、というのには都合がいい。具体的には論文だとかである。あとは、ブログのアイデアだとかプログラムに関する思いつきだとかにも有効。

これらのことについては、四六時中考えているわけにはいかない。そこで、思考したことの断片を積み重ねる仕組みが必要になる。人間は、たいてい複数の事案に取り組んでいる。また、何かに集中をして取り組んでいるとしても、それは何かの突発的な事態で遮られる。そのとき、何も準備がなければ、そのままそのときに取り組んでいたことについて忘却し、またそれに取り組むときには一から、前に考えたことをもう一度考えなおすという無駄が必要になるわけだ。だから、断片的にアイデアをためるというのは有効なのである。

MoEの弱点


MoEは万能ではないというのが、これを作った当初から問題意識としてあった。
これは、短期的に、集中的に取り組むような問題には適当ではない。時間がすぎれば無駄になるようなこと、今決めなければならないこと、などにおいては不向きである。

  • まず、メモはどれも並列化することになる。時間的に、最近考えたことのほうが重要ではあってもそれを示せない。
  • また、短期的に考えることについては大げさすぎる。一々考えたことをデータ化して、PC上で操作して、というような手間。過程を幾つかに分割して、それぞれでやるという仕方。ここでの用途としては悠長。データとして残しておいたほうがいいもの、割と長いスパンでやるべきものについてはいいが、ここではその必要はない。一々そのような過程を組み込むことが、ネックになっている。

ここでデータをためたとしても、次に用いることはできない。それはすぐに陳腐化するし、次に用いることができない。つまり、短期的に集中して考察し、答えを出して行為しなければならない課題については、このシステムは大掛かりすぎるのである。

これまでは、とりあえず何か考えるべきことがあったらMoEで処理をしていた。とりあえずデータ化をするということをしていた。だが、それで解決が全くしないということがずっと続いているので、そもそもやり方として間違っているのではないかと気づいた。

課題

 

 これまでにPCで行ってきた技法のような蓄積は持っていない。そこでそれを新たに再構築する必要がある。
この時には、その扱う問題の前提から、MoEでは必須だったが不要になることもあるだろう。また新たに作り直すものもあるだろう。
いくつか思いつくことをあげていく。

  1.連続性


野帳を使う場合。左から右へ書いていくことになる。だから、それまでのメモの全体的な見通しということができない。
必要になる情報は、今まで何に取り組んできて、今は何について考察すればいいか、ということ。
いくらアイデアを書き連ねても、それを次の考察にいかすことができなければ無駄になる。だからこの方法が必要になる。普通にやっていたなら、前に書いたことは忘れ、右に書いてあることをいくらかめくって得られる情報がすべてになる。

2.中断


考察は中断する。疲労、他の事態、考察が行き詰まることによって。それでたいていの場合はそこで立ち止まり、そのまま雲散霧消してしまう。そうすれば、後にそこでの考察がなされないなら、残るのはただのもはや役に立たないアイデアの残骸のみである。

3.他のメモに埋もれる


取り組む問題はたいてい複数。そしてそれは、自分の考えているとおりには生じない。時系列だとランダムに生じる。今考えていたのと全く関係のないことを思いついた時、それは時系列でメモに記すしか無い。アイデアを書き連ねた野帳は、順序としては、そのような複数のものが入り乱れた状態になっているはずである。

解決案


左隅に連番をつける。1st2ndというように。
また、このときタイトル、見出しは不要になるだろう。前提から、何か連続的に考察しているのだから、それについてはずっと知っているはずだろうし、それはひとつだろうから。
また、このようにすれば埋もれることもないだろう。他のメモは、後でデータ化なりをするためのもの。左隅を見て、連番を追っていけばいいだけ。
また、中断についても同様。野帳の新しいページの連番を見て、そこを追えばいいはず。また、野帳をずっと手元に持っていることでも解決するだろう。何について取り組んでいるか忘れるということもなくなるはず。



ここまで書いて


過去に無印のらくがき帳で同じことをやってたのに気づいた。

計算用紙と1st2nd法 - つかさのほえほえ日記

問題意識としては同じものがずっと前からあるんだけど、ずっと達成できておらず忘却等でまだ同じ地平にいるということですね。むむむ

2013年10月10日木曜日

カードでMoEをするとしたら

あいさつ


カードとデータの相違を考える中、カードでMoEを再現しようとしたらどうなるだろうかと考えてみた。案外できなくはなさそうなのでそこで考えたことを書いてみる。

カードボックスの用意


まず、三種のカードボックスを用意する必要がある。

  • 受け入れバッファ用カードボックス
  • カテゴリー分け用カードボックス
  • 廃棄バッファ用カードボックス

そしてこの三つを区別して配置する。




例えば椅子の右側に備え付けるとしたら、その手前に受け入れバッファ用カードボックスを。その向こうにカテゴリー分け用ボックスを、というようになるだろうか。最初の段階ではカテゴリー分けはできてないのだから、その空間だけ用意しておけばいい。そして受け入れバッファーがたまり必要ができれば適宜、カテゴリーボックスを作ってそのなかに追加していく。

廃棄バッファカードボックスは、すぐには目に触れないけれども頑張れば取り出せる位置に配置する。手の届く範囲ならどこでもよさげ。そして、ここにためていっぱいになれば別の場所に箱にでも詰めて保存、ということになるか。

カードボックスとして想定しているのは


こんなの。受け入れバッファはもっとちゃんとした作りでもいいが、カテゴリーBOXの場合は新しいのの設置や廃棄などを頻繁に行わないといけないので、高価なものは不可。


運用


カードを書いたら、とりあえず受け入れバッファに入れていく。
それが一定たまったら、それを眺め、カテゴリーごとに新しくカードボックスを適宜作成。名前がわかるようにして、その中に放り込んでいく。このカテゴリーボックスは、それぞれ独立している必要があるだろう。そこで、気軽にカテゴリーボックスを作れ、廃棄できるように予め大量に用意しておく必要がある。
そして、カテゴリーボックスにたまったカードで操作を行う。この過程で不要になったカードを見つけたら、それは廃棄バッファに移動する。

思ったこととか


場所と費用はかかるができなくはないな。
一覧性とか並べてみるだとかならデータよりもカードのほうがやりやすいからひとによっては悪くないのかもしれない。いやもちろんやったことないし僕がやることも多分無いので保証はできないんだけど

2013年10月9日水曜日

MoEに至るプロセス - PCの利用からバッファ理論へ


PCへ


  • 京大カード→PoIC

というプロセスを経て、やはりカードは無理だと思い、PCに移ることになった。そのときに考えていたのは、「PC特有の機能によって、死蔵という問題も解消されるのではないか」ということである。

例えば何か調べ物をしたい場合、Googleで適当な検索語を入れれば、自分に必要な情報が乗ってそうなリンクがずらっと並び、そこからいくつか開けばたいていの場合解決する。
はてなやwikiを読んでてよくわからない言葉があれば、その語のリンクをたどればその説明を見ることができ、自分にとって不明であることがすぐに明らかになる。
ニコニコ動画で興味のある動画に出会ったら、それにつけられているタグをクリックすれば関連する動画が羅列して表示される。

このように、ネットにおいてはデータが無数にあったとしても、それから自分にとって有用である情報をPC特有の機能でもって取得する方法が存在する。これを応用すれば、カードで試行錯誤していた「情報が増えることによるカオス化」など、容易に解決するのではないか、と思ったのだ。


カードをPCで再現する



カードでやってたことをPCで再現するなら、それはテキストファイルをため、それでできたデータベースに対して何らかの処理をする、ということになる。このときのデータがソフトに依存するようなものであった場合、あとで利用できなくなるおそれがあるからだ。
このテキストファイルに対してPC特有の機能を用いて、カードだと克服できなかった死蔵という問題を解決することになるのだが、それを実現する以前の段階として、カードで実現してたことをPCで再現することが必要になる。*1一見簡単そうなのだが、わりと難しい。

カードの「くる」を再現


カードにおいては、それを「くる」という操作を行っていた。この操作は、カードボックスにたまったカードのタイトルだけを見て関係するものを見つけ出す方法と、カードをめくっていってその本文をざっと見ることで、その内容を把握することで関係するものを見つけ出す方法の二つからなっている。
このことをPCで実現するために必要になるのは

  • タイトル一覧表示
  • 連動ビュー

の二つである。
「カードのタイトルを見る」に対応するのが、タイトル一覧表示である。一つのフォルダにメモファイルが入っているとすれば、そのタイトルが一覧表示される仕組みがあればいい。(デジタル知的生産術の急所-タイトルをどう実装するか
「カードの中身をざっと見る」に対応するのが連動ビューである。Windowsでは、通常ファイルの中身は表示されない。だが、いちいちそれをエディタで開いて、ということをして確認するのでは手間がかかりすぎる。ということで連動ビュー、つまりそのファイルにカーソルをあわせれば中身を表示してくれる機能が必要になる。

これについては、TextTree+ViewLinesだったり、howmだったり、PPx+スクリプトだったり、いくつかの方法がある。
これにより、カードで実現していた「最近のをざっとみて関係するのを抜き出す」は実現できる。次に問題になるのは、「データベース全体から関係するものを抜き出す」である。これの追求で立ち止まる。

PCの機能による関連メモの並列


  • Grepの利用
  • 関係するファイルに共通のタグを入れる
  • メモデータ本体とは別に情報管理

の三つの方法がある。*2

まずGrepだが、この方法で自分が今知りたいテーマについての情報を並列するのは難しい。そもそもテーマに関係する単語というのが存在するのかという問題がまずある。また、たとえあったとしてもそれによってアイデアメモの内から関連するものをすべて拾える保証というのがない。そして、この方法だとどうしても関係するメモ以外がヒットし、ノイズが大きくなる。
これは、Googleで何か調べものをするときの方法論からの類推である。何かを調べようというとき、それに関係していそうな単語で検索する。すると、いくつかのサイトがヒットするので、それをいくつか開きその情報を探すという具合だ。
だが、ここで検索するのはアイデアであり、それがGoogleの場合と大きく異なっている。Googleでヒットするのは情報としては完成したものであり、知りたい情報が載っている可能性もある。しかしアイデアメモというのはそれ以前の段階であり、これをいくつか集めてそれで初めて答えが出る、という性質のものである。だから、Grepによって自分の求める情報が手に入る可能性は低い。
また、アイデア発生装置としても期待できない。これは京大カードがこの用途に使えなかったのと同じ理由による。

次にファイル名をキーにする方法について。この場合、ファイル検索でヒットするように、次のようにタグをつけることになる。

【タグ】ファイル名.txt

重要度をスターなどで表す場合も原理的にはこれと同じであり、例えばファイル名に特別な記号をつけたりする。このようにして共通の語がファイル名に入るようにし、その語でファイル名検索をすれば関連するファイルが一覧表示されることになる。

ファイル名☆☆☆.txt

このときの問題点の一つ目は、持続性を持つタグをつけることができない、ということである。何かを思いついてアイデアメモを書いたとしても、それを思いついた当初はそれがなにについてのアイデアか、というカテゴライズなどできていない場合が大半である。だからどうしても、おおざっぱな区分か、あるいはそのときにたまたま思いついたタグを付けることになる。
おおざっぱなタグというのはおおざっぱゆえに役に立たない。そのときどきの問題関心は移り変わる故に、同じカテゴリーであっても関係のないものが含まれることになるからである。またずっと持続するような区分というのを見いだすのが難しい。タグの数を制限するだとか、タグ一覧を目にとまりやすい場所に貼っておくだとかいろいろしたが、結局は機能しなかった。
そのときに思いついたタグというのは、次にそれに関係するアイデアを思いつきメモにしたとしても、以前のタグを思い出せずやはりそのときたまたま思いついた別のタグを付けてしまう、という理由で役に立たない。
また、タグを付けても重要度での区別をつけることもできないという問題もある。あるメモを編集してその精度をあげても、タグを利用して表示するときには他の雑多な適当なメモと並列して表示され埋もれてしまう。同じタグを持つファイルが増えれば増えるほどこれは顕著になる。結局、カードボックスで有益なカードが他のカードが増えることで死んだのと同じように、同じタグを持つファイルの中で死んでしまうことになる。

「メモデータ本体とは別に情報管理」だが、これは覚えらんない人が紹介していた方法(文具としてのコンピュータを考える(2)-メモ(情報カード) - 覚えらんない人のためのオンラインソフト備忘録)。カード型データベースソフトを使い、一つのデータに対し一つの蔵書カードを作成。検索その他はこの蔵書カードを利用して行う。気になって調べはしたが、適当なカード型データベースソフトを探しても見つからなかったという理由であきらめる。

そして破綻へ


結局、メモをデータベース化してPC特有の機能で操作する、という試みは破綻した。
結果、最近のメモのみを一覧表示と連動ビューで表示し、関係するメモをいくつか見比べて、という操作のみが残ることになった。これは、最近作成した以前のメモというのはあってもなくてもいい、そこにかけた労力が無駄な死蔵したものになることを意味する。カードで行っていたのと同じことが起きたわけだ。そして、最近のデータのみを扱うのであれば、入力の手間その他を考えれば、カードでやってたのと比べどちらが効率がいいかというと微妙な問題である。


野口のバッファー理論


フローを扱う


PCに特有の機能を使っても問題は解決しない。やはり死蔵し、膨大にアイデアメモをためたとしてもそれを有効に使う方法はない。
これを突破するきっかけになったのが、野口のバッファー理論だった。これは、野口悠紀雄『「超」整理法〈3〉』において出てくる概念である。

知的生産活動で扱うデータは、決まりきった仕方では処理できない、という特性を持っている。それは、最初はどのカテゴリーに入るかも不明で、重要度も分からない。同じデータといっても取り扱うべき対象は様々である。そしてそれを扱う方法にも先例もモデルも無い場合が多く、決まりきった仕方で処理するということができない。
このような性質を持つデータに対しては、先例もモデルもある、処理が確立されているような定型的な仕事でとられてきた仕方では処理ができない。今までとは異なる発想に基づく処理システムを用意し、そこで処理すべきである。このような考えをする。
まず、対象がフロー(流れ)であることを明確に意識する必要がある。必要とされるのは、膨大な量のフローを制御するダイナミック(動的)な方法である。一定量のストック(蓄積)を管理するスタティック(静的)な対処法ではない。
これは自明のことである。しかし、従来の収納システムは、「内容がほぼ変わらないストックのための管理」のためのものだ。「大量のものが流入し、ストックの内容が短期間のうちに入れ替わってしまう」という認識は、殆どないのである。(野口悠紀雄『「超」整理法〈3〉』P21)

ではどう処理すべきかというと、「とりあえずおいておく場所(バッファー)」を用意し、そこに分類せずにデータを入れる。ある程度の時間がたてば、そこに放り込まれたデータは自然に醸成して区分とかもわかってくるから、そのときになって初めて処理をすればいい。

マゼラン的な仕事を扱うには、マニュアル遵守的な仕事とは異なる発想にもとづいて、処理システムを構築する必要がある。
とくに重要なのは、「バッファー」(buffer)だ。これは、「緩衝器」、つまり二つのもの、あるいは二つのプロセスの中間にあって、衝撃を受け止めるための装置である。
まず、外から入ってきたものや新しく作ったものを、簡単な手続きによって(できれば、殆ど手間をかけずに)、システムの中に受け入れる必要がある。整然とした収納でなくともよい。しかし、書類が紛失したり迷子になったりすることはないようにする。つまり、「とりあえず受け入れる」のである。これが、「受け入れバッファー」だ。
そして、不要と思われるものを必要なものから区分し、所要の措置や加工などを行い、次の段階に送る。
この際、確立された処理法はないのだから、本当に正しい処理をしたかどうかは分からない。やり直す必要があるかもしれない。そのため、完全でなくともよいから、一応の措置をする。一〇〇%処理を目論んで何もしないのではなく、とにかく一歩進める。「ゼロか完璧か」でなく、八割の処理をするのだ。これは、単なる先送りとは違う。「もっとも重要と思われること」は、行っておくのである。
そして、「多分必要ないだろう」と思われるものを、日常の仕事のジャマにならないようなところに置く。つまり「とりあえず捨てておく」のである。これが、「廃棄バッファー」だ。(野口悠紀雄『「超」整理法〈3〉』p41)

バッファーによる解決


知的生産関係のデータを扱うときに問題になるのは、それが処理しきれなくなるほどたまり、古いデータがノイズとなって全体が機能しなくなることである。そこで、バッファーを作り、時間の経過で勝手に洗練されることを利用して、常に有用な情報が取得できる状態を保つのだ。

  1. 最初は区分せず、とりあえずおく場所を用意してなんでもそこに放り込んでいく
  2. 半自動的にそれが保てるシステムを構築する

この二点を実現すれば、不定型なデータの処理が可能になる。これまで対処できなかったのは、不適当なシステムを使って処理していたからなのである。
従来の整理法では、情報をストックとして扱っている。つまり、将来に向かって価値が減少することを重視していない。したがって、「いかに保存するか」に重点があり、「いかに捨てるか」は、副次的なこととしか考えられていない。
情報が比較的少ない時代には、こうした考えが妥当したかもしれない。しかし、現代のように情報が増えてくると、基本的な考えを転換する必要がある。つまり、情報とは生まれ消えるものであり、一定の寿命を持ったフロー量である、と捉える必要があるのだ。
(野口悠紀雄『「超」整理法』P8)

データベースからバッファーへ


我々が蓄積したアイデアをうまく利用できなかったのは、データベースの規模の問題でも、データベースをうまく運用する方法に通じていないからでもない。そもそもの、データベースを作るという発想から間違っていたのだ。
個々のものの重要性がはじめからわかっており、区別がすでになされているようなものであればデータベースを築くことは有効だろう。そしてそれは、規模を増していけばそれだけ有用なものになるだろう。web上にある情報をGoogleなりwikiなりの機能を追求すれば、データが増大しても破綻しないシステムを構築することは可能だろう。

だが、アイデアのように、日々陳腐化し、重要度の区別などつけようがなく、最初から区分のしようがないデータを大量にためることには意味がないのである。それをもとにしてデータベースを築いたとしても、それは個々バラバラのスピードで陳腐化していく。それはだんだんとカオスで使いものにならないものになり、このこと自体はデータベースから有用なデータを抜き取る機能を追求しても解消されない。それよりは、バッファが半自動的に洗練され、不要なものが削ぎ落とされ、常に自身にとって有益な情報がある状態を保ち続けることが重要なのである。

バッファ理論の特徴


つまり、バッファ理論の特徴は以下の点にある。
  1. アイデアメモをためる先は、データベースではなくバッファである。それは時間の経過とともに陳腐化するから、常に自分にとって有用なものに更新する必要がある
  2. これは時系列を利用することで半自動的に可能になる
発想としてはPoICのタスクフォースと似ている。このタスクフォースとバッファ理論をPC上で実現しよう、と考えたことがMoEの基礎になっている。

MoEの原型


データベースを作る必要はない。だからメモが不要であればそれは捨ててしまってもかまわない。自由に組み替え、原本を改変しても全くかまわない。それでもいいから、とにかくずっと、全体が有用であり続ける状態をつくれ。

この発想を元にして、MoEの原型はできあがった。
必要なのは以下のことである。

1.メモの受け入れバッファーをはじめから用意する。これは、分類だとか重要度だとかそういったことをいっさい気にせず、放り込める場所にする

→これは実際は、これまでカード法の時点から実施してきたことである。そこでは基本的に、分類をせずつっこんできた。梅棹の意図したところは、「何でもつっこまれている状態であればくるときにそれだけ有効になる」と少し意味合いが違っているが、これは受け入れバッファーとしての役割をすでに果たしている。
ただ、そこでしていた、「質の高いもののみメモとして含める」「タグを打つ」といった、それがカオスになることを防ぐためにとっていた方法はしなくてもいいことになる。この時点では、なにも考えずメモを作れることが第一であるのだ。

2.それが秩序を保った状態を維持する

→これは、「そこから関連するもののみを取り出す」という仕方で維持を図る。PCで言えば、それを別フォルダに移動することをすればいい。
関係するファイルを探し、一つの箇所にまとめる過程がそのまま秩序を保つことにつながる。また、この過程は一度にやる必要性もない。関連するファイルをある程度までまとめて移動したあとでも、それを中断して後日続きをするというのは可能である。これはカードを使った方法ではできないことである。

また、同時に廃棄バッファーをあらかじめ用意しておき、そこに不要なものはすべて移動するようにする。こうすることによって、それらは一旦は目の前から消えることになり、受け入れバッファーのノイズが減ることになる。また、たとえそこに捨てたとしても、がんばれば(Grepなりなんなりを利用して)元に戻すことも可能である。ただ、今のHDDの容量からすればテキストメモの容量など微々たるものであるから、実際にこのフォルダにあるファイルを削除する必要はないだろう。
「とりあえず捨てる」ためのバッファーは、つぎの二つの条件を満たしていなければならない。
(1)目の前からは消えていること。
(2)しかし、必要になれば取り戻すことのできること。(野口悠紀雄『「超」整理法〈3〉』p55)

時間軸という観点から


これが利用しているのは、「時間がたてば書き出したメモも醸成され意味がわかってくる」という原理である。

人間はそのときどきでいろいろな問題に取り組んでいる。それは突発的なものであったり、あるいはずっとかかえているものであったりするだろう。それについての思いつき、対処法、方針、総括、感想といったものが、そのときどきにたまたま経験することをきっかけにして、無秩序にひらめく。ただ、それがどのような問題に関してのものなのか、といった全体的な見通しについては保たないままランダムに生じる。そうして、そのときにたまたま思いついたことを元にして何かの行為をし、それがたまたま失敗するか成功するかして、またそれについて忘却し、また同じ思いつきをしてというように、同じところをくるくると回るのである。
記憶があてにならないという事実も、「発見の手帳」をつかっているうちに、うかびあがってきた一つの「発見」であった。わたしは、自分自身の発見や着想をも、すぐにわすれてしまうのである。その証拠に、わたしの「発見の手帳」をよみかえしてみると、まったくおなじ内容の「大発見」がしばしばあらわれてくる。まえに一ぺん「発見」したことをわすれてしまって、またおなじことを「発見」してしまうのだ。
しかし、とにかくもそれが記録にとどめてあったことによって、無意味な二重発見をチェックすることもできるのである。もしこれが、なんにもかいてなかったら、わたしは毎日大発見をしたような気になっても、じっさいのわたしの知的活動の内容は、何年もまえとおなじところで足ぶみしているのかもしれないのだ。かいておきさえすれば、まえの発見が、つぎの発見のためのふみ石になって、しだいに巨大な構築物にまでつみあげることも可能なはずである。(梅棹忠夫『知的生産の技術』P27)

そこで、それをメモとして蓄積する。それ自体は、はじめは単体としてみればたいして価値のないものだろう。そうすれば、それが蓄積しそれを眺めたならば、それがどのような問題意識からきたものなのか、そしてそれについてどのような方針を思いついたのか、それは適当なものなのか、ということの判断というのがだんだんとついてくる。そこで、それを元にしてその関係するものを取り出し、整理をつけて、実際の行動に反映させ、思いつきでやっていたよりもより適切な行為をする。我々は現実において様々な問題に出会い、そのときどきでなんらかの対処をする。そのような実際の流れとは別に、それらを一旦、メモ群という別の場所にとりあえずおいておき、寝かせて、それを再び現実に反映させる。リアルの流れとはまた別の時間の流れというのを、別の場所に平行して作り出すのである。

何か思いついたことがあれば、とりあえずそれをメモにして受け入れバッファーに放り込む。そうしてあとは時間がたつのを待ち、適当に時間が過ぎて受け入れバッファーを見て、なんかこれ関係してそうだなというのがあればそれをまとめて操作をする。時間がたちすぎてもはや問題そのものが消滅し、アイデアの価値がなくなっていると判断したものについては、それを廃棄バッファーに捨てればいいだろう。受け入れバッファーのなかでもより古いファイルがそれに該当する可能性が高いので、見分けるのもそれほどは難しくないはずだ。

PCにバッファ理論を応用


メモをためるというだけなら、PCでやろうとカードでやろうと大差はない。しかし、それを編集し、移動し、活用するとった自由な操作をメモ単位で行おうとすれば、アナログなカードよりもPCのデータのほうがより適している。PCの利点はGrepだとかにあるのではない。メモという単位でデータを扱うのがより柔軟になる、ということにあるのである。

実際のシステムは次のようになる。

フォルダ構造とバッファ


まず受け入れバッファー用のフォルダを作る。テキストメモは、とりあえずここに保存する。
ついで、廃棄バッファー用のフォルダを用意する。これは、不要になったファイルを適当に移動するためのフォルダである。

また、カテゴリーフォルダを用意し、受け入れバッファーからメモを取り出して操作する際にはこのサブフォルダを使って行うようにする。このフォルダ内で編集その他の操作をし、不要になったと判断したメモは廃棄フォルダに移動する。

こうして
  1. 受け入れバッファー用のフォルダ
  2. カテゴリーフォルダ
  3. 廃棄バッファー用のフォルダ
の三つを作ればいいということになる。

ファイル移動による秩序の維持


再生産をする際には、受け入れバッファーから適宜、一覧ビューとタイトル表示を利用して、関連するファイルをカテゴリーフォルダに移動する。そして移動先で、編集なりなんなりの操作を行う。
これは同時に、受け入れバッファー内の秩序を保つ過程でもある。

以上の操作は、ファイラを用いてするべき範疇に入る。こうして、「ファイラを起点にして運用する」というように、PCを用いたメモの方法論の性質が定まることになる。

*1:このときは選択肢として以下のようなソフトがあった
  • howm
  • アウトラインプロセッサ
  • ChangeLog
  • 紙copi

*2:このときに利用していたソフト
  • Getia
  • xyzzyのGrep
  • VxEditorのGrep
  • DesktopHE
  • fenrir