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
Webサービス開発の変遷と現在
Search
Naoya Ito
July 12, 2014
Technology
129
22k
Webサービス開発の変遷と現在
Naoya Ito
July 12, 2014
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
8
2.6k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
7.5k
Functional TypeScript
naoya
18
6.6k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
76
37k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.6k
20230227-engineer-type-talk.pdf
naoya
91
84k
関数型プログラミングと型システムのメンタルモデル
naoya
63
110k
TypeScript による GraphQL バックエンド開発
naoya
29
37k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
25k
Other Decks in Technology
See All in Technology
入門DBSC
ynojima
0
130
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait を⾒つけた話
lycorptech_jp
PRO
0
150
Webアクセシビリティ技術と実装の実際
tomokusaba
0
210
Exadata Fleet Update
oracle4engineer
PRO
0
1.3k
製造業ドメインにおける LLMプロダクト構築: 複雑な文脈へのアプローチ
caddi_eng
1
450
Evolution of Claude Code & How to use features
oikon48
1
220
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
3
900
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
260
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.4k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.1k
Datadog Cloud Cost Management で実現するFinOps
taiponrock
PRO
0
140
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
2
420
Featured
See All Featured
The browser strikes back
jonoalderson
0
760
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.8k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
99
Darren the Foodie - Storyboard
khoart
PRO
3
2.7k
Producing Creativity
orderedlist
PRO
348
40k
Ruling the World: When Life Gets Gamed
codingconduct
0
160
Documentation Writing (for coders)
carmenintech
77
5.3k
From π to Pie charts
rasagy
0
140
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Unsuck your backbone
ammeep
672
58k
Believing is Seeing
oripsolob
1
72
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
120
Transcript
8FCαʔϏε։ൃτϨϯυͷ มભͱݱࡏ /BPZB*UP ,"*;&/QMBUGPSN*OD )BDLFST$IBNQMPP
None
None
None
None
None
None
ԭೄͷΈͳ͞Μ͜Μʹͪ
ΞδΣϯμ • ͘Β͍ͷ8FC։ൃΛৼΓฦΔ • ࡢࠓͷ8FCαʔϏε։ൃϓϩηε • ߟ
͜ͷͷ8FC։ൃͷมભ
ΤϙοΫϝΠΩϯάͩͬͨࣄ • +&& • ΞδϟΠϧ։ൃ • 044 • -".1 •
3BJMT"KBY • εϚʔτϑΥϯ • Ϋϥυ • Ϗοάσʔλ • (JU)VC ࠒ த൫ Ҏ߱
ͬ͘͟Γ͚Δͱ • લޙ – +&&ɺΞδϟΠϧ։ൃ • த൫ – 044ɺ-".1ɺ3BJMT"KBY
• Ҏ߱ – εϚʔτϑΥϯ – ΫϥυɺϏοάσʔλ – (JU)VC
ࣗͷλΠϜϥΠϯͱॏͶΔ • લޙ – +&&ɺΞδϟΠϧ։ൃ • த൫ – 044ɺ-".1ɺ3BJMT"KBY
• Ҏ߱ – εϚʔτϑΥϯ – ΫϥυɺϏοάσʔλ – (JU)VC χϑςΟ ʙ ͯͳ ʙ (3&& ʙ ,"*;&/QMBUGPSN*OD ʙ
લޙ • +&&ɺΞδϟΠϧ։ൃ – 4USVUTɺ91 • ʮ8FCΞϓϦέʔγϣϯʯͱ͍͏֓೦͕ఆண͠ ͨ • ΤϯλʔϓϥΠζͰੜ·Εͨ։ൃख๏ɾιϑτ
ΣΞ͕ίϯγϡʔϚ։ൃʹ – 4PMBSJTɺ0SBDMFɺ+BWBɺ/FUTDBQF&OUFSQSJTF 4FSWFS ࣮ࡍʹۀͰͬͯ·ͨ͠
࣌ͷงғؾ • ݸਓ͕దʹॻ͍ͨεΫϦϓτͰμϝ • Ұํɺ+&&ΤϯλʔϓϥΠζख๏ɺͬ ͯΈΔͱ8FCʹॏ͍ • ঃʑʹεΫϦϓτݴޠ 1FSM 1)1
Ͱͷ8FC ։ൃɺΞδϟΠϧ։ൃ͕Γ্͕Γ࢝ΊΔ ʮ1FSM+BWBΑΓ͍͔ Βμϝʯͱ՝ʹݴΘΕ ͨͷࠓͰΑ͍ࢥ͍ग़ Ͱ͢
(PPHMFͷ಄ ςΫϊϩδʔ͕ۀքΛݗ Ҿ͢Δɺͱ͍͏ைྲྀ
த൫ • 044ɺ-".1 – εΫϦϓτݴޠͰ։ൃ͢ΔࣄʹҟΛএ͑Δਓ ͍ͳ͘ͳͬͨ – -JOVYɺ.Z42-ͳͲ͕࣮༻తͳ࣭ʹ • Χʔωϧ.Z42-ͷϨϓϦέʔγϣϯػ ೳ
࣌ͷงғؾ • 8FCΞϓϦέʔγϣϯɺͬͱΧδϡΞϧʹ࡞ΕΔ ͣ – -".1044ʹ͔ͬΓɺݸਓখ͞ͳूஂ͕8FCαʔϏ εΛੜΈग़࣌͢ʹ – ˠ8FC –
։ൃϓϩηεɺͦΕʹ߹ΘͤͯϥΠτΣΠτʹ ͯͳɺͱ͍͏ͷ·͞ ʹͦΕΛମݱͨ͠Α͏ͳ ूஂͰͨ͠
None
8FC • (PPHMFͷϋοΧʔΧϧνϟʔ • 044-".1ʹΑͬͯɺΤϯύϫʔϝϯτ͞Εͨݸਓ খ͞ͳूஂ • ͦ͏͍͏த͔Βग़͖ͯͨ৽͍͠8FCاۀ
3BJMTͱ"KBY • ͦͷޙͷ8FCΞϓϦέʔγϣϯ։ൃͷ ํੑΛܾఆ͚ͮͨͭͷτϨϯυ – 8FCจࣈ௨ΓʮΞϓϦέʔγϣϯʯʹͳ Δ – ෳࡶͳ͜ͱΛ؆୯ʹˠ8FCΞϓϦέʔγϣ ϯ͕ߴԽ͍ͯ͘͠ͱ͍͏લஹ
h"p://www.slideshare.net/yohei/webapi-‐36871915
Ҏ߱ • ΫϥυɺϏοάσʔλɺ(JU)VC – *5ͷத৺ͱͳͬͨ8FC • 5IFDPOTVNFSJ[BUJPOPG*5ᴷίϯγϡʔϚ͔ΒΤϯ λʔϓϥΠζɻߏͷٯస – Ϋϥυ
*BB41BB4 ŋŋŋෳࡶԽ͍ͯ͘͠8FCΞ ϓϦέʔγϣϯ։ൃͷ෦ΛʮαʔϏεʯʹ – খ͞ͳूஂͰߴͳΞϓϦέʔγϣϯɻେ͖ͳूஂ ΑΓෳࡶͭߴͳγεςϜ ଓ͚ͯɺ͜ͷลΛΈ ͍͖ͯ·͢
None
None
(JU)VCͱΫϥυͷ࣌ ΠϚίί
,"*;&/QMBUGPSN*OD "#ςετΫϥυαʔϏεQMBO#$%Λ։ൃ͢Δ໊ఔͷελʔτΞοϓ
None
8FC։ൃͷӈཌྷɾࠨཌྷ • ϥΠτΟϯά – ܧଓతΠϯςάϨʔγϣϯɺܧଓతσϦό ϦʔɺςετࣗಈԽFUD • ϨϑτΟϯά – εΫϥϜɺேձɺࣗݾ৫ԽFUD cf.
h"p://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leDwing-‐of-‐agile.html
։ൃϓϩηε • ϥΠτΟϯά ٕज़తϓϥΫςΟε – (JU)VCɺίʔυϨϏϡʔ – ܧଓతΠϯςάϨʔγϣϯσϦόϦʔ –
$IBU0QT – Ϋϥυͷ׆༻ • ϨϑτΟϯά νʔϜڥ – ϦϞʔτϫʔΫ – ேձɺ,15 – 2JJUB5FBNʹΑΔใڞ༗ – ࣗݾ৫Խ ओʹͬͪ͜ͷΛ͠ ·͢
(JU)VC • (JUSFQPTJUPSZIPTUJOHˠ4PDJBM $PEJOH – (JUͷͨΊͷதԝϨϙδτϦݟ͑ΔԽ – ίϛϡχέʔγϣϯ 044։ൃͳͲʹ͏ɺ͔ Βɺ͜ͷʙͰʮا ۀͰ͏ʯ
(JU)VCͰϓϧϦΫ։ൃ ͯ͢ͷมߋ1VMM 3FRVFTUͰ
ϓϧϦΫ։ൃͷ࣮ࡍ • ҰߦͷมߋϓϧϦΫͰ – Ϛʔδૢ࡞ʹϫʔΫϑϩʔ͕ඥ͍ͯΔ͔Β ޙड़ – Ұߦͷมߋɺͱ͔ͷ࣌΄Ͳো͕͓͖͍͢ $PPLQBEஊ
ʮ(JU)VC্Ͱ͢ʯͷ ͕Α͍࡞๏ ձͷݟ͑ ΔԽ ίʔυϨϏϡʔ
ίʔυϨϏϡϫʔͷࣗಈΞαΠϯ
8*1 8PSL*O1SPHSFTT ʮऴΘ͔ͬͯΒ1VMM 3FRVFTUʯͰͳ͘ ʮ࢝ΊΔͱ͖ʹ1VMM 3FRVFTUʯ
ܧଓతΠϯςάϨʔγϣϯ $JSDMF$*
1VMM3FRVFTUͱ$* • มߋͷͨͼʹςετ • ςετ݁Ռ1VMM3FRVFTU্ͰՄࢹԽ
Ϛʔδͨ͠ΒσϓϩΠ • $JSDMF$*ͰσϓϩΠ – ಛఆͷϒϥϯνʹมߋ͕͋ͬͨΒσϓϩΠ – 1VMM3FRVFTUΛϚʔδ͢ΔσϓϩΠ͢Δ production:
branch: deployment/production commands: -‐ ./script/assets_precompile.sh: -‐ bundle exec cap production deploy:migrations: qa: branch: deployment/qa commands: -‐ ./script/assets_precompile.sh: -‐ bundle exec cap qa deploy:migrations:
ܧଓతσϦόϦʔ master deployment/ edge deployment/ qa มߋNBTUFS QVMMSFRVFTU NFSHFͨ͠ ΒࣗಈͰ
FEHFɻ (開発環境) ຊ൪ϦϦʔε NBTUFS͔ΒRB QVMMSFRVFTU RBNFSHF͞ ΕΔͱ2"ڥࣗ ಈσϓϩΠ FEHFQVTI ͞ΕΔͱ։ൃػ ࣗಈσϓϩΠ deployment/ production 2"ऴΘͬͨ ΒQSPEVDUJPO ಉ༷ʹ
1VMM3FRVFTUσϓϩΠ • σϓϩΠλεΫ1VMM3FRVFTUͰ࣮ߦ – σϓϩΠͷݟ͑ΔԽ – NFSHFϘλϯΛԡ͢ͱ$JSDMF$*ܦ༝ͰσϓϩΠ͕Δ
͜Εԡ͢ɻҎ্ ݁ՌɺσϓϩΠͷํ๏
$IBU0QT • IVCPU • CPUʹ͓ئ͍ͯ͠ΦϖϨʔγϣϯ
None
None
ϦϦʔε࣌ͷνΣοΫϦετΛ IVCPU͕ࣗಈ࡞
࠷ۙCPU͕CPUΛಈ͔ͯ͠Δ ʮ͓લͷมߋؒͳ͘Ͱ Δ͔Β࠷ऴ֬ೝ͠ΖΑʯ ͱ͍͏ͷIVCPU͕ఆظ తʹݺͼ͔͚ͯ͘Δ CPU͕IVCPUʹ ໋ྩΛग़͢
(JU)VCͰมΘͬͨ͜ͱ • 044։ൃͷΑ͏ͳΓํΛɺاۀνʔ Ϝ։ൃʹ ͦ͏͍͑(PPHMF͕ɺͦ ΜͳΓํΛͯ͠Δͱ͍ͣ ͿΜલʹݴͬͯͨ
(JU)VCͰมΘͬͨ͜ͱ • 1VMM3FRVFTUʹϫʔΫϑϩʔΛू͞ ͤΔɺͱ͍͏ߟ͑ํ – ίʔυϨϏϡʔɺςετɺ2"ɺσϓϩΠŋŋŋ – ؔ࿈λεΫ͕ɺͭͷ1VMM3FRVFTUͷจ຺ Ͱ·ͱΊΒΕΔ ʮ˓˓ͱ͍͏ػೳΛՃ͢ΔͨΊ ʹߦΘΕͨίϛοτ܈ɺσΟε ΧογϣϯɺϨϏϡʔ݁Ռɺςɹ
ετͷཤྺŋŋŋʯͰҰͭͷ1VMM 3FRVFTU
ΫϥυαʔϏεͷ࣌ • ࣗͨͪͷϑΥʔΧεͰͳ͍ͱ͜Ζɺ ੵۃతʹΫϥυΞτιʔε
"84 QMBO#$%ͷαʔόʔΠ ϯϑϥશͯ"84Ͱ
)FSPLV • IVCPUQMBO#$%ͷαϒγεςϜͷӡ ༻ʹར༻
$JSDMF$* $JBTB4FSWJDF ςετ࣮ߦ͚ͩͰͳ͘ɺ σϓϩΠͳͲ(JU)VC ϫʔΫϑϩʔͷ͏ͻͱ ͭͷཁʹͳ͍ͬͯ·͢
$BTQFS+4Ͱ&&
&&Λ$JSDMF$*Ͱ
4USJQF ܾࡁ
.BOESJMM ϝʔϧૹ৴
#VHTOBH ྫ֎ཧ
#SPXTFS4UBDL Ϋϩεϒϥβςετ
IVCPUͰΫϩεϒϥβͷ εΫγϣࡱӨ
.BDLFSFM ϞχλϦϯά
/FX3FMJD ϞχλϦϯάͱࢹ
1BHFS%VUZ Ξϥʔτ TFOTV͕ҟৗΛݕ͢ Δͱ1BHFS%VUZ͕ࣗ ಈͰ୲ʹ ి
#JH2VFSZ σʔλղੳ ԯϨίʔυΛඵͰ 42- .11
%FWFMPQFS1SPEVDUJWJUZ • 2ʮ͜ͷखͷಋೖͷۀ࣌ؒͲ͏ͬͯ࡞ΔΜͰ͔͢ ʯ • "ʮͦΕΛϛογϣϯʹͯ͠ΔνʔϜ͕͋Γ·͢ʯ ଞࣾͰࣅͨΑ͏ͳΛ ͱ͖Ͳ͖ฉ͘
ࢥͬͨ͜ͱ
8FCͷਐԽࢭ·Βͳ͍ • ؒɺԿ͜ΕͰܾఆ൛͔ͱࢥͬͨ ͜ͱ͕͋ͬͨ – ࣮ࡍɺͦ͜Ͱࢭ·Δ͜ͱͳ͔ͬͨ • (PPHMFɺ'BDFCPPLɺ5XJUUFS • 3BJMTɺ/PEFKTɺJ04"OESPJEɺ(PMBOH •
ͲΜͲΜߴԽɾෳࡶԽ͢Δ8FCΞϓϦέʔγϣ ϯεϚʔτϑΥϯ։ൃ ͍ͭ·Ͱཱͬͯམͪ ண͔ͳ͍
ະདྷ༧ଌ͍͠ • (JU)VC͕ɺΫϥυ͕ɺΈ͍ͨͳ͙ۙΒ͍ ͋Δఔݟ͑Δ • େ͖ͳมԽಥવͬͯ͘Δɻ༧ଌͰ͖ͳ͍ – 3VCZPO3BJMTͷϦϦʔεɺ"84ɺ(JU)VCͷا ۀͰͷར༻ŋŋŋFUD –
όζϫʔυͱݴΘΕ͍ͯͨͷɺؾͮ͘ͱఆணͨ͠ Γ͢Δ ྫΫϥυɺϏοάσʔλ
ະདྷ༧ଌΑΓɺมԽͷదԠ • มԽ͢Δ͜ͱΛલఏʹɺదԠ͠ଓ͚Δ͔͠ͳ͍ – ܧଓతʹ – ΞδϦςΟͷ্ • ໘ന͍͜ͱ͕ىͬͨ͜ͱ͖ɺͬ͞ͱඈͼ͔͔Ε Δ͔Ͳ͏͔
– ݸਓతʹɺνʔϜతʹ – จԽॏཁ
อकతPSਐาత ͍͠ŋŋŋ • ผʹɺ৽͍͜͠ͱ͕ॏཁͳͷͰͳ͍ – ྡͷࣳৗʹ੨͍ – ྲྀߦΛऔΓೖΕΔ͜ͱ͕ඞͣ͠ਖ਼ղͱݴ͑ͳ͍ •
ݴޠΛΓ͑ͨΒ࣍ͷݴޠ͕དྷͨɺͱ͔ɻӬٱʹϑΥʔΧεͰ͖ ͳ͍ • อकత͗ͯ͢औΓ͞ΕΔ – ʮखஈͱతΛཤ͖ҧ͑Δͳʯ͓͡͞Μ – खஈΛతԽͯ͠Ͱ͔ͬͬͨํ͕݁Ռతʹྑ͍͜ͱ͋Δ
ͳͥখ͞ͳνʔϜ͕༗ར͔ খ͞ͳνʔϜมԽ ͷ߅ྗ͕খ͍͞
اۀ͖͔͢ • Α͘Θ͔Βͳ͍ – ιϑτΣΞ։ൃʹ͓͍ͯ େہతʹ খ ͞ͳνʔϜͷํ͕༗ར – (PPHMF'BDFCPPLͷΑ͏ͳ)BDLFS 8BZ͕εέʔϧ͢Δ৫ͷͨΊͷཁૉɺ͔
• େ͖͘ͳͬͯյͤΔจԽ • ϗϥΫϥγʔ
݁ŋŋŋͳ͠ • ͳͥͳΒɺ͜Ε͔ΒมԽ͠ଓ͚Δ͔Β • େࣄʹ͍ͯ͠Δ͜ͱ – ʮͦͷ࣌ͦͷ࣌Ͱɺೲಘͯ͠Ε͍ͯΔ͔ʯ • ࠓ͕͍ࣗͬͯΔ͜ͱ͕ɺେͰؒҧ͍ͬͯ ͳ͍ͱࢥ͑Δ͜ͱ •
ೲಘͰ͖͍ͯΕɺͤʹ։ൃͰ͖ΔɻೲಘͰ͖ ͳ͍ͳΒյ͢
·ͱΊ • 8FC։ൃͷͱࠓΛΈͨ • (JU)VCɺΫϥυͷ࣌ • ͜Ε͔Β8FC։ൃ8FCͱڞʹมԽ͠ ଓ͚Δ • มԽʹదԠ
• ೲಘތΓ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ण࢘Ώ͖CZBXBZVLJ $$#:/$/%