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
200
8年物のJavaのシステムをKotlinに変えていく選択に至るまで
edvakf
2
1.1k
ピクシブ社内のImageFlux利用事例紹介
edvakf
2
3k
学びの文化を育む社内読書会のススメ
edvakf
0
300
フルCDNアーキテクチャでサービス設計した話
edvakf
5
4k
Goでバイナリを読む+α
edvakf
1
980
お前はこれまでに作ったAPIの数を覚えているのか?
edvakf
0
2.7k
「ふつうのRailsアプリケーション」についての考え方
edvakf
2
910
Other Decks in Technology
See All in Technology
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
360
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
550
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
生成AI時代にこそ求められるSRE / SRE for Gen AI era
ymotongpoo
5
3.1k
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
170
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
440
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
140
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
130
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
240
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
920
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
64
We Have a Design System, Now What?
morganepeng
54
8k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
It's Worth the Effort
3n
188
29k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
The Curse of the Amulet
leimatthew05
1
8.4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
49k
Google's AI Overviews - The New Search
badams
0
900
Context Engineering - Making Every Token Count
addyosmani
9
650
First, design no harm
axbom
PRO
2
1.1k
My Coaching Mixtape
mlcsv
0
48
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
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Λ ͍࢝Ί·ͨ͠ • ܕ͕͔ͬ͠Γ͍ͯ͠Δͱ͜ΖͱɺυΩϡϝϯτͷੜ͕ ΩϥʔͰͨ͠