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
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
83
20250527 #shinjukurb KaigiEffect LT
bash0c7
2
48
【加筆修正版】ハードワークを支えるフィジカルとメンタルを構築る#rubymusclemixin 活動 #きのこ2025 #きのこ2025_b
bash0c7
0
200
存在感を構築る方法
bash0c7
0
87
introduction
bash0c7
0
48
みんな大好き 🫶🏼 取引先との「セキュリティチェックリスト」への付き合い方
bash0c7
0
2.2k
【公開版資料】発表資料 新メンバー活躍までのオンボーディングとそのTips
bash0c7
0
930
Shinjuku.rb #91 好きなもの紹介LT大会 "便利"や"役に立つ"とは別方面のRubyをつかったプログラミングがたのしい話
bash0c7
0
270
#oedo10 継続的 #RubyMuscleMixin 実践入門/RubyMuscleMixin
bash0c7
0
2k
Other Decks in Technology
See All in Technology
SalesforceArchitectGroupOsaka#20_CNX'25_Report
atomica7sei
0
100
変化する開発、進化する体系時代に適応するソフトウェアエンジニアの知識と考え方(JaSST'25 Kansai)
mizunori
0
160
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
16
4.9k
白金鉱業Meetup_Vol.19_PoCはデモで語れ!顧客の本音とインサイトを引き出すソリューション構築
brainpadpr
2
500
エンジニア向け技術スタック情報
kauche
1
110
Welcome to the LLM Club
koic
0
140
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
10
3.2k
Create a Rails8 responsive app with Gemini and RubyLLM
palladius
0
140
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
500
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
3
410
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
160
Snowflake Summit 2025 データエンジニアリング関連新機能紹介 / Snowflake Summit 2025 What's New about Data Engineering
tiltmax3
0
270
Featured
See All Featured
Bash Introduction
62gerente
614
210k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
We Have a Design System, Now What?
morganepeng
53
7.6k
Designing for humans not robots
tammielis
253
25k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Agile that works and the tools we love
rasmusluckow
329
21k
Adopting Sorbet at Scale
ufuk
77
9.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
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で たのしく正しく 業務を遂行