Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ここ数ヶ月で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

yoshiyoshifujii

August 30, 2020
Tweet

More Decks by yoshiyoshifujii

Other Decks in Programming

Transcript

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

    View Slide

  2. 自己紹介
    - FUJII Yoshitaka
    - @yoshiyoshifujii
    - Chatwork株式会社
    - Scala関西勉強会スタッフ
    - 登壇
    - ScalaMatsuri2019
    - 実践 Clean Architecture
    - 趣味
    - ⛰ ⛺ ‍♂ 庭DIY

    View Slide

  3. 今日
    お話したいこと

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. 今日は、Akka Documentationを
    どう読んで
    どう模写したか
    紹介

    View Slide

  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 さんのスライドがオススメ

    View Slide

  19. Akka Documentation
    19
    https://doc.akka.io/docs/akka/current/index.html
    サンプルとして
    Getting Started Guide
    を取り上げます。

    View Slide

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

    View Slide

  21. 英語つらい… DeepL や Google翻訳 使う
    - Akka は、プロセッサコアとネットワークにまたがるスケーラブルで回復力のある
    システムを設計するためのオープンソースのライブラリです。Akka を使用するこ
    とで、信頼性の高い動作やフォールトトレランス、高性能を実現するための低レベ
    ルのコードを書く代わりに、ビジネスのニーズを満たすことに集中することができ
    ます。
    - (略)
    - Akkaを学び、アクターモデルをどのように使うかを学ぶことで、困難な分散/並列
    システムの問題を、すべてが緊密にかつ効率的に統合された統一的なプログラミン
    グモデルで解決する、広大で深いツールのセットにアクセスできるようになりま
    す。
    ※ 翻訳原文ままですが、とても意味が分かる。活用しましょう。
    21

    View Slide

  22. まずは、ローカルで実行してみる
    https://developer.lightbend.com/guides/akka-quickstart-scala/
    22

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. 書かないとよー分からん
    - ダウンロードしてきたプロジェクトを動かしてコードを読んでもよー分からん
    - ドキュメント読んでるだけやとよー分からん
    - だんだん眠くなってくる
    - コード書きたい
    - とにかく書く
    - なんかやってる気分も盛り上がる
    - 勉強してる気になる
    - 何度も書くことで手になじむ
    - ノリを掴む
    29

    View Slide

  30. IntelliJ IDEAで空のScalaプロジェクトを作る
    30

    View Slide

  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

    View Slide

  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
    )
    )
    変更後

    View Slide

  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

    View Slide

  34. ドキュメントを読みながら、まずは写経
    34
    https://developer.lightbend.com/guides/akka-quickstart-scala/define-actors.html

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  39. Testを書く
    39

    View Slide

  40. Testを自ら書くのオススメ
    - Documentに書いてあるコードを正常に動かすTestを書くのオススメ
    - Testを書くことに慣れる
    - どうするとこのコードが動くのか分かる
    - Mainを書く場合、Guardian Actorを作るのが面倒
    - Testだと、ActorTestKitがそのあたりさくっと解決してくれる
    - ActorsのTestingの章を先に読んでおくのも良いかも
    - https://doc.akka.io/docs/akka/current/typed/testing.html
    40

    View Slide

  41. まとめ
    - 1次ソースにあたった
    - DeepLを使えば英語Documentに時間をとられず進められた
    - 書くことで理解を深めた
    - Testを書くと、理解が深まった
    41

    View Slide

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

    View Slide

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

    View Slide