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
Rustでon-diskなB+Treeを作ったときの細かな話
Search
KOBA789
May 19, 2021
Programming
2.1k
11
Share
Rustでon-diskなB+Treeを作ったときの細かな話
Rust LT Online #3 で発表したスライドです
https://rust.connpass.com/event/209279/
KOBA789
May 19, 2021
More Decks by KOBA789
See All by KOBA789
メモリが足らない2026
koba789
4
2.4k
直接メモリアクセス
koba789
0
600
人工衛星のファームウェアをRustで書く理由
koba789
16
9.9k
令和最新版手のひらコンピュータ
koba789
14
9.4k
時の流れが許せない
koba789
0
280
ついに生産が終わったけどZ80でまだまだ遊びたい
koba789
5
4.8k
ISUCONの練習を楽しくたくさんやる方法
koba789
2
1.5k
Z80をRustで動かすまで年が越せない
koba789
0
420
ISUCON練習環境を最も簡単に用意する方法
koba789
2
3.4k
Other Decks in Programming
See All in Programming
Hive Metastoreを通して学ぶIceberg REST Catalog ― 仕様から実装まで
okumin
0
310
AIとRubyの静的型付け
ukin0k0
0
480
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
400
関係性から理解する"同一性"の型用語たち
pvcresin
2
620
Transactional Change Stream Processing With Debezium and Apache Flink
gunnarmorling
1
140
AIエージェントの隔離技術の徹底比較
kawayu
0
450
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
500
サーバーレスで作る、動画データ管理基盤
oyasumipants
0
320
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.4k
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.4k
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.3k
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
350
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
The browser strikes back
jonoalderson
0
1.1k
How to build a perfect <img>
jonoalderson
1
5.5k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
180
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
130
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
エンジニアに許された特別な時間の終わり
watany
107
240k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Transcript
KOBA789 RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ
KOBA789 ݱࡏਐߦܗͰແ৬ ‣ 3VTUྺ͘Β͍ ‣ ී௨ʹΣϒαʔόʔΛॻ͍ͨΓ ‣ %#.4Λॻ͍ͨΓ ‣ ϒϥβͰಈ͘ճ࿏$"%Λॻ͍ͨΓ
8"4.λʔήοτ ‣ ࣗ࡞ΩʔϘʔυͷ ϑΝʔϜΣΞΛॻ͍ͨΓ ͍ΘΏΔΈࠐΈ3VTU ͓͢͢Ίͷࣄʹؔ͢Δใ ͍ͭͰܴ͍ͯ͠·͢ https://gihyo.jp/magazine/wdpress/archive/2021/vol122 ʲະঝࠂʳࡶࢽʹهࣄॻ͖·ͨ͠
RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ ࠓճͷλΠτϧ ʢ࠶ܝʣ
RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ ͱʁ
RustͰ on-diskͳB+TreeΛ ࡞ͬͨͱ͖ͷ ࡉ͔ͳ ͱʁ " ༰ΛσΟεΫʹӬଓԽͰ͖ͨΓɺ ϝϞϦΑΓେ͖ͳ༰ΛσΟεΫ্Ͱѻ͑ͨΓ͢Δ
# 5SFF ˞ಠࣗͷఆٛͰ͢
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
͜͏͍͏# 5SFFΛߟ͑Δ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ͱΓ͋͑ͣ࣍ݩʹͭͿ͢
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ σΟεΫ͕͋Δͱ͢Δ
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ σΟεΫʹೖͬͨ
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ CPU # 5SFFΛૢ࡞͍ͨ͠
σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ CPU # 5SFFΛૢ࡞͍ͨ͠ σΟεΫΛಡΈॻ͖͢Δͷ͍͠ෆศ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ CPU ϝϞϦʹόοϑΝΛ༻ҙ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ϊʔυͷҰ෦ΛϝϞϦ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ಡΈॻ͖ ೖΕସ͑ όοϑΝϓʔϧϚωʔδϟ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
Ұ෦ͷϊʔυͷΈ͕ϝϞϦʹ͋Δ# 5SFFͱ͍͑Δ ന͍ϊʔυσΟεΫʹ͔͠ͳ͍
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ಡΈॻ͖ ೖΕସ͑ ͱ͜ΖͰɺ
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ಡΈॻ͖ ೖΕସ͑ ϚϧνίΞΛ׆༻͍ͨ͠Ͱ͢ΑͶʁ CPU CPU CPU
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ར༻தͷϊʔυΛόοϑΝ͔Β͍ग़ͨ͠Γ͢Δͱ͍ͨΜͳ͜ͱʹ CPU CPU CPU ΛಡΈ͍ͨɻΛ͍ग़ͦ͏ ͯίϥ ϊʔυ ར༻த
ϝϞϦ σΟεΫʢϑΝΠϧʣ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ CPU ར༻தͷϊʔυΛόοϑΝ͔Β͍ग़ͨ͠Γ͢Δͱ͍ͨΜͳ͜ͱʹ CPU CPU CPU ΛಡΈ͍ͨɻΛ͍ग़ͦ͏ ͯίϥ ϊʔυ ར༻த ͜ͷΜͷ σʔλߏɾΞϧΰϦζϜΛ 3VTUͰͲ͏͢Δ͔ POEJTLಛ༗ͷ͕͋͠͞Δ
3VTUͰPOEJTLͳ# 5SFFΛ࡞Δͱ͖ͷݒ೦ࣄ߲ w όοϑΝϓʔϧϚωʔδϟͷ σʔλߏͱΞϧΰϦζϜ w # 5SFFͷϊʔυͷσʔλߏ w
# 5SFFͷഉଞ੍ޚ
όοϑΝϓʔϧϚωʔδϟͷ σʔλߏͱΞϧΰϦζϜ
ར༻தͷϊʔυΛอޢ͢Δʹ $.6ͷߨٛͰΘΕ͍ͯΔ#VT5VC $ ͱ͍͏࣮ͷ߹ ϊʔυʢϖʔδʣʹΧϯλΛ ࣋ͬͯཧ͍ͯ͠Δ https://github.com/cmu-db/bustub/blob/master/src/include/storage/page/page.h ϐϯ 1JO
ʮར༻தʯͷҙຯ ˞3VTUͷ1JOͱؔͳ͍
3VTUͰͲ͏͢Δ͔ Ҋ$ ಉ༷ʹΧϯλͰอޢ w ڞ༗ϝϞϦΛॻ͖͑ΔͨΊɺ વͷΑ͏ʹVOTBGF͕ొ w ઈରʹόάΒͤΔࣗ৴͔͠ͳ͍ w
͜ΕͳΒ$ Ͱॻ͚͍͍ w ଈߦͰϘπ
3VTUͰͲ͏͢Δ͔ Ҋ3X-PDLͰอޢ w ར༻த4IBSFEMPDLΛ͓࣋ͬͯ͘ w ͍ग़ͨ͘͠ͳͬͨΒ&YDMVTJWFMPDLΛऔΔ w (VBSEܥͷߏମTUBUJD͡Όͳ͍ͷͰ औΓճ͕͠ѱ͍
3VTUͰͲ͏͢Δ͔ Ҋ"SDͰอޢ w "SDʹHFU@NVU NVU"SD5 ͱ͍͏ ϝιου͕͋Δ w ࢀরΧϯλ͕ͷͱ͖ʹ͚ͩNVU5͕औΕΔ
w όοϑΝϓʔϧͷʮϐϯʯͱ૬ੑ͕Αͦ͞͏ͳػೳ w ͨͩ͠ϨγʔόNVU w όοϑΝϓʔϧશମΛอޢ͢Δ.VUFY͕͋ΔͷͰ Մมࢀর͕औΕΔ
# 5SFFͷϊʔυͷ σʔλߏ
# 5SFFͷϊʔυͷߏ ૉʹΔͱɺ͜͏
⚠ϊʔυσΟεΫʹ ॻ͖ग़ͤͳ͚ΕͳΒͳ͍ ͪΖΜɺಡΈग़͠Ͱ͖ͳ͚ΕͳΒͳ͍
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ TFSEF
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ TFSEF γϦΞϥΠζޙͷσʔλ͕Θ͔Βͳ͍͠ ޮѱ͍ͷͰμϝ
2ߏମΛσΟεΫʹ ॻ͖ग़͍ͨ͠ͱ͖ɺͲ͏͢Δʁ "ͦͷ··ॻ͖ग़ͤΔ σʔλߏΛ͕Μ࣮ͬͯ͢Δ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ϊʔυ ͖ͬ͞ొͨ͠ϊʔυ͘Μ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ࣮͜͏͍͏େ͖͞
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ͜Ε,FZ7BMVFͷϖΞ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF ͞όϥόϥ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF ͜ΕΛͦͷ··ෑ͖٧ΊΔͱ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF Φϑηοτִ͕ؒͰͳ͍ͷͰೋ୳ࡧͰ͖ͳ͍
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF Γ͠
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF ,FZ7BMVFޙΖʹ٧Ίͯ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# 1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF
1US 1US ݻఆͷϙΠϯλΛ಄ʹฒΔ
ͦͷ··ॻ͖ग़ͤΔσʔλߏ ৗʹݻఆͷόΠτྻͷΈʹऩ·Δσʔλߏ ,# 1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF
1US 1US ͜ΕΛ3VTUͰॻ͘
ͱ͜ΖͰ͜ΕΛͲ͏ͬͯ Ωϟετ͢Δͷ͔
std::mem::transmute
std::mem::transmute ͦΜͳةݥͳͷ͏Θ͚ͳ͍
ศརDSBUFl[FSPDPQZz ΞϥΠϝϯτͳͲΛߟྀͯ҆͠શʹܕΩϟετͰ͖Δ w (PPHMFͷ'VDITJBͰΘΕ͍ͯΔͬΆ͍ w ͍ํʹ͔ͳΓΫη͕͋Δ w υΩϡϝϯτۃΊͯগͳ͍ w αϯϓϧίʔυ'VDITJBͷωοτϫʔΫελοΫ
LayoutVerifiedͱ͍͏ εϚʔτϙΠϯλܦ༝Ͱૢ࡞͢Δ new_from_prefixϝιου ϔομͱϘσΟʹ͔Ε͍ͯΔ σʔλߏʹ͑Δ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
IFBEFS CPEZ
new_sliceϝιουͰ ϙΠϯλͷεϥΠεΛΓग़͍ͯ͠Δ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ ͜ͷਤΛΑ͘ݟͯ΄͍͠
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ QPJOUFSTCPEZΛआ༻͍ͯ͠Δ
1US ,FZ 7BMVF ,FZ 7BMVF ,FZ 7BMVF 1US 1US OVN@TMPUT
QPJOUFST IFBEFS CPEZ QPJOUFSTCPEZΛआ༻͍ͯ͠Δ ͭ·Γɺ,FZ7BMVFϖΞΛมߋ͢Δͱ͖ʹ ͍͍ͪͪQPJOUFSTΛख์͞ͳ͚ΕͳΒͳ͍ ͩΔ͍ ʢ͔ͨ͠ͳ͠ʣ
# 5SFFͷഉଞ੍ޚ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU Modify Modify 💥 😩 😩
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU ϩοΫ্͔ΒॱʹऔΔ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϩοΫ্͔ΒॱʹऔΔ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϩοΫ্͔ΒॱʹऔΔ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ϩοΫ͕औΕͨΒɺ্ͷϩοΫख์ͯ͠Α͍ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
ଞͷεϨου͕ಈ͚ͯฒྻ্͕͕Δ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU ಉ༷ʹଓ͚Δ
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
Լͷϊʔυ͕ᷓΕͦ͏ͳ߹ɺ্ͷϩοΫΛख์ͯ͠ͳΒͳ͍ ʢॻ͖ࠐΈͷ߹ʣ CPU CPU
ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ ϊʔυ
CPU CPU ͜ΕΛ3VTUͰ࣮͢Δ
# 5SFFͷഉଞ੍ޚ ૉʹ࣮
# 5SFFͷഉଞ੍ޚ ૉʹ࣮
# 5SFFͷഉଞ੍ޚ ૉʹ࣮ page: Arc<RwLock<Page>> ro_page: RwLockReadGuard<_, Page>
next_page: Arc<RwLock<Page>> ro_next_page: RwLockReadGuard<_, Page> next_pageΛಈ͔͍͕ͨ͠ かといってRwLockReadGuardΛ ख์͢Θ͚ʹ͍͔ͳ͍ ro_page͕pageΛɺ ro_next_page͕next_pageΛ ࢀর͍ͯ͠ΔͷͰಈ͔ͤͳ͍
# 5SFFͷഉଞ੍ޚ ૉʹ࣮ page: Arc<RwLock<Page>> ro_page: RwLockReadGuard<_, Page>
next_page: Arc<RwLock<Page>> ro_next_page: RwLockReadGuard<_, Page> next_pageΛಈ͔͍͕ͨ͠ かといってRwLockReadGuardΛ ख์͢Θ͚ʹ͍͔ͳ͍ ro_page͕pageΛɺ ro_next_page͕next_pageΛ ࢀর͍ͯ͠ΔͷͰಈ͔ͤͳ͍ ٧Έ
͜ΕΑ͋͘Δ4UBCMF"EESFTT "SDͷࢦ͢ϙΠϯλෆมͳΜ͔ͩΒNPWFͤͯ͘͞Ε w PXOJOH@SFGΫϨʔτͳͲͰ ղܾ͕ࢼΈΒΕ͍ͯΔ w ࠓճ3X-PDL3FBE(VBSEʹ ಛघͳϝιουΛੜͯ͠ճආ
0XOFE3X-PDL3FBE(VBSE ΊͬͪΌVOTBGF͚ͩͲ͔ͨ͠ͳ͍
ࠓհͨ͠ίʔυ͍͍ͩͨ(JU)VCʹ͋Δ RQ w IUUQTHJUIVCDPN,0#"RQ w ϚϧνεϨου w ίʔυ͕ͱͯԚ͍ SFMMZ w
IUUQTHJUIVCDPN,0#"SFMMZ w γϯάϧεϨου w 8&# %#13&447PMͷͨΊʹ ॻ͖ԼΖͨ͠ w ͪΐͬͱίʔυ͕៉ྷ
·ͱΊ ಈతͳσʔλߏΛ࣮͢Δͱ3VTUಛ༗ͷ͕ͯ͠͞Μ͜Γʂ w "SDHFU@NVUͷΑ͏ͳϚΠφʔͳ ϝιουΛ͓ͬͯ͘ͱʹཱͭ w TUEΫϨʔτΛ׆͔ͤΔΑ͏ʹ σʔλߏΛมܗ͢ΔεΩϧ͕ॏཁ
w ίϯύΠϧΤϥʔΛோΊΔ͚ͩͰͳ͘ɺ ϝϞϦͷ༷ࢠΛ૾͢Δ w ͋Δ͖ϝϞϦͷߏ͔Β σʔλߏΛٯࢉ͢Δͷ͕ίπ