Share
Embed
Second-System Syndrome: A tale of power-assert
Second-System Syndrome: A tale of power-assert
#jsconfjp
https://jsconf.jp/2023/
Takuto WADA PRO
November 19, 2023
Transcript
64 slides
-
*TV ff FSFEGSPNUIFUZQJDBMTFDPOETZTUFNTZOESPNFJOUIF EFWFMPQNFOUPGNZPXO044QSPEVDUT FTQFDJBMMZQPXFSBTTFSU *XJMMFYQMBJOXIBUTFDPOETZTUFNTZOESPNFJTBOEIPXUPSFDPWFS GSPNJU CBTFEPONZPXOFYQFSJFODF ࣗ࡞044ϓϩμΫτɺಛʹQPXFSBTTFSUͷ։ൃʹ͓͍ͯయܕతͳʮηΧ ϯυγεςϜγϯυϩʔϜʯʹጶױ͠·ͨ͠ɻʮηΧϯυγεςϜγϯυ
ϩʔϜʯͱԿ͔ɺͲ͏͔ͬͯͦ͜ΒϦΧόϦʔ͢Δ͔ɺࣗͷମݧΛ ϕʔεʹઆ໌͠·͢ɻ BCTUSBDU -
QPXFSBTTFSU import assert from 'node:assert'; const truthy = '1'; const
falsy = 0; assert(truthy === falsy); -
QPXFSBTTFSUJTBUSBOTQJMFSBOEXPSLTMJLFBDIBSN assert(truthy === falsy) | | | | | 0
"1" false import assert from 'node:assert'; const truthy = '1'; const falsy = 0; assert(truthy === falsy); /P"1*JTUIFCFTU"1* -
2)PXEP*IBOEMFBOBTTFSUJPOFYQSFTTJPOUIBUTQBOTNVMUJQMFMJOFT 2ෳߦʹ·͕ͨΔද໌ࣜΛͲ͏͠·͠ΐ͏ "6TFDPEFHFOFSBUPSXIJMFUSBWFSTJOHXJUIZPVSUSBOTQJMFSTPUIBUZPVDBO HFUBTIPSUDBOPOJDBMJ[FETUSJOHPGUIFBTTFSUJPOFYQSFTTJPOPOBTJOHMF DPODJTFMJOF/BNFJUDBOPOJDBMJ[FEBTTFSUJPO5IFOFNCFEUIF DBOPOJDBMJ[FEBTTFSUJPOJOUIFHFOFSBUFEDPEFBOEQBTTJUUPUIFSVOUJNFTJEF "USBOTQJMFSͰUSBWFSTF͢ΔࡍʹίʔυɾδΣωϨʔλʔΛ༻͠ɺද໌ͷࣜΛҰߦ ʹ͘ਖ਼نԽͨ͠จࣈྻΛऔಘͰ͖ΔΑ͏ʹ͠·͠ΐ͏ɻ໊͚ΔͳΒʮਖ਼نԽ͞Ε
ͨΞαʔγϣϯʯͰ͢ɻͦͷਖ਼نԽ͞ΕͨΞαʔγϣϯΛੜͨ͠ίʔυͷதʹຒΊ ࠐΈɺ࣮ߦଆʹ͠·͢ɻ -
25IFQPTJUJPOJOUIFDBOPOJDBMJ[FEBTTFSUJPONBZCFEJ ff FSFOUGSPNUIF PSJHJOBMQPTJUJPO8IBUTIPVME*EP 2ਖ਼نԽ͞ΕͨΞαʔγϣϯͷதͷҐஔΦϦδφϧͷҐஔͱҟͳΔͣͰ͢ɻ Ͳ͏͠·͔͢ʁ "%F fi OFBMPHJDBMQBUIUPQPJOUUPBTQFDJ
fi DMPDBUJPOJOUIFBTTFSUJPO FYQSFTTJPO/BNFJUFTQBUI&BDIMPDBUJPOJOUIFBTTFSUJPOJTQPJOUFEUPCZ FTQBUI OPUQPTJUJPO "ΞαʔγϣϯͷதͷಛఆͷҐஔΛࢦࣔͨ͢͠ΊͷཧతͳύεΛఆٛ͠·͢ɻͦ ΕΛʮFTQBUIʯͱ໊͚·͠ΐ͏ɻΞαʔγϣϯͷதͷ֤෦ҐҐஔͰͳ͘ FTQBUIͰࢦࣔ͠͠·͢ɻ -
2)PXEP*HFUUIFBDUVBMMPDBUJPOGSPNUIFMPHJDBMFTQBUIBUSVOUJNF 2࣮ߦ࣌ʹཧతͳFTQBUI͔Β࣮ࡍͷҐஔΛऔಘ͢ΔʹͲ͏͠·͔͢ʁ "#VOEMFBQBSTFSBOEBWJTJUPSPOUIFSVOUJNFTJEF'JSTU QBSTFUIF DBOPOJDBMJ[FEBTTFSUJPOUP"45XJUIMPDBUJPOJOGPSNBUJPO BOEXIFOUSBWFSTJOH "45XJUIUIFWJTJUPS DPNQBSFFTQBUIXJUIUIFDVSSFOUUSBWFSTBMQBUIBUFBDI OPEFBOESFUVSOUIFMPDBUJPOJGNBUDIFE5IJTXJMMDSFBUFBNBQQJOHCFUXFFO
MPHJDBMFTQBUITBOEQIZTJDBMMPDBUJPOT "ϥϯλΠϜଆʹQBSTFSͱWJTJUPSΛόϯυϧ͠·͢ɻ·ͣਖ਼نԽ͞ΕͨΞαʔ γϣϯΛMPDBUJPOใ͖ͰQBSTF͠ɺWJTJUPSͰτϥόʔε͢Δࡍʹ֤ϊʔυͰ FTQBUIͱͷൺֱΛߦ͍ɺϚονͨ͠ΒͦͷҐஔΛฦ͢Α͏ʹ͠·͢ɻ͜ΕͰཧύε ͱཧҐஔͷϚοϐϯά͕Ͱ͖·͢ɻ -
8IBUBDMFWFSTPMVUJPO const truthy = '1'; const falsy = 0; assert(truthy
=== falsy); assert(truthy === falsy) | | | | | 0 "1" false -
2#VUCBCFMQBSTFSBOECBCFMUSBWFSTFEPOPUXPSLPO PME CSPXTFST TP*DBOUCVOEMFUIFNPOUIFSVOUJNFTJEF 2ͰCBCFMQBSTFSCBCFMUSBWFSTFʢݹ͍ʣϒϥβ্Ͱಈ͔ͳ͍ͷͰϥ ϯλΠϜଆʹόϯυϧͰ͖·ͤΜɻ "(JWFVQCVOEMJOHCBCFMQBSTFSBOECBCFMUSBWFSTF LFFQCVOEMJOH BDPSOBOEFTUSBWFSTFXIJDIXPSLTPOPMEFSCSPXTFST
"ͰCBCFMQBSTFSͱCBCFMUSBWFSTFΛόϯυϧ͢ΔͷఘΊͯɺݹ͍ϒϥ βͰಈ͘BDPSOͱFTUSBWFSTFͷΈΛόϯυϧ͠ଓ͚Δ͢Δ͜ͱʹ͠·͠ΐ͏ɻ -
2#VUXJUIPVU#BCFMQBSTFS *DBOOPUQBSTFDBOPOJDBMJ[FEBTTFSUJPOTDPOUBJOJOH +49FMFNFOUTBUSVOUJNF 2Ͱ#BCFMͷQBSTFS͕ͳ͍ͱ+49ཁૉؚ͕·Εͨਖ਼نԽ͞ΕͨΞαʔγϣϯΛ࣮ߦ࣌ʹ QBSTFͰ͖·ͤΜ "*OTUFBEPGQBSTJOHUIFNBUSVOUJNF QBSTFUIFDBOPOJDBMJ[FEBTTFSUJPOTUSJOH JUTFMGBUDPNQJMFUJNF UVSOJUJOUPB+40/TUSJOH FNCFEJUJOZPVSDPEF
BOEQBTTJU UPUIFSVOUJNFTJEF*GZPVIBWFUIBU+40/ USFBUJUBTBQBSTFE"45 "࣮ߦ࣌ʹQBSTF͢ΔͷͰͳ͘ɺਖ਼نԽ͞ΕͨΞαʔγϣϯจࣈྻࣗίϯύΠϧ࣌ ʹQBSTFͯ͠ɺͦΕΛ+40/จࣈྻʹͯ͠ίʔυʹຒΊࠐΈɺϥϯλΠϜଆʹ͠·͠ΐ ͏ɻͦͷ+40/͕͋Δ߹ͦΕΛύʔεࡁΈͷ"45ͱͯ͠ѻ͍·͠ΐ͏ɻ -
24PSSZ *XBTBDUVBMMZVTJOHUPLFOTFRVFODFTBTXFMMBT"45TUP fi OEPVU UIFFYBDUMPDBUJPOPGPQFSBUPSTBQQFBSJOHJOBTTFSUJPOFYQSFTTJPOT TJHI 2͝ΊΜͳ͍͞ɺࣜͷதʹొ͢Δԋࢉࢠͷਖ਼֬ͳҐஔΛௐΔͨΊʹɺ࣮ "45͚ͩͰͳ͘τʔΫϯྻ͍ͬͯ·ͨ͠ʢͨΊଉʣ "5IFO
UIFUPLFOTFRVFODFQBSTFECZCBCFMQBSTFSTIPVMEBMTPCF DPOWFSUFEUP+40/ FNCFEEFEJOUIFDPEF BOEQBTTFEUPUIFSVOUJNFTJEF "ͰCBCFMQBSTFS͕QBSTFͨ͠τʔΫϯྻ+40/Խͯ͠ίʔυʹຒΊࠐΈɺϥ ϯλΠϜଆʹ͠·͠ΐ͏ɻ -
\"body\"],\"DeclareFunction\":[\"id\"],\"DeclareInterface\":[\"id\",\"typeParameters\",\"extends\",\"mixins\",\"implements\",\"body\"],\"DeclareModule\":[\"id\",\"body\"],\"DeclareModuleExports [\"typeAnnotation\"],\"DeclareTypeAlias\":[\"id\",\"typeParameters\",\"right\"],\"DeclareOpaqueType\":[\"id\",\"typeParameters\",\"supertype\"],\"DeclareVariable\":[\"id\"],\"DeclareExportDecla [\"declaration\",\"specifiers\",\"source\"],\"DeclareExportAllDeclaration\":[\"source\"],\"DeclaredPredicate\":[\"value\"],\"ExistsTypeAnnotation\":[],\"FunctionTypeAnnotation\":[\"typeParamete \"params\",\"rest\",\"returnType\"],\"FunctionTypeParam\":[\"name\",\"typeAnnotation\"],\"GenericTypeAnnotation\":[\"id\",\"typeParameters\"],\"InferredPredicate\":[],\"InterfaceExtends\":[\"id \"typeParameters\"],\"InterfaceDeclaration\":[\"id\",\"typeParameters\",\"extends\",\"mixins\",\"implements\",\"body\"],\"InterfaceTypeAnnotation\":[\"extends\",\"body\"],\"IntersectionTypeAnno [\"types\"],\"MixedTypeAnnotation\":[],\"EmptyTypeAnnotation\":[],\"NullableTypeAnnotation\":[\"typeAnnotation\"],\"NumberLiteralTypeAnnotation\":[],\"NumberTypeAnnotation\":[],\"ObjectTypeAnno [\"properties\",\"indexers\",\"callProperties\",\"internalSlots\"],\"ObjectTypeInternalSlot\":[\"id\",\"value\",\"optional\",\"static\",\"method\"],\"ObjectTypeCallProperty\":[\"value\"], \"ObjectTypeIndexer\":[\"id\",\"key\",\"value\",\"variance\"],\"ObjectTypeProperty\":[\"key\",\"value\",\"variance\"],\"ObjectTypeSpreadProperty\":[\"argument\"],\"OpaqueType\":[\"id\",\"typePa \"supertype\",\"impltype\"],\"QualifiedTypeIdentifier\":[\"id\",\"qualification\"],\"StringLiteralTypeAnnotation\":[],\"StringTypeAnnotation\":[],\"ThisTypeAnnotation\":[],\"TupleTypeAnnotation [\"types\"],\"TypeofTypeAnnotation\":[\"argument\"],\"TypeAlias\":[\"id\",\"typeParameters\",\"right\"],\"TypeAnnotation\":[\"typeAnnotation\"],\"TypeCastExpression\":[\"expression\",\"typeAnno
\"TypeParameter\":[\"bound\",\"default\",\"variance\"],\"TypeParameterDeclaration\":[\"params\"],\"TypeParameterInstantiation\":[\"params\"],\"UnionTypeAnnotation\":[\"types\"],\"Variance\":[], \"VoidTypeAnnotation\":[],\"JSXAttribute\":[\"name\",\"value\"],\"JSXClosingElement\":[\"name\"],\"JSXElement\":[\"openingElement\",\"children\",\"closingElement\"],\"JSXEmptyExpression\":[], \"JSXExpressionContainer\":[\"expression\"],\"JSXSpreadChild\":[\"expression\"],\"JSXIdentifier\":[],\"JSXMemberExpression\":[\"object\",\"property\"],\"JSXNamespacedName\":[\"namespace\",\"nam \"JSXOpeningElement\":[\"name\",\"attributes\"],\"JSXSpreadAttribute\":[\"argument\"],\"JSXText\":[],\"JSXFragment\":[\"openingFragment\",\"children\",\"closingFragment\"],\"JSXOpeningFragment\ \"JSXClosingFragment\":[],\"Noop\":[],\"ParenthesizedExpression\":[\"expression\"],\"AwaitExpression\":[\"argument\"],\"BindExpression\":[\"object\",\"callee\"],\"ClassProperty\":[\"key\",\"val \"typeAnnotation\",\"decorators\"],\"OptionalMemberExpression\":[\"object\",\"property\"],\"PipelineTopicExpression\":[\"expression\"],\"PipelineBareFunction\":[\"callee\"], \"PipelinePrimaryTopicReference\":[],\"OptionalCallExpression\":[\"callee\",\"arguments\",\"typeParameters\",\"typeArguments\"],\"ClassPrivateProperty\":[\"key\",\"value\"],\"ClassPrivateMethod [\"key\",\"params\",\"body\",\"decorators\",\"returnType\",\"typeParameters\"],\"Import\":[],\"Decorator\":[\"expression\"],\"DoExpression\":[\"body\"],\"ExportDefaultSpecifier\":[\"exported\"] \"ExportNamespaceSpecifier\":[\"exported\"],\"PrivateName\":[\"id\"],\"BigIntLiteral\":[],\"TSParameterProperty\":[\"parameter\"],\"TSDeclareFunction\":[\"id\",\"typeParameters\",\"params\", \"returnType\"],\"TSDeclareMethod\":[\"decorators\",\"key\",\"typeParameters\",\"params\",\"returnType\"],\"TSQualifiedName\":[\"left\",\"right\"],\"TSCallSignatureDeclaration\":[\"typeParamete \"parameters\",\"typeAnnotation\"],\"TSConstructSignatureDeclaration\":[\"typeParameters\",\"parameters\",\"typeAnnotation\"],\"TSPropertySignature\":[\"key\",\"typeAnnotation\",\"initializer\" \"TSMethodSignature\":[\"key\",\"typeParameters\",\"parameters\",\"typeAnnotation\"],\"TSIndexSignature\":[\"parameters\",\"typeAnnotation\"],\"TSAnyKeyword\":[],\"TSUnknownKeyword\":[], \"TSNumberKeyword\":[],\"TSObjectKeyword\":[],\"TSBooleanKeyword\":[],\"TSStringKeyword\":[],\"TSSymbolKeyword\":[],\"TSVoidKeyword\":[],\"TSUndefinedKeyword\":[],\"TSNullKeyword\":[],\"TSNever [],\"TSThisType\":[],\"TSFunctionType\":[\"typeParameters\",\"typeAnnotation\"],\"TSConstructorType\":[\"typeParameters\",\"typeAnnotation\"],\"TSTypeReference\":[\"typeName\",\"typeParameters\ \"TSTypePredicate\":[\"parameterName\",\"typeAnnotation\"],\"TSTypeQuery\":[\"exprName\"],\"TSTypeLiteral\":[\"members\"],\"TSArrayType\":[\"elementType\"],\"TSTupleType\":[\"elementTypes\"], \"TSOptionalType\":[\"typeAnnotation\"],\"TSRestType\":[\"typeAnnotation\"],\"TSUnionType\":[\"types\"],\"TSIntersectionType\":[\"types\"],\"TSConditionalType\":[\"checkType\",\"extendsType\", \"trueType\",\"falseType\"],\"TSInferType\":[\"typeParameter\"],\"TSParenthesizedType\":[\"typeAnnotation\"],\"TSTypeOperator\":[\"typeAnnotation\"],\"TSIndexedAccessType\":[\"objectType\",\"in \"TSMappedType\":[\"typeParameter\",\"typeAnnotation\"],\"TSLiteralType\":[\"literal\"],\"TSExpressionWithTypeArguments\":[\"expression\",\"typeParameters\"],\"TSInterfaceDeclaration\":[\"id\", \"typeParameters\",\"extends\",\"body\"],\"TSInterfaceBody\":[\"body\"],\"TSTypeAliasDeclaration\":[\"id\",\"typeParameters\",\"typeAnnotation\"],\"TSAsExpression\":[\"expression\",\"typeAnnota \"TSTypeAssertion\":[\"typeAnnotation\",\"expression\"],\"TSEnumDeclaration\":[\"id\",\"members\"],\"TSEnumMember\":[\"id\",\"initializer\"],\"TSModuleDeclaration\":[\"id\",\"body\"],\"TSModule [\"body\"],\"TSImportEqualsDeclaration\":[\"id\",\"moduleReference\"],\"TSExternalModuleReference\":[\"expression\"],\"TSNonNullExpression\":[\"expression\"],\"TSExportAssignment\":[\"expressio \"TSNamespaceExportDeclaration\":[\"id\"],\"TSTypeAnnotation\":[\"typeAnnotation\"],\"TSTypeParameterInstantiation\":[\"params\"],\"TSTypeParameterDeclaration\":[\"params\"],\"TSTypeParameter\" [\"constraint\",\"default\"]}"; (0, _powerAssert.default)(_rec8._expr(_rec8._capt(_rec8._capt(_rec8._capt(_rec8._capt((0, _enzyme.mount)(_react.default.createElement(_Foo.default, null)), "arguments/0/left/object/callee object").find('.foo'), "arguments/0/left/object").length, "arguments/0/left") === 1, "arguments/0"), { content: "assert(mount(<Foo />).find('.foo').length === 1)", filepath: "test/fixtures/React/fixture.js", line: 60, ast: "{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"assert\",\"range\":[0,6]},\"arguments\":[{\"type\":\"BinaryExpression\",\"operator\":\"===\",\"left\":{ \"MemberExpression\",\"object\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"MemberExpression\",\"object\":{\"type\":\"CallExpression\",\"callee\":{\"type\":\"Identifier\",\"name\":\"mou \"range\":[7,12]},\"arguments\":[{\"type\":\"JSXElement\",\"openingElement\":{\"type\":\"JSXOpeningElement\",\"name\":{\"type\":\"JSXIdentifier\",\"name\":\"Foo\",\"range\":[14,17]},\"attribute \"selfClosing\":true,\"range\":[13,20]},\"closingElement\":null,\"children\":[],\"range\":[13,20]}],\"range\":[7,21]},\"property\":{\"type\":\"Identifier\",\"name\":\"find\",\"range\":[22,26]}, \"computed\":false,\"range\":[7,26]},\"arguments\":[{\"type\":\"StringLiteral\",\"value\":\".foo\",\"range\":[27,33]}],\"range\":[7,34]},\"property\":{\"type\":\"Identifier\",\"name\":\"length\ \"range\":[35,41]},\"computed\":false,\"range\":[7,41]},\"right\":{\"type\":\"NumericLiteral\",\"value\":1,\"range\":[46,47]},\"range\":[7,47]}],\"range\":[0,48]}", tokens: "[{\"type\":{\"label\":\"name\"},\"value\":\"assert\",\"range\":[0,6]},{\"type\":{\"label\":\"(\"},\"range\":[6,7]},{\"type\":{\"label\":\"name\"},\"value\":\"mount\",\"range\": {\"type\":{\"label\":\"(\"},\"range\":[12,13]},{\"type\":{\"label\":\"jsxTagStart\"},\"range\":[13,14]},{\"type\":{\"label\":\"jsxName\"},\"value\":\"Foo\",\"range\":[14,17]},{\"type\":{\"label \"value\":\"/\",\"range\":[18,19]},{\"type\":{\"label\":\"jsxTagEnd\"},\"range\":[19,20]},{\"type\":{\"label\":\")\"},\"range\":[20,21]},{\"type\":{\"label\":\".\"},\"range\":[21,22]},{\"type\" {\"label\":\"name\"},\"value\":\"find\",\"range\":[22,26]},{\"type\":{\"label\":\"(\"},\"range\":[26,27]},{\"type\":{\"label\":\"string\"},\"value\":\".foo\",\"range\":[27,33]},{\"type\":{\"lab \"},\"range\":[33,34]},{\"type\":{\"label\":\".\"},\"range\":[34,35]},{\"type\":{\"label\":\"name\"},\"value\":\"length\",\"range\":[35,41]},{\"type\":{\"label\":\"==/!=\"},\"value\":\"===\",\" *UXPSLT CVU -
$BTFTUVEZ4USJOHXJEUI const truthy = '真理'; const falsy = 0; assert(truthy
=== falsy); assert(truthy === falsy) | | | | | 0 "真理" false (BQ -
2)PXEPZPVDBMDVMBUFTUSJOHXJEUIXIFOUIFDBQUVSFEWBSJBCMFDPOUBJOTGVMM XJEUITUSJOHT GPSFYBNQMF ,BOKJDIBSBDUFST 2Ωϟϓνϟͨ͠ม͕ྫ͑ࣈͷΑ͏ͳશ֯จࣈྻΛؚΜͰ͍Δ߹ͷจࣈ෯ܭࢉΛ Ͳ͏͠·͔͢ʁ "6TF&BTU"TJBO$IBSBDUFS8JEUIGPSDBMDVMBUJPO&BTU"TJBO8JEUIJTPOFPG UIF6OJDPEF4UBOEBSE"OOFYFT XIJDIEF
fi OFTUIFA&BTU@"TJBO@8JEUIAJOGPSNBUJWF QSPQFSUZUIBUHJWFTIJOUTBCPVUUIFDIBSBDUFSXJEUIPGFBDIDIBSBDUFSJOUIF 6OJDPEF4UBOEBSE "ʮ౦ΞδΞͷจࣈ෯ʯΛܭࢉʹ͍·͢ɻʮ౦ΞδΞͷจࣈ෯ʯɺ6OJDPEFඪ४ͷෟ ଐॻͷҰͭͰɺ6OJDPEFʹऩ͞Ε͍ͯΔ֤จࣈͷจࣈ෯ʹؔ͢ΔώϯτΛ༩͑Δ A&BTU@"TJBO@8JEUIAࢀߟಛੑΛఆΊ͍ͯ·͢ɻ -
-PPLTHPPE const truthy = '真理'; const falsy = 0; assert(truthy
=== falsy); assert(truthy === falsy) | | | | | 0 "真理" false (PPE -
-PPLTHPPE const family = '👨'; const falsy = 0; assert(family
=== falsy); assert(family === falsy) | | | | | 0 "👨" false -
FYQFDUFE const family = '👨👩'; const falsy = 0; assert(family
=== falsy); assert(family === falsy) | | | | | 0 "👨👩" false -
8SFTUMJOHXJUIFNPKJTBOEBNCJHVPVTDIBSBDUFST export function widthOf (str: string): KnownWidth | UnknownWidth {
const segmenter = new Intl.Segmenter(); const emojiRe = emojiRegex(); let width = 0; let unknown = false; let emoji = 0; let ambiguous = 0; let neutral = 0; for (const { segment: seg } of segmenter.segment(str)) { const code = easta(seg); switch (code) { case 'F': width += 2; break; case 'H': width += 1; break; case 'A': unknown = true; ambiguous += 1; width += 2; break; case 'W': if (emojiRe.test(seg)) { unknown = true; emoji += 1; } width += 2; break; case 'Na': width += 1; break; case 'N': unknown = true; -
8IFOPOFJTEFTJHOJOHUIFTVDDFTTPSUPBSFMBUJWFMZTNBMM FMFHBOU BOE TVDDFTTGVMTZTUFN UIFSFJTBUFOEFODZUPCFDPNFHSBOEJPTFJOPOFT TVDDFTTBOEEFTJHOBOFMFQIBOUJOFGFBUVSFMBEFONPOTUSPTJUZ 5IFUFSNXBT fi STUVTFECZ'SFE#SPPLTJOIJTDMBTTJD5IF.ZUIJDBM.BO .POUI&TTBZTPO4PGUXBSF&OHJOFFSJOH
"EEJTPO8FTMFZ ൺֱతখ͘͞ΤϨΨϯτͰޭΛऩΊͨγεςϜͷޙܧγεςϜΛઃܭ͢Δ߹ ʹɺͬͱޭ͠Α͏ͱࢥͬͯɺฒʢFMFQIBOUJOFʣͰػೳ͕Γͩ͘͞Μͷ Խ͚Λઃܭͯ͠͠·͏߹͕͋Δɻ ͜ͷ༻ޠɺ'SFE#SPPLTͷ໊ஶʰਓ݄ͷਆʱͰॳΊͯΘΕͨɻ IUUQDBUCPSHKBSHPOIUNM4TFDPOETZTUFNF ff FDUIUNM TFDPOETZTUFNF ff FDU TZOESPNF O -
"OBSDIJUFDUT fi STUXPSLJTBQUUPCFTQBSFBOEDMFBO)FLOPXTIFEPFTOULOPXXIBUIFTEPJOH TPIFEPFTJUDBSFGVMMZBOEXJUIHSFBUSFTUSBJOU"TIFEFTJHOTUIF fi STUXPSL GSJMMBGUFSGSJMMBOE FNCFMMJTINFOUBGUFSFNCFMMJTINFOUPDDVSUPIJN5IFTFHFUTUPSFEBXBZUPCFVTFEOFYUUJNF ΞʔΩςΫτɺ࠷ॳͷࣄͰɺ੍ࣗͯ͠աͳͷΛ͚Ճ͑ͳ͍͜ͱ͕ଟ͍ɻࣗͰԿΛ͍ͯ͠Δͷ
͔͕͔Βͳ͍͜ͱΛೝ͍ࣝͯ͠ΔͷͰɺԿࣄ৻ॏ͔ͭेͳઅΛͬͯߦ͏ɻ࠷ॳͷࣄΛσβΠϯ ͍ͯ͘͠ͱ͖ɺ͔࣍Β࣍ͱϑϦϧΒ০ΓΒ༨ܭͳͷ͕ࢥ͍ු͔ΜͰ͘Δͷ͕ͩɺͦΕʮ࣍ճʯ ͓͏ͱऔ͓ͬͯ͘ɻ 4PPOFSPSMBUFSUIF fi STUTZTUFNJT fi OJTIFE BOEUIFBSDIJUFDU XJUI fi SNDPO fi EFODFBOEB EFNPOTUSBUFENBTUFSZPGUIBUDMBTTPGTZTUFNT JTSFBEZUPCVJMEBTFDPOETZTUFN ͦ͏͜͏͢Δ͏ͪʹ࠷ॳͷγεςϜ͕ͯ͠ɺΞʔΩςΫτʹ֬ݻͨΔࣗ৴ͱͦͷखͷΫϥεͷγες Ϝʹର͢Δܦݧ͕උΘΓɺೋͷγεςϜͷ։ൃͷ४උ͕Ͱ͖Δɻ IUUQTMFBSOJOHPSFJMMZDPNMJCSBSZWJFXNZUIJDBMNBONPOUIUIF fi STUXPSLJTBQUUPCFTQBSFBOEDMFBO -
5IJTTFDPOEJTUIFNPTUEBOHFSPVTTZTUFNBNBOFWFSEFTJHOT ͜ͷೋͷγεςϜͦ͜ɺσβΠϯ͢Δͷͷ͏ͪͰ࠷ةݥͳͷͰ͋Δɻ 5IFHFOFSBMUFOEFODZJTUPPWFSEFTJHOUIFTFDPOETZTUFN VTJOHBMMUIF JEFBTBOEGSJMMTUIBUXFSFDBVUJPVTMZTJEFUSBDLFEPOUIF fi STUPOF5IF SFTVMU BT0WJETBZT JTBCJHQJMF
ҰൠతʹɺೋͷγεςϜΛσβΠϯ͠ա͗Δ͕͋Δɻ͜ͷͱ͖ɺ࠷ॳͷ γεςϜσβΠϯͰҙਂ͘֎ͨ͋͠ΒΏΔΞΠσΞͱ০Λ͏ɻ݁ՌΦ ϏσΟεͷݴͬͨΑ͏ʹʮࢁʯͱͳΔɻ IUUQTMFBSOJOHPSFJMMZDPNMJCSBSZWJFXNZUIJDBMNBONPOUIUIF 5IFHFOFSBMUFOEFODZJTUPPWFSEFTJHOUIFTFDPOETZTUFN -
*GUIFSFJTO`UBTJNQMFTPMVUJPOUPBQSPCMFN JOUFSSPHBUFUIFQSPCMFN CFGPSFZPVBDDFQUBDPNQMJDBUFETPMVUJPO*TUIFQSPCMFNZPV`SFUSZJOH UPTPMWFBDUVBMMZUIFQSPCMFNUIBUOFFETTPMWJOH 0SBSFZPVNBLJOH VOOFDFTTBSZBTTVNQUJPOTBCPVUUIFQSPCMFNUIBUBSFDPNQMJDBUJOH ZPVSTPMVUJPO ʹ୯७ͳղ๏͕ଘࡏ͠ͳ͍ΜͩͬͨΒɺෳࡶͳղ๏Λड͚ೖΕΔલʹɺ ʹର͠ɺ͍Λ͔͚͛ͯݕ౼ͯ͠ΈΔ͖ͩɻղ͜͏ͱ͍ͯ͠Δͦͷ
ɺຊʹղ͖͘ͳΜͩΖ͏͔ɻ͋Δ͍ɺղ๏Λෳࡶʹ͢ΔΑ͏ ͳɺʹؔ͢ΔෆཁͳԾఆΛઃ͚ͯ͠·͍ͬͯͳ͍ͩΖ͏͔ɻ IUUQTMFBSOJOHPSFJMMZDPNMJCSBSZWJFXUIFSVMFTPG 4PNFUJNFT*U`T#FUUFSUP4JNQMJGZUIF1SPCMFN3BUIFSUIBOUIF4PMVUJPO -
)PXEPFTUIFBSDIJUFDUBWPJEUIFTFDPOETZTUFNF ff FDU 8FMM PCWJPVTMZIFDBOU TLJQIJTTFDPOETZTUFN#VUIFDBOCFDPOTDJPVTPGUIFQFDVMJBSIB[BSETPGUIBU TZTUFN BOEFYFSUFYUSBTFMGEJTDJQMJOFUPBWPJEGVODUJPOBMPSOBNFOUBUJPOBOEUP BWPJEFYUSBQPMBUJPOPGGVODUJPOTUIBUBSFPCWJBUFECZDIBOHFTJOBTTVNQUJPOTBOE QVSQPTFT
ΞʔΩςΫτɺͲͷΑ͏ʹͯ͠ηΧϯυγεςϜީ܈Λճආ͢ΕΑ͍ͩΖ͏͔ɻ ͱ͔͘ɺೋͷγεςϜΛεΩοϓ͢Δ͜ͱͰ͖ͳ͍ɻ͕ɺ ηΧϯυγεςϜݻ༗ͷةݥੑʹҙͯ͠ɺػೳΛ০Γ͚ͨΓɺ લఏతͷมԽʹΑͬͯෆཁʹͳͬͯ͠·͏ػೳΛิͬͨΓ͠ͳ͍Α͏ɺ े੍ࣗ৺Λ͑Δ͜ͱՄೳͰ͋Δɻ IUUQTMFBSOJOHPSFJMMZDPNMJCSBSZWJFXNZUIJDBMNBONPOUIUIF $BOUTLJQTFDPOETZTUFN -
5IFNPTUJNQPSUBOUBOEFMVTJWFTLJMMJTEFWFMPQJOHKVEHFNFOUBCPVU TZTUFNEFTJHOTPZPVDBODIPPTFTPMVUJPOTUIBUBSFBTTJNQMFBT QPTTJCMF CVUOPTJNQMFS5IJTJTWFSZIBSEUPUFBDIBOEMFBSOFE NPTUMZUISPVHIFYQFSJFODF Ұ൪ॏཁͰҰ൪͔͍ͬͳεΩϧγεςϜΛઃܭ͢ΔͨΊͷஅྗͩɻ ݶΓͳ͘γϯϓϧ͕ͩγϯϓϧ͗͢ͳ͍σβΠϯ BTTJNQMFBTQPTTJCMF CVUOPTJNQMFS ͱ͍͏ͷͳ͔ͳ͔ڭ͑ΒΕΔͷͰͳ͘ɺ
େํܦݧΛॏͶ֮ͯ͑Δͷͩɻ BTTJNQMFBTQPTTJCMF CVUOPTJNQMFS IUUQTXXXRVPSBDPN)PXEJE&WBO1SJFTUMFZMFBSOUPQSPHSBN -
*TV ff FSFEGSPNUIFUZQJDBMTFDPOETZTUFNTZOESPNFJOUIFEFWFMPQNFOUPGNZPXO 044QSPEVDUT FTQFDJBMMZQPXFSBTTFSU *XJMMFYQMBJOXIBUTFDPOETZTUFNTZOESPNFJTBOEIPXUPSFDPWFSGSPNJU CBTFEPONZ PXOFYQFSJFODF ࣗ࡞044ϓϩμΫτɺಛʹQPXFSBTTFSUͷ։ൃʹ͓͍ͯయܕతͳʮηΧϯυγεςϜγϯυ ϩʔϜʯʹጶױ͠·ͨ͠ɻʮηΧϯυγεςϜγϯυϩʔϜʯͱԿ͔ɺͲ͏͔ͬͯͦ͜ΒϦΧ
όϦʔ͢Δ͔ɺࣗͷମݧΛϕʔεʹઆ໌͠·͢ɻ *OBEEJUJPO BOFXWFSTJPOXJMMCFSFMFBTFEPOUIFTBNFEBZ ͋Θͤͯɺ৽͍͠όʔδϣϯΛϦϦʔε͢Δ༧ఆͰ͢ BCTUSBDU -
*TV ff FSFEGSPNUIFUZQJDBMTFDPOETZTUFNTZOESPNFJOUIFEFWFMPQNFOUPGNZPXO 044QSPEVDUT FTQFDJBMMZQPXFSBTTFSU *XJMMFYQMBJOXIBUTFDPOETZTUFNTZOESPNFJTBOEIPXUPSFDPWFSGSPNJU CBTFEPONZ PXOFYQFSJFODF ࣗ࡞044ϓϩμΫτɺಛʹQPXFSBTTFSUͷ։ൃʹ͓͍ͯయܕతͳʮηΧϯυγεςϜγϯυ ϩʔϜʯʹጶױ͠·ͨ͠ɻʮηΧϯυγεςϜγϯυϩʔϜʯͱԿ͔ɺͲ͏͔ͬͯͦ͜ΒϦΧ
όϦʔ͢Δ͔ɺࣗͷମݧΛϕʔεʹઆ໌͠·͢ɻ *OBEEJUJPO BOFXWFSTJPOXJMMCFSFMFBTFEPOUIFTBNFEBZ ͋Θͤͯɺ৽͍͠όʔδϣϯΛϦϦʔε͢Δ༧ఆͰ͢ BCTUSBDU