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
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.1k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
1
350
プロダクトオーナーの視座から見た信頼性とオブザーバビリティ / 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
180
Chatworkのドメインをモデリングした / Modeling Chatwork domain
yoshiyoshifujii
0
990
サマーインターンシップ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
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
140
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
350
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
440
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
3
1k
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
630
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
570
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
100
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
500
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.3k
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
180
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
GraphQLとの向き合い方2022年版
quramy
50
15k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
650
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
エンジニアに許された特別な時間の終わり
watany
108
250k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
The Invisible Side of Design
smashingmag
301
52k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Evolving SEO for Evolving Search Engines
ryanjones
0
280
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
働くをもっと楽しく、創造的に