ã¯ããã«

ããããããžã§ã¯ãããããŸããããã¯èªç±æéã«è¡ããŸãã ãã®ãããžã§ã¯ãã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®å®éšå°çšã§ãã æ§æ管çã«ã¯ã SaltStackã䜿çšããŸã ã SaltStackã¯ãéäžåã®ã€ã³ãã©ã¹ãã©ã¯ãã£ç®¡çã·ã¹ãã ã§ãã ããã¯ãã¹ã¬ãŒããµãŒããŒãã»ããã¢ãããããã¹ã¿ãŒãµãŒããŒãããããšãæå³ããŸãã
ãããžã§ã¯ãã®åç¶æéäžãç§ã¯å°ããªäžé£ã®ã¬ãŒããèžã¿ãŸããããæçµçã«ã¯éåžžã«äŸ¿å©ãªã¢ãããŒãã§äœæ¥ããããã«ãªããŸããã äžè¬ã«ããããšèšäºã«ã€ããŠ-ããããã¹ãŠå§ãŸããã©ãã«æ¥ãã®ãã
æšã倧ãããšã
ãããžã§ã¯ãå
šäœã¯ã¢ããªã·ãã¯ã§ããã¹ãŠãæã£ãŠããŸããã
- ç¶æ
ïŒstatesïŒ-æ§ææ¹æ³ãšæ§æã«é¢ããæ瀺ã
- ããŒã¿æ§é ïŒæ±ïŒ-å·ã§äœ¿çšãããããŒã¿ã äŸïŒ
- ããã€ãã®ã¿ã¹ã¯ã®ã·ã¹ãã ããã±ãŒãžã®ãªã¹ãã
- Dockerã³ã³ãããŒããã®ç¶æ
ã§äœ¿çšãããDockerããããã®ãã°ã€ã³/ãã¹ã¯ãŒãã
ãµãŒããŒã®ãªã¹ããããã³ãããã«å²ãåœãŠãããç¶æ
ãšããŒã¿ã
ãããžã§ã¯ãå
šäœã1ã€ã®gitãªããžããªã«ããã gitfsãä»ããŠãã¹ã¿ãŒãµãŒããŒã«æ¥ç¶ãããŠããŸãã ã ããã¯éåžžã«äŸ¿å©ã§ã-ãã¹ã¿ãŒãµãŒããŒäžã®ããŒã¿ã®æŽæ°ãå¿é
ããå¿
èŠã¯ãããŸããã SaltStackèªäœã¯ããªããžããªãããã¹ãŠãåéããŸãã
gitãªããžããªã®å¥ã®ãã©ã³ãã䜿çšããŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã¹ãã³ããŒãäœæãããããä»ããŠãã¹ãŠããã¹ãã§ããŸãã ãã ãããã¹ãçšã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã³ããŒãäœæããã«ã¯è²»çšãããããŸãã
- é²ã®å Žåã¯ãéã®ããã
- ãããã«ãããæéå
ã«-äœæ¥ç¶æ
ãåããå®è¡ããç¶æããå¿
èŠããããŸãã
äžæ¹ããæŠããã¯1ã€ã®é£ç¶ããããã¹ããã§ããããããç Žã£ãŠãåé¡ãããŸããïŒãæããªããã®ã¯æ®å¿µã§ãïŒã æããªãã®ã§ãäžéã®å€æŽãå«ããã¹ãŠã®å€æŽãããªããžããªãžã®ããã·ã¥ãä»ããŠå±éããŸããã æ§ããã«èšã£ãŠããã³ããããã°ã¯äžæ°å³ã«èŠãå§ããŸããã
- ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã®åé¡ã解決ããŠã¿ãŠãã ãã...;
- ãšã©ãŒãä¿®æ£ããå¥ã®è©Šã¿...;
- éæ³...;
- ãŸã確ãã«;
- ããŠã確ãã«ãã¹ãŠã®çªå·2ã
- ååå¿ããããã€ãã®å€æŽã
å®éããã¹ãŠãããã»ã©æªããªãã£ãããã§ã¯ãããŸããããäžè¬ã«ããã®äŸã§ã¯æ£ããç»åãåŸãããŸãïŒ
ïŒ
ããã¯ããã«æªåããŸãã-æéã®çµéãšãšãã«ãç§ã¯ãããã©ã®ãããªç¶æ
ã§ãã©ã®ããã«ãããããŠããããå¿ãå§ããŸããã ããã§ããããã¯å人çãªãããžã§ã¯ãã§ãããç§ã¯ããã«åžžã«åãçµãã§ããããã§ã¯ãªããæã
åãçµãã§ããŸãã READMEãã¡ã€ã«ã¯ãã§ã«ãã®åé¡ãããŸã解決ããŠããŸããã
ããŒã¿ãä»ããæ¥ç¶ã®ç¶æ
ããããŸããã ããç¶æ
ã§ããŒã¿æ§é ãå€æŽãããå Žåãç°ãªãç¶æ
ã§ã¯åãããŒã¿ã䜿çšãããä»ã®ç¶æ
ã§ã¯ç Žæãä¿èšŒãããŸããã ãã®ãããããæç¹ã§ããæŠéãæ§æã¯ãã¬ããã¢ãŠããç¶æ
ã«ãªããŸãã ç§ã¯æ°æ¥éãã°ãä¿®æ£ã§ããŸããã€ãŸãããã®æç¹ã§ããã€ãã®æ¡ä»¶ãæ©èœããªããªãå¯èœæ§ããããŸãã äžè¬ã«ãããã¯ãããžã§ã¯ãã¢ãŒããã¯ãã£ã®èšèšãäžååã§ããããšã瀺ããŠããŸãã
ããããããããã¹ãŠã®ãã€ãã¹ã¯ããŸãæ°ã«ããŸããã§ããã ç§ã®ã¢ãŒãã§ã¯ã圌ããšäžç·ã«æ®ããæºåãã§ããŠããŸããã ããŒã¿æ§é å
ã®äœããå€æŽããŠããã¹ãŠã®ç¶æ
ã確èªããã®ãå¿ããŠããŸããã 次ã«ããã®ãããªãé
延ããšã©ãŒãé·ããŠã€ãŸããªããã®ã«ããŸãã
解決çã¯ãã¹ããæžãããšã§ã
ãã¹ããæžããšãäœããå€æŽãããšãèªåãã¹ãããã¹ãŠã®ç¶æ
ã®çµæããã§ãã¯ãããšããä¿èšŒãããããšã«æ°ä»ããŸããã ãã£ãïŒ ãã¹ãŠãéåžžã«ç°¡åã§ãã ã¿ã¹ã¯ã¯æ確ã§ãããããžã§ã¯ãã®ç¶æ
ã®çµæã確èªãããã§ãã
ããã§ã¯ããã¹ãã®ããã«äœããããŸããïŒ SaltStackã®ææã¯ãæ§æãã¡ã€ã«ããµãŒãã¹ãDockerã³ã³ãããŒããã¡ã€ã¢ãŠã©ãŒã«èšå®ãSElinuxãªã©ã§ãã ããã¯ãã¹ãŠServerspecãã¹ãã䜿çšããŠå®å
šã«ãã¹ããããŸã ã
ç§ã¯ãã®ããŒãã§åºäŒã£ãèšäºãæãåºãããã«ãç§ãããäŒè°ãæãåºãå§ããŸããã äžè¬ã«ããã·ã¢èªã§ã¯ãå®éã®åè¯ãªäººããã1人ã®èè
ã ããé ã®äžã§å転ããŠããŸãããIgorKurochkin IgorITL㧠ãDevConf'e 2015ã§ã®ã©ã€ããèããŸããã圌ã®ã¬ããŒããã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãã¹ãã
ãŸãã ãã¢ãžã£ã€ã«DevOpsïŒãã¹ãé§ååã€ã³ãã©ã¹ãã©ã¯ãã£ãã®åé¡ãç解ããããã®è¯ãèšäºãèŠã€ããŸããã

