わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

KanjiSorterをリリース

今月14日に,kanji-sorter.rbをリリースしました.GitHub - takehiko/KanjiSorter: Kanji Sorterより参照・取得できます.これは,入力に含まれている漢字を,小学校で学習する学年(または配当外)に振り分けるRubyスクリプトです.
実行例を示します.

$ cat README.md
KanjiSorter
===========

引数の文字列、または引数で指定されたファイルに対して、
含まれている漢字を、小学校で学習する学年(および配当外)に振り分け、
その出現回数を出力します。

以前に[漢字チェッカー](http://d.hatena.ne.jp/takehikom/20110303/1299099469)([gist](https://gist.github.com/851715))を公開していました。
このファイルをベースに修正を重ね、kanji-sorter.rbとしてリリースしました。

$ ruby kanji-sorter.rb -i README.md
1年(9種14字): 学学学校字字字出出小正年文力
2年(8種11字): 引引回外公数数数前当分
3年(9種10字): 開漢漢指習重対定配列
4年(1種1字): 以
5年(2種2字): 現修
6年(0種0字):
配当外(2種2字): 含振

READMEに書いたとおり,漢字チェッカーの発展版です.入力は,デフォルトではコマンドライン引数から獲得しますが,-iオプションをつけていればファイルを読み出します.文字コードUTF-8限定,Rubyは1.8/1.9両対応なのは,これまでと同じです.
ところで個人的には,これが,RSpecを取り入れた初めてのRubyプログラミングとなります.もとあるプログラムを書き換えながら,RSpecのコードを書いていったので,behaviour driven development (BDD)ではありませんが.
RSpecの自習にあたり,以下のページを起点に,多くのことを学びました.

RSpecの入門であまり触れられていないけれど,自分で書く中で理解したのを2件,書き残しておきます.

  • テストしたいrbファイルと別のディレクトリに,RSpecのファイルを置くときは,
    • rspecというディレクトリを設置し,そこに,任意の名前_spec.rb という名前でファイルを作ります.
    • 任意の名前_spec.rbの先頭に,「require "rubygems"」「require "rspec"」そして「require "テストしたいrbファイル"」を書きます.*1
    • そしてテストは,「rspec rspec/任意の名前_spec.rb」として実行します.
  • RSpecスクリプトの中で,自分自身のファイル名(文字列)を得るには,__FILE__ と書きます.

*1:任意の名前_spec.rb からすると,テストしたいrbファイルは親ディレクトリにあるのですが,ディレクトリを移動させてからrspecを実行するの(が慣習)ではないというのを知るのに,ずいぶんと時間がかかりました.