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
Civitaspo
December 15, 2015
Programming
5.7k
7
Share
Embulkに足りない5つのこと
embulk meetup tokyoで話しました!
ユースケースが書かれているので是非参考にして下さい。
Civitaspo
December 15, 2015
More Decks by Civitaspo
See All by Civitaspo
AI時代にデータ基盤が持つべきCapabilityを考える + Snowflake Data Superheroやっていき宣言 / Considering the Capabilities Data Platforms Should Have in the AI Era + Declaration of Commitment as a Snowflake Data Superhero
civitaspo
0
130
バクラクとAI Agentとデータ基盤と私 / Bakuraku, AI Agents, Data Infrastructure, and Me
civitaspo
1
53
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
4k
嗚呼、当時の本番環境の状態で AI Agentを再評価したいなぁ... / Ah, I wish I could re-evaluate the AI Agent in the production environment it was in back then...
civitaspo
0
3.6k
バクラクのデータ基盤の現在地 / bakuraku-data-platform-202509
civitaspo
1
2.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
300
【Snowflake九州ユーザー会#3】Snowflake Summit 2025 最速キャッチアップ会 Snowflake Summit 2025 概要&新機能 / Snowflake Summit 2025 Overview & New Features
civitaspo
0
120
【Snowflake九州ユーザー会#2】BigQueryとSnowflakeを比較してそれぞれの良し悪しを掴む / BigQuery vs Snowflake: Pros & Cons
civitaspo
13
3.4k
【Tokyo dbt Meetup #12】dbtでETL/Reverse ETLやったら思ったより運用が大変でした / The Challenges of ETL/Reverse ETL by dbt
civitaspo
3
410
Other Decks in Programming
See All in Programming
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
2
210
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
470
Liberating Ruby's Parser from Lexer Hacks
ydah
2
1.4k
How Swift's Type System Guides AI Agents
koher
0
270
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
110
Server-Side Kotlin LT大会 vol.18 [Kotlin-lspの最新情報と Neovimのlsp設定例]
yasunori0418
1
160
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
970
Angular Signal Forms
debug_mode
0
110
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
120
Back to the roots of date
jinroq
0
250
「話せることがない」を乗り越える 〜日常業務から登壇テーマをつくる思考法〜
shoheimitani
4
830
「Linuxサーバー構築標準教科書」を読んでみた #ツナギメオフライン.7
akase244
0
1.4k
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
150
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
AI: The stuff that nobody shows you
jnunemaker
PRO
6
580
Paper Plane
katiecoart
PRO
1
49k
ラッコキーワード サービス紹介資料
rakko
1
3.1M
The Curse of the Amulet
leimatthew05
1
11k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.8k
Designing for Timeless Needs
cassininazir
0
200
Designing Powerful Visuals for Engaging Learning
tmiket
1
350
A designer walks into a library…
pauljervisheath
211
24k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
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ۭ͍ͯΔͷͰॻ͖·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