Markdownを書いていて、文章構造をどう表すかに悩むことがそれなりにある。
説明するのも面倒なので具体例を挙げる。 これはGeminiとの過去のチャットから持ってきた。
- **TLC (Triple-Level Cell):** 一般的なノートPCや自作PCから、データセンターのサーバー用途まで、現在のストレージの主役です。初期は耐久性が懸念されていましたが、フラッシュメモリを垂直に重ねる「3D NAND技術」の成熟とコントローラーの進化により、かつてのMLCに匹敵する耐久性と速度を確保できるようになったため、市場をほぼ制覇しています。
- **QLC (Quad-Level Cell):** コンシューマー向けの安価な大容量SSDや、データセンターにおける「読み込みメイン(Read Intensive)」の用途で実用化が完了しています。書き込み寿命(TBW)が短く、連続書き込み時の速度低下が激しいという弱点はありますが、大容量データを保存する用途においてHDDを完全に置き換える存在としてシェアを伸ばしています。
- **SLCキャッシュ技術としての活用:** SLC自体はメインストレージから消えましたが、技術としては生き残っています。現在のTLC/QLC搭載SSDは、空き容量の一部を擬似的に「SLC(1セルあたり1ビット)」として高速に動作させ、書き込みバッファとして利用する「SLCキャッシュアルゴリズム」を実装することで、見かけ上のパフォーマンスを維持しています。
こういう文章はheadingとして分けるのも箇条書きとして書くのも微妙に感じて、あまりよい書き方を見つけられていなかった。
ちなみにClaudeはこういう書き方をよく使う。
**TLC (Triple-Level Cell):**
一般的なノートPCや自作PCから、データセンターのサーバー用途まで、現在のストレージの主役です。初期は耐久性が懸念されていましたが、フラッシュメモリを垂直に重ねる「3D NAND技術」の成熟とコントローラーの進化により、かつてのMLCに匹敵する耐久性と速度を確保できるようになったため、市場をほぼ制覇しています。
**QLC (Quad-Level Cell):**
コンシューマー向けの安価な大容量SSDや、データセンターにおける「読み込みメイン(Read Intensive)」の用途で実用化が完了しています。書き込み寿命(TBW)が短く、連続書き込み時の速度低下が激しいという弱点はありますが、大容量データを保存する用途においてHDDを完全に置き換える存在としてシェアを伸ばしています。
**SLCキャッシュ技術としての活用:**
SLC自体はメインストレージから消えましたが、技術としては生き残っています。現在のTLC/QLC搭載SSDは、空き容量の一部を擬似的に「SLC(1セルあたり1ビット)」として高速に動作させ、書き込みバッファとして利用する「SLCキャッシュアルゴリズム」を実装することで、見かけ上のパフォーマンスを維持しています。
見た目としてはこっちのほうが好きだが、意味論的にどうなのという気持ちにはなる。
description list
<dl>知ってますか?自分は知りませんでした。
当初はdefinition listという名前だったのが、HTML5でdescription listに変わったらしい。 definition listとは用語リストのことで、description listに変わったのはより幅広い用途を想定してのことだとAIは主張しているが、ちゃんと調べてはいない。
標準のMarkdownには存在しないので、多くの処理系では拡張機能などを用いる必要がある。一般的には以下の記法が使われている。
title
: description
このブログではこんな感じの見た目になるようにしている。
- TLC (Triple-Level Cell)
- 一般的なノートPCや自作PCから、データセンターのサーバー用途まで、現在のストレージの主役です。初期は耐久性が懸念されていましたが、フラッシュメモリを垂直に重ねる「3D NAND技術」の成熟とコントローラーの進化により、かつてのMLCに匹敵する耐久性と速度を確保できるようになったため、市場をほぼ制覇しています。
- QLC (Quad-Level Cell)
- コンシューマー向けの安価な大容量SSDや、データセンターにおける「読み込みメイン(Read Intensive)」の用途で実用化が完了しています。書き込み寿命(TBW)が短く、連続書き込み時の速度低下が激しいという弱点はありますが、大容量データを保存する用途においてHDDを完全に置き換える存在としてシェアを伸ばしています。
- SLCキャッシュ技術としての活用
- SLC自体はメインストレージから消えましたが、技術としては生き残っています。現在のTLC/QLC搭載SSDは、空き容量の一部を擬似的に「SLC(1セルあたり1ビット)」として高速に動作させ、書き込みバッファとして利用する「SLCキャッシュアルゴリズム」を実装することで、見かけ上のパフォーマンスを維持しています。
Obsidianでdescription listを使う
拡張機能で記法を導入する。
デフォルトでは用語リストっぽい見た目をしているのでCSSスニペットで調整する。 ライブプレビューとリーディングモードで構造が違うため、それぞれでCSSを書く必要がある。
上記の拡張機能だとそれぞれこんな感じだった。devtoolsで確認できる。
ライブプレビュー
<div class="dl-dt">...</div>
<div class="dl-dd-reg">...</div>
<div class="dl-dt">...</div>
<div class="dl-dd-reg">...</div>live_preview.html
リーディングモード
<dl>
<dt>...</dt>
<dd>...</dd>
</dl>
<dl>
<dt>...</dt>
<dd>...</dd>
</dl>reading.html
Quartzでdescription listを使う
remark用のdefinition listプラグインを利用した。
具体的なことはCodexが調査してやってくれたので、ログを貼り付けておく。
今回やったことは、Quartz に definition list を足すための local plugin を作り、その挙動を Obsidian 寄りに調整した、という内容です。最初に確認したのは、Quartz が
remark系のパイプラインで Markdown を処理していることでした。そのため、既存 parser を差し替えるのではなく、Quartz の transformer plugin としてremark-definition-listを差し込む方針にしました。 実装としては、repo 内に local path で読める最小構成の plugin を追加しました。plugin ではremark-definition-listを組み込み、definition list 用の独自ノードが最終的にdl/dt/ddとして HTML に変換されるよう補助を入れています。あわせて、Quartz の設定側にもこの local plugin を追加して、有効化しました。 その後、Obsidian に近い書き味に合わせるため、definition list の各項目の間に空行がなくても解釈できるよう調整しました。これは parser を大きくいじるのではなく、plugin の前処理でテキストを軽く正規化する方法を取りました。具体的には、「definition list 項目が連続している」と判断できる箇所にだけ空行を補ってから、既存のremark-definition-listに渡しています。これにより、1行記法までは広げずに、必要だった「項目間の空行不要」だけを実現しています。