青空文庫の .txt を HTML に変換する最短手順

Share

青空文庫 で配布されている .txt ファイルを HTML に変換したい、という用途向けの手順。Rust の知識は要らない。コマンド 1 行で済む。

1. CLI バイナリを取ってくる

aozora の Releases ページ から自分の OS 向けのアーカイブを落とす。

OS アーカイブ名
Linux x86_64 aozora-vX.Y.Z-x86_64-unknown-linux-gnu.tar.gz
macOS arm64 aozora-vX.Y.Z-aarch64-apple-darwin.tar.gz
Windows x86_64 aozora-vX.Y.Z-x86_64-pc-windows-msvc.zip

SHA256SUMS も同梱されているので、必要なら shasum -a 256 -c SHA256SUMS で検証できる。

展開すると aozora (Windows なら aozora.exe) というバイナリが出てくる。これを PATH の通った場所に置くか、その場で実行する。

2. 変換する

青空文庫の .txt は Shift_JIS なので、-E sjis を付ける (これを付けないと UTF-8 として読まれて文字化けする)。

aozora render -E sjis kokoro.txt > kokoro.html

これで kokoro.html ができる。標準出力に流すので、ファイル名は自由に決められる。

ファイルの代わりに標準入力から流すこともできる。

cat kokoro.txt | aozora render -E sjis - > kokoro.html

事前に書式が正しいか確かめたい場合は check サブコマンドを使う (HTML は出力されず、警告だけが表示される)。

aozora check -E sjis kokoro.txt

3. 出てくる HTML

入力:

|青梅《おうめ》の山に、[#「ふと」に傍点]気が向いた。

出力 (抜粋):

<p>
  <ruby>青梅<rt>おうめ</rt></ruby>の山に、<em class="bouten">ふと</em>気が向いた。
</p>

ルビは HTML5 の <ruby> <rt> 要素に、傍点は class="bouten" 付きの <em> に変換される。CSS でブラウザ表示を整える場合は .bouten { text-emphasis: filled; } のような指定で点を出せる。

縦中横や字下げコンテナ、外字も同様にセマンティックなマークアップに対応している。詳細は handbook の Notation 章 に各記法の入出力例が並んでいる。

4. データの取得元と注意

青空文庫の .txt ファイルは 作品リスト からダウンロードできる。各作品ページに「テキストファイル(ルビあり)」のリンクがあって、その zip を解凍すると .txt が出てくる。

  • 公開されているのは 著作権切れ (パブリックドメイン) の作品のみ。再配布も自由
  • 一部「公開中の作家による寄贈作品」は別ライセンスがあるので作品ページの注記を確認すること
  • 青空文庫のテキストには「底本情報」のヘッダ・フッタが付いている。aozora はそれを通常の本文として処理するので、必要なら手で削るか、独自の前処理を挟む

関連プロジェクト

  • P4suta/aozora-tools — 編集者向け: フォーマッタ、LSP サーバ、tree-sitter 文法、VS Code 拡張
  • P4suta/afm — Markdown と青空文庫記法を混在させて書きたい場合のパーサ

aozora の handbook 全体: https://p4suta.github.io/aozora/

Read more

青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu

イケイケなWinスクショアプリを作りました

パソコンのスクショってなんというか、地味というか、撮ってそのままだと何とものっぺりしていますよね。 特にWindowsだとMacっぽい丸っこい感じとかもなく、無骨だなあと。 ということで、それっぽくおしゃれな背景や角丸を付けておしゃれに撮影をしてくれるスクショアプリを作りました。 GitHubで公開しています。 GitHub - P4suta/Snaply: Snaply — a modern, clean-architecture Windows screenshot tool (WinUI 3 / .NET 10)Snaply — a modern, clean-architecture Windows screenshot tool (WinUI 3 / .NET 10) - P4suta/SnaplyGitHubP4suta ウィンドウ・領域選択・スクリーンのキャプチャができます。 タッチスクリーンなどにも対応しているはずです。 撮影をすると、クリップボードにコピーされ、フォルダーへの保存もされます。

By Sakashita Yasunobu
Find My Files

Find My Files

Windowsにおける爆速ファイル検索アプリの定番といえば、Everythingです。 voidtoolswebhost2 その高速さの理由は、NTFSの仕組みをうまく活用していることにあります。Windowsで一般的に使われているNTFSには、ファイル情報を管理するマスターファイルテーブル(MFT)と、ファイルシステムの変更履歴を記録するUSN Journalがあります。Everythingはこれらを利用することで、初回に高速にファイル一覧を構築し、その後はUSN Journalを監視してリアルタイムにインデックスを更新しています。そのため、数百万ファイル規模の環境でも非常に高速な検索を実現しています。 もちろん、単純にファイル名やパスを保持するだけでは、大量のメモリを消費してしまいます。また、数百万件ものファイルから一瞬で目的のものを見つけるためには、メモリ効率の高いデータ構造や高速な検索アルゴリズムなど、さまざまな工夫が必要になります。 このように、Everythingは見た目こそシンプルですが、中身はかなり高度なことをやっているソフトウェアです。 なお、Everyth

By Sakashita Yasunobu