物語を楽しめて、未来の悩める誰かの助けになれるかもしれない、ということに心を惹かれて「青空シャッカソン #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」の予定です!