Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Webサーバの高集積マルチテナントアーキテクチャに関する研究 / Studies on Hig...
Search
MATSUMOTO Ryosuke
PRO
September 05, 2016
Research
17k
12
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Webサーバの高集積マルチテナントアーキテクチャに関する研究 / Studies on Highly Integrated Multi-Tenant Architecture for Web Servers
松本亮介
2016年8月30日
2016年度 京都大学大学院 情報学研究科 博士課程 予備審査
MATSUMOTO Ryosuke
PRO
September 05, 2016
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
930
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
990
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.6k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.5k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
390
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
970
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
8
27k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.6k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.6k
Other Decks in Research
See All in Research
[SNLP2026] Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach
wataruuuuu
0
350
J-STAGEの現況と全文XML登載必須化について
xspa2012
0
340
ふとした出会いで生まれたSkillが、 社内利用1位になるまで
mikimhk
22
25k
全国町字単位空き家率推定データver1.0データ仕様
microbaseinc
0
290
山中市政が招いた組織崩壊:よこはま安心ボックスを例に
sishi
0
350
Pesée et pointage par imagerie 3D : PHENO3D entre en phase de test terrains
institutdelelevage
PRO
0
120
GeoAgent勉強会 論文紹介と強い推論モデルが与えるインパクト
satai
5
390
[webinaire du Ciirpo] Agnelages plein air : des éleveurs partagent leurs pratiques
institutdelelevage
PRO
0
240
CDCL を用いた MILP の厳密解法
imai448
0
310
VLMの推論を高速化する視覚トークン削減の仕組み
tattaka
2
380
[最先端NLP勉強会2026] Agentic Rubrics as Contextual Verifiers for SWE Agents
rfujii
1
400
Evaluation génomique des femelles laitières croisées : comprendre la méthode pour accompagner les éleveurs à son utilisation
institutdelelevage
PRO
0
180
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.5k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
KATA
mclloyd
PRO
35
16k
Crafting Experiences
bethany
1
390
Transcript
4UVEJFTPO)JHIMZ*OUFHSBUFE.VMUJ5FOBOU"SDIJUFDUVSF GPS8FC4FSWFST দຊ྄հ ݄ ژେֶେֶӃใֶݚڀՊത࢜՝ఔ༧උ৹ࠪ 8FCαʔόͷߴूੵϚϧνςφϯτ ΞʔΩςΫνϟʹؔ͢Δݚڀ
࣍ʢʣ ݚڀͷతͱҐஔ͚ͮ ैདྷͷݚڀͱ՝ͷཧ ߴूੵϚϧνςφϯτํࣜͷӡ༻ޮͱηΩϡϦςΟͷཱ྆ ͷͨΊͷΞΫηε੍ޚΞʔΩςΫνϟ ߴूੵϚϧνςφϯτํࣜͷߴʹݖݶ͢ΔΞΫηε੍
ޚΞʔΩςΫνϟ
࣍ʢʣ ߴ͔ͭ҆શʹεΫϦϓτݴޠͰ8FCαʔόΛ֦ு͢ΔͨΊ ͷΞʔΩςΫνϟ ϦΫΤετ୯ҐͰίϯϐϡʔλϦιʔεΛ͢ΔϦιʔε੍ ޚΞʔΩςΫνϟ ·ͱΊ
ୈষ ݚڀͷతͱҐஔ͚ͮ
ݚڀͷഎܠ wΫϥυ֤छ8FCαʔϏεͷීٴͱݸਓͷར༻ w8FCαʔϏεͷՁ֨Խͱ࣭ͷڝ૪ w8FCαʔόͷߴूੵϚϧνςφϯτํࣜʹ wηΩϡϦςΟͱੑೳ্͕ॏཁ wӡ༻ٕज़ͷݚڀͱγεςϜͷ҆ఆԽ͕՝
ݚڀͷత wߴूੵϚϧνςφϯτํࣜͷ՝Λཧɾղܾ wಛʹςφϯτͷίϯςϯπΛࣄۀऀ͕ཧͰ͖ͳ͍߹ ߴूੵϚϧνςφϯτؒͰͷݖݶͷ՝ղܾ ߴूੵϚϧνςφϯτํࣜͷػೳ֦ுͷ՝ղܾ ߴूੵϚϧνςφϯτؒͰͷϦιʔεͷ՝ղܾ
ݚڀͷҐஔ͚ͮ w8FCαʔόͷߴूੵϚϧνςφϯτํࣜʹ͓͍ͯίϯςϯπ ੍͕ޚग़དྷͳ͍߹ͷෳͷ՝Λཧͯ͠ղܾ wߴूੵϚϧνςφϯτํࣜͷ8FCϗεςΟϯάʹண wମܥతʹϚϧνςφϯτํࣜͷैདྷख๏ͷ՝Λཧ wੑೳɾηΩϡϦςΟɾϦιʔε੍ޚɾӡ༻ٕज़ͷ؍Ͱղܾ w044ͱͯ͠ӡ༻ʹ͑͏Δ࣮Λߦ͍෯͘ར༻ͯ͘͠
ୈষ ैདྷͷݚڀͱ՝ͷཧ
ߴूੵϚϧνςφϯτํࣜͷ՝Λཧ جຊ֓೦ ӡ༻ٕज़ͱηΩϡϦςΟͱੑೳͷ՝ 8FCαʔόػೳ֦ுͷ՝ 8FCαʔόͷϦιʔε੍ޚͷ՝
جຊ֓೦
Ϛϧνςφϯτํࣜ
8FCαʔόͷϚϧνςφϯτํࣜ w୯ҰͷαʔόʹෳͷϢʔβڥΛߏங wӡ༻ίετͱऩ༰ʢϋʔυΣΞʣίετΛݮՄೳ wϢʔβڥͷίϯςϯπ੍͕ޚՄೳͳ߹ద wࣄۀऀ͕ίϯςϯπΛཧͰ͖ͳ͍߹ӡ༻͕ඇৗʹࠔ ςφϯτؒͷϦιʔεͷڝ߹ੑೳͷόϥϯε
8FCίϯςϯπͷཧͱϚϧνςφϯτ w8FCίϯςϯπΛࣄۀऀ͕ཧͰ͖Δ߹ 8FCίϯςϯπͰϦιʔεݖݶͷΛఆՄೳ ςφϯτͷऩ༰ઃܭൺֱత༰қ w8FCίϯςϯπΛࣄۀऀ͕ཧͰ͖ͳ͍߹ ͋ΒΏΔίϯςϯπ͕ಈͨ͘Ίऩ༰ઃܭɾӡ༻͕ࠔ ੬ऑͳίϯςϯπ͕͋ΔલఏͰϦιʔεɾݖݶ
8FCϗεςΟϯάαʔϏε
8FCϗεςΟϯάαʔϏεͷಛ wࣄۀऀ͓٬༷ͷ8FCίϯςϯπΛ੍ޚͰ͖ͳ͍ wϛυϧΣΞɾ04Ͱ੍ޚ͢Δඞཁ͕͋Δ wͰ͖Δ͚ͩฏʹϢʔβମݧΛఏڙ͖͢ wڞ༗ͷ߹Ϧιʔε੍ޚηΩϡϦςΟ͕ॏཁ wੑೳͱऩ༰Λ͍͔ʹόϥϯεΛͱΔ͔ॏཁ
ߴूੵͷඞཁੑͱՁ֨Խ
ݸਓ͚ͷ8FCαʔϏεͷ૿ՃͱՁ֨Խ wֶੜओ්ͩͬͨΓݸਓ͕झຯͰ͏༻్͕ଟ͍ wϋʔυΣΞʹͲΕ͚ͩߴूੵͰ͖Δ͔͕ॏཁ wͱʹ͔҆͘͘ੑೳͷྑ͍ͷΛఏڙ͍ͨ͠ wຊݚڀͰιϑτΣΞٕज़ʹΑΔղܾͷΞϓϩʔν
ϚϧνςφϯτΞʔΩςΫνϟͷجຊ֓೦ wߴूੵϚϧνςφϯτํࣜͷ8FCαʔόͷΞʔΩςΫνϟ wಈతίϯςϯπͷ࣮ߦํࣜ
ߴूੵϚϧνςφϯτํࣜͷ 8FCαʔόͷΞʔΩςΫνϟ
ϓϩηεͱऩ༰αΠτ͕ॏཁ wϓϩηε͕αΠτʹґଘ͠ͳ͍Α͏ͳߏ wෳαΠτڞ༗ͷ8FCαʔόϓϩηε͕ϦΫΤετ ͞Εͨϗετ໊͔ΒಈతʹίϯςϯπΛݕग़ͯ͠ॲཧ ͢Δํ͕ࣜߴूੵϚϧνςφϯτʹඞཁ ྫɿ"QBDIFͷ7JSUVBM)PTU
8FCαʔόͷجຊతͳϞσϧ 1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSBQBDIF $IJMEIUUQEQSPDFTT PXOFSBQBDIF $IJMEIUUQEQSPDFTT PXOFSBQBDIF $MJFOU
ϦΫΤετ Ϩεϙϯε 6/*9ܥ04ͷ߹ࣄલʹϦΫΤετΛड͚Δ ϓϩηεΛෳGPSL ͯ͠ϓʔϧ͓ͯ͘͠ ʢ͜ΕΒશͯΛؚΊͯʮ୯Ұͷαʔόϓϩηεʯͱఆٛʣ ϦΫΤετ Ϩεϙϯε ϦΫΤετ Ϩεϙϯε
ߴूੵͷͨΊͷΞʔΩςΫνϟ IUUQE Ϣʔβ" IUUQE Ϣʔβ# IUUQE Ϣʔβ$ IUUQE Ϣʔβ" Ϣʔβ#
Ϣʔβ$ ޮྑ͘ϦιʔεΛ͑Δ ىಈʹඞཁ ͳϦιʔε ىಈʹඞཁ ͳϦιʔε ىಈʹඞཁ ͳϦιʔε ىಈʹඞཁͳϦιʔε ߴूੵ͕ཁٻ͞ΕΔ߹ͷ Ϛϧνςφϯτʢຊݚڀʣ ϚϧνςφϯτͷผΞϓϩʔν
ಈతίϯςϯπͷ࣮ߦํࣜ
ಈతίϯςϯπͷ࣮ߦํࣜ w$(*࣮ߦํࣜ ಉҰΠϯλϓϦλͷෳόʔδϣϯΛ༻ҙͰ͖Δར w%40࣮ߦํࣜ ੑೳߴ͍͕جຊతʹ୯Ұͷ8FCαʔόʹΠϯλϓ ϦλΛෳόʔδϣϯ࣋ͯͳ͍
$(*࣮ߦํࣜ $(*QSPDFTT QIQDHJJOEFYQIQ $(*QSPDFTT GPSL UFSNJOBUFQSPDFTT FYFDWF 1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT
PXOFSBQBDIF ϦΫΤετຖʹϓϩηεͷੜɾഁغͱ ൺֱతେ͖ͳόΠφϦʢ1)1ͩͱQIQDHJόΠφϦʣͷ FYFDWF ͕ඞཁ
%40࣮ߦํࣜ 1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSBQBDIF JOEFYQIQ QBSTF SVO αʔόϓϩηεʹΠϯλϓϦλΛ
ΈࠐΜͰ͓͘
ߴूੵϚϧνςφϯτํࣜͷ՝ wߴूੵΛ࣮ݱ͢Δ"QBDIFͷ7JSUVBM)PTUͷΑ͏ͳ ΞʔΩςΫνϟίετޮ͕ྑ͍͕ෳ՝͕Δ ӡ༻ٕज़ͱηΩϡϦςΟͱੑೳͷ՝ 8FCαʔόͷػೳ֦ுͱ՝ 8FCαʔόͷϦιʔε੍ޚͱ՝
ӡ༻ٕज़ͱηΩϡϦςΟͱੑೳͷ՝
ӡ༻ٕज़ͱੑೳͷ՝ wςφϯτ୯ҐʹઃఆΛՃͯ͠ཧɾ੍ޚ͢Δӡ༻ wςφϯτͷ੩తઃఆʹΑΔϝϞϦͱಡࠐΈෛՙ૿େ ϖʔδςʔϒϧΤϯτϦͷංେԽʹΑΓGPSL ͕ඇৗʹ͍ ϓϩηεͷϦϩʔυ͔͔࣌ؒΔ߹༗Γ
ηΩϡϦςΟͱੑೳͷ՝ w$(*൛ͷΞΫηε੍ޚʹΑΔ੩తઃఆͷڧ੍ ςφϯτ୯ҐͰ੩తʹΦʔφ໊Λઃఆ͢Δඞཁ༗Γ w%40൛Λ׆͔͢ΞΫηε੍ޚ͕ଘࡏ͠ͳ͍ طଘͷΞΫηε੍ޚͰ$(*൛ҎԼͷੑೳ wςφϯτ֎ͷγεςϜྖҬͷӾཡ
$(*QSPDFTT PXOFSVTFS $(*QSPDFTT PXOFSSPPU QIQDHJJOEFYQIQ PXOFSVTFS $(*QSPDFTT PXOFSVTFS ੩తʹઃఆ͞ΕͨVJEΛݩʹTFUVJE TFUHJE
GPSL FYFDWF TVFYFDQSPHSBN TFUVJESPPU UFSNJOBUFQSPDFTT FYFDWF 1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSBQBDIF ˞$(* ैདྷͷΞΫηε੍ޚख๏ ϦΫΤετຖʹ$(*༻ϓϩηεͷ ੜഁغ͕ඞཁ
1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSSPPU JOEFYQIQ PXOFSVTFS TFUVJE TFUHJE QBSTF SVO
$IJMEIUUQEQSPDFTT PXOFSVTFS $IJMEIUUQEQSPDFTT PXOFSVTFS UFSNJOBUFQSPDFTT ϦΫΤετຖʹࢠIUUQEϓϩηεͷੜഁغ͕ඞཁ ˞%40 ैདྷͷΞΫηε੍ޚख๏
ఏҊख๏
ӡ༻ٕज़ͱηΩϡϦςΟΛղܾ wͭͷΞʔΩςΫνϟΛఏҊ $(*൛ͰηΩϡϦςΟͱӡ༻ٕज़Λཱ྆͢ΔΞΫηε ੍ޚΞʔΩςΫνϟˠষ %40൛ͰηΩϡϦςΟͱੑೳΛཱ྆͢ΔΞΫηε੍ ޚΞʔΩςΫνϟˠষ
8FCαʔόͷػೳ֦ுͱ՝
8FCαʔϏεͷ҆ఆੑ্ͷඞཁੑ wηΩϡϦςΟϦιʔεͷॏཁੑ wαʔϏεͷӡ༻ɾཧίετͷݮ͕ඞཁ wαʔϏεܗଶʹΑͬͯ8FCαʔόΛ࠷దԽ wίϯςϯπʹґଘ͠ͳ͍ػೳͷඞཁੑ͕૿Ճ
8FCαʔόͷػೳ֦ு͕ॏཁ w8FCίϯςϯπॲཧલޙʹॲཧΛࠩ͠ࠐΉ w8FCίϯςϯπʹґଘ͠ͳ͍ޮͷྑ͍ΞΫηε੍ ޚϦιʔεΛ࣮ݱՄೳ w8FCαʔϏεͷӡ༻ɾཧΛޮԽ wػೳ֦ுͱ࣮ͯ͢͠Δ͜ͱͰӡ༻อकΛߟྀ
ैདྷͷ8FCαʔόͷػೳ֦ுख๏ w$ݴޠʹΑΔ࣮͕ఆ൪ ߴ͔ͭলϝϞϦ㱻อकੑੜ࢈ੑ͕͍ wεΫϦϓτݴޠʹΑΔ࣮ อकੑੜ࢈ੑ͕ߴ͍㱻ੑೳɾ҆શੑͷ
ఏҊख๏
εΫϦϓτͰߴ͔ͭলϝϞϦʹ֦ுՄೳ w8FCαʔόϓϩηεͷΠϯλϓϦλΈࠐΈΛ࠷దԽ wߴूੵϚϧνςφϯτํࣜͰӡ༻อकΛߟྀͨ͠ػೳ ֦ுΞʔΩςΫνϟॏཁ ੑೳ໘ͱ҆શੑΛཱ྆ͨ͠ΞʔΩςΫνϟͷઃܭͱੜ ࢈ੑΛߴΊΔ࣮ˠষ
8FCαʔόͷϦιʔε੍ޚͱ՝
ैདྷͷ8FCαʔόͷϦιʔε੍ޚ wϋʔυΣΞϦιʔεಉ࣌ଓͳͲΛ୯७ͳᮢ ॲཧͰ੍ݶ wᮢΛ͑ΔͱϦΫΤετॲཧΛڧ੍அɾڋ൱ wड͚Δ͔ड͚ͳ͍͔ͷ୯७ͳ੍ޚ
ैདྷͷϦιʔε੍ޚͷ՝ wϚϧνςφϯτʹ͓͍ͯཧऀ͕ίϯςϯπΛཧͰ͖ ͳ͍ঢ়گͰϦιʔε༻ྔΛॊೈʹ੍ޚͰ͖ͳ͍ wಉ࣌ଓͳ͍ͰҰͭͷϦΫΤετͰେྔʹϦιʔε Λ༻͢ΔίϯςϯπΛߟྀͰ͖͍ͯͳ͍ wಉҰͷαʔϏεར༻ྉΛ͍ͬͯΔ͕Ϧιʔεڝ߹ʹΑ Γշదʹ͑ΔϢʔβͱ͑ͳ͍Ϣʔβͷ͕ࠩେ͖͍
ఏҊख๏
ϦΫΤετ୯ҐͰϦιʔεΛ wϦΫΤετͷதஅͰͳ͘ܧଓతʹॲཧ wϦΫΤετ୯ҐͰϦΫΤετͷଐੑʹج͍ͯϦιʔε੍ޚ wཧऀ͕ෳࡶͳઃఆΛϓϩάϥϚϒϧʹදݱՄೳ ಛఆͷίϯϐϡʔλϦιʔεൣғͰॲཧ͢ΔΞʔΩς Ϋνϟˠষ
ୈষ ߴूੵϚϧνςφϯτํࣜʹΑΔ WebόʔνϟϧϗεςΟϯάج൫ͷ ηΩϡϦςΟͱӡ༻ٕज़ͷ՝ͱվળ
ষͷ՝ͷ·ͱΊ wಈతίϯςϯπ$(*ํࣜΛ͏ඞཁ͕͋Δ ෳόʔδϣϯͷΠϯλϓϦλΛѻ͍͍ͨ %40൛ͷΞΫηε੍ޚ$(*ఔͷੑೳʹͳΔ ੩తઃఆͷ૿ՃʹΑΔϝϞϦ༻ྔͷ૿େ wγεςϜྖҬͷӾཡෆՄͷͨΊͷઃఆίετ͕ߴ͍
ӡ༻໘ͱηΩϡϦςΟΛཱ྆͢ΔఏҊ wϦΫΤετϑΝΠϧ͔ΒಈతʹPXOFSΛऔಘ ઃఆΛςφϯτͷʹ߹Θͤͯ૿͢ඞཁແ͠ ूੵʹґଘ͢ΔϝϞϦ૿େΛݮ ߴूੵ࣌ʹ͓͍ͯϝϞϦ૿େʹ͏ϖʔδςʔϒϧΤϯ τϦ͕૿͑ͳ͍ͨΊGPSL ͕͘ͳΒͳ͍ wݖݶͷࡍʹϑΝΠϧγεςϜΛ߹Θִͤͯ
1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSSPPU JOEFYQIQ PXOFSVTFS TFUVJE TFUHJE QBSTF SVO
˞%40 ैདྷͷΞΫηε੍ޚख๏ $IJMEIUUQEQSPDFTT PXOFSVTFS $IJMEIUUQEQSPDFTT PXOFSVTFS UFSNJOBUFQSPDFTT ϦΫΤετຖͷࢠIUUQEϓϩηεͷੜഁغ͕ඞཁ
$(*QSPDFTT PXOFSVTFS $(*QSPDFTT PXOFSSPPU QIQDHJJOEFYQIQ PXOFSVTFS $(*QSPDFTT PXOFSVTFS ੩తʹઃఆ͞ΕͨVJEΛݩʹTFUVJE TFUHJE
GPSL FYFDWF TVFYFDQSPHSBN TFUVJESPPU UFSNJOBUFQSPDFTT FYFDWF 1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSBQBDIF ϦΫΤετຖʹ$(*༻ϓϩηεͷ ੜഁغ͕ඞཁ ˞$(* ैདྷͷΞΫηε੍ޚख๏
$(*QSPDFTT PXOFSVTFS $(*QSPDFTT PXOFSSPPU QIQDHJJOEFYQIQ PXOFSVTFS $(*QSPDFTT PXOFSVTFS DISPPU
ϦΫΤετϑΝΠϧ͔ΒVJEऔಘޙ TFUVJE TFUHJE GPSL FYFDWF TVFYFDQSPHSBN TFUVJESPPU UFSNJOBUFQSPDFTT FYFDWF 1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSBQBDIF DISPPU&OWJSPONFOU ˞$(* ఏҊ͢ΔΞʔΩςΫνϟ
ੑೳධՁ w"QBDIFIUUQEʹରͯ͠ఏҊΞʔΩςΫνϟΛ࣮ wಉ࣌ଓΛมԽͤ͞ͳ͕ΒඵؒͷϨεϙϯεΛܭଌ w1)1ͰจࣈྻΛग़ྗ͢Δ͚ͩͷ$(*ϓϩάϥϜΛར༻ w%40ͷैདྷͷΞΫηε੍ޚɾ$(*ͷैདྷͷΞΫηε੍ޚɾ $(*ͷఏҊ͢ΔΞΫηε੍ޚͰൺֱ
࣮ݧڥ
̏ষ·ͱΊ wӡ༻ٕज़ͱηΩϡϦςΟΛߟྀͨ͠$(*ͷ৽͍͠ΞʔΩςΫνϟΛఏҊ wैདྷͷΞʔΩςΫνϟͱಉͷੑೳͰΑΓηΩϡΞͰѻ͍͍༷͢ ߴूੵ࣌ʹ͓͍ͯઃఆʹԠͨ͡ϝϞϦ૿Ճ͕ੜ͡ͳ͍ͨΊ࣮ӡ༻ ্ߴʹಈ࡞Մೳ wߴूੵϚϧνςφϯτͷςφϯτ૿ՃΛߟྀͨ͠ΞʔΩςΫνϟ
ୈষ εϨου୯ҐͰߴʹݖݶΛߦ͏ WebαʔόͷΞΫηε੍ޚΞʔΩςΫνϟ
ষͷ՝ͷ·ͱΊ wষͷΞΫηε੍ޚΞʔΩςΫνϟӡ༻ੑʹண $(*ͷརʢෳόʔδϣϯͷఏڙʣΛߟྀ w%40൛ͷੑೳΛ׆͔͢ΞΫηε੍ޚख๏͕ແ͍ ࣮ߦํࣜΠϯλϓϦλʹΑͬͯΞΫηε੍ޚख๏ ͕ෳଘࡏ͓ͯ͠Γࡶ
ߴूੵϚϧνςφϯτͱ$(*ɾ%40ͷੑೳ wੑೳ໘Ͱ$(*ຊདྷద͍ͯ͠ͳ͍ ऩ༰͕૿͑ΔͱϓϩηεͷϝϞϦ༻ྔ͕૿͑GPSL ͷޮԼ ͦͦϦΫΤετ୯ҐͰGPSL ͢ΔͷͰ͍ w%40GPSL ͠ͳ͍ͷͰద͍ͯ͠Δ
%40ͷΞΫηε੍ޚΞʔΩςΫνϟϦΫΤετຖʹGPSL ͕ඞཁ
1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSSPPU JOEFYQIQ PXOFSVTFS TFUVJE TFUHJE QBSTF SVO
˞%40 ैདྷͷΞΫηε੍ޚख๏ $IJMEIUUQEQSPDFTT PXOFSVTFS $IJMEIUUQEQSPDFTT PXOFSVTFS UFSNJOBUFQSPDFTT ϦΫΤετຖͷࢠIUUQEϓϩηεͷੜഁغ͕ඞཁ
ఏҊ͢ΔΞΫηε੍ޚΞʔΩςΫνϟ wಈతίϯςϯπ࣮ߦલʹΦʔφมߋͷಛݖͷΈΛ༩ ͑ͨεϨουΛ࡞ wΦʔφมߋͨ͠εϨου্ͰίϯςϯπΛॲཧ wίϯςϯπ࣮ߦޙεϨουͷΈΛআ w$(*ɾ%40྆ํͷ࣮ߦํࣜʹରԠ͢ΔΞʔΩςΫνϟ
εϨουͱ-JOVY$BQBCJMJUJFT w-JOVY,FSOFMҎ߱ͷಠࣗͷηΩϡϦςΟϞσϧ wSPPUಛݖΛࡉԽͯ͠εϨου୯ҐͰ༩Մೳ wΦʔφʔͷมߋɾXFMMLOPXOQPSUͷMJTUFOݸ w-JOVYલఏͰ͋ΕఏҊख๏͕࣮ݱՄೳ
1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSBQBDIF UISFBE PXOFSVTFS UISFBE PXOFSBQBDIF JOEFYQIQ PXOFSVTFS
TFUVJE TFUHJE ʜ VOTFUDBQT DSFBUFUISFBE TFUDBQT EFTUSPZUISFBE QBSTF SVO QSDUM TFUVJETFUHJEDBQT UISFBE PXOFSVTFS ˞%40 ఏҊ͢ΔΞΫηε੍ޚΞʔΩςΫνϟ
1BSFOUIUUQEQSPDFTT PXOFSSPPU $IJMEIUUQEQSPDFTT PXOFSBQBDIF UISFBE PXOFSVTFS UISFBE PXOFSBQBDIF TFUVJE TFUHJE
ʜ VOTFUDBQT DSFBUFUISFBE TFUDBQT EFTUSPZUISFBE QSDUM TFUVJETFUHJEDBQT UISFBE PXOFSVTFS ˞$(* ఏҊ͢ΔΞΫηε੍ޚΞʔΩςΫνϟ $(*QSPDFTT PXOFSVTFS QIQDHJJOEFYQIQ PXOFSVTFS $(*QSPDFTT PXOFSVTFS GPSL UFSNJOBUFQSPDFTT FYFDWF
-JOVYͰ"QBDIFϞδϡʔϧͱ࣮ͯ͠ wNPE@QSPDFTT@TFDVSJUZϞδϡʔϧ wઃఆҎԼͷΑ͏ʹγϯϓϧ
ੑೳධՁ w"QBDIFIUUQEʹରͯ͠ఏҊΞʔΩςΫνϟΛ࣮ wඵؒͷϦΫΤετΛมԽͤ͞ϨεϙϯεΛܭଌ wQIQJOGP Λग़ྗ͢Δ͚ͩͷ؆୯ͳϓϩάϥϜΛ༰қ w%40ͷैདྷͷΞΫηε੍ޚɾ$(*ͷैདྷͷΞΫηε੍ޚɾ %40$(*ͷఏҊ͢ΔΞΫηε੍ޚͰൺֱ
࣮ݧڥ
%40࣮ߦํࣜͷΞΫηε੍ޚੑೳൺֱ w ඵؒϦΫΤετΛ૿Ճͤ͞ͳ͕ ΒඵؒϨεϙϯεΛܭଌ w ͷैདྷͷΞΫηε੍ޚ΄ͱΜ Ͳੑೳ͕Ͱ͍ͯͳ͍ w ͷఏҊ͢ΔΞΫηε੍ޚΞΫ ηε੍ޚແ͠ͷ߹ͱൺͯ΄
ͱΜͲΦʔόʔϔουແ͠ ੨ɿΞΫηε੍ޚແ͠ ɿఏҊ͢ΔΞΫηε੍ޚ ɿैདྷͷΞΫηε੍ޚ
$(*࣮ߦํࣜͷΞΫηε੍ޚੑೳൺֱ w ඵؒϦΫΤετΛ૿Ճͤ͞ͳ͕ ΒඵؒϨεϙϯεΛܭଌ w $(*ͷΞΫηε੍ޚͷ༗ແʹؔΘ Βͣ$(*ͷ࣮ߦํࣜͷΦʔόʔ ϔου͕େ͖͍ͨΊɺΞΫηε੍ ޚʹΑΔΦʔόʔϔουແ͍ ੨ɿΞΫηε੍ޚແ͠
ɿैདྷͷΞΫηε੍ޚ ɿఏҊ͢ΔΞΫηε੍ޚ
ষ·ͱΊ wߴूੵϚϧνςφϯτํࣜʹ͓͚ΔੑೳΛߟྀͨ͠Ξ Ϋηε੍ޚΞʔΩςΫνϟͷఏҊ w࣮ߦํࣜͷࠩΛٵऩͨ͠ΞΫηε੍ޚ w%40࣮ߦํࣜͷΞΫηε੍ޚͱͯ͠େ෯ʹੑೳվળ
ୈষ εΫϦϓτݴޠͰߴ͔ͭলϝϞϦʹ ֦ுՄೳͳWebαʔόͷ ػೳ֦ுࢧԉΞʔΩςΫνϟ
ষͷ՝ͷ·ͱΊ w8FCαʔόͷػೳ֦ுʹ͓͍ͯੑೳΛߟྀͨ͠߹ $ݴޠʹΑΔ࣮͕ఆ൪ wैདྷͷ8FCαʔόͷεΫϦϓτݴޠʹΑΔ֦ுੑ ೳ໘ͱ҆શੑʹ՝ wαʔόϓϩηεͷΠϯλϓϦλΈࠐΈͷΞʔΩς ΫνϟͷఏҊ͕ॏཁ
ैདྷͷεΫϦϓτʹΑΔػೳ֦ுํࣜʢ̍ʣ wΠϯλϓϦλڞ༗ํࣜʢNPE@QFSMɺNPE@SVCZʣ αʔόϓϩηεىಈ࣌ʹ୯ҰͷΠϯλϓϦλ֬อ ϦΫΤετॲཧ࣌ʹෳͷεΫϦϓτͰΠϯλϓϦλڞ༗ άϩʔόϧͷঢ়ଶڞ༗ ߴػೳ͔ͭنͷେ͖͍ΠϯλϓϦλʹ࠷ద
ैདྷͷεΫϦϓτʹΑΔػೳ֦ுํࣜʢ̎ʣ wෳΠϯλϓϦλํࣜʢNPE@MVBʣ εΫϦϓτ࣮ߦʢϦΫΤετॲཧʣ୯ҐͰΠϯλϓϦλ֬อ άϩʔόϧͳঢ়ଶಠཱͰ҆શ ΠϯλϓϦλ͕֬อ͢Δঢ়ଶ։์ͯ͠লϝϞϦ ػೳͰߴɾলϝϞϦͳΈࠐΈεΫϦϓτݴޠͳͲʹ࠷ద
ैདྷͷػೳ֦ு NPE@QFSM NPE@SVCZ NPE@MVB ݴޠ $ 1FSM 3VCZ -VB ΠϯλϓϦλॳظԽ
ॲཧ ࣄલ ϥΠϒϥϦಡΈࠐΈ ࣄલ ίϯύΠϧ ࣄલ ίʔυͷมߋ ෆՄ Մ Մ άϩʔόϧঢ়ଶ ڞ༗ ڞ༗ ඇڞ༗
ैདྷख๏ͷ՝ wΠϯλϓϦλڞ༗ํࣜͷ՝ άϩʔόϧঢ়ଶ͕ෳεΫϦϓτͰׯব ࣮ߦ࣌ͷόΠτίʔυ૿ՃʹΑΔϝϞϦͷ૿Ճ wෳΠϯλϓϦλํࣜͷ՝ ΠϯλϓϦλ֬อɾ։์ͷίετ͕ߴ͍
VM • • •
ఏҊ͢ΔΞʔΩςΫνϟ wੑೳ͕ཁٻ͞ΕΔՕॴΠϯλϓϦλڞ༗ wੑೳ͕ཁٻ͞Εͳ͍ՕॴݸผʹΠϯλϓϦλ֬อ wϝϞϦ૿ՃͷݪҼͰ͋ΔόΠτίʔυͷΈΛ։์ w҆શੑͷ໘Ͱάϩʔόϧͷঢ়ଶͷΈΛ։์Մೳ wόΠτίʔυΩϟογϡʹΑΔߴԽՄೳ
αʔόϓϩηε ࢠαʔόϓϩηε" ϦΫΤετॲཧ༻ΠϯλϓϦλ ىಈ࣌ॲཧ༻ΠϯλϓϦλ ϦΫΤετҎ֎ͷॲཧ༻ΠϯλϓϦλ εΫϦϓτ εΫϦϓτ εΫϦϓτ εΫϦϓτ εΫϦϓτ
ੑೳ͕ཁٻ͞ΕΔϑοΫ ΠϯλϓϦλΛڞ༗ ɾ ɾ ɾ
w αʔόϓϩηεىಈ࣌ʹΠϯλϓ ϦλΛ֬อ w ϦΫΤετॲཧ࣌ʹΠϯλϓϦλ Λڞ༗ͯ͠εΫϦϓτΛίϯύΠϧ ͔ͯ͠Β࣮ߦ ߏจղੳ όΠτίʔυੜ 7.্Ͱ࣮ߦ
ϦΫΤετຖʹαʔόϓϩηε͕εΫϦϓτΛϑοΫ εΫϦϓτಡΈࠐΈ ΠϯλϓϦλͱ ϥΠϒϥϦΛڞ༗ όΠτίʔυɺάϩʔόϧมɾΫϥεɺྫ֎ϑϥάΛ։์ ഉଞॲཧ ϚϧνεϨου8FC αʔόΞʔΩςΫνϟ ʹରԠ
ߏจղੳ όΠτίʔυੜ 7.্Ͱ࣮ߦ ϦΫΤετຖʹαʔόϓϩηε͕εΫϦϓτΛϑοΫ εΫϦϓτಡΈࠐΈ ΠϯλϓϦλͱ ϥΠϒϥϦΛڞ༗ άϩʔόϧมɾΫϥεɺྫ֎ϑϥάΛ։์ όΠτίʔυ ςʔϒϧ
w όΠτίʔυΩϟογϡʹΑͬͯαʔ όϓϩηεىಈ࣌ͷίʔυมߋ͕ඞ ཁͳ͍߹ߴԽ w αʔόىಈ࣌ʹίϯύΠϧͯ͠όΠ τίʔυςʔϒϧʹอଘ͓͖ͯ͠ɺ ϦΫΤετ࣌ʹऔಘ࣮ͯ͠ߦ
ΞʔΩςΫνϟͷ࣮ w"QBDIFϞδϡʔϧͷNPE@NSVCZͱ࣮ͯ͠ wOHJOYϞδϡʔϧͷOHY@NSVCZͱ࣮ͯ͠ wNSVCZͱ͍͏ܰྔ3VCZΠϯλϓϦλΛར༻ w3VCZͰ8FCαʔόͷৼΔ͍Λ֦ுՄೳ wదࡐదॴͱͯ͠ैདྷͷ$ݴޠͷ࣮ͱڞଘՄೳ
NPE@NSVCZͷػೳ֦ுͷ֓ཁਤ
NPE@NSVCZઃఆྫ # Normal hook <Location /mruby-test> mrubyHandlerMiddle /path/to/test.rb </Location> #
ByteCode Caching at Start up <Location /mruby-test-cache> mrubyHandlerMiddle /path/to/test.rb cache </Location>
NPE@NSVCZͰͷ3FWFSTF1SPYZ # mrubyTranslateNameFirst “/path/to/proxy.rb” backends = [ "http://192.168.0.101:8888/", "http://192.168.0.102:8888/", "http://192.168.0.103:8888/",
] r = Apache::Request.new backend = backends[rand(backends.length)] r.reverse_proxy backend + r.unparsed_uri
NPE@NSVCZͷ#BTJD"VUIXJUI3FEJT # <Location /basic/> # AuthType basic # AuthName "Message
for clients" # AuthBasicProvider mruby # mrubyAuthnCheckPassword /path/to/authn_basic.rb # require valid-user # </Location> anp = Apache::AuthnProvider.new redis = Redis.new "127.0.0.1”, 6379 if redis.get(anp.user) == anp.password Apache.return Apache::AuthnProvider::AUTH_GRANTED else Apache.return Apache::AuthnProvider::AUTH_DENIED end
ҟͳΔ8FCαʔόͷ౷Ұత֦ுهड़ "QBDIF "1* 3VCZTDSJQU NPE@NSVCZ 3VCZTDSJQU ɾ ɾ ɾ ɾ
3VCZTDSJQUO /HJOY "1* OHY@NSVCZ 3VCZTDSJQU "QBDIF $PSF /HJOY $PSF 3VCZ %4- GPS8FC "QBDIF 5SB⒏D 4FSWFS "1* UT@NSVCZ "QBDIF 5SB⒏D 4FSWFS $PSF SFGIUUQTHJUIVCDPNTZVDSFBNUT@NSVCZ
౷Ұతهड़ྫ # Output Hello World Server = get_server_calss Server.rputs "Hello
#{Server.module_name}/ #{Server.module_version} world!" # mod_mruby => "Hello mod_mruby/1.9.3 world!" # ngx_mruby => "Hello ngx_mruby/1.3.2 world!" # ts_mruby => "Hello ts_mruby/0.0.1 world!"
࣮ݧ wϝϞϦ༻ྔͷධՁ wੑೳධՁ )FMMP8PSMEग़ྗͷ୯७ͳϓϩάϥϜ ैདྷɾఏҊख๏Ͱ࣮ߦ͠ඵؒͷϨεϙϯεΛܭଌ ಉ࣌ଓɾ૯ଓສ
࣮ݧڥ
ϦΫΤετ૿ՃʹΑΔϝϞϦ૿Ճྔ
ैདྷख๏ͱͷੑೳൺֱ ैདྷͷػೳ֦ ு NPE@QFSM NPE@SVCZ NPE@MVB NPE@NSVCZ NPE@NSVCZ Ωϟογϡ ݴޠ
$ 1FSM 3VCZ -VB NSVCZ NSVCZ ΠϯλϓϦλ ॳظԽॲཧ ࣄલ ࣄલ ࣄલ ϥΠϒϥϦ ಡΈࠐΈ ࣄલ ࣄલ ࣄલ ίϯύΠϧ ࣄલ ࣄલ ίʔυͷมߋ ෆՄ Մ Մ Մ ෆՄ άϩʔόϧঢ়ଶ ڞ༗ ڞ༗ ඇڞ༗ ඇڞ༗ ඇڞ༗ ੑೳ 3FTQPOTFTFD
ষͷ·ͱΊ wεΫϦϓτݴޠͰߴ͔ͭ҆શʹಈ࡞͢Δ8FCαʔό ػೳ֦ுࢧԉΞʔΩςΫνϟΛఏҊ wैདྷݚڀΑΓߴͰ8FCαʔό׆༻έʔεͰ$ݴ ޠͰͷ࣮ʹḮ৭ͳ͍ΞʔΩςΫνϟΛ࣮ݱ w͘ΘΕ͍ͯΔ8FCαʔόιϑτΣΞͷϞδϡʔ ϧͱ࣮ͯ͠͠ΦʔϓϯιʔειϑτΣΞͱͯ͠ެ։
ষͷࠓޙͷ՝ wάϩʔόϧมྖҬͷࣗಈ։์ػೳ wݱࡏखಈ։์Ͱ͋Δ͕ಛఆͷάϩʔόϧมҎ֎ ࣗಈͰ։์Ͱ͖ΔॲཧʢઃఆͰΓସ͑ՄೳʣΛ Ճ༧ఆ
ୈষ ϦΫΤετ୯ҐͰίϯϐϡʔλϦιʔεΛ ͢ΔWebαʔόͷ Ϧιʔε੍ޚΞʔΩςΫνϟ
ষͷ՝ͷ·ͱΊ wϚϧνςφϯτʹ͓͍ͯཧऀ͕ίϯςϯπΛཧͰ ͖ͳ͍ঢ়گͰϦιʔε༻ྔΛॊೈʹ੍ޚͰ͖ͳ͍ wಉ࣌ଓͰҰͭͷϦΫΤετͰେྔʹϦιʔε Λ༻͢ΔίϯςϯπΛߟྀͰ͖͍ͯͳ͍ wಉҰͷαʔϏεར༻ྉΛ͍ͬͯΔ͕շదʹ͑ΔϢʔ βͱ͑ͳ͍Ϣʔβͷ͕ࠩେ͖͍
࣮ݱ͍ͨ͠Ϧιʔε੍ޚʢ̍ʣ 8FCαʔό 8FCαʔό Ϛϧνςφϯτํࣜͷαʔόશମͷ$16Ϧιʔε͕ṧഭͨ͠ঢ়ଶʹ͓͍ͯɺ ༻Ͱ͖Δ$16Ϧιʔεʹ੍ݶ͞ΕΔ͕ɺར༻Ͱ͖ΔΫϥΠΞϯτഒ ΞΫηεෆՄ ΞΫηεՄʂ ΞΫηεՄ ͭͷ$16ˋ༻͢Δ
ϓϩάϥϜΛॲཧ ͭͷ$16ˋ༻͢Δ ϓϩάϥϜΛॲཧ ఏҊख๏ ैདྷख๏
࣮ݱ͍ͨ͠Ϧιʔε੍ޚʢ̎ʣ wϦΫΤετʹؚ·ΕΔ༷ʑͳଐੑΛݩʹ੍ޚ͍ͨ͠ ߴूੵϚϧνςφϯτํࣜͰϦΫΤετͷଐੑͰ ςφϯτΛ۠ผ͠ϓϩηεΛڞ༗͢ΔͨΊ ϦΫΤετ୯ҐͰͷϦιʔε͕ඞཁ wෳࡶͳઃఆΛϓϩάϥϚϒϧʹهड़Մೳʹ͍ͨ͠
ఏҊ͢ΔϦιʔε੍ޚΞʔΩςΫνϟ w04ͷϓϩηεϦιʔεٕज़Λ8FCαʔόͷϦΫ Τετ୯ҐͰ׆༻੍͠ޚ wষͷػೳ֦ுࢧԉػߏNPE@NSVCZΛԠ༻ ϓϩάϥϚϒϧͰΦʔόʔϔουগͳ͍ࢧԉػߏͰ ϦΫΤετ୯ҐʹϦιʔεΛ੍ޚՄೳ
-JOVYಠࣗͷϦιʔε੍ޚDHSPVQ wϓϩηε୯ҐͰ$16ɾϝϞϦɾ*0Λ੍ޚ -JOVY,FSOFMҎ߱ͷػೳ ಛఆͷϓϩηείΞ$16·ͰׂͳͲ $16ΛׂΓͯͨϦιʔεάϧʔϓΛ࡞ άϧʔϓʹࢀՃ͍ͯ͠ΔϓϩηεͰϦιʔε
ϦΫΤετ୯ҐͰͷϦιʔε੍ޚ 8FCαʔό ϓϩηε ΫϥΠΞϯτ ϦΫΤετ Ϩεϙϯε ϨεϙϯεੜͷॲཧͷؒͷΈ ϓϩηεΛಛఆͷDHSPVQʹΞλον ʢ$16ͳͲʣ DHSPVQΞλον
DHSPVQσλον
"QBDIFͱNPE@NSVCZʹΑΔ࣮֓ཁ
Ϧιʔε੍ޚͷઃఆྫ r = Apache::Request.new if r.filename == “/path/to/cpu.cgi” cpu =
Cgroup::CPU.new “cpu_group” # CPU 10 cpu.cfs_quota_us = 10000 cpu.create cpu.attach end ݫີʹNTதNTͷ$16༻࣌ؒΛ RVPUBͱͯ͠εέδϡʔϧ͢Δઃఆ
Ϧιʔε੍ޚͷઃఆྫ r = Apache::Request.new if r.hostname == “example.com” cpu =
Cgroup::CPU.new “cpu_group” # CPU 10 cpu.cfs_quota_us = 10000 cpu.create cpu.attach end
Ϧιʔε੍ޚͷઃఆྫ r = Apache::Request.new if r.method== “POST” cpu = Cgroup::CPU.new
“cpu_group” # CPU 10 cpu.cfs_quota_us = 10000 cpu.create cpu.attach end
Ϧιʔε੍ޚͷઃఆྫ r = Apache::Request.new if r.finfo.user == 500 cpu =
Cgroup::CPU.new “cpu_group” # CPU 10 cpu.cfs_quota_us = 10000 cpu.create cpu.attach end
Ϧιʔε੍ޚͷઃఆྫ r = Apache::Request.new if r.finfo.size > 3000 cpu =
Cgroup::CPU.new “cpu_group” # CPU 10 cpu.cfs_quota_us = 10000 cpu.create cpu.attach end
ਫ਼ͱΦʔόʔϔουͷධՁ wϦιʔε੍ޚಋೖʹΑΔΦʔόʔϔουධՁ wϦιʔε੍ޚͷਫ਼ධՁ
࣮ݧڥ
ΦʔόʔϔουͷධՁ w)FMMP8PSME͢Δ͚ͩͷ)5.-ϑΝΠϧ wϦιʔε੍ޚಋೖ੍͠ݶΛ͠ͳ͍߹ͷΦʔόʔϔου wಉ࣌ଓɾ૯ଓສϦΫΤετ ະಋೖ࣌ɿSFTQPOTFTFD ɹಋೖ࣌ɿSFTQPOTFTFD
Ϧιʔε੍ޚͷਫ਼ධՁ w$16༻͢Δ$(*ϦΫΤετ w$16ʹϦιʔε੍ޚ w$(*ͷ$16༻࣌ؒΛมߋͯ͠ਫ਼Λൺֱ wੑೳ੍ޚΛఆٛɿ wϨεϙϯε࣌ؒʢ੍ޚ࣌ʣ$16༻࣌ؒʢ੍ޚແ࣌͠ʣ wੑೳ੍ޚ͕ʹ͚ۙΕਖ਼੍͘͠ޚ͞Ε͍ͯΔ
ষͷ·ͱΊ wϦΫΤετ୯ҐͰίϯϐϡʔλϦιʔεΛ wϚϧνςφϯτํࣜͷΑ͏ʹϦΫΤετͰςφϯτΛಛ ఆ͠ॲཧ͢Δϓϩηεڞ༗͢ΔΞʔΩςΫνϟʹ༗༻ wߴूੵϚϧνςφϯτํࣜʹ͓͍ͯैདྷݚڀΑΓฏ ʹϦιʔεΛ͢Δࣄ͕Մೳ
ୈষ ·ͱΊ
·ͱΊ w8FCαʔόͷߴूੵϚϧνςφϯτํࣜʹؔ͢Δݚڀ ηΩϡϦςΟͱӡ༻໘Λཱ྆ͨ͠ΞΫηε੍ޚͷݚڀ ੑೳͱηΩϡϦςΟΛཱ྆ͨ͠ΞΫηε੍ޚͷݚڀ 8FCαʔόػೳ֦ுࢧԉػߏͷݚڀ 8FCαʔόͷϦιʔε੍ޚͷݚڀ
ߩݙ w8FCαʔόͷߴूੵϚϧνςφϯτํࣜʹ͓͚Δϓϩηεڞ ༗ͷ՝Λମܥతʹཧ͠ΞʔΩςΫνϟΛఏҊͯ͠ղܾ ηΩϡϦςΟɾੑೳɾϦιʔε੍ޚɾӡ༻ٕज़ wಛʹ8FCϗεςΟϯάαʔϏεΛରʹΞʔΩςΫνϟͷ࣮ Λߦ͍αʔϏεөɾվળ -JOVYΛ׆༻֤ͨ͠छ8FCαʔϏεͷߴԽʹد༩
044ͱͯ͠ެ։ wୈষNPE@QSPDFTT@TFDVSJUZ wୈষNPE@NSVCZOHY@NSVCZͱ֤छNSVCZϞδϡʔϧ wୈষNSVCZDHSPVQ wੈքத͔Β֤छࣄྫΛ࿈བྷ͍͓ͯΓ·͢
ຊจʹؚ·ΕΔൃදจݙ จࢽจ 1 দຊ྄հ, Ԭ෦ णஉ, mod_mruby: εΫϦϓτݴޠͰߴ͔ͭলϝϞϦʹ֦ுՄೳͳWebαʔ όͷػೳ֦ுࢧԉػߏ, ใॲཧֶձจࢽɼVol.55,
No.11, pp.2451-2460, Nov 2014. 2 দຊ྄հ, Ԭ෦णஉ,εϨου୯ҐͰݖݶΛߦ͏WebαʔόͷΞΫηε੍ޚΞʔΩςΫνϟ, ిࢠใ௨৴ֶձจࢽ Vol.J96-B, No.10, pp.1122-1130, Oct 2013. 3 দຊ྄հ, ݪক࢘, দԬً, େنڞ༗ܕWebόʔνϟϧϗεςΟϯάج൫ͷηΩϡϦςΟ ͱӡ༻ٕज़ͷվળ, ใॲཧֶձจࢽ, Vol.54, No.3, pp.1077-1086, Mar. 2013.
ຊจʹؚ·ΕΔൃදจݙ ࠃࡍձٞൃදʢࠪಡ͖ʣ 1 Ryosuke Matsumoto, Yasuo Okabe, Access Control Architecture
Separating Privilege by a Thread on a Web Server, The 12th IEEE/IPSJ International Symposium on Applications and the Internet (SAINT2012), pp.178-183, July 2012.
ຊจʹؚ·ΕΔൃදจݙ ޱ಄ൃද 1 দຊ྄հɾԬ෦णஉ, ϦΫΤετ୯ҐͰԾతʹίϯϐϡʔλϦιʔεΛ͢ΔWebαʔό ͷϦιʔε੍ޚΞʔΩςΫνϟ, ใॲཧֶձݚڀใࠂ Vol.2013-IOT-23, No.4, 20139݄.