@kyanny's blog

My life. Opinions are my own.

http://scala-users.org/shibuya/index.php?title=%E5%8B%89%E5%BC%B7%E4%BC%9A%E7%AC%AC26%E5%9B%9Eに参加してきた。 Scala/Lift 版の Heroku を作るというプレゼンで、それは面白いというかすごいなと思ったのだけど、すごく実践的というか実戦的というかもろに応用な話題だったので、基礎がまるでなってないいまのおれにはレベルが高すぎてまったくついていけなかった。すいません、 Lift でウェブアプリ書いてから出直します・・・。

「Java の経験がないと Scala を学ぶのは厳しいのか?」という質問をしたところ、「そんなことはない、自由に書けるので Perl の経験があれば同じように書けるのではないか、 Ruby から Scala へはいってきたひとも少ないない」という回答をもらった。しかしいまのおれには Scala と Perl に似たところがあるとはまったく思えない・・・。

あと、やっぱりエンタープライズはなんちゃってウェブプログラマと違ってヌルくないんだなーと思ったのは、仕事で Rails 使ってますと話したら「トランザクションとかちゃんとできるのか気になる」みたいな話になって、あーできますけど Rails 使おうなんていうプロジェクトじゃぶっちゃけトランザクション必須っていうノリじゃないのだと思われます・・・とかなんとも苦しい受け答えをした(ActiveRecord が内部的に発行してるトランザクションとは違って、たぶんもっとビジネスロジックよりの部分で明示的にトランザクションをはる、という意味だよなーと理解してたので、そこまで厳密にずれたら困るようなデータを普通にそのへんにある Rails 採用するようなウェブアプリではあんまり扱わないんじゃないかなぁと思った、ということ。ずれても直せばいいじゃん程度のノリというか)

あとどうでもいいことだけど Heroku は「ハオーク」っぽく発音するんだよ、というのが heroku.com のどこかに書いてあった覚えがあるけど先日の railstokyo で Rubyist も「ヘロク」って発音してたっぽいのでヘロクのほうが通じるかもな、とかぼんやり思ってた。

Scalaプログラミング入門、やっぱり読んでて違和感がある。説明不十分なものを突然使われてろくに知らないので戸惑う、というか。

例えば P.65 にこんなコードがあって、意図は map 便利だよねーという紹介なのだけど、

trait Person { def first: String }

val d = new Person { def first = "David" }
val e = new Person { def first = "Elwood" }
val a = new Person { def first = "Archer" }

println(List(a,d,e).map(_.first))

普通はこう書こうと思わないか?

class Person(name: String) {
  def first():String = name
}

val d = new Person("David")
val e = new Person("Elwood")
val a = new Person("Archer")

println(List(a,d,e).map(_.first))

普通にクラスで良さそうなものなのに trait すごいだろ、と誇示したいがために恣意的な書き方してないか?と思ってしまうのですが Scala プログラマの皆さんはそこんところどう思いますか?「いや上のほうが Scala らしい」と言われればそういうものですかねーとあいまいに答えるしかないのですが・・・。

ほかにも Java で同じことを書くとこんなんなっちゃってダサイよねー、みたいな例も、 Java わかんないのでなんともいえないけどもうちょっとマシな書き方あるんじゃないの?とか、ひっかかる部分が多いというか(たとえば Array#map てきなことは Java でもできるけど map(person => persion.first) とか map(_.first) のようにより短く書けるので Scala いいよねー、という話なのかな、とおもって Java map ループ とかでぐぐったらそもそも Array#map 的なものがないのですかね・・・それはつらい)