実践Scala入門

[表紙]実践Scala入門

A5判/320ページ

定価(本体3,280円+税)

ISBN 978-4-297-10141-1

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

Scalaの言語仕様,そしてエコシステムを解説するScala入門書の決定版!
基本的な構文からはじまり,Scalaに特徴的なOption,Eitherといった型によるnull安全なプログラミング,for式などの強力な機能を伴うコレクション操作,Futureを使った並行プログラミングなどの各種言語機能を学べるほか,Scalaでは事実上の標準となっているビルドシステムsbtの使い方やテストといった現場での開発に必須の知識も身につく,Scalaプログラマ必携の一冊です。

こんな方におすすめ

  • Scalaに興味を持っているITエンジニア
  • 業務でScalaを使う必要のあるITエンジニア

目次

第1章 Scalaひとめぐり

  • Scalaの誕生とこれまで
  • なぜScalaか?
  • ScalaはJVM上で動作する言語
  • 著名なユーザ企業
  • 開発環境
  • はじめてのScalaプログラミング
  • Scaladocの読み方
  • ビルドツールの利用

第2章 Scalaの基礎

  • 基本的な型
  • クラスを定義する
  • トレイトを定義する
  • Scalaにおけるstatic
  • 特別なメソッド名
  • ケースクラス ―― メソッドを自動生成する
  • 制御構文
  • 修飾子
  • ジェネリクスと型パラメータ
  • 名前空間とモジュール分割
  • 無名クラス
  • 暗黙の型変換
  • 暗黙クラス ―― 既存のクラスにメソッドを付け足す
  • 暗黙のパラメータ

第3章 Option/Either/Tryによるエラー処理

  • Option ―― 「値がないかもしれない」を表す
  • Either ―― 失敗した理由を示す
  • Try ―― Option/Eitherと同じ感覚で例外を扱う

第4章 コレクション

  • コレクションのデータ型
  • コレクションを操作するAPI
  • コレクションの実装ごとの性能特性
  • Java標準クラスとScala標準クラスの変換
  • for式によるコレクション操作

第5章 並行プログラミング

  • 並行プログラミングのメリットとデメリット
  • Futureの基本的な使い方
  • Futureを扱うためのAPI

第6章 Scalaプロジェクトのビルド

  • sbtの役割
  • はじめてのsbt
  • build.sbtの書き方
  • sbtシェルのコマンド
  • ビルドのスコープ
  • sbtプラグイン
  • sbtのトラブルシューティング

第7章 ユニットテスト

  • テストの重要性
  • Scalaにおけるユニットテスト
  • Scalaで使えるテストフレームワーク
  • ScalaTestを使ったはじめてのテスト
  • ScalaTestを使いこなす
  • Mockitoを使ったモックテスト
  • ScalaCheckを使ったプロパティベーステスト

第8章 知っておきたい応用的な構文

  • コンパニオンオブジェクト ―― 同名のクラスへの特権的なアクセス権を持つオブジェクト
  • 部分関数 ―― 呼び出し前の引数チェック
  • デフォルト引数 ―― 引数を省略したときの既定値を指定する
  • 名前付き引数 ―― メソッドの引数に名前をつけて呼び出せるようにする
  • 値クラス ―― オブジェクト生成のオーバーヘッドを避ける
  • 型メンバ ―― クラスやトレイト内だけで有効な型の別名を付ける
  • 自分型アノテーション ―― トレイトやクラスに継承でない依存関係をもたせる
  • メソッド引数におけるブロック式 ―― メソッド呼び出しをより簡潔に記述する
  • 複数の引数リストを持つメソッド ―― 部分適用を容易にする
  • η-expansion ―― メソッドを関数に変換する
  • 名前渡し引数 ―― 引数の評価タイミングを制御する
  • 抽出子 ―― 独自のパターンを定義する
  • implicitの探索範囲
  • 特殊なメソッド

第9章 よりよいコーディングを目指して

  • 可能な限り不変にする
  • 式指向なスタイルで書く
  • そのほかのTips

著者プロフィール

瀬良和弘(せらかずひろ)

担当:第1章。
2010年からScalaに注目し,東京のScalaコミュニティで勉強会の主催,Scala関連のカンファレンスでの登壇経験多数。OSSに関わることがライフワークの一つで,ScalikeJDBC,Skinny FrameworkなどScalaのOSSを長年開発するだけでなく,OSSの裾野を広げる活動にも積極的に貢献している。Scalaに限らずJavaやRubyでWebサービスの開発をしてきた経験が多く,オブジェクト指向に慣れ親しんだ開発者へのScalaの普及に貢献したいという思いから本著の執筆に参加。
Twitter:@seratch
GitHub:@seratch


水島宏太(みずしまこうた)

担当:第2章,第8章。
株式会社ドワンゴ所属。株式会社エフ・コード技術顧問。日本では早くからScalaの普及活動を行っている。プログラミング言語マニアで自作のプログラミング言語Klassicなども開発している。関わった書籍として,共著に『オープンソース徹底活用 Scala実践プログラミング』(秀和システム),監訳に『Scalaスケーラブルプログラミング 第3版』(インプレス)など。
Twitter:@kmizu
GitHub:@kmizu


河内崇(かわちたかし)

担当:第3章,第4章。
株式会社セプテーニ・オリジナルCTO。前職でScalaを採用し,それ以来第一の選択肢として愛用中。Javaの資産を活かして素早く機能を実現しながら,関数型スタイルで書くことでテストしやすくバグが少ないプログラムを書けるところが気に入っている。『RとRubyによるデータ解析入門』『Rグラフィックスクックブック』(いずれもオライリー・ジャパン)などの書籍の翻訳に関わった。将棋の観戦が好きな2児の父。
Twitter:@kawachi


麻植泰輔(おえたいすけ)

担当:第5章,第6章,第9章。
一般社団法人Japan Scala Association代表常務理事。ScalaMatsuri座長。Scalaを使っていると学ぶ対象に事欠かないところが楽しく,気に入っている。コミュニティカンファレンス運営を無理なく持続可能にするスキーム作りがライフワークになりつつある。世界最大のScalaカンファレンスScalaDays 2017など,国内外のカンファレンスの登壇多数。
Twitter:@OE_uia
GitHub:@taisukeoe


青山直紀(あおやまなおき)

担当:第7章。
株式会社セプテーニ・オリジナル所属の猫大好きなエンジニア。学生時代に友人が使っていたのがきっかけでScalaに出会い,現在はインターネット広告業界にてScalaエンジニアとして働いている。Scalaの関数型プログラミング言語的な側面に興味を持ち,趣味/実務問わずそれらをどう活かすかを考えるのが好き。最近はキーボードの自作に目覚め,自分だけのオリジナルを作るべく奮闘中。
Twitter:@aoiroaoino
GitHub:@aoiroaoino