4"5:4'*ΤίγεςϜ࠶ߟʢʁʣ೥݄೔
4"5:4'*$POG

5BLBTIJ4VXBgfngfn

֓ཁw ʮ4"5:4'*Wͳ͔ͳ͔ϦϦʔεͰ͖Ͷ͑ʂʯr ඇ‫ͳ׵ޓ‬มߋΛྑ͍‫ػ‬ձͱ͠ɼॲཧ‫ܥ‬ຊମ΍ύοέʔδͷ‫׵ޓ‬ੑΛ‫͘ྑے‬ѻ͑ΔΤίγεςϜ͕ߏஙͰ͖͔ͯΒϦϦʔε͍ͨ͠w ௕‫ظ‬తʹอक͢Δจॻʹͱͬͯ‫׵ޓ‬ੑ͸ॏཁr ‫ط‬ଘπʔϧͰ͋Δ4BUZSPHSBQIPT<4BLBNPUP>͸‫ݱ‬ঢ়Ͱ͸01".ͱͷ‫ڞ‬ಉར༻ͷ‫ܗ‬ଶΛͱ͍ͬͯΔ͕ɼ
01".ʹ‫ى‬Ҽ͢Δ໽հ͝ͱ͕͍Ζ͍Ζ͋Δ

w ύοέʔδϚωδϝϯτ΍Ϗϧυ੍‫ޚ‬ͷϓϩτλΠϓ͕Ͳ͏͋Δ΂͖͔ͷઃ‫ܭ‬ɾ࣮૷Λ‫ݸ‬ਓతʹ‫ݕ‬౼தr ࠷ऴతʹ4BUZSPHSBQIPTʹϑΟʔυόοΫ͢Δ͔ɼผ‫ͭ͘ʹݸ‬Δͷ͔ͳͲ͸ະఆʢ૬ஊͷ্ܾఆ͍ͨ͠ʣൃදͷͶΒ͍w Ϣʔβ΍ίϯτϦϏϡʔλͷํʑʹ01".ʹґଘ͠ͳ͍ΤίγεςϜͷઃ‫ܭ‬Ҋ΍ͦͷϓϩτλΠϓ࣮૷Λୟ͖୆ͱͯ͠‫ڞ‬༗͢Δw ·ͨɼ໰୊఺Λࢦఠͯ͠΋Β͍ͳ͕Β͓͓ΑͦϢʔβશମͱͯ͠ʮ͜ΕͰΑ͔Ζ͏ʯͱ͍͏ΏΔ΍͔ͳ߹ҙʹ࠷ऴతʹࢸΕΔͱ͏Ε͍͠໨࣍w‫ݱ‬ঢ়ͷ໰୊఺ͱղܾͷํ਑w ৽͍͠4"5:4'*ॲཧ‫ܥ‬ຊମͷ੹຿w ΤίγεςϜଆͷ੹຿w ͦͷଞͷٞ࿦w ·ͱΊ‫ݱ‬ঢ়ͷΤίγεςϜͷ໰୊఺w ‫׵ޓ‬ੑʹؔ͢Δ‫ه‬ड़͕࢓૊ΈԽ͞Ε͍ͯͳ͍r ύοέʔδͷϦϦʔεͰ‫׵ޓํޙ‬ੑͷ༗ແͷ‫ه‬ड़͕‫੍͞ڧ‬ΕͣɼͦͷύοέʔδΛ࢖͏ଆͰͷΞοϓάϨʔυ͕େมw TFNWFS͕΄͍͠ʂr ௕‫ظ‬తʹอक͢Δจॻʹؔͯ͠‫׵ޓ‬ੑ͸ॏཁ՝୊w ‫׵ޓ‬ੑͷ୲อ͕೉͍ͨ͠Ίʹ5&9-JWFΛΞοϓάϨʔυͰ͖ͳ͍ग़൛ࣾͷ‫ݱ‬৔͕࣮ࡍʹ͋Δw ಉҰύοέʔδͷඇ‫ͳ׵ޓ‬όʔδϣϯ͕‫ڞ‬ଘͰ͖ͳ͍r ‫ڞ‬ଘͰ͖ͳ͍͜ͱ͕ෆ౎߹ʹͳ࣮ͬͨྫ͕‫͋ʹط‬Δ

w enumitemύοέʔδ<NPOBRB>ͷWͱW

