Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Operator でどう変わる? これからのデータベース運用 / cndt2019_k8s_o...

yukirii
July 22, 2019

Operator でどう変わる? これからのデータベース運用 / cndt2019_k8s_operator

CloudNative Days Tokyo 2019 (2019/07/22 [1G3] 15:40 - 16:20)
https://cloudnativedays.jp/cndt2019/

データベースをはじめとするステートフルなアプリケーションはコンテナでの運用と相性が良くないと考えられていましたが、Kubernetesと周辺ツールを活用し運用するための仕組みが整ってきました。また、CRDとCustom Controllerを使い、運用に必要な操作の自動化をする取り組みも注目されています。本セッションではMySQLを取り上げ、Kubernetesを使った場合のデータベース運用や監視方法について従来のVMを使った場合とはどのように変わるのか、それぞれのメリットとデメリットは何か、等の比較を交えながら今後どのように変わっていくかご紹介します。

yukirii

July 22, 2019
Tweet

More Decks by yukirii

Other Decks in Technology

Transcript

  1. "CPVU.F :VLJ,JSJJ *OGSBTUSVDUVSF&OHJOFFS ZVLJSJJ@ ZVLJSJJ $FSUJpFE,VCFSOFUFT"ENJOJTUSBUPS $,"   גࣜձࣾαΠόʔΤʔδΣϯτ

    ٕज़ຊ෦4FSWJDF3FMJBCJMJUZ(SPVQ 43(  "NFCBͷը૾഑৴γεςϜ΍ج൫γεςϜͷΠϯϑϥΛ୲౰
  2.  "NFCBͷΦϯϓϨ,VCFSOFUFTΫϥελ 0QFO4UBDL্ʹߏங ‣ σϓϩΠ͸,VCFTQSBZͰ .Z42-σʔλϕʔε ‣ LTΫϥελͷ֎ʹ7.Ͱߏங ‣ .BTUFS4MBWF


     
 .)"GPS.Z42- 7. 7. 7. 7. .BTUFS 7. 4MBWF ˞Πϯλʔωοτ޿ࠂࣄۀ෦ͷ,VCFSOFUFT ",& ͱ͸ผͷ؀ڥͰ͢ ࠓͳΒ%#Λ,VCFSOFUFTʹ
 ͷͤΔ͜ͱ΋Ͱ͖Δʁ ͲΜͳํ๏͕͋ΔͩΖ͏ʁʁ
  3.  5PEBZ`T"HFOEB    ίϯςφͰεςʔτϑϧͳΞϓϦέʔγϣϯΛಈ͔͢ ,VCFSOFUFT0QFSBUPSͱ͸ ࣮ྫ.Z42-0QFSBUPSΛಈ͔ͯ͠ΈΑ͏  ,VCFSOFUFT0QFSBUPSͷ͜Ε͔Β

    ߟྀ͢΂͖ϙΠϯτͱ,VCFSOFUFT্Ͱͷղܾํ๏ʹ͍ͭͯ஌Δ $VTUPN3FTPVSDFΛ׆༻ͨ͠ӡ༻ࣗಈԽͷύλʔϯʹ͍ͭͯ஌Δ 0QFSBUPSͷ࢖༻ײ͸ʁ࣮ࡍʹLT্Ͱ.Z42-Λಈ͔ͯ͠ΈΔ ؔ࿈ϓϩδΣΫτͷ঺հͱ0QFSBUPSͷࠓޙʹ͍ͭͯ
  4.  4UBUFGVM4FU εςʔτϑϧͳΞϓϦέʔγϣϯΛಈ͔ͨ͢Ίͷ,VCFSOFUFT૊ΈࠐΈͷϦιʔε ‣ 1PEͰ࢖༻͢ΔӬଓσʔλͷऔΓѻ͍ͱωʔϛϯάͷ՝୊Λղܾ NZTRM NZTRM NZTRM NZTRM 

      ॱ൪ʹ
 σϓϩΠ ॱ൪ʹ
 ऴྃ࡟আ ֤1PEʹઐ༻ͷετϨʔδϘϦϡʔϜΛ
 ׂΓ౰ͯΔ ରԠؔ܎΋ҡ࣋͞ΕΔ 1PEʹݻఆͷࣝผࢠΛׂΓ౰ͯΔ
  5.  5PEBZ`T"HFOEB    ίϯςφͰεςʔτϑϧͳΞϓϦέʔγϣϯΛಈ͔͢ ,VCFSOFUFT0QFSBUPSͱ͸ ࣮ྫ.Z42-0QFSBUPSΛಈ͔ͯ͠ΈΑ͏  ,VCFSOFUFT0QFSBUPSͷ͜Ε͔Β

    ߟྀ͢΂͖ϙΠϯτͱ,VCFSOFUFT্Ͱͷղܾํ๏ʹ͍ͭͯ஌Δ $VTUPN3FTPVSDFΛ׆༻ͨ͠ӡ༻ࣗಈԽͷύλʔϯʹ͍ͭͯ஌Δ 0QFSBUPSͷ࢖༻ײ͸ʁ࣮ࡍʹLT্Ͱ.Z42-Λಈ͔ͯ͠ΈΔ ؔ࿈ϓϩδΣΫτͷ঺հͱ0QFSBUPSͷࠓޙʹ͍ͭͯ
  6.  ,VCFSOFUFT0QFSBUPS ಛఆͷΞϓϦέʔγϣϯΛ,VCFSOFUFT্Ͱ࣮ߦɾ؅ཧ͢ΔͨΊͷιϑτ΢ΣΞ $POUSPMMFS  ‣ ೥$PSF04͕ఏএͨ͠ख๏ ‣ ӡ༻্ͷφϨοδ͕ιϑτ΢ΣΞͱ࣮ͯ͠૷͞Ε͍ͯΔ ‣

    0QFSBUPSࣗମ΋,VCFSOFUFTͰ؅ཧ͞ΕΔίϯςφͱͯ͠ಈ࡞ IUUQTDPSFPTDPNCMPHJOUSPEVDJOHPQFSBUPSTIUNM 㾎 ΞϓϦέʔγϣϯͷόʔδϣϯΞοϓ 㾎 ෳࡶͳো֐ճ෮ͷखॱͷ࣮ߦ 㾎 ఆظతͳσʔλͷόοΫΞοϓ 㾎 εςʔτϑϧͳΞϓϦέʔγϣϯͷ
 εέʔϧΞοϓμ΢ϯ 0QFSBUPS $SFBUF/FX1PE #BDLVQ ΞϓϦέʔγϣϯݻ༗ͷӡ༻खॱΛ
 ιϑτ΢ΣΞԽ
  7.  ͓͞Β͍ ,VCFSOFUFTͷಛ௃ͱಈ࡞ ಛ௃%FDMBSBUJWF એݴతͳ "1* ‣ Ϣʔβ͸ͳʹΛୡ੒͍ͨ͠ͷ͔ EFTJSFETUBUF ΛγεςϜʹ఻͑Δ

    apiVersion: extensions/v1beta1 kind: ReplicaSet metadata: name: nginx spec: replicas: 3 template: spec:
 containers:
 - name: nginx image: nginx:latest Ϣʔβ͸"1*Λ௨ͯ͠
 3FTPVSDFΛొ࿥͢Δ $POUSPMMFS͸"1*Λ௨ͯ͠
 3FTPVSDFͷΦϒδΣΫτΛ؅ཧ͢Δ 8BUDI "QQMZ 3FQMJDB4FU3FTPVSDF
 OBNFOHJOY 3FQMJDB4FU
 $POUSPMMFS
  8.  ͓͞Β͍ ,VCFSOFUFTͷಛ௃ͱಈ࡞ ಛ௃$POUSPMMFSʹΑΔ3FDPODJMJBUJPOMPPQ ௐ੔ϧʔϓ  ‣ ,VCFSOFUFT͸ෳ਺ͷಠཱͨ͠$POUSPMMFSͷू߹ମ ‣ ֤$POUSPMMFS͕୲౰͢Δ3FTPVSDFͷΦϒδΣΫτΛl๬·͍͠ঢ়ଶ

    EFTJSFETUBUF zʹҡ࣋͢Δ 3FQMJDB4FU$POUSPMMFS 0CTFSWF "OBMZ[F l3FQMJDB4FU9z͕ߋ৽͞Εͨ %FTJSFETUBUFSFQMJDBT
 $VSSFOUTUBUFSFQMJDBT kubectl apply -f replicaset.yaml "DU $SFBUFOFX1PE
 $VSSFOUTUBUFSFQMJDBT 3FQMJDB4FU9 VQEBUFE 6QEBUF
 DVSSFOUTUBUF $SFBUF ྫ 3FQMJDB4FU
  9.  ,VCFSOFUFT0QFSBUPSͷߏ੒ Ϣʔβ͸,VCFSOFUFTΛಠࣗͷ3FTPVSDFͱ$POUSPMMFSͰ֦ுͰ͖Δ ‣ 0QFSBUPS͸͜ͷ࢓૊ΈΛ׆༻ $VTUPN3FTPVSDF ‣ ϢʔβʹΑͬͯಠࣗʹఆٛ͞Εͨ3FTPVSDF ‣ ྫԿͷσʔλϕʔεγεςϜΛɺԿ୆Ͱߏ੒͢Δ͔Λఆٛ

    ‣ $VTUPN3FTPVSDF%FpOJUJPOT $3% ʹΑͬͯLT"1*Λ֦ு͢Δͱѻ͑ΔΑ͏ʹͳΔ $VTUPN$POUSPMMFS ‣ ϢʔβʹΑͬͯಠࣗʹఆٛ͞Εͨ$POUSPMMFS ‣ $VTUPN3FTPVSDFͷΦϒδΣΫτΛlEFTJSFETUBUFlʹҡ࣋͢Δ ‣ ྫ৽͍͠1PEΛΫϥελʹ૊ΈࠐΉॲཧΛߦ͏ ‣ ྫ1PEͷεςʔλεΛऔಘ͠ɺඞཁʹԠͯ͡෮چखॱΛ࣮ࢪ͢Δ
  10.  ,VCFSOFUFT0QFSBUPSͷಈ࡞ $VTUPN$POUSPMMFS 0CTFSWF "OBMZ[F l%BUBCBTF9z͕ߋ৽͞Εͨ %FTJSFETUBUFWFSTJPOW
 $VSSFOUTUBUFWFSTJPOW kubectl apply

    -f database.yaml "DU 3PMMJOH6QEBUF
 $VSSFOUTUBUFWFSTJPOW %BUBCBTF9 VQEBUFE 6QEBUF
 DVSSFOUTUBUF 6QEBUF $VTUPN3FTPVSDFʹج͖ͮ$VTUPN$POUSPMMFS͕ඞཁͳଞͷ3FTPVSDFΛૢ࡞͢Δ ྫ σʔλϕʔεΛ
 ɹ؅ཧ͢Δ0QFSBUPSͷྫ
  11.  PSBDMFNZTRMPQFSBUPS .Z42-*OOP%#$MVTUFSΛ,VCFSOFUFT্Ͱಈ࡞ͤ͞ΔͨΊͷ0QFSBUPS ‣ 0SBDMFͷ044ϓϩδΣΫτ ‣ ݱࡏW ‣ .Z42-WdΛαϙʔτ ‣

    ίϚϯυͭͰՄ༻ੑͷߴ͍.Z42-ΫϥελΛ,VCFSOFUFT্ʹσϓϩΠ ‣ ߏங΍ӡ༻ʹඞཁͳφϨοδ͕ιϑτ΢ΣΞͱ࣮ͯ͠૷͞Ε͍ͯΔ ‣ Ϋϥελͷ࡞੒ɾ࡟আ ‣ ΫϥελͷϦαΠζ ‣ ো֐ͷݕ஌ͱ෮چ ‣ όοΫΞοϓͱϦετΞ IUUQTHJUIVCDPNPSBDMFNZTRMPQFSBUPS
  12.  ࢀߟ .Z42-*OOP%#$MVTUFS .Z42-޲͚ͷߴՄ༻ੑιϦϡʔγϣϯ .Z42-(SPVQ3FQMJDBUJPO ෳ਺ͷ.BTUFSؒͰϨϓϦέʔγϣϯΛߏ੒
 ϝϯόγοϓ؅ཧɾϑΣΠϧΦʔόʔɾ੔߹ੑҡ࣋Λࣗಈతʹߦ͏ ‣ 4JOHMF1SJNBSZ EFGBVMU

    
 ࣗಈͰબ͹Εͨ୆ͷαʔό͕ߋ৽Λड͚෇͚Δ
 1SJNBSZͷো֐࣌͸4FDPOEBSZ͕ࣗಈతͰ1SJNBSZʹঢ֨ ‣ .VMUJ1SJNBSZ
 શαʔόͰߋ৽Λड͚෇͚Δ .Z42-3PVUFS ΞϓϦέʔγϣϯ͔Βͷ3FBE8SJUFτϥϑΟοΫΛ
 ద੾ͳόοΫΤϯυͷ.Z42-αʔό΁ϧʔςΟϯά IUUQTEFWNZTRMDPNEPDSFGNBOFONZTRMJOOPECDMVTUFSJOUSPEVDUJPOIUNM
  13.  .Z42-*OOP%#$MVTUFSPO,VCFSOFUFT NZTRMBHFOU NZTRM NZTRMBHFOU NZTRM NZTRMBHFOU NZTRM NZTRM4UBUFGVM4FU (SPVQ3FQMJDBUJPO

    .Z42-$MVTUFS $VTUPN3FTPVSDF .Z42-0QFSBUPS $VTUPN$POUSPMMFS 8BUDI $SFBUF ΫϥελϝϯόΛ੍ޚ͢Δ.Z42-"HFOUͱ
 ҰॹʹσϓϩΠ͞ΕΔ (SPVQ3FQMJDBUJPOʹΑΔ
 ߴՄ༻ੑάϧʔϓ ࣗ཯తͳϝϯό؅ཧ΍
 ো֐ݕ஌ɾ෮چ͕ߦΘΕΔ
  14.  .Z42-*OOP%#$MVTUFSPO,VCFSOFUFT NZTRMBHFOU NZTRM NZTRMBHFOU NZTRM NZTRMBHFOU NZTRM NZTRM4UBUFGVM4FU (SPVQ3FQMJDBUJPO

    .Z42-$MVTUFS $VTUPN3FTPVSDF .Z42-0QFSBUPS $VTUPN$POUSPMMFS NZTRMSPVUFS XFCBQQ NZTRMSPVUFS XFCBQQ 8BUDI $SFBUF XFCBQQ 4FSWJDF ΞϓϦέʔγϣϯ͸TJEFDBSͷ.Z42-3PVUFSʹ઀ଓ (SPVQ3FQMJDBUJPOʹΑΔ
 ߴՄ༻ੑάϧʔϓ ࣗ཯తͳϝϯό؅ཧ΍
 ো֐ݕ஌ɾ෮چ͕ߦΘΕΔ 8SJUF 3FBE ΫϥελϝϯόΛ੍ޚ͢Δ.Z42-"HFOUͱ
 ҰॹʹσϓϩΠ͞ΕΔ
  15.  NZTRMPQFSBUPSͷΠϯετʔϧ # ωʔϜεϖʔεΛ࡞੒ $ kubectl create ns mysql-operator #

    mysql-operator ϦϙδτϦΛऔಘ (helm chart ؚ͕·ΕΔ) $ git clone https://github.com/oracle/mysql-operator.git $ cd mysql-operator # mysql-operator Λ helm ͰΠϯετʔϧ $ helm install --namespace mysql-operator \ --name mysql-operator \ mysql-operator $ kubectl get crd --selector=release=mysql-operator NAME AGE mysqlbackups.mysql.oracle.com 18d mysqlbackupschedules.mysql.oracle.com 18d mysqlclusters.mysql.oracle.com 18d mysqlrestores.mysql.oracle.com 18d $ kubectl get pods --selector=app=mysql-operator NAME READY STATUS RESTARTS AGE mysql-operator-65475db5-tdchf 1/1 Running 0 9d $3%ͱ$VTUPN$POUSPMMFS͕ Πϯετʔϧ͞Εɺ
 $VTUPN3FTPVSDF͕ར༻
 ՄೳʹͳΔ
  16.  .Z42-Ϋϥελͷ࡞੒ $ kubectl get mysqlcluster,sts,pods NAME AGE cluster.mysql.oracle.com/mysql 4m

    NAME DESIRED CURRENT AGE statefulset.apps/mysql 3 3 4m NAME READY STATUS RESTARTS AGE pod/mysql-0 2/2 Running 0 4m pod/mysql-1 2/2 Running 0 3m pod/mysql-2 2/2 Running 0 2m apiVersion: mysql.oracle.com/v1alpha1 kind: Cluster metadata: name: mysql spec: members: 3 DMVTUFSZBNM $MVTUFS
 lNZTRMz 4UBUFGVM4FU
 lNZTRMz LVCFDUMBQQMZ .Z42- 0QFSBUPS
  17.  .Z42-Ϋϥελͷεέʔϧ $ kubectl get sts,pods NAME DESIRED CURRENT AGE

    statefulset.apps/mysql 5 5 8m NAME READY STATUS RESTARTS AGE pod/mysql-0 2/2 Running 0 8m pod/mysql-1 2/2 Running 0 8m pod/mysql-2 2/2 Running 0 7m pod/mysql-3 2/2 Running 0 1m pod/mysql-4 2/2 Running 0 50s apiVersion: mysql.oracle.com/v1alpha1 kind: Cluster metadata: name: mysql spec: members: 5ϝϯό਺Λมߋ ˠ DMVTUFSZBNM $MVTUFS
 lNZTRMz 4UBUFGVM4FU
 lNZTRMz LVCFDUMBQQMZ .Z42- 0QFSBUPS
  18.  όοΫΞοϓͱϦετΞ apiVersion: mysql.oracle.com/v1alpha1 kind: Backup metadata: name: mysql-cluster-backup spec:

    executor: mysqldump: databases: - name: employees storageProvider: s3: endpoint: s3.ap-northeast-1.amazonaws.com region: ap-northeast-1 bucket: mysql-operator-test forcePathStyle: true credentialsSecret: name: s3-credentials cluster: name: mysql CBDLVQZBNM #BDLVQϦιʔεఆٛ͠BQQMZ͢Δ ‣ 4ޓ׵"1*͕࢖༻Մೳ "844 0$*0CKFDU4UPSBHF ($1($4 ‣ NZTRMEVNQΛαϙʔτ ‣ #BDLVQ4DIFEVMFϦιʔεͰఆظ࣮ߦ΋Մೳ $ kubectl get mysqlbackup NAME AGE mysql-cluster-backup 13m
  19.  όοΫΞοϓͱϦετΞ 3FTUPSFϦιʔεఆٛ͠BQQMZ͢Δ ‣ ࢖༻͢Δ#BDLVQͱ
 ϦετΞઌͷ$MVTUFSΛࢦఆ apiVersion: mysql.oracle.com/v1alpha1 kind: Restore

    metadata: name: mysql-cluster-restore spec: cluster: name: mysql-restore backup: name: mysql-cluster-backup SFTUPSFZBNM mysql> show databases; +-------------------------------+ | Database | +-------------------------------+ | information_schema | | mysql | | mysql_innodb_cluster_metadata | | performance_schema | | sys | +-------------------------------+ 5 rows in set (0.01 sec) mysql> show databases; +-------------------------------+ | Database | +-------------------------------+ | employees | | information_schema | | mysql | | mysql_innodb_cluster_metadata | | performance_schema | | sys | +-------------------------------+ 6 rows in set (0.00 sec) 3FTUPSFલ 3FTUPSFޙ
  20.  ো֐ൃੜ࣌͸Ͳ͏ͳΔʁ 4JOHMF.BTUFSߏ੒Ͱ1SJNBSZͷ1PE͕མͪͨ৔߹ .Z42-*OOP%#$MVTUFSͷಈ࡞  4UBUFGVM4FU %FTJSFETUBUFSFQMJDBT $VSSFOUTUBUFSFQMJDBT NZTRM SPMFTFDPOEBSZ


    QSJNBSZ NZTRM SPMFQSJNBSZ (SPVQ3FQMJDBUJPOͷϝϯό͔Β
 আ֎͞ΕΔ NZTRM SPMFTFDPOEBSZ 4FDPOEBSZ͕1SJNBSZʹঢ֨
  21. 4JOHMF.BTUFSߏ੒Ͱ1SJNBSZͷ1PE͕མͪͨ৔߹ ͦͷޙʜ  ো֐ൃੜ࣌͸Ͳ͏ͳΔʁ  4UBUFGVM4FU %FTJSFETUBUFSFQMJDBT $VSSFOUTUBUFSFQMJDBT NZTRM SPMFTFDPOEBSZ

    NZTRM ϦΧόϦॲཧ͕૸Γఀࢭதͷ
 σʔλͷࠩ෼Λಉظ ,VCFSOFUFTʹΑΓ1PE͕
 ্ཱͪ͛ΒΕΔ NZTRM SPMFQSJNBSZ Binary Log
  22.  ো֐ൃੜ࣌͸Ͳ͏ͳΔʁ LTOPEF͕མͪͨ৔߹1PEͷεςʔλε͸6OLOPXOʹͳΔ 4UBUFGVM4FUͷ1PE͸ࣗಈͰ࠶εέδϡʔϦϯά͞Εͳ͍ ‣ ಛఆͷ໊લͷ1PE͕Ϋϥελ಺ʹ࠷େͰͭଘࡏ͢Δ͜ͱΛอূ͢Δ ‣ TQSJUCSBJOʹΑΔো֐Λ๷͙ͨΊ࠶࡞੒͸ߦΘΕͳ͍ % kubernetes

    get node k8s-node02 NAME STATUS ROLES AGE VERSION k8s-node02 NotReady <none> 8d v1.12.7 % kubectl get pods -l v1alpha1.mysql.oracle.com/cluster=mysql -o wide NAME READY STATUS RESTARTS AGE NODE mysql-0 2/2 Running 0 3d k8s-node01 mysql-1 2/2 Unknown 0 3d k8s-node02 1PE4UBUVT͕6OLOPXOͷ৔߹ɺ
 ίϯςφࣗମ͸·ͩಈ͍͍ͯΔՄೳੑ͕͋Δ mysql> SELECT MEMBER_HOST, MEMBER_STATE, MEMBER_ROLE FROM performance_schema.replication_group_members ORDER BY MEMBER_HOST; +---------------+--------------+-------------+ | MEMBER_HOST | MEMBER_STATE | MEMBER_ROLE | +---------------+--------------+-------------+ | mysql-0.mysql | ONLINE | SECONDARY | | mysql-1.mysql | ONLINE | SECONDARY | | mysql-2.mysql | ONLINE | SECONDARY | (SPVQ3FQMJDBUJPOͷϝϯόҰཡʹ͸
 ର৅ͷ1PE͕·ؚͩ·Ε͍ͯΔʂ
  23.  ো֐ൃੜ࣌͸Ͳ͏ͳΔʁ LTOPEF͕མͪͨ৔߹1PEͷεςʔλε͸6OLOPXOʹͳΔ ࠶εέδϡʔϦϯά͢Δʹ͸ ‣ ݱঢ়ͩͱ1PEΛڧ੍࡟আ͢Δ͔͠ͳͦ͞͏ʜʁ $ kubectl delete pod

    <Pod Name> —force —grace-period=0 ঢ়ଶ֬ೝˠ੾Γ཭͠ˠ෮چͷखॱ΋0QFSBUPSʹ೚͍ͤͨʜʂ ‣ ݱࡏ ࣮૷͸͞Ε͍ͯͳ͍ 1PEͷ࠶εέδϡʔϦϯά
 GPSDFEFMFUF (SPVQ3FQMJDBUJPO͔Β
 ੾Γ཭͞ΕͯΔ͜ͱΛ֬ೝ 1PEͷεςʔλεΛ֬ೝ <PSBDMFNZTRMPQFSBUPS>4UBUFGVM4FU1PEXBTOFWFSFWJDUFEGSPNUIFGBJMVSFOPEF 
  24.  5PEBZ`T"HFOEB    ίϯςφͰεςʔτϑϧͳΞϓϦέʔγϣϯΛಈ͔͢ ,VCFSOFUFT0QFSBUPSͱ͸ ࣮ྫ.Z42-0QFSBUPSΛಈ͔ͯ͠ΈΑ͏  ,VCFSOFUFT0QFSBUPSͷ͜Ε͔Β

    ߟྀ͢΂͖ϙΠϯτͱ,VCFSOFUFT্Ͱͷղܾํ๏ʹ͍ͭͯ஌Δ $VTUPN3FTPVSDFΛ׆༻ͨ͠ӡ༻ࣗಈԽͷύλʔϯʹ͍ͭͯ஌Δ 0QFSBUPSͷ࢖༻ײ͸ʁ࣮ࡍʹLT্Ͱ.Z42-Λಈ͔ͯ͠ΈΔ ؔ࿈ϓϩδΣΫτͷ঺հͱ0QFSBUPSͷࠓޙʹ͍ͭͯ
  25.  %#PO,VCFSOFUFTؔ࿈ϓϩδΣΫτ IUUQTHJUIVCDPNQSFTTMBCTNZTRMPQFSBUPS QSFTTMBCTNZTRMPQFSBUPS ‣ .BTUFS4MBWFߏ੒ͷ.Z42-Λαϙʔτ ‣ ো֐ݕ஌ͱϑΣΠϧΦʔόʔ͸ PSDIFTUSBUPSΛ࢖༻ IUUQTWJUFTTJP

    7JUFTT ‣ େن໛ͳ.Z42-ΫϥελΛσϓϩΠ͠
 ؅ཧ͢ΔͨΊͷιϦϡʔγϣϯ ‣ γϟʔσΟϯάػߏΛ಺ଂ ‣ ϑΣΠϧΦʔόʔ΍όοΫΞοϓͷࣗಈԽ .Z42-ʹؔ࿈ͨ͠ϓϩδΣΫτ 0QFSBUPS͕ଘࡏ͢Δσʔλϕʔε "FSPTQJLF $BTTBOESB $PVDICBTF &MBTUJDTFBSDI FUDE *OqVY%# .FNDBDIFE .POHP%# 1PTUHSF42- 3FEJT 5J%# ʜͳͲ
  26.  ,VCFSOFUFT0QFSBUPSͰ/P0QTΛ࣮ݱʁ /P0QT/P6ODPNGPSUBCMF0QT ‣ γεςϜӡ༻อकʹؔ͢Δʮخ͘͠ͳ͍΋ͷʯΛऔΓআ͘׆ಈ ‣ औΓ૊ΈͷͭγεςϜʹࣗ཯ӡ༻ೳྗΛ࣋ͨͤਓؒʹΑΔӡ༻Λ࠷খԽ͢Δ ࣗ཯ӡ༻ʹඞཁͳlճ෮ྗ 4FMG)FBMJOH
 ো֐ൃੜ࣌ͷʮαʔϏεແӨڹ

    ࣗݾम෮ʯ *OqJHIUSFOFXJOH
 มߋɾߋ৽ʹର͢Δʮແఀࢭϝϯςφϯεʯ "EBQUJWF4DBMF
 ෛՙมಈʹ஄ྗతʹదԠ͢Δʮࣗ཯తϦιʔεௐ੔ʯ IUUQTHJUIVCDPNOPPQTKBQBODPNNVOJUZCMPCNBTUFS%&'*/*5*0/NE 4FMG)FBMJOH 㾎 %FDMBSBUJWF$POpHVSBUJPO 㾎 -JWFOFTT3FBEJOFTT1SPCF *OqJHIUSFOFXJOH 㾎 3PMMJOH6QEBUF "EBQUJWF4DBMF 㾎 )PSJ[POUBM1PE"VUPTDBMFS 㾎 $MVTUFS"VUPTDBMFS ,VCFSOFUFTͷ࣋ͭճ෮ྗ /P0QT%FpOJUJPOW
  27.  ,VCFSOFUFT0QFSBUPSͰ/P0QTΛ࣮ݱʁ 1MBUGPSN "QQMJDBUJPO ,VCFSOFUFT0QFSBUPS ,VCFSOFUFTͷίϯηϓτͱ֦ுੑΛ׆༻͠ γεςϜશମͷճ෮ྗΛߋʹߴ͍΋ͷʹͰ͖Δ 8FC4FSWFS %BUBCBTF .FTTBHF2VFVF

    $BDIF ΞϓϦΛؚΊͨγεςϜશମͰճ෮ྗΛ࣋ͭ͜ͱ͕ॏཁ ‣ ো֐͔Βͷ෮چ͕࣌ؒ௕͍ ‣ ෮چͷͨΊͷखॱ͕ෳࡶ ‎ ճ෮ྗͷ௿Լʹ
 ͭͳ͕ͬͯ͠·͏
  28. ͜Ε͔Βͷσʔλϕʔεߏஙɾӡ༻͸͜͏ͳΔ͸ͣʜ ෮چͷख͕ؒ࠷খԽ͞ΕΔ ۓٸରԠ΋ݮΔ ಥൃతͳ࡞ۀͷෛՙ͕Լ͕Δ ਓखʹΑΔΦϖϛε΋ݮΔ Ϗδωεͷεϐʔυ͕Ճ଎͢Δ ਫ਼ਆతෛ୲͕Լ͕Δ <DSJUJDBM>130#-&. EBUBCBTF%08/ 㵺Т㵺

    ţźōʜ ࠓ೔ϦϦʔεͨ͠ࢪࡦͰ
 ϦΫΤετ૿͑ΔΒ͍͠ʜ
 %#΋૿΍͞ͳ͍ͱʜʂ LVCFDUMBQQMZGDMVTUFSZBNM ։ൃ؀ڥʹσʔλϕʔε
 ͙͢ʹ༻ҙͯ͠΄͍͠ͳ LVCFDUMBQQMZGDMVTUFSZBNM 
  29.  ͜Ε͔Βͷσʔλϕʔεߏஙɾӡ༻͸͜͏ͳΔ͸ͣʜ ͨͩ͠ɺ஫ҙ͠ͳ͚Ε͹ͳΒͳ͍͜ͱ ‣ γεςϜઃܭ΍νϡʔχϯά·Ͱ΋͕ࣗಈԽ ͞ΕΔΘ͚Ͱ͸ͳ͍ ‣ ࣗಈԽ͞ΕͨγεςϜ͸ϒϥοΫϘοΫεʹ ͳΓ͕ͪ ਓؒͷӡ༻ऀ͕θϩʹͳΔΘ͚Ͱ͸ͳ͍ʂ

    ‣ ໰୊ൃݟղܾͷख͕͔ΓΛ࢒͓ͯ͜͠͏ ‣ ϞχλϦϯάɾϩΪϯάͷ࢓૊Έ͕ඞਢ ‣ ࣗಈԽ͕ࣦഊͨ͠৔߹ͷखஈΛ༻ҙ͓ͯ͘͠ ‣ ࠷ޙͷखஈʜਓख ো֐ൃੜ࣌ͷඋ͑͸ඞ͓ͣͯ͘͠ʂ
  30.  ͜Ε͔Βͷσʔλϕʔεߏஙɾӡ༻͸͜͏ͳΔ͸ͣʜ "ϚωʔδυαʔϏεΛ࢖͍·͠ΐ͏ʂ ࢖͍͍ͨ%#ͷϚωʔδυαʔϏε͕ఏڙ͞Ε͍ͯΔ͚ΕͲɺ ,VCFSOFUFT0QFSBUPSΛ࢖ͬͯࣗ෼Ͱӡ༻ͨ͠΄͏͕ྑ͔ͬͨΓ͢Δʁ ‣ ಈ࡞ͤ͞ΔΞϓϦέʔγϣϯʹ͍ͭͯͷ
 ઐ໳஌ࣝ͸ඞཁ ‣ ,VCFSOFUFTࣗମͷӡ༻΋೉͍͠

    εςʔτϑϧͳϫʔΫϩʔυΛಈ͔͢࢓૊Έ͸
 ੔͖͍ͬͯͯΔ͕ʜ ‣ 1BB4΍4FSWFSMFTTͷબ୒΋ݕ౼͠Α͏ ‣ ϓϥοτϑΥʔϜͱͯ͠ճ෮ੑ͕୲อ
 ͞Ε͍ͯΔ ແཧʹ,VCFSOFUFTͰಈ͔ͦ͏ͱ͠ͳ͍ LTΫϥελ্ͷσʔλϕʔεͰ͸ͳ͘ɺΫϥ΢υ্ͷϚωʔδυαʔϏεΛ ૢ࡞͢Δ0QFSBUPS΋͋Γ·͢ "844FSWJDF0QFSBUPSͳͲ ɻ ผ్*B$πʔϧͳͲͰߦ͍ͬͯͨΠϯϑϥ؀ڥͷߏஙΛ0QFSBUPSʹ೚ͤ
 ΞϓϦͱҰॹʹ3FTPVSDFఆٛΛHJU؅ཧࣗ཯ӡ༻ɺͱ͍͏͜ͱ΋Ͱ͖ͦ͏Ͱ͢ɻ ิ଍
  31.  ·ͱΊ ,VCFSOFUFT0QFSBUPS ‣ ,VCFSOFUFTͷ࢓૊ΈΛԠ༻ͨ͠ӡ༻ࣗಈԽͷύλʔϯ ‣ $VTUPN3FTPVSDF $VTUPN$POUSPMMFS ‣ ΞϓϦέʔγϣϯݻ༗ͷӡ༻࡞ۀΛਓʹ୅ΘͬͯࣗಈԽ

    .Z42-0QFSBUPS ‣ ,VCFSOFUFT্ʹ.Z42-*OOP%#$MVTUFSΛߏங ‣ એݴతͳઃఆʹج͖֤ͮछӡ༻࡞ۀΛࣗಈԽ ‣ Ϋϥελߏங εέʔϧ όοΫΞοϓϦετΞ ো֐ݕ஌ͱϑΣΠϧΦʔόʔ
  32. 0QFSBUPSͰεςʔτϑϧͳϫʔΫϩʔυ΋,VCFSOFUFTͷࢥ૝Ͱࣗ཯ಈ࡞͕Մೳ ‣ γεςϜશମͷճ෮ྗΛΑΓߴΊΔ ‣ σʔλʔϕʔε΋ӡ༻ͷ࠷খԽΛਤΔ͜ͱ͕Ͱ͖ͦ͏ʂ  ·ͱΊ "QQ "QQ "NFCBϓϩϑΟʔϧγεςϜͰͷ


    ಋೖ͕Մೳ͔ݕূ༧ఆ ‣ ࢒Δ՝୊CJOMPHϩετ࣌ͷ෮چํ๏
 ,VCFSOFUFT 0QFSBUPSͷ؀ڥԼͰͷ
 ෮چखॱΛͲͷΑ͏ʹ͢Δ͔ ஌ݟ͕ͨ·ͬͨΒ
 ·ͨผͷػձͰڞ༗͠·͢ωʂ .Z42-0QFSBUPS