ãã¹ãŠã®è³æãèªãã åŸã KitchenCIããŒã«ãç§ã®ã¿ã¹ã¯ã«é©ããŠããããšã«æ°ä»ããŸããã
- SaltStackã§åäœããŸãã
- VagrantãDockerãlxcãããŸããŸãªã¯ã©ãŠããªã©ãã©ãã§ãã€ã³ãã©ã¹ãã©ã¯ãã£ã³ãŒããå®è¡ããŸãã
- ãã¹ããã¬ãŒã ã¯ãŒã¯ããµããŒãããŠããŸãïŒã³ãŠã¢ãªãRSpecãServerspecãªã©ã
ä»ã§ã¯ãã¹ãŠãç¥ã£ãŠããããã ã çè«ãããããã¹ãŠãç§ã®é ã®äžã§ããŸããããŸãããä»ã§ã¯ããã¹ãã®äœæãéå§ããããšãã§ããŸãããïŒ
æåã®ãã³ã±ãŒãã¯ãŽããŽãããŠãã
ç§ã¯ãããžã§ã¯ããèŠãŠãã©ããããããç§ã®é ã®äžã®çè«ãç§ã®çŸå®ã«ãŸã£ããåããªãããšãèŠãŸããã ç§ã®ãããžã§ã¯ãã«ã¢ãããŒãããæ¹æ³ã¯ïŒ ãã¹ããé
眮ããå Žæã¯ïŒ ããããå®è¡ããã«ã¯ïŒ
çããæ¢ããŠãç§ã¯åã³KitchenCIã®ããã¥ã¡ã³ãã泚ææ·±ãèªã¿ãŸããã æ®å¿µãªããããã®ããŒã«ã®Chefã§ã®å°éåãšãã®æ©èœã¯éåžžã«æ³šæãããããŸãã äŸã¯ãã¹ãŠåœŒã®ããã§ãã
KitchenCIã詳ããèŠãŠã¿ãŸãããã ãã®ããŒã«ã§ã¯ã次ã®ãªããžã§ã¯ããæäœããŸãã
- ãã©ã€ã㌠-KitchenCIãä»®æ³ãã·ã³ãèµ·åãããã©ã°ã€ã³ã ããšãã°ã浮浪è
ã枯湟åŽåè
ãæã®ç§»åãªã©ã ããã©ã«ãã§ã¯ãvagrantã䜿çšãããå®å
šã«ç§ã«åã£ãŠããŸã-ããŒã«ã«ã§ãã¹ããå®è¡ãããã§ãã
- ãšã³ãžã³ ïŒããããžã§ãã³ã°æ
åœè
ïŒãèšå®ã説æããŸãã ããã©ã«ãã§ã¯ãããã¯ãã¹ã¿ãŒã¬ã¹ã¢ãŒãã®Chefã§ãã
- platform-ãã¹ãä»®æ³ãã·ã³ã®ããŒã¹ãšããŠäœ¿çšãããã€ã¡ãŒãžã®ååã
- å®è¡ãããã¹ãã¹ã€ãŒã ïŒã¹ã€ãŒãïŒã äœãå€æŽããªãå ŽåãKitchenCIã¯ããã©ã«ããã£ã¬ã¯ããªã§ãã¹ããèŠã€ããããšããŸããããã¯ããã©ã«ãã»ããã®ååã§ãã
SaltStackã䜿çšããŸãã Googleã¯ãSaltStackã®ããããžã§ããŒsalt_soloãå®è£
ãããµãŒãããŒãã£ã®'kitchen-salt'ãããžã§ã¯ãããããšèšã£ãŠããŸãã ãŸãã詳现ãªã¬ãã¹ã³ãšäœ¿çšæ¹æ³ã®äŸããããŸãã
KitchenCIãškitchen-saltã®ããã¥ã¡ã³ããèªãã åŸãç§ã¯äž»ãªãã®ãæãã€ããŸãã-åã
ã®ã¬ã·ãã¯èšå®å
šäœã§ã¯ãªãïŒChefã®çšèªã§ïŒãã¹ããããŸãã SaltStackã§ã¯ãã·ã§ãã®ã¬ã·ãã¯åŒã«äŒŒãŠããŸã-ç¬ç«ãããããžã§ã¯ãã«æåºãããç¬ç«ããç¶æ
ã ãããã®åŒã¯ãä»ã®ãããžã§ã¯ãã§ã³ãŒããåå©çšããããã«äœ¿çšãããŸãã ããšãã°ã GitHubã«ã¯ãã®ãããªæ°åŒãå€æ°çšæãããŠããŸã ã
ãããç§ã®ãããžã§ã¯ããKitchenCIã«ãé©åããªããäž»ãªçç±ã§ã-ããã¯ã¢ããªã·ãã¯ã§ãã ããªãã¡ã¯ã¿ãªã³ã°ãããã³ãŒãã®äžè²«æ§ãããã¢ãžã¥ã©ãŒã¢ãããŒãããªã©ã®èšèãé ã®äžã§å転ããŸããã æ²ããã£ãã ããã°ã©ããŒãšããŠãç§ã¯ãã®ãããªèšèãç¥ããªãã¯ãã§ãã
ãããžã§ã¯ãã®ãªãã¡ã¯ã¿ãªã³ã°
ãã£ã¬ã³ãžãåãå
¥ããŸããïŒ æåã®ãªãã¡ã¯ã¿ãªã³ã°ã«ãŒã«ãèŠããŠããéããæ確ã§éæå¯èœãªæž¬å®å¯èœãªç®æšãå¿
èŠã§ãã éåžžãããã¯ããªãå€æŽãè¡ãã®ã§ããïŒããšãã質åã«å¯Ÿãã詳现ãªåçã§ãã ç§ã®å Žåã次ã®ããã«äœæãããŸããã
- ã¡ã€ã³ãããžã§ã¯ãã®ãã¹ãŠã®ç¶æ
ã¯ãåå¥ã®åæ°åŒãããžã§ã¯ãã«æåºããå¿
èŠããããŸãã
- ååŒã«ã¯ã説æãèšèŒãããREADMEãã¡ã€ã«ãå¿
èŠã§ãã
- ååŒã«ã¯ããã®ç¶æ
ãäºæããããŒã¿ã¹ãã¬ãŒãžæ§é ã®äŸãšãšãã«ã
pillar.example
ãã¡ã€ã«ãæ·»ä»ããå¿
èŠããããŸãã - åå
¬åŒã¯ãå
¬åŒææžã«èšèŒãããŠããèŠä»¶ãšæšå¥šäºé
ã«åŸã£ãŠæ§æããå¿
èŠããããŸã ã
ã¿ã¹ã¯ã®ãªã¹ããäœæããåŸãç§ã¯åã³æ²ãããã³ãŒããŒã飲ã¿ããããããã«è¡ããŸããã ç¶æ
ã次ã
ã«å¥ã®æ°åŒã«å€ãã£ãã ã¡ã€ã³ãããžã§ã¯ãããç¶æ
ãåé€ããŠããã¹ã¿ãŒãµãŒããŒã®æ§æã«æ°ããæ°åŒãžã®ãªã³ã¯ãå
¥åããŸããã ãããã£ãŠããããžã§ã¯ãã®ããã©ãŒãã³ã¹ã¯ãå
šäœã®å€æŽäžã«ç¹ã«äœäžããŸããã§ããã
ããã€ãã®å·ã®é£çµæ§ã«ãããããŒã¿ã¹ãã¬ãŒãžæ§é ãåæ€èšããå¿
èŠããããŸãããããç¬ç«ãããç°ãªãåŒã®ããã«éè€ããªãéšåã«åå²ããåæã«ããŒã¿ã®éè€ãé¿ããããšããŸããã ããã¯ããããæãé£ãããã®ã§ããã ãã®ãããäžéšã®ç¶æ
ã®ããžãã¯ã®äžéšãä»ã®ç¶æ
ã«ç§»è¡ãããŸããã
äœæ¥ã®çµæã¯ã䜿çšãããããŒã¿ã®äŸãšæå°éã®ããã¥ã¡ã³ããåãããç°¡åã§ç解å¯èœãªã»ãŒ20åã®ç¬ç«ããåŒã§ããã çµæã®ããŒã¿æ§é ã¯èããåçŽã«ãªããŸããã ãã®æ®µéã§ãããç§ã¯è¯å®çãªçµæãæããŸãã-ç§ã¯ä»ãç§ã®åŒãç¬ç«ããŠããããšãç¥ã£ãŠããããããã倧èã«å€æŽããããšã¯å¯èœã§ãã
ãã¹ãäž
ãã¹ãã®å¯Ÿè±¡ãšããŠå¥ã®æ°åŒãæ€èšãå§ãããšããã«ãKitchenCIã®äœ¿çšæ¹æ³ã«ã€ããŠããã«é ã«æµ®ãã³ãŸããã äŸãšããŠãæãåçŽãªå
¬åŒãå
±éããã±ãŒãžãã䜿çšããŠããã¹ãããã»ã¹ãèŠãŠã¿ãŸãããã ãã®åŒã¯ãç§ã®ãµãŒããŒã®ããããã§æºããäºå®ã®ã·ã¹ãã ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã ãããã¯ç§ã«ãªãã¿ã®ãããŠãŒãã£ãªãã£ã§ãã
NBïŒ ããã«äžã®è¡ã§ã¯ããã¹ãŠã®ã³ãã³ããæ°åŒãããžã§ã¯ãã®ã«ãŒãã§å®è¡ãããŸãã
ããã¯ãåŒã®å
ã®ãã¡ã€ã«æ§é ã¯æ¬¡ã®ããã«ãªããŸãã
.git common-packages/init.sls pillar.example README.md
init.sls
ïŒ
packages: pkg.latest: - pkgs: {%- if pillar['packages'] is defined %} {%- for package in pillar['packages'] %} - {{ package }} {% endfor %} {% endif %}
ãµã³ãã«ããŒã¿ã pillar.example
ïŒ
packages: - bind-utils - whois - git - psmisc - mlocate - openssl - bash-completion - net-tools
KitchenCIãæ©èœããããã«ã¯ãã€ã³ã¹ããŒã«ãããVagrantãšrubyïŒãããŠãã¡ããgem bundlerïŒãå¿
èŠã§ãã åŒã®ãããžã§ã¯ãã®ã«ãŒãã«ãå¿
èŠãªã«ããŒå®ç³ã®ãªã¹ããGemfile
ãäœæããŸãã
source "https://rubygems.org" gem "test-kitchen" gem "kitchen-salt" gem "kitchen-vagrant"
次ã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸãã
$ bundle install
KitchenCIã«ããã¹ãçšã®æ§é ãšã¹ã¿ããã¡ã€ã«ãäœæããããã«äŸé ŒããŸãã
$ sudo kitchen init -P salt_solo
ç»å ŽããŸããïŒ
--- driver: name: vagrant provisioner: name: salt_solo platforms: - name: ubuntu-14.04 - name: centos-7.2 suites: - name: default run_list: attributes:
.kitchen.yml
åŒã®èª¬æã.kitchen.yml
ã.kitchen.yml
ã
--- driver: name: vagrant provisioner: name: salt_solo formula: common-packages # <- pillars-from-files: packages.sls: pillar.example # <- pillar.example, pillars: # <- (pillar'), ! top.sls: base: '*': - packages state_top: # <- state.sls base: '*': - common-packages platforms: - name: centos-7.2 # <--- CentOS 7, suites: - name: default run_list: attributes:
äžè¬ã«ããã¹ãŠãæºåãã§ããŠããŸãã ä»®æ³ãã·ã³ãäœæããŠæ§æãããã®äžã®åŒãå®è¡ããŸãããã
$ kitchen converge centos-7.2