4BUZSPHSBQIPTΛհͯ͠01".ʹґଘ͓ͯ͠Γ01".ͷྺ࢙త‫ܦ‬ҢʹΑΔෆศͳ఺ΛҾ͖ड͚͍ͯΔͷ͕ཁҼվળͷํ਑
01".ͷఆࣜԽʹґଘ͠ͳ͍4"5:4'*ͷΤίγεςϜΛͭ͘Δ

w 01".ͷ౎߹ΛՃຯͤͣɼແ৚݅ʹ4"5:4'*ʹͱͬͯ
๬·͍͠ΤίγεςϜͷࡏΓํΛߟ͑Δ

w 4BUZSPHSBQIPT΋01".Ҏ֎ΛόοΫΤϯυͱ͢ΔΑ͏ʹ࣮૷Λସ͑Δ͜ͱࣗମ͸े෼Մೳͱͷ͜ͱw ͍ͣΕʹͤΑͲΜͳ࢓૊Έ͕ྑ͍ͷ͔ͷධՁɾ‫ݕ‬౼ͷͨΊʹୟ͖୆ͱͳΔઃ‫ܭ‬ҊͱϓϩτλΠϓ࣮૷͕ඞཁॲཧ‫ܥ‬ຊମʹؔ͢Δཁ݅lͭͷόʔδϣϯʹ༝དྷ͢ΔϞδϡʔϧͷू·Γz͕ॲཧ‫͔ܥ‬ΒͲ͏‫͑ݟ‬ΔఆࣜԽʹ͢Δ͔ʁw ಉҰύοέʔδͷෳ਺όʔδϣϯ‫ڞ‬ଘͷͨΊʹ͸ɼͦ΋ͦ΋ॲཧ‫ܥ‬ຊମ͕lϦϦʔε୯Ґͱͯ͠ͷύοέʔδzΛҙࣝͰ͖ͳ͍Α͏ʹͳ͍ͬͯΔͱ‫ݟ‬௨͕͠Α͍r ॲཧ‫ܥ‬ຊମ͸ɼಉ͡ύοέʔδ༝དྷͰ͋Δ͜ͱΛશ͘஌ΒͣʹͭͷಠཱͳlϞδϡʔϧͷू·ΓzΛॲཧ͢Ε͹Α͍r ͨͩ͠ɼͦͷͭΛҟͳΔ໊લͰࢀরͰ͖Δ࢓૊Έ͕ඞཁw ҰํͰɼҟͳΔύοέʔδ༝དྷͷϞδϡʔϧ໊͕িಥͯ͠͸ࠔΔͷͰɼύοέʔδͷ‫ن‬໛ʹରԠ͢Δ໊લۭؒͷ੾Γ෼͚‫ػ‬ೳ͸͋ͬͯ΄͍͠ΤίγεςϜͷߏ੒Ҋw ҎԼͷཁૉʹ෼͚Δ
 4"5:4'*ॲཧ‫ܥ‬ຊମw ϦϦʔεͷ୯Ґͱͯ͠ͷύοέʔδ͸ೝࣝ͠ͳ͍w lϞδϡʔϧͷू·Γͱͯ͠ͷύοέʔδz͸ೝࣝ͢Δ ύοέʔδϚωʔδϟɾϏϧυγεςϜw Ծশɿ4BQIFTF㸍G 4"5:4'*1BDLBHF)BOEMJOH&DPTZTUFN w ύοέʔδͷґଘղܾɾ഑ஔɼ͓Αͼॲཧ‫ܥ‬ຊମͷ‫ى‬ಈΛ୲͏ ΞοϓάϨʔμw ͱͷόʔδϣϯͷߋ৽ɾ੾ସ͑Λߦͳ͏πʔϧw ࠓճ͸ѻ͍·ͤΜʢ࣮͸·ͩશ͘ఆࣜԽͯ͠ͳ͍😁ʣ

