LoginSignup
70
45
ćÆ恗悙悁恦恮čؘäŗ‹ęŠ•ēØæ

怐šŸ”°ē‹¬å­¦ć€‘完å…ØęœŖēµŒéØ“ć‹ć‚‰ē‹¬å­¦ć§ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗć€Œć ć¦ć¾ćć€ć‚’é–‹ē™ŗć—ć¾ć—ćŸć€Laravel / Docker / AWS / CircleCI怑

Last updated at Posted at 2023-06-14

ćÆć˜ć‚ć«

恓恮čؘäŗ‹ćÆ态ē§ćŒWebć‚Øćƒ³ć‚øćƒ‹ć‚¢ćøć®č»¢č·ć‚’ē›®ęŒ‡ć™éŽēØ‹ć«ćŠć„ć¦ä½œęˆć—ćŸćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗ恮ē“¹ä»‹čؘäŗ‹ć§ć™ć€‚

ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗć®ę¦‚č¦ć‚„ć€å·„å¤«ē‚¹ć€č‹¦åŠ“恗恟ē‚¹ćŖ恩悒恓恔悉恫ę›øć‹ć›ć¦ć„ćŸć ć„ć¦ćŠć‚Šć¾ć™ć€‚
ć¾ćŸć€ē‹¬å­¦ć§ć©ć®ć‚ˆć†ć«å­¦ēæ’ć—ć¦ććŸć‹ć‚‚ć“ć”悉恫ę›øć‹ć›ć¦ć„ćŸć ć„ćŸć®ć§ć€å‚č€ƒē؋åŗ¦ć«ć•ć‚‰ć£ćØč¦‹ć¦ć„ćŸć ć‘ć‚‹ćØå¤§å–œć³ć§ć™ć€‚

ꎔē”Øć”ę‹…å½“č€…ćŒčŖ­ć‚“ć§ć„ćŸć ć„ć¦ćŠć‚Šć¾ć—ćŸć‚‰ć€ć‚¢ćƒ—ćƒŖ恮ꦂ要恠恑恧ćÆćŖ恏态ē§ć®ć“ć‚Œć¾ć§ć®ē‹¬å­¦ć§ć®å­¦ēæ’恮道ē­‹ć‚„ć‚¢ćƒ—ćƒŖ開ē™ŗć§å·„å¤«ć—ćŸē‚¹ćƒ»č‹¦åŠ“恗恟ē‚¹ćŖ恩悂äø€åŗ¦ć€čŖ­ć‚“ć§ć„ćŸć ć‘ćŸć‚‰å¹ø恄恧恙怂

ä½œęˆč€…ļ¼ˆęŠ•ēØæꙂē‚¹ļ¼‰

  • ć‚µćƒ¼ćƒć‚µć‚¤ćƒ‰ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć‚’ē›®ęŒ‡ć™24ę­³
  • å¤§å­¦ę™‚ä»£ć«ę—„ęœ¬čŖžę•™å“”養ꈐčŖ²ēØ‹ć‚’äæ®äŗ†:flag_jp:
  • ćŸć¾ć«ē­‹ćƒˆćƒ¬ć€ćƒ©ć‚øć‚Ŗć€ć‚«ćƒ•ć‚§å·”ć‚Š :coffee:
  • ęŽØ恗ćÆćƒ€ć‚¤ć‚¢ćƒ³ć®ćƒ¦ćƒ¼ć‚¹ć‚±
  • 2022幓1ęœˆć‹ć‚‰ęœ¬ę ¼ēš„恫ē‹¬å­¦ć‚’開始ļ¼ˆ2023幓6꜈14ꗄꙂē‚¹ć€å­¦ēæ’ę™‚é–“åˆčØˆć§931ę™‚é–“åˆ°é”ć—ć¾ć—ćŸ:confetti_ball:ļ¼‰

ē›®ę¬”

1. ä½œęˆć—ćŸć‚¢ćƒ—ćƒŖ恫恤恄恦
2. ä½æē”Øꊀ蔓
3. åŸŗęœ¬čØ­č؈
4. ć“ć®ć‚¢ćƒ—ćƒŖć‚’ä½œęˆć—ćŸčƒŒę™ÆćØē›®ēš„
5. ć‚¢ćƒ—ćƒŖä½œęˆć‹ć‚‰å®Œęˆć¾ć§ć®ęŒÆ悊čæ”ć‚Š
6. ē‹¬å­¦ć§ć®å­¦ēæ’恮道ē­‹
7. 恊äø–話恫ćŖć£ćŸć‚µćƒ¼ćƒ“ć‚¹ć‚„čؘäŗ‹
8. ćŠć‚ć‚Šć«

1. ä½œęˆć—ćŸć‚¢ćƒ—ćƒŖ恫恤恄恦

å­¦ēæ’å†…å®¹ć®ć‚¢ć‚¦ćƒˆćƒ—ćƒƒćƒˆćØ恗恦态Webć‚µćƒ¼ćƒ“ć‚¹ć‚’å€‹äŗŗ開ē™ŗć—ć¾ć—ćŸć€‚
ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-30 14.26.17.png

ć‚¢ćƒ—ćƒŖꦂ要

ć‚¢ćƒ—ćƒŖåć€€:ć€€ć ć¦ć¾ć

URL ļ¼š https://----怀(AWSē„”ꖙꜟ間ēµ‚äŗ†ć«ä¼“ć„ć€å…¬é–‹ēµ‚äŗ†ć•ć›ć¦ć„ćŸć ćć¾ć—ćŸ:bow_tone1:)
ļ¼ˆćƒ¬ć‚¹ćƒćƒ³ć‚·ćƒ–åƾåæœęøˆćæć€ć‚¹ćƒžćƒ›ć‹ć‚‰ć‚‚é–²č¦§ć§ćć¾ć™ļ¼‰
GitHub : https://github.com/yuyamh/datemaki-blade

  • ę—„ęœ¬čŖžę•™åø«å‘ć‘ć®ć€ä½œęˆć—ćŸć€Œę•™ę”ˆć€ć‚’å…±ęœ‰ćƒ»ę¤œē“¢ćƒ»äæå­˜ć§ćć‚‹Webć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ć§ć™ć€‚

ę•™ę”ˆćØćÆ
ę—„ęœ¬čŖžę•™åø«ćŒå„ęŽˆę„­ć®ć‚³ćƒžć”ćØć«ä½œęˆć™ć‚‹ć€ęŽˆę„­ć®č؈ē”»ę”ˆć‚’ęŒ‡ć—ć¾ć™ć€‚
ę•™ćˆć‚‹å˜čŖžć‚„é …ē›®ć€ę™‚é–“é…åˆ†ć€ä½æē”ØꕙꝐ悒äø­åæƒć«ć€ć©ć®ć‚ˆć†ć«å­¦ēæ’č€…ć«ę—„ęœ¬čŖžć‚’ę•™ćˆć‚‹ć‹ć‚’ć‚ć‚‰ć‹ć˜ć‚ęŽˆę„­å‰ć«ę±ŗć‚ć¦ćŠćć‚‚ć®ć§ć™ć€‚

  • ć‚¢ćƒ—ćƒŖ名ćÆ怌Database for Teachers Making Japanese Lesson Plansć€ć®é ­ę–‡å­—ć‚’å–ć£ć¦ć€Œć ć¦ć¾ćć€ćØä»˜ć‘ć¾ć—ćŸć€‚

ć‚¢ćƒ—ćƒŖ恮ē‰¹å¾“

ć ć¦ć¾ćć®äø»ćŖē‰¹å¾“ćÆ仄äø‹ć®é€šć‚Šć§ć™ć€‚

  • ä½œęˆć—ćŸę•™ę”ˆć‚„ę•™ęć®ęŠ•ēØæ惻ē·Øé›†ę©Ÿčƒ½ļ¼ˆē”»åƒćƒ»ćƒ•ć‚”ć‚¤ćƒ«ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ļ¼‰
  • åÆ¾č±”å­¦ēæ’č€…ć®ę—„ęœ¬čŖžćƒ¬ćƒ™ćƒ«ć€ä½æē”Øćƒ†ć‚­ć‚¹ćƒˆć€ć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ć€ćƒ¦ćƒ¼ć‚¶ćƒ¼åć‹ć‚‰ć®ęŠ•ēØæꤜē“¢ę©Ÿčƒ½
  • ę°—ć«å…„ć£ćŸęŠ•ēØæć®ćƒ–ćƒƒć‚Æćƒžćƒ¼ć‚Æę©Ÿčƒ½

ē”»åƒć‚¤ćƒ”ćƒ¼ć‚ø

ćƒ›ćƒ¼ćƒ ē”»é¢

ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-30 14.26.17.png

ꊕēØæäø€č¦§ē”»é¢

ćæ悓ćŖć®ę•™ę”ˆäø€č¦§

ćƒ¦ćƒ¼ć‚¶ćƒ¼ćŒęŠ•ēØæć—ćŸę•™ę”ˆć€ę•™ęć€ęŽˆę„­ć®ć‚¢ć‚¤ćƒ‡ć‚£ć‚¢ć‚’č¦‹ć‚‹ć“ćØćŒć§ćć¾ć™ć€‚
ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-30 15.13.48.png

ćæ悓ćŖć®ę•™ę”ˆäø€č¦§ä»„å¤–ć«ć€ęŠ•ēØæäø€č¦§ē”»é¢ć«ćÆę¬”ć®ę©Ÿčƒ½ćŒć‚ć‚Šć¾ć™ć€‚

ć˜ć¶ć‚“ć®ę•™ę”ˆäø€č¦§
č‡Ŗåˆ†ćŒęŠ•ēØæć—ćŸę•™ę”ˆć€ę•™ęć€ęŽˆę„­ć®ć‚¢ć‚¤ćƒ‡ć‚£ć‚¢ć‚’ć“ć“ć§č¦‹ć‚‹ć“ćØćŒć§ćć¾ć™ć€‚
惖惃ć‚Æćƒžćƒ¼ć‚Æäø€č¦§
惖惃ć‚Æćƒžćƒ¼ć‚Æļ¼ˆćŠę°—ć«å…„悊ļ¼‰ć—ćŸę•™ę”ˆć‚’č¦‹ć‚‹ć“ćØćŒć§ćć¾ć™ć€‚ćƒ–ćƒƒć‚Æćƒžćƒ¼ć‚Æč‡Ŗ体ćÆ後čæ°ć®ę•™ę”ˆč©³ē“°ē”»é¢ć§åÆčƒ½ć§ć™ć€‚
ę•™ę”ˆę¤œē“¢ćƒ•ć‚©ćƒ¼ćƒ 
ę•™ę”ˆćƒ»ę•™ęćÆ态ꤜē“¢ćƒ•ć‚©ćƒ¼ćƒ ć‹ć‚‰ć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ć€å­¦ēæ’č€…ćƒ¬ćƒ™ćƒ«ć€ä½æē”Øćƒ†ć‚­ć‚¹ćƒˆć®é …ē›®ć‹ć‚‰ēµžć‚Šč¾¼ć‚“ć§ę¤œē“¢ć™ć‚‹ć“ćØćŒć§ćć¾ć™ć€‚ā†“

search_record

ꊕēØæč©³ē“°ē”»é¢

