Name: Satoshi Nakagawa Date: 2020-06-10
Mycroft は 軽い軽い文書管理システムです。
文書ファイルはローカルな場所ならば、 どこに置いてもけっこうです。
文書ファイル名は単純(たとえばスキャンした日付) なままにして、 それの説明、キーワードは別ファイルに記述することが 前提とされています。
(1) 文献を自炊することによって、 PDF ファイルが増えてきました。 (2) さまざまな事務書類をスキャンしているうちに 収拾がつかなくなってきました。
(1) の問題の解決のためにいろいろ ソフトを探し、 Calibre を しばらく使いました。 しかしながら Calibre はわたしの趣味にあいません --- あまりに仰々しすぎます。 もっと軽いプログラムがほしいのです。
(2) のためには 日本語のディレクトリ名をつかって、 日本語のファイル名をつかいました。 しかし、 このような階層的なタクソノミーでは 事務書類は処理しきれません。 いちばんいいのはタグ方式です。
つぎのようなファイルがあるとします:
20200608064751_001.pdf
20200608064843_001.pdf
20200609132634_001.pdf
212228.PDF
C-101.mp3
これまでは、(1) これらを Calibre に登録するか、 さもなくば、 (2) これらのファイルに適当なファイル名をつけて、 適当なディレクトリ名に入れるという作業をしていました。 どちらにしても手間ばかりかかって、 あまり整理する意味もありませんでした。
その代わりに、 これらのファイルを説明するファイルを作成します。 以下のような行から成り立っています:
20200608064751_001.pdf::アマゾンの領収書(タオルその他)::\
2020-06-05::finance,receipt, amazon
20200608064843_001.pdf::サイドトレーの説明書::2020-06::\
manual,captain stag, manual
20200610091621_001.pdf:::東南大学出張証\
明書::2020-06::wk,証明書::1
2122228.PDF::A Logical Paradox by L. Carroll::bib,carroll-paradox
C-101.mp3::mp3::1986年のフィールドワークの録音::1986::fieldwork,ende
一つのファイルが '::'と ',' とで区切られた1行の中で説明されます。
::
で区切られた部分をフィールドと呼びましょう。
五番目のフィールドはオプショナルです。
1::2::3::4a,4b,4c,...::5
それぞれのフィールドは次のような意味です:
- ファイル名(ディレクトリ名はいらない、拡張子はかならずつける)
- ファイルの簡単で、わかり易い説明
- 日付
- キーワードが ',' で区切られて列挙されています
- より詳しい説明書がある場合、五番目のフィールドに
1
と 記入されます
それぞれの行がドキュメントを指していまじゅ。 いくつか例外であるところの特別な行があります。
まず、空行と #
で始まる行は無視されます。
ですから、なにかコメントを書き込みたければ、
#
以下に書いてください。
ただし、#conf:
で始まる行は特別な意味があります。
たとえば次のようになっています:
#conf:ps:/home/satoshi/Cloud/Gdrive/Data/ps/:
パーソナルファイル:0000
表示の都合上2行になっていますが、じっさいは1行です。
こんどは :
が区切り文字となっています。
1:2:3:4
1 は #conf
で、この行が特別なコンフィギュレーションだという
ことを示しています。
2 は、このリストの所属するカテゴリーです。
ここでは ps
(「パーソナル」という意味で、
わたしは使っています)がそのカテゴリー名です。
3 はじっさいに対象のファイルのあるディレクトリ
(ウィンドウズでは「フォルダ」)の場所を示しています。
そして、
4 はカテゴリーの詳細な説明です(これが
タイトルになります)。
そして
5 は意味がありません、とりあえず
0000
を書いておいてください。
mycroft
はリストファイルから
複数の html
ファイルを作成します。
じっさいに html ではなく、
org
あるいは markdown
のマークアップ言語で書かれた
ファイルを作ります。
(org
はまだできていません)。
org
は emacs
のなかで html にコンバートできます。
markdown
は
pandoc をつかえば html
にコンバートできます。
ps-1.lst というファイルがあります。 (ファイルの内容はファイル名をクリックしてください。)
mycroft ps-*.lst > myindex.md
とすると、
[[myindex.md]] というマークダウンファイルができます。
およびいくつかのタグクラウド用のマークダウン、
たとえば tax や
試験 ができあがります。
タグファイルは(あとで削除しやすいように)
すべて TAG-
という文字列ではじまっています。
ですから 試験
タグのファイル名は
TAG-試験.md
です。
それぞれのマークダウンファイル (md
) は、
pandoc を使って html
ファイル
を作成してください。
myindex.html、
TAG-tax.htmlや
TAG-試験.html などができます。
以上でおしまいです。
適当なウェブブラウザで ローカルファイルである [[myindex]] に アクセスしてください。
これまで四つのフィールドについてお話ししてきました。
じつは五つめフィールドに隠し機能があります。
行末に ::
をつけて、
その後に 1
と書いてください。
下のようになります。
20200608064751_001.pdf::アマゾンの領収書(タオルその他)::\
2020-06-05::finance,receipt, amazon::1
そうすると、対象の pdf ファイルと
一部が同じ名前で
拡張子が .md
のファイル
(INF-20200608064751_001.md
という名前のファイル)が出来上がります。
あとは、
この md
ファイルに
オリジナルのファイルの説明を書き込んでください。
たとえばこんな Makefile
をつくればいいでしょう。
.phony: all list output clean cleanall
MD=$(filter-out index.md INF-%.md, $(wildcard *.md))
HTML=$(MD:.md=.html)
PS=$(wildcard ps*.lst)
FW=$(wildcard fw*.lst)
ST=$(wildcard st*.lst)
LIST=$(wildcard *.lst)
LISTMD=$(LIST:.lst=.md)
%.html : %.md
pandoc -s -c hatena.css -w html -o $@ $<
list: $(LISTMD)
ps.md: $(PS)
mycroft.pl $(PS) > ps.md
fw.md: $(FW)
mycroft.pl $(FW) > fw.md
st.md: $(ST)
mycroft.pl $(ST) > st.md
clean:
rm -f *~ *.BAK
cleanall: clean
rm -f TAG-* $(MD)
output: $(HTML)
cp *.html ~/Output/Project/dt/mycroft/
all: list $(HTML) output
md や html は git
で管理する必要はありません。
ただし、INF- ではじまるファイルと、
(おそらく) index.md
という名前のファイルは
きちんと管理する必要があるでしょう。
*.md
!INF-*.md
!index.md
*.html