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
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
2.8k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / 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
670
Recapping Chatwork Scala Journey - ScalaMatsuri2023
yoshiyoshifujii
0
3.1k
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
160
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
Creating Composable Callables in Contemporary C++
rollbear
0
170
Webフレームワークの ベンチマークについて
yusukebe
0
180
Agentic UI
manfredsteyer
PRO
0
210
The NotImplementedError Problem in Ruby
koic
1
990
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
200
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
420
dRuby over BLE
makicamel
2
400
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
320
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
140
Performance Engineering for Everyone
elenatanasoiu
0
240
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
220
Featured
See All Featured
Done Done
chrislema
186
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
The agentic SEO stack - context over prompts
schlessera
0
830
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Navigating Weather and Climate Data
rabernat
0
260
Documentation Writing (for coders)
carmenintech
77
5.4k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
The Cost Of JavaScript in 2023
addyosmani
55
10k
Designing Powerful Visuals for Engaging Learning
tmiket
1
430
The Curious Case for Waylosing
cassininazir
1
410
New Earth Scene 8
popppiees
3
2.4k
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
働くをもっと楽しく、創造的に