ã¯ããKitchenCIã¯æ¬¡ã®ããšãè¡ããŸããã
- CentOS 7ã«åºã¥ããŠä»®æ³ãã·ã³ãäœæããŸããã
- ãã®ãã·ã³å
ã§Saltlessããã¹ã¿ãŒã¬ã¹ã¢ãŒãã§ã€ã³ã¹ããŒã«ããã³èšå®ããŸããã
- æ°åŒãé©çšããŸããã
- äžèšã®ãã¹ãŠã®ã¹ãããã«é¢ãã詳现ãªãã°ãæäŸããŸããã
ã»ã»ã» äžéã®å€æŽããã¹ã¿ãŒã«ã³ãããããŠãããã«ãã®ããã«ã¬ã€ã¢ãŠãããããšãªããæ°åŒãäœæãããããã®ãã°ãä¿®æ£ã§ããããã«ãªããŸããã ãæŠéãã€ã³ãã©ã¹ãã©ã¯ãã£ã¯èããå®å®ããŠãããç§ã®ã³ããããã°ãçªç¶æ¥ããšããŠãæ¥ãããããªãããã§ãã
ãã·ã³ã®å
éšã«å
¥ããšãåŒã®çµæãæã§èŠãããšãã§ããŸãã
$ kitchen login centos-7.2
KitchenCIã䜿çšããŠãæ°åŒãå®è¡ããŠãã®ããã©ãŒãã³ã¹ããã¹ãããæ¹æ³ãåŠã³ãŸããã æã§ç¢ºèªããã®ã¯çŽ æŽãããããšã§ãã ããããèªåãã¹ãã¯ã©ãã«ãããŸããïŒ èªåãã¹ãã§åŒã®çµæã確èªããŸãããã
ãããè¡ãã«ã¯ã次ã®æé ãå®è¡ããŸãã
- ãã£ã¬ã¯ããª
./test/integration/default/serverspec
äœæããŸã - ãããŠããã®äžã«packages_spec.rbãã¡ã€ã«ãé
眮ããŸã
packages_spec.rb泚æïŒ æ¥å°ŸèŸ_specãå¿
èŠã§ãã ãããšä»ã®ãã¥ã¢ã³ã¹ã«ã€ããŠèªãããšãã§ããäžè¬ã«ãå
¬åŒWebãµã€ãhttp://serverspec.org/ã§Serverspecãç¥ãããšãã§ããŸãã
require 'serverspec'
æéãç¯çŽãããã·ã³ãäœæãããŠãŒãããèšå®ããããŸã§åã³åŸ
ããªãããã«ãKitchenCIã«ãã¹ããå®è¡ããŠããããŸãããã
$ kitchen verify centos-7.2