갗恫ćŖ悋ꊕēØæć®å†…å®¹ćŒč©³ć—ćč¦‹ć‚‰ć‚Œć¾ć™ć€‚
ć“ć“ć§ćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰ćƒ»ę•™ę”ˆć®ćƒ–ćƒƒć‚Æćƒžćƒ¼ć‚Æ恌åÆčƒ½ć§ć™ć€‚
ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-06-07 23.10.43.png
ćŖ恊态ꊕēØæć®ć‚µćƒ³ćƒ—ćƒ«ćƒ‡ćƒ¼ć‚æćØć—ć¦ć€ć±ć‚“ćšå…ˆē”ŸćØć„ć†ę–¹ć‹ć‚‰ē‰¹åˆ„ć«ę•™ę”ˆć‚’30ä»¶ć»ć©ę‹å€Ÿć„ćŸć—ć¾ć—ćŸć€‚å”åŠ›ć—ć¦ćć ć•ć‚Šć€ęœ¬å½“ć«ć‚ć‚ŠćŒćØć†ć”ć–ć„ć¾ć—ćŸć€‚

ć±ć‚“ćšå…ˆē”Ÿć®ćƒ–ćƒ­ć‚°ćÆ恓恔悉ā†“

ꊕēØæä½œęˆćƒ»ē·Ø集ē”»é¢

ꊕēØæć®ä½œęˆćƒ»ē·Øé›†ćŒć§ćć¾ć™ļ¼ˆę•™ę”ˆćƒ•ć‚”ć‚¤ćƒ«ć®ę·»ä»˜ćÆä»»ę„ļ¼‰ć€‚
ꦂ要ćÆćƒžćƒ¼ć‚Æćƒ€ć‚¦ćƒ³čØ˜ę³•ć«ć‚‚åƾåæœć•ć›ć¾ć—ćŸć€‚
ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-30 15.26.43.png

ćƒžć‚¤ćƒšćƒ¼ć‚ø

ć‚¢ć‚«ć‚¦ćƒ³ćƒˆęƒ…å ±ć®ē¢ŗčŖļ¼ˆć‚¢ć‚¤ć‚³ćƒ³ćƒ»åå‰ćƒ»ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ćŖ恩ļ¼‰ćŒć§ćć¾ć™ć€‚
ć“ć“ć§ć‚¢ć‚«ć‚¦ćƒ³ćƒˆčØ­å®šć®å¤‰ę›“ćƒ»å‰Šé™¤ćŒåÆčƒ½ć§ć™ć€‚
ćŖćŠć‚²ć‚¹ćƒˆćƒ­ć‚°ć‚¤ćƒ³ć—ćŸå “åˆćÆć€ć‚¢ć‚«ć‚¦ćƒ³ćƒˆęƒ…å ±ćŒå¤‰ę›“ć§ććŖć„ć‚ˆć†ć«å®Ÿč£…ć„ćŸć—ć¾ć—ćŸć€‚
ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-06-07 23.21.46.png

ć‚¢ćƒ—ćƒŖć®ę©Ÿčƒ½äø€č¦§

ä»Šå¾Œć‚‚ę©Ÿčƒ½čæ½åŠ ć—ć¦ć„ćäŗˆå®šć§ć™ćŒć€ē¾ę™‚ē‚¹ć§ć®ę©Ÿčƒ½ćØ恗恦ćÆ态仄äø‹ć®é€šć‚Šć§ć™ć€‚

:pencil:ćƒ”ć‚¤ćƒ³ę©Ÿčƒ½

  • ę•™ę”ˆęŠ•ēØæę©Ÿčƒ½ļ¼ˆCRUDļ¼‰
  • AWS S3悒ē”Øć„ćŸćƒ•ć‚”ć‚¤ćƒ«ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ę©Ÿčƒ½ļ¼ˆćƒ•ć‚”ć‚¤ćƒ«å½¢å¼ : pdf, docx, zip, xlsx, jpeg, jpg, pngļ¼‰
  • ćƒšćƒ¼ć‚øćƒćƒ¼ć‚·ćƒ§ćƒ³ę©Ÿčƒ½
  • 惖惃ć‚Æćƒžćƒ¼ć‚Æē™»éŒ²ćƒ»äø€č¦§ę©Ÿčƒ½
  • ę•™ę”ˆę¤œē“¢ę©Ÿčƒ½ļ¼ˆć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ć€å­¦ēæ’č€…ćƒ¬ćƒ™ćƒ«ć€ä½æē”Øćƒ†ć‚­ć‚¹ćƒˆļ¼‰
  • ćƒ¦ćƒ¼ć‚¶ćƒ¼ę¤œē“¢ę©Ÿčƒ½ļ¼ˆć‚­ćƒ¼ćƒÆćƒ¼ćƒ‰ļ¼‰
  • PHPUnitćƒ†ć‚¹ćƒˆļ¼ˆCircleCIļ¼‰
  • ćƒ¬ć‚¹ćƒćƒ³ć‚·ćƒ–ćƒ‡ć‚¶ć‚¤ćƒ³ļ¼ˆć‚¹ćƒžćƒ›ē‰ˆåƾåæœļ¼‰

:lock:čŖčØ¼ę©Ÿčƒ½

  • 会哔ē™»éŒ² / ćƒ­ć‚°ć‚¤ćƒ³ / ćƒ­ć‚°ć‚¢ć‚¦ćƒˆ
  • ć‚²ć‚¹ćƒˆćƒ­ć‚°ć‚¤ćƒ³
  • ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰å¤‰ę›“ļ¼ˆćƒ­ć‚°ć‚¤ćƒ³äø­ļ¼‰
  • ćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ćƒŖć‚»ćƒƒćƒˆļ¼ˆéžćƒ­ć‚°ć‚¤ćƒ³ļ¼‰
  • ć‚¢ć‚«ć‚¦ćƒ³ćƒˆęƒ…å ±ē·Ø集ļ¼ˆć‚¢ć‚¤ć‚³ćƒ³ć€åå‰ć€ćƒ”ćƒ¼ćƒ«ć‚¢ćƒ‰ćƒ¬ć‚¹ļ¼‰
  • ć‚¢ć‚«ć‚¦ćƒ³ćƒˆå‰Šé™¤
惖惃ć‚Æćƒžćƒ¼ć‚Æē™»éŒ²

ę•™ę”ˆč©³ē“°ē”»é¢ć‹ć‚‰ć€ćƒœć‚æćƒ³ć‚ÆćƒŖ惃ć‚Æ恧ē™»éŒ²åÆčƒ½ć§ć™ć€‚
ezgif.com-video-to-gif (2).gif

ćƒ¬ć‚¹ćƒćƒ³ć‚·ćƒ–åƾåæœ

å…Øē”»é¢åƾåæœęøˆćæ恧恙怂
ezgif.com-resize.gif

ć‚²ć‚¹ćƒˆćƒ­ć‚°ć‚¤ćƒ³

ć‚ć–ć‚ć–ä¼šå“”ē™»éŒ²ć—ćŖćć¦ć‚‚ę©Ÿčƒ½ć‚’č©¦ć›ć‚‹ć‚ˆć†ć€ć‚²ć‚¹ćƒˆćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚’ē”Øę„ć—ć¾ć—ćŸć€‚
ćƒ­ć‚°ć‚¤ćƒ³ē”»é¢åŠć³ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³ćƒćƒ¼ć®ć‚²ć‚¹ćƒˆćƒ­ć‚°ć‚¤ćƒ³ćƒœć‚æćƒ³ć‹ć‚‰åˆ©ē”Øć§ćć¾ć™ć€‚
ezgif.com-video-to-gif (3).gif

2. ä½æē”Øꊀ蔓

ćƒ•ćƒ­ćƒ³ćƒˆć‚Øćƒ³ćƒ‰

  • HTML / CSS / Tailwind CSS
  • JavaScript

惐惃ć‚Æć‚Øćƒ³ćƒ‰

  • PHP 8.2.5
  • Laravel 9.52.7
  • MySQL 8.0.32
  • composer 2.5.5
  • PHPUnit 9.6.7
  • Node.js 16.20.0 / npm 9.6.6

ć‚¤ćƒ³ćƒ•ćƒ©

  • Docker 23.0.5 / docker-compose 1.29.2ļ¼ˆé–‹ē™ŗē’°å¢ƒļ¼‰
  • AWSĀ (EC2, ALB, ACM, S3, RDS, CloudFormation, Route53, VPC, EIP, IAM, CloudWatch)
  • nginx 1.22.1
  • CircleCI 2.1

ćŖ恊态開ē™ŗē’°å¢ƒć®ę§‹ēƉćÆLaravel Sail悒ē”Øć„ć¦č”Œć„ć¾ć—ćŸć€‚

ćć®ä»–

  • Git 2.39.0 / GitHub
  • PHPMyAdmin
  • Visual Studio Code
  • iTerm2
  • Notion
  • draw.io
  • Google Sheets
  • Google Slides
  • Google Document
  • MacOS

ā—¾ļø ćŖćœć“ć®ęŠ€č”“éø定ćŖ恮恋ļ¼ˆćƒ”ć‚¤ćƒ³ć®ćæč§£čŖ¬ļ¼‰

ćƒ”ć‚¤ćƒ³ć®ęŠ€č”“ć§ć‚ć‚‹PHP(Laravel)ćØAWS态Laravel怀Sail悒éøå®šć—ćŸē†ē”±ć‚’ē°”å˜ć«čæ°ć¹ć¾ć™ć€‚

  • PHP(Laravel)
    PHP悒éø悓恠ē†ē”±ćØ恗恦ćÆ态čŖæć¹ćŸé™ć‚Šåˆå­¦č€…ć§ć‚‚ē†č§£ć—ć‚„ć™ćć€ę±‚äŗŗꕰ恌ęÆ”č¼ƒēš„å¤šć„č؀čŖžć ć‹ć‚‰ć§ć™ć€‚ć¾ćŸć€ä½œć‚ŠćŸć‹ć£ćŸWebć‚µćƒ¼ćƒ“ć‚¹ļ¼ˆć ć¦ć¾ćļ¼‰ćŒPHPć§ä½œęˆåÆčƒ½ć ć£ćŸćŸć‚éøå®šć—ć¾ć—ćŸć€‚

  • AWS
    AWS悒éø悓恠ē†ē”±ćÆć€ćƒ‡ćƒ—ćƒ­ć‚¤ć®éš›ć«ć‚ˆćä½æć‚ć‚Œć¦ć„ć‚‹ć‚µćƒ¼ćƒ“ć‚¹ć ć£ćŸćØ恄恆恮ćØć€ć‚µćƒ¼ćƒć‚µć‚¤ćƒ‰ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć‚’ē›®ęŒ‡ć—恦恄悋恮恧态恂悋ē؋åŗ¦ć‚¤ćƒ³ćƒ•ćƒ©ć®ēŸ„č­˜ć‚’å­¦ēæ’ć—ćŸć‹ć£ćŸćŸć‚ć§ć™ć€‚

  • Laravel Sail
    開ē™ŗē’°å¢ƒć®ę§‹ēÆ‰ćŒć‚¹ćƒ”ćƒ¼ćƒ‡ć‚£ćƒ¼ć«ć§ćć‚‹ćŸć‚ć€ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗć®å®Œęˆć‚’ęœ€å„Ŗå…ˆć§é€²ć‚ć¦ć„ćŸē§ć«ćØć£ć¦ęœ€é©ćŖéøå®šć§ć—ćŸć€‚ć¾ćŸć€å­¦ć‚“ć§ććŸDocker恮ēŸ„č­˜ć‚’ę“»ć‹ć™ć“ćØćŒć§ćć‚‹ćŸć‚ć€ć‚ćˆć¦Laravel Sail悒éøć³ć¾ć—ćŸć€‚

3. åŸŗęœ¬čØ­č؈

ć‚¤ćƒ³ć‚»ćƒ—ć‚·ćƒ§ćƒ³ćƒ‡ćƒƒć‚­

