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
本当はこうすべきだったStep Functions
Search
Tatsuro Moriyama
August 25, 2026
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
本当はこうすべきだったStep Functions
JAWS Okayama 2026/08/22
Tatsuro Moriyama
August 25, 2026
Other Decks in Programming
See All in Programming
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
460
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
910
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
気持ちぃ〜角丸 Squircle
ryu1013
0
310
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
150
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
カツオ、ご期待ください
suneo3476
0
190
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.3k
Are puppies a ranking factor?
jonoalderson
2
4.1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Chasing Engaging Ingredients in Design
codingconduct
0
360
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Transcript
本当はこうすべきだった Step Functions JAWS-UG Okayama 2026/8/22
かんたんな自己紹介 もりやまたつろー Twitter/GitHub: @t4traw 株式会社ミライ工事でウェブエンジニアをやっています。 愛知県の豊橋市という所に住んでいます。 好きな言語はGoです。 サウナとボードゲームと釣りが趣味です。
社外でのこういうトーク初挑戦です。 頑張ります🥺
今日話すこと はじめに 実際に出会った課題と解決 コストとスピード Step Functions から Step Functions を呼びたい
ローカル開発とデバッグが難しい まとめ
今日話すこと 対象: Step Functionsをこれから使おうと思っている方。 Step Functionsを使い始めた方。
はじめに
こんなモノ作っています なんやかんや
こんなモノ作っています
こんなモノ作っています 非同期処理にして欲しい xlsxとpdfを同時に出力したい 2000枚以上出力したい ざわ… もっと情報を書き込みたい 写真は高画質で欲しい ざわ… ざわ… 同時に複数出力をしたい
ざわ… 写真と一緒にZipで出力したい 背景画像もつけたい
こんなモノ作っています
実際に出会った課題と解決
コストとスピード
コストとスピード ボトルネックの1つだった大量の画像処理を解決したい。 1枚の画像を(1関数==1ステップ)で処理し、 Mapステートで並列処理するファンアウト構成に。 1,000ステップあたり $0.025なので、 例えば2000枚の写真台帳を月に10000回出力で StepFunctionsだけで$500に。 通常のMapステートだと並列数が最大40。 枚数の壁はクリアできましたが、この辺りが
ユーザー数や枚数が増えてくると気になりだしました。
コストとスピード これで解決しようとした Expressワークフロー × Distributed Map
コストとスピード Expressワークフローとは 高パフォーマンス低コストで、標準タイプとは異なり、ワークフロー自体の実行回数、 実行時間、メモリ消費量に基づく料金体系のマシンタイプ。 ステップ数が料金に直接関係ありません。
コストとスピード Expressワークフローとは 高パフォーマンス低コストで、標準タイプとは異なり、ワークフロー自体の実行回数、 実行時間、メモリ消費量に基づく料金体系のマシンタイプ。 ステップ数が料金に直接関係ありません。
コストとスピード Distributed Mapとは マップのイテレーションを、独自の実行履歴を持つ個別の子ワークフロー実行として ファンアウトできるMapステート。
コストとスピード
コストとスピード 通常ワークフローの中でExpressワークフローが サクっと作れるのベンリー! Expressワークフローって事はこのステップ数で かかる料金、全部なくなって実行時間で課金にな るんじゃね? 画像の処理って全部で数十秒くらいだから、これ はコスト削減できるっしょ!
コストとスピード さっそく実際に構成を変えてみた結果 全然安くならない🥺 むしろ高くなってる……?
コストとスピード Mapステート 画像処理 画像処理 画像処理
コストとスピード Mapステート 画像処理 画像処理 画像処理 これ全部Expressワークフローでステップ数関係なくなる?
コストとスピード Mapステート 画像処理 画像処理 実際はここだけExpressワークフローになる 画像処理
コストとスピード Mapステート 画像処理 画像処理 画像処理 親のステップ数変わってない……
コストとスピード 本当はこうすべきだった もっと単純にDistributed Map + ItemBatcher
コストとスピード ItemBatcherとは Mapステートの入力を、指定した件数ずつまとめて 1 イテレーションに渡す設定。 1 [ 2 { 3
"verdict": "true", 4 "statement_date": "6/11/2008", 5 "statement_source": "speech" 6 }, 7 { 8 "verdict": "false", 9 "statement_date": "6/7/2022", 10 "statement_source": "television" 11 }, 12 { 13 "verdict": "true", 14 "statement_date": "5/18/2016", 15 "statement_source": "news" 16 }, 17 ... 18 ] 1 { 2 "Items": [ 3 { 4 "verdict": "true", 5 "statement_date": "6/11/2008", 6 "statement_source": "speech" 7 }, 8 { 9 "verdict": "false", 10 "statement_date": "6/7/2022", 11 "statement_source": "television" 12 } 13 ] 14 }
コストとスピード 1ステップ1画像ではなく、1ステップ10画像くらいにしてステップ数を 削減。 Goなのでこの辺りは得意。スピードもそこそこ改善。 料金はステップ数以外の事も色々計測すると、なんやかんやで 1ワークフロー約1/6から1/8くらいになりました。 画像部分のMapステートは約60秒から約10秒くらいに。
Step Functions から Step Functions を呼びたい
StepFunctions から StepFunctions を呼びたい 無事動くようになったワークフローを、 複数動かしてまとめてZipで欲しいという要望。
StepFunctions から StepFunctions を呼びたい これで解決しようとした .waitForTaskTokenというトークンを発行し、そのトークンを渡して返ってくるまで待つ という機能があります。 ちなみにこの待ってる間は無料です。 それを使って、子ワークフローを並列で起動することにしました。
StepFunctions から StepFunctions を呼びたい 本当はこうすべきだった もっとシンプルにStep Functionsの中で Step Functionsを呼び出せる方法(.sync)が あった……。
トークン受け渡しのコードが丸ごと不要 コストは変わらない。 子ワークフローで失敗した時に親ワークフ ローから辿っていけるので分かりやすい。
StepFunctions から StepFunctions を呼びたい Step Functionsは多くのAWSサービスの呼び出しが標準でできる。 呼び出すだけのLambdaは大体省略できる。 ワークフロースタジオは今できる事が分かりやすく書いてあるので、 もっと積極的に触ってみるべきでした。
ローカル開発とデバッグが難しい
ローカル開発とデバッグが難しい Lambda 1つだけだった頃 ※RIE: Lambdaをローカル環境でテスト実行するためのツール。AWS Runtime Interface Emulator。 ※air: Go言語用のコードを保存したら自動でホットリロードしてくれるツール。
ローカル開発とデバッグが難しい Step Functionsに移行後 Step Function Localは2024年にサポート終了したので試さず……。 色々探して触っているが、コレダ!というモノに出会えていない。 LocalStackなどのツールなどで頑張って環境作るより、 開発専用環境作ってデプロイして確認した方が早いし確実という状態。 Goだと実質Lambdaランタイムがなく、コンテナイメージを使っていま
す。それを含めて簡単にエミュレートする方法が無さそう。
ローカル開発とデバッグが難しい これに関しては「本当はこうすべきだった」が見つかっていません。 いい方法あったら懇親会で教えてください🙏
まとめ
Distributed MapとItemBatcherで比較的簡単にコスト削減とスピードアッ プができました。並列処理で同じ問題を抱えている方にはオススメです。 今回僕のパターンではExpressワークフローが勘違いでうまくハマりませ んでしたが、内部でサクっと作れるのは知見でした。 どっかでうまい使いどころに出会いたい。 並列数やパフォーマンスなどを計測しながら改善していくので、早めに ダッシュボードやコスト計測できる環境を作っておくのがオススメで す。 ワークフローを作ろうという時にワークフロースタジオを見て、
今現在できる事はそこで確認しておいた方が良い。 そして、やりたい事はだいたい標準で機能が提供されている事が多い。
様々なサービスの組み合わせが動いているワークフローを 見られるのがめちゃ面白い。Step Functions最高です。
本当はこうすべきだった Step Functions おしまい。
ご清聴ありがとうございました🙇♂️