プログラミングElixir(第2版)

前表紙
株式会社 オーム社, 2020/12/01 - 424 ページ

プログラミング言語Elixirを学ぶ

Elixir(エリクサー)は、並行処理を得意とするプログラミング言語ErlangのVM(エンジン部分)を基盤とし、Erlangよりもなじみやすい文法を採用したプログラミング言語です。

本書は、RubyやElixirの伝道師として、そして「達人プログラマー」として知られるDave Thomas氏による、プログラミング言語Elixirの定番解説書、Programming Elixir 1.6(Pragmatic Bookshelf, 2018)の日本語訳です。基本的なプログラミングから、並行処理、さらなる応用へと順を追って進む構成になっています。本書を読むことで、Elixirらしいプログラミングを学ぶことができます。

第2版では、内容が大幅にアップデートされ、Elixir 1.6以降に対応しただけではなく、開発ツールの利用を含めたアプリケーション開発の実際についての解説が、より充実したものになっています。またこの日本語版第2版には、Elixir 1.6以降の周辺事情や、開発現場で知っておきたい情報をまとめた補遺が追加されています


このような方におすすめ

向上心のあるプログラマ

Elixirに興味のある人

Rubyユーザ

Erlangユーザ

プログラミングを学んでいる学生

情報系の大学生


主要目次

Elixir作者による前書き

 はじめに(正当化のむなしい試み、再び)

 第1章 赤いカプセルをとれ


第 I 部 伝統的なプログラミング

 第2章 パターンマッチ

 第3章 不変性

 第4章 Elixirの基礎

 第5章 無名関数

 第6章 モジュールと名前付き関数

 第7章 リストと再帰

 第8章 マップ、キーワードリスト、セット、構造体

 第9章 寄り道:型とは何か?

 第10章 コレクションの処理 ── EnumとStream

 第11章 文字列とバイナリ

 第12章 制御フロー

 第13章 プロジェクトを構成する

 第14章 ツールの利用


第 II 部 並行プログラミング

 第15章 複数のプロセスを使う

 第16章 ノード ── 分散システムの要

 第17章 OTP:サーバ

 第18章 OTP:スーパーバイザ

 第19章 さらに複雑な例

 第20章 OTP:アプリケーション

 第21章 タスクとエージェント


第 III 部 より高度なElixir

 第22章 マクロとコードの評価

 第23章 モジュールのリンク:ビヘイビアとuse

 第24章 プロトコル ── ポリモーフィック関数

 第25章 かっこいい機能いろいろ


付録A 例外:rais、try、catch、throw

付録B 型仕様と型チェック

付録C 参考文献

付録D Elixir 1.6以降の状況と開発運用の実際

付録E 日本語版に寄せて

 

目次

1315 データの変換によるコーディング
167
第14章ツールの利用
169
142 テスト
173
143 コードの依存関係
186
144 サーバモニタリング
187
145 ソースコードの整形
190
146 予想どおりもっとある
193
第II 部並行プログラミング
195

