Lyndbaum v4.26アップデート

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で引いて手動で書き換えている ↩

Lyndbaum v4.22アップデート

adiary置き換え計画始動から連なる、Lyndbaum v4.20アップデートの続き。

バージョンが0.2上がった。今回はバグ修正と機能削除がメインで3,434行追加、15,841行削除と、追加の5倍くらい削除している。

バグ修正

「設定」→「基本設定」で画面幅を最低にしたときに要素が突き抜ける不具合の修正

v4.20でやった管理画面のごみ箱で画面幅を狭めると要素がボックスを貫通する不具合の修正の仲間。

投稿画面にあるフォントの色やサイズを変える記法を挿入する機能がMarkdownで機能していなかった問題を修正

MarkdownモードではSatsuki記法のガワである[::]のようなものを出すだけで、機能していなかったため、機能するようにした。

なお、この機能はこのサイトではこれまでに使っていないが、便利な気がしたので対応した。

<details><summary>の中でMarkdownが展開されない問題の対応

この中ではMarkdownが展開されず、単なる文字列として出てくる状態だったため、中にあるMarkdownを解釈できるようにした。

機能変更

管理画面にあったSatsuki2テーマの依存を解除

管理画面にはadiaryの表示基盤ともいえるSatsuki2テーマと深く結びついており、引きはがせない場所があった。

どうしようもないので管理画面用に切り離したSatsuki2テーマを残し、公開画面用のSatsuki2テーマを別に切り出した。

既存テーマのレスポンシブ対応

既存テーマのレスポンシブ対応を行い、SPモードの削除ができるようにした。

なお横長の画像によってレイアウトが完全に固定されているなど、レスポンシブ対応が単純にできないテーマはすべて削除した。

また3カラムテーマと2カラムテーマを切り替える機能は色々無理があったので個別にテーマを作って対処した。

既定のテーマをlyndbaum/lyndbaumに変更

一番便利に作ってあるため。ほかのテーマはレスポンシブ対応こそしたもののadiary自体の思想を引きずっているため、レスポンシブ対応したというだけで終わっている。

これもSatsuki2テーマをコア機能から引きはがしたからこそ、できた対応である。

System infoプラグインにシステム名とバージョンを出すようにした

今までずっとここにバージョン出てないのはおかしいと思っていたので…。

機能削除

SPモードの全廃

関連機能を消し去り、SPモードを全廃した。これだけでコードが13,000行ほど消えた。

3.50未満のアップデータの削除

3.52devからフォークしているため、それより前は過去として忘れることにした。

ユースケースがなさそうな記法とユースケースが思いつかない記法をバッサリ消した

v4.15時点でやった記法削除の続き対応として、Google検索やWikipediaリンクの記法と言った、それ事前に調べてリンク取ってくるからURLリンク貼ったら終わる米みたいな記法や、はてなダイアリー時代の記法、その他諸々を消した。TeXも私が動作確認できないので消した。

さつき記法の削除

Pukiwiki記法すら忘れられかけているのに、さつき記法は無理があろう…と言うことで、ほとんどの記法を削除した。目次や画像、動画などと言った一部の記法や、記法拡張機能は便利なので残してあるがMarkdownの拡張記法という位置づけになっており、最早さつき記法とは呼べない。

関連PR

V420 bugfix1 / V421 / V422

あとがき

なんか前にやることがなくなってきたとか書いた気がするが、インポート機能やエクスポート機能が機能削除の連続で破綻してきているなどで、整合が取れなくなってきている部分がある他、地味な対応が結構浮かんできているので、やりたいこと自体はだいぶ出てきている。

ただやっていくペースは落としていき、後はのんびりやっていきたい構えだ。実際今回も変更行数こそ多かったものの、v4.20同様に変更点そのものは減っている。

そういえば、本家からどの程度変わっているのか差分を確認すると、現時点で1,073ファイルの変更、25,550行の追加、43,212行の削除があるようだ。