adiary置き換え計画始動から連なる、Lyndbaum v4.22アップデートの続き。これまで毎日のように更新していた気がするが二日も開いてしまった。それだけやることがなくなってきたということかもしれない。

今回は前回から0.4バージョン増え、52ファイルの変更と3,004行の追加、1,219行の削除があり、機能追加中心のアップデートだった。

バグ修正

基本設定→詳細設定のコメント設定で画面幅を狭めたときに中身がはみ出る不具合の修正

恒例のレスポンシブ画面崩れ。こういうのは見つけ次第直している。

GIFのサムネイル処理が1コマ目からサムネイルを作るのに全コマ読んでいた不具合を修正

1コマ目だけ読めばいいのに全コマ読み込むため、巨大なGIFを読み込んだ時にImageMagickのメモリ制限に引っかかってサムネイルが作られない問題があった。

なんであろうと1コマ目だけ読むことで回避するようにした。たぶん本家にもある不具合。

機能追加・変更

パスワード仕様の変更

パスワードに設定できる文字列の最低長を標準で8文字以上にし、ハッシュ化方式をbcryptに変更した。元々は4文字以上とSHA512だった。

マイグレーション処理の厄介さを減らす関係で、この変更だけでv4.23を構成しており、バージョン稼ぎになっている。

セキュリティ向上が目的だが、桁数を増やした以外はハッシュが漏洩しない限り影響ないし、漏洩した時点で割と終わってるので、ハッシュアルゴリズムを変えたことに深い意味はない。

この方式はLyndbaum0にあった実装であるため、Lyndbaum0機能バックポートの一環である。

サイト内の添付画像のテキストリンクをビューワーで開けるようにした

LightboxからFancyboxに変更して以来、長らくテキストリンクをポップアップするモーダル的なビューワで見ることができていなかったが、これをできるようにした。

理由としてサイト内のテキストリンクをLythumbで開けるようにしたで必要な機能だったため追加した。

テキスト画像リンク記法の追加

[image:T:...]記法を追加し、[image:T:posts/2026/11/:src.jpeg:JPEG元画像]のように書くことでテキストから添付画像へのリンクが作れるようにした。

この対応は前述の添付画像のテキストリンクをビューワーで開けるようにした対応に紐づく内容で、この構文で書くとJSのハンドラに登録されるようにしている。

またこの構文があることで添付ファイルに関連する変更があったときに出力するHTMLを一元的に変更できるのもある。

かつては[JPEG元画像](pub/attachments/posts/2026/11/src.jpeg)のように書いていたのだが、こういう書き方にしてしまうと添付ファイルかどうかを区別する処理が必要になったりして面倒で、今回のビューワー対応も載せづらいため、過去の記法はすべてテキスト画像リンク記法に置き換えた[1]。

RSSにサイト画像を載せるようにした

SSPにRSSを食わせていてMastodonのRSSを突っ込むとアイコンが出ることに気が付いたので、RSSにサイトの画像を載せた。

SSP上でLycologのRSS画像を表示しているところ

なんと、これによってSSPにうちのブログのRSSを食わせると画像が出るようになった。素晴らしい!

これは元々ヘッドラインセンサにLyndbaumを読ませようと試行錯誤していた時に気づいたのでやった対応だ。SSPはRSSを標準で読めるためヘッドラインセンサを作る必要はなかった。

またこの対応をしている中で、SSPが特定の<channel><link>を持つRSSのインストールに失敗する問題を発見したため報告したところ僅か半日で対応していただけた。この問題はインストールに失敗するだけで手組で設定ファイルを書けば読ませることはできた。

JPEG画像アップロード時に拡張XMP領域の一部を落とすようにした

画像フォーマット別のベンチマークをしてみたで言及している話だが、Androidスマホのカメラが吐いたJPEGの過半数は再編集用のデータでブログに表示するだけなら一切不要なのでアップロード時に落とすようにした。

この対応によってストレージの増加速度を抑えられ、閲覧者にも無駄な通信を発生させずに済むようになった。既にアップロード済みのJPEGからゴミを除去するツールも作ったのでストレージを開けることもできる。試したら700MBくらい空いた。

AVIFでサムネイルを作成する機能を追加

サムネイルのAVIF対応はv4.20で断念していたが、再検討し乗せることにした。