w 3VTUDɾ$BSHPɾ3VTUVQͷ੹຿෼୲ͱΑ͘ࣅ͍ͯΔ໨࣍w ‫ݱ‬ঢ়ͷ໰୊఺ͱղܾͷํ਑w৽͍͠4"5:4'*ॲཧ‫ܥ‬ຊମͷ੹຿w ΤίγεςϜଆͷ੹຿w ͦͷଞͷٞ࿦w ·ͱΊॲཧ‫ܥ‬ຊମ͔ΒͷlϞδϡʔϧͷू·Γzͷ‫ํ͑ݟ‬w lϦϦʔεͷ୯Ґͱͯ͠ͷύοέʔδz͸ೝࣝ͠ͳ͍͕ɼlϞδϡʔϧͷू·ͬͨͻͱ͔ͨ·ΓzΛ୯Ґͱͯ͠ೝࣝr ԾশɿΤϯϕϩʔϓʢenvelopeɼ෧౵ͷҙʣr య‫ܕ‬తʹ͸ɼόʔδϣϯΛ‫ݻ‬ఆͯ͠഑ஔ͞Εͨύοέʔδr σΟϨΫτϦߏ଄ɿw ϧʔτʹίϯϑΟάsatysfi-envelope.yaml͕͋ΓɼͲͷαϒσΟϨΫτϦʹιʔεϑΝΠϧ͕͋Δ͔ͳͲΛ‫ࡌه‬
foo-envelope/├── satysfi-envelope.yaml└── src/├── foo.satyh└── foo-sub.satyh

source_directories:- "src/"main_module: "Foo"ʜΤϯϕϩʔϓΛߏ੒͢ΔιʔεϑΝΠϧ
w ֤Τϯϕϩʔϓ͸ͨͩͭͷϝΠϯϞδϡʔϧΛΤϯϕϩʔϓ֎ʹެ։͢Δr ଞͷϞδϡʔϧ͸ೖΕࢠͷϝϯόʔͱͯ͠ͷΈެ։ՄೳͰɼ
໊લۭؒΛԚછ͠ͳ͍
foo-envelope/├── satysfi-envelope.yaml└── src/├── foo.satyh└── foo-sub.satyh
source_directories:- "src"main_module: "Foo"foo.satyhʢϝΠϯϞδϡʔϧʣ

import FooSub
module Foo :> sig
val succ : int -> int
module Sub : sig
val pred : int -> int
end
end = struct
val succ n = n + 1
module Sub = FooSub
endfoo-sub.satyh

module FooSub = struct
val pred n = n - 1endॲཧ‫ܥ‬ຊମ΁ͷΤϯϕϩʔϓͷ༩͑ํw ૊൛ʹࡍͯ͠ɼॲཧ‫ܥ‬͸doc.satyʹՃ͑ͯϑΝΠϧdoc.satysfi-deps.yamlΛड͚औΔr ࢖༻͢ΔΤϯϕϩʔϓҰཡͱͦͷؒͷґଘؔ܎Λ‫ࡌه‬w ਓ͕ؒखͰॻ͘ͷͰ͸ͳ͘ɼΤίγεςϜ͕ੜ੒͢Δ͜ͱΛ૝ఆr ͜ͷϑΝΠϧͱ֤ґଘΤϯϕϩʔϓͷίϯϑΟάΛ‫ݟ‬Δ͚ͩͰ֤ιʔεϑΝΠϧΛͲ͏ಡΈࠐΊ͹Α͍͔ͷ৘ใ͕શͯಘΒΕΔίϚϯυूdoc.satylocal.satyhॲཧ‫ܥ‬ຊମ

doc.satysfi-deps.yaml
֤ΤϯϕϩʔϓΛϑΝΠϧύεͰࢦࣔ͢͠

doc.satysfi-deps.yamlͷ۩ମత಺༰w ֤Τϯϕϩʔϓʹର͠ɼ*%ͱϑΝΠϧύεΛ‫ࡌه‬w Τϯϕϩʔϓؒͷґଘؔ܎͸dependenciesʹ‫ه‬ड़͞Εɼ%"(Λͳ͢r ॲཧ‫ܥ‬͸͜ΕΛ΋ͱʹτϙϩδΧϧιʔτͯ͠ॱ࣍ΤϯϕϩʔϓΛಡࠐΉw ґଘ͢ΔΤϯϕϩʔϓͷϝΠϯϞδϡʔϧΛࢀর͢Δ໊લΛused_asͰࢦఆ
r ϝΠϯϞδϡʔϧΛࢀর͢ΔͨΊͷ໊લ͸࢖͏ଆ͕ܾΊΒΕΔbarr ಉҰύοέʔδͷෳ਺όʔδϣϯͷ‫ڞ‬ଘʹඞཁʢৄࡉ‫ޙ‬ड़ʣจॻ Barenvelopes:- id: "foo"path: "path/to/foo-envelope/"
dependencies: []- id: "bar"path: "path/to/bar-envelope/"
dependencies:- id: "foo"used_as: "Foo"dependencies:- id: "bar"used_as: "Bar"foo
Foobar͸fooʹґଘ͠ɼFooͱ͍͏໊લͰfooͷϝΠϯϞδϡʔϧΛ࢖༻w foo͕ఏ‫͢ڙ‬Δ໊લͱҧͬͯ΋Α͍จॻຊମ͸barͷΈʹґଘ໨࣍w ‫ݱ‬ঢ়ͷ໰୊఺ͱղܾͷํ਑w ৽͍͠4"5:4'*ॲཧ‫ܥ‬ຊମͷ੹຿wΤίγεςϜଆͷ੹຿w ͦͷଞͷٞ࿦w ·ͱΊΤίγεςϜ4BQIFʢԾʣͷ੹຿Ϣʔβ͕ॻ͍ͨίϯϑΟάsaphe.yamlΛ΋ͱʹҎԼΛ࣮ࢪɿ

