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
pixivとThrift
Search
Atsushi Takayama
December 09, 2015
Technology
1
220
pixivとThrift
Atsushi Takayama
December 09, 2015
Tweet
Share
More Decks by Atsushi Takayama
See All by Atsushi Takayama
最高の開発者体験の追求が開発生産性を改善し続ける文化を生み出した話
edvakf
3
1.4k
NeurIPS 2021 論文読み会: How Modular should Neural Module Networks Be for Systematic Generalization?
edvakf
0
190
8年物のJavaのシステムをKotlinに変えていく選択に至るまで
edvakf
2
1.1k
ピクシブ社内のImageFlux利用事例紹介
edvakf
2
2.9k
学びの文化を育む社内読書会のススメ
edvakf
0
300
フルCDNアーキテクチャでサービス設計した話
edvakf
5
4k
Goでバイナリを読む+α
edvakf
1
980
お前はこれまでに作ったAPIの数を覚えているのか?
edvakf
0
2.7k
「ふつうのRailsアプリケーション」についての考え方
edvakf
2
900
Other Decks in Technology
See All in Technology
ECS_EKS以外の選択肢_ROSA入門_.pdf
masakiokuda
1
120
Oracle Cloud Infrastructure:2025年12月度サービス・アップデート
oracle4engineer
PRO
0
180
Next.js 16の新機能 Cache Components について
sutetotanuki
0
210
技術選定、下から見るか?横から見るか?
masakiokuda
0
170
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
290
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
12k
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
200
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.6k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.5k
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
130
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
27
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
330
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Unsuck your backbone
ammeep
671
58k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Rails Girls Zürich Keynote
gr2m
95
14k
KATA
mclloyd
PRO
33
15k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
How to train your dragon (web standard)
notwaldorf
97
6.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
29
Transcript
pixivͱThrift
ࣗݾհ • ߴࢁ Թ @edvakf • pixivͷອըࣄۀͷ։ൃऀ • ීஈॻ͍ͯΔͷScalaPHPɺͨ·ʹJSRubyGo •
ϦʔυΤϯδχΞ • ձࣾͷٕज़બʹΛ࣋ͭ • ʮࣾͷΤϯδχΞ͕ͤʹಇͨ͘ΊʹʯΛߟ࣮͑ݱ͢Δۀ
Thrift
Thriftͱ • RPCͷͨΊͷϑϨʔϜϫʔΫ • ಠࣗͷΠϯλʔϑΣΠεఆٛݴޠͰσʔλߏͱαʔϏεΠϯλʔϑΣ ΠεΛهड़ • ͦΕΛίϯύΠϧ֤ͯ͠ݴޠͷϥΠϒϥϦΛग़ྗ • ௨৴ϨΠϠʔಠࣗͷιέοτϓϩτίϧͷଞʹɺHTTPͳͲબΔ
• ΕΔ͜ͱࠓGoogle͕ग़ͨ͠gRPCͱಉ͡ • pixivͰPHP͔Βѻ͍͍͢ThriftΛબ
pixiv.git • pixiv.gitPHP͚ͩͰ200ສߦҎ্ • ίʔσΟϯάن݁ߏ͔ͬ͠Γ͍ͯ͠ΔํͰɺ͍ͩͨ ͍Ͳ͜ಉ͡࡞๏Ͱॻ͔Ε͍ͯΔ • 1ՕॴΛ֮͑ΕଞͷՕॴ͙͢ϝϯςͰ͖ΔΑ͏ʹ • ίʔσΟϯάنʹ߹͍ͬͯͳ͍ݹ͍ίʔυΛॻ͖͑
ͨΓ͢ΔͷʹͦΕͳΓͷखؒΛ͔͚͍ͯΔ
pixiv.git • தʹͪΖΜɺͦ͏͍͏࣌Ҏ֎ʹ৮ΒΕͳ͍Օॴ͋Δ • ͦ͏͍͏෦࣮ࡍpixivͷࠜװͱૄ݁߹ʹͳ͍ͬͯΔ͜ͱ͕ ଟ͍ • ྫ͑ϢʔβʔใͱΠϥετใ͙Β͍͔͍ͬͯ͠ͳ͍ͱ͔ • ϢʔβʔใͱΠϥετใ͙Β͍Λฦ͢APIͰपล෦ͱܨ͕
Δ͜ͱʹΑͬͯɺपล෦ΛผϦϙδτϦʹͯ͠ૣ͘ރΒ͍ͯ͠ ͚ͳ͍͔ • →ThriftΛ࠾༻
ThriftʹܾΊͨܦҢ • pixivʹPHPҎ֎ʹRailsͰॻ͔ΕͨαʔϏε͕͋ ΓɺݴޠΛ͑ͯ͏Մೳੑ͕͋ͬͨ • ࠓGoScala͋Δ • PHPͰAPIαʔόʔΛ࡞Δ͜ͱʹͳΔͷͰɺHTTPʹͬ ͔ΕΔͷ͕ྑ͔ͬͨ
vs JSON • طʹ͋ͬͨɺJSONΛฦ͢εϚϗΞϓϦ༻APIͷΛ ղܾ͔ͨͬͨ͠ • APIυΩϡϝϯτͷඋ͕์ஔ͞Ε͕ͪ • LLʹ͋Γ͕ͪͳɺܕʹ͍෦ΛؤுͬͯίʔυΛॻ ͍ͯରॲ͍ͯͨ͠
• →ThriftͰ͋ΕɺAPIυΩϡϝϯτࣗಈͰ࡞ΒΕΔ ͠ɺPHPͰಛʹҙࣝ͠ͳͯ͘APIͷܕ͕͔ͬ͠Γ͢Δ
ThriftͷΘΕํͱར • ݱࡏɺ2ͭͷपลαʔϏε͔Βར༻ • ScalaͱRails • ThriftͷఆٛΛ࣋ͬͨϦϙδτϦɺcomposer.jsonͱbuild.sbtͱ gemspec͕ஔ͔Ε͍ͯΔ • HTTPͷརΛ׆͔ͯ͠ɺnginxͰϦόʔεϓϩΩγ
• nginxΑΓઌpixivͷී௨ͷϦΫΤετͷࡋ͔Εํͱಉ͡ • APIΛఆٛ͢Δͱ͖ʹσʔλߏܕؚΊ͔ͯͬ͠Γߟ͑ͯ࡞ΔͷͰɺม ͑ͨ͘ͳͬͨ͜ͱࠓͷͱ͜Ζແ͍
རʁ • ॳͷݟ௨ΓɺϢʔβʔใͱΠϥετใ͙Β͍ ͰࣄΓ͍ͯΔ • →ͱ͍͏ͷਖ਼͘͠ͳͯ͘ɺͦΕͧΕͷपลαʔ Ϗεઐ༻ͷAPIগ࡞Δ͜ͱʹͳͬͨ • ઐ༻෦͕ଟ͘ͳΕͳΔ΄Ͳɺʮ࣮पลαʔϏ εີ݁߹ͩͬͨʯͱ͍͏͜ͱʹͳΓɺRPCͰܨ
͕ͬͨͷؒҧ͍ͩͬͨͱ͍͏͜ͱʹͳΔ
ଞʹࠔͬͨ • HTTP௨৴ΛThriftͷϥΠϒϥϦ͕Ӆṭ͢ΔͷͰɺੜͷϨεϙϯεΛ ֬ೝ͢Δͷ͕໘ • ͦͦόΠφϦͳͷͰ༰ΛݟͯΘ͔Βͳ͍ • ʢવ͚ͩͲʣ։ൃ͢Δͱ͖ʹɺAPIఆٛΛॻ͍ͯϒϥϯνʹϓο γϡͯ͠αʔόʔɾΫϥΠΞϯτͰ͏Α͏ʹͯ͠…ͱ͍͏ϑϩʔ ໘
• εϚϗΞϓϦ༻ͷAPIʹ͓͔ͱࢥ͕ͬͨɺॾʑͷཧ༝Ͱ٫Լͨ͠ • ී௨ʹJSONͷREST APIʹམͪண͍ͨ
·ͱΊ • pixivͰࠓ͔ΒݴޠؒɾαʔόʔؒRPCͰThriftΛ ͍࢝Ί·ͨ͠ • ܕ͕͔ͬ͠Γ͍ͯ͠Δͱ͜ΖͱɺυΩϡϝϯτͷੜ͕ ΩϥʔͰͨ͠