åˆ„é€”ć€čؘäŗ‹ć‚’ä½œęˆäŗˆå®šć§ć™ć€‚

ē”»é¢é·ē§»å›³

ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-30 23.26.33.png

ER図

IDEF1XčØ˜ę³•ć§ć€ē°”ꘓēš„ć«ä½œęˆć—ć¾ć—ćŸć€‚
ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-31 17.54.55.png

ćƒ†ćƒ¼ćƒ–ćƒ«å®šē¾©ę›ø

äøŠć«čØ˜č¼‰ć—ćŸę¦‚č¦ćƒ¬ćƒ™ćƒ«ć®ERå›³ć‚’å…ƒć«ć€ćƒ†ćƒ¼ćƒ–ćƒ«å®šē¾©ę›øļ¼ˆć‚¹ć‚­ćƒ¼ćƒžčØ­č؈ę›øļ¼‰ć‚’ä½œęˆć—ć¾ć—ćŸć€‚

postsćƒ†ćƒ¼ćƒ–ćƒ«ļ¼ˆęŠ•ēØæęƒ…å ±ć‚’ē®”ē†ļ¼‰

ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-31 18.04.47.png

usersćƒ†ćƒ¼ćƒ–ćƒ«ļ¼ˆćƒ¦ćƒ¼ć‚¶ćƒ¼ęƒ…å ±ć‚’ē®”ē†ļ¼‰

ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-31 18.09.40.png

textsćƒ†ćƒ¼ćƒ–ćƒ«ļ¼ˆä½æē”Øćƒ†ć‚­ć‚¹ćƒˆć®ęƒ…å ±ć‚’ē®”ē†ļ¼‰

ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-05-31 18.04.39.png

bookmarksćƒ†ćƒ¼ćƒ–ćƒ«ļ¼ˆć©ć®ćƒ¦ćƒ¼ć‚¶ćƒ¼ćŒć©ć®ęŠ•ēØæ悒惖惃ć‚Æćƒžćƒ¼ć‚Æ恗恟恋悒ē®”ē†ļ¼‰

ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-06-11 22.30.33.png

4. ć“ć®ć‚¢ćƒ—ćƒŖć‚’ä½œęˆć—ćŸčƒŒę™ÆćØē›®ēš„

ćŖćœć“ć®ć‚¢ćƒ—ćƒŖć‚’ä½œęˆć—ćŸć®ć‹

ć€€å¤§å­¦ę™‚ä»£ć«ę—„ęœ¬čŖžę•™å“”養ꈐčŖ²ē؋ćØć„ć†ć€ę—„ęœ¬čŖžć‚’ęƍčŖžćØ恗ćŖć„ę–¹ć€…ćøę—„ęœ¬čŖžę•™č‚²ć‚’č”Œć†ę•™åø«ć‚’č‚²ęˆć™ć‚‹ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć«å‚åŠ ć—ć¦ćŠć‚Šć¾ć—ćŸć€‚
ć€€ę—„ęœ¬čŖžę•™č‚²ć«ć¤ć„ć¦å­¦ēæ’恙悋äø­ć§ć€ę—„ęœ¬čŖžę•™č‚²ć®ē¾å “ć«ćŠć„ć¦č§£ę±ŗć™ć¹ćčŖ²é”ŒćÆä½•ć‹ćØč€ƒćˆć‚‹ę©Ÿä¼šćŒå¤šćć‚ć‚Šć¾ć—ćŸć€‚ć¾ćŸć€åŒę™‚ć«ćƒ—ćƒ­ć‚°ćƒ©ćƒŸćƒ³ć‚°ć®å­¦ēæ’ć‚’å§‹ć‚ć¦ćŠć‚Šć€ä½•ć‹ITć®åŠ›ć§ę—„ęœ¬čŖžę•™č‚²ē¾å “恮čŖ²é”Œć®č§£ę±ŗć‚µćƒćƒ¼ćƒˆćŒć§ććŸć‚‰č‰Æ恄ćŖ态ćØč€ƒćˆć¦ć„ć¾ć—ćŸć€‚
ć€€ćć“ć§ę—„ęœ¬čŖžę•™åø«ć‚’åæ—ć—ć¦ć„ćŸå‹äŗŗć®å”åŠ›ć‚’å¾—ć¦ć€č‡Ŗåˆ†ćŒč§£ę±ŗ恧恍恝恆ćŖčŖ²é”Œć‚’å‰²ć‚Šå‡ŗć—ć€ćć®å•é”Œč§£ę±ŗ恮äø€ć¤ć®ē­–ćØć—ć¦ć€ć“ć®ę•™ę”ˆå…±ęœ‰ć‚¢ćƒ—ćƒŖć€Œć ć¦ć¾ćć€ć‚’ä½œęˆć—ć¾ć—ćŸć€‚

äø»ć«ę—„ęœ¬čŖžę•™č‚²ē¾å “恫恊恄恦态ē¾ēŠ¶č‡Ŗåˆ†ćŒčŖ²é”Œć ćØę€ć£ć¦ć„ć‚‹éƒØ分ćÆ仄äø‹ć®2ē‚¹ć§ć™ć€‚

ā‘ ę—„ęœ¬čŖžę•™åø«ć®ę„­å‹™å¤–ć§ć®č² ę‹…ćŒå¤§ćć„ć€‚

怀čæ‘å¹“ć€ę•™å“”ć®ę–¹ć€…ć®ę„­å‹™ę™‚é–“å¤–åŠ“åƒćŒå•é”Œć«ćŖć£ć¦ć„ć¦ć€ę—„ęœ¬čŖžę•™åø«ć‚‚恋ćŖć‚Šå¤šć„å‚¾å‘ćŒć‚ć‚Šć¾ć™ć€‚ćŸć ć§ć•ćˆć€čŖ²é”Œę·»å‰Šć‚„å­¦ę ”é‹å–¶ćƒ»č”Œäŗ‹ęŗ–å‚™ćŖć©ć«ę™‚é–“ć‚’å–ć‚‰ć‚Œć‚‹äø­ć€ę•™ę”ˆć®ä½œęˆć«ę™‚é–“ć‚’å‰²ć‘ć¾ć›ć‚“ć€‚ćć“ć§ć€ć ć¦ć¾ćć§ä»–ć®å…ˆē”ŸćŒä½œć£ćŸę•™ę”ˆć‚’ę¤œē“¢ćƒ»å‚č€ƒć™ć‚‹ć“ćØć«ć‚ˆć‚Šć€ę•™ę”ˆä½œęˆć«ęŽ›ć‘ć‚‹ę™‚é–“ćŒēŸ­ēø®ć•ć‚Œć€ēµęžœēš„ć«ę„­å‹™ę™‚é–“å¤–åŠ“åƒć‚’ęø›ć‚‰ć™ć‚µćƒćƒ¼ćƒˆć«ćŖć‚Šć¾ć™ć€‚

ā‘”ę—„ęœ¬čŖžę•™åø«ćŒę•™ęćƒ»ę•™ę”ˆćƒ»ęŽˆę„­ć‚¢ć‚¤ćƒ‡ć‚£ć‚¢ć‚’å…±ęœ‰ć™ć‚‹å “ćŒćć‚‚ćć‚‚å°‘ćŖ恄怂

怀恓悌ćÆč‡Ŗ分č‡Ŗčŗ«ćŒę•™č‚²å®Ÿēæ’ć«å‘ć‘ć¦ę•™ę”ˆć‚’ä½œęˆć—ć¦ć„ćŸéš›ć€č‡Ŗåˆ†ć®ęŽˆę„­ć«å–ć‚Šå…„ć‚Œć‚‰ć‚Œć‚‹ć‚ˆć†ćŖę“»å‹•ćÆćŖ恄恋ćŖ态ćØčŖæć¹ć¦ć„ćŸćØćć«ę„Ÿć˜ć¾ć—ćŸć€‚ę•™ę”ˆć‚„ę•™ęć€ęŽˆę„­ć®ć‚¢ć‚¤ćƒ‡ć‚£ć‚¢ć‚’č‡Ŗē”±ć«ć‚·ć‚§ć‚¢ćƒ»ęŠ•ēØæć§ćć‚‹ć‚µć‚¤ćƒˆć‚„Webć‚µćƒ¼ćƒ“ć‚¹ē­‰ćÆćć‚‚ćć‚‚å°‘ćŖ恄äøŠć€ę•™ę”ˆć®ä½œęˆć«ē‰¹åŒ–ć—ćŸć‚‚ć®ćÆčŖæć¹ć¦ćæ恟限悊ē™ŗč¦‹ć§ćć¾ć›ć‚“ć§ć—ćŸć€‚
怀čŖ°ć§ć‚‚ę°—č»½ć«č‡Ŗåˆ†ć®ęŽˆę„­ć®ć‚¢ć‚¤ćƒ‡ć‚£ć‚¢ć‚’ć‚·ć‚§ć‚¢ć§ćć‚‹å “ć‚’ęä¾›ć™ć‚‹ć“ćØć§ć€ę—„ęœ¬čŖžę•™åø«é–“ć§ć®ę•™ę”ˆć®å…±ęœ‰ć®ćƒćƒ¼ćƒ‰ćƒ«ć‚’äø‹ć’ć¾ć™ć€‚åŒę™‚ć«ć€ę—„ęœ¬čŖžę•™åø«é–“ć§ć®ęƒ…å ±äŗ¤ę›ćŒć§ćć‚‹å “恫ćŖ悋恓ćØć§ć€ä½œć£ć¦ććŸę•™ę”ˆć‚’č¦‹ē›“ć—ć€ćƒ–ćƒ©ćƒƒć‚·ćƒ„ć‚¢ćƒƒćƒ—ć™ć‚‹ę©Ÿä¼šć‚’ä½œć‚‹ć“ćØćŒć§ćć¾ć™ć€‚å¤šćć®ć‚¢ć‚¤ćƒ‡ć‚£ć‚¢ć«č§¦ć‚Œć¦ć€ć‚ˆć‚Šč³Ŗ恮č‰Æć„ęŽˆę„­ä½œć‚Šć‚’ē›®ęŒ‡ć—恦恻恗恄态ćØć„ć†é”˜ć„ć‚’č¾¼ć‚ć¦ć€ć“ć®ć‚¢ćƒ—ćƒŖć‚’ä½œęˆć—ć¾ć—ćŸć€‚

5. ć‚¢ćƒ—ćƒŖä½œęˆć‹ć‚‰å®Œęˆć¾ć§ć®ęŒÆ悊čæ”ć‚Š

å·„å¤«ć—ćŸć“ćØ

ā‘ ć‚¢ć‚Æ悻悵悒ē”Ø恄恟态開ē™ŗē’°å¢ƒćØęœ¬ē•Ŗē’°å¢ƒć«ćŠć‘ć‚‹ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ćƒ•ć‚”ć‚¤ćƒ«ć®ćƒ‘ć‚¹ć®ēµ±äø€åŒ–怂

