JavaEE教えてRails教える

高専でJavaEE、ある企業向けにRailsを講義してます。教える立場から感じる違いは、面白い対比だと思ったので、エントリ。Java vs. Rails の第?弾。

毎週木曜日

は、朝から高専でJavaEEの講義(5時間)のあと、夕方は企業向けにRailsの講義(3時間)をやってます。

一日中しゃべりっぱなしで、正直しんどいw
これまた正直に言って、JavaEEとRailsの技術的な比較なんて、不毛なことこの上ない(以前かいちゃったけど・・)ですが、教える立場として両者を比較してみると、面白い傾向がわかってきました。今日はそのレポートです。

対象者

高専の生徒は、Java(言語)を勉強しながら、JavaEE(フレームワーク)とその背景(システム開発とは!みたいな)も勉強していく感じ。
若いからパソコン慣れしてるし、キー打つのも早い。
 ※「若い」→「パソコン世代」の意。

企業の開発チームは、Ruby(言語)は教えずに、Rails(フレームワーク)の使い方だけを教えています。妙な講釈(システム開発とは!みたいな)はタレずに、ひたすら自社サービス実現のために必要なことだけに集中する感じ。SI企業ではないので、ITに精通しているわけではないし、高専生ほどパソコン慣れもしていません。

両者とも、プログラミング力は同等。とりあえずマネをしてもらって、そのあと応用してもらう、という進め方です。

モチベーションを比較してみると、高専は「授業」企業は「サービスの実現」。この違いは、貴殿が学生だった頃のことを思い出していただければ良ろしいかと・・。

とある結果

DBアクセスして、HTML-データ間をPOST/GETできるようになるまでに要した時間。おそらく、同程度の複雑性を持つWebアプリケーションが、完成して動くまでに要した時間です。

 高専-JavaEE: 5時間×5回
       (前年度のUML講義も加味すると+3時間×17回)

 企業-Rails  : 3時間×1回

その差は歴然です。Nayさん「改めてRubyを教えても元が取れる」との意見もうなずける。

さてさてではでは、
高専生にも、JavaEEではなく、Railsを教えるべきでしょうか?
逆に、この企業チームがJavaEEを採用するべきでしょうか?

私なりの結論

 両者は、学ぶ内容と勝負する土俵が違う。
 高専でRails、自社サービスでJavaEE、の組み合わせは難しい。
  (ありえない、とは言いません。)

 サービスをいち早く実現したい人がRailsを勉強するのは正解。
 ITプロを目指す人がJavaEEを勉強するのは正解。

私なりの理由

企業が自社サービスを実現したいときに重要なのは、コスト、突貫工事、経験則です。Railsの命名規約やDRY原則は、経験則を培うためにはとても効果的。
がんがんトライ&エラーができますから、想定しているサービスに少しずつでも近づいていくことができます。

ウルサイことを言えば、危険ではあります。

  User なのか、userなのか、@userなのか、usersなのか、
  user.nameなのか、user['name']なのか、user[:name]なのか・・・

現状の開発チームは、上のような内容をちゃんと分かってるわけではありません。でも厳密に理解できなくても、動くものは作れますよね。

高専生に対しては、「Userなのか・・・」のくだりは、厳密に教えなければなりません。社会にでて大金もらってヒトサマに納品するには、Railsを触って「できたできた!」だけではお話にならないからです。

  クラス なのか インスタンス なのか
  クラスメソッド なのか インスタンスメソッド なのか
  ハッシュ なのか 規約なのか そうじゃないのか...

企業チームに対しても、Rubyの厳密な理解を求めるべきでしょうか?難しい問題ですが、私はNOかも!と思います。思い描いてるサービスを実現できればいいし、問題があったら直せばいいわけですから(もちろん自己責任において)。

楽しいプログラミング

↑Rubyコミュの根本思想だと思いますが、この言葉は、プログラムを全うに(PerlなりCなりで)書ける人の言葉だと思っています。
※もちろん、「Rubyは楽しい」とは言ってるけど、「未経験者でも簡単に習得できる夢の言語だ」とは、誰も言ってません。

RubyないしRailsを、これから専門家を目指す学生に教えると、いろんなことが曖昧になってしまう予感がする。

Railsで楽しく作りはじめたとして、

  user.name = "takeda"

↑なんでこれが動かないの?とツマづいたとき、どう答えるのが正解?

  usersテーブルにnameを追加してください。

で済む場合と、そうでない場合がある。高専生には、もちろん、

  user.name=() が定義されていないから。
  イコールってのは実はアクセサメソッドなんだよ。
  アクセサってのはね、インスタンス変数を・・・
  インスタンス変数ってのはね、・・・

となってしまう。結局は、楽しくない世界へ入らざるをえないですよ。
だったら、最初からボトムアップで教えるべきなんだろう、
と思うんです。楽しく教えたいのはやまやまなんですけどね。
なかなかそうも行かないです。


コメント
koba
2007/07/26
確かに面白い対比でした。
やっぱ若い衆には、基礎(Cとか)から積み上げてほしいですね。
そのほうがより「楽しいプログラミング」を満喫できるんじゃないかと。
企業チームも「細けぇことはいいから、動くもん作っちまえ!」(こんなノリなんですか?イメージですど・・・)でいいんじゃないですかね。
勉強になりました。
武田ソフト
2007/07/26
Rubyから始めて、興味をもった人はLispやCやアセンブラに行く。別の方向性を持つ人は、また別の新しい言語を求めるのかも。
ミュージシャンに例えるとw、
新しい音楽を生み出すか、古典に戻るかすると思うのですが、ただの音楽好きなら、好きなのを聴くだけです。
そうゆう話と似てるかもしれませんねぇ。

コメントしてください

closed.