書籍をつつく115−Scalaスケーラブルプログラミング。バイブル本。2009-08-20 Thu 16:02
ボク最近気になる本があるピヨ。それがこの・・・
Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala) Scalaは素敵な言語だからこれはもう買うっきゃないよね♪ 【目次】 第01章 スケーラブルな言語 A Scalable Language 1.1 プログラマーとともに成長する言語 1.2 Scalaがスケーラブルな理由 1.3 Scalaを選ぶ理由 1.4 Scalaのさまざまなルーツ 1.5 まとめ 第02章 Scalaプログラミングの第一歩 First Steps in Scala 2.1 [ステップ1]Scalaインタープリターの使い方を学ぶ 2.2 [ステップ2]変数を定義する 2.3 [ステップ3]関数を定義する 2.4 [ステップ4]簡単なScalaスクリプトを書く 2.5 [ステップ5]whileによるループ、ifによる分岐 2.6 [ステップ6]foreachとforによる反復実行 2.7 まとめ 第03章 Scalaプログラミングの次の一歩 Next Steps in Scala 3.1 [ステップ7]配列を型でパラメーター化する 3.2 [ステップ8]リストを使う 3.3 [ステップ9]タプルを使う 3.4 [ステップ10]集合とマップを使う 3.5 [ステップ11]関数型のスタイルを見分ける 3.6 [ステップ12]ファイルから行を読み出す 3.7 まとめ 第04章 クラスとオブジェクト Classes and Objects 4.1 クラス、フィールド、メソッド 4.2 セミコロン推論 4.3 シングルトンオブジェクト 4.4 Scalaアプリケーション 4.5 Applicationトレイト 4.6 まとめ 第05章 基本型と演算子 Basic Types and Operations 5.1 基本型 5.2 リテラル 5.3 演算子はメソッドである 5.4 算術演算 5.5 関係演算子と論理演算子 5.6 ビット単位演算 5.7 オブジェクトの等価性 5.8 演算子の優先順位と結合性 5.9 リッチラッパー 5.10 まとめ 第06章 関数型スタイルのオブジェクト Functional Objects 6.1 Rationalクラスの仕様 6.2 Rationalの構築 6.3 toStringメソッドのオーバーライド 6.4 事前条件のチェック 6.5 フィールドの追加 6.6 自己参照 6.7 補助コンストラクター 6.8 非公開フィールドとメソッド 6.9 演算子の定義 6.10 Scalaの識別子 6.11 メソッドの多重定義 6.12 暗黙の型変換 6.13 [使用上の注意]演算子メソッドと暗黙の型変換 6.14 まとめ 第07章 組み込みの制御構造 Built-in Control Structures 7.1 if式 7.2 whileループ 7.3 for式 7.4 try式による例外処理 7.5 match式 7.6 breakとcontinueを使わずに済ませる 7.7 変数のスコープ 7.8 命令型スタイルのコードのリファクタリング 7.9 まとめ 第08章 関数とクロージャー Functions and Closures 8.1 メソッド 8.2 ローカル関数 8.3 一人前の存在としての関数 8.4 関数リテラルの短縮形 8.5 プレースホルダー構文 8.6 部分適用された関数 8.7 クロージャー 8.8 連続パラメーター 8.9 末尾再帰 8.10 まとめ 第09章 制御の抽象化 Control Abstraction 9.1 重複するコードの削減 9.2 クライアントコードの単純化 9.3 カリー化 9.4 新しい制御構造を作る 9.5 名前渡しパラメーター 9.6 まとめ 第10章 合成と継承 Composition and Inheritance 10.1 2Dレイアウトライブラリー 10.2 抽象クラス 10.3 パラメーターなしメソッドの定義 10.4 クラスの拡張 10.5 メソッドとフィールドのオーバーライド 10.6 パラメーターフィールドの定義 10.7 スーパークラスコンストラクターの呼び出し 10.8 override修飾子の使い方 10.9 多相性と動的束縛 10.10 ファイナルメンバーの宣言 10.11 合成か継承か 10.12 above、beside、toStringの実装 10.13 ファクトリーオブジェクトの定義 10.14 高さを調整するheighten、幅を調整するwiden 10.15 レイアウト要素すべてを組み合わせて利用するアプリケーション 10.16 まとめ 第11章 Scalaの階層構造 Scala's Hierarchy 11.1 Scalaのクラス階層 11.2 プリミティブ型の実装方法 11.3 最下位(bottom)の2つの型 11.4 まとめ 第12章 トレイト Traits 12.1 トレイトの仕組み 12.2 シンインターフェイスとリッチインターフェイス 12.3 サンプル:矩形オブジェクト 12.4 Orderedトレイト 12.5 積み重ね可能な変更をそれぞれのトレイトで表現する 12.6 Scalaが多重継承ではなくミックスイン合成を選んだ理由 12.7 トレイトすべきか、せざるべきか 12.8 まとめ 第13章 パッケージとインポート Packages and Imports 13.1 パッケージ 13.2 インポート 13.3 暗黙のインポート 13.4 アクセス修飾子 13.5 まとめ 第14章 表明と単体テスト Assertions and Unit Testing 14.1 表明(assertions:アサーション) 14.2 Scalaにおける単体テスト 14.3 情報が豊富なエラーレポート 14.4 JUnitとTestNGの使い方 14.5 仕様としてのテスト 14.6 プロパティベースのテスト 14.7 テストの構成と実行 14.8 まとめ 第15章 ケースクラスとパターンマッチ Case Classes and Pattern Matching 15.1 単純なサンプル 15.2 パターンの種類 15.3 パターンガード 15.4 パターンのオーバーラップ 15.5 シールドクラス 15.6 Option型 15.7 どこでもパターンを 15.8 より大きなサンプル 15.9 まとめ 第16章 リストの操作 Working with Lists 16.1 リストリテラル 16.2 List型 16.3 リストの構築 16.4 リストに対する基本操作 16.5 リストパターン 16.6 Listクラスの一階メソッド 16.7 Listクラスの高階メソッド 16.8 Listオブジェクトのメソッド 16.9 Scalaの型推論アルゴリズムを理解する 16.10 まとめ 第17章 コレクション Collections 17.1 ライブラリーの概要 17.2 シーケンス 17.3 集合(Set)とマップ 17.4 ミュータブルとイミュータブルのどちらを使うべきか 17.5 コレクションの初期化 17.6 タプル 17.7 まとめ 第18章 ステートフルオブジェクト Stateful Objects 18.1 どのようなオブジェクトがステートフルなのか 18.2 再代入可能な変数とプロパティ 18.3 ケーススタディ:離散イベントシミュレーション 18.4 デジタル回路のための言語 18.5 シミュレーションAPI 18.6 デジタル回路のシミュレーション 18.7 まとめ 第19章 型のパラメーター化 Type Parameterization 19.1 関数型待ち行列 19.2 情報隠蔽 19.3 変位指定アノテーション 19.4 変位指定アノテーションのチェック 19.5 下限境界(lower bounds) 19.6 反変(contravariance) 19.7 オブジェクト非公開データ 19.8 上限境界(upper bounds) 19.9 まとめ 第20章 抽象メンバー Abstract Members 20.1 抽象メンバーの弾丸ツアー 20.2 型メンバー 20.3 抽象val 20.4 抽象var 20.5 抽象valの初期化 20.6 抽象型 20.7 パス依存型 20.8 列挙(enumeration) 20.9 ケーススタディ:通貨計算 20.10 まとめ 第21章 暗黙の型変換とパラメーター Implicit Conversions and Parameters 21.1 暗黙の型変換 21.2 implicitの規則 21.3 要求された型への暗黙の型変換 21.4 レシーバーの変換 21.5 暗黙のパラメーター 21.6 可視境界 21.7 暗黙の型変換のデバッグ 21.8 まとめ 第22章 リストの実装 Implementing Lists 22.1 Listクラスの原則 22.2 ListBufferクラス 22.3 Listクラスの実際の中身 22.4 関数型の見かけ 22.5 まとめ 第23章 for式の再説 For Expressions Revisited 23.1 for式 23.2 N女王問題 23.3 for式によるクエリー 23.4 for式の変換 23.5 逆方向への変換 23.6 forの一般化 23.7 まとめ 第24章 抽出子 Extractors 24.1 サンプル:メールアドレスの抽出 24.2 抽出子 24.3 変数が1個以下のパターン 24.4 可変個の引数をとる抽出子 24.5 抽出子とシーケンスパターン 24.6 抽出子とケースクラス 24.7 正規表現 24.8 まとめ 第25章 アノテーション Annotations 25.1 アノテーションを使う理由 25.2 アノテーションの構文 25.3 標準アノテーション 25.4 まとめ 第26章 XMLの操作 Working with XML 26.1 準構造化データ 26.2 XMLの概要 26.3 XMLリテラル 26.4 シリアライゼーション 26.5 XMLの分解 26.6 デシリアライゼーション 26.7 ロードと保存 26.8 XMLを対象とするパターンマッチ 26.9 まとめ 第27章 オブジェクトを使ったモジュラープログラミング Modular Programming Using Objects 27.1 課題 27.2 「レシピ」アプリケーション 27.3 抽象化 27.4 モジュールのトレイトへの分割 27.5 実行時リンク 27.6 モジュールインスタンスの管理 27.7 まとめ 第28章 オブジェクトの等価性 Object Equality 28.1 Scalaにおける等価性 28.2 等価メソッドの開発 28.3 パラメーター化された型の等価性の定義 28.4 equalsとhashCodeのレシピ 28.5 まとめ 第29章 ScalaとJavaの結合 Combining Scala and Java 29.1 JavaからScalaを使うための注意点 29.2 アノテーション 29.3 存在型 29.4 まとめ 第30章 アクターと並行プログラミング Actors and Concurrency 30.1 楽園のトラブル 30.2 アクターとメッセージ交換 30.3 ネイティブスレッドをアクターとして扱う 30.4 スレッドの再利用によるパフォーマンスの向上 30.5 アクターコードのスタイル 30.6 大規模なサンプル:並列離散イベントシミュレーション 30.7 まとめ 第31章 パーサー・コンビネーター Combinator Parsing 31.1 サンプル:算術式 31.2 パーサーの実行 31.3 基本正規表現パーサー 31.4 他のパーサーの使用例:JSON 31.5 パーサーの出力 31.6 パーサー・コンビネーターの実装 31.7 文字列リテラルと正規表現 31.8 字句解析と構文解析 31.9 エラー報告 31.10 バックトラックとLL(1) 31.11 まとめ 第32章 GUIプログラミング GUI Programming 32.1 最初に作るSwingアプリケーション 32.2 パネルとレイアウト 32.3 イベント処理 32.4 サンプル:摂氏・華氏換算プログラム 32.5 まとめ 第33章 SCellsスプレッドシート The SCells Spreadsheet 33.1 ビジュアルフレームワーク 33.2 データ入力と表示の分離 33.3 数式 33.4 数式の構文解析 33.5 数式の評価 33.6 演算ライブラリー 33.7 値の変更の通知 33.8 まとめ 付録A Scalaスクリプトをシェルスクリプトとして実行する方法[UNIX&Windows] 参考文献 用語集 索引 監修者あとがき 著者/翻訳者/監修者紹介 ボクはずっとScalaに心惹かれていたピヨ♪何故かと言うと、関数型言語とオブジェクト指向な命令言語がたくみに融合されているからんだ。これからの言語はコウでなくっちゃ♪でもScalaは長い事日本語の資料に恵まれていなかったピヨォ。ボクは仕方が無く、BNFや拙い英語力を駆使して情報をちびちび仕入れていたピヨ。 そんな中最近発売されたのが設計者自らが書いたProductivity Award章を受賞したこの本ピヨ♪設計者が自ら書いたということは、あのプログラミング言語C++と同じバイブルだという事だよね。 これからメジャーになるであろうScalaを学ぶのはいい事だとボクは思う。もしこの言語自体がメジャーになれなくとも、近代的言語のアプローチは必ず関数型言語+命令型言語になるだろうから今からこの本を読んで関数型の要素にも慣れておく必要があるとボクは思う。Scalaは他言語を修得していればそれ程難しくはないから、この本を羅針盤として気楽に挑戦しよう♪ |
この記事のコメント |
コメントの投稿 |
||
|
||
管理者だけに閲覧 | ||
|
この記事のトラックバック |
| 無差別に技術をついばむ鳥 |
|