先日、EV3をRubyで制御する方法について少し学習したのですが、ev3dev_ruby gemを使うとRubyを使ってEV3を制御できるので面白いですね。一通りサンプルファイルを読み終えたので、gemファイルがどのように作られているのか興味があったので調べてみました。
ソースファイルを読むと、いろいろと参考になり自分のスキルアップに役立つことが多いですが、一番、面白いなと思ったのは、「ev3dev_ruby/device.rb at master · quake/ev3dev_ruby」でしょうか。method_missingメソッドの使い方が参考になりました。
method_missingメソッドがどうやって呼ばれているのか確かめてみようと作ったのが以下です。Rubyのオープンクラスという特徴はこんなときにいいですね。オリジナルのgemファイルを書き換えることなく試すことができます。
IO.read、IO.writeについてよく分からなかったので、13行目と16行目のような意味なんじゃないかなと思って書き換えてみました。書き換え前と同じように動作していることから、デバイスファイルに対して読み書きを行なっているということが分かりました。Linuxの特徴をうまく利用しているということですよね。