ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months

ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months

プレScalaMatsuri 兼 リハーサル オンラインLT大会
https://scalaconfjp.doorkeeper.jp/events/110045

C952d9f90c7ec6cb1b5513c05d3db536?s=128

yoshiyoshifujii

August 30, 2020
Tweet

Transcript

  1. プレScalaMatsuri 兼 リハーサル オンラインLT大会 Chatwork株式会社 FUJII Yoshitaka ここ数ヶ月でAkkaを勉強した 方法について紹介

  2. 自己紹介 - FUJII Yoshitaka - @yoshiyoshifujii - Chatwork株式会社 - Scala関西勉強会スタッフ

    - 登壇 - ScalaMatsuri2019 - 実践 Clean Architecture - 趣味 - ⛰ ⛺ ‍♂ 庭DIY
  3. 今日 お話したいこと

  4. Akka何から 勉強したらいい のか分からん

  5. Akka HTTPは 使ったことあるけ どActorプログラ ミング分からん

  6. Akka Streamは 使ったことあるけ どActorプログラ ミング分からん

  7. 私は こうやって勉強 しましたよー を話します

  8. 書籍 8 概念やパターンや雰囲気は掴めるけど…Akkaのバージョンが古い…

  9. 書籍 9 今回、こちらは、読んでおりません

  10. Akka Documentation 10 https://doc.akka.io/docs/akka/current/index.html

  11. Akkaの ドキュメント を読もう

  12. Akkaの ドキュメント を模写しよう

  13. 結局は 一次ソース だよね

  14. Lightbend Academy 14 https://academy.lightbend.com/

  15. 夏季限定で 無償で受講 できちゃう ※2020/08/31までかも…

  16. 2020年4月から5ヶ月間で勉強したこと Akka Documentation 16 - Akka Actors - Akka Cluster

    - Akka Persistence - Akka Streams - Akka Discovery Lightbend Academy
  17. 今日は、Akka Documentationを どう読んで どう模写したか 紹介

  18. Lightbend Academyについては… 18 https://speakerdeck.com/crossroad0201/lightbend-aca demyonraintoreninguwoshou-ketemita https://speakerdeck.com/crossroad0201/lightbend-ac ademyderiakuteibusisutemufalseji-chu-woxue-bou-jju g-lt Yohei TSUJI

    @crossroad0201 さんのスライドがオススメ
  19. Akka Documentation 19 https://doc.akka.io/docs/akka/current/index.html サンプルとして Getting Started Guide を取り上げます。

  20. Documentを読む 20 https://doc.akka.io/docs/akka/current/typed/guide/introduction.html

  21. 英語つらい… DeepL や Google翻訳 使う - Akka は、プロセッサコアとネットワークにまたがるスケーラブルで回復力のある システムを設計するためのオープンソースのライブラリです。Akka を使用するこ

    とで、信頼性の高い動作やフォールトトレランス、高性能を実現するための低レベ ルのコードを書く代わりに、ビジネスのニーズを満たすことに集中することができ ます。 - (略) - Akkaを学び、アクターモデルをどのように使うかを学ぶことで、困難な分散/並列 システムの問題を、すべてが緊密にかつ効率的に統合された統一的なプログラミン グモデルで解決する、広大で深いツールのセットにアクセスできるようになりま す。 ※ 翻訳原文ままですが、とても意味が分かる。活用しましょう。 21
  22. まずは、ローカルで実行してみる https://developer.lightbend.com/guides/akka-quickstart-scala/ 22

  23. Lightbend Tech Hub から サンプルプロジェクトをDL https://developer.lightbend.com/start/?group=akka&project=akka-quickstart-scala 23

  24. 書いてある通りに進める (DeepLがんがん使う) 24

  25. 書いてある通りに進める 25

  26. 実行できるこ とが確認でき たら…

  27. 捨てる ダウンロードしたプロジェクトを

  28. 模写しよう 最初は写経

  29. 書かないとよー分からん - ダウンロードしてきたプロジェクトを動かしてコードを読んでもよー分からん - ドキュメント読んでるだけやとよー分からん - だんだん眠くなってくる - コード書きたい -

    とにかく書く - なんかやってる気分も盛り上がる - 勉強してる気になる - 何度も書くことで手になじむ - ノリを掴む 29
  30. IntelliJ IDEAで空のScalaプロジェクトを作る 30

  31. scalafmt を適用する - コードを模写していく際に、フォーマットとかあまり気にしたくないので - さくっとscalafmt入れておいて、さくさく模写模写しながらフォーマットしていく 31 version = 2.6.4

    style = defaultWithAlign danglingParentheses = true indentOperator = spray includeCurlyBraceInSelectChains = true maxColumn = 120 rewrite.rules = [RedundantParens, SortImports, PreferCurlyFors] spaces.inImportCurlyBraces = true binPack.literalArgumentLists = false unindentTopLevelOperators = true optIn.breaksInsideChains = true newlines.alwaysBeforeTopLevelStatements = true addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") .scalafmt.conf project/scalafmt.sbt
  32. build.sbt を良い感じにする 32 name := "akka-quickstart-scala" version := "0.1" scalaVersion

    := "2.13.3" 変更前 lazy val akkaVersion = "2.6.8" lazy val root = (project in file(".")) .settings( name := "akka-quickstart-scala", version := "0.1", scalaVersion := "2.13.3", // サンプルコードは、 2.13.1だけど最新にしよう libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor-typed" % akkaVersion, "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, "ch.qos.logback" % "logback-classic" % "1.2.3" excludeAll ExclusionRule(organization = "org.slf4j"), "com.typesafe.akka" %% "akka-actor-testkit-typed" % akkaVersion % Test, "org.scalatest" %% "scalatest" % "3.1.0" % Test ) ) 変更後
  33. GitHubに追加しちゃおう - 草も生えますし - .gitignoreを追加 - git init - git

    add . - git commit -am “first commit” - hub create - git push origin master - hub browse - https://github.com/yoshiyoshifujii/akka-quickstart-scala/commit/dc7e3964 63640ef0ce4ce4e6533df4740b8f6d51 33
  34. ドキュメントを読みながら、まずは写経 34 https://developer.lightbend.com/guides/akka-quickstart-scala/define-actors.html

  35. 写経の様子をデモ DEMO 35

  36. つづきを読みながら写経 36 https://developer.lightbend.com/guides/akka-quickstart-scala/define-actors.html

  37. がんがん写経 37 https://developer.lightbend.com/guides/akka-quickstart-scala/define-actors.html

  38. 写経したコードを読みながら説明を読む - 写経するときは、意味とか理解しながら書いていない - 書いた内容について、Documentを読んで理解していく - 説明を読みつつ、自分で書いたコードを読む - 分からない説明のところは、コードを変更して試す -

    補完の他の候補とか見る - 自分の実装とLibraryの境目を見つける - Libraryの実装内容を読む 38
  39. Testを書く 39

  40. Testを自ら書くのオススメ - Documentに書いてあるコードを正常に動かすTestを書くのオススメ - Testを書くことに慣れる - どうするとこのコードが動くのか分かる - Mainを書く場合、Guardian Actorを作るのが面倒

    - Testだと、ActorTestKitがそのあたりさくっと解決してくれる - ActorsのTestingの章を先に読んでおくのも良いかも - https://doc.akka.io/docs/akka/current/typed/testing.html 40
  41. まとめ - 1次ソースにあたった - DeepLを使えば英語Documentに時間をとられず進められた - 書くことで理解を深めた - Testを書くと、理解が深まった 41

  42. 求ム Chatwork株式会社ではScalaエンジニアを募集中です! 42 https://hrmos.co/pages/chatwork/jobs/1020001

  43. 働くをもっと楽しく、創造的に