Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka i...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yoshiyoshifujii
August 30, 2020
Programming
340
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka in the past few months
プレScalaMatsuri 兼 リハーサル オンラインLT大会
https://scalaconfjp.doorkeeper.jp/events/110045
yoshiyoshifujii
August 30, 2020
More Decks by yoshiyoshifujii
See All by yoshiyoshifujii
技術的負債に立ち向かう、 ひとりから始めるチームづくり / From One to Team: Building Momentum Against Technical Debt
yoshiyoshifujii
1
300
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
3k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
1
340
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / Reliability and Observability from the Perspective of a Product Owner
yoshiyoshifujii
2
1.9k
プロダクトオーナーがFour Keys + 信頼性に思うところ / Product Owners Think of Four Keys + Reliability
yoshiyoshifujii
0
680
Recapping Chatwork Scala Journey - ScalaMatsuri2023
yoshiyoshifujii
0
3.1k
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
170
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
980
サマーインターンシップ2019で学生とDDDなScala開発に取り組んだ / Working on DDD and Scala development with students at Summer Internship 2019
yoshiyoshifujii
2
4.5k
Other Decks in Programming
See All in Programming
今さら聞けない .NET CLI
htkym
0
150
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
200
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.2k
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
190
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.8k
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
210
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
130
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
290
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
120
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
継続モナドとリアクティブプログラミング
yukikurage
3
660
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Chasing Engaging Ingredients in Design
codingconduct
0
240
Rails Girls Zürich Keynote
gr2m
96
14k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
190
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Site-Speed That Sticks
csswizardry
13
1.4k
How to build a perfect <img>
jonoalderson
1
5.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Done Done
chrislema
186
16k
Typedesign – Prime Four
hannesfritz
42
3.1k
From π to Pie charts
rasagy
0
240
How STYLIGHT went responsive
nonsquared
100
6.2k
Transcript
プレScalaMatsuri 兼 リハーサル オンラインLT大会 Chatwork株式会社 FUJII Yoshitaka ここ数ヶ月でAkkaを勉強した 方法について紹介
自己紹介 - FUJII Yoshitaka - @yoshiyoshifujii - Chatwork株式会社 - Scala関西勉強会スタッフ
- 登壇 - ScalaMatsuri2019 - 実践 Clean Architecture - 趣味 - ⛰ ⛺ ♂ 庭DIY
今日 お話したいこと
Akka何から 勉強したらいい のか分からん
Akka HTTPは 使ったことあるけ どActorプログラ ミング分からん
Akka Streamは 使ったことあるけ どActorプログラ ミング分からん
私は こうやって勉強 しましたよー を話します
書籍 8 概念やパターンや雰囲気は掴めるけど…Akkaのバージョンが古い…
書籍 9 今回、こちらは、読んでおりません
Akka Documentation 10 https://doc.akka.io/docs/akka/current/index.html
Akkaの ドキュメント を読もう
Akkaの ドキュメント を模写しよう
結局は 一次ソース だよね
Lightbend Academy 14 https://academy.lightbend.com/
夏季限定で 無償で受講 できちゃう ※2020/08/31までかも…
2020年4月から5ヶ月間で勉強したこと Akka Documentation 16 - Akka Actors - Akka Cluster
- Akka Persistence - Akka Streams - Akka Discovery Lightbend Academy
今日は、Akka Documentationを どう読んで どう模写したか 紹介
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 さんのスライドがオススメ
Akka Documentation 19 https://doc.akka.io/docs/akka/current/index.html サンプルとして Getting Started Guide を取り上げます。
Documentを読む 20 https://doc.akka.io/docs/akka/current/typed/guide/introduction.html
英語つらい… DeepL や Google翻訳 使う - Akka は、プロセッサコアとネットワークにまたがるスケーラブルで回復力のある システムを設計するためのオープンソースのライブラリです。Akka を使用するこ
とで、信頼性の高い動作やフォールトトレランス、高性能を実現するための低レベ ルのコードを書く代わりに、ビジネスのニーズを満たすことに集中することができ ます。 - (略) - Akkaを学び、アクターモデルをどのように使うかを学ぶことで、困難な分散/並列 システムの問題を、すべてが緊密にかつ効率的に統合された統一的なプログラミン グモデルで解決する、広大で深いツールのセットにアクセスできるようになりま す。 ※ 翻訳原文ままですが、とても意味が分かる。活用しましょう。 21
まずは、ローカルで実行してみる https://developer.lightbend.com/guides/akka-quickstart-scala/ 22
Lightbend Tech Hub から サンプルプロジェクトをDL https://developer.lightbend.com/start/?group=akka&project=akka-quickstart-scala 23
書いてある通りに進める (DeepLがんがん使う) 24
書いてある通りに進める 25
実行できるこ とが確認でき たら…
捨てる ダウンロードしたプロジェクトを
模写しよう 最初は写経
書かないとよー分からん - ダウンロードしてきたプロジェクトを動かしてコードを読んでもよー分からん - ドキュメント読んでるだけやとよー分からん - だんだん眠くなってくる - コード書きたい -
とにかく書く - なんかやってる気分も盛り上がる - 勉強してる気になる - 何度も書くことで手になじむ - ノリを掴む 29
IntelliJ IDEAで空のScalaプロジェクトを作る 30
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
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 ) ) 変更後
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 https://developer.lightbend.com/guides/akka-quickstart-scala/define-actors.html
写経の様子をデモ DEMO 35
つづきを読みながら写経 36 https://developer.lightbend.com/guides/akka-quickstart-scala/define-actors.html
がんがん写経 37 https://developer.lightbend.com/guides/akka-quickstart-scala/define-actors.html
写経したコードを読みながら説明を読む - 写経するときは、意味とか理解しながら書いていない - 書いた内容について、Documentを読んで理解していく - 説明を読みつつ、自分で書いたコードを読む - 分からない説明のところは、コードを変更して試す -
補完の他の候補とか見る - 自分の実装とLibraryの境目を見つける - Libraryの実装内容を読む 38
Testを書く 39
Testを自ら書くのオススメ - Documentに書いてあるコードを正常に動かすTestを書くのオススメ - Testを書くことに慣れる - どうするとこのコードが動くのか分かる - Mainを書く場合、Guardian Actorを作るのが面倒
- Testだと、ActorTestKitがそのあたりさくっと解決してくれる - ActorsのTestingの章を先に読んでおくのも良いかも - https://doc.akka.io/docs/akka/current/typed/testing.html 40
まとめ - 1次ソースにあたった - DeepLを使えば英語Documentに時間をとられず進められた - 書くことで理解を深めた - Testを書くと、理解が深まった 41
求ム Chatwork株式会社ではScalaエンジニアを募集中です! 42 https://hrmos.co/pages/chatwork/jobs/1020001
働くをもっと楽しく、創造的に