このために画像フォーマット別のベンチマークを行っている。またAVIFをより低負荷・低用量かつ画質維持させるための追加のベンチマークを行い、そのうえで設定値を決めて実装した。

過去のサムネイルをすべて再生成するツールも同時に作っている。AVIFとJPEGのサムネイルが混在している場合、AVIF>JPEGの順で採用するようにしてあるため、画像のサムネイルがAVIFのみ、AVIFとJPEG、JPEGのみでもサムネイルを出せるようにしている。これによりサムネイルの状態が中途半端になっていても表示できるように対応できている。

この対応でサムネイルの容量が従来比で35%ほど減っており、画面ロード時の通信容量削減に貢献するようになったと考えている。また、PNGファイルのサムネイルについては従前より画質が大幅に向上している。これはJPEGノイズがなくなったためである。その代わり若干のっぺりしている。私はJPEGノイズがサムネイルに出るのがちょっとした不満だったので、これは改善だといえる。

今回の対応でサムネイルファイルの総容量がどれだけ減ったか見たかったのだが、サムネイルサイズが混在しており、今回のバッチ変換によって全部同一サイズに揃ったため、増減については比較できなかった。それでも一応結果だけ書いておくと74.5MBが71.8MBに減っている。240pxが6割ほどあり、これが320pxに増えている。しかしそれでも総容量が減っているというのはすごいと思う。AVIFさまさまである。

アイキャッチ画像を未設定にできるようにした

現在の実装では記事の中に画像があれば、その中で最初の画像が自動的にアイキャッチにされるのだが、コードフェンスやコードスパンの中に紛れていても設定される状態だった。

これは不具合に近い挙動だが、そうでなくとも不本意にアイキャッチが設定されることもあると思うので、編集画面にアイキャッチを未設定にする機能を足した。

取り敢えずアイキャッチ自動設定の振る舞いについてはバグとして起票しておいたが、今のところ手抜き実装が起因で、実装時から分かっていたので既知の不具合ではある。

機能削除

Windowsサポートの廃止

パスワード仕様を変更した関係で、Windowsのサポートが出来なくなったため切り捨てた。

WindowsとLinuxには差がありすぎてサポートしたくないのもあった。Node.jsやPHPみたいに言語側に便利なラッパーがあればまだいいが、Perlにそんなものはないので…。

それに今はWindowsでもWSLを使えばLinuxが動かせるため、LyndbaumがネイティブでWindows対応をする必要はないと考えている。

Markdownの参照形式のリンク記法を削除

[文字][id]形式の記法を削除した。理由は私が使っていないこと、使っている文章をほとんど見たことがないこと、脚注や同じリンクを何度も書けばいいこと、ブログの記事に同じリンクが何度も出てくることが考えづらいことなど、要するに必要性が不明なため。

Markdownの文法をすべてサポートしてたら大変なので余計なものは気づいたら消していく方針。

2つ目のRSS配信を削除

adiaryには「2つ目のRSS配信」という機能があり、メインのRSSと別に任意のタグのRSSを出す機能があったが、これを削除した。

特定カテゴリのRSSを出したいケースが分からないし、使っているサイトを見たことがないし、私も使っていないため。

あとがき

v4.25になり、優先度高めのやりたいことリストはすべて消化しきれたのでしばらくは落ち着いていられそうだ(ホンマか?)

少なくともadiaryに持っていた不満の多くを解消することができ、非常に使い勝手のいいCMSにできたと思う。これからも何かあればちょいちょい直していきたいし、今後のやりたいことリストはGitHubリポジトリのIssueに挙げておいたので、またそのうち、いつかやりたい。いつやるかは不明だが…w

そういえばマイナーバージョンが2桁しかないため、99まで行くと次はメジャーを上げないといけないことに気が付いたが、まぁその時までには何とかなるだろう。v5.00までに配布できるレベルまで引き上げるのが目標だ。まぁ4.8001みたいにすることはできるはずなので、最悪桁を増やせば問題ないだろう。

Claudeの使用量も火曜の終わり時点でMax x5が12%なので、Pro換算60%ということで落ち着いてきたように思う。次回の更新ではProに戻しても大丈夫だろう、きっと。


  1. マイグレーションとかは作ってないのでgrepで引いて手動で書き換えている ↩