24
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Perl 5Advent Calendar 2015

Day 23

青空文庫を支えるPerl言語

Last updated at Posted at 2015-12-23

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

フロント側も作ってみた

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

スクリーンショット 2015-12-24 4.09.18.png

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

スクリーンショット 2015-12-24 4.07.37.png

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

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

後世に物語を残そう

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


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

24
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?