ć€€ćƒ•ć‚”ć‚¤ćƒ«ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ę™‚ć€é–‹ē™ŗē’°å¢ƒć«ćŠć„恦ćÆstorage/app/public仄äø‹ćøć€ęœ¬ē•Ŗē’°å¢ƒć«ćŠć„恦ćÆAmazon S3ćƒć‚±ćƒƒćƒˆćøäæå­˜ć•ć‚Œć‚‹ćŸć‚ć€ćƒ‘ć‚¹ćŒē•°ćŖć‚Šć¾ć™ć€‚
ć€€å®‰ę˜“ć«ifę–‡ć§åˆ†å²ć•ć›ć‚‹ć®ć§ćÆćŖćć€ćƒ¢ćƒ‡ćƒ«ć‚Æćƒ©ć‚¹ć«ć‚¢ć‚Æ悻悵悒čؘčæ°ć™ć‚‹ć“ćØć§ć€ć‚³ćƒ¼ćƒ‰ć®é‡č¤‡ć‚’ćŖćć—ć€ćƒ•ć‚”ć‚¤ćƒ«ćƒ‘ć‚¹ć®å–å¾—ę–¹ę³•ć‚’ēµ±äø€ć—ć¾ć—ćŸć€‚

app/Models/Post.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;

        /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'title',
        'description',
        'level',
        'user_id',
        'file_name',
        'file_mimetype',
        'file_size',
        'text_id',
    ];

    // ć‚¢ć‚Æć‚»ć‚µć®ęˆ»ć‚Šå€¤ć‚’ćƒ—ćƒ­ćƒ‘ćƒ†ć‚£ćØ恗恦ä½æē”Ø恙悋怂
    protected $appends = ['file_url'];

    // äø­ē•„

    // ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ć•ć‚ŒćŸę•™ę”ˆćƒ•ć‚”ć‚¤ćƒ«ć®ć‚¢ć‚Æ悻悵
    public function getFileUrlAttribute()
    {
        // Storage::url()ć§å¾—ć‚‰ć‚Œć‚‹ēµęžœćÆ态ä½æē”Øć™ć‚‹ć‚¹ćƒˆćƒ¬ćƒ¼ć‚øćƒ‰ćƒ©ć‚¤ćƒć«ć‚ˆć£ć¦å¤‰ć‚ć‚‹ćŸć‚ć€ć“ć“ć§ē’°å¢ƒå·®ē•°ć«ć‚ˆć‚‹ćƒ‘ć‚¹ć®å¤‰åŒ–ć‚’åøåŽć™ć‚‹ć€‚
        return \Storage::url('public/files/' . $this->file_name);
    }
}

ā‘”ćƒ•ć‚”ć‚¤ćƒ«ć®ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ćƒ»å‰Šé™¤

ć“ć®ć‚¢ćƒ—ćƒŖć®č‚ćÆćƒ•ć‚”ć‚¤ćƒ«ć®ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ćŖ恮恧态恓恓ćÆå¦„å”ć›ćšć«ä½œęˆć—ć¾ć—ćŸć€‚
å·„å¤«ć—ć¦é–‹ē™ŗ恗恟ē‚¹ćØ恗恦态äø‹čØ˜ćŒęŒ™ć’ć‚‰ć‚Œć¾ć™ć€‚

  • ęœ¬ē•Ŗē’°å¢ƒć«ćŠć„ć¦ć€ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ć•ć‚ŒćŸćƒ•ć‚”ć‚¤ćƒ«ćÆAmazon S3ćøäæå­˜ć™ć‚‹ć€‚
  • 開ē™ŗē’°å¢ƒć§ć®ć‚·ćƒ¼ćƒ€ćƒ¼å®Ÿč”Œę™‚ć€ćƒ•ć‚”ć‚Æ惈ćƒŖ恧ꊕēØæćƒ‡ćƒ¼ć‚æćŒä½œęˆć•ć‚Œć‚‹ć®ćØåŒę™‚ć«storage/app/public仄äø‹ć«ćƒ€ćƒŸćƒ¼ć®ćƒ•ć‚”ć‚¤ćƒ«ćŒäæå­˜ć•ć‚Œć‚‹ć€‚
  • ćƒžć‚¤ć‚°ćƒ¬ćƒ¼ć‚·ćƒ§ćƒ³ć®ćƒ­ćƒ¼ćƒ«ćƒćƒƒć‚Æ惻ćƒŖćƒ•ćƒ¬ćƒƒć‚·ćƒ„ę™‚ć«ć€storage/app/public仄äø‹ć«äæå­˜ć•ć‚ŒćŸćƒ•ć‚”ć‚¤ćƒ«ćŒäø€ę‹¬å‰Šé™¤ć•ć‚Œć‚‹ć€‚
  • ꊕēØæę™‚ć«ć€ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ćƒ•ć‚”ć‚¤ćƒ«ć®ć‚µć‚¤ć‚ŗļ¼ˆKB惻MBćøå¤‰ę›ļ¼‰ć€MIMEć‚æć‚¤ćƒ—ć‚’å–å¾—ć™ć‚‹ļ¼ˆę©Ÿčƒ½čæ½åŠ ć—ćŸę™‚ć®ä½æć„ć‚„ć™ć•ć‚’ęƒ³å®šć—ć¦å®Ÿč£…ļ¼‰ć€‚
  • é€€ä¼šę™‚ć«ć€č‡Ŗåˆ†ćŒć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ć—ćŸćƒ•ć‚”ć‚¤ćƒ«ćŒå‰Šé™¤ć•ć‚Œć‚‹ć€‚

ā‘¢PHPUnitć‚’å–ć‚Šå…„ć‚ŒćŸćƒć‚°ć®ę¤œēŸ„

ć€€ćƒ‡ćƒ—ćƒ­ć‚¤ę™‚ć«č‡Ŗå‹•ć§ćƒ†ć‚¹ćƒˆćŒå®Ÿč”Œć•ć‚Œć‚‹ć‚ˆć†ć«ć‚¤ćƒ³ćƒ•ćƒ©ć‚’ę§‹ēÆ‰ć—ć€ćƒć‚°ćŒćŖ恄ēŠ¶ę…‹ć§ćƒ‡ćƒ—ćƒ­ć‚¤ć•ć‚Œć‚‹ć‚ˆć†ć«ć—ć¾ć—ćŸć€‚
怀Featurećƒ†ć‚¹ćƒˆćØUnitćƒ†ć‚¹ćƒˆć®ć©ć”ć‚‰ć‚‚ćƒćƒ£ćƒ¬ćƒ³ć‚øć—ć¾ć—ćŸć€‚ć‚«ćƒćƒ¬ćƒƒć‚øćØ恗恦态ꊕēØæꙂē‚¹ć§70ļ¼…ć»ć©ć‚ć‚Šć¾ć™ć€‚

ā‘£ć‚²ć‚¹ćƒˆćƒ­ć‚°ć‚¤ćƒ³ć®å®Ÿč£…

ć€€ć‚ć–ć‚ć–ćƒ”ćƒ¼ćƒ«ć‚¢ćƒ‰ćƒ¬ć‚¹ćØćƒ‘ć‚¹ćƒÆćƒ¼ćƒ‰ć‚’ē”Øꄏ恙悋ꉋ間悒ēœćć€ćƒ­ć‚°ć‚¤ćƒ³ć—ćŖ恏ćØć‚‚ę©Ÿčƒ½ć‚’č©¦ć›ć‚‹ć‚ˆć†ć«ć€ć‚²ć‚¹ćƒˆćƒ¦ćƒ¼ć‚¶ćƒ¼ć‚’ē”Øę„ć—ć¾ć—ćŸć€‚
ć€€ć‚¢ć‚«ć‚¦ćƒ³ćƒˆęƒ…å ±ć®å¤‰ę›“ä»„å¤–ćÆ态äø€é€šć‚Šę©Ÿčƒ½ć‚’試恙恓ćØćŒć§ćć‚‹ć‚ˆć†ć«å®Ÿč£…ć—ć¾ć—ćŸć€‚ć¾ćŸć€ć‚¢ć‚«ć‚¦ćƒ³ćƒˆęƒ…å ±ć®å¤‰ę›“ćÆćƒ•ć‚©ćƒ¼ćƒ å“ć§é˜²ćć ć‘ć§ćÆćŖ恏态惝ćƒŖć‚·ćƒ¼ć‚„ć‚²ćƒ¼ćƒˆć‚’ä½æć£ć¦äøę­£ćŖę“ä½œć«ć‚ˆć‚‹å¤‰ę›“ć‚‚é˜²ć’ć‚‹ć‚ˆć†å·„å¤«ć—ć¦å®Ÿč£…ć—ć¾ć—ćŸć€‚
ć‚¹ć‚ÆćƒŖćƒ¼ćƒ³ć‚·ćƒ§ćƒƒćƒˆ 2023-06-12 23.26.35.png

ā‘¤ćƒ¦ćƒ¼ć‚¶ć«ćƒ¬ćƒ“ćƒ„ćƒ¼ć—ć¦ć‚‚ć‚‰ć„ć€ęŒ‡ę‘˜ć‚’å…ƒć«ę”¹å–„ļ¼ˆē¾åœØäæ®ę­£äø­ļ¼‰

ć€€å¤§å­¦ę™‚ä»£ć®å‹äŗŗćŸć”ć«ć€ć“ć®ć‚¢ćƒ—ćƒŖ悒ä½æć£ć¦ć‚‚ć‚‰ć„ć€ä½æć„ć”ć”ć”ć‚„ę”¹å–„ć™ć¹ćē®‡ę‰€ć‚’ę•™ćˆć¦ć‚‚ć‚‰ć„ć¾ć—ćŸć€‚
怀仄äø‹ć«ć€ę”¹å–„ē‚¹ć®äø€éƒØ悒ꊜē²‹ć—ć¾ć™ć€‚

  • ćƒ¬ć‚¹ćƒćƒ³ć‚·ćƒ–åƾåæœć«ćŠć„ć¦ć€ć‚¤ćƒ©ć‚¹ćƒˆćØę–‡å­—ćŒé€†ć®ę–¹ćŒčŖ­ćæ悄恙恄怂
  • ć€Œćƒžćƒ¼ć‚Æćƒ€ć‚¦ćƒ³čØ˜ę³•ć€ćØ恄恆ē”ØčŖžć«ćÆé¦“ęŸ“ćæ恌ćŖ恄äŗŗ悂恄悋恮恧态ę³Øé‡ˆć‚’ä»˜ć‘ć¦čŖ¬ę˜Žć—ćŸę–¹ćŒč‰Æ恄怂
  • č‰²ćŒč¦‹ć„ć‚‰ć„éƒØåˆ†ćŒć‚ć‚‹ć®ć§ć€äæ®ę­£ć™ć¹ćć€‚
  • ꤜē“¢ćƒ•ć‚©ćƒ¼ćƒ ć®é …ē›®ć«ć‚ć¾ć‚Šåæ…要ćŖć„ć‚‚ć®ć‚‚å…„ć£ć¦ć„ć‚‹ć®ć§ć€å‰Šé™¤ć™ć¹ćć€‚

ć€€å®Ÿéš›ć€č‡Ŗåˆ†ć§é–‹ē™ŗ恙悋恠恑恧ćÆēµ¶åÆ¾ć«ę°—ć„ć‘ćŖć‹ć£ćŸéƒØåˆ†ć®ęŒ‡ę‘˜ć‚’ć‚‚ć‚‰ć†ć“ćØćŒć§ćć€ćƒ¦ćƒ¼ć‚¶ē›®ē·šć§åˆ¶ä½œē‰©ć‚’見悋恓ćØćŒć„ć‹ć«é‡č¦ćŖć‚‚ć®ć‹ć‚’å†čŖč­˜ć™ć‚‹ć“ćØćŒć§ćć¾ć—ćŸć€‚

č‹¦åŠ“ć—ćŸć“ćØ

ā‘ UI/UX恮čŖæę•“ļ¼ˆTailwind CSSļ¼‰

