« NAS boxの障害の顛末 | トップページ | 紅葉はすでに終盤 »

2017/10/28

Refsort/Ruby 2.80 Released

辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13 *14 *15).もう仕様は落ち着いていて機能の追加をするつもりは(ほとんど)なく,細々とバグのメンテナンスを行っている状態です.

前回のリリースは約3か月前の2017年7月9日でしたが,このたび Refsort/Ruby の改訂版である v2.80 をリリースしました.

実は,今回の改訂は非常に難産でした.そもそも,Refsort の原型は今から10数年前に作成し,そこから機能を加えるごとにコードを建て増し建て増ししていったので,山あいの温泉旅館のように非常に見通しの悪いスクリプトになっていました.そこで1年ほど前から,自前のクラスやメソッドを定義してスクリプト全体をできる限りモジュール化し,さらに例外処理も Ruby の作法に則ったものに統一した新版を書き始めていたのです.

しかし,まず例外処理でつまづきました.モジュール化すると構造はきれいになるのですが,メソッドの階層を深く下ったところで例外を発生させると,それを最上層までもっていって,ファイルを閉じたり配列やハッシュをクリアしたりという後始末をしなければならないので,非常に煩雑でコードの量が増えてしまいます.仕方がないので,モジュール化の階層はできる限り浅くして,例外もできる限り最上層で発生させるようにしました.

次につまづいたのは実行速度です.格好よく自前のクラスを定義して,その中でインスタンス変数をたくさん定義し,それをメソッドで呼び出して使うのは快適なのですが,実行速度が大幅に落ちることがわかりました.Refsort はあくまでソーティング・フィルタなので,あまりトロトロと走らせるわけにもいきません.そこで,涙をのんで自前クラスは最小限にせざるを得ませんでした.そういうわけで,v2.80 は v2.70 に比べると速度が約 15% ほど低下しています.

一つだけ大幅に改良した点は,埋め込みマイルストーンの処理についてです.ここも過去のスクリプトでは温泉旅館の新別館のような扱いだったのですが,今回はマイルストーンのために自前のクラスを定義し,オブジェクトとして扱うことでコードの見通しを大幅に改善しました.

また従来は,出力時には出力候補のリスト全体をまず1回スキャンしてマイルストーンの階層構造を解析し,出力すべきマイルストーンを抜き出したうえで,2回目のスキャンでリストを出力するという2パス構造にしていたのですが,これが非常にわかりにくく,自分でも過去のコードをよく読めない事態に陥っていたので,これをゼロから書き直し,非常に素直な1パス構造に改めました.

仕様を1点だけ改訂しました.それはマイルストーンのコメントに関するもので,従来はマイルストーンのコメントは,それが番号付きやダブルコメント (##) でない限りは,そのまま出力していたのですが,今後は,マイルストーンのコメントは取り除いて出力することにしました.これは,マイルストーンにコメントが付いていると,リストがごちゃごちゃして見にくくなってしまうためです.

そういうわけで,今回の改訂はユーザにとっては非常に小さな変更でしかありませんが,内部的にはある程度手が加わり,将来の改良に向けた準備を進めた版であるとご理解いただければ幸いです.


さて,余談ですが,IOC の Web サイトに耳寄りな情報が掲載されました.以下引用です.

ANNOUNCEMENT (Oct 21, 2017): NO 7.4! Effective today, we are shifting to a semiannual revision schedule. Our next release will be 8.1 in January 2018, followed by 8.2 in late July or early August 2018. A step towards improved alignment with the Clements/eBird world list is one of the motivations for this change. We will continue to post working revisions regularly on the Updates web pages, so please keep up the flow of comments and corrections. Thank you!

従来の慣習に従えば,IOC List は四半期ごとに改訂されるので,前回7月末の改訂の後は10月末に v7.4 が出るはずでした.ところが,この版は出ません!なぜかというと,今後は年4回ではなく年2回の改訂頻度に改める,という方針変更を行ったそうです.従って,次の版は年が明けた2018年1月に v8.1 が出る,ということになります.

さらに,これは年初からアナウンスされていたことですが,代表的な鳥類分類体系の間で,それらを統合しようという機運が盛り上がってきており,それが2018年の IOC 総会の円卓会議で議論されるというのです.これにより,鳥類分類の世界に大きな変化が訪れることになりそうで,私自身は心配半分,期待半分といったところです.

さらに,余計な心配をさせていただくと,日本鳥学会がこの変化の波に置いていかれはしまいかと気を揉んでいます.前回の改訂からすでに5年が過ぎていますが,次の改訂に関して何のアナウンスもありません.世界の動きに対して,意見を言う,見識を示す,参画するという動きを示してほしいと思います.

|

« NAS boxの障害の顛末 | トップページ | 紅葉はすでに終盤 »

IT関連情報」カテゴリの記事

パソコン・インターネット」カテゴリの記事

自然」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/54612/65973367

この記事へのトラックバック一覧です: Refsort/Ruby 2.80 Released:

» 謹賀新年 2018 [望湖庵日記 Lakeside Diary]
皆様,明けましておめでとうございます.本年が皆様にとって良い年でありますように,お祈り申し上げます.例年通り昨年一年を振り返り,今年の展望について思うところを述べてみたいと思います. さて,昨年は私の家庭にとって波乱の年だったと言ってよいと思います. 熊本地震で被災した父を自宅に引き取ったことは昨年のこのご挨拶でお伝え... [続きを読む]

受信: 2018/01/01 08:17

» IOC List v8.1 Released [望湖庵日記 Lakeside Diary]
IOC World Bird List v8.1 が2018年1月25日にリリースされました.これは昨年秋に改訂周期が6か月に変更されて初めてのリリースです.前回 v7.3 のリリースが2017年7月31日だったので,今回は6か月弱の更新間隔を守ったリリースとなっています.このあたりの締め切りの守り方は過去から実に見事... [続きを読む]

受信: 2018/02/03 19:16

» Refsort/Ruby 2.90 Released [望湖庵日記 Lakeside Diary]
辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10.もう仕様は落ち着いていて機能の追加をするつもりは(ほとんど)なく,細々とバグのメンテナンスを行っている... [続きを読む]

受信: 2018/02/03 19:20

» Refsort/Ruby 2.91 Released [望湖庵日記 Lakeside Diary]
つい1週間ほど前に,辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby新版の v2.90 をリリースしたばかりなのですが(過去リリースは新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10),いろいろなケースで実行させてみると,バグとは言えないま... [続きを読む]

受信: 2018/02/12 11:25

» Refsort/Ruby 2.92 Released [望湖庵日記 Lakeside Diary]
2月12日に,辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby 新版の v2.91 をリリースし,数か月はこのまま落ち着かせるつもりだったのですが,(過去リリースは新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10),Ruby 本体が3月28... [続きを読む]

受信: 2018/03/31 13:20

« NAS boxの障害の顛末 | トップページ | 紅葉はすでに終盤 »