ç®æ¬¡
- 1.ãªããžããª
- 2.ãã³ãã¬ãŒãã®æ©èœ
- 3.ã»ããã¢ãããšäœ¿ãæ¹
- 3-1.åææ¡ä»¶
- 3-2.äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«
- 3-3.éçºç°å¢ã®ã»ããã¢ãã
- 3-4.å©çšå¯èœãªã¹ã¯ãªãã
- 3-5.ã«ã¹ã¿ãã€ãº
- 4.ãã³ãã¬ãŒãã®æè¡çèæ¯
- 4-1.wp-env
- 4-2.ã©ã€ããªããŒã
- 4-3.Node.js
- 4-4.Composer
- 4-5.ãã«ãããŒã«ã®éžæã«ã€ããŠ
- 4-6.ãªã³ã¿ãŒã»ãã©ãŒããã¿ãŒ
- 4-7.EditorConfig
- 4-8.CSS
- 4-9.JavaScript/TypeScript
- 4-10.Gitããã¯
- 4-11.GitHub Actions
- 4-12.äŸåããã±ãŒãžã®æŽæ°
- 5.ããŸãïŒwp-envã®ããŒã«ã«ç°å¢ã«æ¬çªç°å¢ã®ããŒã¿ãåæããã¹ã¯ãªãã
- 6.ãŸãšã
ãã®èšäºã¯Snow Monkey / unitone Advent Calendar 2025ã®1æ¥ç®ã®èšäºã§ãã
WordPressããŒãSnow Monkeyã«ã¯ãããŒããã«ã¹ã¿ãã€ãºããããã®ãã©ã°ã€ã³ã®ãã³ãã¬ãŒããMy Snow Monkeyããå ¬åŒããæäŸãããŠããŸãã
ã«ã¹ã¿ãã€ãºã軜埮ãªãã¡ã¯ãã®My Snow Monkeyã§ååã§ãããéçºãé²ããŠãããšãªã³ã¿ãŒããã©ãŒããã¿ãŒããã«ãããŒã«ãªã©ã®éçºç°å¢ãæŽåããããªã£ãŠããŸãã
ãšããããã§ä»åãéçºç°å¢ãæŽããMy Snow Monkeyã®ãã³ãã¬ãŒããäœæããã®ã§ç޹ä»ããŸãã
ãªããžããª
ãã³ãã¬ãŒãã®ãªããžããªã¯ãã¡ãã§ãã
GitHub - foolish-pine/my-snow-monkey-boilerplate: Development boilerplate for the My Snow Monkey WordPress plugin.
Development boilerplate for the My Snow Monkey WordPress plugin. - foolish-pine/my-snow-monkey-boilerplate
github.com
以äžã§ã¯ããã®ãã³ãã¬ãŒãã®æ©èœã»äœ¿ãæ¹ãšãã®æè¡çèæ¯ã玹ä»ããŸãã
ãã³ãã¬ãŒãã®æ©èœ
ãã®ãã³ãã¬ãŒãã«ã¯ä»¥äžã®æ©èœããããŸãã
- PostCSSã«ããCSSã®ãã«ã
- ã³ãŒãã®èªåãªã³ãã»ãã©ãŒããã
- ã©ã€ããªããŒãæ©èœä»ãã®WordPressããŒã«ã«ç°å¢
- ã³ãããåã®ãã¡ã€ã«ã®ãªã³ãããã©ãŒãããããšã©ãŒã®æ€ç¥
- Renovateã«ããäŸåããã±ãŒãžã®æŽæ°
ã»ããã¢ãããšäœ¿ãæ¹
ãªããžããªã®READMEãšåãå 容ãªã®ã§ãREADMEã§ååãšããæ¹ã¯é£ã°ããŠããã ããŠå€§äžå€«ã§ãã
åææ¡ä»¶
ãã®ãã³ãã¬ãŒãã䜿çšããã«ã¯ä»¥äžãå¿ èŠã§ãã
- Docker
- Volta
- PHP 8.3以äž
- Composer
- Snow Monkey
ãŸãããã®ãã³ãã¬ãŒãã¯Visual Studio CodeïŒãŸãã¯Cursorã®ãããªVS Codeãã©ãŒã¯ã®ãšãã£ã¿ãŒïŒã§äœ¿çšãããããšãæšå¥šãããŸãããã®ãã³ãã¬ãŒããVS Codeã§éããšæšå¥šæ¡åŒµæ©èœãã€ã³ã¹ããŒã«ããããä¿ãããã®ã§ãã€ã³ã¹ããŒã«ããŠãã ããã
äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«
-
ãã³ãã¬ãŒãã®ãªããžããªãã¯ããŒã³ãã
Terminal window git clone https://github.com/foolish-pine/my-snow-monkey-boilerplatecd my-snow-monkey-boilerplate -
Node.jsã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãã
Terminal window npm install -
PHPã®äŸåé¢ä¿ãã€ã³ã¹ããŒã«ãã
Terminal window composer install
éçºç°å¢ã®ã»ããã¢ãã
ããŒã«ã«WordPressç°å¢ã®èµ·å
-
Dockerãèµ·åããŠãã
-
以äžã®ã³ãã³ãã§ããŒã«ã«ç°å¢ãèµ·åãã
Terminal window # ããŒã«ã«WordPressç°å¢ã®èµ·å (http://localhost:8888 ã§ã¢ã¯ã»ã¹ã§ãã)npm run wp-env start# ç°å¢ã®åæ¢npm run wp-env stop
Snow MonkeyãšMy Snow Monkeyã®æå¹å
http://localhost:8888/wp-adminã§ç®¡çç»é¢ã«ã¢ã¯ã»ã¹ããïŒããã©ã«ãã®ãŠãŒã¶ãŒåã»ãã¹ã¯ãŒãã¯ããããadminãšpasswordïŒ- Snow Monkeyãã€ã³ã¹ããŒã«ããŠæå¹åãã
- ãã©ã°ã€ã³ããŒãžã§My Snow Monkeyãæå¹åãã
éçºã®ã¯ãŒã¯ãããŒ
äžèšã®ããŒã«ã«ç°å¢ãèµ·åããç¶æ ã§ä»¥äžã®ã³ãã³ããå®è¡ãããšãã©ã€ããªããŒãæ©èœä»ãã®éçºçšãµãŒããŒãèµ·åããŸãã
npm run watchãã®ã³ãã³ãã¯ä»¥äžã®ããšãããŸãã
- CSSãã¡ã€ã«ã®å€æŽãæ€ç¥ããŠåãã«ããã
http://localhost:3000ã«éçºçšãµãŒããŒãèµ·åããïŒhttp://localhost:8888ã®ãããã·ïŒ- ãã¡ã€ã«ã®å€æŽãæ€ç¥ããŠãã©ãŠã¶ãèªåã§ãªããŒããã
å©çšå¯èœãªã¹ã¯ãªãã
ãã«ã
# ãã¹ãŠã®ã¢ã»ããã®ãã«ãnpm run build
# CSSã®ã¿ãã«ãnpm run build:stylesCSSã®ãã«ãã§ã¯src/styles/以äžã®CSSãã¡ã€ã«ãPostCSSã§å€æãããŠdist/style.cssãšããŠåºåãããŸãã
ãªã³ã
# ãã¹ãŠãªã³ãnpm run lint
# CSSããªã³ãnpm run lint:stylelint
# ã³ãŒãã®ãã©ãŒãããã確èªnpm run lint:prettier
# PHPããªã³ãcomposer lintä¿®æ£
# ä¿®æ£å¯èœãªåé¡ããã¹ãŠä¿®æ£npm run fix
# CSSã®åé¡ãä¿®æ£npm run fix:stylelint
# ã³ãŒãã®ãã©ãŒããããä¿®æ£npm run fix:prettier
# PHPã®åé¡ãä¿®æ£composer fixã«ã¹ã¿ãã€ãº
CSSã®è¿œå
src/styles/以äžã«CSSãã¡ã€ã«ã远å ããsrc/styles/style.cssã§ããããã€ã³ããŒãããnpm run buildãnpm run watchã§ãã«ããã
ãã«ããããCSSã¯dist/style.cssã«åºåãããŸãã
ãã³ãã¬ãŒãã®æè¡çèæ¯
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããã³ãã¬ãŒãã®æè¡çãªèæ¯ã«ã€ããŠç§ã®èãã亀ããªãã玹ä»ããŠãããŸãã
wp-env
ãã®ãã³ãã¬ãŒãã§ã¯WordPressã®ããŒã«ã«ç°å¢æ§ç¯ã«wp-envã䜿çšããŠããŸãã
WordPressã®ããŒã«ã«ç°å¢ãæ§ç¯ããæ¹æ³ã¯è²ã
ãããŸãããwp-envã«ã¯ä»¥äžã®ã¡ãªããããããŸãã
- ã³ãã³ãã§ç°¡åã«ã»ããã¢ããã§ãã
- èšå®ãã¡ã€ã«ïŒ
.wp-env.jsonïŒã§æè»ã«ç°å¢èšå®ã»å ±æã§ãã - ãªã«ããå ¬åŒãæäŸããããŒã«ã§ãã
äžèšã®ç¹ãã以åãã奜ãã§wp-envã䜿ã£ãŠããã®ã§ãä»åã®ãã³ãã¬ãŒãã§ãæ¡çšããããšã«ããŸããã
ã¡ãªã¿ã«PHPã®ããŒãžã§ã³ã8.3ãšããŠããã®ã¯ããšãã¯ã¹ãµãŒããŒã®çŸæç¹ã§ã®æšå¥šPHPããŒãžã§ã³ã8.3ã ããã§ãããå©çšã®ç°å¢ã«å¿ããŠå€æŽããŠãã ããã
ã©ã€ããªããŒã
Browsersyncã䜿ã£ãŠããŸãã
ã³ãŒãã倿Žããããšãã©ãŠã¶ãæåã§ãªããŒãããã®ãé¢åãªã®ã§å°å ¥ããŠããŸãã
èšå®ã¯ã·ã³ãã«ã§ãéçºçšãµãŒããŒlocalhost:3000ãèµ·åããŠãã¡ã€ã«ã®å€æŽãæ€ç¥ããããã©ãŠã¶ããªããŒãããŠããã ãã§ãã
ãã£ãšäŸ¿å©ãªããŒã«ãã¹ããŒããªæ¹æ³ãããã°æããŠãã ããã
Node.js
Node.jsã®ããŒãžã§ã³ç®¡çã«Voltaã䜿çšããŠããŸããèšå®ã¯package.jsonã®volta.nodeã«ãããŸãã
Voltaã䜿çšããªããã°ãããªãçç±ã¯ãããŸãããç§ãæ®æ®µããVoltaã§Node.jsã®ããŒãžã§ã³ã管çããŠããã®ã§ããã®ãã³ãã¬ãŒãã§ãããããŠããã ãã§ããä»ã®ããŒã«ã䜿ã£ãŠããã£ãŠãæ§ããŸããããææ°ã®Node.jsãçŽæ¥ã€ã³ã¹ããŒã«ããã®ã§ãOKã§ãããã®å ŽåãVoltaã®å°å ¥ã¯äžèŠã§ãã
Composer
Composerã¯PHPã®ããã±ãŒãžãããŒãžã£ãŒã§ãã
èšå®ãã¡ã€ã«ã¯composer.jsonã§ãã
PHPã®ããã±ãŒãžãšãã£ãŠããã®ãã³ãã¬ãŒãã§ã¯ãªã³ã¿ãŒããå ¥ããŠããŸããã
ãã«ãããŒã«ã®éžæã«ã€ããŠ
WordPressã«ã¯å
¬åŒãçšæããéçºã¹ã¯ãªããã®ã³ã¬ã¯ã·ã§ã³ã§ããwp-scriptsããããŸãã
åœåã¯ããã䜿ãããšæã£ãã®ã§ããã以äžã®çç±ããæ¡çšãèŠéããŸããã
- ã¡ã³ããã³ã¹ã®é »åºŠãé«ããªããå éšã§äŸåããŠããããã±ãŒãžã®ããŒãžã§ã³æŽæ°ãé ããã¡
- äžèšã«èµ·å ããŠã
wp-scripts以å€ã®ããã±ãŒãžã®ããŒãžã§ã³æŽæ°ãå¶éããã - JSã®ãªã³ãããã¹ããªã©ããã®ãã³ãã¬ãŒãã§ã¯äœ¿ããªãæ©èœã忢±ãããŠãã
ãšããããã§ãwp-scriptsã¯äœ¿ããå¿
èŠãªãªã³ã¿ãŒããã«ãããŒã«ã®ã¿ãåå¥ã«å°å
¥ããããšã«ããŸããã
ãªã³ã¿ãŒã»ãã©ãŒããã¿ãŒ
åãªã³ã¿ãŒã«ã€ããŠãVS CodeãŸãã¯ãã®ãã©ãŒã¯ãšãã£ã¿ãŒåãã®èšå®ã.vscode/settings.jsonã«èšèŒããŠããŸãã.vscode/extensions.jsonã«èšèŒã®ãã©ã°ã€ã³ãå°å
¥ããã°ããšãã£ã¿ãŒäžã§ã®ãšã©ãŒè¡šç€ºãšä¿åæã®èªåä¿®æ£ãå©çšã§ããŸãã
ã«ãŒã«ã¯WordPresså ¬åŒãæäŸããŠãããã®ããã®ãŸãŸå©çšããŠããŸãã
Stylelint
Stylelintã¯CSSã®ãªã³ã¿ãŒã§ãã
èšå®ãã¡ã€ã«ã¯stylelint.config.cjsã§ãã
åœåã«ãŒã«ãSnow Monkeyã®åœåãšãããã£ã³ã°ããããselector-class-patternã«ãŒã«ã¯nullãèšå®ããŠç¡å¹åããŠããŸãã
ããããã£ã®äžŠã³é ã®ã«ãŒã«ãšããŠstylelint-config-recess-orderã䜿çšããŠããŸãã䞊ã³é ãèšå®ããã«ãŒã«ã¯ä»ã«ãããã€ãããã®ã§ãã奜ããªãã®ã䜿çšããŠãã ããã
PHP_CodeSniffer
PHP_CodeSnifferã¯PHPã®ãªã³ã¿ãŒããã³ãã©ãŒããã¿ãŒã§ãã
èšå®ãã¡ã€ã«ã¯phpcs.xml.distã§ãã
ãã£ãã·ã¥ã.cache/phpcs.jsonã«ä¿åããããèšå®ããŠããŸãã
Prettier
PHP以å€ã®ãã¡ã€ã«ã®ãã©ãŒããã¿ãŒã«ã¯Prettierã䜿çšããŸãã
èšå®ãã¡ã€ã«ã¯.prettierrcãš.prettierignoreã§ãã
EditorConfig
EditorConfigã¯ãšãã£ã¿ãŒéã§ã®æžåŒãçµ±äžããããã®ããŒã«ã§ãã
èšå®ãã¡ã€ã«ã¯.editorconfigã§ãããã¡ããWordPresså
¬åŒãæäŸããã«ãŒã«ãèšå®ããŠããŸãã
ãã©ãŒããã¿ãŒããããªãEditorConfigã¯ããå¿ èŠãªãã®ã§ã¯ãšæããŸããããæ°æ§ã§å°å ¥ããŠããŸããäžèŠãªãåé€ããŠãã ããã
CSS
ãã®ãã³ãã¬ãŒãã§ã¯CSSãPostCSSã§ãã«ãããŠããŸãã
PostCSSã¯CSSã«ä»»æã®åŠçãå ããŠå¥ã®CSSãã¡ã€ã«ã«åºåããããŒã«ã§ãã
èšå®ãã¡ã€ã«ã¯postcss.config.cjsã§ããåãã©ã°ã€ã³ã¯ä»¥äžã®çšéã§å°å
¥ããŠããŸãã
- postcss-importïŒ
@importããCSSãã¡ã€ã«ãåºåå ã§å±éãããã - PostCSS NestedïŒããããªããšã¡ãã£ã¢ã¯ãšãªã®ãã¹ãããã«ãåŸã«ç¶æãããªãã£ããã
- PostCSS Preset EnvïŒã¢ãã³ãªCSSã®å€æãšãã³ããŒãã¬ãã£ãã¯ã¹ã®ä»äžïŒAutoprefixerãå èµãããŠããïŒ
- cssnanoïŒåºåããCSSã®ãããã¡ã€
ã¿ãŒã²ãããã©ãŠã¶ã¯.browserslistrcã§æå®ããŠããŸãããã¡ããWordPresså
¬åŒã®èšå®ããã®ãŸãŸäœ¿çšããŠããŸãã
ç§ã¯ããSassã䜿ã£ãŠããªãã®ã§Sassã®ãã«ãç°å¢ã¯å«ãŸããŠããŸãããå¿ èŠãªãåèªã§ç°å¢ã远å ããŠãã ããã
JavaScript/TypeScript
Snow Monkeyã®ã«ã¹ã¿ãã€ãºã«ãããŠJSãæžããããªãããšããããŸã§äžåºŠããªãã£ãã®ã§ããã³ãã¬ãŒãã«ã¯JS/TSã®éçºç°å¢ãå ¥ããŠããŸããã
å¿ èŠãªãESLintãªã©ã®ãªã³ã¿ãŒãã奜ã¿ã®ãã«ãç°å¢ã远å ããŠãã ããã
Gitããã¯
Gitããã¯ãšã¯ãGitã³ãã³ãã®ååŸã§ç¹å®ã®ã¹ã¯ãªãããå®è¡ããä»çµã¿ã®ããšã§ãã
ãã®ãã³ãã¬ãŒãã§ã¯ãªã³ã¿ãŒãšã©ãŒãããç¶æ ã§ã®ã³ãããããã£ã³ã»ã«ããããã¯ãçšæããŸããã
Gitããã¯ã¯Lefthookã§ç®¡çããŠããŸããèšå®ãã¡ã€ã«ã¯lefthook.ymlã§ãã
GitHub Actions
GitHubãæäŸããä»»æã®ã¯ãŒã¯ãããŒãèªååãããµãŒãã¹ã§ãã
CIã¯ãŒã¯ãããŒãçšæããŠããŸããmainãã©ã³ããžã®ããã·ã¥ããã«ãªã¯ãšã¹ãã®äœæã»å€æŽã§ããªã¬ãŒããããªã³ããšãã«ããå®è¡ããŸãã
å®éã®éçºã§ã¯ãç§ã¯ä»¥äžã®ãããªã¯ãŒã¯ãããŒãçšæããŸãã
- ãã¹ãç°å¢ãžã®ãããã€
- ãªãªãŒã¹ã®çæ
- ãªãªãŒã¹ã®å ¬éãããªã¬ãŒãšããæ¬çªç°å¢ãžã®ãããã€
ãªãªãŒã¹ã®çæããããã€ã®ã¯ãŒã¯ãããŒã«ã€ããŠã¯ä»¥åã«èšäºãæžããã®ã§ãèå³ãããã°ãã¡ããåç §ããŠãã ããã
GitHub Actionsã§æ¥ä»ããŒã¹ã®ãªãªãŒã¹ãèªåçæããïœgreenciderïŒã°ãªãŒã³ãµã€ããŒïŒ
GitHub Actionsã§æ¥ä»ããŒã¹ã®ãªãªãŒã¹ãèªåçæããæ¹æ³ãè§£èª¬ãæ¥ä»+é£çªåœ¢åŒã®ã¿ã°ã§äžè²«ãããªãªãŒã¹ç®¡çãå¯èœã«ãªããŸãã
greencd.jp
GitHub Actionsãšrsyncã§ãããã€ãèªååããïœgreenciderïŒã°ãªãŒã³ãµã€ããŒïŒ
GitHub Actionsãšrsyncã§ãããã€ãèªååããæ¹æ³ã解説ãã¯ãŒã¯ãããŒäœæããèšå®ãŸã§ãå¹ççãªãããã€ç°å¢ã®æ§ç¯æ¹æ³ã玹ä»ããŸãã
greencd.jp
äŸåããã±ãŒãžã®æŽæ°
ãã®ãã³ãã¬ãŒãã§ã¯Renovateã䜿ã£ãŠããŸãã
Renovateã¯äŸåããã±ãŒãžã®æŽæ°ã®æç¡ãç£èŠããæŽæ°ãããã°ã¢ããããŒãã®ããã®ãã«ãªã¯ãšã¹ããèªåã§çæããŠãããŸãã
èšå®ãã¡ã€ã«ã¯renovate.jsonã§ããRenovateã¯ããã©ã«ãã ãšé »ç¹ã«ãã«ãªã¯ãšã¹ãããªããŒã¹ããŠCIãã¶ãåããŠããŸãã®ã§ãèªåã§ãªããŒã¹ããªãããèšå®ããŠããŸãããã®ãããã®è©³çްãèšäºã«ããŠããŸããèå³ãããã°ã©ããã
Renovateã«ããCIå®è¡åæ°ãåæžããïœgreenciderïŒã°ãªãŒã³ãµã€ããŒïŒ
Renovateã®ãã«ãªã¯ãšã¹ãã«ããGitHub Actionsã®éå°ãªå®è¡ãé²ãèšå®æ¹æ³ã解説ããŸãã
greencd.jp
ããŸãïŒwp-envã®ããŒã«ã«ç°å¢ã«æ¬çªç°å¢ã®ããŒã¿ãåæããã¹ã¯ãªãã
ãã³ãã¬ãŒãã«ã¯å«ãŸããŠããŸãããã䜵çšãããšäŸ¿å©ãªã¹ã¯ãªãããããã®ã§ã€ãã§ã«ç޹ä»ããŸãã
ããŒã«ã«ã§éçºãé²ããŠãããšãæ¬çªç°å¢ãšããŒã«ã«ãåæãããããªãããšããããŸãããµã€ãç§»è¡ãã©ã°ã€ã³ã䜿ãã°ã§ããªãã¯ãªãã§ããããµã€ãã®èŠæš¡ã倧ãããšãã©ã°ã€ã³ã®å®¹éå¶éã«åŒã£ããã£ããäœæ¥ã«æéãããã£ããããã®ã§é¢åã§ãã
ããã§ä»¥åããã®åæãèªååããã¹ã¯ãªãããäœæããŸããããã®ãã³ãã¬ãŒããšåãããŠå©çšãããšãšãŠã䟿å©ã§ãã
詳现ã¯ä»¥äžã®èšäºãã芧ãã ããã
wp-envã®ããŒã«ã«ç°å¢ã«æ¬çªç°å¢ã®ããŒã¿ãåæããã¹ã¯ãªããïœgreenciderïŒã°ãªãŒã³ãµã€ããŒïŒ
wp-envã®ããŒã«ã«ç°å¢ã«æ¬çªããŒã¿ãå®å šã«åæããBashã¹ã¯ãªããã玹ä»ãããŒã¿ããŒã¹ããã¡ã€ã«ã®åæãèªååããéçºå¹çãå€§å¹ ã«åäžãããŸãã
greencd.jp
ãŸãšã
æ¬èšäºã§ã¯ãéçºç°å¢ãæŽåããMy Snow Monkeyãã³ãã¬ãŒãã玹ä»ããŸããã
ãªã³ã¿ãŒã»ãã©ãŒããã¿ãŒã»ãã«ãããŒã«ã»CI/CDãªã©ãèŠæš¡ã®å€§ããªSnow Monkeyã«ã¹ã¿ãã€ãºã«å¿ èŠãªéçºç°å¢ãäžéãæããŠããŸãããã®ãŸãŸäœ¿ããããããããžã§ã¯ãã«åãããŠã«ã¹ã¿ãã€ãºãããããã§ãããã²æŽ»çšããŠã¿ãŠãã ããã
ç§ãã¡greenciderã¯ãå°åã®ã¯ãªãšã€ãã£ãã»ããŒãããŒãã§ãã
ã¹ã¿ããããããã®å°éã¹ãã«ãèå³é¢å¿ãçãããŠãå°å課é¡ãã¯ãªãšã€ãã£ãã®åã§è§£æ±ºããŠããŸãã
å¶äœã«é¢ãããçžè«ã¯ãåãåãããã©ãŒã ãããæ°è»œã«ãé£çµ¡ãã ããã
ãŸããç§ãã¡greenciderãšãšãã«ãã¯ãªãšã€ãã£ããéããŠå°å課é¡ãå°æ¹åµçã«åãçµã¿ããæ¹ãããã²ãåãåãããã©ãŒã ãããé£çµ¡ãã ããã
ãåãåããïœgreenciderïŒã°ãªãŒã³ãµã€ããŒïŒ
å¶äœã®ãçžè«ãèŠç©ããäŸé Œããã®ä»ãåãåããã¯ãåãåãããã©ãŒã ãããæ°è»œã«ãé£çµ¡ãã ããã
greencd.jp

