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
290
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
2.8k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
1
330
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / 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
970
サマーインターンシップ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
Oxcを導入して開発体験が向上した話
yug1224
4
310
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
780
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
160
Modding RubyKaigi for Myself
yui_knk
0
920
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
150
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
220
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.6k
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
530
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
We Have a Design System, Now What?
morganepeng
55
8.2k
Navigating Team Friction
lara
192
16k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
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
働くをもっと楽しく、創造的に