「実際に試してみると言うこと」


 テストデータをデータベース(Oracle)に入れるという処理を書いていた。
 仕様は非常に単純で、テキストファイルに書かれているデータを、順次データベースに
INSERTしていく。普段からJavaで処理を書いているから、Javaであれば30分もあれば書ける処理。

 次に、まったく同じ処理を、最近勉強しているRubyで書いてみようと思った。そこでハマッた。Javaとまったく同じ処理を書くのに数時間も使ってしまった。
 以下悩んだこと。

  • RubyからOracleってどうやってアクセスするんだ?
  • JavaのPreparedStatementに相当する処理って、どうやって書くのだ?
  • Rubyの文法とか書き方、例外時の扱いなども気になる。


 Javaであれば、どのように処理を書けば、どのように動くかが自分の頭の中で想像できるので、非常にスッキリ行ける。ところが、Rubyの場合には、Rubyで処理を考え、Rubyで処理を書くというのが、Javaで考えて書くほどのレベルに達していないので、もの凄いストレスが溜まる。
 エラーが起きても、何故エラーが起きているのか分からず、原因の特定に凄く時間が掛かる。


 今回の処理は、すでにJavaで書いていたのだから、Rubyで書く必要が無かったと言えば確かにそうです。しかし、書く意味が無かったというとそうではない。Rubyで実際に処理を書いてみて、今回の処理はRubyなどスクリプト言語で書くのがもっとも適していると思ったからだ。
 ファイルの読込、DBのアクセス、必要最低限の例外処理。これらは、今回のテストデータを単純に登録するという目的から考えると、Javaでは明らかに重すぎる。こういう場合は、やはりスクリプト言語がもっとも適していると強く感じた。


 今回の場合、慣れていないせいもあって数時間も使ってしまったが、慣れていればおそらくJavaで書くのと同じか、それ以上の速さで、Javaよりもスッキリしたコードを書けていたはず


 また、今回実際にJavaで書いたものを、Rubyにしてみて思ったことは、Rubyに関する概要を理解しているだけでは、まともに動く処理は書けないという、当たり前の事実。
 プログラムというのは厳密なもので、ちょっと文法から外れたりすると、まともに動作しません。
 普通の人間が読む文章であれば、多少誤字脱字があっても読み手側で補完してくれますが、プログラムの場合そんな気の利いたことはしてくれません。でも、だからこそ実際に自分で処理を書くというのが重要になってくるのだと思う。
 実際に書いてみると、いろいろ見えてくるものがあります。そして、それはRubyの本を読んでいるだけでは、決して分からないことなんだと思います。
 自分の思うとおりに書けないイライラはかなりのものでしたが、そこから得たものは決して小さくなかった。