$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
日経電子版を支える基盤API
Search
osamunmun
February 03, 2017
Programming
17
7.3k
日経電子版を支える基盤API
osamunmun
February 03, 2017
Tweet
Share
More Decks by osamunmun
See All by osamunmun
日経電子版SREチーム立ち上げ中
osamunmun
6
14k
Other Decks in Programming
See All in Programming
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
2
220
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
390
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
310
開発に寄りそう自動テストの実現
goyoki
2
1k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
410
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
320
AIコーディングエージェント(skywork)
kondai24
0
180
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
170
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.3k
tparseでgo testの出力を見やすくする
utgwkk
2
230
AIコーディングエージェント(NotebookLM)
kondai24
0
200
Microservices rules: What good looks like
cer
PRO
0
1.4k
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
76
5.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
RailsConf 2023
tenderlove
30
1.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Producing Creativity
orderedlist
PRO
348
40k
What's in a price? How to price your products and services
michaelherold
246
13k
Embracing the Ebb and Flow
colly
88
4.9k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
730
Transcript
ܦిࢠ൛Λࢧ͑Δج൫"1* "1*.&&561 0TBNV5BLBZBTV
2 0TBNV5BLBZBTV &OHJOFFSBU/JLLFJ *OD 1ZUIPO "84 3VCZ MVB ʹܦʹ+0*/ ओʹܦిࢠ൛ͷ"1*ͷ։ൃʹैࣄ
"CPVUNF
3 ݄ʹץ ༗ྉձһ ԁ݄ ສਓ ݄ؒΞΫηεԯ݅
ຖ݅ͷهࣄΛ৴ 1$ɾϞόΠϧαΠτɺJ04ɺ "OESPJEΞϓϦʹରԠ ܦిࢠ൛ͱ
4 "1*ͷΞʔΩςΫνϟ ։ൃɺӡ༻ํ๏ʹ͍ͭͯ ࠓޙͷํੑɺ՝ ࠓ͓͢͠Δ͜ͱ
ΞʔΩςΫνϟ 5
6 ܦిࢠ൛ͷγεςϜશମ૾ "84 ϩάੳͳͲɺαʔϏε ։ൃऀ͕ར༻ هࣄͷฤूɺཧ $.4 هࣄ৴ ֤छ"1* ੳج൫
ࠓ͓͢͠Δ zج൫"1*z͜ͷҰ෦
7 ج൫"1*ΞʔΩςΫνϟ "1*("5&8": 4&"3$) '-"( 1"1&3 ʜ ֤$MJFOU ଞγεςϜͷαʔόʔ *."(&
$%/ ج൫"1* ݸͷ"1* ֤"1*ϦΫΤε τͷೝՄݕূ TJHOFEVSMͰ ΞΫηε੍ޚ 4FBSDI&OHJOF %#4UPSBHF #BUDI -PH
8 "1*("5&8":ͷׂ ɾϢʔβʔʗΫϥΠΞϯτೝূ ɾ֤"1*ͷϦΫΤετͷೝՄݕূ ɾཧը໘Ͱ֤$MJFOUͷݖݶཧ ɾ֤"1*ͷ*'༷υΩϡϝϯτ
.JDSPTFSWJDFT 9
10 ߏཁૉ "1*("5&8": 4&"3$) '-"( 1"1&3 ʜ *."(& $%/ ج൫"1*
4FBSDI&OHJOF %#4UPSBHF #BUDI -PH &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML $MPVE'SPOU 4 3FEJT 3%4 3FETIJGU "VSPSB &MBTUJD#FBOTUBML #JH2VFSZ 4
&$JOTUBODF 11 &MBTUJD#FBOTUBMLͷத "QQMJDBUJPO$POUBJOFS -PH4FOEFS$POUBJOFS ˞ ˞IUUQTHJUIVCDPNCVOHPVNFMPHTFOEFS ʜ ʜ ʜ
ʜ ෛՙʹԠͯ͡ BVUPTDBMF &-# &#ͷڥΛίʔυͰఆٛ ɾ&MBTUJD#FBOTUBMLͷઃఆϑΝΠϧ 71$ &-# 4FDVSJUZ(SPVQ "VUPTDBMF $MPVE8BUDI"MBSN ɾ%PDLFSSVOBXTKTPO $POUBJOFS ڥม Ϧιʔε ɾFCFYUFOTJPOT IPTU໊मਖ਼ OFXSFMJDઃఆ
12 ֤"1*ʹڞ௨෦͕ଟ͍ "1*("5&8": 4&"3$) '-"( 1"1&3 ʜ *."(& $%/ ج൫"1*
4FBSDI&OHJOF %#4UPSBHF #BUDI -PH &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML &MBTUJD#FBOTUBML $MPVE'SPOU 4 3FEJT 3%4 3FETIJGU "VSPSB &MBTUJD#FBOTUBML #JH2VFSZ 4
13 ֤"1*ͷڞ௨෦ΛςϯϓϨʔτԽ SFRVJSFNFOUTUYU UPYJOJ %KBOHPΞϓϦͷઃఆ %PDLFSpMF
&MBTUJD#FBOTUBMLͷઃఆϑΝΠϧ $JSDMF$*ͷઃఆϑΝΠϧ
14 ڞ௨Խ͓ͯ͘͠ϝϦοτ &$JOTUBODF "QQMJDBUJPO$POUBJOFS -PH4FOEFS$POUBJOFS ˞ ʜ ʜ ʜ ʜ
։ൃऀ֤"1*ݻ༗ͷ ϏδωεϩδοΫʹྗ &-# ɾ৽͍͠"1*Λ্ཱ͙ͪ͛͢ΒΕΔ ɾมߋ༰Λ֤"1*ʹ؆୯ʹөͰ͖Δ UFNQMBUFͷߋ৽ DPPLJFQBUDIFS ˞ ͱ͍͏πʔϧ͕ ͋Δ ֤"1*ϨϙδτϦʹ࠷৽ͷςϯϓ ϨʔτΛద༻ ˞IUUQTHJUIVCDPNIJSPLJLZDPPLJFQBUDIFS
15 .JDSPTFSWJDFTͰΑ͔ͬͨ͜ͱ ɾ"1*͝ͱ ˺αʔϏε͝ͱʣͰૄ݁߹ʹ։ൃΛਐΊΒΕɺ ɹ։ൃεϐʔυ͕ͰΔ ɾ"1*͝ͱʹಠཱͯ͠σϓϩΠ͕ՄೳͰɺมߋ͍͢͠ ɾෛՙͷߴ͍"1*͚ͩεέʔϧͰ͖ɺϦιʔεͱίετͷ ɹ࠷దԽ͕Ͱ͖Δ
#BUDI 16
&$JOTUBODF 17 #BUDI&# %PDLFSͰߏங "QQMJDBUJPO$POUBJOFS &-# &$JOTUBODF /HJOY$POUBJOFS &-#
ʜ ʜ ɾ36/%&$,ͷઃఆ +0#ͷઃఆɺ࣮ߦཤ ྺ 3%4 .Z42- ʹอଘ ɾ֤+0#͝ͱʹ%PDLFSQVMM࣮ͯ͠ߦ &-#ͷIFBMUIDIFDLͷ ͨΊʹ/HJOY͕͍Δ ෳ+0#͕ͬͯޓ͍ʹ Өڹ͠ͳ͍ૉͳؔ
-0( 18
19 -PHͷྲྀΕ "QQMJDBUJPO$POUBJOFS -PH4FOEFS$POUBJOFS -PH"HHSFHBUPS BDUJPOMPH V84(*MPH OHJOYMPH ҙͷϩάFYݕࡧΫΤϦ ֤"1*
$MPVE'SPOU 4 MBNCEB ۙdϲ݄ ͘Β͍ͷϩά #JH2VFSZ 4 DGMPHTEPNBJOͱ͍͏CVDLFUʹॻ ͖ग़͢ͱMBNCEBͰॲཧͯ͠&4ʹೖΔઃఆ
%FQMPZ 20
21 %FQMPZqPX VOJUUFTU EPDLFSCVJME EPDLFSQVTI &MBTUJD#FBOTUBML EFQMPZ 1SPE&/7 4UBOECZ&/7 TXBQ
$MPVE'SPOU FFUFTU FFUFTU NBTUFSCSBODIEFWڥ EFQMPZNFOUQSPEVDUJPOCSBODIQSPEڥ JNBHF"1*͚ͩɺ$'͕લஈʹ ͍ΔͷͰɺ$'ܦ༝Ͱςετ EPDLFSQVMM &MBTUJD$POUBJOFS3FHJTUSZ DPNNJUIBTIͷઌ಄ จࣈͰUBH͚
22 TXBQ͙ͯ͢͠ΓସΘΔͷʁ ɾ&#ͷ%/4ͷ55-NJO EFGBVMU ɾͨͩ͠ɺ$MJFOU͕ΩϟογϡΛ࣋ͬͨ߹PVUPGDPOUSPM &$JOTUBODF /HJOY$POUBJOFS &-# ͜͜TXBQ
͠ͳ͍ SPVUF &MBTUJD#FBOTUBML 1SPE&/7 4UBOECZ&/7 &MBTUJD#FBOTUBML 1SPE&/7 4UBOECZ&/7 SFWFSTFQSPYZ͕ɺ "1*ͷTXBQΛै
NJOTFD 23 EFQMPZʹ݁ߏ͕͔͔͍࣌ؒͬͯͨ VOJUUFTU EPDLFSCVJME EPDLFSQVTI &MBTUJD#FBOTUBML EFQMPZ 1SPE&/7 4UBOECZ&/7
TXBQ $MPVE'SPOU FFUFTU FFUFTU EPDLFSQVMM &MBTUJD$POUBJOFS3FHJTUSZ NJO NJOTFD NJO ͦͷଞॾʑ߹Θͤͯ5PUBMNJO΄Ͳ
24 EFQMPZ࣌ؒΛॖ ɾ#BTF*NBHFʹ"MQJOF-JOVYΛར༻ ΠϝʔδαΠζΛେ෯ݮ.#.#ఔ ɾ$JSDMF$*ͰΩϟογϡΛར༻ EFQFOEFODJFTηΫγϣϯͰґଘϥΠϒϥϦΛΠϯετʔϧ EPDLFSCVJME͢Δલʹ࠷৽ΠϝʔδΛQVMM͓ͯ͘͠
NJOTFD 25 EFQMPZ͕࣌ؒNJO͘Β͍ॖ VOJUUFTU EPDLFSQVMMCVJME EPDLFSQVTI &MBTUJD#FBOTUBML EFQMPZ 1SPE&/7 4UBOECZ&/7
TXBQ $MPVE'SPOU FFUFTU FFUFTU EPDLFSQVMM &MBTUJD$POUBJOFS3FHJTUSZ NJOTFD NJOTFDTFD NJO 5PUBMNJO͘Β͍NJO͘Β͍
26 MBNCEBͷEFQMPZେମಉ͡ VOJUUFTU BQFYEFQMPZ MBNCEB
.POJUPSJOH/PUJpDBUJPO 27
28 ࢹͱ௨ͷશମ૾ Πϯϑϥ $16 .FNPSZ /FUXPSL $MPVE8BUDI ΞϓϦέʔγϣϯ Τϥʔ Ϧιʔεࢹ
MBUFODZ TUBUVTDPEF 63-ࢹ FFUFTU ి௨ ௨ઌ໊Ͱ ϩʔςʔγϣϯ
29 ͕ൃੜͨ͠Β,JCBOBΛ֬ೝ ͋Β͔͡Ίॏཁͳϝ τϦΫεͷμογϡ ϘʔυΛ࡞͓ͬͯ͘
30 5JQT සൟʹσϓϩΠ͕ߦΘΕΔ͠ɺ&MBTUJD#FBOTUBMLͷ&$Πϯελϯεෆఆظʹ ೖΕସΘΔ 4FOUSZ DPNNJUIBTIΛૹͬͯɺ ͲͷWFSTJPOͷΞϓϦ͔Λࣝผ /FXSFMJD IPTU໊ʹΞϓϦέʔγϣϯ໊ΛೖΕͯɺ ͲͷΞϓϦͷΠϯελϯε͔Λࣝผ
"84 31
32 "84ͳ͠ͰΓཱͨͳ͍ &$JOTUBODF "QQMJDBUJPO$POUBJOFS -PH4FOEFS$POUBJOFS ʜ ʜ ʜ ʜ &-#
ࣗͨͪͷൣғ ɾSPVUF &MBTUJD#FBOTUBML "$.ͳͲ ɹ"84ͷઃఆ ɾ%PDLFS$POUBJOFS ઃఆ͢Δͱ "84͔ΒͨΒ͞ΕΔͷ ɾBVUPTDBMFPVUJO ɾΠϯελϯεɺίϯςφͷࣗಈ෮چ ɾNPOJUPSJOH BMBSN ɾ63-ͷTXBQʹΑΔCMVFHSFFOEFQMPZ ɾଞଟʜ
33 ਐԽ͢Δ"84 Ҏ্ͷGFBUVSF ΛϦϦʔεɻຖͭҎ্ SF*OWFOUͰݸͷ৽ αʔϏε͕ൃද ,FZOPUFʹͯ l"84XJMMNBLFZPVGFFMMJLF
ZPVIBWFCFFOHJWFO4VQFS 1PXFSTz
34 Δ͔͠ͳ͍͜ͷϏοά SZ ɾອવͱ͍ͬͯͯ"84ͷਐԽͷԸܙ͕ड͚ΒΕͯ͠·͏ FY"844IJFME͕$MPVE'SPOUʹσϑΥϧτద༻ FY0QFO44-੬ऑੑରԠ FYΠϯελϯεԼ͛ɾɾ ɾອવͱ͍ͬͯΔͱ"84ͷਐԽͷԸܙΛड͚ΒΕͳ͍߹ଟ͍ ໌ࣔతͳόʔδϣϯΞοϓ FY&MBTUJDCFBOTUBMLͷQMBUGPSNͷߋ৽
৽αʔϏεͷݕূɺಋೖ FYMBNCEBBUFEHF "UIFOB 3FLPHOJUJPO ৽αʔϏεɺʑͷߋ৽ΛऔΓೖΕͯɺࣗࣾαʔϏεΛਐԽ͍ͤͯ͘͞
35 "84ͰϋϚΔ͜ͱΑ͋͘Δ 4VQQPSUܖΛ݁ΜͰ݁ߏ͍߹Θ ͍ͤͯ͠Δ "84ͷόάΛ౿Ή͜ͱ͋Δ ୯ʹ͍ํ͕Α͘Θ͔Βͳ͍߹
ػೳͷཁΛग़͢ ͳ͔ͳ͔5PLZPSFHJPOʹདྷͳ͍ ͳ͔ͳ͔("ʹͳΒͳ͍
4BB4ͷ׆༻ 36
37 4BB4։ൃɺӡ༻πʔϧܥ͕ଟ͍ ར༻ͯ͠Δ4BB4 4FOUSZ 4MBDL /FX3FMJD 4UBUVT$BLF (JUIVC QBHFSEVUZ $JSDMF$*
#JH2VFSZ 7JTJPO"1* /BUVSBM-BOHVBHF"1* 5SFMMP
*NBHF"1*Λஔ͖͑ 38
39 *NBHF"1*ͱ ΦϦδφϧը૾ σϑΥϧτ هࣄͷϨΠΞτʹ ߹ΘͤͯΓൈ͖ إೝࣝ SFTJ[F
DSPQ ࠲ඪࢦఆՄೳ TJHOFEVSM GPSNBUDPOWFSTJPO 8FC1 IUUQTBSUJDMFJNBHFOJLLFJDPNYYD@@%49.;01#KQH IBTIDED
40 *NBHF"1* $MPVE'SPOU &$JOTUBODF /HJOY$POUBJOFS OHY@TNBMM@MJHIUΛGPML *NBHF.BHJDL
MVBͰQBSBNFUFSWBMJEBUJPO PQFOSFTUZMVBOHJOYNPEVMF 4 JNBHF 4 JNBHFNFUBEBUB MBNCEB 4&"3$)"1* TFBSDISFTVMU JOEFYJOH JNBHFpMFͷIBTI إɾݐɾMPHPͷ࠲ඪ ը૾ͷMBCFM $.4 JNBHFpMF 7JTJPO"1*
41 -BNCEBͷ׆༻ 4 JNBHF MBNCEB $.4 JNBHFpMF MBNCEB ϑΝΠϧ໊ͱQBUIΛมߋ MBNCEB
4 JNBHFNFUBEBUB ͭͷ4FWFOU͔ΒͭͷMBNCEB ͔͠ൃՐͰ͖ͳ͍ͷͰɺSPVUJOH ແବʹ"1*Λୟ͔ͳ͍Α͏ʹɺ JNBHFpMFͷ&5BHΛνΣοΫ 7JTJPO"1*
42 *NBHF"1* $MPVE'SPOU &$JOTUBODF /HJOY$POUBJOFS OHY@TNBMM@MJHIUΛGPML *NBHF.BHJDL
MVBͰQBSBNFUFSWBMJEBUJPO PQFOSFTUZMVBOHJOYNPEVMF 4 JNBHF 4 JNBHFNFUBEBUB MBNCEB 4&"3$)"1* TFBSDISFTVMU JOEFYJOH JNBHFpMFͷIBTI إɾݐɾMPHPͷ࠲ඪ ը૾ͷMBCFM $.4 JNBHFpMF 4BB4Ͱஔ͖͑
43 ͳͥஔ͖͑ʁ ɾ(PPHMF$MPVE7JTJPO"1*ͰಘΒΕΔɺݐɾMPHPͷ࠲ඪɺ ը૾ͷMBCFMใ͕׆༻͞Εͳ͔ͬͨ ɾࣗલͰओʹ$MPVE'SPOUͷඅ༻͕݁ߏ͔͔Γɺ4BB4ʹൺͯ ͍҆Θ͚Ͱͳ͍ ɾ4BB4ʹ͋ΔػೳͷՃཁٻ͕͋ͬͨ Γൈ͖ͷ࠲ඪࢦఆͰͳ͘ɺDSPQGBDFͷΑ͏ʹࢦఆ͍ͨ͠
ΫϥΠΞϯτʹԠͯ͡ը૾αΠζͷ࠷దԽΛ͍ͨ͠ XBUFSNBSLΛ͚͍ͨ ɾܦిࢠ൛ݻ༗ͷཁ݅ʹ༝དྷ͢Δ༷ͳ͍ 4BB4Ͱ͋ΔఔΧελϚΠζͰ͖Δ߹͋Δ͠ɺ 4BB4ͱࣗલ"1*ͷΈ߹ΘͤΔύλʔϯ͋Δ هࣄը૾ΛΓൈ͘ͱ͖ʹʹͳΔέʔεɺ إ͕ରʹͳΔέʔε͕΄ͱΜͲ
44 ީิ SFTJ[F DSPQ إΛத৺ʹ͠ ͨDSPQ ը૾ͷॏͶ ߹Θͤ GPSNBU ม
4JHOFE 63- ը૾αΠζ ͷ࠷దԽ *NBHF"1* ˓ ˓ ☓ ☓ ˓ ˓ ☓ $MPVEJOBSZ ˓ ˓ ˓ ˓ ˓ ˓ ˓ JNH*9 ˓ ˓ ˓ ˓ ˓ ˓ ˓ "LBNBJ*NBHF .BOBHFS ˓ ˓ ☓ ˓ ˓ *NBHF'MVY ˓ ˓ ☓ ˓ ˓ ˞ݸਓௐͳͷͰɺ࠷৽ͷใ֤ެࣜιʔεΛ֬͝ೝ͍ͩ͘͞
45 ίϞσΟςΟԽͨ͠"1*4BB4ʁ ɾ*NBHFɺ4FBSDIɺػցֶशɾɾɾɺࠓޙ4BB4͞Βʹ૿͑ͦ͏ ࣗલ"1* 4BB4 อक ɾ4PGUXBSFWFSTJPOVQ FY੬ऑੑରԠ ɾোରԠ
΄ͱΜͲͳ͍ ɾ͓·͔ͤ ΧελϚΠζ ɾࣗ͝༝ʹ ɾཁɺҕୗϕʔε ΓͱΓ͕खؒɺͦ ͦͰ͖ͳ͍߹ ։ൃྗ ɾਓ ɾࣗલΑΓਓଟͯ͘ɺ։ൃྗߴ͍ ίετ $BTFCZ$BTF
46 ίϞσΟςΟԽͨ͠"1*4BB4ʁ ɾ*NBHFɺ4FBSDIɺػցֶशɾɾɾɺࠓޙ4BB4͕૿͑ͦ͏ ࣗલ"1* 4BB4 อक ɾ4PGUXBSFWFSTJPOVQ FY੬ऑੑରԠ ɾোରԠ
΄ͱΜͲͳ͍ ɾ͓·͔ͤ ΧελϚΠζ ɾࣗ͝༝ʹ ɾཁɺҕୗϕʔε ΓͱΓ͕खؒɺͦ ͦͰ͖ͳ͍߹ ։ൃྗ ɾਓ ɾࣗલΑΓਓଟͯ͘ɺ։ൃྗߴ͍ ίετ $BTFCZ$BTF $BTFCZ$BTF
47 ͜ΜͳΠϝʔδʁ "1*("5&8": 4&"3$) '-"( 1"1&3 ʜ *."(& $%/ ج൫"1*
ंྠͷ࠶ൃ໌ΑΓϥΠϒϥϦΛ ͬͨํ͕࣭ޮྑ͍ ϥΠϒϥϦͱಉ͡ײ֮ʁ
48 ࠓޙͷ՝औΓΜͰ͍Δ͜ͱ ɾ4BB4ͷ׆༻ ɾMBNCEBΛͬͨ4FSWFSMFTTͳΞʔΩςΫνϟͷద༻ վળ͞Εͦ͏ͳͱ͜Ζ͕͍͔ͭ͋͘Δ TUFQGVODUJPOTศརͦ͏͚ͩͲ·ͩ͞ΘΕͯͳ͍ ɾػցֶशΛ׆༻ͨ͠αʔϏε ɾ(PΛͬͨΞϓϦέʔγϣϯ։ൃ ɾMBNCEBͷΤϥʔϩά͕୳ͮ͠Β͍ ࠓ4FOUSZΛࠐΜͰΤϥʔΛૹ͍ͬͯΔ
$MPVE8BUDI-PHΛ4ʹྲྀ͠ࠐΜͰɺ"UIFOBͰ୳ͤΔΑ͏ʹ͢Δ ɾɾɾ
49 8F`SFIJSJOH TOJLLFJDPNTBJZP 1ZUIPOΤϯδχΞʢػցֶशͰ͖Δͻͱܴʣ ϑϩϯτΤϯυΤϯδχΞ ΞϓϦΤϯδχΞ σβΠφʔ