ããããã¹ãŠã®éæ³ã§ãã
KitchenCIã䜿çšãããšãäžèšã®ãã¹ãŠã®æé ã1ã€ã®ã³ãã³ãã§å®è¡ã§ããŸãïŒkitchen testã ä»®æ³ãã·ã³ãäœæãããåŒãšãã¹ããå®è¡ãããåŸããã·ã³ãç Žæ£ãããŸãã
æ©èœãã¹ã
kitchen-saltã¯ãåã
ã®åŒã ãã§ãªãããã®ã»ããããã¹ãã§ããŸãã ã€ãŸããããã€ãã®åŒã®æçµçµæãååã«ãã¹ãã§ããŸãã ãã®ãã¹ãã¯ãæ°åŒãé£æºããŠæ©èœãããã©ãããããã³æåŸ
ãããçµæãåŸããããã©ããã瀺ããŸãã ããã¯ãã¹ãŠãããããžã§ããŒã®ãªãã·ã§ã³ã®ããŸããŸãªçµã¿åããã«ããå¯èœã§ãïŒ https : //github.com/simonmcc/kitchen-salt/blob/master/provisioner_options.md ããã¯ãKitchenCIãšãã¹ãããããžã§ã¯ãã®åæãã©ãŒã ã«æ·»ä»ã§ããããšãæå³ããŸãããæçµçã«ã¯ã¯ããã«è¯ããªã£ãããã§ãã
çµè«
ä»ã§ã¯ãå€ãåŒããã£ãããšãã¹ãã§ã«ããŒããæ°ããåŒãäœæãã以åããã¯ããã«é«éã«äœæããŸãã ãããŠããã€ã§ããæ°ãããã®ãšå€ããã®ã®äž¡æ¹ã®åŒã®å¹çã«èªä¿¡ããããŸãã ã¯ãããªãã¡ã¯ã¿ãªã³ã°ãšãã¹ãã®äœæã«æéãè²»ãããŸãããããã±ãããããžã§ã¯ãã§ã®äœæ¥ãæããã«å¢å ããŸããã çŸåšããããžã§ã¯ããé·æé延æããå¿é
ã¯ãããŸããããããžã§ã¯ãèªäœã®è€éãããæ°åŒãæ©èœããªãçç±ãäžæãªããããããžã§ã¯ããç¶ç¶ã§ããŸããã ã¯ãããªãã¡ã¯ã¿ãªã³ã°ã¯ç§ã®å人çãªæéã®æ°æ¥ããããŒãé£ããŸããã ã¯ãããã¹ããæžãã®ã¯éå±ã§ããããããžã§ã¯ãã«èªä¿¡ãäžããŸãã 涌ããæãã
ç§ã¯è³ªåã«çããŠãã³ã¡ã³ããšå°æ¥ã®ãã³ããèããŠããããã§ã:)
åç
§è³æ