ć€€ć‚µćƒ¼ćƒć‚µć‚¤ćƒ‰ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć‚’ē›®ęŒ‡ć—恦恄悋ćØćÆć„ćˆć€ćƒ‡ć‚¶ć‚¤ćƒ³ćŒćƒœćƒ­ćƒœćƒ­ć®ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗć‚’ä½œć‚‹ć‚ć‘ć«ćÆ恄恋ćŖ恄ćØę€ć„ć€ę°—åˆć„ć‚’å…„ć‚Œć¦å­¦ēæ’ć—ć¾ć—ćŸć€‚
ć€€ć—ć‹ć—å…ƒć€…ę•™ęć§å­¦ēæ’ć—ć¦ć„ćŸBootstrap恧ćÆćŖ恏态č‡Ŗē”±åŗ¦ć®é«˜ć„Tailwind CSSć‚’åˆ©ē”Øć—ćŸćŸć‚ć€ć‚ˆć‚Šé«˜ć„CSS恮ēŸ„č­˜ćŒę±‚ć‚ć‚‰ć‚Œć¾ć—ćŸć€‚
ć€€å…ƒć€…ćƒ‡ć‚¶ć‚¤ćƒ³ć‚’č€ƒćˆć‚‹ć®ćÆč‹¦ę‰‹ć ć£ćŸćŸć‚ć€ē‰¹ć«ćƒ†ćƒ¼ćƒ–ćƒ«ć®ćƒ¬ć‚¤ć‚¢ć‚¦ćƒˆć‚„ć€ćƒ›ćƒ¼ćƒ ē”»é¢ćƒ»ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³ćƒćƒ¼ćŖ恩恫ē‹¬č‡Ŗę€§ć‚’ęŒćŸć›ć¦ä½œęˆć™ć‚‹ć®ćÆęœ¬å½“ć«éŖØćŒęŠ˜ć‚Œć¾ć—ćŸć€‚ćć“ćÆé ‘å¼µć£ć¦ć€ęŒć”å‰ć§ć‚ć‚‹ē¶™ē¶šåŠ›ćØę ¹ę€§ć§å­¦ēæ’ć—ć¾ć—ćŸć€‚Gridćƒ¬ć‚¤ć‚¢ć‚¦ćƒˆć‚„FlexboxćŖ恩态ä½æćˆć‚‹ć‚‚ć®ćÆē©ę„µēš„恫ä½æć„ę–¹ć‚’å­¦ēæ’ć—ć€ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗć«ćµć‚“ć ć‚“ć«å–ć‚Šå…„ć‚Œć¾ć—ćŸć€‚
ć€€ć¾ćŸć€å¦„å”ć›ćšć«ćƒ¬ć‚¹ćƒćƒ³ć‚·ćƒ–ćƒ‡ć‚¶ć‚¤ćƒ³ć«ć‚‚ęŒ‘ęˆ¦ć—ć¾ć—ćŸć€‚åŠŖåŠ›ć®ē”²ę–ć‚ć£ć¦ć€ć‚¹ćƒžćƒ›ē‰ˆć§ć‚‚ć‚¢ćƒ—ćƒŖ悒見悋恓ćØćŒć§ćć‚‹ć‚ˆć†ć«ćŖć£ć¦ć„ć¾ć™ć€‚

ā‘”FormRequestć‚Æćƒ©ć‚¹ć‚’ē”Ø恄恟惐ćƒŖćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć®å®Ÿč£…

怀ꊕēØæē™»éŒ²ćƒ»ę›“ę–°å‡¦ē†ć§ć®ćƒćƒŖćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć§ćÆ态äŗ‹å‰ć«ä½œęˆć—ćŸćƒ†ćƒ¼ćƒ–ćƒ«å®šē¾©ę›ø恫ę²æć£ć¦ćƒ«ćƒ¼ćƒ«ć‚’ę±ŗć‚ć¾ć—ćŸć€‚ć—ć‹ć—ć€ć©ć®ć‚ˆć†ć«ćƒ«ćƒ¼ćƒ«ć‚’čØ­å®šć—ćŸć‚‰č‰Æć„ć‹ć€ęœ€åˆćÆęˆøęƒ‘ć„ć¾ć—ćŸć€‚ć¾ćŸęŠ•ēØæć®ć—ć‚„ć™ć•ć‚‚č€ƒę…®ć—ć¦čØ­å®šć™ć‚‹åæ…č¦ćŒć‚ć‚Šć¾ć—ćŸć€‚å…Ø恦悒åæ…須項ē›®ć«ć—ć¦ć—ć¾ć†ćØć€ę°—č»½ć«ęŠ•ēØæ恌恧恍ćŖ恏ćŖć£ć¦ć—ć¾ć„ć€ęŠ•ēØæć™ć‚‹ć¾ć§ć®ćƒćƒ¼ćƒ‰ćƒ«ćŒäøŠćŒć£ć¦ć—ć¾ć„ć¾ć™ć®ć§ć€ćƒćƒ©ćƒ³ć‚¹ć‚’č€ƒćˆć‚‹ć®ćŒå¤§å¤‰ć§ć—ćŸć€‚
ć€€ćƒ«ćƒ¼ćƒ«ć®čح定ćÆć€ęœ€ę–°ć®Laravelå…¬å¼ćƒ‰ć‚­ćƒ„ćƒ”ćƒ³ćƒˆć‚„ć€ä»–ć®ę–¹ć®GitHubć‚’å‚č€ƒć«ć—ćŖ恌悉态ä½æ恈恝恆ćØę€ć£ćŸéƒØåˆ†ć‚’å‚č€ƒć«ć—ćŖ恌悉čؘčæ°ć—ć¾ć—ćŸć€‚ć¾ćŸćƒ†ćƒ¼ćƒ–ćƒ«ćŒć©ć®ć‚ˆć†ć«é–¢äæ‚ć—åˆć£ć¦ć„ć‚‹ć‹ć€ć¤ćŖćŒć‚Šć‚’ę„č­˜ć—ć¦ćƒ«ćƒ¼ćƒ«ć‚’čؘčæ°ć—ć¾ć—ćŸć€‚åŠ ćˆć¦ć€åæ…é ˆćŒå¤šćć¦ć‚‚č‰Æć„ć‚ˆć†ć«äø‹ę›øćę©Ÿčƒ½ć‚’čæ½åŠ ć—ć‚ˆć†ćØę€ć„ć¾ć—ćŸćŒć€ć‚ćˆć¦ćƒ•ć‚”ć‚¤ćƒ«ę·»ä»˜ć‚’åæ…須項ē›®ć‹ć‚‰å¤–ć—ć¾ć—ćŸć€‚ćć†ć™ć‚‹ć“ćØ恧态悈悊ē°”å˜ć«ęŠ•ēØæć§ćć‚‹ć‚ˆć†ć«ćŖ悊态ꊕēØæć®ćƒćƒ¼ćƒ‰ćƒ«ćŒä½ŽććŖć£ćŸćØę€ć„ć¾ć™ć€‚
怀恓恮ē‚¹ćÆć€ćƒ¦ćƒ¼ć‚¶ć«å®Ÿéš›ć«ä½æć£ć¦ć‚‚ć‚‰ć£ć¦ć€ćć®ćƒ¬ćƒ“ćƒ„ćƒ¼ć‚’å‚č€ƒć«ę”¹å–„ć•ć›ć¦ć„ćŸć ćć¾ć—ćŸć€‚

ā‘¢S3恋悉恮ć‚Ŗ惖ć‚ø悧ć‚Æ惈äæå­˜ćƒ»å–å¾—ćƒ»å‰Šé™¤

ć€€ćƒ•ć‚”ć‚¤ćƒ«ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ć®ę–¹ę³•ć‚„S3恮čØ­å®šć‚’ę·±ćē†č§£ć™ć‚‹åæ…č¦ćŒć‚ć‚Šć€ęœ¬å½“ć«č‹¦åŠ“ć—ć¾ć—ćŸć€‚
ć€€ęœ¬ē•Ŗē’°å¢ƒć®ę§‹ēÆ‰ć«ćŠć„ć¦ć€ä»Šå›žćÆćƒ•ć‚”ć‚¤ćƒ«ć®äæå­˜å…ˆć«Amazon S3ć‚’åˆ©ē”Øć—ć¾ć—ćŸć€‚S3ćƒć‚±ćƒƒćƒˆćøć®ćƒ•ć‚”ć‚¤ćƒ«äæå­˜ćƒ»å‰Šé™¤ćÆ态ćŖ悓ćØć‹ć†ć¾ćå®Ÿč£…ć§ćć¾ć—ćŸćŒć€ćƒ•ć‚”ć‚¤ćƒ«ć®č”Øē¤ŗćÆäø€ē­‹ēø„恧ćÆć„ćć¾ć›ć‚“ć§ć—ćŸć€‚
ć€€ć†ć¾ćć„ć‹ćŖć„åŽŸå› ć‚’å¾¹åŗ•ēš„ć«č€ƒćˆć¾ć—ćŸć€‚ć€ŒIAMćƒ¦ćƒ¼ć‚¶ć®ęØ©é™ć«é–“é•ć„ćÆćŖć„ć‹ć€ć€Œćƒ•ć‚”ć‚¤ćƒ«ćƒ‘ć‚¹ćÆé–“é•ć£ć¦ć„ćŖ恄恋怍ćŖ恩态äø€ć¤äø€ć¤ē¢ŗčŖć—č©¦č”Œć—ć¾ć—ćŸćŒä½•åŗ¦ć‚„ć£ć¦ć‚‚S3äøŠć®ćƒ•ć‚”ć‚¤ćƒ«ć«ćÆć‚¢ć‚Æć‚»ć‚¹ć§ććŖ恄ēŠ¶ę…‹ćŒē¶šćć¾ć—ćŸć€‚
꜀ēµ‚ēš„ć«åˆ¤ę˜Žć—ćŸåŽŸå› ćØ恗恦态S3ćƒć‚±ćƒƒćƒˆćƒćƒŖć‚·ćƒ¼ć«ć€ćƒ•ć‚”ć‚¤ćƒ«ćøć®ć‚¢ć‚Æć‚»ć‚¹ćŒē‰¹å®šć®IAMćƒ¦ćƒ¼ć‚¶ć«ć®ćæčرåÆć•ć‚Œć¦ć„ćŸćŸć‚ć§ć—ćŸć€‚

怐S3ćƒć‚±ćƒƒćƒˆćøć®ć‚¢ć‚Æć‚»ć‚¹ć€‘
ć‚¢ćƒƒćƒ—ćƒ­ćƒ¼ćƒ‰ļ¼šIAMćƒ¦ćƒ¼ć‚¶ļ¼ˆS3FullAccess付äøŽļ¼‰
ē”»åƒč”Øē¤ŗļ¼šäøē‰¹å®šå¤šę•°

怀äøŠčØ˜ćŒē†č§£äøč¶³ć ć£ćŸćŸć‚ć€ćƒć‚±ćƒƒćƒˆćƒćƒŖć‚·ćƒ¼ć«ćÆćƒć‚±ćƒƒćƒˆćøć®ć‚¢ć‚Æć‚»ć‚¹ćÆ态å…Øå“”ćøčرåÆ恧ćÆćŖ恏态怌S3FullAccessć‚’ä»˜äøŽć—ćŸIAMćƒ¦ćƒ¼ć‚¶ć®ćæčرåÆ怍ćØ恄恆čؘčæ°ć«ć—ć¦ć—ć¾ć„ć¾ć—ćŸć€‚

ā‘£AWS + CircleCI恧恮č‡Ŗå‹•ćƒ†ć‚¹ćƒˆćƒ»ćƒ‡ćƒ—ćƒ­ć‚¤