w @$ saphe solver ίϯϑΟάʹࢦఆ͞Εͨύοέʔδͷґଘ੍໿Λ΋ͱʹɼύοέʔδϨδετϦΛࢀর੍ͯ͠໿ղফΛࢼΈɼղফͰ͖ͨΒ֤ύοέʔδͷॴ๬όʔδϣϯΛΤϯϕϩʔϓͱͯ͠औಘɾ഑ஔ͠ɼ
݁ՌΛϩοΫϑΝΠϧsaphe.lock.yamlʹग़ྗύοέʔδϨδετϦsaphe.yaml

saphe.lock.yaml}औಘ͠഑ஔ֤ͨ͠ΤϯϕϩʔϓΤίγεςϜ4BQIFʢԾʣͷ੹຿Ϣʔβ͕ॻ͍ͨίϯϑΟάsaphe.yamlΛ΋ͱʹҎԼΛ࣮ࢪɿ

w @$ saphe buildr ϩοΫϑΝΠϧsaphe.lock.yamlΛ΋ͱʹdoc.satysfi-deps.yamlΛੜ੒͠ɼॲཧ‫ܥ‬ຊମʹ౉ͯ͠‫ى‬ಈύοέʔδ
ϨδετϦ

doc.satyॲཧ‫ܥ‬ຊମsaphe.yaml

saphe.lock.yaml

doc.satysfi-deps.yaml

ΤίγεςϜ4BQIFʢԾʣͷ੹຿ϥΠϒϥϦͷϏϧυͰ͸ɼ͞Βʹsatysfi-envelope.yaml΋saphe.yaml͔Βੜ੒͞ΕΔ
ύοέʔδ
ϨδετϦ

saphe.yaml

foo.satysfi-deps.yaml

saphe.lock.yaml

ॲཧ‫ܥ‬
ຊମ
satysfi-envelope.yaml

foo.satyh

foo-sub.satyhίϯϑΟάͷ۩ମత‫ࣜܗ‬
saphe.yaml
language: "^0.1.0"
ʜdependencies:- used_as: "Table"
registered:name: "easytable"
constraint: "^2.1.0"

ίϯϑΟάͷ۩ମత‫ࣜܗ‬
saphe.yaml

saphe.lock.yaml

language: "^0.1.0"
ʜlanguage: "0.1.1"
ʜdependencies:- used_as: "Table"
registered:name: "easytable"
constraint: "^2.1.0"

locks:- id: "default.easytable.2.1.3"
registered:name: "easytable"
version: "2.1.3"
dependencies:- id: "default.base.1.0.2"
used_as: "Base"- id: "default.base.1.0.2"
registered:name: "base"version: "1.0.2"
dependencies: []dependencies:- id: "default.easytable.2.1.3"
used_as: "Table"ґଘղܾจॻ
Table

Base

easytable.2.1.3base.1.0.2w ґଘղܾͷ݁Ռ͸lग़ΔลΛࣝผ͢Δ໊લͷ͍ͭͨ%"(zඇ‫׵ޓ‬όʔδϣϯ‫ڞ‬ଘͦͷ
saphe.yaml
language: "^0.1.0"
ʜdependencies:- used_as: "Table"
registered:name: "easytable"
constraint: "^2.1.0"- used_as: "Base"registered:name: "base"constraint: "^2.0.0"

