今更akkaについてまとめてみる(その1)

色々あって、今まで避けてきた(?)akkaについて、触らないといけない感じになってるので、個人的に整理するためにまとめてみます。もともとそれほど詳しくないので、とくに面白い新しい情報とかほぼ書かないと思う*1ので、そういうの知りたい人は公式ドキュメントとか見ましょう。その1と書いたけど、今後続くのか、すぐ終わるのかも未定

  • 2014年6月24日現在、最新安定versionは2.3.3(以下、基本的に2.3.3について言及)
  • 2.3.3は、基本的にほぼすべてのモジュールがScala2.11と2.10でクロスビルドされてる
  • play2.3.xはakka2.3.x、play2.2.xはakka2.2.xに依存、という関係になってるので、play2と混ぜて使う場合は注意
  • リポジトリ https://github.com/akka/akka
  • Scala版の2.3.3公式ドキュメントURL http://doc.akka.io/docs/akka/2.3.3/scala.html
  • APIドキュメントや、ドキュメントのページ、メソッドそのもの、など含め、全部Java用とScala用があるのでScalaで使いたいのに間違ってJavaのものを見ないように注意
  • version毎にドキュメント分かれてるので、ググって間違って古いページ見ないように注意。ドキュメント内にありそうな情報なら、最初から特定のversionのドキュメント内をググろう
  • PDFやEPUBも用意されてる
  • コンパイル可能なコードの一部を抜き出して、ドキュメント中のコードを生成している https://github.com/akka/akka/blob/v2.3.3/akka-docs/_sphinx/exts/includecode.py ので、原理的にドキュメント内のコードがコンパイル通らないということが発生しない。play2も同じようなことやってる。sbtとかもやって欲しい気がする
  • akka2.3.3時点での主要なモジュール一覧*2
    • akka-actor
    • akka-agent
    • akka-camel
    • akka-cluster
    • akka-dataflow
    • akka-file-mailbox
    • akka-kernel
    • akka-mailboxes-common
    • akka-multi-node-testkit
    • akka-osgi
    • akka-persistence-experimental
    • akka-remote-tests
    • akka-remote
    • akka-slf4j
    • akka-stream-experimental (これだけ、versionの規則違う)
    • akka-testkit
    • akka-transactor
    • akka-zeromq (依存関係の都合上、現状Scala2.10しか出てない?) *3
    • akka-contrib (これもexperimental https://github.com/akka/akka/blob/v2.3.3/project/AkkaBuild.scala#L617-L624)

This module of Akka is marked as
experimental, which means that it is in early
access mode, which also means that it is not covered
by commercial support. An experimental module doesn't
have to obey the rule of staying binary compatible
between minor releases. Breaking API changes may be
introduced in minor releases without notice as we
refine and simplify based on your feedback. An
experimental module may be dropped in major releases
without prior deprecation.


次回があれば、一番のコアであるakka-actorのモジュールのソースコードリーディング的なことか、もしくはそれぞれのモジュールの大雑把な解説や依存関係の整理をしたいなーと思ってる

*1:そして、すぐに古くなる可能性もある

*2:publishされてるもののみ。内部的に存在するテスト用のものは除く。また、明らかなサンプル用プロジェクトも除く

*3:akkaの人がpull reqしてる https://github.com/valotrading/zeromq-scala-binding/pull/27