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
非同期処理とは何なのか
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryoichi SEKIGUCHI
July 31, 2025
Technology
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
非同期処理とは何なのか
Ryoichi SEKIGUCHI
July 31, 2025
More Decks by Ryoichi SEKIGUCHI
See All by Ryoichi SEKIGUCHI
functionalなアプローチで動的要素を排除する
ryopeko
1
4.5k
Ruby makes everything
ryopeko
0
180
正しく失敗しながら進むプロダクト開発/railsdm2018
ryopeko
10
6.2k
CircleCI を使って自動(ほぼ)でセキュリティアップデート / circleci meetup
ryopeko
4
620
Kaizen Platform でやっている Kaizen Week というイベントについて / kaize week tokyurubykaigi 10
ryopeko
2
1.2k
mysql casual talks vol7
ryopeko
0
2.6k
rubyhiroba
ryopeko
6
1.4k
devsumi2014-dena-bootcamp2014
ryopeko
40
65k
jtrk02
ryopeko
0
5.8k
Other Decks in Technology
See All in Technology
[2026 Oracle Technical Deep Dive] VMwareワークロードのOCI移行実践ガイド - OCVSでの継続利用からOCIコンピュートへの移行まで (2026年9月17日開催)
oracle4engineer
PRO
0
120
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
210
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
530
AIアプリを使い分けるための共通ツール基盤を考えてみる#devio2026
osawa
0
250
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
590
形式手法を使って仕様をコーディングしよう
mikanichinose
0
180
並行性の問題を防げ!実践トランザクション入門
occhi
0
260
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
840
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.1k
DAMOS - The Smart Cruise Control for RAM
ennael
PRO
1
130
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
130
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
350
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Visualization
eitanlees
153
17k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
440
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
730
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.2k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Marketing to machines
jonoalderson
1
5.8k
Transcript
非同期処理とは何なのか 2025/07/31 @ryopeko 関口亮一
• 関口亮一 • @ryopeko • Backend Engineer
目次 • Batchと非同期処理 • Batch,非同期処理で考慮すること • 使い分け • スケールさせるためのポイント •
運用のためのポイント • もしものために
1 Batchと非同期処理
Batchとは
Batchとは • 特定の日、曜日、時間に起動し処理を行 うもの • 日次、週次、月次で実行したい何か
非同期処理とは
非同期処理とは • Queueなどを用いてメインのプロセスとは 別のプロセスで実行される処理 • 会員登録後に送信するメールの処理な ど、メインの処理をブロックしないで後で (並列に)処理していいものを処理する仕 組み
非同期処理とは • A → B → Cというような処理が連鎖するような 場合、ここでは非同期処理とは言わないことにす る •
そのようなものはWorkflowとかPipelneと言うも のになる。ここで述べるものより更に難しい内容 になるのでここでは扱わない
非同期処理とは • 順番実行はQueueの種類による • FIFO, LIFO とか、どう処理したいかは具体の話 なのでまあ何でも良い
2 Batch, 非同期処理で 考慮すること
Batchと非同期処理の使い分け
例で考える Batchと非同期処理の使い分け • 例: companies table からデータを取得し、 何らかの処理をして、結果をRDBに反映させる
Batchで実装する場合
Batchで実装する場合 1. 自動で決まった日時にあるいは手動で任意のタイミングで処理が起 動する 2. 起動した処理は companies table から対象となるデータを取得する 3.
取得したデータ全件に対して任意の順番でデータを処理する 4. 全ての処理が終わると処理後のデータを得る 5. 得られたデータをRDBに反映する
Batchで実装する場合
非同期処理で実装する場合
非同期処理で実装する場合 1. 自動で決まった日時にあるいは手動で任意のタイミングで処理が起 動する 2. 起動した処理は companies table から対象となるデータを取得する 3.
WorkerはQueueのpushを待っていて、入ってきたQueueをPopする 4. PopしたQueueを受け取ったWorkerはそのデータに対して何らかの 処理を行う
非同期処理で実装する場合 6. 処理が完了したデータに対する結果を得る 7. 得られた結果をRDBに反映させる 8. 全てのQueueが処理されたら処理全体として完了となる
非同期処理で実装する場合
3 使い分け
使い分け • Batch ◦ 1回の実行で完結させられるもの • 非同期処理 ◦ スケールメリットを得たい場合 ◦
処理が並列実行可能なもの
4 スケールさせるための ポイント
スケールさせるためのポイント • 何がボトルネックか見極める • 並列して処理可能な単位を見極める • 処理の境目を見つける
5 運用のための ポイント
運用のためのポイント • 再実行性を担保する(重要) => 処理は失敗するという前提に立つ
運用のためのポイント • 何が成功して何が失敗したかを端的にわ かるようにする => リカバリー、調査をするという前提
運用のためのポイント • 部分実行できるようにする => あらゆる箇所で失敗する可能性がある という前提
運用のためのポイント • 実装は実行時引数を必ず取る状態 (インスタンス)を生成する形で実装する => コンテキストをきちんと作る
運用のためのポイント • 破壊的な処理をメソッドを分けて実装す る => デバッグ、調査時に障壁となる
運用のためのポイント • 調査用のメソッドを用意する => 端的に短時間に状況を把握するため
6 もしものために
Runbookを整備する
Runbookを整備する • もしものことが起きた時の手順書 • 避難訓練的に事前実施
Dashboardを整備する
Dashboardを整備する • 何が起きているかを可視化 • 誰が見ても同じ観測結果になるように
7 まとめ
まとめ • 非同期処理の使い所 • スケールさせるポイントを見つける • 運用を考慮した機能、実装にする • もしものために用意しておくこと