Akkaの運用の話(仮) 
Akka meetup 2014 sep 
2014.09.28(sun)
お前誰よ 
• @Masahito 
• P2P File Transfer Engineer at Skeed 
Co. Ltd. 
• I work with (Scala + Java) & JVM 
• PyConJP2014 Speaker
Akkaつかってる?
https://twitter.com/DesignUXUI/status/490179377099845632
今日話すこと 
• 運用を見据えた話 
• Akka Actorの話しかしませんよ 
• とりあえず使った方がいい機能 
• どんな構成考える?
今日話さないこと 
• 実際の運用について 
• チューニング(用途に依存するため)
Akka個人的にうれしい点 
• メッセージ(Message)が順番制御できる 
• Actor内だとリソースのlockいらず 
• メリットであり、デメリット 
• SuperVisonTree 
• Mement Mori 
• JVM版のOTP的なきのー
とりあえず使った方がいい機能 
• ActorLogging 
• akka-slf4j 
• config 
• Akka FSM
Logging 
class MyActor extends Actor with akka.actor.ActorLogging { 
override def preStart() = { 
log.debug("Starting") 
} 
} 
↓フツーはapplication.confをclasspathが通ってるとこにおく 
val config = ConfigFactory.parseString( """ 
akka { 
loggers = ["akka.event.slf4j.Slf4jLogger"] 
loglevel = "DEBUG" 
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" 
} 
""") 
val as = ActorSystem("test", config)
参考 
• http://doc.akka.io/docs/akka/2.3.6/java/logging.html 
• http://doc.akka.io/docs/akka/2.3.6/general/ 
configuration.html 
• http://doc.akka.io/docs/akka/2.3.6/scala/fsm.html
よく使うbuild.sbt 
name := "testProject" 
version := "0.1" 
scalaVersion := "2.10.4" 
libraryDependencies ++= Seq( 
"com.typesafe.akka" %% "akka-actor" % akkaVersion, 
"com.typesafe.akka" %% "akka-slf4j" % akkaVersion, 
"ch.qos.logback" % "logback-classic" % "1.1.2" 
)
構成について 
• コードだけだとよくわからなくなりがち 
• 絵を残すの大事 
• 人のコードは読めなくなりがち 
• シーケンス図もあるとベター 
• とくにActor間のつながりなど 
• どのタイミングでどんなメッセージ投げるとか忘れがち
コード例 
https://gist.github.com/masahitojp/422be22884c2e575b338 
突っ込み願います
書籍 
• Akka 公式ドキュメント 
• Activatiorにあがってるソースを読むのがオススメ 
• Akka in Action(オススメ!) 
• すごいErlangゆかいに学ぼう!
まとめ 
• 基本的な機能を使うだけでもうれしいものが書ける 
• Akka is DSL 
• Akka使ってるとJavaを意識すること多いよね 
• LoggerとかLoggerとか 
• ThreadPoolとかとか(Futureでもそーだけど
Akkaの運用(仮)から(仮)がとれましたか?
 Thanks!

Akka meetup 2014_sep