ć€€ć‚¤ćƒ³ćƒ•ćƒ©ę§‹ęˆå›³ć«čØ˜č¼‰ć•ć›ć¦ć„ćŸć ć„ćŸćØćŠć‚Šć€ęœ¬ē•Ŗē’°å¢ƒć®ę§‹ēÆ‰ć§ćÆCI/CDćƒ‘ć‚¤ćƒ—ćƒ©ć‚¤ćƒ³ćØ恗恦CircleCIć‚’åˆ©ē”Øć—ć¾ć—ćŸć€‚
ć€€ć‚¤ćƒ³ćƒ•ćƒ©ć®é ˜åŸŸć ć£ćŸćØć„ć†ć®ć‚‚ć‚ć‚Šć€ć”ć‚‡ć£ćØćØć£ć¤ćć«ćć‹ć£ćŸćŖćØ個äŗŗēš„ć«ę€ć„ć¾ć—ćŸć€‚
ć€€č‹¦åŠ“ć—ćŸē‚¹ćØ恗恦ćÆ态č‡Ŗå‹•ćƒ‡ćƒ—ćƒ­ć‚¤ćƒ»č‡Ŗå‹•ćƒ†ć‚¹ćƒˆć®ęµć‚Œć‹ć‚‰å‹‰å¼·ć™ć‚‹åæ…č¦ćŒć‚ć£ćŸćŸć‚ć€ē†č§£ć«ć‚‚꧋ēÆ‰ć«ć‚‚ćŒć‹ć‹ć£ćŸćØć“ć‚ć§ć™ć€‚å‚č€ƒć«ć—ćŸę•™ęć‚’ćć®ć¾ć¾ēœŸä¼¼ć‚‹ć®ć§ćÆćŖ恏态č‡Ŗåˆ†ć®ę§‹ēÆ‰ć—ćŸć„ē’°å¢ƒć«åˆć‚ć›ć¦ć‚«ć‚¹ć‚æ惠恙悋åæ…č¦ćŒć‚ć‚Šć¾ć—ćŸć€‚ćć®ćŸć‚ćƒ†ć‚¹ćƒˆē’°å¢ƒć‚„å„ćƒ„ćƒ¼ćƒ«ć®é€£ęŗćŖ恩态åŗƒēÆ„å›²ć®čØ­å®šć‚’ć‚ć‚‹ē؋åŗ¦ęŠŠę”恙悋åæ…č¦ćŒć‚ć‚Šć€å­¦ēæ’恋悉꧋ēƉ完äŗ†ć¾ć§ć€ē“„1ćƒ¶ęœˆåŠć»ć©ć‹ć‹ć‚Šć¾ć—ćŸć€‚å¹¾åŗ¦ćØćŖ恏怌build failedć€ć®ę–‡å­—ćŒē”»é¢äøŠć«ēŖćć¤ć‘ć‚‰ć‚Œę³£ććć†ć«ćŖć‚Šć¾ć—ćŸćŒć€ęµć‚Œć®ęŠŠę”ć‚„å„ēØ®čØ­å®šć®č¦‹ē›“ć—ć‚’č”Œć„ć€ćŖ悓ćØ恋ē„”äŗ‹CI/CDćƒ‘ć‚¤ćƒ—ćƒ©ć‚¤ćƒ³ć‚’å°Žå…„ć§ćć¾ć—ćŸć€‚

ä»Šå¾Œć®čŖ²é”Œ

ć€€ć ć¦ć¾ćć®é–‹ē™ŗć«ćŠć‘ć‚‹ä»Šå¾Œć®čŖ²é”ŒćÆå±±ć»ć©ć‚ć‚Šć¾ć™ćŒć€ē‰¹ć«ę”¹å–„ć—ćŸć„ē‚¹ćƒ»ē››ć‚Šč¾¼ćæ恟恄ē‚¹ć«ćŠćć¾ć—恦ćÆäø‹čØ˜ć®é€šć‚Šć§ć™ć€‚

ā‘ ćƒ•ćƒ­ćƒ³ćƒˆć‚Øćƒ³ćƒ‰ćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æć®å°Žå…„

ć€€ä»Šå›žć®é–‹ē™ŗ恧ćÆć€å­¦ēæ’ęœŸé–“ćØč»¢č·é–‹å§‹ę™‚ęœŸć‚’č€ƒę…®ć—ć€ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗć®å®Œęˆć‚’å„Ŗå…ˆć•ć›ćŸćŸć‚ć€JavaScriptćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æć‚’åˆ©ē”Ø恛恚态å…Ø恦Blade Components恮ćæć§å®Ÿč£…ć—ć¾ć—ćŸć€‚ćć®ćŸć‚ć€JavaScriptč‡Ŗ体ćÆå­¦ēæ’ć—ć¾ć—ćŸćŒć€Vue.js悄ReactćØć„ć£ćŸćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æć®å­¦ēæ’ćÆć—ć¾ć›ć‚“ć§ć—ćŸć€‚ć‚ˆć‚Šå„Ŗ悌恟UI/UXć‚’å°Žå…„ć—ćŸć„ć®ć§ć€ä»Šå¾Œćƒ•ćƒ­ćƒ³ćƒˆć‚Øćƒ³ćƒ‰ćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æć®å­¦ēæ’ć‚’ć—ć¦ć„ććŸć„ćØę€ć£ć¦ćŠć‚Šć¾ć™ć€‚

ā‘”ęœ¬ę ¼ēš„ćŖé‹å–¶ć‚’ę„č­˜ć—ćŸć€ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£é¢ć®å¼·åŒ–

怀ē®”ē†č€…ęØ©é™ć‚’ęŒć£ćŸćƒ¦ćƒ¼ć‚¶ć‚’ē”Øę„ć—ć€ć™ć¹ć¦ć®ę©Ÿčƒ½ć‚’å®Ÿč”Œć§ćć‚‹ć‚ˆć†ć«čØ­å®šć—ć¦ćŠć‚Šć¾ć™ćŒć€ćć‚Œć ć‘ć§ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£é¢ć‚’č£œć†ć«ćÆč¶³ć‚ŠćŖ恄ćØę€ć£ć¦ćŠć‚Šć¾ć™ć€‚ē®”ē†č€…ē”»é¢ć‚’ä½œęˆć—ć€ę‚Ŗę„ć‚ć‚‹ćƒ¦ćƒ¼ć‚¶ćƒ¼ć®å¼·åˆ¶é€€ä¼šć‚„ć‚³ćƒ³ćƒ†ćƒ³ćƒ„ć®å‰Šé™¤ćŖ恩ćƒŖć‚ø悧ć‚Æćƒˆę©Ÿčƒ½ć‚’čæ½åŠ ć™ć‚‹ć ć‘恧ćÆćŖćć€ć‚»ć‚­ćƒ„ćƒŖćƒ†ć‚£ć®ēŸ„č­˜ć‚’ć‚‚ć£ćØå­¦ēæ’ć—ć¦ć€ć‚ˆć‚Šå®‰å…Øę€§ć®é«˜ć„ć‚¢ćƒ—ćƒŖ開ē™ŗćŒć§ćć‚‹ć‚ˆć†ć«ćŖć£ć¦ć„ććŸć„ć§ć™ć€‚

ā‘¢Webꊀ蔓恮åŸŗęœ¬ēš„ēŸ„識

怀åŸŗęœ¬ęƒ…å ±ęŠ€č”“č€…č©¦éØ“ć®ę•™ē§‘ę›ø悒čŖ­ćæå…Ø般ēš„ć«å­¦ēæ’ć—ć¾ć—ćŸćŒć€ć‚¢ćƒ—ćƒŖ開ē™ŗć‚’é€šć˜ć¦ć¾ć ć¾ć ć‚ć‹ć£ć¦ć„ćŖ恄éƒØåˆ†ćŒå¤šć„ćØę„Ÿć˜ć¾ć—ćŸć€‚ćƒ—ćƒ­ć‚°ćƒ©ćƒŸćƒ³ć‚°ć ć‘ć§ćÆćŖćć€åœŸå°ćØćŖ悋Webꊀ蔓恮å…Ø般ēš„ēŸ„č­˜ć‚’å­¦ēæ’恗åŸŗē¤Žå›ŗć‚ć‚’ć—ć£ć‹ć‚Šć—ć¦ć„ćć“ćØ恧态悈悊č³Ŗć®é«˜ć„ć‚¢ćƒ—ćƒŖ開ē™ŗ恌恧恍悋ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć‚’ē›®ęŒ‡ć—ć¾ć™ć€‚

6. ē‹¬å­¦ć§ć®å­¦ēæ’恮道ē­‹

恓恓恋悉ćÆ态ē§č‡Ŗčŗ«ć®å­¦ēæ’ćƒ­ćƒ¼ćƒ‰ćƒžćƒƒćƒ—ć«ćƒ•ć‚©ćƒ¼ć‚«ć‚¹ć—ć¦čæ°ć¹ć¦ć„ćć¾ć™ć€‚

ē‹¬å­¦ć‚’éø悓恠ē†ē”±

ć€€å˜ē“”ć«ćŠé‡‘ćŒćŖć‹ć£ćŸćØ恄恆ē†ē”±ć‚‚ć‚ć‚Šć¾ć™ćŒć€ćŖćœć‚¹ć‚Æćƒ¼ćƒ«ć«é€šć‚ćšē‹¬å­¦ć§ć®å­¦ēæ’ć‚’éø悓恠恋恫恤恄恦态äø‹čؘ2ē‚¹ć®ē†ē”±ćŒć‚ć‚Šć¾ć™ć€‚
ļ¼ˆć‚¹ć‚Æćƒ¼ćƒ«ć‚„å°‚é–€å­¦ę ”ć«é€šć„ćŸć„ćØć„ć†å¼·ć„ę€ć„ć‚‚ć‚‚ć”ć‚ć‚“ć‚ć‚Šć¾ć—ćŸć€ć‚¹ć‚Æćƒ¼ćƒ«ćØē‹¬å­¦ć€ć©ć”悉恌č‰Æć„ćƒ»ę‚Ŗ恄恮話恧ćÆć”ć–ć„ć¾ć›ć‚“ć®ć§ć”ē†č§£ć„ćŸć ć‘ć¾ć™ćØå¹ø恄恧恙怂ļ¼‰

ā‘ č‡Ŗåˆ†ćŒęœ¬å½“ć«ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć«ćŖć‚ŠćŸć„ć®ć‹ć€č¦šę‚Ÿć‚’č©¦ć—ćŸć‹ć£ćŸć‹ć‚‰ć€‚

