概要
The BEAM Book の執筆背景、出版までの試行錯誤、そして BEAM VM に関する知見をまとめた経緯を解説。 大規模Erlang/Elixirシステム運用者向けの 実践的な内容。 公開リポジトリによる コミュニティの力 と継続のモチベーション。 執筆を通して得た 教訓 と「完成」の定義。 書籍の入手方法や 貢献の呼びかけ も案内。
ポストモーテム、コーヒー、そして10年の粘り強い好奇心
-
Klarna の基幹システムを10年間支えた経験に基づく執筆動機
- BEAM での15ミリ秒の停止が、数百万件の決済遅延やCEOからの深夜コールを招く現実
- 次世代エンジニアが素早く問題解決できるようにとの思い
-
執筆開始の経緯
- 2012年10月12日、DocBookファイルでプロジェクト開始
- 2週間後も構造や見出しの調整が中心、実質的な内容はごくわずか
- 11月にはAsciiDocへ移行、自作ビルドスクリプト導入、「半年で完成」と楽観
-
出版までの紆余曲折
- 2013年、O’Reilly出版へ話が進むも、Atlasシステムの不具合で進捗停滞
- ファイル消失や上書き、Git履歴がフラストレーションの記録に
- 2015年3月、「章を強引にセクション化」してビルド維持
- 2ヶ月後に静かに契約終了、安堵と恥ずかしさが混在
- Pragmatic Bookshelfへ移籍も進捗は鈍化、最終的にこちらもキャンセル
- 2017年1月、新リポジトリへ大規模コミットし再出発も停滞
- 2017年3月、AsciidoctorとGitHubで再スタート、必要部分のみコピペ
- 4月7日、Chalmersでの講義直前にリポジトリを公開
- 24時間以内に外部から修正・図追加・CC BY-4.0ライセンス導入
- 2013年、O’Reilly出版へ話が進むも、Atlasシステムの不具合で進捗停滞
続けられた理由
- BEAMの本質的理解 へのこだわり
- 表面的な説明ではなく、実際のロジックを追求
- コミュニティのフィードバック
- 公開直後から修正・例・改良案が届く
- GitHubのスター数や「Issue #113 – ‘Please continue being awesome.’」など、モチベーション維持
- Erlang/BEAMカンファレンスでの引用や、Twitterでの言及も励みに
- 自分自身が信頼できるリファレンス作成 への思い
- 問題発生時に役立つVMの詳細解説書を目指す
書籍の内容と対象読者
- 大規模Erlangシステム運用で必要だった知識 を体系化
- スケジューラとプロセス管理 :BEAMのプロセス調停・優先順位付け・バランス
- プロセスとメモリ :ヒープ・スタック・メッセージ・バイナリ管理
- ガーベジコレクションとメモリ :プロセス単位・全体のGC、バイナリ参照、メモリリーク
- タグ付けスキームとデータ表現 :整数・浮動小数・タプル・バイナリ・参照の内部表現
- コンパイラとVM :命令生成、コンパイラの役割、エミュレータの実行方式
- トレースとデバッグ :dbg、erlang:trace等による実践的な追跡・ボトルネック特定
- パフォーマンスチューニング :プロファイリング、リダクション理解、レイテンシ分析
- システムアーキテクチャ :ERTS・BEAM VM・各サブシステムの連携
- Erlang/Elixirの運用・開発者、特に大規模運用・高負荷対応者向け
- 散在するドキュメントやメーリングリストを探し回る手間の削減
執筆を通じて得た教訓
- 粘り強さは完璧主義に勝る
- 出版契約の2度の破棄より、未完のアイデアの方が問題
- 境界設定の重要性
- 執筆時間の確保、通知オフ、集中力の確保
- 14:30のFika(コーヒーブレイク)は譲れない
- 公開によるコミュニティの力
- 修正・励まし・モチベーション維持のきっかけ
- スコープ管理
- Dirtyスケジューラ、新JIT、デバッガ詳細はコアから外し、必要なら付録へ
- まずリリースし、継続的に改善
- BEAMは毎年進化、Gitリポジトリでの継続的なアップデートが最適
- 実際の締切(Code Beam Stockholmへの印刷)で本当に必要な内容を見極め
完成の定義
- 印刷版を手にした瞬間に「完成」と実感
- 断片的なコミットが「形」となり、一区切り
参加・貢献方法
- The BEAM Book 1.0 はAmazonでペーパーバック版が入手可能
- 購入リンク: Amazon
- GitHubリポジトリ でのスター、フォーク、Issue投稿、プルリク歓迎
- 貢献者は謝辞に記載
- GitHub: theBeamBook
- 書籍を読んだら 正直なレビュー を投稿
- アルゴリズムは実際のフィードバックを重視
- BEAM内部ワークショップ も実施可能
- 実運用システム向けにカスタマイズ
- 連絡先: happi@happihacking.com
- Happi