僕はこれまでまともに学習したプログラミング言語がPerlとJavaScriptしかなくて、静的言語的パラダイムや関数型パラダイムは概念は知っているものの、それがどう役に立つのか、逆にどういう面で課題がありどのように対処されているのか、などといったことを知らなかった。知らなくてもまあ仕事はPerlとJSでやっているので問題ない。しかしすでにこれらの言語から得られる概念的な知識の吸収の速度が鈍化してきていて、このままではエンジニアとしてまずいのではないかという危惧感があった。
そこで静的言語であり、関数型言語であり、また社内でも使われ始めているためサンプルコードがあるScalaの学習をすることにした。
学習するにあたって困ったことは、どういうドキュメントを読み、どのように実践するとScalaの概観をつかめるか分からないということだった。そこで今回は自分の経験を踏まえて、このように入門していくと良いのではということをまとめてみる。
入門書としてよく言われているのが「Scalaスケーラブルプログラミング第2版」。ただし以下の点でこの本を入門書として使うべきではないのではないかと思う。
もちろん入門した後にもう少し詳しく知りたい時や、リファレンス的に使いたい時には良い本である。しかし個人的には最初に読むには大変だったのでおすすめしない。
僕の場合はざっとScalaの書き方を学ぶためにスケーラブルで関数型でオブジェクト指向なScala入門 を読んだ。これは2012年と少し古い連載なのだが、Scalaの文法をざっくり学ぶには参考になる。流し読みしておけば基本構文は大体頭に入るので、とりあえず書けるようになる。
また、sbtのドキュメント(http://www.scala-sbt.org/0.13/tutorial/ja/index.html )を読んだ。これを読むと、
などを学ぶことができる。
勉強するときは実践しながら、それに関係する資料を読み漁っていくというのが自分の学習スタイルだったので、入門の資料を読んだ後は適切な大きさの問題をやってみた。入門する時に適切な大きさの問題を見つけるのが難しいと思うのだけど、はてなから出しているインターンの事前課題がけっこういい感じの大きさなのでこれをやった。
https://github.com/hatena/Hatena-Intern-Exercise2015
この課題は
などをある程度理解しないと解けないので、この辺の概念を理解しながら手を動かしてみると良い。
エラー処理の方法以外は、@ITの連載で大体学べている。他にもはてな教科書の「Scalaによるプログラミングの基礎」を読んでおくと参考になる。
Hatena-Textbook/foundation-of-programming-scala.md at master · hatena/Hatena-Textbook · GitHub
しかし上の概念の中でエラー処理をOptionやEitherで行う部分に関しては重要な割にどこを見ればよいかわかりづらかった。この概念を学ぶために、以下の資料を参考にした。
まずOptionについては
辺りを読むと分かる。
Eitherに関しては
辺りが参考になる。一つは自分のブログだけど、Scalaでの例外処理がよくわからなかったので勉強程度にまとめた。
ここまでくればScalaの使い方はなんとなく分かっているはずなので、あとはいろいろと作りながら都度調べていけば良い。もし自分で作りたいものがあるのであれば、それを作りながら勉強していけばいずれ書けるようになりそう。あんまりないのであれば、はてな教科書のScala によるデータベースプログラミング、ScalaによるWebアプリケーション開発 の課題とかをやるのがおすすめ。
今回は自分がScalaを入門した時に辿った道のりについてまとめてみた。「Scalaスケーラブルプログラミング第2版」を最初に読んでしんどかったとか、OptionやEitherがよく分からなくていろんな資料を読み漁ったけどよくわからなかったとか、そういう失敗をいろいろしたので、道のりが参考になると嬉しい。
変化が起こる状況下での見積り方法について教えてくれる本
感想を読む
メンタリングやチーム運営、組織運営など幅広い組織論について学べる
感想を読む
設計やコーディング等ソフトウェアコンストラクション全般について学べる
感想を読む
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。