速攻理解! JavaプログラマのためのScalaプログラミング

概 要

JavaとScalaの記述の違いがわかるJavaプログラマのためのScala学習書です。ScalaはJavaの開発に関わっていたマーティン・オーダスキー教授によって開発された新しいプログラミング言語です。Javaよりもさらにオブジェクト指向を進化させ、さらに関数型言語の要素も取り入れたため、Javaよりもコードを書く手間が少なくすみ、コードが減った分バグやテストの手間も減りました。本書では、Javaプログラマを対象にScalaプログラミングを解説。実際に動くJavaとScalaのコードを対比させ、その違いを明確にすることでJavaプログラマにわかりやすい解説書となっています。掲載しているプログラムソースのダウンロードサービス付き。

著者 石黒尚久
価格 本体2500円(税別)
ISBN 978-4-7980-3366-2
発売日 2012/5/24
判型 B5変
色数 1色
ページ数 288
CD/DVD
対象読者 中級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

1章 開発環境の構築

1 Eclipseでの開発環境構築

Windows 7での開発環境構築

Mac OS X Lionでの開発環境構築

Windows 7、Mac OS X Lionでの開発環境構築(共通)

2 コマンドラインでの開発環境構築

Windows 7での開発環境構築

Mac OS X Lionでの開発環境構築

3 コマンドライン環境でのプログラミング

動作方法1:通常のコマンドライン実行

動作方法2:対話型REPL環境での実行

動作方法3:スクリプトとしての実行

4 Eclipseでの開発手順

プロジェクトを作成する

プログラムの作成

プログラムの実行

2章 Scalaの基本事項

5 文末のセミコロンは必要?

文末のセミコロンは書かない

セミコロン推論

6 基本的なデータ型をおさえる

プリミティブなデータ型はない

桁数の多い数値のデータ型

7 変数の定義の書き方の違い

型と名前を書く順序が違う

プリミティブ型の簡単な書き換えルール

もう1つの変数val

8 定数の定義の違い?finalに対応するval

valを使った定数の定義

関数の引数はval

9 配列の書き方の違い

Arrayクラスの利用と丸括弧()でのインデックス指定

10 演算子の違い?++と--は使えない

利用可能な演算子

11 関数の書き方の違い

defを使った基本的な関数定義

可変長引数への特別なデータの渡し方

12 Scala関数の特徴?関数の定義

処理中どこでも書ける関数

returnは通常書かない

戻り値のデータ型表記は省略可能

本体の処理が1文の場合は波括弧{}は省略可能

戻り値のない(戻り値がUnit型である)関数の定義

引数を取らない関数の定義

引数のデフォルト値

13 Scala関数の特徴?関数の呼び出し方

Javaと同じ関数呼び出し

オブジェクト名の後のピリオドは省略可能

引数が1つの関数の呼び出し

特殊なメソッド名apply

名前を使った引数指定

14 パッケージの書き方は同じ

package文

波括弧{}を使ったpackage指定

15 インポートの指定方法はほぼ同じ

利用するパッケージを指定する

ファイルの先頭以外でも使えるimport

16 アクセス修飾子の違い?publicというキーワードはない

何も付けないのがpublic

パッケージ内のトップレベル・クラスに付けるアクセス修飾子

クラスのメンバに付けるアクセス修飾子

すっきりとしたScalaのアクセス修飾子

3章 制御構造

17 if文の記述は基本同じ?Scalaでは値を返す

if文の基本的な書き方

18 三項演算子はScalaでは使えない

三項演算子はif式で実現

19 while文やdo while文は基本同じ

while文やdo while文は同じ

Scalaのbreak

whileは使わず再帰を使う

20 機能豊富なfor

基本的な書式

指定回数繰り返す処理の基本的な書き方

コレクションデータの処理(拡張for)

多重ループ

21 forの括弧の中にフィルターを記述できる

Javaでは処理本体で書くしかない

22 値を返すfor?yieldというキーワードを使う

Scala得意の値返し

23 switch case文は使えない?match式で記述する

match式の基本形

いろいろなマッチング

24 例外処理も可能?throwキーワードがない

例外対応には寛大

例外の捕捉

例外を投げる

バイトコードでthrowsを付ける

4章 クラスとインタフェース

25 簡単に作れるシングルトンオブジェクト

シングルトンオブジェクト

26 コマンド実行可能なプログラムを作る

objectにmainメソッド

27 staticなメンバを持たないクラス

Scalaのクラスはstaticメンバは持てない

28 フィールドとgetter/setterだけのクラス

Scalaでは自動生成

29 結構違うコンストラクタ

デフォルトのコンストラクタ

個別のコンストラクタを1つだけ持つクラス

複数のコンストラクタを持つクラス