23 _アンダースコアで値を無視する
18
25 等号記号の別の見方
20
第3章不変性
21
32 不変データは既知のデータ
22
33 不変性の性能への影響
23
34 不変データでコーディングする
24
第4章 Elixirの基礎
25
42 値型
26
43 システム型
28
45 マップ
31
46 日付と時間
33
47 名前ソースファイル慣習演算子など
34
48 変数のスコープ
36
49 基礎の終わり
40
第5章無名関数
41
51 関数とパターンマッチ
42
52 一つの関数複数のボディ
43
53 関数は関数を返すことができる
45
54 関数を引数として渡す
47
55 関数はElixirの中核だ
51
第6章モジュールと名前付き関数
53
62 関数のボディはブロックだ
54
63 関数呼び出しとパターンマッチ
55
64 ガード節
58
65 デフォルトパラメータ
60
66 プライベート関数
63
68 モジュール
65
69 モジュールの属性
67
ElixirErlangそしてアトム
68
611 Erlangのライブラリにある関数の呼び出し
69
第7章リストと再帰
71
72 ヘッドとテイルによるリストの処理
72
73 ヘッドとテイルを使ったリストの構築
74
74 map関数の作成
75
75 リストを単一の値にまとめる
76
76 より複雑なリストのパターン
78
77 実践Listモジュール
81
78 リストと仲良くなろう
82
第8章マップキーワードリストセット構造体
83
82 キーワードリスト
84
84 マップのパターンマッチと更新
85
85 マップの更新
87
86 構造体
88
87 入れ子になった辞書構造体
89
88 セット
95
型とは何か?
97
第10章コレクションの処理EnumとStream
99
102 ストリーム遅延列挙
103
103 Collectableプロトコル
110
104 内包表記
111
105 神業との訣別
114
第11章文字列とバイナリ
117
112 文字列という名前
120
113 シングルクオートで囲まれた文字列文字コードのリスト
121
114 バイナリ
123
115 ダブルクオート文字列はバイナリ
124
116 バイナリとパターンマッチ
130
117 見慣れたけれど奇妙な
132
第12章制御フロー
133
122 cond
134
123 case
137
124 例外の発生
138
126 少ない努力で大きな成果
139
第13章プロジェクトを構成する
141
Mixを使って新しいプロジェクトを作る
142
コマンドライン解析
145
134 基本的なテストを書く
146
大きな関数注意報
149
ライブラリを使う
151
レスポンスを加工する
156
データを並び替える
158
最初のn個を取り出す
159
テーブルに整形
160
実行可能なコマンドを作成
163
ロギングの追加
164
プロジェクトドキュメントの生成
166
第15章複数のプロセスを使う
197
151 シンプルなプロセス
198
152 プロセスのオーバヘッド
203
153 プロセスが死ぬとき
206
154 Parallel MapErlang のHello World
210
155 フィボナッチサーバ
211
156 Agents難問
215
157 プロセスで考える
216
第16章ノード分散システムの要
219
162 プロセスの名前付け
223
163 入力出力PIDノード
226
164 ノードは分散の基本
228
サーバ
229
172 OTP サーバ
230
173 GenServerコールバック
238
174 プロセスの名前を付ける
240
176 サーバをコンポーネントにする
242
スーパーバイザ
247
182 ワーカの再起動オプション
254
183 スーパーバイザは信頼の要
255
第19章さらに複雑な例
257
192 Duper アプリケーション
262
193 さて動くかな?
272
194 自分のElixirアプリケーションを計画しよう
274
195 次に来るのは?
275
アプリケーション
277
202 アプリケーション仕様ファイル
278
204 スーパーバイザが信頼性の基盤
281
205 コードのリリース
282
207 OTPは大きい信じられないくらい大きい
292
第21章タスクとエージェント
293
212 エージェント
295
213 大きめの例
297
214 エージェントかタスクかそれともGenServerか?
300
第III 部より高度なElixir
301
第22章マクロとコードの評価
303
222 マクロはコードを注入する
304
223 コードとして表現を利用する
307
224 値の注入のためのバインディングの利用
312
225 マクロは健全
313
226 コード片を走らせる他の方法
314
227 マクロと演算子
315
228 さらに深掘り
316
ビヘイビアとuse
319
232 useと__using__
322
234 useを使う
326
第24章プロトコルポリモーフィック関数
329
242 プロトコルの実装
330
243 利用可能な型
331
244 プロトコルと構造体
332
245 組み込みプロトコル
333
246 プロトコルはポリモーフィック
345
第25章かっこいい機能いろいろ
347
252 複数アプリケーションのアンブレラプロジェクト
351
253 お楽しみはこれからだ
354
raistrycatchthrow
355
A2 catchexitthrow
357
A3 独自の例外の定義
358
A4 今はこの付録を無視してほしい
359
付録B 型仕様と型チェック
361
B2 型の指定
362
B3 新しい型の定義
364
B4 関数とコールバックの型仕様
365
B5 Dialyzer の利用
366
付録C 参考文献
373
付録D Elixir16以降の状況と開発運用の実際
375
D2 リリース
377
D3 アプリケーションのデリバリー
382
付録E 日本語版に寄せて
385
E2 Elixir作者より第2版発行に寄せて
386
E4 訳者より
387
索引
389
著者訳者について
409
奥付
411
著作権

他の版 - すべて表示

著者について (2020)

Dave Thomas(デイヴ トーマス)

クールなものを伝道するのが好きなプログラマ。The Pragmatic Programmer(『達人プログラマー』)の共著者で、アジャイルソフトウェア開発宣言の著者の一人でもある。彼の著書Programming Ruby(『プログラミングRuby』)は、プログラミング言語Ruby を世界に紹介し、Agile Web Development with Rails(『Rails によるアジャイルWeb アプリケーション開発』)はRails が一世を風靡する最初の一押しとなった。

笹田耕一(ささだ こういち)

プログラミング言語Ruby を開発するプログラマ。クックパッド株式会社エンジニア、一般財団法人Ruby アソシエーション理事。楽天テクノロジーアワード2008 ルビー賞、The Ruby Hero Awards 2016 等受賞。他の監訳に『アンダースタンディング コンピュテーション』(オライリー・ジャパン、2014)。好きなElixir の機能はマクロとプロセス。プロセスに相当するRactor をRuby3 に導入するための研究開発が佳境。

鳥井雪(とりい ゆき)

プログラミング言語Ruby を使用するプログラマ。株式会社万葉所属。楽天テクノロジーアワード 2013 ルビー賞受賞。他の訳書に『ルビィのぼうけん』シリーズ(翔泳社、2016 ~)、『Girls Who Code 女の子の未来をひらくプログラミング』(日経BP、2019)。好きなElixir の機能はパイプ演算子とパターンマッチ。どちらもRuby に入りそうになったり試験的に入ったりして、なかなかエキサイティングなユーザー体験です。

書誌情報