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
Design & Implement Batch Stream Processing Appl...
Search
bash0C7
March 01, 2014
Technology
4
3.7k
Design & Implement Batch Stream Processing Application for Ruby
沖縄Ruby会議01発表「Rubyによるバッチ業務のストリーム処理化の設計と実装」
http://regional.rubykaigi.org/okrk01/
bash0C7
March 01, 2014
Tweet
Share
More Decks by bash0C7
See All by bash0C7
20250527 #shinjukurb KaigiEffect LT
bash0c7
2
42
【加筆修正版】ハードワークを支えるフィジカルとメンタルを構築る#rubymusclemixin 活動 #きのこ2025 #きのこ2025_b
bash0c7
0
190
存在感を構築る方法
bash0c7
0
82
introduction
bash0c7
0
44
みんな大好き 🫶🏼 取引先との「セキュリティチェックリスト」への付き合い方
bash0c7
0
2.1k
【公開版資料】発表資料 新メンバー活躍までのオンボーディングとそのTips
bash0c7
0
910
Shinjuku.rb #91 好きなもの紹介LT大会 "便利"や"役に立つ"とは別方面のRubyをつかったプログラミングがたのしい話
bash0c7
0
260
#oedo10 継続的 #RubyMuscleMixin 実践入門/RubyMuscleMixin
bash0c7
0
1.9k
inside_announce
bash0c7
0
800
Other Decks in Technology
See All in Technology
令和最新版TypeScriptでのnpmパッケージ開発
lycorptech_jp
PRO
0
100
TypeScript と歩む OpenAPI の discriminator / OpenAPI discriminator with TypeScript
kaminashi
1
130
Oracle Cloud Infrastructure:2025年5月度サービス・アップデート
oracle4engineer
PRO
0
320
プラットフォームとしての Datadog / Datadog as Platforms
aoto
PRO
1
330
他チームへ越境したら、生データ提供ソリューションのクエリ費用95%削減へ繋がった話 / Cross-Team Impact: 95% Off Raw Data Query Costs
yamamotoyuta
0
170
スプリントゴールで価値を駆動しよう
takufujii
3
1.6k
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.1k
新卒から4年間、20年もののWebサービスと向き合って学んだソフトウェア考古学 - PHPカンファレンス新潟2025 / new graduate 4year software archeology
oguri
2
340
OSMnx Galleryの紹介
mopinfish
0
140
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
12
2k
What's Next in OpenShift Q2 CY2025
redhatlivestreaming
1
470
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
35
6.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Why Our Code Smells
bkeepers
PRO
336
57k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
460
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
610
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Done Done
chrislema
184
16k
Statistics for Hackers
jakevdp
799
220k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Raft: Consensus for Rubyists
vanstee
137
7k
Transcript
RRuubbyyによる バッチ業務の ストリーム処理化の 設計と実装
みなさん
業 務
l ぎょう‐む 〔ゲフ‐〕 【業務】 1 職業や事業などに関して、継続して行う仕事。 2 法律で、社会生活において反復・継続して行う活動の こと。職業上の活動に限らず、娯楽のための個人的な行 為も含まれるが、家事や育児など家庭生活上の活動は含
まれない。→業務上過失 デジタル大辞泉(小学館) hhttttpp::////kkoottoobbaannkk..jjpp//wwoorrdd//業務
オンライン処理 バッチ処理
hhttttppでリクエスト ccrroonnで定時実行
**//55 ** ** ** ** rruubbyy bbaattcchh..rrbb
IUUQTHJUIVCDPNCBTI$UXFFGGZCMPCNBTUFSBQQNPEFMTQPTU@TFSWJDFSC
最高の進捗 最高の成果
業務ルール変更 出力先の追加 時宜を得た通知
いい感じにかい ていこうよ!
でもどうやった らいいだろう?
IUUQXXXqJDLSDPNQIPUPTFOOVJSJOTFUCZODTB IUUQNBHB[JOFSVCZJTUOFU 5PLZP3VCZ,BJHJ3FQPSU@TU “古きよき時代から来ました 真面目なSSEE 真面目にSSEE” こしば としあき @@bbaasshh00CC77 ピクシブ株式会社
エンジニア 広告配信技術係,,ppiixxiivv開発統括係 いくつかのRRuubbyy関連催事運営 レイヤーさん
結論
IUUQqVFOUEPSH
アクセスログ収集 行動ログ収集
l FFlluueennttdd iiss aann ooppeenn ssoouurrccee ddaattaa ccoolllleeccttoorr ddeessiiggnneedd ffoorr
pprroocceessssiinngg hhiigghh--vvoolluummee ddaattaa ssttrreeaammss.. IUUQqVFOUEPSH
具体例
開発状況のリアルタ イム通知システム
-- IIssssuueeの更新 -- mmaasstteerrへのppuusshh -- プルリの立ち上がり を複数の手段で通知
IUUQ JTTVFߋ৽ JEPCBUB௨ .3ߋ৽ JEPCBUB௨ HJUQVTI JEPCBUB௨ HJUQVTI ճूܭ (SPXUI'PSFD
BTUඳը Πϕϯτछ ผఆ "NB[PO424 ΤϯΩϡʔ HJUQVTI J1IPOF௨ Ϛείοτ ௨ "NB[PO424 σΩϡʔ ผͷ 'MVFOUE
JEPCBUBJP グループチャットに流す
デスクトップマスコット通知
TPVSDF UZQFIUUQ QPSU CJOE CPEZ@TJ[F@MJNJUN LFFQBMJWF@UJNFPVUT TPVSDF NBUDIHJUMBC UZQFDPQZ
TUPSF UZQFSFXSJUF BEE@QSFGJYGJMUFSFE SVMF LFZPCKFDU@LJOE QBUUFSO? BQQFOE@UP@UBHUSVF MBTUUSVF SVMF SVMF LFZSFG QBUUFSO?SFGTaIFBETa BQQFOE@UP@UBHUSVF SVMF TUPSF NBUDI NBUDIGJMUFSFEHJUMBC NFSHF@SFRVFTU UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPXFC@IPPL@VSM NFTTBHF@UFNQMBUF<':*>5JNFOFX SFDPSE<PCKFDU@BUUSJCVUFT> <DSFBUFE@BU> TUSGUJNF NEQ ͔ΒͷʠSFDPSE<PCKFDU@BUUSJCVUFT><UJUMF>ʠͷ݅ʹ ಈ͖͕͋ΔͶ TUPSF NBUDI NBUDIGJMUFSFEHJUMBC JTTVF UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPXFC@IPPL@VSM NFTTBHF@UFNQMBUF<':*>5JNFOFX SFDPSE<PCKFDU@BUUSJCVUFT> <DSFBUFE@BU> TUSGUJNF NEQ ͔ΒͷʠSFDPSE<PCKFDU@BUUSJCVUFT><UJUMF>ʡͷ݅ʹ ಈ͖͕͋ΔͶ TUPSF NBUDI NBUDIGJMUFSFEHJUMBC NBTUFS UZQFDPQZ TUPSF UZQFSFXSJUF BEE@QSFGJYSFXSJUFE TUPSF TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPXFC@IPPL@VSM NFTTBHF@UFNQMBUFʲϦϦʔεࠂʳSFDPSE<VTFS@OBNF>͞Μ͕ʠ SFDPSE<DPNNJUT>NBQ\]D]D<NFTTBHF>TMJDF ? ^KPJO ʡΛϦϦʔε͢ΔΑ TUPSF TUPSF UZQFDVSM DVSM@DPNNBOEDVSM VSM@UFNQMBUFIUUQJNLBZBDDPNBQJ@VSM PQUJPOT@UFNQMBUFEBUBVSMFODPEFNFTTBHFʲϦϦʔεࠂʳSFDPSE<VTFS@OBNF>͞Μ TUPSF TUPSF UZQFTRT RVFVF@OBNFNBLBJ[PI TRT@FOEQPJOUTRTBQOPSUIFBTUBNB[POBXTDPN TUPSF NBUDI NBUDIGJMUFSFEHJUMBC UZQFOVMM NBUDI TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCNBLBJ[PINBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCMJHIUBETNBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCMJHIUBETBOBMZTZTNBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCQJYJWNBTUFS SVO@JOUFSWBMT TPVSDF TPVSDF UZQFFYFD DPNNBOEFDIP LFZTVTFS@JE UBHSFXSJUFEGJMUFSFEHJUMBCEJDQJYJWOFUNBTUFS SVO@JOUFSWBMT TPVSDF NBUDISFXSJUFEGJMUFSFEHJUMBC NBTUFS UZQFDPQZ TUPSF UZQFOVNFSJD@NPOJUPS VOJUNJOVUF PVUQVU@QFS@UBHZFT UBH@QSFGJYDPVOUFE BHHSFHBUFUBH NPOJUPS@LFZVTFS@JE TUPSF NBUDI NBUDIDPVOUFESFXSJUFEGJMUFSFEHJUMBC NBTUFS UZQFDPQZ TUPSF UZQFHSPXUIGPSFDBTU HGBQJ@VSMIUUQBQJ TFSWJDFHJUMBC UBH@GPSTFDUJPO OBNF@LFZTNBY SFNPWF@QSFGJYDPVOUFESFXSJUFEGJMUFSFEHJUMBC TUPSF NBUDI TPVSDF UZQFTRT TRT@FOEQPJOUTRTBQOPSUIFBTUBNB[POBXTDPN SFDFJWF@JOUFSWBM UBHNBLBJ[PITRT TPVSDF NBUDICBTI$@NBLBJ[PI UZQFDPQZ TUPSF UZQFTTUQ TTUQ@TFSWFS TTUQ@QPSU SFRVFTU@NFUIPE/05*': SFRVFTU@WFSTJPO4451 TFOEFSΫϥυి TDSJQU@UFNQMBUFa͋͋οɺ৽͍͠ϦϦʔεͬͯి͕ඈΜͰ͖ͨχϟϯaF TUPSF TUPSF UZQFTUEPVU TUPSF NBUDI hhttttppss::////ggiisstt..ggiitthhuubb..ccoomm//bbaasshh00CC77//6655ff88118899ff77eeee7700aaff99996611ff
ストリーム情報の 自動監視システム
-- 歌手自身が発信した画像 -- イラストレーション投稿 -- セルフポートレート投稿 の収集と自動通知
IUUQTUXJUUFSDPNZVGV@
5XJUUFS 4FBSDI 8FC͔Βը૾ औಘ ը૾ແ͠π Πʔτআڈ JEPCBUB௨ ϩʔΧϧϑ ΝΠϧอଘ UVNCMSߘ
None
TPVSDF UZQFUXJUUFSTFBSDI DPOTVNFS@LFZ999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO99999999999999999999 PBVUI@UPLFO@TFDSFU9999999999999 VTFS@JEZVGV@ DPVOU SVO@JOUFSWBM SFTVMU@UZQFSFDFOU
NFEJBZFT MBUFTU@JE@GJMF UXFFGGZ@ZVGV@@TJODF@JE@GJMFQPT UBHUXFFGGZZVGV TPVSDF NBUDIUXFFGGZ UZQFDPQZ TUPSF UZQFOVMM TUPSF TUPSF UZQFSFXSJUF BEE@QSFGJYGJMUFSFE SVMF LFZNFEJB@VSM QBUUFSO? JHOPSFUSVF SVMF TUPSF NBUDI NBUDIGJMUFSFEUXFFGGZ UZQFSFXSJUFJNBHF SFNPWF@UBH@QSFGJYGJMUFSFE BEE@UBH@QSFGJYSFXSJUFE JNBHF@TPVSDF@LFZNFEJB@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFGBMTF NBUDI NBUDISFXSJUFEUXFFGGZZVGV UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPVSM NFTTBHF@UFNQMBUF SFDPSE<NFEJB@VSM>SFDPSE<OBNF> ʮSFDPSE<UFYU>ʯ SFDPSE<UXFFU@VSM> TUPSF TUPSF UZQFUVNCMS DPOTVNFS@LFZ99999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO9999999999999999 PBVUI@UPLFO@TFDSFU9999999999999999 UVNCMS@VSMUVNCMSDPN UBHT@UFNQMBUF SFDPSE<TDSFFO@OBNF> DBQUJPO@UFNQMBUFSFDPSE<UFYU> SFDPSE<UXFFU@VSM> MJOL@LFZUXFFU@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF QPTU@UZQFQJDUVSF TUPSF TUPSF UZQFJNBHFGJMF TBWF@EJSJNBHF GJMFOBNF@LFZJE FYUFOTJPOKQH JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF TUPSF NBUDI hhttttppss::////ggiisstt..ggiitthhuubb..ccoomm//bbaasshh00CC77//ff3344ddccaa00660044dddd773366990033dd99
FFlluueennttddでの バッチ業務の 設計と実装
まず基本を 思い出そう
入�力 演算 出力と、 記述言語
これがそのまま
入�力プラグイン フィルタ系のプラグイン 出力プラグイン 設定ファイル
入�力 演算 出力と、 記述言語
ポーリング 待ち受け
hhttttpp ttaaiill ttwwiitttteerrsseeaarrcchh などなど
TPVSDF UZQFUXJUUFSTFBSDI DPOTVNFS@LFZ99999999 DPOTVNFS@TFDSFU99999999 PBVUI@UPLFO99999999 PBVUI@UPLFO@TFDSFU99999999 VTFS@JEZVGV@ DPVOU SVO@JOUFSWBM SFTVMU@UZQFSFDFOU
NFEJBZFT MBUFTU@JE@pMFQBUIUPQPT@pMF UBHUXFFGGZZVGV@ TPVSDF
入�力 演算 出力と、 記述言語
データの整形 不要データの排除 などなど
NBUDIUXFFGGZ UZQFSFXSJUF BEE@QSFpYpMUFSFE SVMF LFZNFEJB@VSM QBUUFSO? JHOPSFUSVF SVMF NBUDI
NBUDIpMUFSFEUXFFGGZ UZQFSFXSJUFJNBHF SFNPWF@QSFpYpMUFSFE BEE@QSFpYSFXSJUFE JNBHF@TPVSDF@LFZNFEJB@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFGBMTF NBUDI
入�力 演算 出力と、 記述言語
ttuummbbllrr iiddoobbaattaa ffiillee ss33 その他たくさん!!
NBUDISFXSJUFEUXFFGGZ UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQJEPCBUBXFCIPPL NFTTBHF@UFNQMBUFʮSFDPSE<GPP>ʯ TUPSF TUPSF UZQFUVNCMS
DPOTVNFS@LFZ999999 DPOTVNFS@TFDSFU999999 PBVUI@UPLFO999999 PBVUI@UPLFO@TFDSFU99999999 UBHT@UFNQMBUFSFDPSE<TDSFFO@OBNF> DBQUJPO@UFNQMBUFSFDPSE<CBS> MJOL@LFZUXFFU@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF QPTU@UZQFQJDUVSF TUPSF NBUDI
プラグインの 組み合わせ
単機能なしくみの 組み合わせ
TPVSDF UZQFUXJUUFSTFBSDI DPOTVNFS@LFZ999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO99999999999999999999 PBVUI@UPLFO@TFDSFU9999999999999 VTFS@JEZVGV@ DPVOU SVO@JOUFSWBM SFTVMU@UZQFSFDFOU
NFEJBZFT MBUFTU@JE@GJMF UXFFGGZ@ZVGV@@TJODF@JE@GJMFQPT UBHUXFFGGZZVGV TPVSDF NBUDIUXFFGGZ UZQFDPQZ TUPSF UZQFOVMM TUPSF TUPSF UZQFSFXSJUF BEE@QSFGJYGJMUFSFE SVMF LFZNFEJB@VSM QBUUFSO? JHOPSFUSVF SVMF TUPSF NBUDI NBUDIGJMUFSFEUXFFGGZ UZQFSFXSJUFJNBHF SFNPWF@UBH@QSFGJYGJMUFSFE BEE@UBH@QSFGJYSFXSJUFE JNBHF@TPVSDF@LFZNFEJB@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFGBMTF NBUDI NBUDISFXSJUFEUXFFGGZZVGV UZQFDPQZ TUPSF UZQFJEPCBUB XFCIPPL@VSMIUUQTJEPCBUBJPVSM NFTTBHF@UFNQMBUF SFDPSE<NFEJB@VSM>SFDPSE<OBNF> ʮSFDPSE<UFYU>ʯ SFDPSE<UXFFU@VSM> TUPSF TUPSF UZQFUVNCMS DPOTVNFS@LFZ99999999999999999 DPOTVNFS@TFDSFU9999999999999999999 PBVUI@UPLFO9999999999999999 PBVUI@UPLFO@TFDSFU9999999999999999 UVNCMS@VSMUVNCMSDPN UBHT@UFNQMBUF SFDPSE<TDSFFO@OBNF> DBQUJPO@UFNQMBUFSFDPSE<UFYU> SFDPSE<UXFFU@VSM> MJOL@LFZUXFFU@VSM JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF QPTU@UZQFQJDUVSF TUPSF TUPSF UZQFJNBHFGJMF TBWF@EJSJNBHF GJMFOBNF@LFZJE FYUFOTJPOKQH JNBHF@LFZSBX@NFEJB CBTFFODPEFEGBMTF TUPSF NBUDI 変更に強い 業務処理を実装
IUUQqVFOUEPSHQMVHJO
欲しいのがない?
IUUQEIBUFOBOFKQUBHPNPSJT
ggeemmをつくろう
スレッド内でフェッチ処理を 適当な間隔で動かすだけ IUUQTHJUIVCDPNCBTI$qVFOUQMVHJOSVCZ@FWBMCMPCNBTUFSMJCqVFOUQMVHJOJO@SVCZ@FWBMSC
お約束的実装と rreeccoorrddハッシュを いじるだけ IUUQTHJUIVCDPNCBTI$qVFOUQMVHJOSFXSJUFJNBHFCMPCNBTUFSMJCqVFOUQMVHJOPVU@SFXSJUFJNBHFSC
IUUQTHJUIVCDPNCBTI$qVFOUQMVHJOJNBHFpMFCMPCNBTUFSMJCqVFOUQMVHJOPVU@JNBHFpMFSC
IUUQEPDTqVFOUEPSHKBBSUJDMFTJO@FYFD
スケーリング対応 フェイルオーバー対応
ファイル経由 ネットワーク経由 複数FFlluueennttddを連動
まとめ
l ぎょう‐む 〔ゲフ‐〕 【業務】 1 職業や事業などに関して、継続して行う仕事。 2 法律で、社会生活において反復・継続して行う活動の こと。職業上の活動に限らず、娯楽のための個人的な行 為も含まれるが、家事や育児など家庭生活上の活動は含
まれない。→業務上過失 デジタル大辞泉(小学館) hhttttpp::////kkoottoobbaannkk..jjpp//wwoorrdd//業務
基本に忠実なしかも スケール可能バッチ 業務フレームワーク
IUUQqVFOUEPSH
FFlluueennttddとRRuubbyyで たのしく正しく 業務を遂行