Jazzと読書の日々

iPadを筆記具として使う方法を模索します

「センスの哲学」は読めなかった

読み終わったけれど「感想」が浮かんできません。 うーむ。 「いい」とか「悪い」とかもなくて「何が書いてあったんだろう」で留まっている。

でも「感想がない」のも感想だし、あとで読み直したときに何か思うかもしれないので、今の戸惑いをメモにしようと思います。

センスの哲学

千葉先生の本には「おまけ」がある。 グリコにおもちゃがついてくるように「おまけツール」が添付されています。 「勉強の哲学」では「欲望年表」でした。 「現代思想入門」では「脱構築のしかた」。 本の最後のほうで「じゃあ、一緒にやってみましょう」みたいな付録がついています。

学研の「科学と学習」の世代には懐かしい。 目次を見ると「センスの哲学」にも「付録 芸術と性格をつなぐワーク」が載ってます。 ほらね。

たぶんアウトラインを描いたあと、そこから「おまけツール」を作るんだと思います。 何通りか作って、使えそうなツールが決まってから、それに合わせて本文を書き下す。 そんな書き方をしているんじゃないかと「仮説」を立ててみました。

で、今回の「おまけ」ですが、自分が影響を受けたドラマやアニメを思い返して「その構造分析をしてみよう」という内容でした。 意味じゃなく構造に目配せする。 ははーん、これはロラン・バルトよ、絶対。 バルトの「物語の構造分析」が背景にあって、それをセンスに絡めるのか。 なるほど。 もうわかっちゃった。

と、この読み筋で本文に入ったのが今回の「敗因」だったかもしれません。 読書に勝ち負けはないけれど「出会い損なった」のはここじゃないかなあ。 バルト、出てこないもん。 宇都宮の餃子だもん。 そこから攻めるかぁー。

センスがいい

「センスがいい」の内実を明らかにし「センスを磨く」の方略を考える。 そんなハウツー本になっています。 なのでこれはライフハックの話。

ライフハックに会ったら「考案者の問題意識」を問え。 そういう方針で読んでみると、なるほど「教育資源」か。 いわゆる「親ガチャ」。 「センスのいい家庭で育つとセンスが良くなる。それはその家庭の教育水準によって決まっている」という、最近よく見かける言説です。 学歴が就職に繋がり、就職が収入に繋がり、収入が教育水準に繋がり、教育水準が次世代の学歴に繋がる。 最近の「センス」はそうした文脈で使われるらしい。

これを転覆させる。 それがこの本の「問題意識」だと思いました。 違うかもしれないけど。 でも「センスは家庭環境ではない」は論点の一つにありそうです。

そりゃあ、そうだろうなあ。 センスは「いい/悪い」より「ある/無し」で語るものです。 「センスがあるなあ」とは言うけど「センスがいいなあ」とはあまり使いません。 でも若い人からは聞きます。 語用論的に変化してきてる? 世代差があるのかな。

「野球のセンスがある」や「将棋のセンスがある」という表現はします。 その方面に必要な勘が働くというか、コツを掴むのが早いというか。 そうしたものを「センス」と呼ぶのは抵抗ありません。 身体からにじみ出るところにセンスがある。

それに比べると「センスがいい」を聞くのは洋服や雑貨に関してですね。 LOFTや東急ハンズが出てきて「自分探し」と言い出した頃。 「コーデ」みたいな表現が急に巷で使われ出した。 商品を組み合わせて、それを自己表現とする。

平成に入ってからかな。 ミシンで普段着を洋裁しなくなった。 既製品をカスタマイズして着こなす。 男性用ファッション雑誌が出てきて、阿部寛がモデルをしていた。 そこくらいから「センスがいい」に価値が置かれるようになりました。

でも教科書やマニュアルがあると信じ込むと、これは苦しい。 そこで「センスの哲学」で提案してるのはブリコラージュ。 そうそう、ブリコラージュだ、これは。 「センス」を否定するのではなく、身近なこととして定義し直す。 カスタマイズやガジェットと同じ発想。 それをシステムに対抗するツールとして磨きあげています。

スリル