จॻͰbase.2.0.0Λ࢖͍͍͕ͨɼ
‫͍ͯͬ࢖ʹط‬Δeasytable͕base.1͔͠αϙʔτ͍ͯ͠ͳ͍৔߹Ͳ͏ͳΔʁඇ‫׵ޓ‬όʔδϣϯ‫ڞ‬ଘͦͷ
saphe.yaml
language: "^0.1.0"
ʜdependencies:- used_as: "Table"
registered:name: "easytable"
constraint: "^2.1.0"- used_as: "Base"registered:name: "base"constraint: "^2.0.0"

จॻͰbase.2.0.0Λ࢖͍͍͕ͨɼ‫͍ͯͬ࢖ʹط‬Δeasytable͕base.1͔͠αϙʔτ͍ͯ͠ͳ͍৔߹Ͳ͏ͳΔʁ

໰୊ͳ͘‫ڞ‬ଘͰ͖Δw จॻ͔Β͸Baseͱ͍͏໊લͰ
base.2.0.0ͷΈ͕ࢀরͰ͖Δจॻ
Basebase.2.0.0

Table
easytable.2.1.3
Basebase.1.0.2

ඇ‫׵ޓ‬όʔδϣϯ‫ڞ‬ଘͦͷ
saphe.yaml
language: "^0.1.0"
ʜdependencies:- used_as: "Table"
registered:name: "easytable"
constraint: "^2.1.0"- used_as: "Base"registered:name: "base"constraint: "^2.0.0"- used_as: ???
registered:name: "base"constraint: "^1.0.0"

จॻͰbase.2.0.0Λ࢖͍͍͕ͨ
easytable͕base.1ͷ‫ܕ‬Λγάωνϟʹެ։͍ͯ͠ΔͳͲͯ͠base.1΋࢖ΘͶ͹ͳΒͳ͍৔߹
Ͳ͏ͳΔʁ

จॻ
Base
base.2.0.0

Table
easytable.2.1.3
Basebase.1.0.2

ඇ‫׵ޓ‬όʔδϣϯ‫ڞ‬ଘͦͷ
saphe.yaml
language: "^0.1.0"
ʜdependencies:- used_as: "Table"
registered:name: "easytable"
constraint: "^2.1.0"- used_as: "Base"registered:name: "base"constraint: "^2.0.0"- used_as: "Base1"
registered:name: "base"constraint: "^1.0.0"

จॻͰbase.2.0.0Λ࢖͍͍͕ͨ
easytable͕base.1ͷ‫ܕ‬Λγάωνϟʹެ։͍ͯ͠ΔͳͲͯ͠base.1΋࢖ΘͶ͹ͳΒͳ͍৔߹
Ͳ͏ͳΔʁ͜Ε΋໰୊ͳ͘‫ڞ‬ଘͰ͖Δw จॻ͔Β‫ͯݟ‬BaseͱBase1ͱ͍͏ϝΠϯϞδϡʔϧ໊Ͱ‫ͼݺ‬෼͚Δจॻ
Base

Table
easytable.2.1.3

base.2.0.0

Base
Base1

base.1.0.2

࣮ࡍͷྲྀΕɿdoc.satysfi-deps.yaml‫ܦ‬༝w ΑΓਖ਼֬ʹ͸ɼϏϧυ࣌ʹsaphe.lock.yamlΛ΋ͱʹͯ͠΄΅ಉ͡%"(Λ‫ͨ͠ࡌه‬doc.satysfi-deps.yaml͕ੜ੒͞Εɼॲཧ‫ܥ‬ຊମ͕ͦΕΛಡΉr ͜ͷ࣌఺ͰɼಉҰύοέʔδͷҟͳΔͭͷόʔδϣϯ͸l‫ʹ͍ޓ‬ແؔ܎zͳͭͷΤϯϕϩʔϓʹͳΔr ॲཧ‫ܥ‬ຊମ͸ͭͷΤϯϕϩʔϓE2 E3͕
ಉҰύοέʔδ‫͋Ͱݯى‬Δ͜ͱΛͦ΋ͦ΋஌Δඞཁ͕ͳ͍
จॻ
Baseจॻ

Table

Base

E1

easytable.2.1.3
Basebase.2.0.0
Base1

base.1.0.2

saphe.lock.yaml

Table

E3

Base
Base1

E2

