内容紹介
すごいErlangを徹底解説!
絶対に落ちてはいけないサーバアプリの開発にも数多く利用されているプログラミング言語Erlang(あーらん)。その独特の構文から並行プログラミングの基礎、OTPと呼ばれる強力なツール群の使い方、分散処理、テスト、アプリケーションのリリース方法、型を用いた静的解析ツールDialyzerにいたるまで、Erlangのすべてをクセのあるイラストと親しみやすい例題を使って徹底的に解説した"Learn You Some Erlang for Great Good!"の翻訳です。
このような方におすすめ
プログラマー
Erlang入門者
Erlangを実用的に学びたい人
関数型言語に興味のある人
『すごいHaskellたのしく学ぼう!』の読者
目次
主要目次
第1章 始めましょう
第2章 モジュール
第3章 関数の構文
第4章 型(あるいはそれを欠いています)
第5章 再帰さん、こんにちは!
第6章 高階関数
第7章 エラーと例外
第8章 関数型っぽく問題を解く
第9章 一般的なデータ構造への小さな旅
第10章 並行性ヒッチハイク・ガイド
第11章 マルチプロセスについてもっと
第12章 エラーとプロセス
第13章 並行アプリケーションを設計する
第14章 OTPの紹介
第15章 レイジ・アゲインスト・ザ・有限ステート・マシーン
第16章 イベントハンドラ
第17章 誰が監督を監督するの?
第18章 アプリケーションを作る
第19章 OTP流、アプリケーションの作り方
第20章 カウント伯爵アプリケーション
第21章 これぞリリース
第22章 プロセスの冒険(Process Quest)でレベルを上げる
第23章 バケツいっぱいのソケット
第24章 国際Erlang 単体テスト理事会EUnit
第25章 Bears, ETS, Beets:無料のインメモリNoSQL!
第26章 名状しがたい分散
第27章 分散OTPアプリケーション
第28章 珍しいテストのためのよくあるテスト
第29章 Mnesia と記憶術
第30章 型仕様とDialyzer
あとがき
付録A Erlangの構文について
付録B 追伸:マップ
詳細目次
訳者序文
本書に寄せて
はじめに
Erlangになじみのなかった方へ
Erlangをいつも使っている方へ
本書をオンラインで読んだことがある方へ
謝辞
イントロダクション
で、Erlang って何?
うまい話ばかりじゃないですよ
飛び込むのに必要なもの
どこで助けを得たらいいのか?
第1章 始めましょう
1.1 Erlang シェルを使ってみる
1.2 Erlang の基礎をいくつか
1.3 バイナリデータを扱う
第2章 モジュール
2.1 モジュールとは
2.2 モジュールを作る
2.3 コードをコンパイルする
2.4 マクロを宣言する
2.5 モジュールについてもっと詳しく
第3章 関数の構文
3.1 パターンマッチ
3.2 ガードだ、ガード!
3.3 If ってなんだ?!
3.4 もしも…の場合(In Case ..of)
3.5 どれを使えばいいの?
第4章 型(あるいはそれを欠いています)
4.1 動的で強い型付け
4.2 型変換
4.3 データ型を守るために
4.4 型ジャンキーのために
第5章 再帰さん、こんにちは!
5.1 再帰の動き
5.2 さらに末尾関数
5.3 リストを超えて
5.4 再帰的に考える
第6章 高階関数
6.1 関数型っぽくいこう!
6.2 無名関数
6.3 map、filter、fold など
第7章 エラーと例外
7.1 エラー大集合
7.2 例外を上げる
7.3 例外を処理する
7.4 二分木でtry をトライする
第8章 関数型っぽく問題を解く
8.1 逆ポーランド記法計算機
8.2 ヒースローからロンドンへ
第9章 一般的なデータ構造への小さな旅
9.1 レコード
9.2 キーバリューストア
9.3 これぞセット
9.4 有向グラフ
9.5 キュー
9.6 小さな旅の終わりに
第10章 並行性ヒッチハイク・ガイド
10.1 パニクるな!
10.2 並行性の概念
10.3 すべてが線形にスケールするわけではない
10.4 さようなら、いままで魚をありがとう!
第11章 マルチプロセスについてもっと
11.1 状態を述べろ
11.2 メッセージ大好きだけど秘密にしておいて
11.3 タイムアウト
11.4 選択的受信
第12章 エラーとプロセス
12.1 リンク
12.2 モニター
12.3 プロセスに名前を付ける
第13章 並行アプリケーションを設計する
13.1 問題を理解する
13.2 プロトコルを決める
13.3 土台にすえる
13.4 イベントモジュール
13.5 イベントサーバ
13.6 試運転
13.7 監視を追加する
13.8 名前空間(あるいは名前のない空間)
第14章 OTPの紹介
14.1 共通プロセスを抽象化すると
14.2 基本的なサーバ
14.3 特化vs汎用
14.4 コールバック・トゥ・ザ・フューチャー
14.5 スコッティ、転送を頼む
第15章 レイジ・アゲインスト・ザ・有限ステート・マシーン
15.1 有限ステートマシンとは何か
15.2 汎用の有限ステートマシン
15.3 取引システムの仕様
15.4 プレーヤー二人のゲーム内取引
15.5 たいしたもんです
15.6 実世界に適用できるの?
第16章 イベントハンドラ
16.1 こいつをなんとかハンドルしろ!(ショットガンをガチャリ!)
16.2 汎用イベントハンドラ
16.3 カーリングの時間です!
第17章 誰が監督を監督するの?
17.1 スーパバイザの概念
17.2 スーパバイザの利用
17.3 バンドで練習
17.4 動的な監視
第18章 アプリケーションを作る
18.1 プロセスプール
18.2 スーパバイザを実装する
18.3 ワーカに取り組む
18.4 ワーカを書く
18.5 プールよ、走れ
18.6 プール清掃
第19章 OTP流、アプリケーションの作り方
19.1 私のもう一台の車はプールです
19.2 アプリケーションリソースファイル
19.3 プールを変換する
19.4 アプリケーションビヘイビア
19.5 カオスからアプリケーションへ
19.6 ライブラリアプリケーション
第20章 カウント伯爵アプリケーション
20.1 OTPアプリケーションからリアルアプリケーションへ
20.2 アプリケーションよ、走れ
20.3 同梱アプリケーション
20.4 複雑な終了
第21章 これぞリリース
21.1 水漏れパイプを直す
21.2 systools でのリリース
21.3 reltool でのリリース
21.4 reltool レシピ
21.5 リリースからの解放
第22章 プロセスの冒険(Process Quest)でレベルを上げる
22.1 appupとrelup のしゃっくり
22.2 Erlang 地獄の最下層
22.3 Process Quest
22.4 Process Questを改良する
22.5 relup の復習
第23章 バケツいっぱいのソケット
23.1 IO リスト
23.2 UDPとTCP:兄弟プロトコル
23.3 inet でもっと制御する
23.4 sockserv、再登場
23.5 これからどこに向かおう
第24章 国際Erlang 単体テスト理事会EUnit
24.1 EUnit、はてEUnit とはなんぞや
24.2 テストジェネレータ
24.3 フィクスチャー
24.4 Regis をテストする
24.5 誰が良いニット(EUnits)を編むのか
第25章 Bears, ETS, Beets:無料のインメモリNoSQL!
25.1 なぜETSなのか
25.2 ETSのコンセプト
25.3 ETS、オウチ、デンワ
25.4 マッチを擦る
25.5 あなたは選ばれました
25.6 DETS
25.7 おしゃべりをやめて、もうちょっと手を動かしましょう
第26章 名状しがたい分散
26.1 これが俺のひのきのぼうだ
26.2 分散コンピューティングの落とし穴
26.3 死か、死んでるけど生きてるか
26.4 帽子じゃないほうのCAP
26.5 Erlang クラスタを設定する
26.6 Cookie
26.7 リモートシェル
26.8 隠しノード
26.9 火の壁を前にゴーグルは役に立たなかった
26.10 彼方からの電話
26.11 名状しがたい分散を葬る
第27章 分散OTPアプリケーション
27.1 OTPにさらに追加
27.2 テイクオーバーとフェイルオーバー
27.3 魔法の8ボール
第28章 珍しいテストのためのよくあるテスト
28.1 Common Test とは
28.2 コモンなテストケース
28.3 簡単なテストスイートを作成する
28.4 状態付きでテストする
28.5 テストグループ
28.6 戻ってきたテストスイート
28.7 テストスペック
28.8 大規模テスト
28.9 EUint をCommon Test 内に統合する
28.10 さらにオプションはないの?
第29章 Mnesiaと記憶術
29.1 Mnesiaとは何か
29.2 データストアは何を保存すべきか
29.3 レコードからテーブルへ
29.4 Mnesiaのスキーマとテーブルについて
29.5 テーブルを作成する
29.6 アクセスとコンテキスト
29.7 読み、書き、Mnesia
29.8 初めてのリクエストを実装する
29.9 ボスに合わせる
29.10 目の前でブツを消す
29.11 クエリリスト内包表記
29.12 Mnesiaを忘れるな
第30章 型仕様とDialyzer
30.1 PLTは最高のサンドイッチ
30.2 成功型付け
30.3 型推論と食い違い
30.4 型の種類についてタイプする
30.5 関数を型付けする
30.6 型付けの慣習
30.7 型をエクスポートする
30.8 型付けされたビヘイビア
30.9 多相型
30.10 ユー・アー・マイ・型
30.11 同士よ、以上だ
あとがき
他のErlang アプリケーション
コミュニティによるライブラリ
あなたの考えにはとても興味をそそられるので、あなたのニュースレターを購読したいと思います
これでおしまい?
付録A Erlang の構文について
A.1 テンプレート
A.2 英文
A.3 かつ、または、おしまい
A.4 最後に
付録B 追伸:マップ
B.1 この付録について
B.2 EEP! EEP!
B.3 マップはどうあるべきか
B.4 早期リリースのための短い一歩
B.5 つばぜり合い
B.6 本書がマップでどのように改訂されるか
訳語一覧
索引
著者と訳者について
続きを見る