スリルと退行 単行本 – 1991/12/1

マイクル バリント (著), Michael Balint (原名), & 3 その他

フロイトの「Fort/Da」が出てきてラカンの「享楽」の話になります。 そこからのウィニコットに繋げるんだけどピッタリ来なかったかな。 ラカン繋がりでバリントの「スリルと退行」に進むんだと思った。 ところが「スリル」が出てこない。 驚いてKindleで本文検索してみても「スリル」という言葉がない。

そう、いま「スリル」がなくなっているんだと気づきました。 マイケル・ジャクソンの頃は「スリラー」があったのに、日本から遊園地がなくなり「お化け屋敷」が消滅した。 あるのはディズニーとUSJのようなメディアミックスなテーマパークだけ。 「サスペンス」はあっても「スリル」はない。 これはなんだろうか。

「スリル」とは「法」の外、「法外」のことです。 人間はベースのところにバグを抱えている。 幼児でも性的興奮を感じることがあり、それをうまく制御できない。 自分自身がバラバラに壊れそうになる。 この本でも「不快の快」として描かれているところ。 これが身体に潜んでいる。

バリントはこの「興奮」への対処法として、ルールに固執するオクノフィルと、逸脱に身を投げ出すフィロバットを挙げ、今の「発達障害論」の基礎を作っています。 両方の傾向は誰にでもあるんですけどね。 というか、両方あって情動が調律される。

ところが現代は「安心安全」に価値を置くオクノフィルな時代です。 飼い慣らされた範囲での「逸脱」しか許されない。 たまに雪山に挑んだりするフィロバットな人も現れますが、たいていの人たちはその冒険を見る「観客」です。 座ってコンサートを鑑賞するオーディエンスたち。 いっしょにダンスすることはありません。

音に身を任せてクネクネすると変な目で見られます。 「静かに」とも言われる。 そこに「音楽」があるのに身体が切り離されている。 身体はリズムを吸収して踊り出しそうなのに。 ゴーゴーとかマハラジャとか、知らない?

人間は餃子である

スリルは箱の中に収められている。 テレビやパソコンという箱の中に。 だからテレビから人が出てくればスリラーになります。 これは「餃子」ですね。 人間は皮一枚にくるまれている。 中は肉と野菜のミンチがカオスになっています。 囓れば熱い肉汁とニンニクの香りがほとばしる。 コース料理でリズムは言い表せない。

皮と餡とでリズムが生み出される。 どちらが多くても気詰まりです。 その塩梅というか加減というか、それがリズムとなりセンスとなります。

「動きすぎてはいけない」の頃は「どんどんどんパッ」でしたが、だんだんと「どんどんパッ」になって、「センスの哲学」は「どんパッパ」になりましたね。

ロジックに沿って進むだけだと展開しなくて、どこかに崩しや綻びの「パッ」を挟んで撹乱する。 「パッ」が起きると飛躍はあるけど展望が広がる。 その「パッ」のタイミングが今回は早くて、これまで以上に軽快でセクシーでした。

まとめ

生成AIまでも「リズム」として読み取るのかあ。 無敵だなあ。

Obsidian:Roomをバナー付きにしてみた

自分だけのホームページをローカルに作る。

Room

Obsidianを立ち上げたとき最初に開くページ。

Dataviewを用いてファイル履歴を一覧表示します。 ファイル名をタップするとそのページが開く。 長押しするとファイル名の変更やブックマークできます。

「Obsidianはローカル・ネットワークのブラウザ」というコンセプトです。 インターネットのメタファーで、ローカルにあるファイルを管理する。

ファイル名の検索もできるし結構便利。

Room.md

下記スクリプトをプレビューして使用。

Import Obsidian: Room

