æŠèŠ
å人ã§ã¹ããã¢ããªãäœã£ãŠããŸãã
ããã¹ãã¢ã«å ¬éããããšãããšãã¢ããªæ¬äœãšã¯å¥ã«WebããŒãžãå¿ èŠã«ãªããŸãã
- ãã©ã€ãã·ãŒããªã·ãŒããŒãžïŒApp Storeã»Google Play ã©ã¡ãã URL ã®èšèŒãå¿ é ïŒ
- ãµããŒãããŒãžïŒApp Store ã¯ãµããŒã URL ãå¿ é ïŒ
- ã€ãã§ã«ãã¢ããªç޹ä»ã®ãããããŒãžã欲ãã
äžèº«ã¯ãã ã®éçHTMLãæ°æããªã®ã«ããã®ããã ãã« S3 + CloudFront ãçµãã ããNetlify ã«æ°ãããããžã§ã¯ããäœã£ããããã®ã¯ãæ£çŽé¢åã§ãããããããã€ã®ä»çµã¿ãã²ãšã€å¢ããããã¢ããªæ¬äœãšã¯å¥ã®å Žæã«ã管çãããã®ããçãŸããŠããŸããŸãã
ã¢ããªã®ãªããžããªã®äžã§ããœãŒã¹ã³ãŒããšäžç·ã«ç®¡çã§ãããæé«ã§ã¯ïŒ
ãããGitHub Pages ã®ã/docs ãã©ã«ãå
¬éãã§ã§ããŸãããç¡æã»ç¬èªãã¡ã€ã³å¯Ÿå¿ã»HTTPSèªåã»ãããã€ã¯ git push ããã ãã§ãã
åãç¶æ³ã®å人éçºè ã¯å€ããšæãã®ã§ãæé ããŸãšããŸãã
åæãšããŠãç¬èªãã¡ã€ã³ïŒãã®èšäºã§ã¯ example.jp ãšããŸãïŒã¯ååŸæžã¿ã®ç¶æ
ããã¹ã¿ãŒãããŸããDNS ã®ç®¡çç»é¢ã䜿ããã°ãCloudflare ã§ããåå.com ã§ãããããšã¯åãã§ãã
ä»çµã¿
ãªããžããªã¯ãããªããŸãã
your-app/ # ã¢ããªã®ãªããžããªïŒpublicïŒ
âââ lib/ # ã¢ããªã®ãœãŒã¹ã³ãŒã
âââ ios/ android/ # ïŒãªã©ããã€ãã®ã¢ããªã®äžèº«ïŒ
âââ docs/ # â ãã®ãã©ã«ãããã®ãŸãŸ https://example.jp/ ã«ãªã
âââ index.html # â https://example.jp/
âââ privacy.html # â https://example.jp/privacy.html
âââ support.html # â https://example.jp/support.html
docs/ ã®äžèº«ãããã®ãŸãŸå
¬éãµã€ãã®ããã¥ã¡ã³ãã«ãŒãã«ãªããŸãã
- å ¬éã»æŽæ°ã¯ main ãã©ã³ãã« push ããã ãïŒ1åååŸã§åæ ïŒ
- ãã©ã³ãåé¢ã GitHub Actions ã®ã¯ãŒã¯ãããŒãäžèŠ
- ããã©ã€ãã·ãŒããªã·ãŒã®æèšãçŽããããšããã³ãããããã¢ããªã®å±¥æŽãšåãå Žæã«æ®ã
ã¢ããªéçºãšå®å šã«åããããŒã§ãµã€ããåãã®ãããã®æ¹åŒã®äžçªãããããšããã§ãã
ã»ãã®æ¹æ³ãšæ¯ã¹ãŠã©ããªã®ïŒ
äžå¿ãã»ãã®éžæè¢ã調ã¹ãŸããã
| æ¹æ³ | è²»çš | ã²ãšããš |
|---|---|---|
| GitHub PagesïŒ/docs å ¬éïŒ | ç¡æ | ä»åã®æ¹æ³ãã¢ããªã®ãªããžããªå ã§å®çµ |
| S3 + CloudFront | ã»ãŒç¡æ | apex ãã¡ã€ã³ïŒexample.jpïŒå¯Ÿå¿ã«ã¯ CloudFront + ACM ãå¿ èŠã§ãéç3ããŒãžã«ã¯å€§ãã |
| Netlify / Vercel | ç¡æ | ååã¢ãªããã ãã¢ããªãšã¯å¥ã®ãµãŒãã¹ã»å¥ãããžã§ã¯ããå¢ãã |
| Firebase Hosting | ç¡æ | åäžããããã€ã³ãã³ããã¢ããªãšã¯å¥ç³»çµ±ã«ãªã |
ãéçããŒãžãæ°æããapex ãã¡ã€ã³ã§å ¬éããããã管çãããã®ãå¢ãããããªãããšããæ¡ä»¶ãªããGitHub Pages äžæã§ããã
ãªããGitHub Pages ãç¡æãªã®ã¯ public ãªããžããªã®å Žåã§ããã¢ããªã®ãªããžããªã private ã®å Žåã¯ææãã©ã³ïŒPro 以äžïŒãå¿ èŠã«ãªãã®ã§ãããã ãæ³šæããŠãã ããã
å šäœã®æµã
-
docs/ãã©ã«ãã« HTML ã眮ã㊠push ãã - GitHub ã® Settings â Pages ã§å ¬éèšå®ããã
- ã«ã¹ã¿ã ãã¡ã€ã³ãèšå®ãã
- DNS ã¬ã³ãŒãã远å ãã
- HTTPS ãæå¹åããŠè¡šç€ºã確èªãã
é çªã«èŠãŠãããŸãã
ð ã¹ããã1ïŒdocs/ ãã©ã«ãã«ããŒãžã眮ã
main ãã©ã³ãã« docs/ ãã©ã«ããäœããHTML ã眮ããŸããæäœéãã®3æã§ãã
| ãã¡ã€ã« | å ¬éURL | å 容 |
|---|---|---|
docs/index.html |
https://example.jp/ |
ãããïŒã¢ããªçŽ¹ä» + åããŒãžãžã®å°ç·ïŒ |
docs/privacy.html |
https://example.jp/privacy.html |
ãã©ã€ãã·ãŒããªã·ãŒ |
docs/support.html |
https://example.jp/support.html |
ãµããŒãã»é£çµ¡å |
ãµããŒãããŒãžã«ã¯é£çµ¡å
ã®ã¡ãŒã«ã¢ãã¬ã¹ãèŒããŸãïŒApp Store ã®ç³è«ã§å¿
é ã§ãïŒãå人㮠Gmail ãæããããªãå Žåã¯ãsupport@èªåã®ãã¡ã€ã³ ãç¡æã§äœãæ¹æ³ãååã®èšäºã«ãŸãšããã®ã§ããã¡ããã©ãããïŒTODO: å
¬éåŸã«ã¡ãŒã«èšäºã®ãªã³ã¯ã貌ãïŒ
æžããã commit ã㊠push ããŸãã
git add docs/
git commit -m "Add site pages"
git push
â ïž ã²ãšã€ã ãæ³šæãdocs/ ã«çœ®ãããã¡ã€ã«ã¯å
šéšå
¬éãããŸããéçºã¡ã¢ãèšèšããã¥ã¡ã³ãã docs/ ã«çœ®ãç¿æ
£ãããå Žåã¯ãnotes/ ãªã©å¥ã®ãã©ã«ãã«éãããŠãããŸãããã
ð ã¹ããã2ïŒPages ã®å ¬éèšå®
GitHub ã®ãªããžããªããŒãžã§èšå®ããŸãã
- Settings â Pages ãéã
- Build and deployment ã® Source: Deploy from a branch
- Branch: main / /docs ãéžãã§ Save
ããã ãã§èªåã§ãããã€ãèµ°ãããŸã https://ãŠãŒã¶ãŒå.github.io/ãªããžããªå/ ã§å
¬éãããŸãã
ð ã¹ããã3ïŒã«ã¹ã¿ã ãã¡ã€ã³ã®èšå®
åã Settings â Pages ã® Custom domain ã« example.jp ãå
¥åã㊠Save ããŸãã
Save ãããšãGitHub ã docs/CNAME ãšãããã¡ã€ã«ããªããžããªã«èªåã§ã³ãããããŸãããªã¢ãŒãã«èªåã®ç¥ããªãã³ããããå¢ããã®ã§ãæå
ã§äœæ¥ãç¶ããåã« git pull ããŠãããŸãããïŒåã¯ãããç¥ããã«ã次㮠push ã®ãšãã«ããªãããªã¢ãŒãã«ç¥ããªãã³ããããããâŠïŒããšäžç¬æ··ä¹±ããŸããïŒã
ãã®æç¹ã§ã¯ DNS ããŸã åããŠããªãã®ã§ãDNS check ããšã©ãŒã«ãªããŸãããããã§æ£åžžã§ããæ¬¡ã®ã¹ãããã§è§£æ±ºããŸãã
ð ã¹ããã4ïŒDNS ã¬ã³ãŒãã®è¿œå
ãã¡ã€ã³ã® DNS 管çç»é¢ã§ãã¬ã³ãŒãã 5〠远å ããŸããå㯠Cloudflare ã§ç®¡çããŠããŸããããåå.com ã®ãŸãŸãªããDNSã¬ã³ãŒãèšå®ãã§åãå 容ã远å ããã°OKã§ãã
| Type | Name | Content |
|---|---|---|
| A | @ |
185.199.108.153 |
| A | @ |
185.199.109.153 |
| A | @ |
185.199.110.153 |
| A | @ |
185.199.111.153 |
| CNAME | www |
ïŒGitHubãŠãŒã¶ãŒåïŒ.github.io |
A ã¬ã³ãŒãã®4ã€ã¯ GitHub Pages ã®åºå®IPã§ããCNAME ã®å€ã¯ãŠãŒã¶ãŒåã®ã¿ã§ããªããžããªåïŒ/your-appïŒã¯ä»ããŸããã
Cloudflare ã®å Žåã¯ããã²ãšã€ããããã·ã¯å¿ ã DNS onlyïŒã°ã¬ãŒã®é²ïŒ ã«ããŠãã ãããProxiedïŒãªã¬ã³ãžã®é²ïŒã«ãããšãGitHub ã® DNS æ€èšŒãšèšŒææžçºè¡ãéããªããªããŸãã
åæ ã®ç¢ºèª
dig ã§ç¢ºèªã§ããŸããA ã¬ã³ãŒã4ã€ãšãwww ã® CNAME ãè¿ã£ãŠããã°OKã§ãã
dig example.jp +noall +answer
dig www.example.jp +noall +answer
DNS ãåŒããããã«ãªã£ãããGitHub ã® Settings â Pages ã«æ»ã£ãŠããšã©ãŒããã¯ã¹ã®ãCheck againããæŒããŸããGitHub ã¯ååã®ãã§ãã¯çµæããã£ãã·ã¥ããŠããã®ã§ãDNS ãçŽããŠãèªåã§ã¯ããåå€å®ããŠãããŸããããDNS check successfulãã«ãªãã°æåã§ãïŒ1åã§éããªããã°ãæ°åãããŠããäžåºŠïŒã
ð ã¹ããã5ïŒHTTPS ã®æå¹åãšè¡šç€ºç¢ºèª
DNS check ãéããšãLet's Encrypt ã®èšŒææžãèªåã§çºè¡ãããŸãïŒæ°åã1æéçšåºŠïŒã
çºè¡ããããš Settings â Pages ã® Enforce HTTPS ã«ãã§ãã¯ãå
¥ããããããã«ãªãã®ã§ããã§ãã¯ãå
¥ããŸããããã§ http:// ãžã®ã¢ã¯ã»ã¹ã https:// ã«ãªãã€ã¬ã¯ããããŸãã
æåŸã«è¡šç€ºç¢ºèªã§ãã
https://example.jp/https://example.jp/privacy.htmlhttps://example.jp/support.html
ã¹ãã¢ã®ç³è«ãã©ãŒã ã«ã¯ããã® privacy.html ãš support.html ã® URL ããã®ãŸãŸæžãã°OKã§ãã
å ¬éåŸã®æŽæ°
docs/ å
ã®ãã¡ã€ã«ãç·šéã㊠push ããã ãã§ãã1åååŸã§åæ ãããŸãã
ã¢ããªã®ã³ãŒããçŽãã®ãšãŸã£ããåããããŒãªã®ã§ãããµã€ãã®æŽæ°æ¹æ³ãæãåºãããšããã³ã¹ãããŒããªã®ãæ¬åœã«æ¥œã§ãã
å¶éãšæ³šæ
- ãµã€ãºã¯ãµã€ãå šäœã§ 1GBã垯åã¯æ 100GB ã®ãœãããªããããéçããŒãžæ°æãªãäžçå±ããŸãã
- ãµãŒããŒãµã€ãåŠçïŒãã©ãŒã åä¿¡ã»DBã»APIïŒã¯äžå¯ãåãåãããã©ãŒã ãå¿ èŠã«ãªã£ãã Google Forms çãžã®ãªã³ã¯ã§å¯Ÿå¿
-
docs/CNAMEãæ¶ããšã«ã¹ã¿ã ãã¡ã€ã³èšå®ãå€ããã®ã§ãåé€ããªãããš
ãŸãšã
ð ã¢ããªã®ãªããžããªã« docs/ ãè¶³ã㊠push ããã ãã§ãç¬èªãã¡ã€ã³ã®å
¬åŒãµã€ããç¡æã§æã«å
¥ããŸãã â€ïž
ãã©ã€ãã·ãŒããªã·ãŒãšãµããŒãããŒãžã¯ã¹ãã¢ç³è«ã®å¿ é é ç®ãªã®ã«ãåŸåãã«ããã¡ã§ãããããã€ã®ä»çµã¿ãå¢ãããã«æžããã®æ¹æ³ãªãè °ã軜ãã®ã§ãç³è«æºåã®ãããã«ãŒã«ãªãåã«ãµã¯ããšæžãŸããŠããã®ãããããã§ãã