RubyKaigi 2011

先週の3連休にRubyKaigi2011に参加してきました。
毎年、英語力のなさを痛感させられます。もっと英語ができれば、いろいろなものが見えるようになるのかもしれないのに、残念です。

さて、私にとってもっとも印象に残ったのは、ACの人の発表でした。会社としてどう取り組んでいるか?という話ではなく、発表者の人が孤軍奮闘している様子を語る発表でした。会社で勉強会を作り、ツールを作って、仕事でも少しずつ使い始める。でも、Ruby(Rails)をメインとした開発まではそう簡単にいきませんでした。「言い訳できない失敗要素を抱えたくない」から、あえて変わった言語、すなわちRubyを採用する必然性がないからです。Rubyが持つコミュニティの力をビジネスに還元し、その楽しさを広めていきたいのですが、それは、とても難しいことです。その一つの回答として、変化が大きい部門たとえばSFAを使うような営業部門からなら変えていくことができるのでは?と提案していました。

私はRubyにそこまでの思い入れがありません。同じような仕事をしていますが、Rubyはメインの言語と言うよりは、私には道具として、ちょっとしたことに使える言語というイメージです。ぱぱっと書いて、はい終わり。みたいな。
もちろん、メインの言語としてのポテンシャルを持っていると思います。オブジェクト指向なのはその一つの証左でもあります。でも、あまりそれにはこだわりはありません。言語自体はお客様にとってはあまり重要なことではないからです。低いコストで短い期間でできれば、越したことはありませんが、なかなかそれを言語の性質に持って行くことは困難です。
JavaJavaでいいところがあります。静的型付け言語はコンパイルでいろいろなチェックをしてくれます。柔軟性にはRubyの足元にも及びませんが、逆に堅牢さのために柔軟さをあえて捨てているともいえます。そもそもビジネスの世界とくに基幹系システムでは、柔軟性よりも堅牢さを重視すると思います。型ががっちり決められて、中身はまったくあずかりしらない。コールだけすればいい。変更は絶対に許さない。そういう考え方ですね。ようは、変なことができないようになっている(はず)。一方、Rubyはいろいろ変なことができます。それが楽しいのですが。

ところが、Javaはそのプログラマが多いにもかかわらず、レベル差が激しく、はっきりいえば、動くものは作れます位のレベルの人も多くて、なかなか信用できません。やたらとstaticな変数やメソッドが多く、一つのクラスが巨大化しているようなシステムがきっと山のようにあるのでしょう。それでも動いていることには違いないのだし、上流工程のコンサル様(私も端くれですが)はたぶんその違いを認識することはできないでしょうから、まあ大きな問題はないかもしれません。そして、それを使うお客様も。変なことはできなさそうなJavaですが、変なことはいくらでもできるということです。

じゃあ、Rubyをそういう人たちに開放してしまうとどうなるか?私は意外といいかもともおもいます。プリミティブな型とかを意識しなくてもいいし、そもそもクラスを使う必要もない。だとすれば、まだましかと思います。
つまり、Javaは難しすぎると言うことです。Rubyは易しいように、見えます。すくなくとも言語を学ぶ時間がとれない人にはいい言語かもしれません。とすると、お客様の中にいる人たち、とくに情報システム部門の人たちにもいい言語のはずです。そういう人たちが声を上げてくれば、一気にそういうメインストリームの言語になるかもしれません。

また、Rubyがいいところの一つは、DSLが書きやすいと言うことです。つまり、そういう人たちのためのDSLを構築してあげるのはどうでしょう。たとえばレポート処理とか、たとえばデータベースへの問い合わせとか、たとえばシステムの監査に関する問い合わせツールとか。
JavaC#、さらにはVBAは難しすぎます。それらは汎用性を持った言語だから仕方ありません。そこで、Ruby+Win32OLEでExcelのレポートを作るような言語がきっと喜ばれるはずです。

そういうことを考えながら、発表を聞いていました。発表者の闇Rubykaigiの暴走を見て、エールを送りたくなりました。そして、こんなKaigiが続けば、こういうことをすこし発表したくなりました。

そう。もうひとつ、同じような感じでアジャイル開発にも言いたいことがあります。でも、まだもう少しアジャイル開発を学んでから言うことにしましょう。