Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ここ数ヶ月でAkkaを勉強した方法について紹介 / I have studied Akka i...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yoshiyoshifujii
August 30, 2020
Programming
350
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
310
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
3.2k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
1
360
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / Reliability and Observability from the Perspective of a Product Owner
yoshiyoshifujii
2
2k
プロダクトオーナーがFour Keys + 信頼性に思うところ / Product Owners Think of Four Keys + Reliability
yoshiyoshifujii
0
700
Recapping Chatwork Scala Journey - ScalaMatsuri2023
yoshiyoshifujii
0
3.1k
コードをどまんなかに据えたモデリング-Scala版 / Modeling with code in the middle-Scala version
yoshiyoshifujii
0
180
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
1k
サマーインターンシップ2019で学生とDDDなScala開発に取り組んだ / Working on DDD and Scala development with students at Summer Internship 2019
yoshiyoshifujii
2
4.6k
Other Decks in Programming
See All in Programming
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
すこし踏み込む CancellationToken
htkym
2
1.7k
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
120
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
1
340
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
AmebaブログはKMPから卒業します
kmars0605
0
160
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
1.4k
ActionController meets Protocol Buffers
sorah
0
440
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
How to Talk to Developers About Accessibility
jct
2
580
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
HDC tutorial
michielstock
2
960
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Making the Leap to Tech Lead
cromwellryan
135
10k
Designing for Timeless Needs
cassininazir
1
520
Facilitating Awesome Meetings
lara
57
7.2k
WCS-LA-2024
lcolladotor
0
890
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
働くをもっと楽しく、創造的に