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
TakumaKume_kixs_vol002
Search
Takuma Kume
December 02, 2016
Technology
0
520
TakumaKume_kixs_vol002
九州インフラ交流勉強会(Kixs) Vol.002
https://kixs.connpass.com/
ホスティングにおける柔軟かつ軽量なアクセス制御の必要性とその実装
@takumakume
Takuma Kume
December 02, 2016
Tweet
Share
More Decks by Takuma Kume
See All by Takuma Kume
SRE/インフラエンジニアの市場価値とキャリアパス/Market value and career path for SRE-infrastructure engineers
takumakume
2
1k
【新卒研修】共通言語としてのSRE/SRE as a common language
takumakume
0
180
DDoSとの終わりなき戦い2025/endless_battle_with_ddos_attack_2025
takumakume
3
120
事業部CTOの現在地(パネルディスカッション)/Current-location-of-Division-CTO
takumakume
0
140
ロリポップ! for Gamersを支えるインフラ/lolipop for gamers infrastructure
takumakume
0
990
ロリポップ! for Gamersの立ち上げ/lolipop for gamers launch
takumakume
0
2.6k
ホモグラフドメインを検出してみた/detect homograph domain
takumakume
0
630
ソフトウェアの継続的アップデートをコンテナ化によって加速させる/Accelerate continuous software updates with containerization
takumakume
0
5.3k
KubernetesにおけるSBOMを利用した脆弱性管理/Vulnerability_Management_with_SBOM_in_Kubernetes
takumakume
2
2.7k
Other Decks in Technology
See All in Technology
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
380
Kubernetes self-healing of your workload
hwchiu
0
580
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
300
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
870
20251029_Cursor Meetup Tokyo #02_MK_「あなたのAI、私のシェル」 - プロンプトインジェクションによるエージェントのハイジャック
mk0721
PRO
5
1.5k
OPENLOGI Company Profile for engineer
hr01
1
45k
GraphRAG グラフDBを使ったLLM生成(自作漫画DBを用いた具体例を用いて)
seaturt1e
1
150
もう外には出ない。より快適なフルリモート環境を目指して
mottyzzz
13
11k
Behind Postgres 18: The People, the Code, & the Invisible Work | Claire Giordano | PGConfEU 2025
clairegiordano
0
150
IoTLT@ストラタシスジャパン_20251021
norioikedo
0
140
Okta Identity Governanceで実現する最小権限の原則
demaecan
0
150
20251027_findyさん_音声エージェントLT
almondo_event
2
480
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Context Engineering - Making Every Token Count
addyosmani
8
310
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
640
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Scaling GitHub
holman
463
140k
Building Applications with DynamoDB
mza
96
6.7k
Docker and Python
trallard
46
3.6k
Transcript
ٱถഅ(.01FQBCP *OD भΠϯϑϥަྲྀษڧձ,*94WPM!(.0ϖύϘԬࢧࣾ ϗεςΟϯάʹ͓͚Δॊೈ͔ͭܰྔͳΞΫηε੍ޚͷ ඞཁੑͱͦͷ࣮
ࣗݾհ ٱถ അ (@takumakume) ߴߍଔۀʙ6ؒ ΠϯλʔωοταʔϏεϓϩόΠμͰۈ ωοτϫʔΫʙϛυϧΣΞͷߏங ϓϦηʔϧεΤϯδχΞ 20164݄͔ΒϖύϘʹೖࣾ ϩϦϙοϓʂͷΠϯϑϥΤϯδχΞ
࣍ ϗεςΟϯάʹ͓͚Δॊೈ͔ͭܰྔͳΞΫηε੍ޚͱ mrubyΛ༻͍ͨ࣍ੈΞΫηε੍ޚͷ࣮ ·ͱΊ
ϗεςΟϯάʹ͓͚Δॊೈ͔ͭܰྔͳΞΫηε੍ޚ ͱ
ॊೈ͔ͭܰྔͳΞΫηε੍ޚ
ϗεςΟϯάʹ͓͚ΔΞΫηε੍ޚ ϗεςΟϯάͦͷಛੑ্ɺ͓٬༷ͷ༷ʑͳίϯςϯπΛ͓ ༬͔Γ͍ͯ͠Δɻ தʹҟৗʹߴෛՙʹͳΔͷɺDDoSͷରʹͳΔίϯς ϯπͳͲ༷ʑͰ͋Δɻ ͔͠͠ɺ͜ͷΑ͏ͳҰ෦ͷίϯςϯπʹΑΓɺͦͷαʔόΛ ͝ར༻͍͍ͯΔେଟͷଞͷ͓٬༷͕շదʹ8&#Λར༻Ͱ͖ͳ͘ ͳͬͯ͠·͏͜ͱɺ͋ͬͯͳΒͳ͍ͱզʑߟ͍͑ͯ·͢ɻ
ຊηογϣϯͰͦͷղܾखஈͷ̍ͭͱͯ͠ɺ ϩϦϙοϓʂͰߦ͍ͬͯΔ ଟ͘ͷ͓٬༷ʹ8&#Λշదʹ͝ར༻͍ͨͩͨ͘Ίͷ ࣍ੈΞΫηε੍ޚʹ͍ͭͯ͝հ͠·͢ɻ
ॊೈ͔ͭܰྔͳΞΫηε੍ޚ
ݱঢ়ͷΞΫηε੍ޚͷ՝
͜Ε·Ͱʹར༻ͨ͠ΞΫηε੍ޚखஈ mod_cbandΛར༻ͨ͠ΞΧϯτ୯ҐͰͷτϥϑΟοΫ ੍ޚͱಉ࣌ΞΫηε੍ޚ mod_vhost_maxclientsΛར༻ͨ͠υϝΠϯ୯ҐͰͷ ಉ࣌ΞΫηε੍ޚ ͦΕͧΕ՝͕͋ͬͨ
NPE@DCBOEΛར༻੍ͨ͠ޚʹΑΔ՝ ΞΧϯτ୯ҐͷτϥϑΟοΫͱಉ࣌ΞΫηε੍ݶΛ͍ͯͨ͠ɻ CBandSpeed 10Mb/s 30 30 mod_cbandΛ༗ޮʹ͢Δ͜ͱͰ70%ఔͷύϑΥʔϚϯε ྼԽ͕ੜ͡ɺ੍ޚػߏࣗମ͕ϘτϧωοΫͱͳͬͨɻ
NPE@WIPTU@NBYDMJFOUTΛར༻੍ͨ͠ޚ mod_cbandͷύϑΥʔϚϯεྼԽ͕େ͖͍ͨΊͪ͜ΒΛ࠾༻ɻ ಋೖʹΑΔύϑΥʔϚϯεྼԽ2%ͱߴͳιϑτΣΞɻ ҎԼͷΑ͏ʹυϝΠϯ୯Ґͷಉ࣌ΞΫηε੍ݶΛߦ͏ɻ <VirtualHost *> DocumentRoot /path/to/web ServerName
hoge.example.jp VhostMaxClients 30 </VirtualHost> ͔͠͠ɺ࣍ͷΑ͏ͳύλʔϯͰ՝͕ੜͨ͡ɻ
NPE@WIPTU@NBYDMJFOUTΛͲ͏͍ͬͯΔ͔ ڞ༻8&#αʔό IPHFDPN mod_vhost_maxclientsͷ੍ݶ ZDPN YDPN ஶ͘͠Ϧιʔε༻ྔ͕ภΒͳ͍Α͏ʹେͷϦιʔεׂͱ ͯ͠ɺ֤υϝΠϯʹಉ࣌ଓͷ੍ݶΛ͔͚͍ͯ·͢ɻ
ڞ༻8&#αʔό IPHFDPN ॲཧͷॏ͍ϓϩάϥϜʹΞΫηε͕ूத͠αʔό͕ߴෛՙͱͳͬͨ mod_vhost_maxclientsͷ੍ݶ ZDPN YDPN
ڞ༻8&#αʔό IPHFDPN mod_vhost_maxclientsͷ੍ݶ ZDPN YDPN NPE@WIPTU@NBYDMJFOUTͷ੍ݶΛڧΊΔඞཁ͕͋Δ
ڞ༻8&#αʔό IPHFDPN ZDPN YDPN ੍ݶΛڧΊͨ ܰྔͳίϯςϯπʹΞΫηεͰ͖ͳ͘ͳΔ
ڞ༻8&#αʔό IPHFDPN ZDPN YDPN ຊདྷ੍ޚ͞ΕΔඞཁ͕ͳ͍ϑΝΠϧ·Ͱ ΞΫηεͰ͖ͳ͘ͳͬͯ͠·͏ɻ
ղܾํ๏ ڞ༻8&#αʔό IPHFDPN ZDPN YDPN ϑΝΠϧ୯ҐͰ੍ޚ mod_vhost_maxclients
ղܾํ๏ ڞ༻8&#αʔό IPHFDPN ZDPN YDPN ϑΝΠϧ୯ҐͰ੍ޚ mod_vhost_maxclients αʔόͷෛՙΛԼ͛ͭͭɺ੍ޚʹΑΔӨڹΛۃখԽͰ͖Δɻ
࣌ ࣌ ࣌ ࣌ ࣌ ࣌
࣌ ࣌ ࣌ ͋ΔαʔόͷϦιʔεফඅྔ <>
࣌ ࣌ ࣌ ࣌ ࣌ ࣌
࣌ ࣌ ࣌ શମ ͋ΔαʔόͷϦιʔεফඅྔ <> ಛఆͷϑΝΠϧ ಛఆͷ࣌ؒʹେྔʹΞΫηε͕͋Δ
࣌ ࣌ ࣌ ࣌ ࣌ ࣌
࣌ ࣌ ࣌ શମ ͋ΔαʔόͷϦιʔεফඅྔ <> ಛఆͷϑΝΠϧ ಛఆͷϑΝΠϧͷॲཧͰϦιʔεͷ΄ͱΜͲΛফඅ͠ ఆظతʹଞͷ͓٬༷ͷαʔϏεఏڙʹࢧোΛ͖͍ͨͯͨ͠ɻ
࣌ ࣌ ࣌ ࣌ ࣌ ࣌
࣌ ࣌ ࣌ શମ ಛఆͷϑΝΠϧ ղܾํ๏ <> ෛՙͷߴ͍ϑΝΠϧʹରͯ͠ ࣌ؒࢦఆͰ੍ޚ͢Δ
ॊೈͳΞΫηε੍ޚͷ·ͱΊ ݱঢ়ΑΓࡉ͔͍ɺϑΝΠϧ୯ҐͰΞΫηε੍ޚͰ͖ΔΑ͏ ʹͯ͠ɺ੍ޚʹΑΔӨڹΛۃখԽ͢Δ͜ͱɻ ಛఆͷ࣌ؒͷΈΞΫηε੍ޚΛ༗ޮԽͰ͖Δ͜ͱɻ
ॊೈ͔ͭܰྔͳΞΫηε੍ޚ
ϗεςΟϯάͰ1ͷαʔόΛଟ͘ͷ͓٬༷ʹ͝ར༻͍ͨͩ͘͜ ͱͰ҆Ձʹఏڙ͍ͯ͠Δɻ ࠓޙͰ͖Δ͚ͩ҆ՁʹշదͳαʔϏεΛఏڙ͍ͨ͠ɻ ΞΫηε੍ޚͷػߏ͕ϘτϧωοΫʹͳͬͯɺͦΕΛୡͰ͖ ͳ͘ͳΔɻ ܰྔͳΞΫηε੍ޚͷඞཁੑ
ॊೈ͔ͭܰྔͳΞΫηε੍ޚ ͱ
ϑΝΠϧ୯ҐͰΞΫηε੍ޚͰ͖Δ͜ͱɻ ಛఆͷ࣌ؒଳͷΈΞΫηε੍ޚΛ༗ޮԽͰ͖Δ͜ͱɻ ύϑΥʔϚϯεྼԽΛۃྗى͜͞ͳ͍͜ͱɻ ॊೈ͔ͭܰྔͳΞΫηε੍ޚͱ ͲͷΑ͏ʹ࣮ݱ͢Δ͔ʁ
ϑΝΠϧ୯ҐͷΞΫηε੍ޚ طʹ"QBDIFͷϞδϡʔϧ͕ଘࡏ͢Δɻ
NPE@WMJNJU mod_vlimit https://github.com/matsumoto-r/mod_vlimit ϑΝΠϧσΟϨΫτϦ୯ҐͰಉ࣌ΞΫηε੍ޚΛ͢Δ͜ͱ͕Ͱ͖Δɻ <Files "hoge.php"> VlimitIP 30 /path/to/hoge.php </Files>
ϑΝΠϧ୯ҐͰͷΞΫηε੍ޚΛߦ͏ػೳ͋Δ͕ ࠓճಋೖʹࢸΒͳ͔ͬͨɻ
NPE@WMJNJUΛ࠾༻͠ͳ͔ͬͨཧ༝ ࣌ؒࢦఆͰ੍ݶΛ༗ޮԽͰ͖Δػೳ͕ͳ͍ɻ ApacheͷϞδϡʔϧͳͷͰCݴޠͰ࣮͞Ε͍ͯΔɻ ӡ༻ܥͷπʔϧ࣌ؒͷܦաʹରͯ͠ॊೈͳมߋ͕ཁ ٻ͞ΕΔɻ CݴޠͰͷ։ൃͱͳΔͱ։ൃ্͕͕Δɺ։ൃऀ͕ݶ ΒΕΔɻ
ͰɺͲͷΑ͏ʹ࣮ݱ͢Δ͔ʁ
“mruby” ͳΒղܾͰ͖Δɻ
NSVCZ Rubyͷύύ͜ͱ “Matz” ͞Μ͕։ൃ͍ͯ͠Δɻ লϝϞϦͷΈࠐΈ͚ͷRuby࣮ɻ Cݴޠ͕ۤखͳͻͱͰɺmrubyΛ͑RubyͰΈࠐΈ ։ൃΛߦ͏ࣄ͕Ͱ͖Δɻ
ApacheNginxͰmrubyΛ༻͍ͨΈࠐΈ ։ൃΛ࣮ݱͨ͠ιϑτΣΞ͕ଘࡏ͢Δ
NPE@NSVCZOHY@NSVCZ ฐࣾͷ@matsumotory͕։ൃ͍ͯ͠Δɻ mod_mruby ApacheͰmrubyΛར༻͢ΔͨΊͷϞδϡʔϧ ngx_mruby nginxͰmrubyΛར༻͢ΔͨΊͷ֦ு࣮ CݴޠͰϞδϡʔϧΛ࣮͠ͳ͚Ε࣮ݱͰ͖ͳ͔ͬͨڍಈΛmruby Λ͙ͬͯ͢ʹ࣮Ͱ͖ͯɺ࠷খݶͷύϑΥʔϚϯεྼԽʹཹΊΔ͜ ͱ͕Ͱ͖ΔιϑτΣΞɻ
IUUQTHJUIVCDPNNBUTVNPUPSNPE@NSVCZ mod_mruby -1.5% ngx_mruby +17.5% ੩తίϯςϯπʹର͢ΔύϑΥʔϚϯεܭଌ݁Ռ
mrubyΛ༻͍Ε֦ுੑɺอकੑΛଛͳΘͣ ࠷খݶͷύϑΥʔϚϯεྼԽʹཹΊͯ ιϑτΣΞΛ։ൃ͢Δ͜ͱ͕Ͱ͖Δɻ
NSVCZΛ༻͍ͨ࣍ੈΞΫηε੍ޚͷ࣮
࣮ʹ͋ͨͬͯར༻ͨ͠ιϑτΣΞ
IUUQBDDFTTMJNJUFS ฐࣾͷ @matsumotory ͕։ൃ͍ͯ͠Δɻ https://github.com/matsumoto-r/http-access-limiter mod_mruby͘͠ngx_mrubyͰऔಘͨ͠ҙͷϦΫΤετύϥ ϝʔλΛ༻͍ͯಉ࣌ଓΛΧϯτ͢ΔmrubyϛυϧΣΞ औಘͰ͖ΔϦΫΤετύϥϝʔλʹΞΫηεઌͷϑΝΠϧͷϑϧ ύεΛ࢝ΊɺଓݩͷIPΞυϨεɺURLͳͲΛऔಘͰ͖ΔͨΊ ༷ʑͳ༻్Ͱ༻Ͱ͖Δɻ
ಈ࡞֓ཁ NSVCZ 8PSLFS NSVCZ 8PSLFS NSVCZ IUUQE
ڞ༗ϝϞϦ global mutex ಉ࣌ଓ Χϯλʔ KVS ಉ࣌ଓΧϯλʔ localmemcacheΛ༻͍ͨ Key-Value-Store Ωʔͱͨ͠ϦΫΤετύϥϝʔ λΛݩʹಉ࣌ΞΫηεΛΧ ϯτ͢Δɻ global mutex ֤Worker͔Βಉ࣌ଓΧ ϯλʔΛૢ࡞͢ΔͨΊෆ ߹͕ൃੜ͠ͳ͍Α͏ʹϩο ΫΛߦ͏ɻ KEY /path/to/hoge.php VALUE 1
ಈ࡞֓ཁ NSVCZ 8PSLFS NSVCZ 8PSLFS NSVCZ IUUQE
ڞ༗ϝϞϦ global mutex ಉ࣌ଓ Χϯλʔ KVS ϦΫΤετ ϦΫΤετ NVUFYΛϩοΫ MPDL ϦΫΤετύϥϝʔλΛΩʔ ʹΠϯΫϦϝϯτ ΠϯΫϦϝϯτ KEY /path/to/hoge.php VALUE 1 VOMPDL NVUFYΛΞϯϩοΫ
ಈ࡞֓ཁ NSVCZ 8PSLFS NSVCZ 8PSLFS NSVCZ IUUQE
ڞ༗ϝϞϦ global mutex ಉ࣌ଓ Χϯλʔ KVS ίϯςϯπͷॲཧΛߦ͏ NVUFYΛϩοΫ MPDL σΫϦϝϯτ σΫϦϝϯτ VOMPDL NVUFYΛΞϯϩοΫ KEY /path/to/hoge.php VALUE 0 ίϯςϯπͷॲཧ
ಈ࡞֓ཁͷ·ͱΊ ϦΫΤετ͕͋ͬͨ࣌ʹɺϦΫΤετύϥϝʔλΛmod_mruby ngx_mrubyΛ༻͍ͯऔಘ͢Δɻ ΞΫηε੍ޚΛ͍ͨ͠୯ҐΛΩʔͱͯ͠ɺಉ࣌ଓΛΧϯτ͢Δɻ ෳͷWorker͔ΒΧϯλʔૢ࡞͢ΔͨΊɺglobal mutexΛͬͯ ෆ߹͕ى͖ͳ͍Α͏ʹ੍ޚ͢Δɻ
ػೳՃΛ͢Δ http-access-limiterʹϑΝΠϧຖͷ࠷େಉ࣌ଓͷઃఆ ػೳɺ੍ޚΛ༗ޮԽ͢Δ࣌ؒଳΛઃఆ͢ΔػೳΛՃͨ͠ ͍ɻ mrubyͰॻ͔Ε͍ͯΔͨΊ؆୯ʹػೳՃ͕Ͱ͖Δʂ
ػೳՃΠϝʔδ NSVCZ 8PSLFS NSVCZ 8PSLFS NSVCZ IUUQE ڞ༗ϝϞϦ
global mutex ಉ࣌ଓ Χϯλʔ KVS ੍ޚ݅ localmemcacheΛ༻͍ͨ Key-Value-Store ϑΝΠϧͷϑϧύε͕Ωʔ ࠷େಉ࣌ଓ ੍ݶΛ༗ޮԽ͢Δ࣌ؒଳ KVS ੍ޚ݅
੍ݶ݅ͷσʔλ /path/to/hoge.php { "max_clients" : 30, # ࠷େಉ࣌ଓ "time_slots" :
[ # ༗ޮʹ͢Δ࣌ؒଳ { "begin" : 1200, "end" : 1800 }, { "begin" : 2100, "end" : 2200 } ] } KEY VALUE A AͷؒAQBUIUPIPHFQIQAͷ ࠷େଓΛAA·Ͱʹ੍ݶ͢Δɻ
ػೳՃޙͷಈ࡞֓ཁ NSVCZ 8PSLFS NSVCZ 8PSLFS NSVCZ IUUQE ڞ༗ϝϞϦ
global mutex ಉ࣌ଓ Χϯλʔ KVS KVS ੍ޚ݅ ϦΫΤετ ϦΫΤετ ੍ޚ݅ Λࢀর ੍ޚ݅Λࢀর ɹɹଘࡏ͠ͳ͚Εॲཧऴྃ NVUFYΛϩοΫ MPDL ϑΝΠϧͷϑϧύεΛΩʔʹ ΠϯΫϦϝϯτ ΠϯΫϦϝϯτ ੍͠ݶ͕༗ޮͳ࣌ؒଳͰಉ ࣌ଓ੍ݶΛա͍ͯ͠Ε ΤϥʔΛฦ͢
͍ํ IUUQEDPOG LoadModule mruby_module modules/mod_mruby.so <IfModule mod_mruby.c> # Apacheͷϓϩηε͕ىಈͨ࣌͠ʹϑοΫ͞ΕΔ #
http-access-limiterͷΫϥεΛఆٛɺ࣍ʹىಈ͢ΔWorker͕ࢀরͰ͖ΔΑ͏ʹ͢Δɻ mrubyPostConfigMiddle /etc/httpd/conf.d/access_limiter/access_limiter_init.rb cache <FilesMatch ^.*\.php$> # ΞΫηε͕ൃੜͨ͠ͱ͖ʹϑοΫ͞ΕΔ # ಉ࣌ଓΧϯλΛΠϯΫϦϝϯτ͢Δ # ͞Βʹɺ࠷େಉ࣌ଓΛաͨ͠߹ʹ503ΤϥʔΛฦ͢ͳͲͷΞΫγϣϯΛهड़͢Δɻ mrubyAccessCheckerMiddle /etc/httpd/conf.d/access_limiter/access_limiter.rb cache # ίϯςϯπͷॲཧ͕ऴΘͬͨͱ͖ʹϑοΫ͞ΕΔ # ಉ࣌ଓΧϯλΛσΫϦϝϯτ͢Δ mrubyLogTransactionMiddle /etc/httpd/conf.d/access_limiter/access_limiter_end.rb cache </FilesMatch> </IfModule>
ؾʹͳΔύϑΥʔϚϯε
ಋೖʹΑΔύϑΥʔϚϯεྼԽ 3ˋ
ύϑΥʔϚϯεςετ݁Ռ abΛͬͯύϑΥʔϚϯεΛଌఆ͠·ͨ͠ɻ ςετύλʔϯ ྼԽ httpd 0% httpd + http-access-limiter 3%
httpd + http-access-limiter (੍ݶର) 5% WordPressͷΞΫηε 10ສϦΫΤετ100ଟॏ / CPU24ίΞɾRAM32GB ςετύλʔϯ ྼԽ httpd 0% httpd + http-access-limiter 3% httpd + http-access-limiter (੍ݶର) 30% phpinfo()ͷΞΫηε ࢀߟࢿྉ
ύϑΥʔϚϯεςετ݁Ռʹର͢Δߟ access-limiterͷಋೖʹੜ͡ΔύϑΥʔϚϯεྼԽ3%ͱߴ Ͱ͋Δ͜ͱ͕͔ͬͨɻ DBΛ͏WordPressͰɺΞϓϦέʔγϣϯͷॲཧ͕Φʔό ϔουͱͳͬͯaccess-limiterΛಋೖ͢Δ͜ͱʹΑΔΦʔό ϔουޡࠩఔͱͳͬͨɻ phpinfo()ͷΑ͏ͳܰྔͳॲཧͷ߹ʹɺ੍ݶରͱͨ͠ͱ͖ ʹ3ׂఔύϑΥʔϚϯεྼԽ͕ੜͨ͡ɻ ࢀߟࢿྉ
·ͱΊ
·ͱΊ ϗεςΟϯάڞ༗αʔόͰ͋ΔͷͰɺΑΓଟ͘ͷਓ͕҆Ձ Ͱշదʹ͝ར༻͍ͨͩͨ͘ΊʹΞΫηε੍ޚඞཁɻ ΞΫηε੍ޚͷ୯ҐΛΑΓࡉ੍͔ͯ͘͠ޚʹΑΔӨڹΛۃখ Խ͠ɺదͳΞΫηε੍ޚΛ࣮ݱͨ͠ɻ ࣮ݱखஈͱͯ͠อकੑɺ֦ுੑɺੑೳͷόϥϯε͕Α͍ mrubyΛ༻͍ͨɻ