今日は、チームラボで行われることになった、開発者向け講習会の第1回目でした。
今回のRuby講習会は3ヶ月スパンで行い、
最後はRuby on Railsでアプリが作れるようにするまで行うものです。
講師も、社内の人間があたります。
とりあえず議事録取ったので公開。
—————————
第1回 Ruby勉強会
講師:ラボ開発部 kさん・他1名
—————————
■各人の使用言語の確認
→チームラボではJavaが多い
■①PerlとRubyはよく似ている
・部分的に同じ言語もある
・移植も楽
では、Perlとの違いは?
→非常に読みにくいPerlに対し、可読性を重視
・行末にセミコロンが無く、改行のみ
・変数に$がいらない。 “hogehoge=”と書くだけで、hogehogeが
変数となる
・関数にカッコがいらない
→つまり、目がチカチカする記号が少ないので、
あとでソースが読みやすい
→Perlとして使ってもOK
■②Javaとの違い
Javaに対してRubyは
「コード量が四分の一なので、作業効率が4倍」と言われている
「Javaのコードの7割は自動生成可能」と言われていて、実践している人もいる。
(ラボでも熟練者は実施)
つまり、本当に書く価値があるコードは3割のみ。
Javaではデータを呼びだすBeanなどは、定義すれば自動生成できる
=だから、Javaがいい!ということでもある。
が、自動生成したコードでも、少しでも人間が手を入れたら、メンテの対象となる!
=つまり、各コードはやっぱり少ないほうがよい
例:Javaでは20行近くのコードが、Rubyでは3行まで縮められる!
質問:Rubyはコンパイルできるの?
→スクリプト言語であり、できません。
スピードが遅いというのはRubyの弱点の一つです。
ただし、年末にリリースされる新バージョンで、実行速度は5倍ぐらいに
あがるとされている
【Rubyの可読性・コードの短さについていくつかの例】
■ORマッパー(DBアクセス用のライブラリ。SQLを書かずとも、簡単にDBにアクセスできる)
を書く場合の違い
JavaではBeanを作るだけでなく、たくさんのXMLを書く必要がある。
また、修正するときにclassとxmlなど、複数の箇所を修正する必要がある
Ruby on railsのActiveRecordを使えば、ムチャクチャ短くできる
ActiveRecord側がDBを見に行って、classが自動修正される
自動修正は1回だけ、その後は同じ値が使われるため、スピードもそれほど犠牲にならない
■その他Rubyがエラい部分
・BigDecimalの扱いが柔軟
Javaではビッグデシマルは”+”が使えないなど、扱いが変わるが、Rubyではできる
・record.hoge=1 というような、シンプルなコードが書ける
setterが簡潔。
■無名関数が使える
Javaでソートを行う場合
DBの値にプログラムで何か値を変更し、その値を用いてソートする場合
Collections.sort() を使ってソートをする
ただし、ソートの基準はしらない。たとえば
Hoogに対してhoge,fuga,uguの3つのプロパティがある際に、どのプロパティを
ソートするかはわからない。
なので、
Collections.sort(hlist,Comparater)
のように、Comparaterというclass(ソートの基準となるclass)を作ることで、
ソートを行う
…など、書かねばならぬことが多い。
Rubyでは
array.sort { |a,b| a.hoge - b.hoge }
↑ここをブロックと呼び、無名関数である
という短いコードでソートができる
・Javascript,Actionscriptは、無名関数(その場で定義する関数)をよくつかう言語
■オープンクラス
”ほげ”,hoge()
equals()
のように、すでにあるclassに対して、拡張したものをclassにできる。
Javaでは拡張ができないため、Javaでよくある「classにちょっと修正したもの」というものを、
ゼロから書くのでなく、簡潔に書ける
classを新しく定義した場合、その場でどんどん書き換えられる
classを書き換えるための、便利なライブラリもいっぱいある
■③どんな人に向いている?
・学びやすいので、新しい人にオススメ!
・たくさんの言語のいいところをとりいれている。
・Javaは95年、Rubyは93年だが、Javaは設計はもっと古く、
機械よりの決め事が多すぎる→機械語に近いC(++)を参考にしたから。
↓
2007年から東大の「情報科学」のプログラミング言語はRuby
(文系も理系も習う基本の情報処理学科)
■④最近の流行は?
・IronRuby(マイクロソフト),JRuby(SUN)など、いろんな環境で動きつつある
・Twitterなど、Rubyで作られたイケてるサービスが増えてきた
・Ruby on railsの登場により、今後どんどん使う人・使う場面が増えてくると予想される
■その他
・和製言語なので、海外のギークに人気
・たいていのプログラマーに好評
・Pythonプログラマにだけは不評
・ダックタイプの推進(インターフェース不要のプログラミング)
→インターフェースなしのため出てくるエラーを、ユニットテストで保証
・Javaで停滞(新しい主流のフレームワークが出ない、など)している進化を、
Rubyが成し遂げるのでは?と言われている
(これは、Ruby on Railsの貢献が大きい)
質疑応答:
・Rubyと他の言語とのインターフェースはありますか?
可能。CでRubyは拡張できる。またJavaと連携するJRubyもある。
以下、参考資料の紹介
1時間版 PHPからRails
http://blog.masuidrive.jp/index.php/2007/10/27/php-to-rails-1h/
PHPユーザの為のRuby/Rails入門
http://blog.masuidrive.jp/index.php/2007/08/13/php-to-rails/
■Rubyを始めたい人
まずWindowsユーザにはActiveRubyがおすすめ
自由に使えるLinuxサーバがあるなら、そちらがおすすめ。
感想:
・プログラマー向けの説明が多かったので難しかった
・社内で流行っているので受けて見た。
話はわかったので面白かった
・オープンクラスはすごそうだけど、どうなの?
・**さんの説明は面白かった。nazoking先生の説明はわかりやすかった。