yoskhdia’s diary

DDDとかプログラミングとかアーキテクチャとか雑多に

書籍『Akka実践バイブル』の翻訳レビューに参加してきました

f:id:yoskhdia:20171207181459j:plain

書籍『Akka実践バイブル』の翻訳レビューに参加してきました。*1 書籍のレビュアーとしては2回め、技術書としては初めてです。

興味のある人を増やせれば良いなーと思い、少しばかり本の紹介をしてみたいと思います。

www.shoeisha.co.jp

どんな本か

『Akka実践バイブル』は『Akka in Action』の和訳本です。

詳細は商品ページや著者・翻訳者の紹介をご参照くださいというところですが、一言であらわせば「Akkaをまるっと概観できる」という本です。 原著のAkka in ActionはAkkaを学ぶなら必読書でした。 そもそもAkkaとは、アクターモデルを用いた並行並列処理、耐障害性のあるスケーラブルなアプリケーションを構築するためのツールキットです。 Akkaの公式ドキュメントはトップレベルの充実ぶりですが、ザクッと代表的な機能をおさえたい場合は書籍が良い入り口になります。*2

ただし、Akkaのもつツールを完全に網羅しているわけではありません。 最新版(現在時点でバージョン2.5.7)では既にdeprecatedとなっているAgentの解説が含まれていたり、新しいDispatcherなどへの言及もありません。*3 原著の発刊が2016年9月であることもあり、こういった解説本では不可避ではあります。

しかし、akka-camelの解説の代わりにAlpakkaの解説へ全面的に書き直されるなど、翻訳者らの努力も相当にかけられています。 特に付録の「AkkaをJavaから使う」はJavaユーザのために書き下ろされたものです。 AkkaはScalaで書くものと誤解している人も少なからずいるのでは?と思ったりもしていますが、Java APIもちゃんと提供されています。 プログラミング言語としての表現力の差があるため、Scalaの方が冗長さは少ないと感じますが、JavaでもAkkaを愉しむことができます。

どんな人向けか

  • Akkaを全体的に学びたい人
  • 英語に挫けた人
  • スケーラブルなアプリケーションを構築したい人

個人的には、エンタープライズシステム*4に関わる人にこそ読んで欲しいなと思います。 それは、システムの安定化やシステム統合の場面で特に活かされるように思うためです。 バックプレッシャやLet it crashという性質、そしてAkkaの持つ豊かなツールセットは、これでもかという程の利便性を持ちます。 前述のようにJavaユーザーのために「AkkaをJavaから使う」という付録もありますので、このメリットを享受できる準備は整っています。

ただ、そんなAkkaもあくまで道具であることには気をつけた方が良いかなと思います。 なんでもActor(Akka)でやろうとするのはナンセンスです。 金のハンマーではなく適材適所で採用できるように知識を身につけるべきでしょう。*5

勿論、上記以外に単純にAkkaのコンセプトを学ぶことも有用でしょう。 アクターモデルErlangでも採用されていることが知られていますが、ハイパフォーマンスなアプリケーションを、整合性を保ちながら安定的に(耐障害性を持たせて)運用することをどうやって実現するかは、たとえAkkaを用いないとしても興味深いトピックです。

あわせて読みたい

Release It!

ref: 書籍情報

結構前に発刊された本ではありますが、システムを本番稼働させるために必要な知見を、より具体的に学ぶことができます。 色々なパターン・アンチパターンを知ることができます。*6 この本を読んでいると、「あ、これはAkkaで実現できちゃうな」と思うシーンは少なくありません。 相互に読むとAkkaのパワフルさが理解できると思います。

また、もうすぐ第二版が発刊されるようです。 これもまた楽しみですね。

Reactive Messaging Patterns with the Actor Model

ref: 書籍情報

Akka、特にActorを使って、Enterprise Integration Patterns(EIP)を実現するならどうするか?を解説した本です。 EIPを予め知らないとちょっと難しかったりしますが、システム統合に限らずアプリケーションをモデリングするうえで度々直面する非同期なコミュニケーション*7の扱い方を学ぶことができます。 Akkaでアプリケーションを書こうと思うと、非同期的なコミュニケーションを意識する場面が増えます。 あわせて読むことで、より上手なActorの使い方を学ぶことができるでしょう。

読書レビューも書いていますので参考にどうぞ: booklog

感想

私もたまにInfoQの記事翻訳をしたり*8するのですが、翻訳の難しさを改めて感じます。 Akka in Action原著を読み直すと、ちょこちょこ用語の使い分けが曖昧な部分があったり、解説の誤りもないわけではありません*9。長い文*10では、そのまま訳すと冗長すぎるのも、さじ加減が難しいところです。 今回、翻訳は3名の方の共同作業となっていますが、皆さんそれぞれご苦労されたことはレビューをしていて感じたところです。

ともあれ、無事に完成まで辿り着き、こうして見本誌を受け取る日が来たことはレビュアーとしても非常に嬉しいことです。
発売は2017年12月13日。
一人でも多くのHakker*11が増えますように。

追伸:

今ならAkkaチートシートが付いてくるようです。お得ですね?

www.shoeisha.co.jp

*1:主に11章〜13章の辺りを担当しました。

*2:翻訳者らはAkka公式ドキュメントの和訳にも取り組んでいます。

*3:勿論、これはすでに非推奨みたいなものは訳注がついています。

*4:ここではWebサービスなどではなく企業内の情報システム程度のニュアンスです。

*5:とはいえ、Akka StreamsやFSMはすごくすごく便利です。

*6:安定性のパターン大全 (とその実装) - Qiitaが参考になります。

*7:例えば、在庫引当を依頼して、その結果をどう受け取るかのような非同期的な性質をもつ相互連携

*8:最近はちょっとお休み気味…

*9:他のレビュアーさん含め、気づく範囲は勿論修正されています。

*10:英語はどんどん後ろに続けてしまえる面がありますし…

*11:誤字ではありません。