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
19
6.1k
Functional TypeScript
naoya
15
6.3k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
72
35k
シェルの履歴とイクンリメンタル検索を使う
naoya
15
4.8k
20230227-engineer-type-talk.pdf
naoya
90
76k
関数型プログラミングと型システムのメンタルモデル
naoya
62
110k
TypeScript による GraphQL バックエンド開発
naoya
29
35k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
60k
Other Decks in Technology
See All in Technology
ECS モニタリング手法大整理
yendoooo
1
120
退屈なことはDevinにやらせよう〜〜Devin APIを使ったVisual Regression Testの自動追加〜
kawamataryo
1
130
Amazon Bedrock AgentCore でプロモーション用動画生成エージェントを開発する
nasuvitz
6
420
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
110
実践アプリケーション設計 ③ドメイン駆動設計
recruitengineers
PRO
1
150
トヨタ生産方式(TPS)入門
recruitengineers
PRO
2
190
Webアクセシビリティ入門
recruitengineers
PRO
1
220
AIとTDDによるNext.js「隙間ツール」開発の実践
makotot
5
660
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
Go で言うところのアレは TypeScript で言うとコレ / Kyoto.なんか #7
susisu
5
1.4k
Devinを使ったモバイルアプリ開発 / Mobile app development with Devin
yanzm
0
180
OpenAPIから画面生成に挑戦した話
koinunopochi
0
150
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Into the Great Unknown - MozCon
thekraken
40
2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Building an army of robots
kneath
306
46k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Music & Morning Musume
bryan
46
6.7k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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 $$#:/$/%