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
Embulkに足りない5つのこと
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Civitaspo
December 15, 2015
Programming
7
5.6k
Embulkに足りない5つのこと
embulk meetup tokyoで話しました!
ユースケースが書かれているので是非参考にして下さい。
Civitaspo
December 15, 2015
Tweet
Share
More Decks by Civitaspo
See All by Civitaspo
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
3.1k
嗚呼、当時の本番環境の状態で AI Agentを再評価したいなぁ... / Ah, I wish I could re-evaluate the AI Agent in the production environment it was in back then...
civitaspo
0
3k
バクラクのデータ基盤の現在地 / bakuraku-data-platform-202509
civitaspo
1
2k
DatadogのArchived LogsをSnowflakeで高速に検索する方法(Archive Searchでオワコンにならないことを祈って) / How to search Datadog Archived Logs quickly with Snowflake (hoping Datadog Archive Search doesn’t make this obsolete)
civitaspo
0
270
【Snowflake九州ユーザー会#3】Snowflake Summit 2025 最速キャッチアップ会 Snowflake Summit 2025 概要&新機能 / Snowflake Summit 2025 Overview & New Features
civitaspo
0
92
【Snowflake九州ユーザー会#2】BigQueryとSnowflakeを比較してそれぞれの良し悪しを掴む / BigQuery vs Snowflake: Pros & Cons
civitaspo
13
3.3k
【Tokyo dbt Meetup #12】dbtでETL/Reverse ETLやったら思ったより運用が大変でした / The Challenges of ETL/Reverse ETL by dbt
civitaspo
2
370
バクラクのデータ基盤をBigQueryからSnowflakeへ移管した理由 / The reason for migrating Bakuraku data infrastructure from BigQuery to Snowflake
civitaspo
1
550
BigQueryからSnowflakeへ移管して作る最強のデータ基盤 〜Data Ingestion編〜 / The Ultimate Data Platform Migration from BigQuery to Snowflake: Data Ingestion Edition
civitaspo
17
14k
Other Decks in Programming
See All in Programming
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.2k
AtCoder Conference 2025
shindannin
0
1k
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
Python札幌 LT資料
t3tra
7
1.1k
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
570
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.7k
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.2k
dchart: charts from deck markup
ajstarks
3
980
Implementation Patterns
denyspoltorak
0
270
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
220
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
ThorVG Viewer In VS Code
nors
0
760
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
51
Thoughts on Productivity
jonyablonski
74
5k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
230
A Tale of Four Properties
chriscoyier
162
24k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
160
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
The Art of Programming - Codeland 2020
erikaheidi
57
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
740
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
Making Projects Easy
brettharned
120
6.6k
Transcript
EmbulkʹΓͳ͍ 5ͭͷ͜ͱ 2015-12-15 Embulk Meetup Tokyo #2 @Civitaspo
͓͜ͱΘΓ
࡞ͬͨπʔϧͷ͕ ग़͖ͯ·͕͢
ϦϦʔε͠·ͤΜʂ
͝ΊΜͳ͍͞(><)
ཧ༝ɿ͋Δਓ͔ΒͷҰ
ࠓ͜ͷπʔϧΛ ϦϦʔε͢Δͱ ੈͷதΛࠞཚͷӔʹ ר͖ࠐΉ͜ͱ ʹͳͬͯ͠·͏ͩΖ͏ɻ
ࠞཚͷछʹͳΔͩΖ͏ػೳ ʮEmbulk Projectʹظ͢Δ͜ͱʯ ͱ͍͏߲Ͱઆ໌͠·͢
Ͱ࢝Ί·͢ʂ
EmbulkʹΓͳ͍ 5ͭͷ͜ͱ 2015-12-15 Embulk Meetup Tokyo #2 @Civitaspo
ࣗݾհ தࢁوത (@Civitaspo) • DeNA: ೖࣾ3 • ੳܥΠϯϑϥΤϯδχΞ • σʔλճऩڥߏங
• Hadoopӡ༻…etc. • Perl / Ruby / Java • ৽ଔͰձࣾʹೖͬͯॳΊͯί ϯιʔϧ։͍ͨস
࡞ͬͨEmbulk Pluginୡ embulk-input-hdfs embulk-output-hdfs embulk-output-sftp embulk-filter-join-file embulk-filter-json-key embulk-filter-expand-json embulk-filter-flatten-json embulk-filter-distinct
࣭ཁɺΞυόΠε͋ΕtwitterͰʂ
ͪͳΈʹ શ෦Java PluginͰ͕͢
Intellijͬͯॻ͍ͯ·͢ vim!! vim!!
ΞδΣϯμ • ฐࣾͷBulkdataࣄ • ߏஙͨ͠Embulkج൫ • Γͳ͔͔ͬͨΒิͬͨػೳ̑ͭ • Embulk Projectʹظ͢Δ͜ͱ
ΞδΣϯμ • ฐࣾͷBulkdataࣄ • ߏஙͨ͠Embulkج൫ • Γͳ͔͔ͬͨΒิͬͨػೳ̑ͭ • Embulk Projectʹظ͢Δ͜ͱ
ฐࣾͷBulkdataࣄ
HDFS -> Vertica
ฐࣾͷBulkdataࣄ • ݎ࿚ͳϩάճऩج൫ • શͯͷαʔϏεͷϩάHDFSʹ֨ೲ͞ΕΔ • ϑΥʔϚοτ౷Ұ͞Ε͍ͯΔ • TSV +
JSONͷࠞ߹ϑΥʔϚοτ
ฐࣾͷBulkdataࣄ • ੳͰ༻͢ΔओཁετϨʔδVertica • HDFSͷϩάΛͦͷ··Verticaʹ֨ೲ͍ͨ͠ • ͨͩ͠streaming insertͰ͖ͳ͍… • Verticaߴසͳσʔλೖʹඇৗʹ
ऑ͍
Vertica? •ྻࢦܕߴूܭσʔλϕʔε •༻ιϑτΣΞϥΠηϯε(1TB·Ͱແྉ) •ඇৗʹ๛ͳੳؔ •twitterfacebookͰΘΕͯΔ •ฐࣾͷੳڥͷओ࣠
ߴ·Δχʔζ • GCS, S3, BigQueryͳͲcloud storageͷར༻֦େ • HDFS -> Vertica
͚ͩͰͳ͍Bulkloadχʔζ
None
Embulk
͜Ε͕΄͔ͬͨ͠Μʂ
ͬͦ͘͞ಋೖ
ΞδΣϯμ • ฐࣾͷBulkdataࣄ • ߏஙͨ͠Embulkج൫ • Γͳ͔͔ͬͨΒิͬͨػೳ̑ͭ • Embulk Projectʹظ͢Δ͜ͱ
Wrapper ߏஙͨ͠Embulkج൫
σʔλ֨ೲ·ͰͷྲྀΕ
Wrapper 1. GoogleSpreadSheet͔Β εΩʔϚใͱBulkloadλΠϓΛநग़
Wrapper 2. Ϋϥελใεέδϡʔϧใͱ ඥ͚ͯMySQLʹ֨ೲ
Wrapper 3. εέδϡʔϧʹैͬͯRedis Enqueue
Wrapper 4. ඥͮ͘BulkloadλΠϓɺΫϥελ ใ͔Βconfig.ymlΛࣗಈੜ
Wrapper 5. Embulk WrapperΛkick
Wrapper 6. ֨ೲઌͷσʔλΛআ
Wrapper 7. Embulk run
Wrapper 8. ॲཧ݁ՌΛMySQLʹอଘ
Wrapper 9. ݁Ռදࣔ
ৄࡉͳ࣮ʹؔͯ͠ ؾʹͳΔํ࠙ձͰʂ
ࠓ͢෦
Wrapper ࠓ͢෦
Wrapper ࠓ͢෦ ͳΜͰspreadsheetͬͯΔͷʁ
Wrapper ࠓ͢෦ Job QueueཧͲ͏ͬͯΔͷʁ
Wrapper ࠓ͢෦ ͳΜͰwrapper͔·ͯ͠Δͷʁ
Wrapper ࠓ͢෦ embulkʹͳ͔ͬͨͷʁ
ͳͲʹ͍ͭͯ͠·͢
ΞδΣϯμ • ฐࣾͷBulkdataࣄ • ߏஙͨ͠Embulkج൫ • Γͳ͔͔ͬͨΒิͬͨػೳ̑ͭ • Embulk Projectʹظ͢Δ͜ͱ
Γͳ͍͜ͱϥΠϯφοϓ 1. YAMLཧ 2. ୯ମॲཧϑϨʔϜϫʔΫ 3. δϣϒΩϡʔ 4. ฒྻ੍ޚ 5.
ଓ͖͔Β࣮ߦ
Γͳ͍͜ͱϥΠϯφοϓ 1. YAMLཧ 2. ୯ମॲཧϑϨʔϜϫʔΫ 3. δϣϒΩϡʔ 4. ฒྻ੍ޚ 5.
ଓ͖͔Β࣮ߦ
Γͳ͍͜ͱ̍
YAMLཧ
YAMLཧ • Embulkͷ༷͚ͩͲɻɻɻ • 1ͭͷBulkloadʹରͯ͠1ͭͷYAMLϑΝΠϧ
ฐࣾͷࣄ • εΩʔϚใΞφϦετ͕ఆٛ • εΩʔϚใҎ֎ͷઃఆੳج൫͕ཧ => ͻͱͭͷconfig.ymlੜʹෳਓ͕ؔΘΔ͜ͱʹ…
ฐࣾͷࣄ • ରͷBulkload1αʔϏε͋ͨΓ20~50 • ৗʹ20Ҏ্ͷαʔϏε͕ฒྻͰՔಇ͠ɺҠΓม ΘΓܹ͍͠ => େྔͷyaml͕ੜ͞Εͯཧ͕ͭΒ͍(ଓใͱ͔)
None
ج൫ཧ ΞφϦετཧ
None
͘Β͍ʹͳͬͨ
Α͘มΘΔ ΄ͱΜͲมΘΒͳ͍
None
݁ہΑ͘มΘΔͷ εΩʔϚใ͘Β͍
ͭͬͨ͘ • Embulk Config Generator & UI • ଓใΛDBͰҰݩཧ •
BulkloadύλʔϯΛநԽͯ͠DBͰཧ • εΩʔϚใspreadsheetͰཧ
ͭͬͨ͘ • config.yml࣮ߦલʹੜ͞ΕΔͷͰ༷ม ߋͳͲʹॊೈʹରԠͰ͖Δ • ೦ͳ͕Βguess͑ͳ͘ͳΓ·ͨ͠ɻ • ಛʹࠔͬͯͳ͍ • ϩάΛఆٛͨ͠ਓ͕εΩʔϚΛఆٛͯ͠Δ
Embulk Projectʹظ͢Δ͜ͱ • େنར༻ʹͱͬͯͷyaml • fileͰશͯΛཧ͢ΔͷͭΒ͍ • ಉ͡yamlͰཧऀ͕ҟͳΔ • ಉ͡yamlͰมߋස͕ҟͳΔ
Embulk Projectʹظ͢Δ͜ͱ • templateػೳ͚ͩͰͳ͘ɺΑΓଟ࣍ݩʹཧͰ ͖ΔΈ͕ඞཁͳͷͰʁ • ҰํͰɺ݁ہɺۀϑϩʔʹΑΔͷͰΈΜͳࣗ ࡞͢Δͷ͔͠Εͳ͍ͱࢥͬͯΔ
Γͳ͍͜ͱϥΠϯφοϓ 1. YAMLཧ 2. ୯ମॲཧϑϨʔϜϫʔΫ 3. δϣϒΩϡʔ 4. ฒྻ੍ޚ 5.
ଓ͖͔Β࣮ߦ
Γͳ͍͜ͱ2
୯ମॲཧ ϑϨʔϜϫʔΫ
EmbulkBulkload͢Δ͚ͩ • ઃఆ௨Γʹɺ͋Δσʔλιʔε͔Βɺ͋Δσʔ λιʔεσʔλΛϩʔυ͢Δ • Input / Outputͷঢ়ଶʹڵຯ͕ແ͍
͔ͩΒEmbulkͷ୲อ͢Δႈੑ ͜͏ͳΔ • 1ճ࣮ߦ͠Α͏ͱͨ͠Bulkloadʹର͢ΔႈੑΛ ୲อ͠Α͏ͱ͢ΔʢPlugin࣍ୈʣ • વ͚ͩͲɺ֨ೲઌͷσʔλͷ߹ੑΛอͭ ͷͰͳ͍
ฐࣾͷࣄ • HDFS͔ΒVerticaͷ֨ೲৗʹΧϥϜΛߜΔʢ͓ ۚΣ…ʣ • ෳࡶͳKPI͕ݟͨ͘ͳͬͨ࣌ʹΧϥϜՃΛߦ͏ • HDFS্ͷσʔλ͕ඞཁʹͳͬͨλΠϛϯάͰ σʔλͷ࠶ϩʔυ͕ൃੜ =>
ࣄલʹ֨ೲൣғͷσʔλআ͕ඞཁ
ฐࣾͷࣄ • File֨ೲ͕͍ྃͯ͠Δ͔Ͳ͏͔Λ `_SUCCESS` ͱ͍͏ϑΝΠϧΛಉ֊ʹஔ͘͜ͱͰཧ • `_SUCCESS` ͕ͳ͚Εॲཧதͷσʔλͱ ೝࣝ͞ΕΔ =>
ࣄલʹϑΝΠϧͷଘࡏ֬ೝͱࣄޙʹϑΝΠϧͷ put͕ඞཁ
ͱ͍͏͔ • ձࣾʹΑͬͯϧʔϧҧ͑Ͳɺࣄલॲཧࣄޙॲ ཧઈର͍Δͣ
ͭͬͨ͘ • Embulk Wrapper • EmbulkʹΓͳ͍ࣄલɾࣄޙͷ୯ମॲཧΛ αϙʔτ͢ΔWrapper • YAMLͷઃఆϑΝΠϧʹج͍࣮ͮͯߦ͞ΕΔ •
action × storage ͱ͍͏୯ҐͰpluginΛॻ͘
ͪΐͬͱ͚ͩ Embulk Wrapperհ આ໌༻ͷYaml͕ ؒԆͼ͢ΔͷͰ ΞϯΧʔ͍·͢ɻ
actionͱ͍ actionͱ͍͏୯ҐͰ ॲཧΛఆٛ
actionΛarrayͰఆٛ͠ γʔέϯγϟϧʹ࣮ߦ
embulkͷ࣮ߦ
࡞ͬͨActions • vertica#delete • vertica#check_null • vertica#glance (νϥݟ) • s3#poll
• s3#remove • ….
Embulk Projectʹظ͢Δ͜ͱ • Embulkʹ୯ମॲཧϑϨʔϜϫʔΫඞཁෆՄܽ • ґଘؔͷͳ͍୯ମॲཧΛߦ͏ϓϥάΠϯػߏ ͕Embulkʹଂ͞ΕΕɺEmbulkͷΈͰߦ͑Δ ͜ͱͷ෯͕͔ͳΓ͕ΔͷͰͳ͍ͩΖ͏͔ʁ
Γͳ͍͜ͱϥΠϯφοϓ 1. YAMLཧ 2. ୯ମॲཧϑϨʔϜϫʔΫ 3. δϣϒΩϡʔ 4. ฒྻ੍ޚ 5.
ଓ͖͔Β࣮ߦ
Γͳ͍͜ͱ3
δϣϒΩϡʔ
Embullk ͷ࣮ߦΛ Ͳ͏ཧ͠Α͏͔ • େنར༻͢ΔͳΒδϣϒཧͷΈ͕ඞਢ • વ͚ͩͲ Embulk ʹͦΜͳػೳͳ͍ •
ࣗͰ࡞Δ͔طଘͷผͷԿ͔Λ͏͔͠ແ͍
݁ہɺͭͬͨ͘ • Redis/Sidekiq ΛͬͨfifoͳδϣϒΩϡʔ • εέδϡʔϧ࣮ߦɺεέδϡʔϥ͕࣌ؒʹͳΔ ͱ job Λ enqueue
• Adhoc࣮ߦɺϢʔβʔ͕δϣϒ࣮ߦϘλϯΛԡ ͢ͱ job Λ enqueue => ͍͢͝ී௨ͷδϣϒΩϡʔ͆
Workerαʔόʔ(Embulk࣮ߦڥ) • 1αʔόʔ͋ͨΓɺEmbulk 1 process • EmbulkCPUΛ͑Δ΄ͲߴʹͳΔͨΊ • 24 CPU,
memory 60 GB αʔόʔ 6Ͱฒྻ࣮ߦ
ࠓͷͱ͜Ζࠔͬͯͳ͍ͷ͕ͩ • ഉଞॲཧ͕ͪΌΜͱͰ͖͍ͯͳ͍ • ༏ઌॲཧ͕ग़͖ͯͦ͏ • graceful restartͰ͖ͯͳ͍ • …
=> Ұॠߟ͑Δ͚ͩͰग़͖ͯͦ͏ͳ͕͍ͬͺ͍
͜ΕྲྀੴʹEmbulkʹ ظͯ͠ͳ͍ • ॻ͍͚ͨͲEmbulkʹΓͳ͍͜ͱͱ͍͏ΑΓ BatchڥʹΓͳ͍͜ͱ͔ͬͯΜ͡Ͱͨ͠ • ͱ͍͑ɺEmbulkΛར༻͢Δ্Ͱඞཁͳ͜ͱͳ ͷͰϕετϓϥΫςΟε୳ͯ͠·͢
Γͳ͍͜ͱϥΠϯφοϓ 1. YAMLཧ 2. ୯ମॲཧϑϨʔϜϫʔΫ 3. δϣϒΩϡʔ 4. ฒྻ੍ޚ 5.
ଓ͖͔Β࣮ߦ
Γͳ͍͜ͱ4
ฒྻ੍ޚ
Embulkͷฒྻ੍ޚ • ݱঢ়LocalExecutorInputͷϑΝΠϧͰશମͷ ฒྻΛ੍ޚ͍ͯ͠Δ • FileInputPluginܧঝͰͳ͚Εฒྻجຊతʹ 1ͭ
ฐࣾͷࣄ • HDFSʹ֨ೲ͞Ε͍ͯΔϑΝΠϧ1ϑΝΠϧ͕ ڊେ • namenodeͷϝλใΛۃྗগͳ͘͢ΔͨΊ • ϑΝΠϧ͕͔Ε͍ͯͳ͍ͨΊɺϚϧνεϨου Ͱಈ͔ͣɺCPUΛશવ͑ͳ͍
ͭͬͨ͘ • embulk-input-hdfs • ಉ͡ϑΝΠϧͷinput streamΛฒྻੜ ͠ɺඞཁൣғͷΈread͢ΔΈ • configʹॻ͔ΕͨʹϑΝΠϧΛׂ •
ҙͷฒྻͰembulk࣮ߦ͕Մೳʹʂ
͜ΕͰCPU ϑϧʹ͑Δͧʂ
ͱࢥͬͨΒ͕ • OutputͰ͋ΔVertica • Session͕૿͑͗͢ΔͱVertica͕ෆ҆ఆʹ • ࠷େ20͘Β͍ʹߜͬͯ͘ΕͱVerticaνʔϜ ͔Βґཔ • InputͰฒྻنఆ͞ΕΔͷʹͲ͏͢Ε͑͑Μ
Ͱ
ͭͬͨ͘ • embulk-output-vertica • ॲཧલʹσʔλ֨ೲ༻ͷthreadΛผ్Δ • ֤εϨουσʔλ֨ೲ༻ͷthreadʹpageΛ enqueue • σʔλ֨ೲ༻threadpageΛdequeue͠ίϐʔͯ͠
͍͘ • ͜ΕͰ1ճͷίϐʔͰ1session͔͠ΘͣʹࡁΉͧʂ
Embulk Projectʹظ͢Δ͜ͱ • ฒྻ੍ޚͬͺΓExecutorʹͬͯ΄͍͠ • input / filters / outputόϥόϥʹઃఆ͍ͨ͠
• https://github.com/embulk/embulk/issues/ 232 • ϑΝΠϧׂͷAPIͱ͔FileInputPluginͷAPIͱ͠ ͍͍ͯ͋ͬͯΜ͡Όͳ͍͔͠Β
Γͳ͍͜ͱϥΠϯφοϓ 1. YAMLཧ 2. ୯ମॲཧϑϨʔϜϫʔΫ 3. δϣϒΩϡʔ 4. ฒྻ੍ޚ 5.
ଓ͖͔Β࣮ߦ
Γͳ͍͜ͱ5
ଓ͖͔Β࣮ߦ
Embulkͷػೳͱͯ͠ͷ ʮଓ͖͔Β࣮ߦʯ • Embulk࣮ߦ࣌ʹɺ࣍ʹEmbulkΛ࣮ߦ͢Δ࣌ʹ ༻͢ΔconfigϑΝΠϧΛੜ͓ͯ͘͠ • Input Plugin୯ମͷػೳͱͯ͠ఏڙ͞Ε͍ͯΔ embulk run
/path/to/next-config.yml \ -o /path/to/next-config.yml
ฐࣾͷࣄ • HDFS্ͷϑΝΠϧʹσʔλ͕ه͞Εͯߦ͘͜ ͱ͕ଟ͍ • ϑΝΠϧύεมΘΒͳ͍ɺͰɺඞཁͳσʔ λ͕૿͑ͯΔ • σʔλͷ༰͔ΒFilter͢Δ͔Ͳ͏͔அ͢ Δඞཁ͕͋Δ
Γ͔ͨͬͨ͜ͱ • Outputઌ(Vertica) ֨ೲ͞Ε͍ͯΔσʔλΛ֬ ೝ͠ɺInputσʔλΛFiltering͢Δ • SELECT max(id) FROM table;
ͷ݁Ռ͔Β • embulk-filter-row ͷconditionੜ
ͭͬͯ͘ͳ͍ • ୯ମॲཧϑϨʔϜϫʔΫͱҧ͍ɺॲཧؒͷґ ଘ͕ؔଘࡏ͢ΔͨΊɺͬ͘͞ͱͰ͖·ͤΜ Ͱͨ͠ٽ • Embulk WrapperͰରൣғΛࣄલʹফͯ͠શͯ ϩʔυ͢Δͱ͍͏ྗٕͰରԠͨ͠
Embulk Projectʹظ͢Δ͜ͱ • ΄Μͱ͏ͷҙຯͰ߹ੑΛอͭʹOutputଆͷ σʔλΛݟʹߦ͘ඞཁ͕͋Δ • ࣮ࡍʹॻ͜͏ͱ͢ΔͱEmbulkͷྖҬΛ͑Δ • ࡢฉ͍͚ͨͲʮdigdagʯͱ͍͏πʔϧ͕ग़ΔΒ ͍͠ΐ
• https://github.com/treasure-data/digdag-docs
·ͱΊ
·ͱΊ • Embulkಋೖͯ͠ϝονϟḿͬͯΔ • ৽͍͠σʔλιʔε͕ग़͖ͯͯίετ͘ ಋೖͰ͖Δʂ
·ͱΊ • ͨͩɺ࣮ࡍproductionӡ༻͠Α͏ͱ͢Δͱࡉ͔͍ ͜ͱ͕ؾʹͳͬͯ͘Δ • YAMLͷͱ͔ • δϣϒΩϡʔͷͱ͔ • લॲཧɺޙॲཧͲ͏͢Δͷͱ͔
·ͱΊ • ࣮ࡍɺEmbulk͚ͩͰղܾ͢ΔΑ͏ͳͰͳ͍ • ΈΜͳͰݟͨΊͯϕετϓϥΫςΟε୳͍ͯ͠ ͖·͠ΐ͏ • AdventCalendarۭ͍ͯΔͷͰॻ͖·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