背景

このブログのトップページは、記事一覧が格好悪いと思っていました:

2026-03-14-article-cards-old.png
Figure 1: リスト表示

人のブログ を見ると、やはりカード風の表示が良いですね。

結果

カード表示

記事のカード表示を実装してみました。記事のタイトルが左寄せになったため、視認性が改善したと思います:

2026-03-14-article-cards-new.png
Figure 2: カード表示

タグがスペースを取り過ぎているため、まだ調整が必要かとは思います。

ライトテーマ

別件ですが、 OS の設定に応じて Simple.css のライトテーマが表示するように変更しました (ダークテーマの強制を解除しました):

2026-03-14-blog-light-theme.png
Figure 3: カード表示 (ライトテーマ)

Prism.js によるコードスタイルも、 light/dark 両対応にしました:

<link rel="stylesheet" id="prism-light" href="/style/prism-light.css" media="(prefers-color-scheme: light)">
<link rel="stylesheet" id="prism-dark" href="/style/prism-dark.css" media="(prefers-color-scheme: dark)">

またヘッダにテーマの切り替えボタンを設置しました。これは documentdata-theme 属性のトグルスイッチで、 data-theme 値に応じてダークテーマが有効化される CSS となっています:

:root[data-theme="dark"] {
  color-scheme: dark;
  /* dark theme setting here */
}

Prism.js については、上記 <link> タグの media 属性を動的に書き換えることで CSS ファイルを切り替えます。この動的なテーマの切り替えは Claude Code が実装しました。

まとめ

ブログのビルドスクリプトを更新しました。 Emacs Lisp の修正に乗り気になれなかったのですが、今回から記事の情報を plist として持つようにしたため、気軽に改造できるようになりました。

;; ある種オブジェクトのように扱えます
(plist-get article :title)
(plist-get article :date)

;; 今までは、何とタプルで頑張っていました (酷い!)