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
440
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
ホモグラフドメインを検出してみた/detect homograph domain
takumakume
0
230
ソフトウェアの継続的アップデートをコンテナ化によって加速させる/Accelerate continuous software updates with containerization
takumakume
0
4k
KubernetesにおけるSBOMを利用した脆弱性管理/Vulnerability_Management_with_SBOM_in_Kubernetes
takumakume
0
1.2k
ホスティング事業におけるSREの取り組みとSREの面白さ/SRE Efforts in the Hosting Business and the Interest of SRE
takumakume
1
1.3k
GitOpsで実現するPull Request毎のプレビュー環境/Preview environment for each Pull Request by GitOps
takumakume
0
1.1k
Goでkubernetes operatorを実装してアプリのプレビュー環境を作る/go-kubernetes-operator
takumakume
0
130
クラウドネイティブな開発環境への移行/Move to the cloud native development environment
takumakume
1
500
200万ドメインを超えるレンタルサーバのコンテンツキャッシュ機能の裏側/2_million_more_than_the_domain_the_back_of_the_rental_server_content_cache
takumakume
10
2.6k
DDoS攻撃との終わりなき戦い/endless_battle_with_ddos_attack
takumakume
5
12k
Other Decks in Technology
See All in Technology
オーナーシップを持つ領域を明確にする
konifar
13
3.1k
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2k
ユーザーストーリーのレビューを自動化したみたの
bun913
1
410
マルチアカウント環境への発見的統制の導入
ch1aki
1
1.3k
ServiceNow Knowledge 24の歩き方 EYストラテジー・アンド・コンサルティング
manarobot
0
190
ここが嬉しいABAC ここが辛いよABAC #再解説+補足編
masahirokawahara
1
270
反実仮想機械学習とは何か
usaito
PRO
11
3.8k
Oracle Cloud Infrastructure:2024年4月度サービス・アップデート
oracle4engineer
PRO
1
190
VS CodeでAWSを操作しよう
smt7174
7
1.6k
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
160
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.3k
コンテナセキュリティの基本と脅威への対策
kyohmizu
3
750
Featured
See All Featured
Unsuck your backbone
ammeep
663
57k
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
Into the Great Unknown - MozCon
thekraken
10
990
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
Ruby is Unlike a Banana
tanoku
96
10k
Happy Clients
brianwarren
92
6.4k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
Faster Mobile Websites
deanohume
299
30k
Producing Creativity
orderedlist
PRO
337
39k
The Cost Of JavaScript in 2023
addyosmani
16
3.8k
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Λ༻͍ͨɻ