Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
pixivとThrift
Search
Atsushi Takayama
December 09, 2015
Technology
1
210
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
180
8年物のJavaのシステムをKotlinに変えていく選択に至るまで
edvakf
2
1.1k
ピクシブ社内のImageFlux利用事例紹介
edvakf
2
2.9k
学びの文化を育む社内読書会のススメ
edvakf
0
290
フルCDNアーキテクチャでサービス設計した話
edvakf
5
4k
Goでバイナリを読む+α
edvakf
1
970
お前はこれまでに作ったAPIの数を覚えているのか?
edvakf
0
2.7k
「ふつうのRailsアプリケーション」についての考え方
edvakf
2
890
Other Decks in Technology
See All in Technology
エンジニアリングマネージャー はじめての目標設定と評価
halkt
0
210
プロダクトマネジメントの分業が生む「デリバリーの渋滞」を解消するTPMの越境
recruitengineers
PRO
3
620
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
160
乗りこなせAI駆動開発の波
eltociear
1
590
Playwright x GitHub Actionsで実現する「レビューしやすい」E2Eテストレポート
kinosuke01
0
180
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
300
AI時代におけるアジャイル開発について
polyscape_inc
0
120
Bakuraku Engineering Team Deck
layerx
PRO
12
6.6k
【CEDEC+KYUSHU2025】学生・若手必見!テクニカルアーティスト 大全 ~仕事・スキル・キャリアパス、TAの「わからない」を徹底解剖~
cygames
PRO
0
130
GitLab Duo Agent Platformで実現する“AI駆動・継続的サービス開発”と最新情報のアップデート
jeffi7
0
200
Multimodal AI Driving Solutions to Societal Challenges
keio_smilab
PRO
1
130
useEffectってなんで非推奨みたいなこと言われてるの?
maguroalternative
10
6.4k
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
710
For a Future-Friendly Web
brad_frost
180
10k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Statistics for Hackers
jakevdp
799
230k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Why Our Code Smells
bkeepers
PRO
340
57k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
69k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
4 Signs Your Business is Dying
shpigford
186
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
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Λ ͍࢝Ί·ͨ͠ • ܕ͕͔ͬ͠Γ͍ͯ͠Δͱ͜ΖͱɺυΩϡϝϯτͷੜ͕ ΩϥʔͰͨ͠