Slide 1

Slide 1 text

,PUMJOͱ"OESPJEͰ͸͡ΊΔ ςετۦಈ։ൃ τχΦ 2024.7.10

Slide 2

Slide 2 text

ࣗݾ঺հ • τχΦʢ!UPOJPOBHBV[[Jʣ • "OESPJE&OHJOFFS!DZCP[V

Slide 3

Slide 3 text

ൃද಺༰ • ҎԼͷϒϩάͷ಺༰Ͱ͢ʂ IUUQTCMPHDZCP[VJPFOUSZ

Slide 4

Slide 4 text

"OESPJEͰςετۦಈ։ൃ 5%% ࢝Ί·ͨ͠ʂ

Slide 5

Slide 5 text

5%%ͱ͸ • ಈ࡞͢Δ͖Ε͍ͳίʔυΛ࡞ΔͨΊʹɺςετʹΑͬͯ։ൃΛ ਪ͠ਐΊΔ

Slide 6

Slide 6 text

5%%ಋೖͷഎܠ • ϨΨγʔίʔυ͍ͬͺ͍ʜ ςετ࡞Γ͍ͨʂ ॻ͖׵͍͑ͨʂ ςετ͕ͳͯ͘ෆ҆ʜ ςετ࡞ΕΔߏ଄͡Όͳ͍ʜ

Slide 7

Slide 7 text

৽͍͠Ϟδϡʔϧ͙Β͍͸ ςετॻ͜͏ʂ

Slide 8

Slide 8 text

5%%ಋೖͷഎܠ • 5%%Ͱ࡞Δͱ oςετ͠΍͘͢ͳΔΒ͍͠ʂ oίʔυ΋៉ྷʹͳΔΒ͍͠ʂ oґଘϞδϡʔϧ ϨΨγʔίʔυ ΋গͣͭ͠ςετͰ͖ͦ͏ʂ 5FTUBCMF .PEVMF -FHBDZ .PEVMF ςετର৅

Slide 9

Slide 9 text

ࠓճ͸ɺ5%%ͷςετ͸ࣗಈςετ ͱ͍͏લఏͰ࿩͠·͢ʂ

Slide 10

Slide 10 text

5%%ͷྲྀΕ

Slide 11

Slide 11 text

5%%ͷ࣮૷ྫʂ

Slide 12

Slide 12 text

ϩάΠϯը໘ʹϔϧϓϦϯΫΛ௥Ճ • ϢʔβʔετʔϦʔ o ϩάΠϯૢ࡞Λߦ͏Ϣʔβʔͱͯ͠ɺϩάΠϯૢ࡞ʹͭ·͍ͣͨͱ͖ɺ ͦͷը໘্͔Β௚઀ؔ࿈͢ΔϔϧϓϖʔδΛ։͖͍ͨɻ o ͳͥͳΒɺٙ໰ͷ౴͑ΛҰ͔Β୳͢खؒΛ͔͚ͣʹ ؔ࿈͢ΔϔϧϓϖʔδΛࢀর͠ɺϩάΠϯΛ׬ྃͤ͞ɺ ຊདྷ΍Γ͍ͨۀ຿ΛਐΊΒΕΔ͔Βͩɻ o • ड͚ೖΕ৚݅ o ϩάΠϯը໘͔ΒϔϧϓϖʔδΛ։͚Δ͜ͱ o ୺຤ͷݴޠઃఆʹԠͯ͡ϔϧϓͷݴޠΛม͑Δ͜ͱ o ઀ଓઌ͝ͱʹఏڙαʔϏε͕ҟͳΔͨΊɺ઀ଓઌʹԠͯ͡ϔϧϓͷ಺༰Λม͑Δ͜ͱ

Slide 13

Slide 13 text

઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ☑೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ☑ӳޠ೔ຊαʔόʔͷ૊߹ͤ ☑؆ମࣈ೔ຊαʔόʔͷ૊߹ͤ ☑ൟମࣈ೔ຊαʔόʔͷ૊߹ͤ ☑ͦͷଞ೔ຊαʔόʔͷ૊߹ͤ ☑೔ຊޠถࠃαʔόʔͷ૊߹ͤ ☑ӳޠถࠃαʔόʔͷ૊߹ͤ ☑؆ମࣈถࠃαʔόʔͷ૊߹ͤ ☑ൟମࣈถࠃαʔόʔͷ૊߹ͤ ☑ͦͷଞถࠃαʔόʔͷ૊߹ͤ ☑઀ଓઌΛ൑ఆͰ͖ͳ͔ͬͨ৔߹ɺ೔ຊޠ೔ຊαʔόʔͷ૊߹ͤͱͳΔ ☑ ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜ੒ͨ͠63-Λ $ISPNFʹ౉͠ɺϔϧϓϖʔδΛ։͘ CHECK LIST

Slide 14

Slide 14 text

// テスト @Test fun `日本語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given(前提条件) val language = "ja" val country = "JP" // When(操作) val url = get(language = language, country = country) // Then(結果) Truth.assertThat(url).isEqualTo("https://localhost/help/ja/JP/") } // 実装 fun get(language: String, country: String): String { return "" } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ❌೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ RED

Slide 15

Slide 15 text

// テスト @Test fun `日本語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given(前提条件) val language = "ja" val country = "JP" // When(操作) val url = get(language = language, country = country) // Then(結果) Truth.assertThat(url).isEqualTo("https://localhost/help/ja/JP/") } // 実装 fun get(language: String, country: String): String { return "https://localhost/help/ja/JP/" } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ GREEN

Slide 16

Slide 16 text

// テスト @Test fun `日本語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given(前提条件) val language = "ja" val country = "JP" // When(操作) val url = get(language = language, country = country) // Then(結果) Truth.assertThat(url).isEqualTo("https://localhost/help/ja/JP/") } @Test fun `英語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given val language = "en" val country = "JP" // When val url = get(language = language, country = country) // Then Truth.assertThat(url).isEqualTo("https://localhost/help/en/JP/") } // 実装 fun get(language: String, country: String): String { return "https://localhost/help/ja/JP/" } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ❌ ӳޠ೔ຊαʔόʔͷ૊߹ͤ RED

Slide 17

Slide 17 text

// テスト @Test fun `日本語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given(前提条件) val language = "ja" val country = "JP" // When(操作) val url = get(language = language, country = country) // Then(結果) Truth.assertThat(url).isEqualTo("https://localhost/help/ja/JP/") } @Test fun `英語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given val language = "en" val country = "JP" // When val url = get(language = language, country = country) // Then Truth.assertThat(url).isEqualTo("https://localhost/help/en/JP/") } // 実装 fun get(language: String, country: String): String { if (language == "en") { return "https://localhost/help/en/JP/" } else { return "https://localhost/help/ja/JP/" } } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ ӳޠ೔ຊαʔόʔͷ૊߹ͤ GREEN

Slide 18

Slide 18 text

// テスト @Test fun `日本語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given(前提条件) val language = "ja" val country = "JP" // When(操作) val url = generateHelpLink(language = language, country = country) // Then(結果) Truth.assertThat(url).isEqualTo("https://localhost/help/ja/JP/") } @Test fun `英語 / 日本サーバー の組合せで、ヘルプページのURLを生成する` { // Given val language = "en" val country = "JP" // When val url = generateHelpLink(language = language, country = country) // Then Truth.assertThat(url).isEqualTo("https://localhost/help/en/JP/") } // 実装 fun generateHelpLink(language: String, country: String): String { val helpPath = when (language) { "en" -> "en/JP" else -> "ja/JP" } return "https://localhost/help/$helpPath/" } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ ӳޠ೔ຊαʔόʔͷ૊߹ͤ REFACTOR

Slide 19

Slide 19 text

ͭͣͭςετɺ࣮૷ɺϦϑΝΫλϦϯάʂ RED GREEN REFACTOR

Slide 20

Slide 20 text

઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ӳޠ೔ຊαʔόʔͷ૊߹ͤ ✅؆ମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ൟମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ͦͷଞ೔ຊαʔόʔͷ૊߹ͤ ✅೔ຊޠถࠃαʔόʔͷ૊߹ͤ ✅ӳޠถࠃαʔόʔͷ૊߹ͤ ✅؆ମࣈถࠃαʔόʔͷ૊߹ͤ ✅ൟମࣈถࠃαʔόʔͷ૊߹ͤ ✅ͦͷଞถࠃαʔόʔͷ૊߹ͤ ☑ ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜ੒ͨ͠63-Λ $ISPNFʹ౉͠ɺϔϧϓϖʔδΛ։͘

Slide 21

Slide 21 text

઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ӳޠ೔ຊαʔόʔͷ૊߹ͤ ✅؆ମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ൟମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ͦͷଞ೔ຊαʔόʔͷ૊߹ͤ ✅೔ຊޠถࠃαʔόʔͷ૊߹ͤ ✅ӳޠถࠃαʔόʔͷ૊߹ͤ ✅؆ମࣈถࠃαʔόʔͷ૊߹ͤ ✅ൟମࣈถࠃαʔόʔͷ૊߹ͤ ✅ͦͷଞถࠃαʔόʔͷ૊߹ͤ ☑ ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜ੒ͨ͠63-Λ $ISPNFʹ౉͠ɺϔϧϓϖʔδΛ։͘

Slide 22

Slide 22 text

"OESPJEͷৼΔ෣͍Λ 5%%͠Α͏ʂ

Slide 23

Slide 23 text

• "OESPJE͸ςετࢧԉπʔϧ͕ॆ࣮ʂ oϢχοτςετͳΒ3PCPMFDUSJDɺ$PNQPTF6*5FTU oBOESPJE5FTUͳΒ&TQSFTTPɺ6*"VUPNBUPS IUUQTHJUIVCDPNSPCPMFDUSJDSPCPMFDUSJD IUUQTEFWFMPQFSBOESPJEDPNEFWFMPQVJDPNQPTFUFTUJOH IUUQTEFWFMPQFSBOESPJEDPNUSBJOJOHUFTUJOHFTQSFTTP IUUQTEFWFMPQFSBOESPJEDPNUSBJOJOHUFTUJOHPUIFSDPNQPOFOUTVJBVUPNBUPS

Slide 24

Slide 24 text

·ͣ͸'SBHNFOUͷ৔߹ ·ͩ·ͩݱ໾ͷϨΨγʔʁ6*

Slide 25

Slide 25 text

private val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().start().resume().get() // テスト @Test fun `ログイン画面でヘルプリンクが押されると、生成したURLをChromeに渡し、ヘルプページを開く`() { // Given (前提条件: ログイン画面を開いている) val fragment = Fragment() activity.add(fragment) val helpLinkUrl = generateHelpLink(language = "ja", country = "JP") // When (操作:ヘルプリンクを押す) fragment.openBrowser(url = helpLinkUrl) // Then (結果:ChromeがURLを開く) val openedActivity = Shadows.shadowOf(activity).nextStartedActivity val openedPackage = openedActivity.getPackage() Truth.assertThat(openedPackage).isEqualTo("com.android.chrome") val openedUrlString = openedActivity.data.toString() Truth.assertThat(openedUrlString).isEqualTo(helpLinkUrl) } // 実装(ヘルプリンクが押されたときの処理) fun Fragment.openBrowser(url: String) { } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ӳޠ೔ຊαʔόʔͷ૊߹ͤ ✅؆ମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ൟମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ͦͷଞ೔ຊαʔόʔͷ૊߹ͤ ✅೔ຊޠถࠃαʔόʔͷ૊߹ͤ ✅ӳޠถࠃαʔόʔͷ૊߹ͤ ✅؆ମࣈถࠃαʔόʔͷ૊߹ͤ ✅ൟମࣈถࠃαʔόʔͷ૊߹ͤ ✅ͦͷଞถࠃαʔόʔͷ૊߹ͤ ❌ ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜ੒ͨ͠63-Λ $ISPNFʹ౉͠ɺϔϧϓϖʔδΛ։͘ RED

Slide 26

Slide 26 text

private val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().start().resume().get() // テスト @Test fun `ログイン画面でヘルプリンクが押されると、生成したURLをChromeに渡し、ヘルプページを開く`() { // Given (前提条件: ログイン画面を開いている) val fragment = Fragment() activity.add(fragment) val helpLinkUrl = generateHelpLink(language = "ja", country = "JP") // When (操作:ヘルプリンクを押す) fragment.openBrowser(url = helpLinkUrl, errorCallback = { e -> fail(e) }) // Then (結果:ChromeがURLを開く) val openedActivity = Shadows.shadowOf(activity).nextStartedActivity val openedPackage = openedActivity.getPackage() Truth.assertThat(openedPackage).isEqualTo("com.android.chrome") val openedUrlString = openedActivity.data.toString() Truth.assertThat(openedUrlString).isEqualTo(helpLinkUrl) } // 実装(ヘルプリンクが押されたときの処理) fun Fragment.openBrowser( url: String, errorCallback: (e: Exception) -> Unit = { e -> // エラー処理 }, ) { try { val chromeIntent = Intent(Intent.ACTION_VIEW, url.toUri()) chromeIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK chromeIntent.setPackage("com.android.chrome") startActivity(chromeIntent) } catch (e: Exception) { errorCallback(e) } } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ӳޠ೔ຊαʔόʔͷ૊߹ͤ ✅؆ମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ൟମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ͦͷଞ೔ຊαʔόʔͷ૊߹ͤ ✅೔ຊޠถࠃαʔόʔͷ૊߹ͤ ✅ӳޠถࠃαʔόʔͷ૊߹ͤ ✅؆ମࣈถࠃαʔόʔͷ૊߹ͤ ✅ൟମࣈถࠃαʔόʔͷ૊߹ͤ ✅ͦͷଞถࠃαʔόʔͷ૊߹ͤ ✅ ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜ੒ͨ͠63-Λ $ISPNFʹ౉͠ɺϔϧϓϖʔδΛ։͘ GREEN

Slide 27

Slide 27 text

+FUQBDL$PNQPTFͷ৔߹ ͖ΒΊ͘Ϟμϯͳએݴత6*ʂ

Slide 28

Slide 28 text

private val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().start().resume().get() // テスト @Test fun `ログイン画面でヘルプリンクが押されると、生成したURLをChromeに渡し、ヘルプページを開く`() { // Given (前提条件: ログイン画面を開いている) composeRule.setContent { HelpLink() } // When (操作:ヘルプリンクを押す) composeRule.onNodeWithTag(testTag = "help_link") .assertIsDisplayed() .performClick() // Then (結果:ChromeがURLを開く) val openedActivity = Shadows.shadowOf(activity).nextStartedActivity val openedPackage = openedActivity.getPackage() Truth.assertThat(openedPackage).isEqualTo("com.android.chrome") val openedUrlString = openedActivity.data.toString() Truth.assertThat(openedUrlString).isEqualTo(helpLinkUrl) } // 実装(ログイン画面のヘルプリンク領域) @Composable fun HelpLink() { } ઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ӳޠ೔ຊαʔόʔͷ૊߹ͤ ✅؆ମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ൟମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ͦͷଞ೔ຊαʔόʔͷ૊߹ͤ ✅೔ຊޠถࠃαʔόʔͷ૊߹ͤ ✅ӳޠถࠃαʔόʔͷ૊߹ͤ ✅؆ମࣈถࠃαʔόʔͷ૊߹ͤ ✅ൟମࣈถࠃαʔόʔͷ૊߹ͤ ✅ͦͷଞถࠃαʔόʔͷ૊߹ͤ ❌ ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜ੒ͨ͠63-Λ $ISPNFʹ౉͠ɺϔϧϓϖʔδΛ։͘ RED 6*ύʔπ͝ͱ5%%͠΍͍͢🙌

Slide 29

Slide 29 text

઀ଓઌ৘ใͱ୺຤ͷݴޠઃఆʹԠͨ͡ϔϧϓϖʔδͷ63-Λੜ੒͢Δ ✅೔ຊޠ೔ຊαʔόʔͷ૊߹ͤ ✅ӳޠ೔ຊαʔόʔͷ૊߹ͤ ✅؆ମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ൟମࣈ೔ຊαʔόʔͷ૊߹ͤ ✅ͦͷଞ೔ຊαʔόʔͷ૊߹ͤ ✅೔ຊޠถࠃαʔόʔͷ૊߹ͤ ✅ӳޠถࠃαʔόʔͷ૊߹ͤ ✅؆ମࣈถࠃαʔόʔͷ૊߹ͤ ✅ൟମࣈถࠃαʔόʔͷ૊߹ͤ ✅ͦͷଞถࠃαʔόʔͷ૊߹ͤ ✅ ϩάΠϯը໘ͰϔϧϓϦϯΫ͕ԡ͞ΕΔͱɺͰੜ੒ͨ͠63-Λ $ISPNFʹ౉͠ɺϔϧϓϖʔδΛ։͘ GREEN private val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().start().resume().get() // テスト @Test fun `ログイン画面でヘルプリンクが押されると、生成したURLをChromeに渡し、ヘルプページを開く`() { // Given (前提条件: ログイン画面を開いている) composeRule.setContent { HelpLink() } // When (操作:ヘルプリンクを押す) composeRule.onNodeWithTag(testTag = "help_link") .assertIsDisplayed() .performClick() // Then (結果:ChromeがURLを開く) val openedActivity = Shadows.shadowOf(activity).nextStartedActivity val openedPackage = openedActivity.getPackage() Truth.assertThat(openedPackage).isEqualTo("com.android.chrome") val openedUrlString = openedActivity.data.toString() Truth.assertThat(openedUrlString).isEqualTo(helpLinkUrl) } // 実装(ログイン画面のヘルプリンク領域) @Composable fun HelpLink() { Box( modifier = Modifier .defaultMinSize(minHeight = 48.dp) .testTag("help_link") .clickable { openHelp(generateHelpLink(language = "ja", country = "JP")) } ) { Text( color = MaterialTheme.colors.helpButtonText, fontSize = 14.sp, text = stringResource(id = R.string.induction_to_open_help) ) } } 👈 ϓϨϏϡʔݟͳ͕Β࣮૷Մ

Slide 30

Slide 30 text

+FUQBDL$PNQPTFͳΒ ؆୯ʹϢχοτςετͰ͖Δʂʂ

Slide 31

Slide 31 text

• ՄೳͳݶΓϢχοτςετͰॻ͘ʂ oςετϐϥϛουͷߟ͑ํ oܾఆੑ্͕͕Δ o ຖճಉ݁͡ՌʹͳΓ҆ఆ͢Δ o஧࣮ੑ͸Լ͕Δ IUUQT[FOOEFWKZPQQPNVBSUJDMFT

Slide 32

Slide 32 text

5%%Ͱײͨ͡ϝϦοτ • ࣮૷ʹऔΓֻ͔Γ΍͍͢ʂ Øେ͖ͳػೳΛখ͘͞෼͚ͯ࡞ΕΔ͠ɺ✅͕ؾ͍͍࣋ͪʂ • ࣮૷ʹࣗ৴Λ࣋ͪ΍͍͢ʂ ØνΣοΫϦετͱςετ͕͍ͭͰ΋ਖ਼͠͞Λূ໌ͯ͘͠ΕΔʂ

Slide 33

Slide 33 text

5%%Ͱײͨ͡ϝϦοτ • 5%%Ͱ࡞࣮ͬͨ૷͸յΕʹ͍͘ʂ Øςετ͕͋Δ͔Β҆৺ͯ͠मਖ਼Ͱ͖Δʂ • ςετͷ੔උ͕ਐΉʂ Ø։ൃϓϩηε͕ͲΜͲΜྑ͘ͳΔʂ

Slide 34

Slide 34 text

5%%͕೉͍͠ͱ͖ • ςετ͕ͳͯ͘΋ࣗ৴Λ࣋ͯΔ࣮૷ ØϩάΛߦ͚ͩ଍͢ͱ͔ • ը໘ͷݟͨ໨͕มΘΔΑ͏ͳ࣮૷ Øը໘ճؼςετʢ735ʣ͕޲͍ͯΔ

Slide 35

Slide 35 text

5%%͕೉͍͠ͱ͖ • ςετίʔυΛա৴ͯ͠͠·͏ Øςετͷෆ଍΍ޡΓ͕ͳ͍͔͸ৗʹٙ͏΂͠ • νʔϜͷೝ͕ࣝଗ͍ͬͯͳ͍ Øٞ࿦͕௕Ҿ͘ͱ5%%ͷεϐʔυ্͕͕Βͳ͍ Øςετɺ࣮૷ɺϦϑΝΫλϦϯάͷαΠΫϧ͸਺෼΄ͲͰߦΘΕΔ Øϝϯόʔͷ஌ࣝ΍ํ޲ੑΛଗ͑Δ΄͏͕ઌ͔΋

Slide 36

Slide 36 text

ςετࣗಈԽͷ༏ઌ౓

Slide 37

Slide 37 text

͜Μͳςετ΋ࣗಈԽ͠·ͨ͠ʂ • 164)Λड৴ͨ͠Βɺ௨஌όʔʹ௨஌͕දࣔ͞ΕΔ͜ͱ oHPPHMFBVUIMJCSBSZPBVUIIUUQΛ࢖ͬͯBOESPJE5FTU͔Β'$.΁ ຊ෺ͷ164)ΛૹΔ o/PUJpDBUJPO.BOBHFSͰɺ୺຤ʹಧ͍ͨ௨஌Λݕূ

Slide 38

Slide 38 text

͜Μͳςετ΋ࣗಈԽ͠·ͨ͠ʂ • 8FC7JFX͔Β+BWBTDSJQU͕ݺ͹ΕͨΒɺ"OESPJEͷϗʔϜʹ 8FC7JFX͕දࣔͯͨ͠63-΁ͷγϣʔτΧοτ͕௥Ճ͞ΕΔ ͜ͱ oMBVODI'SBHNFOU*O$POUBJOFSͰɺ8FC7JFXΛγϛϡϨʔτ o8FC7JFXFWBMVBUF+BWBTDSJQUͰɺ+BWBTDSJQUൃՐΛγϛϡϨʔτ o4IPSUDVU.BOBHFSͰɺ௥Ճ͞ΕͨγϣʔτΧοτͷ಺༰Λݕূ

Slide 39

Slide 39 text

·ͱΊ • νΣοΫϦετΛ࡞Γɺςετɺ࣮૷ɺϦϑΝΫλϦϯά • 5%%Ͱ࣮૷ʹࣗ৴Λ࣋ͭͷ͕Ұ൪େࣄʂ § ςετ͔Βॻ͘ϧʔϧ΍ςετ͕૿͑Δ͜ͱ͸෭࣍తޮՌʹա͗ͳ͍

Slide 40

Slide 40 text

5IBOLZPVGPSXBUDIJOH