Skip to content

Instantly share code, notes, and snippets.

@tomykaira
Created May 2, 2014 17:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomykaira/e54de43071105572292d to your computer and use it in GitHub Desktop.
Save tomykaira/e54de43071105572292d to your computer and use it in GitHub Desktop.

Scala の勉強法

体系的な勉強法や定番はよくわからないので、自分が参考にしたものを挙げます。

Scala は Ruby 以上に変化の速い言語なので、本は参考程度にしかなりません。

プロジェクトでは 2.10 を使っていますが、 2.9 の機能は Obsolete になっているものがいくつもあります。 actor が外れたり macro が入ったりしてます。

Amazon.co.jp: Scalaスケーラブルプログラミング第2版: Martin Odersky, Lex Spoon, Bill Venners, 羽生田 栄一, 水島 宏太, 長尾 高弘: 本

全然雰囲気がわからない場合はいいとっかかりになるかもしれません。 私は1度読んだだけで、それ以降つかってないです。なくても困りません。

オフィシャルサイト

英語ページを紹介していますが、日本語版もあるものがあります。バージョンには注意してください。

なにか調べるときは、まず Scaladoc を見て、つぎに github でコードを読めという話になります。 コードはほとんどが Scala で書かれているので読みやすいです。 sbt や各ライブラリのサイトもチェックしましょう。

個人サイト

RSS リーダーに登録しておきましょう。

Kata

いちばん良かったのは kata を毎日やってたことです。 Scala は Java とも Ruby とも Haskell とも OCaml とも、微妙につかいかたが違うので、最初は独特の文法や記法に戸惑います。 idea で補完をつかいながら kata をやることで、 List や Map といった基本的なオブジェクトの使い方に習熟できます。

今回はチームで導入するので、リポジトリをつくって、全体で課題をきめて、毎日各人のディレクトリにコミットしたりすると、他のひとのコードも見られるし、サボってるのがバレてよさそうです。 やるなら音頭をとりますので言ってください。

お題

コーディングの方針

Scalaにおける細かい最適化のプラクティス - scalaとか・・・ に目をとおしてください。

  • 高度な機能は避ける。 習熟度が私含め高くないので、 implicit conversion とか macro とか複雑なライブラリをどんどん導入するのは止めましょう。最低限にしましょう。
  • varcollection.mutable を使うまえに、使わないで解決するとどうなるか考える。 ローカルでもあまり使わないほうがいいです。 インスタンス変数で使うのは極力回避してください。
  • できるだけ再帰はつかわない。 再帰はコード規模が大きくなり、自由度が上がりすぎます。複雑になりすぎない場合は foldRight foldLeft で処理してください。
  • 再帰は @tailrec をつける。 末尾再帰にすると @tailrec アノテーションを付けることができ、多分効率的に実行されます。 末尾再帰じゃない再帰を書かなきゃいけない事はないはず。 Scala @tailrecメモ(Hishidama's Scala @tailrec Memo)
  • コレクションのコストに敏感になる

他にも practice は共有しましょう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment