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
スマホゲームを作ったよ
Search
いも
November 19, 2016
Programming
2.5k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スマホゲームを作ったよ
初めてリリースしたiOSアプリの紹介と、マルチシーンエディットの活用事例です
いも
November 19, 2016
More Decks by いも
See All by いも
UnityプログラミングバイブルR6号宣伝&Unity Logging小話
adarapata
0
660
Unityテスト活動のふりかえり
adarapata
1
710
Gather.townはいいぞ その後
adarapata
1
1.7k
Unityでの開発事例
adarapata
3
23k
どこのご家庭にもあるシーンマネージャーの話
adarapata
2
8.9k
Gather.townはいいぞ
adarapata
2
2.5k
宴はいいぞ
adarapata
0
2.3k
わかった気になるモブプログラミング
adarapata
1
190
モブワークっぽいのをやっている話/Trying mobwork
adarapata
2
1.3k
Other Decks in Programming
See All in Programming
phperだってパンチカードでコーディングしたい
o0h
PRO
0
280
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
240
カツオ、ご期待ください
suneo3476
0
170
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.6k
ActionController meets Protocol Buffers
sorah
0
150
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
990
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
370
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.3k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
速習iPhone Duo対応
yuukiw00w
2
980
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Side Projects
sachag
456
43k
The agentic SEO stack - context over prompts
schlessera
0
970
Skip the Path - Find Your Career Trail
mkilby
1
250
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Practical Orchestrator
shlominoach
192
12k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
560
Amusing Abliteration
ianozsvald
1
340
Transcript
ϚϧνγʔϯΤσΟοτ͍͍ͧ Ҫຊେొ(.01&1"#0JOD 6OJUZ'VLVPLB εϚϗήʔϜΛ࡞ͬͨΑ
ΤϯδχΞ Ҫຊେొ !BEBSBQBUB ϩϦϙοϓάϧʔϓ8&#։ൃνʔϜ
ࠓͷ͓ wJ04͚ήʔϜʮϦϏϯάσΠϒʯͷհ wϚϧνγʔϯͷ׆༻ࣄྫ
ϦϏϯάσΠϒ
ϦϏϯάσΠϒ wσΠϒΛૢ࡞ͯ͠ձ͔ࣾΒୀۈ͢ΔΞΫγϣϯήʔϜ wୀۈ͢ΔͨΊʹࡾͭͷΩʔΞΠςϜΛೖख͍ͯ͘͠ wΩʔΞΠςϜΛೖखͯ͠ग़ޱʹ͔͑ΫϦΞʔ wࣾһʹั·Δͱઆಘ ߈ܸ ͞ΕͯμϝʔδΛड͚Δ wϓϨΠ͢Δͨͼʹ෦ͷߏ͕มԽ͢Δ wϓϨΠͷํʹΑ༷ͬͯʑͳশ߸ΛऔಘͰ͖ɺୀۈྗ$ʙ4ͰධՁ͞ΕΔ w࣮ࡏ͢Δاۀͱͷؔ࿈Ұ͋Γ·ͤΜ
σΠϒͷཪଆ w6OJUZ wϓϩάϥϚ̍ਓɺσβΠφ̍ਓɺҰϲ݄΄Ͳ w%Ϟσϧશͯ4ZOUZ4UVEJPTͷΞηοτΛར༻ wεΫϦϓτܥΞηοτ6OJ3Yͱ"SCPSΛ༻ wϒϥϯͬΆ͍දݱͷ͙ͨ͢͞ΜͷϒϩάهࣄΛࢀߟʹͨ͠
Ξηοτհ
6OJ3Y wIUUQTXXXBTTFUTUPSFVOJUZEDPNKQDPOUFOU w3FBDUJWF&YUFOTJPOTΛ6OJUZͰ࣮Ͱ͖ΔΑ͏ʹͳΔϥΠϒϥϦ wͱΓ͢ʔ͞ΜͷεϥΠυΛݟΑ͏ʂ wϦϏϯάσΠϒׂ̔6OJ3YͰॻ͍ͯΔ
"SCPS wIUUQDBJUTJUIXBSFDPNXPSEQSFTT wέοτγʔΣΞ͞Μ࡞ͷΞηοτ wεςʔτϚγϯΛ؆୯ʹ࡞Ͱ͖ΔΤσΟλ֦ு w൚༻తͳػೳඪ४Ͱἧ͍ͬͯΔ ࣗ࡞εΫϦϓτͷՃ͕؆୯ w
࣮ࡍͷਧ͖ग़͠߈ܸͷ࣮
Ϛϧνγʔϯͷ׆༻ࣄྫ 1.
୯ମγʔϯͰઃܭ͢Δ߹ Ұྫ wૉʹγʔϯΛ-PBE͢Δɻ̍γʔϯʹෳͷ1SFGBC͕͋Δ wήʔϜͷγεςϜͷΦϒδΣΫτ 1(͕Α͘৮Δ wഎܠɺϑΟʔϧυͳͲͷΦϒδΣΫτ σβΠφ͕Α͘৮Δ wγʔϯΛ͓ޓ͍ʹ৮Δͱਏ͍ͷͰɺखݩͰ࡞ͬͨͷΛ1SFGBCԽ
w1SFGBCΛγʔϯʹೖΕ࣮ͯྃʂ େݩͷγʔϯʹɺΈΜͳ͕࡞ͬͨ1SFGBC͕Ճ͞Ε͍ͯ͘Πϝʔδ
͜ΕΛϚϧνγʔϯͰସͰ͖ͳ͍͔ʁ
Ϛϧνγʔϯͷ׆༻ࣄྫJOϦϏϯάσΠϒ w(6*ͰͷϚϧνγʔϯΤσΟοτͷ׆༻ wεΫϦϓτͰͷ4DFOF.BOBHFSͷ׆༻
Ϛϧνγʔϯͷ׆༻ࣄྫJOϦϏϯάσΠϒ w(6*ͰͷϚϧνγʔϯΤσΟοτͷ׆༻ wεΫϦϓτͰͷ4DFOF.BOBHFSͷ׆༻
෦ΛͲ͏࡞Δʁ Ұͭͷ෦ʹೖͬͯΔΦϒδΣΫτ w κϯϏ w นɾҜࢠͳͲݐͷใ w ϥΠτɺΧϝϥͳͲͷใ ͜ΕΒΛͲ͏ཧ͢Δʁ ·ͱΊͯ1SFGBCԽ͢Δͱ͍͏ख͋Δ͚Ͳɾɾ
ڊେͳ1SFGBCѻ͍ʹ͍͘ wࢠͷΦϒδΣΫτͷมߋΛͮ͠Β͍ wκϯϏͷҐஔมߋසൟʹى͜Γ͏Δมߋ wγʔϯʹ࣋ͬͯߦͬͯ࿔ͬͯߋ৽ɾɾͱ͍͏खؒ wͦͷͨΊͷTBOECPYతγʔϯͷ༻ҙ w*OTUBOUJBUFͰগ͠ࢭ·ΔՄೳੑ 3FTPVSDFT-PBE"TZODͱ͍͏ํ๏͋Δ wϨϕϧσβΠϯ࣌ʹ༏͘͠ͳ͍ཧํ๏ʹͳΔ
γʔϯϑΝΠϧͰཧͨ͠ํ͕ײతͰʁ
ϚϧνγʔϯΤσΟςΟϯάΛ͏
ϚϧνγʔϯΤσΟοτػೳ w͔Βೖͬͨػೳ wෳͷγʔϯΛಉ࣌ʹฤूͰ͖Δ wಈతʹγʔϯ୯ҐͰͷՃɾআ͕Մೳ wׂͰγʔϯΛׂ͢Δ͜ͱͰɺͭΒ͍ίϯϑϦΫτΛ͛Δ
εΫϦϓτͰͷγʔϯͷॏͶํ SceneManager.LoadScene(sceneName, LoadSceneMode.Additive); SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); ඇಉظͰಡΈࠐΊΔɻ ಡΈࠐΈྃɺআྃͷίʔϧόοΫ͋Δ SceneManager.sceneLoaded += (scene,
mode) => {}; SceneManager.sceneUnLoaded += (scene) => {};
ϦϏϯάσΠϒͷϝΠϯ෦̏ͭͷγʔϯΛॏͶ͍ͯΔ .BJO(BNF )VNBO$POUSPM6* 3PPN
3PPNγʔϯ w ෦Λߏ͢Δγʔϯ w γʔϯԼʹࢄΒ͔ͣ͞3PPUΛڬΉ w ݐɺκϯϏɺΧϝϥFUD w ෦ΛҠಈ͢Δʹಈతʹੜɺഁ غ͞ΕΔ
w ͜͜ʹσΠϒͷใҰͳ͍
)VNBO$POUSPM6*γʔϯ w ϓϨΠϠʔ σΠϒ ͕͍Δ w Ծίϯτϩʔϥ͜͜ w ୯ମͰಈ͔ͤΔ w
3PPNͱ͜ͷγʔϯΛॏͶΔͱɺ෦ ୯ҐͰಈ࡞֬ೝͰ͖Δ w γʔϯՃ͚ͩͳͷͰσβΠφ୯ମ Ͱ࡞ۀ͍͢͠
.BJO(BNFγʔϯ w ࣮ࡍͷήʔϜϑϩʔΛཧ͢Δ w ήʔϜͷΠϕϯτਐߦཧ w ෦ͷಈతಡΈࠐΈɺΓସ͑ w #(.͜͜ w
.BJO(BNF͕࠷ॳʹಡΈࠐ·Εɺॳ ظԽॲཧͰ)VNBO$POUSPM6*ɺ3PPN ΛՃ͍ͯ͘͠ ը૾͕ͳ͍ͨΊՄѪ͍ೣΛ͓ૹΓ͍ͯ͠·͢
ׂͬͯΈͯͷॴײ w࡞ͬͨγʔϯΛͦͷ··͑ΔͷͰײతʹ࿔Γ͍͢ wσβΠφ͕ಈ͖͍͢ɺۀ͕ḿΔ wಈ࡞֬ೝ࣌ʹεΫϦϓτΛ͍͡ΔͷΊͯγʔϯՃ͚ͩͳͷָ͕ wڊେͳ1SFGBCΛ࡞Δ͘Β͍ͳΒ4DFOFʹͯ͠͠·ͬͨํ͕ѻ͍ͦ͢͏ wͨͩɺ(6*ͩͱγʔϯؒͰΦϒδΣΫτͷࢀরͰ͖ͳ͍ͷҙ
Ϛϧνγʔϯͷ׆༻ࣄྫJOϦϏϯάσΠϒ w(6*ͰͷϚϧνγʔϯΤσΟοτͷ׆༻ wεΫϦϓτͰͷ4DFOF.BOBHFSͷ׆༻
ϦϏϯάσΠϒ wσΠϒΛૢ࡞ͯ͠ձ͔ࣾΒୀۈ͢ΔΞΫγϣϯήʔϜ wୀۈ͢ΔͨΊʹࡾͭͷΩʔΞΠςϜΛೖख͍ͯ͘͠ wΩʔΞΠςϜΛೖखͯ͠ग़ޱʹ͔͑ΫϦΞʔ wࣾһʹั·Δͱઆಘ ߈ܸ ͞ΕͯμϝʔδΛड͚Δ wϓϨΠ͢Δͨͼʹ෦ͷߏ͕มԽ͢Δ wϓϨΠͷํʹΑ༷ͬͯʑͳশ߸ΛऔಘͰ͖ɺୀۈྗ$ʙ4ͰධՁ͞ΕΔ w࣮ࡏ͢Δاۀͱͷؔ࿈Ұ͋Γ·ͤΜ
෦ͷࣗಈੜ
ࣗಈੜͷͬ͘͟Γͱ༷ͨ͠ w෦ 4DFOF ͕ҙͷ͚ͩϥϯμϜʹબΕΔ w෦ಉ࢜ɺຖճϥϯμϜʹυΞͰܨ͕͍ͬͯΔ wυΞΛௐΔͱɺผͷ෦ʹΓସΘΔ wඞͣશ෦ͷ෦ʹೖΕΔΑ͏ʹɺ͍͍ײ͡ʹܨ͕͍ͬͯΔ ༻͢Δ෦ͷબ ෦ͷΓସ͑ ࠓճҎԼͷೋʹ͍ͭͯ͢
༻͢Δ෦ͷબ #"% wͱΓ͋͑ͣ෦γʔϯΛҙͷϥϯμϜʹϩʔυͯ͠Έͨ wϋʔυϞʔυͩͱ෦͘Β͍ϩʔυ͞ΕΔ w࣮ػ͕ͩΜͩΜͱԹ͔͘ͳΔ wJ1IPOFͰGQTͱ͍͏είΞΛୟ͖ग़͢ େྔͷγʔϯΛಡΈࠐΉͷݱ࣮తͰͳ͍ͷͰɺ γʔϯΛಡ·ͣʹ෦Λબ͢Δඞཁ͕͋Δ
෦ใͷΓग़͠ 3PPN1SPQFSUZ w෦ͷใΛ4DSJQUBCMF0CKFDUʹ͢Δɻ w෦໊ɺ෦ͷछྨɺυΞͷɺΞΠςϜͳͲ wϑΝΠϧ໊γʔϯ໊ w3FTPVSDFT-PBE"MMͰ·ͱΊͯऔΕΔ w͋ͱϥϯμϜʹબྑ͍ var properties =
Resources.LoadAll<RoomProperty>("Rooms").ToList();
͋Δఔϧʔϧ͚ͨϥϯμϜ wશͳϥϯμϜσβΠϯ͕ݫ͍͠ w෦ʹଐੑΛ͚ͭΔ wඞਢͳ෦ɺඞਢͰͳ͍෦ w)VC &WFOUҎ֎̍ݸ͚ͩඞਢ w)VC̍ݸҎ্ w&WFOǓݸҎ্ public enum
RoomType { Start, // ։࢝ Locker, // ϩοΧʔϧʔϜ Timecard, // λΠϜΧʔυ෦ President, // ࣾࣨ Exit, // ඇৗޱ Goal, // ΰʔϧ Hub, // ଓ෦ (υΞ3ʙ4ͭ) Event // Πϕϯτ෦ }
༻͢Δ෦ͷબ ؆ུԽͨ͠ͷ private List<RoomProperty> BuildRoomsProperties(int count) { // ෦ͷScriptableObjectΛશ෦औΔ var
properties = Resources.LoadAll<RoomProperty>("Rooms").ToList(); // ඞཁͳ෦ଐੑΛఆٛ RoomType[] requiredRoomType = { RoomType.Start, RoomType.Locker, RoomType.Timecard, RoomType.President, RoomType.Exit, RoomType.Goal }; // ༨ΓHubଐੑͰຒΊΔ List<RoomType> hubs = Enumerable.Repeat(RoomType.Hub, count - requiredRoomType.Length).ToList(); // Α͠ͳʹϥϯμϜʹऔΓग़ͯ͠ฦ͢ return hubs.AddRange(requiredRoomType.ToList()) .Select(t => GetRandomRoomProperty(properties, t)) .ToList(); }
෦ͷΓସ͑ɺͷલʹ෦ͷใΛ࣋ͭΫϥε w3PPN1SPQFSUZͰ෦ใఆٛͰ͖ͨ wࠓɺήʔϜಈ࡞தͷใ͕ඞཁʹͳΔ wͲ͜ͱܨ͕͍ͬͯΔʁͲͷΞΠςϜΛௐΒΕͨʁͳͲ w3PPN1SPQFSUZΛϕʔεʹΠϯελϯεΛ࡞ΔΠϝʔδ
෦ͱυΞͷΫϥεఆٛ #"% public class RoomBehaviour : MonoBehaviour { // ෦ใ
public RoomProperty roomProperty; // ෦ʹ͋ΔυΞୡ public List<DoorBehaviour> doors; } public class DoorBehaviour : MonoBehaviour { // ܨ͕͍ͬͯΔυΞ public DoorBehaviour target; }
෦ͱυΞͷΫϥεఆٛ #"% w(BNF0CKFDUʹଓใΛ࣋ͨͤΔͱ·͍ͣ w෦γʔϯϑΝΠϧͰɺසൟʹআ͞ΕΔ wγʔϯআ࣌ʹଓใ͝ͱফ͞ΕΔ wΞΠςϜใγʔϯ࠶ಡΈࠐΈ࣌ʹݩ௨Γ ଓใ(BNF0CKFDUʹґଘ͍͚ͯ͠ͳ͍ɻ σʔλͱ(BNF0CKFDUΛΓ͢ඞཁ͕͋Δ
σʔλΫϥεͱ#FIBWJPVSʹ͚Δ public class Room { private RoomProperty roomProperty; public List<Door>
doors; public List<Item> items; } public class Door { private Room parentRoom; public Door target; }
σʔλΫϥεͱ#FIBWJPVSʹ͚Δ public class RoomBehaviour : MonoBehaviour { public Room roomData;
public List<DoorBehaviour> doors; public List<ItemBoxBehaviour> itemBoxes; } public class DoorBehaviour : MonoBehaviour { public Door doorData; }
σʔλΫϥεͱ#FIBWJPVSʹ͚Δ w3PPN෦ͷݱࡏͷঢ়گ υΞɺΞΠςϜ Λ࣋ͭ w%PPSଓઌͷ%PPSΛ࣋ͭ wγʔϯ্ʹ3PPN#FIBWJPVS͕ҰͭɺυΞͦΕͧΕ%PPS#FIBWJPVSΛ࣋ͭ w͜ΕΒΒͬͨใΛجʹҠಈॲཧΞΠςϜऔಘॲཧΛߦ͏͚ͩ w෦ΛಡΈࠐΉλΠϛϯάͰ#FIBWJPVSʹσʔλΛͯ͋͛͠Δ
γʔϯΛϩʔυ͢Δʹݱࡏͷ෦ใΛ͢ .BJO(BNF )VNBO$POUSPM6* 3PPN 3PPN#FIBWJPVS 3PPN %PPS#FIBWJPVS %PPS#FIBWJPVS
෦ͷΓସ͑ wͬ͘͟Γͱࡾͭͷॲཧ͕Δ ৽͍͠෦ͷಡΈࠐΈ ෦ใͷηοτΞοϓ ݹ͍෦ͷআ
Γସ͑ॲཧ ؆ུԽ public void MoveRoom(Door door) { var target =
door.target; SceneManager.sceneLoaded += (scene, mode) => { var root = scene.GetRootGameObjects().First() .GetComponent<RoomBehaviour>(); root.SetupRoomData(target.room); SceneManager.UnloadScene(door.room.name); }; SceneManager.LoadSceneAsync(target.room.name, LoadSceneMode.Additive); }
Γସ͑ॲཧ ؆ུԽ public void MoveRoom(Door door) { var target =
door.target; SceneManager.sceneLoaded += (scene, mode) => { var root = scene.GetRootGameObjects().First() .GetComponent<RoomBehaviour>(); root.SetupRoomData(target.room); SceneManager.UnloadScene(door.room.name); }; SceneManager.LoadSceneAsync(target.room.name, LoadSceneMode.Additive); } ৽͍͠෦ΛಡΈࠐΉ
Γସ͑ॲཧ ؆ུԽ public void MoveRoom(Door door) { var target =
door.target; SceneManager.sceneLoaded += (scene, mode) => { var root = scene.GetRootGameObjects().First() .GetComponent<RoomBehaviour>(); root.SetupRoomData(target.room); SceneManager.UnloadScene(door.room.name); }; SceneManager.LoadSceneAsync(target.room.name, LoadSceneMode.Additive); } ෦ʹݱࡏͷใΛ༩͑Δ
Γସ͑ॲཧ ؆ུԽ public void MoveRoom(Door door) { var target =
door.target; SceneManager.sceneLoaded += (scene, mode) => { var root = scene.GetRootGameObjects().First() .GetComponent<RoomBehaviour>(); root.SetupRoomData(target.room); SceneManager.UnloadScene(door.room.name); }; SceneManager.LoadSceneAsync(target.room.name, LoadSceneMode.Additive); } ݹ͍෦ͷআ
γʔϯͷΓସ͑ wϩʔυͨ͠γʔϯͷத͔Βҙͷ$PNQPOFOUΛऔΔͷ͕໘ w4DFOF(FU3PPU(BNF0CKFDUTͰώΤϥϧΩʔԼͷ(BNF0CKFDUऔΕΔ wSPPUΦϒδΣΫτ࡞ͬͯͦ͜ʹཧεΫϦϓτஔ͘ͷָ͕ͦ͏ wσΠϒSPPUʹ3PPN#FIBWJPVSΛ͚ͭͯɺ͔ͦ͜Β෦ͱΓऔΓ͢Δ
-PBE4DFOF"TZODͷҙ wίʔϧόοΫ͕ݺΕΔλΠϛϯάɺγʔϯͷಡΈࠐΈ͕ྃͨ࣌͠ wTDFOFͷΦϒδΣΫτ͕ॳظԽ͞Ε͍ͯΔอূͳ͍ w4UBSUʹॳظԽॲཧॻ͍ͯͨΒҙ wϑϨʔϜͬͯॲཧ͢Δͱ࣮֬ wFWFOUͷߪಡղআΕͳ͍Α͏ʹͶʂ
6OJ3Yͩͱ৭ʑָ public void MoveRoom(Door door) { var target = door.target;
// ଓઌͷυΞ͕͋ΔγʔϯΛϩʔυ SceneManager.LoadSceneAsync(target.room.name, LoadSceneMode.Additive) .AsObservable() .Select(__ => SceneManager.GetSceneByName(target.room.name)) .DelayFrame(1) .Subscribe(scene => { // ηοτΞοϓӠʑ }); }
εΫϦϓτॻ͍ͯͷॴײ wಛผࡶʹͳΔ͜ͱͳ͔ͬͨ wඇಉظͰॲཧ͍͚ͯ͠Δͷخ͍͠ wମײతʹɺ1SFGBCΛJOTUBOUJBUF͢ΔΑΓएׯ͍ʁ wγʔϯؒͷܨ͗͜Έॲཧ͕ඞਢʹͳͬͯ͘Δ
ϚϧνγʔϯΤσΟοτ׆༻ͷ·ͱΊ wׂ͝ͱʹγʔϯΛΓ͚ΕΔ͔Βۀ͕Γ͍͢ w୯ମγʔϯ 1SFGBCΑΓௐ࣌ͷख͕͔͔ؒΒͳ͍ wطଘγʔϯʹӨڹΛ༩͑ͳ͍ͷͰϝϯλϧʹ༏͍͠ wܨ͗͜ΈͷΈ࣮͢Δඞཁ͕͋Δ w૯ͯ͡ɺඇϓϩάϥϚͷޮΛ্͛Δͷʹ༗ޮ
࠷ޙʹ ͜Μͳ1SFGBCγʔϯʹͯ͠ྑ͍ͷͰͳ͍͔ʁͱ͍͏ײ w ෳͷผͷ(BNF0CKFDU͕ࠞͬͯ͟Δ w (6*Ͱͷฤू࡞ۀ͕ଟ͍ w ̍ՕॴͰ͔ͬͯ͠ͳ͍ w ୯ମͰػೳ͢Δ
֎෦ͷΦϒδΣΫτʹґଘ͠ͳ͍ σΠϒͷྫɿ w ෦κϯϏɾΞΠςϜɾصͳͲ͍ͬͺ͍͋Δ w ෦ͷஔͳͲසൟʹߋ৽͢Δ w ͭ࠶ར༻͢Δ͜ͱͳ͍ దʹΓ͚ͯͤʹ։ൃ͍ͨ͠
͓ΘΓ