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
breakthrough point of web engineer
Search
Livesense Inc.
PRO
June 23, 2018
Programming
0
140
breakthrough point of web engineer
【LIVESENSE流】Webサービスの開発・運用におけるデータエンジニアリング
https://camphor.connpass.com/event/87720/
上記イベント登壇資料。
Livesense Inc.
PRO
June 23, 2018
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_総合職採用_会社説明資料
livesense
PRO
0
880
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
4.6k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
100
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.6k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
500
26新卒_総合職採用_会社説明資料
livesense
PRO
0
12k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
45k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
280
Other Decks in Programming
See All in Programming
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
190
高単価案件で働くための心構え
nullnull
0
170
AIエージェントでのJava開発がはかどるMCPをAIを使って開発してみた / java mcp for jjug
kishida
4
800
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
480
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
13
5.4k
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
200
2025 컴포즈 마법사
jisungbin
0
150
Flutterチームから作る組織の越境文化
findy_eventslides
0
620
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
5
1.1k
仕様がそのままテストになる!Javaで始める振る舞い駆動開発
ohmori_yusuke
8
4.7k
[SF Ruby Conf 2025] Rails X
palkan
0
370
Module Harmony
petamoriken
2
570
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Writing Fast Ruby
sferik
630
62k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Six Lessons from altMBA
skipperchong
29
4.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Statistics for Hackers
jakevdp
799
230k
Music & Morning Musume
bryan
46
7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
940
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
ϓϩμΫτίʔυͰޠΔʂ ΤϯδχΞͷͷ ϒϨʔΫεϧʔϙΠϯτ CAMPHOR×LIVESENSE WEBαʔϏεͷ։ൃɾӡ༻ʹ͓͚ΔσʔλΤϯδχΞϦϯά 2018/06/23() @TCHIKUBA
ϓϩμΫτίʔυͰޠΔʂ ΤϯδχΞͷͷϒϨʔΫεϧʔϙΠϯτ PROFILE ▸ 1978.11 Ԭݝੜ·Ε ▸ 2002.03 ౦ژۀେֶཧֶ෦ଔ ▸
2004.08 ϑϦʔϥϯεΤϯδχΞ ▸ 2011.08 ৽نࣄۀ։ൃPM ▸ 2013.05 Ϧϒηϯεೖࣾ ▸ 2015.04 ৽نࣄۀ্ཱͪ͛ ▸ 2018.06 ΤϯδχΞϦϯάϚωʔδϟʔʗ σʔλΤϯδχΞ
None
None
ϓϩμΫτίʔυͰޠΔʂ ΤϯδχΞͷͷϒϨʔΫεϧʔϙΠϯτ AGENDA ▸ Ruby on RailsΛߏ͢Δٕज़ ▸ RailsͰ࣮ફతͳwebΞϓϦέʔγϣϯ։ൃ͢Δצॴ ▸
IESHILͷࣄྫ ▸ RailsϓϩμΫγϣϯίʔυ ▸ ։ൃϓϩηε ▸ σʔλΤϯδχΞϦϯά
RUBY ON RAILSΛ ߏ͢Δٕज़
RUBY ON RAILSΛߏ͢Δٕज़ ABOUT RUBY ON RAILS ▸ ౷తͳMVCϑϨʔϜϫʔΫ ▸
RESTfulͳϧʔςΟϯά ▸ ActiveRecordʢڧྗͳORMʣ ▸ ϚΠάϨʔγϣϯʢDBཧʣ ▸ ։ൃϞʔυʢdevelopmentʗtestʗproductionʣ ▸ ϑϩϯτΤϯυ ▸ Asset Pipeline ▸ SCSS ▸ CoffeeScript ▸ WebpackerʢRails 5.1ʙʣ ▸ RubyGemsΤίγεςϜ ▸ BDD
౷తͳ MVCϑϨʔϜϫʔΫ
RUBY ON RAILSΛߏ͢Δٕज़ RESTFULͳROUTING ▸ bin/rails g scaffold User name:string
email:string ▸ bin/rails routes ▸ config/routes.rb ▸ resources :users
RUBY ON RAILSΛߏ͢Δٕज़ ACTIVE RECORD ▸ app/models/application_record.rb ▸ app/models/user.rb ▸
User.all ▸ User.find(1) ▸ User.take.name ▸ User.take.email
RUBY ON RAILSΛߏ͢Δٕज़ ϚΠάϨʔγϣϯ ▸ db/migrate/20180623163000_create_users.rb ▸ bin/rails db:migrate ▸
bin/rails db:rollback
RUBY ON RAILSΛߏ͢Δٕज़ ։ൃϞʔυ ▸ RAILS_ENV ▸ bin/rails s -e
[mode name] ▸ config/environments/ ▸ development.rb ▸ production.rb ▸ test.rb
FRONTEND
RUBY ON RAILSΛߏ͢Δٕज़ ASSET PIPELINE ▸ RubyGems ▸ sprockets-railsʢΞηοτίϯύΠϧʣ ▸
sass-railsʢSCSSʣ ▸ uglifierʢJSϑΝΠϧѹॖʣ ▸ coffee-railsʢJS→CoffeeScriptίϯύΠϧʣ ▸ bin/rails assets:precompile (for production) ▸ ϑΟϯΨʔϓϦϯτ ▸ application-908e25f4bf641868d8683022a5b62f54.css
RUBY ON RAILSΛߏ͢Δٕज़ SCSS ▸ RubyGems ▸ sass-rails ▸ app/assets/stylesheets/application.css
RUBY ON RAILSΛߏ͢Δٕज़ COFFEE SCRIPT ▸ RubyGems ▸ coffee-rails ▸
app/assets/javascripts/application.js
RUBY ON RAILSΛߏ͢Δٕज़ WEBPACKER (RAILS 5.1~) ▸ RubyGems ▸ webpacker
▸ bin/rails new myapp --webpack ▸ bin/rails webpacker:install ▸ app/views/layouts/application.html.erb ▸ bin/webpack-dev-server
None
มԽͷ͍ ϑϩϯτΤϯυο…!!
None
๛ͳ RUBYGEMS
RUBY ON RAILSΛߏ͢Δٕज़ RUBY GEMS ▸ bin/bundle inst —path vendor/bundle
-j4 GEMืूதʂ
RUBY ON RAILSΛߏ͢Δٕज़ RUBY GEMS (ϚοϋόΠτ 2006.02~) ▸ grep 'gem
' Gemfile | wc -l ▸ 74 ※ ▸ ʲFYIʳgrep create_table db/schema.rb | wc -l ▸ 363
RUBY ON RAILSΛߏ͢Δٕज़ RUBY GEMS (ब׆ձٞ 2015.04~) ▸ grep 'gem
' Gemfile | wc -l ▸ 71 ▸ ʲFYIʳgrep create_table db/schema.rb | wc -l ▸ 226
RUBY ON RAILSΛߏ͢Δٕज़ RUBY GEMS (IESHIL 2015.08~) ▸ grep 'gem
' Gemfile | wc -l ▸ 113 ▸ ʲFYIʳgrep create_table db/schema.rb | wc -l ▸ 175
RUBY ON RAILSΛߏ͢Δٕज़ RUBY GEMS (JOB-DRAFT 2015.11~) ▸ grep 'gem
' Gemfile | wc -l ▸ 119 ▸ ʲFYIʳgrep create_table db/schema.rb | wc -l ▸ 250
※ ϞϊϦγοΫͳ RAILSࣄྫ
BDD
RUBY ON RAILSΛߏ͢Δٕज़ BDD (ৼۦಈ։ൃ) ▸ Minitest (Default) ▸ bin/rails
test ▸ Rspec (RubyGems) ▸ bin/rails g rspec:install ▸ bin/bundle binstubs rspec-core ▸ bin/rspec
ςετίʔυ ҭͯΔͷ
جຊ͜͜·Ͱ
COFFEE BREAK
[COFFEE BREAK] RAILSॳ৺ऀ͋Δ͋Δ Ͳ͔͜ΒͲ͜·Ͱ͕RAILS WAYͳͷ͔ʁ ▸ ෳܗͱ୯ܗͷҧ͍ ▸ Routing →
resources :usersʢෳܗʣ ▸ Controller → class UsersControllerʢෳܗʣ ▸ Model → class Userʢ୯ܗʣ ▸ Table → usersςʔϒϧʢෳܗʣ ▸ View → app/views/usersʢෳܗʣ
[COFFEE BREAK] RAILSॳ৺ऀ͋Δ͋Δ Ͳ͔͜ΒͲ͜·Ͱ͕RAILS WAYͳͷ͔ʁ ▸ ύʔγϟϧͷ໋໊ ▸ app/views/users/index.html.erb ▸
render ‘layouts/header’ ▸ app/views/layouts/_header.html.erb ▸ FAQ ▸ Missing TemplateౖͬͯΒΕΔΜͰ͚͢Ͳ… ▸ ͳΜͰΞϯμʔείΞ͕ඞཁͳΜͰ͔͢ʁ
A: THIS IS THE RAILS WAY!! ※ΞΫγϣϯ͔ΒݺΕΔςϯϓϨʔτͱύʔγϟϧΛ۠ผ͢ΔͨΊ
[COFFEE BREAK] RAILSॳ৺ऀ͋Δ͋Δ Ͳ͔͜ΒͲ͜·Ͱ͕RAILS WAYͳͷ͔ʁ ▸ webΞϓϦέʔγϣϯͷجૅͷཧղෆ ▸ <%= form_for(@article)
do |f| %> ▸ <%= f.text_field :title, title: ‘title of article’ %> ▸ <% end %>
[COFFEE BREAK] RAILSॳ৺ऀ͋Δ͋Δ Ͳ͔͜ΒͲ͜·Ͱ͕RAILS WAYͳͷ͔ʁ ▸ RubyͷγϯλοΫε͕Θ͔Βͳ͍ ▸ <% @users.each
do |user| %> ▸ <%= user.name %> ▸ <% end %>
COFFEE BREAK ͜͜·Ͱ☕
RUBY ON RAILSΛߏ͢Δٕज़ RUBY ON RAILSͷ͍ॴ ▸ webΞϓϦέʔγϣϯͷϓϩτλΠ ϓΛૉૣ͘࡞Δ ▸
ϑϩϯτΤϯυ(HTMLʗCSSʗ JavaScript)αʔόʔαΠυ(Ruby) 1ਓͰαΫοͱ࡞Δ https://logmi.jp/6034
࣮ νʔϜ։ൃʹ ͍ͯͳ͍!?
RAILSͰ࣮ફతͳWEBΞϓϦ έʔγϣϯ։ൃ͢Δצॴ ͔͜͜Β͕ຊ
RAILSͰ࣮ફతͳWEBΞϓϦέʔγϣϯ։ൃ͢Δצॴ ABOUT צॴ ▸ αʔόʔαΠυ ▸ ڥߏங ▸ RubyGemsબఆ ▸
MVCҎ֎ͷϨΠϠʔ ▸ ϑϩϯτΤϯυ ▸ Webpacker or notʢRails 5.1~ʣ ▸ SPAཁ݅ʢReact.jsʗVue.jsʗAngularJS etc.ʣ
RAILSͰ࣮ફతͳWEBΞϓϦέʔγϣϯ։ൃ͢Δצॴ SERVER SIDE - ڥߏங ▸ ΦϯϓϨʗAWSʗHeroku ▸ ϛυϧΣΞબఆʗߏཧʢRDBʗKVSʗݕࡧetc.ʣ ▸
։ൃڥʗεςʔδϯάڥʗຊ൪ڥߏங ▸ σϓϩΠʗCI
RAILSͰ࣮ફతͳWEBΞϓϦέʔγϣϯ։ൃ͢Δצॴ SERVER SIDE - RUBYGEMSબఆ ▸ બఆ͕؊ ▸ ؾΛ͚ͭΔϙΠϯτ ▸
ཁ݅ʹԊ͍ͬͯΔ͔ ▸ ྨࣅͷػೳΛ࣋ͭgemͷௐࠪ ▸ ༻࣮͕͋Δ͔ ▸ OSS։ൃίϛϡχςΟ ▸ ϓϩδΣΫτͷRubyʗRailsͷόʔδϣϯͱͷ߹ੑ ▸ Railsػೳ֦ுܥཁҙʢparanoiaͳͲʣ ▸ ։ൃνʔϜͱͷ߹ҙܗ
RAILSͰ࣮ફతͳWEBΞϓϦέʔγϣϯ։ൃ͢Δצॴ SERVER SIDE - MVCҎ֎ͷϨΠϠʔ ▸ appԼͷߏ ▸ decoratorsʗformsʗservicesʗtasksʗvalidators etc.
▸ όονॲཧʢrakeλεΫor notʣ ▸ σʔλॲཧੑೳཁ݅࣍ୈ
RAILSͰ࣮ફతͳWEBΞϓϦέʔγϣϯ։ൃ͢Δצॴ ABOUT צॴ ▸ αʔόʔαΠυ ▸ ڥߏங ▸ RubyGemsબఆ ▸
MVCҎ֎ͷϨΠϠʔ ▸ ϑϩϯτΤϯυ ▸ Webpacker or notʢRails 5.1~ʣ ▸ SPAཁ݅ʢReact.jsʗVue.jsʗAngularJS etc.ʣ
RAILSͰ࣮ફతͳWEBΞϓϦέʔγϣϯ։ൃ͢Δצॴ FRONTEND ▸ bin/rails new myapp --webpack ▸ bin/rails new
myapp --webpack=react ▸ bin/rails new myapp --webpack=vue ▸ bin/rails new myapp —webpack=angular ▸ bin/yarn add [package] ▸ bin/yarn install/update
ΩϞ͍
RAILSͰ࣮ફతͳWEBΞϓϦέʔγϣϯ։ൃ͢Δצॴ FRONTENDͷ՝ ▸ turbolinks ▸ sprockets ▸ webpacker ▸ webpack-dev-server
▸ CoffeeScript ▸ babel
RAILS ϓϩμΫγϣϯίʔυ IESHILͷࣄྫ
None
IESHILͷࣄྫ Πϯϑϥ ▸ Herokuʢ~2018.05ʣ ▸ ্ཱͪ͛࣌ͷεϐʔυ༏ઌ ▸ ๛ͳΞυΦϯ ▸ Heroku
Private Spaces ▸ TokyoϦʔδϣϯͰಈ࡞ ▸ 3ഒҎ্ߴʹʂ ▸ Ұ෦AWS
IESHILͷࣄྫ HEROKU PRIVATE SPACESͬͺΓ͔ͬͨʢ༨ஊʣ ▸ രʂ ▸ αʔόʔฏۉԠ࣌ؒˠ2ഒ ▸ αʔόʔฏۉଓ࣌ؒˠ5ഒ
IESHILͷࣄྫ ʲFYIʳHEROKU MEETUP#21 ▸ 17Y৽ଔͷ͘Μ͕ొஃ༧ఆ
ಉ྅ɿHeroku MeetupͰొஃऀืूͯ͠Δ ಉ྅ɿ͘Μൃදͪ͠Ό͍ͳΑ ͘ΜɿλΠτϧͲ͏͠·͔͢ʁ അɿ10ഒͬͯͬͪΌ͑Αʢஊʣ ͘ΜɿΘ͔Γ·ͨ͠ʂʂ
None
IESHILͷࣄྫ HEROKUͰͷ্ཱͪ͛ͬͺΓ͔ͬͨ ▸ 3໊ʢϚελʗRailsʗػցֶशʣͰ2ϲ݄͘Β͍ɻ
IESHILͷࣄྫ MIDDLEWARE ▸ Heroku Add-ons ▸ ʴSendgridʗʴFastlyʢCommon Runtimeʣ ▸ ElasticsearchʢElastic
Cloudʣ ▸ Tresure Data
IESHILͷࣄྫ ࣮ߦڥ ▸ ։ൃڥ ▸ MacʢϩʔΧϧʣ or CentOSʢOpenStackʣ ▸ PRຖͷಈ࡞֬ೝڥ
▸ Heroku Review Apps ▸ εςʔδϯάڥ ▸ staging.ieshil.com ▸ ຊ൪ڥ ▸ www.ieshil.com
IESHILͷࣄྫ CIʗDEPLOY ▸ CI ▸ GitHub + CircleCIʢtest+lintʣ ▸ Deploy
▸ ChatOps with slack ▸ /h deploy ieshil-front/master to prod
IESHILͷࣄྫ RUBYGEMS ▸ Ϣʔβʔొཁ݅ʢsorceryʗomniauthʣ ▸ ϝʔϧૹ৴ཁ݅ʢsendgrid4rʣ ▸ ը૾ॲཧཁ݅ʢdragonfly-s3_data_storeʗshrineʗimage_processing etc.ʣ ▸
SEOཁ݅ʢgretelʗsitemap_generatorʣ ▸ API࿈ܞʢfaraday etc.ʣ ▸ δϣϒΩϡʔʢrescue etc.ʣ ▸ ։ൃิॿ ▸ Rails֦ுܥʢslim-railsʗseed-fuʗforemanʗconfigʗdotenv-railsʗpry-rails etc.ʣ ▸ ςετؔ࿈ʢrubocopʗrspecʗcapybaraʗselenium-webdriverʗturnipʗfactory_bot_railsʗdatabase_rewinder etc.ʣ ▸ ͦͷଞʢletter_opener_webʗslack-notifierʗrollbarʗbullet etc.ʣ
IESHILͷࣄྫ APPԼͷߏ ▸ Decoratorsʢactive_decoratorʣ ▸ FormsʢActiveModel::Modelʣ ▸ Importers ▸ Search
▸ Services ▸ Tasks ▸ Uploaders ▸ Validators ▸ ValuesʢActiveModel::Modelʣ
▸ app/forms/application.rb IESHILͷࣄྫ APP/FORMS
▸ ܧঝͯ͠༻ IESHILͷࣄྫ APP/FORMS
▸ ܧঝͯ͠༻ IESHILͷࣄྫ APP/FORMS
▸ ίϯτϩʔϥʔͰͷ༻ IESHILͷࣄྫ APP/FORMS
IESHILͷࣄྫ όονॲཧ ▸ bin/rails[rake] -vT ▸ IESHILͰݐϚελʗՁ֨ࠪఆͳͲʹTresure Data༻ ▸ digdagʗembulk
IESHILͷࣄྫ FRONTEND ▸ React.jsʗTypeScriptΛ༻ ▸ jQueryͷݹ͍ίʔυϕʔεΛஔ ▸ SEOཁ݅ΑΓඇSPA ▸ SSRπϥϛ͕ଟ͍ͷͰҙ
https://www.slideshare.net/yutasuzuki589/vs-rails-js
IESHILͷࣄྫ ։ൃϓϩηε ▸ JIRAʗConfluence ▸ ϢʔβʔετʔϦʔઃܭʗݟੵ ▸ ετʔϦʔϙΠϯτϕʔεͰͷݟੵ
IESHILͷࣄྫ σʔλΤϯδχΞϦϯά ▸ IESHILͰ༷ʑͳϏοάσʔλΛऔΓѻ͏ ▸ Ϛϯγϣϯ ▸ औҾࣄྫ ▸ ॅڥ
etc.
IESHILͷࣄྫ σʔλΤϯδχΞϦϯάͷਏΈ ▸ ॲཧ࣌ؒ ▸ ໊دͤॲཧ ▸ ҟৗݕग़ ▸ ࢼߦࡨޡ
▸ લॲཧ ▸ ӡ༻Λߟྀͨ͠Έͮ͘Γ ▸ ϏδωευϝΠϯࣝ ▸ ౷ܭʗػցֶशʗࣗવݴޠॲཧͳͲͷલఏࣝ
IESHILͷࣄྫ ॅڥσʔλ ▸ Ұࡾݝͷϝογϡίʔυ
IESHILͷࣄྫ ॅڥσʔλऔΓࠐΈॲཧ ▸ ݩσʔλऔΓࠐΈ
IESHILͷࣄྫ ॅڥσʔλऔΓࠐΈॲཧ ▸ TresureDataͷऔΓࠐΈ
IESHILͷࣄྫ ॅڥσʔλऔΓࠐΈॲཧ ▸ TresureData→PostgreSQLͷऔΓࠐΈ
IESHILͷࣄྫ ॅڥσʔλऔΓࠐΈॲཧ ▸ ޙॲཧ
IESHILͷࣄྫ DIGDAG ▸ ϫʔΫϑϩʔΤϯδϯ
IESHILͷࣄྫ EMBULK ▸ όϧΫσʔλϩʔμʔ
IESHILͷࣄྫ ʲFYIʳՁ֨ࠪఆ ▸ ށຖʹՁ֨ࠪఆ
IESHILͷࣄྫ ʲFYIʳՁ֨ࠪఆ ▸ Hivemall + Python
IESHILͷࣄྫ ʲFYIʳՁ֨ࠪఆ ▸ ϔυχοΫ๏
IESHILͷࣄྫ ϒϨʔΫεϧʔϙΠϯτ·ͱΊ ▸ ཁ͔݅ΒRails։ൃج൫Λ͑Δ ▸ νʔϜ։ൃΛલఏͱͯ͠पลྖҬΛඋ͢Δ ▸ νʔϜͰ߹ҙΛܗ͢Δ ▸ RubyGemsબఆ
▸ appԼͷߏ ▸ ϑϩϯτΤϯυ ▸ Ϗοάσʔλʗػցֶशͱͷ͖߹͍ํ ▸ ɾϞϊϦγοΫʢMonolithicʗ༁ɿҰຕ൘ͷʣ ▸ Private gem ▸ ϚΠΫϩαʔϏεԽʢస৬ձٞʣ
WEBΞϓϦ։ൃͷ࠷దԽ ߟ͑Δ͜ͱ͍ͬͺ͍ RAILSΞϓϦ։ൃͷצॴ…
IESHILͷࣄྫ ʲFYIʳΠϯλʔϯืूத@౦ژ ▸ ᶃձһొͳͲKPIվળࢪࡦͷ࣮ࢪʢ2िؒఆʣ ▸ ᶄ֤छSEOࢪࡦͷ࣮ࢪʢ1ϲ݄ఆʣ ▸ αʔόʔαΠυʗϑϩϯτΤϯυΤϯδχΞͱͯ͠ɺσΟϨΫλʔΤϯδχΞɺσβΠφͱ ڠۀͯ͠վળࢪࡦʹ͍ͭͯৄࡉΛ٧Ίɺ։ൃʙϦϦʔε͢ΔɻඞཁʹԠͯ͡ϦϦʔεޙͷσʔ λੳʗධՁͳͲߦ͏ɻ
▸ ༻ٕज़ɿHeroku, AWS, Rails, React, TypeScript, PostgreSQL, TresureDataͳͲɻ ▸ ᶅσʔλϑϩʔͷઃܭɾඋ(2िؒ~1ϲ݄ఆɺͦͷޙԠ૬ஊ) ▸ ϫʔΫϑϩʔΤϯδϯʹΑΔλεΫઃܭ/උΛߦ͍ɺଐਓԽ͍ͯ͠ΔλεΫͷղফޮԽ Λߦ͏ɻ ▸ ༻ٕज़: Digdag, Embulk, PostgreSQL, TreasureDataͳͲɻ
Q&A