doc.satysfi-deps.yaml໨࣍w ‫ݱ‬ঢ়ͷ໰୊఺ͱղܾͷํ਑w ৽͍͠4"5:4'*ॲཧ‫ܥ‬ຊମͷ੹຿w ΤίγεςϜଆͷ੹຿wͦͷଞͷٞ࿦r ૝ఆ͞ΕΔٙ໰r Ϣχοτςετ‫ߏػ‬r ෳ਺ϨδετϦw ·ͱΊ૝ఆ͞ΕΔٙ໰2 Ͳ͏ͯ͠saphe.lock.yamlͱdoc.satysfi-deps.yamlͱʹ෼͔Ε͍ͯΔͷ͔ʁʢ‫Ͱ͚ͩऀޙ‬͸μϝ͔ʁʣr saphe.lock.yamlͷϑΥʔϚοτ͸ʮͲͷύοέʔδͷͲͷόʔδϣϯʯͱ͍͏֓೦Λ‫ه‬ड़͢Δඞཁ͕͋ΔͨΊ

w ॻ͖ग़ͨ͠4BQIFࣗ਎͕ಡΜͰɼϏϧυͷ࠶‫ݱ‬΍ΞοϓάϨʔυʹ࢖͑Δͱ͏Ε͍͠r doc.satysfi-deps.yaml͸ॲཧ‫ܥ‬ຊମͷͨΊͷ‫͋Ͱࣜܗ‬Γɼύοέʔδͱ͍͏֓೦Λ஌Βͳ͍

w 4BQIF͕͜ΕΛಡΜͰύοέʔδͷ৘ใΛ෮‫͢ݩ‬Δͷ͸l‫ٯ‬ΞηϯϒϧzͰ͋ΓɼෆࣗવͳͷͰ΍Γͨ͘ͳ͍૝ఆ͞ΕΔٙ໰2 தؒੜ੒෺͕ଟͯ͘अຐʹͳΒͳ͍͔ʁr όʔδϣϯ؅ཧʹ‫ؚ‬Ίͳ͍ੜ੒෺͸target/ʹೖΕΕ͹Αͦ͞͏จॻϥΠϒϥϦ

my-project/├── doc.saty└── saphe.yaml

solve & build

my-foo-lib/├── saphe.yaml│
solve & build│└── src/├── foo.satyh└── foo-sub.satyh

my-project/├── doc.saty├── saphe.yaml├── saphe.lock.yaml└── target/├── doc.satysfi-deps.yaml├── doc.satysfi-aux.yaml└── doc.pdf
my-foo-lib/├── saphe.yaml├── saphe.lock.yaml├── satysfi-envelope.yaml├── src/│├── foo.satyh│└── foo-sub.satyh└── target/└── foo.satysfi-deps.yaml໨࣍w ‫ݱ‬ঢ়ͷ໰୊఺ͱղܾͷํ਑w ৽͍͠4"5:4'*ॲཧ‫ܥ‬ຊମͷ੹຿w ΤίγεςϜଆͷ੹຿wͦͷଞͷٞ࿦r ૝ఆ͞ΕΔٙ໰r Ϣχοτςετ‫ߏػ‬r ෳ਺ϨδετϦw ·ͱΊϢχοτςετͷΠϯλʔϑΣΠεw ϥΠϒϥϦͷϢχοτςετΛҎԼͷΑ͏ʹॻ͍ͯ$ saphe testtest/ʹஔ͖ɼͰ࣮ߦͰ͖Δͱ͏Ε͍͠
import Testing
import Foomodule FooTest = struct#[test]val succ-test () =Testing.assert-equal 43 (Foo.succ 42)
endwςετ༻ϥΠϒϥϦͷͨΊʹɼ dependencies:ґଘύοέʔδͷࢦఆํ๏ʹʮςετͷ৔߹͚ͩ࢖͏ʯͱ͍͏ϑϥάΛ༻ҙʜ- used_as: "Testing"registered:name: "testing"constraint: "^1.0.0"
for_test: trueςετ͸ผύοέʔδѻ͍͢΂͖͔΋ʁ
ʢ4BLBNPUP͞Μͱͷձ࿩தͰͷ͝ࢦఠʣ<4BLBNPUP>w ςετ͕ύοέʔδͷҰ෦ͩͱ॥‫؀‬ґଘΛ΋ͨΒ͢͜ͱ͕͋Δr ྫ͑͹ʮbaseͷϢχοτςετ͕testingΛ࢖͍ͬͯΔ͕ɼ
testingͷ࣮૷΋baseʹґଘ͍ͯ͠Δ৔߹ʯ͕૬‫ޓ‬ґଘw ߟ͑ํɿ‫ʹط‬৴པͰ͖Δ࣮૷Ͱ͋Δ΂͖ςετ༻ϥΠϒϥϦ͕·ͩ৴པͰ͖ͳ͍࣮૷Ͱ͋Δςετର৅ʹґଘ͍ͯ͠Δͷ͸๬·͘͠ͳ͍ͷͰɼຊ࣭తʹ஄͘΂͖w ߟ͑ํɿbaseͷςετͱ࣮૷ͱΛผύοέʔδʹ෼͚Ε͹॥‫؀‬ґଘͰ͸ͳ͘ͳΔ
baseͷςετ .1.0.2

