鮫島 光貴:基礎からわかる Scala

作成日 : 2020-09-23
最終更新日 :

概要

本書の PROLOGUE から引用する「本書はそんな Java は習得し使いこなせているけれども、 Scala をこれから習得しようとされているデベロッパの方に向けて基礎からわかりやすく解説しています。」

感想

わたしは Java を知らないので、残念ながら著者が求めている読者像から外れる。 それはともかく、誤植が多いのが残念である。また、英語のスペリングミスと思われるものもあるので、 それも掲げた。

誤植

正誤の違いで強調したい字を赤字で掲げた。

ページ場所備考
59◇要素の順次処理コレクション、上から5行目 各要素にインデックス与えて 各要素にインデックス与えて
62〇名前付き引数のコード例、上から3行目 初期値が与えられています。 初期値が与えられています。
67〇数値リテラル、上から2行目 64 ビット整数(符付) 64 ビット整数(符付)
105◇Option クラス型の戻り値による処理の分岐、上から2行目 Option クラス型はパターンマッチングと組み合わせて使うと効果的であり、 Option クラス型はパターンマッチングと組み合わせて使うと効果的であり、
106(各所) パターマッチング パターマッチング
136(各所) プライン プライン
138〇システム開発における Java と Scala の相互運用の必要性、下から2行目 JavaBean JavaBeans
142-145全体 Factorial Power コードも整合性を持たせて直すべき
156「tupled」メソッドのコード例 weatheToyama weatherToyama クラス名 Weather や変数 weatherTupled には末尾の r がある。プログラム実行時の影響はない
178〇定数パターンのコード例、上から1行目 パターンマッチグ パターンマッチ
180-181(各所) somthing something プログラム実行時の影響はない
181◇変数パターンの記述、上から2行目 パターマッチング パターマッチング
183COLUMN 束縛とは何か、上から1行目 またはバイン またはバイン
192〇タプルパターンの記述方法、下から3行目、1行目 パターマッチング パターマッチング
194コンストラクタパターンのコード例、上から4行目 employeeMumber employeeNumber 従業員数の意味と解釈した。プログラム実行時の影響はない
195コンストラクタパターンのコード例、p.194 上から6行目、 p.195 下から2~4行目 outBpInfomation outBpInformation 外部ビジネスパートナー情報の意味と解釈した。プログラム実行時の影響はない
197〇抽出子パターンとは、下から3行目 抽出子パターンよる 抽出子パターンよる
201(各所) Oder, showOder Order, showOrder プログラム実行時の影響はない
209(各所) 年4桁、月2桁、日4 年4桁、月2桁、日2
209(各所) 年4桁/月2桁/日4 年4桁/月2桁/日2
209◇正規表現オブジェクト定数の定義(下段側)、下から3行目 raw 補 raw 補 補間子は英語では interpolator
246〇DI コンテナと AOP、下から2行目 Java の言語使用では Java の言語仕様では
277-278コード例ほか firstName、showFirstName lastName、showLastName 苗字(姓)を表示するのであれば、FirstName ではなく、LastName であろう。

pp.142 では、プログラムは明らかにべき乗(冪乗)の計算であるのに、名称に Factorial という別の計算を当ててしまっている。factorial は階乗という意味である。べき乗は英語で power なので、 オブジェクト名には Power を当てるべきだ。オブジェクト Power のメンバーには既に power という変数があるが、 先頭を大文字にしてあるので区別できる。

いい機会なので書き直してみたが、書き直した結果でも警告が出る。

$ scala -deprecation Power.scala
Power.scala:4: warning: method + in class Double is deprecated (since 2.13.0): Adding a number and a String is deprecated. 
Use the string interpolation `s"$num$str"`
    return power + "乗 = "
                 ^
7 の 5.0乗 = 16807.0

この警告も出ないように書き変えた p.144 のコードは次のとおり。 なお、ファイル名も Factorial.scala から Power.scala に変えている。

    
        object Power{
            val power: Double = 5
            def sayMessage(): String = {
              return s"${power}乗 = "
            }
          }
          
          class Power{
            private var baseNum: Double = 0
          
            def setBaseNum( num: Double ): Unit = {
              baseNum = num
            }
          
            def calcPower(): Double = {
              return Math.pow( baseNum, Power.power )
            }
          }
          
          object Main extends App {
            print( "7 の " + Power.sayMessage() )
            var pow = new Power()
            pow.setBaseNum( 7 )
            println( pow.calcPower() )
          }    
    
    

pp. 277-278 の例では、(L|l)astName の代わりに (F|f)amilyName もいいだろう。 ソースコードで、println( s"苗字(姓)は $firstNameです) と表示していることでもあるし、ここはクラス名やメソッド名にもlastName を使うべきだろう。 なお、他の個所のソースコード、たとえば、 p.152 や p.168、p.199 では、 firstName を正しく(下の)名前として使っている。しかし、 苗字のほうは p.152 では secondName を当てているのに対し、 p.168 や p.199 では lastName を当てていて、統一されていない。 secondName は意味があいまいなので、苗字は lastName に統一すべきだろう。

書誌情報

書名基礎からわかる Scala
著者鮫島 光貴
発行日2017 年 9 月 1 日 (初版発行)
発行元C&A 研究所
定価2430 円(税別)
サイズA5 版
ISBN978-4-86354-226-6
その他越谷市立図書館にて借りて読む

まりんきょ学問所コンピュータの本Scala > 鮫島 光貴:基礎からわかる Scala


MARUYAMA Satosi