ć€€å…ƒć€…ć€å¤§å­¦4幓ē”Ÿäø­ęœŸć«Webć‚Øćƒ³ć‚øćƒ‹ć‚¢ćØ恄恆職ꄭ悒ēŸ„悊态č‡Ŗåˆ†ć‚‚ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć«ćŖ悊恟恄态ćØč€ƒćˆå§‹ć‚ć¾ć—ćŸć€‚ć—ć‹ć—ć€ćć†ć„ć†ę†§ć‚Œć‚’ęŠ±ć„ć¦ć„ć‚‹ć ć‘ć§ć€å®Ÿéš›ć®ćØ恓悍ćÆč«¦ć‚ćšć«ęœ¬å½“ć«ä»•äŗ‹ć‚’ć‚„ć‚Šåˆ‡ć‚Œć‚‹ć®ć‹ć€ęŠ€č”“ćŒå„½ćć«ćŖć‚Œć‚‹ć®ć‹ć€ćØč‡Ŗå•ć—ć¾ć—ćŸć€‚å®Ÿéš›ć«ć‚Øćƒ³ć‚øćƒ‹ć‚¢ćØć—ć¦åƒćć ć—ć¦ć‹ć‚‰ćÆ态ꬔ怅ćØå¤§ććŖå£ć«ē›“é¢ć™ć‚‹ćØę€ć„ć¾ć™ć—ć€ćć‚Œć‚’č‡Ŗåˆ†ć®åŠ›ć§ä¹—ć‚Šč¶Šćˆć¦ć„ćåæ…č¦ćŒć‚ć‚‹ćØę€ć„ć¾ć™ć€‚
ć€€ćŸć ć‚„ć£ć¦ćæ恟恄态ćØć„ć†ę†§ć‚Œć ć‘ć§ć‚„ć£ć¦ć„ć‘ć‚‹ć‚ˆć†ćŖ職ꄭ恧ćÆćŖ恄ćØę„Ÿć˜ć¾ć—ćŸć€‚č‡Ŗåˆ†ćŒęœ¬å½“ć«ć‚„ć‚Šåˆ‡ć‚Œć‚‹ć®ć‹ć€ę ¹ę€§ć‚’č©¦ć™ćŸć‚ć«ć‚ćˆć¦ć‚¹ć‚Æćƒ¼ćƒ«ć‚„å°‚é–€å­¦ę ”ć«é€šć‚ćšć€č‡Ŗåˆ†ć§čŖ²é”Œč§£ę±ŗć›ć–ć‚‹ć‚’å¾—ćŖ恄ē’°å¢ƒć«čŗ«ć‚’ē½®ćć¾ć—ćŸć€‚

ā‘”č‡Ŗčµ°åŠ›ć‚’ć¤ć‘ćŸć‹ć£ćŸć‹ć‚‰ć€‚

怀äøŠčØ˜ć®ē†ē”±ćØē¹‹ćŒć£ć¦ć„ć¾ć™ćŒć€ć‚Øćƒ³ć‚øćƒ‹ć‚¢ćØć—ć¦åƒććŸć‚ć«ć‚ˆć‚Šäø€å±¤é«˜ć„č‡Ŗčµ°åŠ›ć‚’čŗ«ć«ć¤ć‘悋恓ćØćŒé‡č¦ć ćØę„Ÿć˜ć¾ć—ćŸć€‚ē‹¬å­¦ć§å­¦ēæ’ć‚’é€²ć‚ć‚‹ć“ćØć«ć‚ˆć‚Šć€č‡Ŗåˆ†ć®č¦šę‚Ÿć‚’č©¦ć›ć‚‹ć®ćØåŒę™‚ć«ć€čŖ²é”Œć‚’č‡Ŗå·±č§£ę±ŗ恧恍悋č‡Ŗčµ°åŠ›ć‚’čŗ«ć«ć¤ć‘ć‚‰ć‚Œć‚‹ć®ć§ćÆćŖ恄恋ćØę€ć„ć¾ć—ćŸć€‚
ć€€å®Ÿéš›ć€č‡Ŗåˆ†ć®å­¦ēæ’ēŠ¶ę³ć‚„é–‹ē™ŗć®é€²ę—ēŠ¶ę³ć®ē®”ē†ć—ć¦ćć‚Œć‚‹äŗŗćÆ恄ćŖć‹ć£ćŸćŸć‚ć€ē‹¬å­¦ć‚’ē¶šć‘ć‚‹ćŸć‚ć«ćÆé«˜ć„č‡Ŗå·±ē®”ē†čƒ½åŠ›ćŒåæ…č¦ć§ć—ćŸć€‚å­¦ēæ’ć‚’é–‹å§‹ć™ć‚‹å‰ćÆ态č‡Ŗåˆ†ć®č‡Ŗčµ°åŠ›ć‚„ē©ę„µę€§ćÆć¾ć ć¾ć ē”ŸåŠåÆ恧恂悋ćØč‡ŖčŖć™ć‚‹ć»ć©äø­é€”半ē«ÆćŖäŗŗé–“ć§ć—ćŸćŒć€ä»Šē¾åœØćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗ悒äø€ę®µč½ä½œć‚Šēµ‚ćˆć¦ćæć¦ć€ć‚„ć‚Šćć‚‹åŠ›ćŒä»„å‰ć‚ˆć‚Šć‚‚ä»˜ć„ćŸćŖćØč‡Ŗåˆ†ć®ęˆé•·ć«č‡Ŗäæ”ćŒęŒć¦ć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć—ćŸć€‚

ć€€å®Ÿéš›ć«ē‹¬å­¦ćÆč¾›ć„é¢ć‚‚ć‚ć‚Šć¾ć—ćŸćŒć€ć‚‚ć”ć‚ć‚“ę„½ć—ć„é¢ć‚‚å¤šćć‚ć‚Šć¾ć—ćŸć€‚å˜ē“”ć«é¢ē™½ć•ć‚„ęŽ¢ē©¶åæƒćŖć©ćŒē”Ÿć¾ć‚ŒęŠ€č”“ć«č§¦ć‚Œć‚‹ć®ćŒå„½ćć«ćŖ悊态1幓仄äøŠćØé•·ć„é–“å­¦ēæ’ć‚’ć‚³ćƒ„ć‚³ćƒ„ćØē¶šć‘ć‚‰ć‚Œć¾ć—ćŸć€‚ęŠ€č”“ćŒå„½ćć«ćŖć£ćŸéƒØåˆ†ćŒå¤§ćć„ć§ć™ć€‚

å­¦ēæ’ęœŸé–“

  • 2022幓1ęœˆć€œå­¦ēæ’開始
  • 2023幓6ęœˆć«ć‚¢ćƒ—ćƒŖ悒äø€ę—¦å®Œęˆć•ć›ć‚‹ć€‚

怀週5ę—„ć€åƒććŖćŒć‚‰å­¦ēæ’ć‚’ē¶šć‘ćŸćŸć‚ć€ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗå®Œęˆć¾ć§ć«å‰²ćØę™‚é–“ćŒęŽ›ć‹ć£ć¦ć—ć¾ć„ć¾ć—ćŸć€‚
é–‹å§‹ę™‚ē‚¹ć§ć€å­¦ēæ’ęœŸé–“ćÆ1幓間ćØęƒ³å®šć—ć¦ćŠć‚Šć¾ć—ćŸćŒć€1å¹“ćŒēµŒéŽć—ćŸę™‚ē‚¹ć§ē›®ęØ™ć®ćƒ¬ćƒ™ćƒ«ć«ćÆ到åŗ•é”恗恦恄ćŖć‹ć£ćŸć‚ć€å­¦ēæ’ęœŸé–“ć‚’ä¼øć°ć—ć¾ć—ćŸć€‚
ć€€å­¦ēæ’ć®é€²ę—ē®”ē†ć‚„ē¶™ē¶šć•ć›ćŸčØ¼ę˜ŽćØ恗恦态2022幓2꜈恋悉Twitterć«å­¦ēæ’čØ˜éŒ²ć‚’ę®‹ć—ć¦ćŠć‚Šć¾ć™ć€‚
怀ē¾ēŠ¶ć€å­¦ēæ’ć‚’é–‹å§‹ć—ć¦ć‹ć‚‰ćÆ态äŗˆå®šćŒć‚ć‚‹ę—„ć‚’é™¤ć„ć¦ć»ć¼ęÆŽę—„ć€ć‚³ćƒ„ć‚³ćƒ„ē¶™ē¶šć•ć›ć¦ćć¾ć—ćŸć€‚

å­¦ēæ’ę™‚ć«å·„å¤«ć—ćŸć“ćØ

č‡Ŗ己学ēæ’ć‚’ē¶™ē¶šćƒ»ē®”ē†ć™ć‚‹ćŸć‚ć€äø‹čØ˜ć®å·„å¤«ć‚’å‡ć‚‰ć—ć¾ć—ćŸć€‚

ā‘ å‹‰å¼·ä¼šćøć®å‚åŠ ćƒ»äø»å‚¬

怀Zoom悄Google Meetć§å‹äŗŗćŸć”ćØę±ŗć¾ć£ćŸę™‚é–“ć«ęÆŽę—„ć€å„ć€…å„½ććŖ恓ćØć‚’å‹‰å¼·ć™ć‚‹å “ć‚’é–‹ćć¾ć—ćŸć€‚é–‹å‚¬ć™ć‚‹ć“ćØć§ć€å‹‰å¼·ć™ć‚‹ćć£ć‹ć‘ć‚’ęÆŽę—„ä½œć‚‹ć“ćØćŒć§ćć€å­¦ēæ’ę„ę¬²ć‚’ē¶­ęŒć§ćć¾ć—ćŸć€‚ć¾ćŸć€å‹‰å¼·ä¼šć®ēµ‚ć‚ć‚Šć«å‹‰å¼·å†…å®¹ć‚’å ±å‘Šć—åˆć†ć“ćØć§ć€å­¦ēæ’å†…å®¹ć®ć‚¢ć‚¦ćƒˆćƒ—ćƒƒćƒˆćŒć§ćć¾ć—ćŸć€‚

ā‘”å®Ÿå‹™ć‚’ęƒ³å®šć—ćŸé–‹ē™ŗ

