昨年、一昨年と新人にRuby言語とRuby on Railsを教えました。偶然にもどちらの会社ともにRuby on Railsのプログラマーを育てるのが主目的ではなく、Webアプリケーションやソフトウェア開発の入門としてRuby言語やRuby on Railsを選んでいたのです。
それぞれの会社がどうしてRubyやRuby on Railsを選んだのかは違う理由があると思いますが、実際に教育を行う側として Ruby, Ruby on Rails を教える事に付いて書きたいと思います。
写真は ”http://www.flickr.com/photos/kaplaninternational/3659783179/ から
Rubyを教えるメリット
Rubyはオブジェクト指向言語である
最近はオブジェクト指向は当たり前になりつつあります、もちろんオブジェクト指向でさえあれば全てはバラ色という事では無いことも一般化してきました。しかし、依然としてオブジェクト指向は現在のソフトウェア設計・プログラミングでは重要な要素です。
ご存じのように、Rubyは全てがオブジェクトでJavaのようにプリミティブの存在を考えなくて良いのは、教育上望ましいです。
Rubyは簡単に実行できる
Hello world を表示するだけの簡単なプログラムを作るのに、public や static などの謎の呪文を最初から見せなくても良いのはたすかります。また重いEclipse を立ち上げたりしなくてすむのも良いですね、さらなに irb があるのでメソッドの動作確認などは サクサクと出来るのは教わる側も教える側も楽々です。
Ruby言語は日本人が作った
Rubyは日本人が設計・実装したソフトウェアでありながら世界中で使われています。しかも設計者の まつもとさん(以下Matz) は精力的に講演などを行っており、簡単に合うことの出来る有名言語設計者です。そして唯一、日本語で質問が出来る 有名言語設計者です!
Rubyには Matzの考えや美学が色濃く反映されています。百聞は一見にしかずです、その Matz に気軽にあえ、気軽に話ができる事はRubyの大きなメリットだと私は思っています。
Ruby on Railsを教えるメリット
Railsは案外オーソドックスに出来ている
Ruby on Railsはある日突然出てきたイメージがあるかもしれません。しかしRailsを作った David Heinemeier Hansson(DHH)はイケメンなだけでなく賢い人です、彼はRails以前にあったオブジェクト指向やその周辺から生まれた技術や考え方を集約してRuby on Railsを作りました。
したがって設計はきわめてオブジェクト指向的であったり、コントローラー周りなどはつまらないくらい古典的であったりします。ただし、Rubyが持っているパワー(魔術)をふんだんに使い、Webアプリに必要なものを全てまとめた事で、全く新しいフレームワークとして登場したのです。
Railsは入門者に優しい
ご存じのようにRuby on Railsにはジェネレータとい定型的なコードを自動生成してくれる機能があり、初心者でも取りあえず動くコードを簡単に手にいれられます。また、規約重視(Convention Over Configuration)なので、ルールに則って作って行けば良いのは、新人に取っては100%の自由が与えられるより、はるかにコードが書きやすいと思います。
これらは、教える側にも言えるメリットです、そして簡潔に書けるRuby言語と相まって短いコードで機能が実現出来るのは、コードを読み評価する講師にも有り難いことです。
RSpecなどのテスト環境が充実している
ソフトウェア開発界一般でも、テスト駆動開発やユニットテストの重要性は徐々に広まって来ているようですが、 Ruby on Railsの世界ではテストを書く文化がたいへん浸透していると思います。 そしてRSpecのような良いツールも使えるので テスト駆動開発を教えるのは Ruby言語や Ruby on Railsが一番ではないでしょうか。
英語の勉強になる?
Ruby on Rails のリファレンスマニュアルは英語しかありません、また有用な情報も圧倒的に英語ばかりです。また、Railsの規約ではモデルは単数形で対応するテーブル名は複数形にするなどの規約があり、いやでも英語の単数複数に付き合わされます。したがって、英語力アップにつながります ^^;
これはデメリットとと取れるかもしれませんが、今やソフトウェアエンジニアは英語が使えるのは必須になっています。その事を実感できる良い機会だと思います。
デメリットは?
なし! と書きたいですが、やはりあります。
ドキュメントが初心者向きではない
上にRuby on Rails のリファレンスマニュアルは英語だけだと書きましたが、Ruby言語のリファレンスドキュメントは日本語です。しかも有志の方により Rubyリファレンスマニュアル刷新計画 が進行中でリファレンスマニュアルが改良されています。
しかし、このリファレンスマニュアルは厳密性や統一性を重視しているために Ruby初心者には戸惑う部分が少なくありません。
例えばマニュアル内では、一般的な「クラスメソッド」ではなく「特異メソッド」で統一されています。この点に関しては、初心者向けのドキュメントを我々が準備するか、または教育の内容をドキュメントに合わせて行くかなのかなと思います。
Ruby on Rails を教える事の出来る人材が少ない
Ruby言語はアップデートも比較的ゆるやかですし、ルビー検定などもあり教育できる方はそこそこの数いるのではないかと思います。
しかし、Ruby on Rails はアップデートが速く、最新のバージョンがちゃんと教えられる人は少ないのではないかと思います。日本語の書籍も改版に半年近くかかるので最新バージョンになっている本は少ないと思います。開発者ではない、教育専門の方がRuby on Rails のアップデートに対応して行くのは大変かな?と思います。