青空文庫

(2025-04-18)

「青空文庫」というインターネット上の図書館があります。

著作者が亡くなって 50 年以上すると著作権が消失するため、その作品を公開することができます。

そこで、有志が集まってそういう著作権の切れた作品を電子化して誰でも閲覧できるようにしたのが「青空文庫」です。

私が「青空文庫」のことを知ったのは20年以上前ですが、おかげで芥川竜之介の作品はほとんど読むことができました。

当時は、テキストファイルをダウンロードして、それを word にコピペしてフォントを好きなような設定して pdf で印刷して読んでました。

最近になって、暇な時に読んでみようと思い、青空文庫からキンドル電子書籍のようなものはできないかと考えいろいろやってみたのですが、私のコンピュータの実力ではとても無理でした。

Vivliostyle

私が最初に考えたのは laravel でテキストファイルを処理して、JavaScript でいろいろページングをしようと思ったのですが、chatGPT と相談しながらやっても全然無理で、 しかし chatGPT がちょっと呟いたことがあって、興味を持って調べてみると Vivliostyle という素晴らしいものがありました。

Vivliostyle

このページにいろいろと書いてありますが、最初はさっぱりわかりません。

サンプルプロジェクトのダウンロード

まずはローカルで試す必要があると考え、 https://github.com/vivliostyle/vivliostyle.js/releases から、 vivliostyle-viewer-2.31.2.zip をダウンロード・解凍します。

サーバー起動

私の環境は linux mint 22 ですが、パスを移動して以下のようにしました。

bash ./start-webserver

そうするとサーバーが起動されてブラウザが自動的に表示されます。

デモを選ぶと

いい感じですが、ページ分割ができていません。

vivliostyle-viewer.html と関連ファイル

vivliostyle-viewer.html と関連ファイルが必要なようです。

https://vivliostyle.org/viewer/ にアクセスして、右クリックからデスクトップにページを保存します。

そうすると、ローカルに Vivliostyle Viewer.html と Vivliostyle Viewer_files というフォルダが作成されるので、これらをプロジェクトの viewer フォルダに配置します。

しかしマニュアルによると、https://vivliostyle.github.io/vivliostyle.js/viewer/vivliostyle-viewer.html#x=../samples/gon/index.html のようにアクセスするようなので、 Vivliostyle Viewer.html を vivliostyle-viewer.html に rename します。

そうすると、アドレスバーに「http://127.0.0.1:8000/viewer/vivliostyle-viewer.html#b=/samples/gon/index.html」とすれば、ゴン狐がページ分割して表示されます。

これは素晴らしいですね。これをやりたかったのです。私の能力ではこれは無理ですね。

文字化け

fontawesome-webfont.ttf というフォントがインストールされていないと、バーの文字が文字化けします。

https://github.com/FortAwesome/Font-Awesome/raw/v4.7.0/fonts/fontawesome-webfont.ttf からダウンロードした fontawesome-webfont.ttf をプロジェクトの fonts に入れれば文字化けは解消します。

青空文庫からダウンロード

芥川竜之介の「あばばばば」をダウンロードして確認します。

この中の XHTML ファイルをダウンロードします。

私は linux mint 22 なので文字化けしていますが、この html の最初の

<!--?xml version="1.0" encoding="Shift_JIS"?-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"><head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

を以下のように変更します。

<!DOCTYPE html>
<html lang="ja"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">

このようにすれば、ローカルで「あばばばば」をページ分割して閲覧できます。

ページの横に「ごん狐」とあるのは css の設定です。これは自動で作成するのは面倒なので非表示にすればいいと思います。

プロジェクトのデプロイ

私はレンタルサーバーを借りているので、ドメイン名を取得してそこへと scp でデプロイしました。

https://kunokatura-library.site/

やっつけ仕事で作ったので今のところ「あばばばば」しかありません。また、今ひとつセンスがありませんがそれはいずれ直します。

iPad ではやはり字が小さい

iPad で本を読むつもりで作ったのですが、iPad を横にした大きさではやはり文字がやや小さい気がします。縦に使えばいいかもしれません。

後は、スクレイピングなどで多くのファイルをダウンロードして、html を自動的に書き換えるプログラムを作成すれば、サーバー上に大きな図書室が作成できます。