```dataviewjs
const FOLDER = "keyword/"
const BANNER = "banner.jpg"

const s = "background:ivory;width:119px;height:112px;border:1px solid #eee;border-top:8px solid gold;text-decoration:none;padding:3px;border-radius:3px;margin:3px;overflow:hidden;float:left;"
const ss = "border-top:8px solid orange;"

dv.paragraph(">[!info]- " + (BANNER? `![[${BANNER}]]`:"Room") + "\n>~~~dataview\n>task where !completed group by file.link\n>~~~")
const p = dv.el("input")
p.placeholder = "..."
p.style = "width:50%;font-size:large;background:whitesmoke;border-radius:3px;border:1px silver solid;"
const btn = dv.el("button","+")
btn.style = "font-size:small;margin:5px;width:40px;"
const b = dv.el("div", "")
b.style = "font-size:small;font-weight:bold;height:4000px;"
disp()

p.onkeyup = () => disp()

btn.onclick = () => {
  q = encodeURI(p.value)
  if(q){
    open(`obsidian://new?file=${encodeURI(FOLDER)}${q}&content=%0A~~~query%0A${q}%0A~~~%0A`)
  }else{
    open("obsidian://new")
  }
}

function disp(){
  r = new RegExp(`(${p.value})`, "i")
  const c = dv.pages('').file
    .filter(x => r.test(x.name))
    .filter(x => x.starred)
    .sort(x => x.mtime, "desc")
    .map(x => `<a class=internal-link style='${s}${ss}' href='${x.path}'>${x.name}</a>`)
  const d = dv.array(Object.entries(dv.app.metadataCache.fileCache))
    .filter(([x,y]) => r.test(x))
    .sort(([x,y]) => y.mtime, "desc")
    .limit(210 - c.length)
    .map(([x,y]) => `<a class=internal-link style='${s}' href='${x}'>${x.split("/").pop().replace(".md","")}</a>`)
  b.innerHTML = c.join("") + d.join("")
}
```

ブックマークされたページが優先的に並びます。

変更点

テキストだけでは味気ないのでバナーをつけました。 assetsフォルダにbanner.jpgという画像ファイルを置けば表示されます。 ファイル名は変数BANNERで設定。

もしファイル名を""としたら「Room」と表示されます。

バナー左横のアイコンをタップすると、未完了タスクをリスト表示します。

バナーの作り方

写真アプリで画像を選び「編集」をタップします。

トリミングで表示範囲を選び、右上のチェックボタンを押せば決定。 これをObsidianのファイルに貼りつければ、自動でassetsフォルダに画像が保存されます。

まとめ

フリーレンも最新刊が出て、ユーベルとメガネくんが再登場。 ヒンメルの銅像が新調されるごとに別人になってくエピソードが感慨深かった。

いやほんと、なかなかエンデにたどり着きそうにありません。

azooKey:NHKの裏配列をBBCにしました

英語よりもMarkdownのほうが多い。

NHK配列

iPhone用のローマ字入力

これはこれでいいとして、シフトキーで出る配列をどうしましょうか。 azooKeyの「英語キーボードの種類」に移動するのですが、英語ってそんなに使わないんですよね。

iPhoneで不便なのは記号を打つときです。 とくにMarkdown。 バッククォートとかなかなか出てこない。 ここをどうするか。

そこでMarkdown中心の記号キーボードを作ってみました。 NHKの裏ということでBBCにします。 語呂合わせを考えてみたけど、何も浮かばなかったので意味なしBBCで。

BBC配列

下記スクリプトを「URLから読み込む」でインストールします。

Markdownで多用する記号が前面に出ます。 フリックにも割り当てて数字+基本32種類が揃っています。

真ん中の「□」はチェックボックスです。 上フリックするとチェック済みボックス。 左右フリックでブラケットになります。

全体にそんな感じで、形が似ている記号を集めています。

英語変換

ちょっと特殊な使い方として「英語変換」ができます。

NHK配列で英語を打ち込んでからシフトでBBCに移動し、再びシフトでNHKに戻ると、英語の変換候補が先頭に追加されます。 つまりシフト2回で英語変換。

これはazooKeyに内蔵されている英語に限定されます。 でも、先頭の綴りだけで「英語変換」しても予測変換がずらっと並ぶ。 通常使う分には困らないでしょう。

速記入力

NHK配列に関しては「速記入力」がオススメです。

iPhoneの「ユーザ辞書」は「よみ」にアルファベット二文字が使えます。 「tr」を読みにして「登録」を登録すると「tr」で「登録」が出てくる。 母音を省略できるのでフリックが激減します。

ローマ字入力が好きな理由の一つです。 自分のボキャブラリーに合ったユーザ辞書が育つ。 漢字熟語を「子音2つ」で登録するとタイプミスも減ります。 しかも速い。

まとめ

azooKey - 自由自在な日本語キーボード 2.2.3
分類: ユーティリティ,仕事効率化
価格: 無料 (Keita Miwa)

欧米圏ってスマホ用配列を考えない? 指が太いとQWERTYは打ちづらいだろうに。

azooKey:NHKで片手ローマ字入力を画期的に

まさかそんな真実が隠れているとは。 ローマ字入力の配列を組んだら左縦列が「NHK」になりました。 日本引きこもり協会。 これが日本語の正体なのか。

NHK配列

前回「片手で打てるのは3×3」と書いたので3×3の配列を考えてみました。 下記スクリプトをazooKeyの「拡張→カスタムタブの管理→URLから読み込む」でインストール。

子音はワンタップ・母音はフリックというコンセプト。 ローマ字入力に必要な分をコンパクトに詰め込んでみた。 iPhoneでの使用を想定しています。

どうしてもカナ入力より手数が多い。 そこは割り切ってください。 割れることが「合理的 ratio」の原義です。

コンセプト

中心に母音があって周囲を子音が囲む。 高野山胎蔵界曼荼羅を参考にしています。 密教的魔方陣ですね。 どんなパワーが潜んでいるのでしょう。

まず濁音の発生率が低い事実があります。 濁音の子音は上フリックに隠して構わない。 すると濁音化する子音は下段にある方がフリックしやすい。

拗音化を考えると「Y」は中段がいい。 「hw」も使うので「W」を「Y」の上フリックに入れる。 母音の隣に半母音グループです。 「bw」を「v」に変換もします。

「ー」は多用するけど「ーー」と二度打ちするケースはない。 「H」の右フリックにします。 あまり使わない「F」や「V」は上段のフリックに割り当てる。 ローマ字入力に不要な英字は左右フリックに隠す。

それらを意識すると「NHK」になりました。

特徴

フリック前提ですが、意外と少なめで済みます。 ローマ字の位置関係も収まりがいい。 キーが少ないからか、文字を探して迷うことがありません。 十字を切るのは中央の「A」だけなのでiPhone本体がブレない。 片手で持っても入力できる。

カナ入力より一段少ないのも強みですね。 指に負荷がかからない。 下フリックが「O」のときだけで選択肢も少ない。 これもいい方向に働いています。 インターバルがあって指休みができる。 長い文章を打っても疲れを感じにくい。

文字を書くときは片手で書きます。 利き手には書字への慣れがあるのでしょう。 考えながら綴ることに抵抗がない。 言語野が左脳半球にあるのと関連するのでしょうか。

この方法でタイプする。 iPadを持つ右手の親指だけで書けてしまう。 あるいはテーブルに置いて中指で入力する。 叩くよりは描くに近い書き心地がします。

まとめ

azooKey - 自由自在な日本語キーボード 2.2.3
分類: ユーティリティ,仕事効率化
価格: 無料 (Keita Miwa)

これはいい感じ入力。

もし記号が足りない場合は追加してください。 自由にキーやフリックのカスタマイズができるのがazooKeyの魅力です。

azooKey:Wes配列にV音を埋め込んでみた

物理キーボードにはない沼地。

Wes配列

ウェス・モンゴメリーのためのローマ字入力」というコンセプトで、何がどうだとは言えませんが、もうこれしか使ってない。

iPadで十本指を使うことはできません。 いまこうして打っていても中指だけですね、使ってるのは。 すると可動範囲は狭いものです。 キーの数は少ない方がいい。

フリックかな入力はよく考えてあります。 片手でカバーできるのは3×3の範囲。 負荷の少ない運指はこの布陣が限界。 これを基調にしたのがWes配列です。

変更点

ローマ字で「hwa」と打つと「ファ」が出ます。 だったら「bwa」で「ヴァ」がほしいじゃないですか。 でもその入力は用意されていない。

今回azooKeyのカスタマイズに「末尾の文字を置換」というアクションが増えていることに気づきました。 これ、「bw」を「v」に置き換えるができるんです。

鳥肌が立ちましたね。 「bwitogenshutain」で「ヴィトゲンシュタイン」。

ローマ字とは何か

もし戦国時代に来た南蛮人の表記を指すなら「南蛮字」と呼んだはず。 もう少し詳しくても「ポルトガル字」になるくらいでしょう。 なぜ「ローマ字」なのか。

それは江戸時代の蘭学でもない。 明治の文明開化でもない。 もっともっと昔の奈良時代に「ローマ帝国」から伝わっていた。 シルクロード経由で「ローマの文字」を見たことかあり、それを「ローマ字」と呼んだとしか考えられない。

正倉院にあるんじゃないかな。 「ギヤマンの鐘」か何か木箱に入ってて、トリセツがラテン語で書かれてるのって。 「和尚、この文字はなんですか。我らには読めませぬ」。 「これは遠く大秦国で用いられた秘教の文字じゃ。誰もその読み方は知らぬ」と。

あ、知らないんだったらおかしいか。 密かに興福寺あたりで研究されてて、一部の者たちは読むことができた。 でも門外不出で、その禁を破ったものは闇へと葬られ、一般に知られることはなかった。 文献にも記載はない。

時は過ぎ、群雄割拠の時代になり、ポルトガルから宣教師が訪れたとき、彼らの使う言葉を見た南都の僧侶が「これはローマ字では」と漏らしたばかりにその場で斬殺。 これが却って「ローマ字」に日が当たる機会となった。

「ローマ」は秘伝の隠語では「羅馬」や「老蛮」と書かれる。 以降、西洋の言葉は「老蛮字」や「南蛮字」と呼ばれるようになり、今に至るのであった、云々。

以上はもちろんウソで、西周までは「洋字」と呼ばれていたようです。 「ローマ字」という呼称を使い始めるのは東大初代総長の外山正一。 「羅馬字会」というのを発足し、日本語のローマ字化を推奨しています。

それにしてもなぜ「ラテン字」と呼ばなかったのだろう。

まとめ

V音の表記を「ヴ」にした人、F音が「フ」なのと辻褄が合わないから、別の人の発案なのだろうか。 V音、梵語に出てきそうだから「弘法大師がその祖」でも納得するけど。

「違和感」はいつもネタになる

Yellow Boot|600 Backlink | Photo by Colton Sturgeon on Unsplash

最近外出するのが億劫である。 今年は知らないうちに桜も散ってしまった。 寒暖の差が激しいからかな。 寝るときも毛布が要るのやら要らないのやら。

違和感

振り返ってみると、ブログのネタにしているのは「違和感」だと気づきました。 アプリの話にしても本の感想にしても「どうもしっくり来ない」が根底にある。

生きづらいんですよね、幸いなことに。 根が変人なので「世の標準」に居心地悪さを感じるらしい。 それが「書くこと」の原動力になっています。

アプリにしても本にしても、そこに込められているのは「ライフハック」です。 考案者から「これがあると人生が楽になるよ」という提案がされている。 ということは、その考案者も「生きづらい」を抱えているのでしょう。

同類ですね。 同じ変人。 問題意識があるから、そのためのノウハウを考えたわけです。

すると、その問題意識が何か。 それを曖昧にしたまま真似たところでぴったりは来ません。 三日坊主になるのは見えている。 ライフハックには「問題」が潜んでいます。 その「問題」を捕まえて、自分にもあるかどうか検討しないとハックが生きてきません。

「問題」は本を読めば出てきます。 「こんなことで困りませんか」と書いてある。 それは作者が「こんなこと」で困る人だからです。 そこに「違和感」を持って生きづらかった。 そうした告白が隠れています。 これに共感するかどうか。

共感しない「こんなこと」であれば、そのハックを採用しても自分には合いません。 スケジュールに押しつぶされてないし、進捗状況を伝えるべき共同作業者もいない。 その方面に「困ったこと」がないなら、そのアイデアを使うバトルフィールドがない。

「じゃあ、無縁か」と言えば、そうとも言えない。 もしも自分の「違和感」の参考になるなら、そのハックは有効な道標です。

とすると自分の「違和感」を捉えることが先決になります。

依り代メソッド

自分の「違和感」を捉えること。 これが難しい。 ひとりでやると堂々巡りに陥ります。

信頼できる相談相手がいれば上等ですが、まあ、いちいち他人の手を煩わせるわけにもいかない。 となると「人に相談する」を仮想的に行うこと。 ヴァーチャル・カウンセリング。 そうしたテクニックが必要になります。

これも「箱」ですよね。 違和感を「箱」に入れ「私」がインタビューする。 対話場面をセッティングします。 「私」を「語り手と聞き手」に分けてロールプレイする。 どちらかというと「私」が聞き手、カウンセラー側。 インタビューアー。

「心」には実体がないので、いったんイメージの中で「実体」を持ってもらいます。 ほら、神さまに話しかけるとき「依り代」を立てるじゃないですか。 あの感じです。 姿形のないものと対話するには「媒体」が必要となる。 そのための「箱」を用意します。

実物でもいいし、イメージでもいい。 その「違和感」の感触に合う箱を目の前に置く。 桐箱に収めたら似合うだろうか。 鋲付き皮バンドでグルグル巻きにしたらどうだろう。 「違和感」に合う箱を考えるだけで「違和感」が喜びます。 そしてインタビューを始める。 「あなたは誰ですか」と。

気持ちは町工場の社長さん。 社員からの目安箱に手紙が入っていた。 それを読むような、あるいはその社員さんを社長室に呼んで尋ねるような心持ちでインタビューします。

現場の現状を知っているのが「違和感」です。 心置きなくその話をしてもらう。 聞き手の「私」はそれを箇条書きにログしていく。 社長としての意見は棚に上げする。 言いたいことがあってもあとに回し、まずは「箱」に語ってもらいます。

ひと通り聞いて疑問が湧いてきたら尋ねてみる。 いま「頭でわかっているのに心がついてこない」という事態を思い浮かべています。 この「頭」が「私」ですね。 「心」の言い分を聞く。 向こうが現場のプロ。 「この身」の専門家として「心」に敬意を払う。

そんな感じ。

実験的思考

「問題」が見つかれば実験しやすくなります。 「実験」とは「仮説を立て検証する」という態度を指します。

まず「仮説」を立てる。 この場合の「仮説」は関数の姿をしています。 z = f(x, y)。 「問題 z」を、変数 x と y の関数として記述してみる。

変数は2つと限りませんが、3つとわかってから3つに増やす方針で。 1つにしないのは、少なくとも「役割」と「期待」の2つがあるからで、 たとえばツールを使うなら、ツールが課してくる「ユーザーの役割」とユーザーが暗黙に抱く「ツールへの期待」の2つの側面があり…。 あ、これ書き始めるとややこしいな。

「仮説」についてはあらためて別に書きます。

「検証」は「とりあえずやってみる」ということ。 変数を変えて変化するかどうか、それを試してみる。 危なそうだったらすぐやめる。 変化がなかったら仮説を見直す。 それが「検証」です。 「試みること」が「心を見ること」になる。

望ましい方向に変化が起これば、当面その「仮説」でやってみます。 ちょっとマシになるあたりがこの「実験」の効果です。

まとめ

で、今回の「違和感」は「歩きづらい」でした。 靴の底を見ると、踵が片方割れて穴が空いてました。 そりゃあ、バランスが崩れて気持ち悪かろう。

ということで、新しい靴を新調。 もちろん体調までは治りませんが、外出が苦にならない範囲にはなりました。

Obsidianで小説や論文をマージする方法

ObsidianはPKM。 つまり「知識 Knowledge」のネットワークを構築するツールなので、実は「執筆 Writing」に弱い。 大リーグボール2号が水に弱いくらい弱い。

それでPWM(Personal Writing Management)には一工夫必要となります。

分割執筆

章立てをファイルに分けて書き、あとから連結する方法。 ScrivenerやUlyssesでお馴染みですが、これをObsidianでもやってしまおう、という作戦です。

TemplaterとDataviewプラグインを使っています。

Playlist.md

下記スクリプトをTemplaterのHotkeyに登録してください。 個人的にはCommanderでTab Barのボタンにしています。 ここが呼び出しやすい。

Import Obsidian: Playlist

<%*
const PLAY = "playlist"
const MERGE = "merge"

p = tp.file.folder(true) + "/"
q = PLAY
const t = tp.file.title
if(t == PLAY){
  s = tp.file.content
  if(/^\- /m.test(s)){
    if(/\- \[x\]/.test(s)){
      q = MERGE
      const a = s.split("\n")
      s = ""
      for(i=0; i<a.length; i++){
        if(/- \[x\] /.test(a[i])){
          const m = a[i].split("- [x] ")
          s+= m[0].replace(/\t/g, "    ").replace(/\s{4}/g, "#").replace(/\s+/g, "#") + "## "
          f = m[1].replace(/.*\[\[(.+?)\]\].*/, "$1")
          s+= f + "\n\n"
          f = p + f + ".md"
          b = app.vault.getAbstractFileByPath(f)
          if(b){
            const c = await app.vault.read(b)
            s+= c.replace(/([^!])\[\[(.+?)\]\]/mg, "$1$2") + "\n"
          }
        }
      }
    }else{
      s = s.replace(/\t/mg, "    ")
      s = s.replace(/^ {4} +- /mg, "#### ")
      s = s.replace(/^ +- /mg, "### ")
      s = s.replace(/^- /mg, "## ")
    }
  }else{
    s = s.replace(/^#{4} /mg, "        - ")
    s = s.replace(/^#{3} /mg, "    - ")
    s = s.replace(/^#{2} /mg, "- ")
    s = s.replace(/\n+/g, "\n")
    s = s.replace(/\n/, "\n\n")
  }
}else{
  const d = DataviewAPI.pages('')
   .filter(x => p == (x.file.folder + "/"))
   .filter(x => !x.file.name.includes(q))
   .filter(x => !x.file.name.includes(MERGE))
   .sort(x => x.file.name)
   .map(x => `- [ ] [[${x.file.name}]] `)
  s = `[${p}](obsidian://new?file=${encodeURI(p)}) \n\n`
  s+= d.join("\n")
}
f = p + q + ".md"
p = app.vault.getAbstractFileByPath(f)
if(p){
  if(t != PLAY && q == PLAY){
    s = await app.vault.read(p)
    if(t != MERGE && s.indexOf(`[[${t}]]`) < 0) s+= `\n- [ ] [[${t}]] `
  }
  await app.vault.modify(p, s)
}else{
  p = await app.vault.create(f, s)
}
app.workspace.activeLeaf.openFile(p)
%>

不具合を修正しているので、このバージョンをお使いください。

使い方

連結したいファイルをフォルダにまとめます。 その中のファイルを開きPlaylistを実行してください。 するとplaylist.mdという名のフォルダ内リストが作成されます。

リストの順番は並べ替えて構いません。 ファイル名をタップすれば元のファイルが開きます。 そのファイルでPlaylistを実行すればplaylist.mdに戻ります。

チェックボックスをチェックし再度Playlistを実行すると、チェックされたファイルがマージされmerge.mdになります。 このmerge.mdをPDFにすれば一丁上がり。

新規作成

同じフォルダにファイルを作るときは、1行目のフォルダ名をタップしてください。 新規ファイルが開きます。

タイトルを書いてからPlaylistを実行するとplaylist.mdに追加されます。

並べ替え

チェックのないplaylist.mdでPlaylistを実行すると、並べ替えモードになります。

サイドパネルの「アウトライン」で項目をドラッグし、順番を入れ替えることができます。 階層構造をつけても大丈夫。

再度Playlistを実行すると元の状態に戻ります。

まとめ

PWMってコンセプトが今回の発見。 従来「コンポーザー」と呼んでたけど、これからはこっちを使おう。