Edited at
Perl 5Day 23

青空文庫を支えるPerl言語

More than 3 years have passed since last update.

物語を楽しめて、未来の悩める誰かの助けになれるかもしれない、ということに心を惹かれて「青空シャッカソン #2 〜青空文庫の入力ハッカソン〜」に行ってきました。

ややあって、@takahashim さん曰く


先日のシャッソンで入力作業をやってみて、青空文庫の入力作業には、

が超便利だというのが分かりました。そしてこれらのツールを使いやすくすると幸せになれそうなので、そのためのプロジェクトを作りたいです。


  • とりあえず一枚板CGIじゃなくてライブラリ化する

  • とはいえPerlは苦手なのでRubyかJavaScriptに書き換えた方が良さそう(別にPythonとかでもよいです)


    • JSは文字コード周りがどこまでできるのかがちょっと不安




Perlのまま書き換えたほうが早いかと思い、私が引き受ることにしました。


だが、ソースコードが古い!

最終更新年は、「チェッカー君」が2001年で「校閲君」が2008年。随分とPerl言語が青空文庫とその工作員(入力や校正に携わる方々)を支えていたのだと知って驚きました。文字コードは Shift_JIS や EUC-JP で jcode.pl が同梱されているという歴史を感じさせる構成だったので UTF-8 + Encode.pm で書き換えました。


秘伝のタレをYAMLで外部ファイルへ

文字チェック周りのハッシュを YAML::Tiny を使って外部ファイルに移動させ、エンジニアでない方でも変更しやすくしました。@tadsan さんが秘伝のタレと形容されていたので、hiden_no_tare.yml というファイル名になりました。😅


data-* 属性を利用してタグ付け

Webアプリケーションから利用することが大半になると考え、JavaScriptから簡単に扱えるように data-* 属性でタグ付けされたHTMLを出力できるようにしました。

そんなこんなで、無事にCPANモジュール「AozoraBunko::Checkerkun」になりました。


フロント側も作ってみた

以下のように、テキストエリアにチェックしたいテキストを貼り付けて「チェックする」ボタンを押すと…

以下の画像のように、怪しいところに赤丸でチェックが入り、各赤丸にマウスオーバーかクリックするとメッセージがポップアップされます。

@hakatashi さんによると「この2015年、ブラウザ上で縦書きを実装するのに大袈裟なハックは必要ない」とのことですので、私も縦書きに挑戦してみました。

文字チェック時のオプションの詳しい説明は、新しいチェッカー君のフッターのリンク先のページに大体書いてあります。(Perlの話から逸れるので割愛します。)


後世に物語を残そう

青空文庫はあなたの協力を歓迎します。技術面で支えることに興味がある方は GitHubのページを参照して Slack に参加してみてはいかがでしょうか。


明日は @mihyaeru21 さんの「ハッシュ周りの簡単なtips」の予定です!