質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.03%

【Scala】Scalaの参考書籍

受付中

回答 6

投稿

  • 評価
  • クリップ 4
  • VIEW 1,868

score 946

当方、Rubyを使っており、Scalaを学んでみようと思っております。
Scalaを学習するにあたっておすすめの書籍などありますでしょうか?

また、ネットの情報を見るとJavaプログラマ向けのScala学習情報が多い気がしますが、まずJavaを触ってみるのがいいのでしょうか?
Javaプログラマの方でScalaを使っている方、Rubyプログラマの方でScalaを使っている方などいましたらご意見を伺いたいです。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

+3

[スケーラブルで関数型でオブジェクト指向なScala入門](http://www.atmarkit.co.jp/fjava/index/index_scala.html
)

Java、Rubyはすでに使っていて、Scalaは学習中です。

ご質問は参考書籍ということですが、「これ!」と
自信を持って推薦できる書籍をまだ見つけてないので、
とりあえず上記の入門サイトを紹介しておきます。


まずJavaを触ってみるのがいいのでしょうか? 
ScalaはJavaの後継的なポジションでしょう。

これと似ているのがCに対するC++(またはC#)の立場で、
Cからやる派と、最初からC++(C#)をやる派に分かれます。
私はCからやる派(やった派)です。

というのも段階的学習のほうが、万人向けだと思うからです。
逆に過程を飛ばすのは飛び級と同じで、つまずく人も出るでしょう。

だから、Javaも触ってみるのが良い、と個人的には思います。

けっきょくScalaもライブラリはJavaのを使ったりするので、
すごい回り道をさせられる、というわけでもないと思います。


ただScalaの難しさは、Java(と似た部分)よりも関数型にあると思います。
それはC++(C#)の難しさが、Cよりオブジェクト指向にあるようなものです。

ですからScalaを攻略するのは、関数型プログラミングを学ぶのが良いと思います。
ただ関数型はどれも難しいので、どの言語かまでは指定しかねます。

私の場合はLispを学んでいますが、難解なのでにわかにおすすめできません。
ただなぜ選んだかといえば、そもそもRubyがLispの流れを汲んでいるからです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

関数型プログラミングScala がおすすめです。
最近読んでいるのですが、演習問題があるので読みつつ解きつつ進められて良いです。
Scalaで関数型プログラミングをテーマに学ぶのであればこれが良いかと思います。

もしなにか既に作るものが例えば決まっているのであればコップ本と呼ばれる本を辞書的に読むと良いです。

また、書籍ではないですがScalaで躓いたら http://www.ne.jp/asahi/hishidama/home/tech/scala/ のページを参考にすれば大概のことが解決されるので、こちらも参考にされると良いかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

私自身Scalaは勉強中の身ですが、水島さんにいい本がないか尋ね、紹介していただいた事があります。
ある程度プログラミングを書いたことがあって、関数型言語を深くは知らない人の取っ掛かりとして、Scala逆引きレシピを紹介されました。確かに、Scalaだと「こう書く」というのが段階的に知ることができました。オススメです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

書籍でしたら実践Scala入門、webサイトでしたらドワンゴScala研修テキストが初心者にはおすすめかと思います。
実践Scala入門はScalaを書くのに最低限の知識がコンパクトにまとまっており、なおかつ実践的な内容まで網羅されているので、とりあえず書き始めたいのでしたらこの本を読むのがいいかと思います。
また、ドワンゴのテキストは文法の基本からScalaの有名webフレームワークであるplayを使ったサンプルプロジェクトまでありますので、playについて学びたい場合はこちら勉強するのがいいと思われます。

上の2つが読み終わればScalaのバイブルであるコップ本を読むのがいいでしょう。

他の回答者様が挙げられている関数型ScalaやScala逆引きレシピも良著ではあるのですが、いかんせんScala習熟者向けまたは辞書的な本ですので初心者にはあまり向かないかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

書籍でなく web ページですが、次のページを読んでみては?
(java  や他の言語で 素数の列挙をエラトステネスの篩で書いたことがあることが前提です。)

scala だとこんな風にかくことができるのかということを知ることができます。

お勧めの書籍は、 amazon.co.jp や amazon.com  で scala で検索して、レビューの評価が高いもの、人気があるものを立ち読みしたりサンプル版を読んだりして、自分が気に入ったものから選ぶのがよいと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

入門書は他の回答者の方々が推薦されているのであげません。
Scalaの前にHaskell入門をやっておくと見通しが良くなるでしょう。

Coursera - Functional Programming in Scala
CourseraのScalaコースを受講されることをお勧めします。Functional Programming in Scala

5コース構成です。最初の2コースはScalaの生みの親、Martin Odersky教授がレクチャーします。
教材はScalaスケーラブルプログラミング第3版です。

レクチャーでは、Odersky教授のさりげない一言が実に興味深かったりします。
2コース目の途中2コマになぜかHaskellの研究者Erik Meijerが登場します。

残りの3コースは並行コンピューティングの解説、Sparkの解説と演習です。
5コースすべてを受講すると最短でも3ヶ月、仕事をこなしながらだと1年程度かかるでしょう。

最初のコースだけでも受講する価値はあると思います。受講実績をみると日本人が多数います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る