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
21
6.8k
Functional TypeScript
naoya
17
6.5k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
75
36k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.4k
20230227-engineer-type-talk.pdf
naoya
91
78k
関数型プログラミングと型システムのメンタルモデル
naoya
63
110k
TypeScript による GraphQL バックエンド開発
naoya
29
36k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
60k
Other Decks in Technology
See All in Technology
マルチドライブアーキテクチャ: 複数の駆動力でプロダクトを前進させる
knih
0
2.5k
『HOWはWHY WHATで判断せよ』 〜『ドメイン駆動設計をはじめよう』の読了報告と、本質への探求〜
panda728
PRO
5
2.1k
その意思決定、まだ続けるんですか? ~痛みを超えて未来を作る、AI時代の撤退とピボットの技術~
applism118
0
200
国産クラウドを支える設計とチームの変遷 “技術・組織・ミッション”
kazeburo
3
2k
LINEスキマニ/LINEバイトにおけるバックエンド開発
lycorptech_jp
PRO
0
310
事業状況で変化する最適解。進化し続ける開発組織とアーキテクチャ
caddi_eng
1
320
pmconf 2025 大阪「生成AI時代に未来を切り開くためのプロダクト戦略:圧倒的生産性を実現するためのプロダクトサイクロン」 / Product Cyclone for the Outstanding Productivity
yamamuteki
1
150
現地速報!Microsoft Ignite 2025 M365 Copilotアップデートレポート
kasada
1
1.3k
AIと自動化がもたらす業務効率化の実例: 反社チェック等の調査・業務プロセス自動化
enpipi
0
670
アジャイル社内普及ご近所さんマップを作ろう / Let's create an agile neighborhood map
psj59129
1
130
大規模プロダクトで実践するAI活用の仕組みづくり
k1tikurisu
4
1.6k
新しい風。SolidFlutterで実現するシンプルな状態管理
zozotech
PRO
0
120
Featured
See All Featured
Scaling GitHub
holman
463
140k
Typedesign – Prime Four
hannesfritz
42
2.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
Statistics for Hackers
jakevdp
799
220k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Optimizing for Happiness
mojombo
379
70k
Designing for humans not robots
tammielis
254
26k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
A designer walks into a library…
pauljervisheath
210
24k
Designing for Performance
lara
610
69k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
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 $$#:/$/%