30 親クラスのコンストラクタ呼び出し

親クラスのコンストラクタ呼び出し

31 staticなメンバを持つクラス

Scalaではコンパニオンで作る

newを書かずにインスタンスを作成する

32 インタフェースはトレイトで

Scalaではトレイト(trait)を使う

処理を実装できるトレイト(trait)

33 もちろん使えるコレクション

Javaより豊富なコレクション

配列を実現するListコレクション

要素の重複を許さないSetコレクション

キーと値のペアを扱うMapコレクション

5章 Scalaが持っている便利機能

34 データをまとめるタプル(tuple)

複数のデータを保持できるタプル

タプルの詳細

35 関数自体をやりとりする?高階関数(higher-order functions)

関数を引数や戻り値として扱う関数

関数のもう1つの書き方(無名関数の利用)

関数の型

高階関数を作る

さらなる省略記法

書き方のバリエーション

36 関数の引数部分の別な書き方

引数を別々の括弧で囲む書き方

37 1つずつ引数を処理させる関数のカリー化

複数の引数を1つひとつ処理する

38 関数から関数を作る?関数の部分適用

引数を一部分だけ関数に渡す

39 case式だけを処理する?部分関数(PartialFunction)

パターンマッチ(case部分)は関数?

部分関数の合体

40 コレクションで利用できる高階メソッド

Traversableトレイトの高階メソッド

要素表示に使えるforeachメソッド

要素を加工するmapメソッド

マッチした要素を加工するcollectメソッド

要素を探すfindメソッド

要素を頭から取り出すtakeWhileメソッド

要素を頭から取り除くdropWhileメソッド

要素を前後に二分するspanメソッド

合致した要素を取り出すfilterメソッド

合致しない要素を取り出すfilterNotメソッド

要素を条件で二分するpartitionメソッド

要素を分類するgroupByメソッド

要素全体をチェックするforallメソッド

合致する要素の存在をチェックするexistsメソッド

合致する要素の数を返すcountメソッド

41 該当値なしを表すOption型

Scalaにおける該当値なしの標準的な書き方

42 """を使った生の文字列(raw string)リテラル

Eclipseのフォーマット自動修正の影響を受けない

43 扱い易いXML

ScalaではXMLは特別扱い

XMLを定義する

XMLをファイルに保存する

XMLをファイルから読み込む

ScalaでのXMLの管理方法

XMLからデータを取り出す

44 case式で使えるケースクラス

4文字(case)を足せば機能が増える

valを付けなくてもgetterが生成される

newを付けずにインスタンス化ができる

メソッドが自動生成される

caseのパターンマッチができる

45 自動で処理する暗黙の型変換(implicit conversions)関数

定義されていないメソッドが使える!?

暗黙の型変換関数を実際に作ってみる

46 事前に設定する暗黙のパラメータ(implicit parameters)

明示していない引数が渡される!?

47 非同期で動くアクター

非同期で動くスレッドオブジェクト

メッセージのやり取り

アクターを手軽に作る

6章 JavaとScalaの相互利用

48 JavaとScalaの対応関係

モジュールの対応

データ型の対応

メソッドの対応

EclipseでのJavaとScalaの混在開発

49 ScalaからJavaのクラスを使う

ScalaからJavaのクラスを単に利用する

ScalaからJavaのクラスを継承する

50 ScalaでJavaのインタフェースを実装する

JavaのインタフェースはScalaでは実装のないトレイト

ScalaからJavaの抽象クラスを継承する

51 JavaからScalaのクラスを使う

JavaからScalaの純粋なクラスを使う

JavaからScalaのシングルトンオブジェクトを使う

JavaからScalaのクラスを継承する

52 JavaからScalaのその他の継承

JavaからScalaの実装のないトレイトを使う

JavaからScalaの実装のあるトレイトを使う

53 コレクションを相互利用する

ScalaでJavaのコレクションをScalaのコレクションとして使う

ScalaのコレクションをJavaのコレクションに変換する

コレクションの型変換の対応表

7章 Scalaでの関数のいろいろな書き方

54 何も処理しない関数

Scalaで何もしない関数を作る

Javaで何もしないメソッドを作る

55 処理を1つだけ行う関数

Scalaで処理を1つだけ行う関数を作る

Javaで1つだけ処理を行うメソッドを作る

56 引数を1つ受け取り戻り値を返す関数

Scalaで引数を1つ受け取り戻り値を返す関数を作る

JavaでInt型の引数が1つで戻り値がStringであるメソッドを作る

57 引数を2つ受け取り戻り値を返す関数

Scalaで引数を2つ受け取り戻り値を返す関数を作る

JavaでInt型の引数が2つで戻り値がStringであるメソッドを作る

PR

秀和システム