ć€€å®Ÿå‹™ęœŖēµŒéؓćŖć®ć§ć€ä»Šå¾Œćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆć«å‚ē”»ć—ćŸćØćć«ć™ćć«ęˆ¦åŠ›ć«ćŖć‚Œć‚‹ć‚ˆć†ć€å°‘ć—ć§ć‚‚å®Ÿå‹™ć‚’ęƒ³å®šć—ć¦ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗć‚’ä½œęˆć—ć¾ć—ćŸć€‚ē‰¹ć«ę„č­˜ä»˜ć‘ć—ćŸéƒØ分ćÆäø‹čØ˜ć®ćØ恊悊恧恙怂

  • Git/GitHub恮ä½æć„ę–¹
    ć€€ę©Ÿčƒ½ć®čæ½åŠ ć€äæ®ę­£ć‚’恙悋際ćÆ态åæ…ćšćƒ–ćƒ©ćƒ³ćƒć‚’åˆ‡ć£ć¦é–‹ē™ŗć—ć¾ć—ćŸć€‚ć¾ćŸć€ćƒ—ćƒƒć‚·ćƒ„ć™ć‚‹éš›ćÆćƒ—ćƒ«ćƒŖć‚Æć‚Øć‚¹ćƒˆć‚’å‡ŗć—ć€ćƒ¬ćƒ“ćƒ„ćƒ¼ć‚’ć—ć¦ć‹ć‚‰ćƒžćƒ¼ć‚ø恙悋悈恆åæƒćŒć‘ć¾ć—ćŸć€‚ć¾ćŸć€ē©ę„µēš„恫issue悒ē™ŗč”Œć—ć€č§£ę±ŗ恗恟悉ć‚Æćƒ­ćƒ¼ć‚ŗ恙悋ćØć„ć£ćŸę‰‹é †ć‚’čøć‚“恧開ē™ŗć‚’é€²ć‚ć¾ć—ćŸć€‚

  • ćŖć‚‹ć¹ćå…¬å¼ć®ćƒ‰ć‚­ćƒ„ćƒ”ćƒ³ćƒˆć‚’čŖ­ć‚€
    ć€€ę–°ć—ć„ęŠ€č”“ć«č§¦ć‚Œć‚‹ćØćć‚„ć€å®Ÿč£…ć®ä»•ę–¹ćŒć‚ć‹ć‚‰ćŖ恏ćŖć£ćŸćØ恍ćÆć€ć¾ćšćÆå…¬å¼ćƒ‰ć‚­ćƒ„ćƒ”ćƒ³ćƒˆć«ē›®ć‚’é€šć—ć¾ć—ćŸć€‚é›£ć—ć„čØ€ć„å›žć—ć‚„ęŠ€č”“ē”ØčŖžćŒåˆ—ęŒ™ć—ć¦ćŠć‚Šå°‘ć€…čŖ­ćæć„ć‚‰ć„ć§ć™ćŒć€äŗ‹å‰ēŸ„識ćØć—ć¦å…ˆć«ć‚ć‹ć‚‰ćŖ恄ē”ØčŖžć‚’čŖæć¹ć€ćć‚Œć‹ć‚‰å…¬å¼ćƒ‰ć‚­ćƒ„ćƒ”ćƒ³ćƒˆć«ęˆ»ć‚‹ć‚ˆć†ć«ć—ć¦ć€čŖ­ćæę…£ć‚Œć‚‹ć‚ˆć†ć«åŠŖåŠ›ć—ć¾ć—ćŸć€‚

  • ć‚Øćƒ©ćƒ¼ę™‚ćÆ态ć‚Øćƒ©ćƒ¼ę–‡ć‚’čŖ­ć‚“恧仮čŖ¬ć‚’ē«‹ć¦ć¦ć‹ć‚‰äæ®ę­£ć™ć‚‹
    怀ć‚Øćƒ©ćƒ¼ćƒ”ćƒƒć‚»ćƒ¼ć‚ø恌å‡ŗ恟ćØ恍ćÆ态ē›®ć‚’通恗恦ē†č§£ć™ć‚‹ć‚ˆć†ć«ć—ć¾ć—ćŸć€‚čŖ­ć‚“恧悂ē†č§£ć§ććŖ恄ćØ恍ćÆēæ»čØ³ć—ć¦å†…å®¹ć‚’å¤§ć¾ć‹ć«ē†č§£ć—ćŸć‚ćØ态ć‚Øćƒ©ćƒ¼ć®ē‰¹å®šć«ē§»č”Œć™ć‚‹ć‚ˆć†ć«ć—ć¾ć—ćŸć€‚
    ć€€ćć®ę™‚ć«é ­ć®äø­ć§ć€ć“ć†ć—ćŸć‹ć‚‰ć“ć®ć‚ˆć†ćŖć‚Øćƒ©ćƒ¼ćŒå‡ŗćŸć®ć§ćÆćŖ恄恋态ćØč‡Ŗåˆ†ć®äø­ć§ä»®čŖ¬ć‚’ē«‹ć¦ć¦ć„ć¾ć—ćŸć€‚ćć†ć™ć‚‹ć“ćØ恧态ć‚Øćƒ©ćƒ¼åŽŸå› ć‚’ē‰¹å®šć§ććŸćØćć®ē†č§£åŗ¦ćŒäøŠćŒć‚Šć€ć€ŒćŖ悓ćØćŖ恏ē›“ć—ćŸć‚‰ć†ć¾ćå‹•ć„ćŸć€ćØ恄恆ēŠ¶ę³ć‚’回éæć§ćć¾ć™ć€‚

ā‘¢ē›®ęØ™ć‚’čØ­å®šć—ć€ć‚¹ć‚±ć‚øćƒ„ćƒ¼ćƒ«ć‚’ē«‹ć¦ć¦é–‹ē™ŗ恙悋

怀Notion悒ä½æē”Ø恗态1é€±é–“ć®ä½œę„­å†…å®¹ć‚’ć–ć£ćć‚Šč€ƒćˆć¦ć‹ć‚‰å­¦ēæ’ćƒ»é–‹ē™ŗć‚’é€²ć‚ć¾ć—ćŸć€‚ć¾ćŸć€ē›®ęØ™é”ęˆåŗ¦ćŒć©ć‚Œćć‚‰ć„恧恂悋恋态č‡Ŗ分ćŖ悊恫ęŒÆ悊čæ”ć‚Šć€ę˜Žę—„é€²ć‚ć‚‹ć‚æć‚¹ć‚Æć‚’å‰²ć‚Šå‡ŗ恗恦恋悉åÆć‚‹ć‚ˆć†ć«åæƒćŒć‘ć¾ć—ćŸć€‚
怀ē‰¹ć«ē‹¬å­¦ć§ć®å­¦ēæ’ćŖć®ć§ć€ć‚¹ć‚±ć‚øćƒ„ćƒ¼ćƒ«č؈ē”»ćØé€²ę—ē®”ē†ćÆꀠ悉ćŖć„ć‚ˆć†ę„č­˜ć—ć¦ć€å­¦ēæ’ćƒ»é–‹ē™ŗć‚’é€²ć‚ć¾ć—ćŸć€‚

7. 恊äø–話恫ćŖć£ćŸć‚µćƒ¼ćƒ“ć‚¹ć‚„čؘäŗ‹

ęŠ€č”“åˆ„ć«ć€ćƒ”ć‚¤ćƒ³ć§ä½æē”Øć—ćŸå­¦ēæ’ę•™ęć‚„ć‚µć‚¤ćƒˆć€čؘäŗ‹ć‚’ē“¹ä»‹ć•ć›ć¦ć„ćŸć ćć¾ć™ć€‚

ā–  HTML/CSS/PHP/SQL/Docker

ā–  Laravel

  • Newmonz Laravelå…„é–€&å®Ÿč·µ
    恓悌恌ē„”ę–™ć§č¦‹ć‚‰ć‚Œć‚‹ć®ć‹ļ¼ć£ć¦ę€ć†ć»ć©ć€ć“ć®ć‚µć‚¤ćƒˆć ć‘ć§ć‹ćŖć‚Šå­¦ēæ’ć§ćć¾ć™ć€‚
    Laravelć®å­¦ēæ’恫恊恄恦态ē›øå½“ćŠäø–話恫ćŖć‚Šć¾ć—ćŸć€‚ęŽ§ćˆć‚ć«čØ€ć£ć¦ē„žę•™ęć§ć™ć€‚
    äŗŗ恫恊恙恙悁恙悋ćØ恍ćÆēµ¶åÆ¾ć«ć“ć”ć‚‰ć‚’ē“¹ä»‹ć—ć¾ć™ć€‚

ā–  AWS

ā–  CircleCI

ā–  ćƒ†ć‚¹ćƒˆć‚³ćƒ¼ćƒ‰ļ¼ˆPHPUnitļ¼‰

ā–  ćć®ä»–

ā–  ćƒćƒ¼ćƒˆćƒ•ć‚©ćƒŖć‚Ŗä½œęˆę™‚ć«å‚č€ƒć«ć•ć›ć¦ć„ćŸć ć„ćŸčؘäŗ‹ć‚„ć‚µć‚¤ćƒˆ

何åŗ¦ć‚‚何åŗ¦ć‚‚ę‹č¦‹ć™ć‚‹ć†ć”ć«ćƒ•ć‚”ćƒ³ć«ćŖć‚Šć¾ć—ćŸć€‚

8. ćŠć‚ć‚Šć«

ć€€ć“ć“ć¾ć§ć®å‹‰å¼·ęœŸé–“ć‚’ęŒÆ悊čæ”ć£ć¦ćæć¦ć€é›£ć—ć„ćŖć€č¾›ć„ćŖćØꀝ恆悈恆ćŖå¤§ććŖå£ć«ä½•åŗ¦ć‚‚ć¶ć”å½“ćŸć£ć¦ććŸćŖćØę„Ÿć˜ć¾ć™ć€‚ć—ć‹ć—ć€ćć‚Œć‚’äøŠå›žć‚‹ę„½ć—恕悄ćƒÆć‚ÆćƒÆć‚Æę„ŸćŒć‚ć£ćŸć‹ć‚‰ć“ćć€å­¦ēæ’ć‚’ē¶šć‘悋恓ćØćŒć§ćć¾ć—ćŸć€‚č‡Ŗåˆ†ć§ć”ć‚‡ć£ćØć‚„ć£ć¦ćæć‚ˆć†ć€č§£ę±ŗ恗恦ćæ悈恆ćØćŖ悓恧悂ē©ę„µēš„ć«ćƒˆćƒ©ć‚¤ć—ć¦ććŸć‹ć‚‰ć“ćć€ę„½ć—ć•ćƒ»é¢ē™½ćæć‚’å¤§ććę„Ÿć˜ć‚‹ć“ćØćŒć§ććŸć®ć§ćÆćŖ恄恋ćØę€ć£ć¦ć„ć¾ć™ć€‚ćŖć®ć§ć€ćŸćØćˆć“ć®é“ćŒé å›žć‚Šć«ćŖć£ć¦ć„ćŸćØ恗恦悂态ē‹¬å­¦ć‚’éøęŠžć—ć¦ęœ¬å½“ć«č‰Æć‹ć£ćŸćØę€ć£ć¦ćŠć‚Šć¾ć™ć€‚
ć€€ć“ć‚Œć‹ć‚‰č»¢č·ę“»å‹•ć‚’ć—ć¦ć„ćäŗˆå®šć§ć™ćŒć€ć‚Øćƒ³ć‚øćƒ‹ć‚¢ćØć—ć¦ć‚¹ć‚æćƒ¼ćƒˆć‚’åˆ‡ć‚ŒćŸå¾Œć‚‚ć€å­¦ć³ē¶šć‘ć‚‹å§æå‹¢ć‚’åæ˜ć‚Œćšć€ę—„怅č²Ŗę¬²ć«å­¦ēæ’ć—ć¦ć„ćć¾ć™ć€‚ćć—ć¦ćƒ¦ćƒ¼ć‚¶ć®ćƒ‹ćƒ¼ć‚ŗć«é©åˆ‡ć«åæœćˆć€ä¾”å€¤ć‚’ęä¾›ć§ćć‚‹ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć«åæ…恚ćŖć£ć¦ćæć›ć¾ć™ć€‚

ļ¼ˆ2023/11/3 čæ½čؘļ¼‰
ē“„2ćƒ¶ęœˆåŠć®č»¢č·ę“»å‹•ć®ęœ«ć€Webē³»å—čؗ開ē™ŗä¼ę„­ć‹ć‚‰å†…å®šć‚’ć„ćŸć ćć“ćØćŒć§ćć¾ć—ćŸć€‚
2023幓9ęœˆć‹ć‚‰ć‚µćƒ¼ćƒć‚µć‚¤ćƒ‰ć‚Øćƒ³ć‚øćƒ‹ć‚¢ćØć—ć¦åƒćå§‹ć‚ć¾ć—ćŸļ¼
é å›žć‚Šć«ćÆćŖć£ć¦ć—ć¾ć„ć¾ć—ćŸćŒć€ć“ć“ć¾ć§åœ°é“ć«é ‘å¼µć£ć¦ćć¦ęœ¬å½“ć«č‰Æć‹ć£ćŸć§ć™šŸ‘

ēØšę‹™ćŖꖇē« ć«ć‚‚é–¢ć‚ć‚‰ćšć€ć“ć®čؘäŗ‹ć‚’čŖ­ć‚“ć§ćć ć•ć‚Šć€ęœ¬å½“ć«ć‚ć‚ŠćŒćØć†ć”ć–ć„ć¾ć—ćŸ:bow_tone1:
ć‚‚ć—ä½•ć‹ć€é–“é•ć£ć¦ć„ć‚‹ē‚¹ćŒć‚ć‚Šć¾ć—ćŸć‚‰ć€ę•™ćˆć¦ć„ćŸć ć‘ć¾ć™ćØå¹ø恄恧恙怂

70
45
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
45