base.1.0.2

Base

Base
TestingʢςετͷΈґଘʣ

Testing
testing.1.0.0

base.1.0.2

Base
testing.1.0.0໨࣍w ‫ݱ‬ঢ়ͷ໰୊఺ͱղܾͷํ਑w ৽͍͠4"5:4'*ॲཧ‫ܥ‬ຊମͷ੹຿w ΤίγεςϜଆͷ੹຿wͦͷଞͷٞ࿦r ૝ఆ͞ΕΔٙ໰r Ϣχοτςετ‫ߏػ‬r ෳ਺ϨδετϦw ·ͱΊෳ਺ϨδετϦw ࣮ࡍʹ͸ϨδετϦ͸
ෳ਺‫ݸ‬ѻ͍͍ͨ͜ͱ͕͋Δr ग़൛ʹ࢖͏ެ։Ͱ͖ͳ͍ύοέʔδͳͲ΋ѻ͍͍ͨw saphe.yamlதͰϨδετϦΛࢦఆͰ͖ΔΑ͏ʹ͢Δ
r dependenciesͷ‫ه‬ड़Ͱ
registry: "default"͸লུՄೳͱ͢Δr ඪ४ͷϨδετϦ63-͸ຖճॻ͘ͱ໘౗ͳͷͰɼ$ saphe newͰੜ੒͍ͨ͠

language: "^0.1.0"
ʜregistries:- name: "default"
git:
url: "https://ʜ"branch: "format-1"- name: "your-company"
git:url: "https://ʜ"branch: "master"dependencies:- used_as: "Table"
registered:name: "easytable"
constraint: "^2.1.0"- used_as: "YourPrivatePkg"
registered:registry: "your-company"
name: "your-private-pkg"
constraint: "^0.1.1"

໨࣍w ‫ݱ‬ঢ়ͷ໰୊఺ͱղܾͷํ਑w ৽͍͠4"5:4'*ॲཧ‫ܥ‬ຊମͷ੹຿w ΤίγεςϜଆͷ੹຿w ͦͷଞͷٞ࿦w·ͱΊ·ͱΊw ΤϯϕϩʔϓʢԾʣͱ͍͏୯ҐΛಋೖͯ͠ҎԼΛ࣮‫͏͖ͦͰݱ‬r 4"5:4'*ॲཧ‫ܥ‬ຊମͱΤίγεςϜ4BQIFʢԾʣͱͷؒͰͷ‫ݟ‬௨͠ͷΑ͍੹຿ͷ੾Γ෼͚w ॲཧ‫ܥ‬ຊମ͸lϞδϡʔϧͷू·ΓzͰ͋ΔΤϯϕϩʔϓΛೝࣝ͢Δ͕ɼϦϦʔε୯Ґͱͯ͠ͷύοέʔδ͸ೝࣝ͠ͳ͍

r ύοέʔδؒͰͷϞδϡʔϧ໊ͷিಥΛ๷໊͙લۭؒr ඇ‫ͳ׵ޓ‬ෳ਺όʔδϣϯͷ‫ڞ‬ଘw Ϣχοτςετ‫Ͳͳߏػ‬ɼ·ͩগ͠ߟྀ͢΂͖͜ͱ͕࢒ଘ
w ͪͳΈʹɼ4BQIFͱ4"5:4'*ॲཧ‫ܥ‬ຊମͱ͕෼཭͍ͯ͠ͳ͍͕ɼࠓճ঺հͨ͠ఆࣜԽʹ͍ۙ‫ػ‬ೳ͸Ծ࣮૷ࡁΈ$ satysfi solver dev-0-1-0-package-systemϒϥϯνͰ͕ಈ͘
$ satysfi build$ satysfi test