トップ  [目次]  [前に進む]  [次に進む] 

初めてのRuby

新型コロナウイルスの感染拡大防止のために「ステイホーム」が言われる折、大阪暁会の練習も
2月末からできなくなり、その空いた時間をうまく活用するため、競技かるたレーティングランキング
システムを見直して、全面的なUTF-8化を行いました(スクリプト、入出力ファイル、作業ファイル)。
1998年にシステムを作成して競技かるたA級選手のランキングを公開して以来、その運用・保守を
行ってきましたが、今回私自身初めて Ruby を使って、システムをActivePerl環境からRuby環境に
移植しました。

システムを作っているのか壊しているのか分からない感じで移植が進んでいく中、名探偵コナンの
エンディング曲「少しづつ 少しづつ」のフレーズで自分を励ましながら、何とか自分の目標としていた
GW末にリリースすることができました(笑)

♪ 少しづつ 少しづつ 何かが変化していって
♪ あなたも周囲(まわり)も変わって
♪ 私の原因(せい)なのかって

今回移植してみて、「Rubyはいいね!」といわれることが、少し感動も感じながら実感できました。
従来は複数行で書いていたコードをRubyで1行で書いた時のコードのエレガントさ、そしてそれに
よって得られる全体のプログラムの流れの見通しのよさには感動しました。
この感覚は、35年くらい昔の学生時代に8bitマイコンが内蔵するBASICとPEEK&POKEで機械語を
使ったプログラミングもどきをしていた時に、初めてC言語を知った感動に匹敵します。

レーティングランキングも公開してからいつの間にか22年経っていたことに今更ながら気づきました。
時には立ち止まってみるのも悪くないですね。


----------
※補足
8bitマイコン8bit CPUのマイクロコンピュータ(今でいうパーソナルコンピュータ)
私は当時ハンドヘルドのNational JR-800を持っていましたが、学生寮の同室には
NEC PC-8801、SHARP MZ-80、EPSON HC-20、いろいろありました。
学校にはNEC PC-9801(16bit)、日立Basic Masterもありました。
(ちなみに各々のマイコン間にはソフトの互換性はない)
BASIC行番号で流れを示す、構造化プログラミングって何?という言語
PEEK&POKE機械語をメモリーに読み書きするためのBASICの命令
機械語CPUへの命令語の16進数の羅列で、マシン語ともいう。ハンド・アセンブルだった!


----------
※実装コードの例: 同姓同名の選手名リストの作成がたった2行です!
# 同姓同名の選手名リストを作成する
@@meibo.each { |a| @@dd_name.push a[MB_NAME]}
@@dd_name = @@dd_name.group_by{|i| i}.reject{|k,v| v.one?}.keys

参考: rubyで配列から重複する値を抽出する方法を探した際に見つけたgroup_byメソッドが便利だった


----------
※競技かるたレーティングランキングシステムの履歴
1998年3月 Windows95/mawk32で競技かるたレーティングランキングシステム作成
       かるたML「MIKA」でランキング公開
2000年3月 Windows98/JPerl for Win32(Perl5) に移植
       「みかきもりの本箱」のホームページでランキングTop200公開
2012年1月 Windows7/ActivePerl 5.14 に移植
2019年1月 Windows10/ActivePerl 5.26 に移植
2020年5月 Windows10/Ruby 2.7.1 に移植


■参考URL
Wikipedia Ruby
YouTube/SARD UNDERGROUND「少しづつ 少しづつ」MV
Uta-Net/少しづつ 少しづつ(SARD UNDERGROUND)

みかきもりの本箱/レーティングランキング
レーティングシステムの解説


トップ  [目次]  [前に進む]  [次に進む]