雨ニモマケズnkfでひらがなカタカナ変換、ついでにrubyで縦書き

黒木華(くろきはる)の主演ドラマ『重版出来!』、面白いです。
主人公の黒沢心は、外見は柔道やってたようには全然見えないのですが、性格が体育会系で明るくて元気です。仕事のモチベーション上がります。第五話では、運を貯めるために、良い行いをする話があったのですが、私も見倣おうと玄関の掃除を始めました。さて、いつまで続くでしょうか。
その五話に出てきた宮沢賢治の詩、雨ニモマケズは、初めて読んだ時はカタカナばかりで、意味もなくカタカナばかり使って、なんて読みにくいんだろうと思ってました。日本は今でこそひらがなを使ってはいますが、昔はカタカナを使ってたんですね。
さて、カタカナが読みづらい時のために、カタカナひらがな変換をします。

雨ニモマケズの文章は、青空文庫さんからwgetします。
unzipがないときは、apt-get install unzipでインストールしておきます。

~$ wget http://www.aozora.gr.jp/cards/000081/files/45630_txt_23610.zip
~$ unzip 45630_txt_23610.zip 
~$ ls
45630_txt_23610.zip  amenimo_makezu.txt
~$ 
~$ nkf --guess amenimo_makezu.txt 
Shift_JIS (CRLF)
~$ 

内容を確認してみます。nkfは自動的に文字コードを判定してくれますので、ファイルをnkfへ読み込むだけでコンソールで読めるように変換してくれます。

~$ nkf < amenimo_makezu.txt | sed -n '12,20p'
雨ニモマケズ
風ニモマケズ
雪ニモ夏ノ暑サニモマケヌ
丈夫ナカラダヲモチ
慾ハナク
決シテ瞋ラズ
イツモシヅカニワラッテヰル
一日ニ玄米四合ト
味噌ト少シノ野菜ヲタベ
~$ 

次はひらがなへの変換です。

~$ nkf --hiragana < amenimo_makezu.txt | sed -n '12,20p'
雨にもまけず
風にもまけず
雪にも夏の暑さにもまけぬ
丈夫なからだをもち
慾はなく
決して瞋らず
いつもしづかにわらってゐる
一日に玄米四合と
味噌と少しの野菜をたべ
~$ 

上手くいきました。しかし、ひらがなの方を読んでみて分かりますが、やはりカタカナの方が良いです。 さらに欲を言えば縦書きが良いです。
ということで、縦書きに変換してみます。
rubyのtransposeを使います。配列を縦横変換してくれます。a.txtはすでにutf8に変換した雨ニモマケズです。空白はAAという文字列で作ってから、revコマンド後にスペース2個に戻しています。ものすごくトリッキーですが、行き当たりばったりのコマンドラインの味だと思ってください。

~$ ruby -e 'y=[]
STDIN.read.split(/\n/).each{|m|
        x = m.split(//)
        (38-x.length()).times{x.push("AA")}
        y.push(x)
}
y.transpose.each {|m| puts m.join() }
' < a.txt | rev | tr 'A' ' ' | head -16

rubyはさすが国産だけあって日本語処理が得意ですね。

amenimomakezu

One response to “雨ニモマケズnkfでひらがなカタカナ変換、ついでにrubyで縦書き

  1. Pingback: printerbannnerを左回転 | コマンドの達人

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA