šŸŽć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘ć®ē™»ē«œé–€ļ¼Pythonで学ぶDI(ä¾å­˜ę€§ć®ę³Øå…„)å®Œå…Øē†č§£ć‚¬ć‚¤ćƒ‰šŸ’‰

目欔
  1. šŸ’‰ 怌DIć€ćŒåˆ†ć‹ć‚‹ćØć€ć‚³ćƒ¼ćƒ‰ć®äø–ē•ŒćŒćć£ćØåŗƒćč¦‹ćˆć‚‹
  2. šŸ“š ćć‚‚ćć‚‚ć€Œä¾å­˜ć—ć¦ć„ć‚‹ć€ćØćÆć©ć†ć„ć†ēŠ¶ę…‹ć‹
  3. šŸ›  DIć‚’ę®µéšŽēš„ć«å®Ÿč£…ć—ć¦ćæć‚‹
  4. 🌟 DIć‚’ēæ’å¾—ć™ć‚‹ćØč¦‹ćˆć¦ćć‚‹4ć¤ć®ćƒ™ćƒćƒ•ć‚£ćƒƒćƒˆ
  5. šŸ“– DIćØć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘čØ­čØˆć‚’ę·±ćå­¦ć¶ćŠć™ć™ć‚ę›øē±
  6. ā“ FAQ|DIć«ć¾ć¤ć‚ć‚‹ć‚ˆćć‚ć‚‹ē–‘å•
  7. šŸŽÆ ć¾ćØć‚ļ½œć€Œå¤–ć‹ć‚‰å·®ć—ę›æćˆć‚‰ć‚Œć‚‹čØ­čØˆć€ćŒć€ć‚Øćƒ³ć‚øćƒ‹ć‚¢ćØć—ć¦ć®ę­¦å™Øć«ćŖć‚‹

šŸ’‰ 怌DIć€ćŒåˆ†ć‹ć‚‹ćØć€ć‚³ćƒ¼ćƒ‰ć®äø–ē•ŒćŒćć£ćØåŗƒćč¦‹ćˆć‚‹

ć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘ć‚’å­¦ć‚“ć§ć„ć‚‹ćØć€åæ…ćšć©ć“ć‹ć§ć€ŒDI(Dependency Injectionļ¼ä¾å­˜ę€§ć®ę³Øå…„)ć€ćØć„ć†ćƒÆćƒ¼ćƒ‰ć«å‡ŗä¼šć„ć¾ć™ć€‚ęœ€åˆćÆå‘Ŗę–‡ć®ć‚ˆć†ć«é›£ć—ćčžć“ćˆć‚‹ć‹ć‚‚ć—ć‚Œć¾ć›ć‚“ćŒć€ćć®ęœ¬č³ŖćÆćØć¦ć‚‚ć‚·ćƒ³ćƒ—ćƒ«ć€‚ć€Œć‚ć‚‹ć‚Æćƒ©ć‚¹ćŒåæ…č¦ćØć™ć‚‹éƒØå“ć‚’ć€å¤–ć‹ć‚‰å·®ć—ę›æćˆć‚‰ć‚Œć‚‹å½¢ć§ęø”ć—ć¦ć‚ć’ć‚‹ć€ćØć„ć†čØ­čØˆę‰‹ę³•ć«éŽćŽć¾ć›ć‚“ć€‚

ć“ć®č€ƒćˆę–¹ćŒčŗ«ć«ć¤ććØć€ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ęŽ„ē¶šć‚’Web APIć«åˆ‡ć‚Šę›æćˆćŸć‚Šć€ęœ¬ē•Ŗć‚³ćƒ¼ćƒ‰ć‚’äø€åˆ‡å¤‰ćˆćšć«ćƒ†ć‚¹ćƒˆē”Øć®ćƒ¢ćƒƒć‚Æć«å·®ć—ę›æćˆćŸć‚ŠćØć„ć£ćŸę“ä½œćŒć€é©šćć»ć©ć‚¹ćƒ ćƒ¼ć‚ŗć«ć§ćć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚ć€ŒčØ­čØˆć®ć‚»ćƒ³ć‚¹ćŒć‚ć‚‹äŗŗć€ćØč©•ä¾”ć•ć‚Œć‚‹å®Ÿå‹™ć‚Øćƒ³ć‚øćƒ‹ć‚¢ć«ćŖć‚‹ćŸć‚ć®ć€ęœ€åˆć«ć—ć¦ęœ€é‡č¦ć®ē™»ē«œé–€ć€‚ćć‚ŒćŒDIć§ć™šŸšŖāœØ

šŸ“š ćć‚‚ćć‚‚ć€Œä¾å­˜ć—ć¦ć„ć‚‹ć€ćØćÆć©ć†ć„ć†ēŠ¶ę…‹ć‹

ćŸćØćˆć°ć€ćƒ¦ćƒ¼ć‚¶ćƒ¼ęƒ…å ±ć‚’ē”»é¢ć«č”Øē¤ŗć™ć‚‹Serviceć‚Æćƒ©ć‚¹ćŒć‚ć‚‹ćØć—ć¾ć™ć€‚ć“ć®ć‚Æćƒ©ć‚¹ć®äø­ć§DBUserRepository()ć‚’ē›“ęŽ„__init__ć§ē”Ÿęˆć—ć€get_user_by_id()ć‚’å‘¼ć³å‡ŗć—ć¦ćƒ‡ćƒ¼ć‚æć‚’å–å¾—ć—ć¦ć„ć‚‹ćØć—ćŸć‚‰ć€Serviceć‚Æćƒ©ć‚¹ćÆć€ŒDBUserRepositoryć‚Æćƒ©ć‚¹ć«å¼·ćä¾å­˜ć—ć¦ć„ć‚‹ć€ēŠ¶ę…‹ć§ć™ć€‚

ć“ć®čØ­čØˆć®ä½•ćŒćƒžć‚ŗć„ć‹ćØć„ć†ćØć€ćƒ‡ćƒ¼ć‚æć®å–å¾—å…ˆć‚’ćƒ‡ćƒ¼ć‚æćƒ™ćƒ¼ć‚¹ć‹ć‚‰Web APIć«å¤‰ćˆćŸććŖć£ćŸēž¬é–“ć€Serviceć‚Æćƒ©ć‚¹ęœ¬ä½“ć®ć‚³ćƒ¼ćƒ‰ć‚’ę›øćę›ćˆć‚‹åæ…č¦ćŒå‡ŗć¦ćć‚‹ē‚¹ć§ć™ć€‚ć‚Æćƒ©ć‚¹åćŒé•ć†ć€ćƒ”ć‚½ćƒƒćƒ‰åćŒé•ć†ć€å¼•ę•°ćŒé•ć†ā€¦ć€‚ć„ć–å¤‰ę›“ć—ć‚ˆć†ćØć™ć‚‹ćØć€ć‚µćƒ¼ćƒ“ć‚¹ć‚Æćƒ©ć‚¹ć®äø­čŗ«ćŒäø€ę°—ć«ę›øćē›“ć—ć«ćŖć‚Šć¾ć™ć€‚ć“ć‚ŒćÆć”ć‚‡ć†ć©ć€Œå¤–éƒØćƒ©ć‚¤ćƒ–ćƒ©ćƒŖć‚’ä½æć†ćŸć‚ć«ć€ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖć®äø­čŗ«ć‚’ęÆŽå›žę›øćę›ćˆćŖć„ćØå‹•ć‹ćŖć„ć€ćØčØ€ć‚ć‚ŒćŸćØćć®é•å’Œę„Ÿć«ä¼¼ć¦ć„ć¾ć™ć€‚ä¾æåˆ©ćŖéƒØå“ćÆć€ä½æć†å“ć®ć‚³ćƒ¼ćƒ‰ć‚’ę±šć•ćšć«å·®ć—ę›æćˆć‚‰ć‚Œć‚‹ć¹ćć§ć™šŸ”§

šŸ›  DIć‚’ę®µéšŽēš„ć«å®Ÿč£…ć—ć¦ćæć‚‹

ā‘  å…±é€šć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć‚’å®šē¾©ć™ć‚‹(ęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹)

Pythonć«ćÆåŽ³åÆ†ćŖć€Œć‚¤ćƒ³ć‚æćƒ¼ćƒ•ć‚§ć‚¤ć‚¹ć€ę§‹ę–‡ćÆć‚ć‚Šć¾ć›ć‚“ćŒć€abcćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć®ABCMetaと@abstractmethodć‚’ä½æć†ć“ćØć§ć€ęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹ćØć—ć¦åŒć˜å½¹å‰²ć‚’ęžœćŸć›ć¾ć™ć€‚ć€Œćƒ¦ćƒ¼ć‚¶ćƒ¼ćƒ‡ćƒ¼ć‚æć‚’å–å¾—ć™ć‚‹ć‚Æćƒ©ć‚¹ćÆć€åæ…ćšget_user_by_id(user_id)ćØć„ć†ćƒ”ć‚½ćƒƒćƒ‰ć‚’ęŒć¤ć“ćØć€ćØć„ć†ćƒ«ćƒ¼ćƒ«ć‚’UserRepositoryć‚Æćƒ©ć‚¹ć«å®šē¾©ć—ć¦ćŠćć¾ć™ć€‚

ā‘” å…·ä½“ć‚Æćƒ©ć‚¹ć‚’ęŠ½č±”ć‚Æćƒ©ć‚¹ć‹ć‚‰ę“¾ē”Ÿć•ć›ć‚‹

SQLiteć‹ć‚‰ćƒ‡ćƒ¼ć‚æć‚’å–ć£ć¦ćć‚‹DBUserRepositoryć‚Æćƒ©ć‚¹ćØć€Web APIć‹ć‚‰å–ć£ć¦ćć‚‹APIUserRepositoryć‚Æćƒ©ć‚¹ć‚’ć€ćć‚Œćžć‚ŒUserRepositoryć‚’ē¶™ę‰æć™ć‚‹å½¢ć§å®Ÿč£…ć€‚ć“ć‚Œć§ć€Œćƒ¦ćƒ¼ć‚¶ćƒ¼ćƒ‡ćƒ¼ć‚æć‚’å–å¾—ć™ć‚‹ć€ćØć„ć†å…±é€šć®č²¬å‹™ć‚’ć€ē•°ćŖć‚‹ę‰‹ę®µć§ęžœćŸć™2ć¤ć®å®Ÿč£…ćŒå®Œęˆć—ć¾ć™ć€‚

ā‘¢ Serviceć‚Æćƒ©ć‚¹ćÆć€ŒęŠ½č±”ć€ć«ć ć‘ä¾å­˜ć•ć›ć‚‹

Serviceć‚Æćƒ©ć‚¹ć®__init__ć§å…·ä½“ć‚Æćƒ©ć‚¹ć‚’ē”Ÿęˆć™ć‚‹ć®ć§ćÆćŖćć€å¤–ć‹ć‚‰UserRepositoryåž‹ć®ć‚Ŗćƒ–ć‚øć‚§ć‚Æćƒˆć‚’å¼•ę•°ćØć—ć¦å—ć‘å–ć‚Šć€ć‚¤ćƒ³ć‚¹ć‚æćƒ³ć‚¹å¤‰ę•°ć«ä»£å…„ć—ć¦ćŠćć¾ć™ć€‚ć“ć‚ŒćŒć¾ć•ć«ć€Œä¾å­˜ę€§ć®ę³Øå…„ć€ć®ć‚³ć‚¢ć€‚Serviceć‚Æćƒ©ć‚¹ćÆć€Œćƒ¦ćƒ¼ć‚¶ćƒ¼ćƒ‡ćƒ¼ć‚æćŒå–ć‚Œć‚‹ćŖć‚‰ć€čŖ°ć§ć‚‚ć„ć„ć‚ˆć€ćØć„ć†ęŠ½č±”ēš„ćŖē“„ęŸć”ćØć«ć ć‘ä¾å­˜ć—ć€ćƒ‡ćƒ¼ć‚æå–å¾—ć®äø­čŗ«ćÆäø€åˆ‡ēŸ„ć‚Šć¾ć›ć‚“ć€‚

ā‘£ mainé–¢ę•°ć§ć€Œå…·ä½“ć€ć‚’ēµ„ćæē«‹ć¦ć‚‹

呼び出し偓であるmainé–¢ę•°ć§ćÆć€ē›®ēš„ć«åæœć˜ć¦APIUserRepository(url)恋DBUserRepository(connection)ć‚’ē”Ÿęˆć—ć€ćć‚Œć‚’Service(user_repository)ć«ęø”ć—ć¾ć™ć€‚å®Ÿč”Œē’°å¢ƒć‚’åˆ‡ć‚Šę›æćˆćŸć‘ć‚Œć°ć€main関数の1č”Œć‚’å·®ć—ę›æćˆć‚‹ć ć‘ć€‚Serviceć‚Æćƒ©ć‚¹ć®ć‚³ćƒ¼ćƒ‰ćÆ1ę–‡å­—ć‚‚č§¦ć‚Šć¾ć›ć‚“šŸŽÆ

⑤ åž‹ćƒ’ćƒ³ćƒˆ+mypyć§å®‰å…Øę€§ć‚’é«˜ć‚ć‚‹

PythonćÆå‹•ēš„åž‹ä»˜ć‘čØ€čŖžćŖć®ć§ć€ęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹ć‚’ē¶™ę‰æć—åæ˜ć‚Œć¦ć„ć¦ć‚‚å®Ÿč”Œę™‚ć¾ć§ć‚Øćƒ©ćƒ¼ćŒå‡ŗćŖć„ć“ćØćŒć‚ć‚Šć¾ć™ć€‚ćć“ć§def __init__(self, user_repository: UserRepository)ć®ć‚ˆć†ć«åž‹ćƒ’ćƒ³ćƒˆć‚’ä»˜ć‘ć€mypy悄VS Code恮mypyę‹”å¼µę©Ÿčƒ½ć§é™ēš„č§£ęžć‚’ć‹ć‘ć‚Œć°ć€ć€Œåž‹ćŒé•ć†ć‚ˆć€ćØć„ć†č­¦å‘ŠćŒć‚Øćƒ‡ć‚£ć‚æäøŠć§å³åŗ§ć«č”Øē¤ŗć•ć‚Œć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚å®Ÿč”Œå‰ć«ćƒŸć‚¹ć‚’ę½°ć›ć‚‹å®‰åæƒę„ŸćÆć€äø€åŗ¦å‘³ć‚ć†ćØę‰‹ę”¾ć›ć¾ć›ć‚“šŸ’”

🌟 DIć‚’ēæ’å¾—ć™ć‚‹ćØč¦‹ćˆć¦ćć‚‹4ć¤ć®ćƒ™ćƒćƒ•ć‚£ćƒƒćƒˆ

DIć‚’ć‚³ćƒ¼ćƒ‰ć«ēµ„ćæč¾¼ć‚ć‚‹ć‚ˆć†ć«ćŖć‚‹ćØć€é–‹ē™ŗć®ć‚ć‚‰ć‚†ć‚‹å “é¢ć§ę©ęµć‚’å—ć‘ć‚‰ć‚Œć¾ć™ć€‚

  • šŸ”„ åˆ‡ć‚Šę›æćˆć‚„ć™ć•ļ¼šćƒ‡ćƒ¼ć‚æć‚½ćƒ¼ć‚¹ć‚’DB恋悉API态APIć‹ć‚‰ćƒ¢ćƒƒć‚Æćøć€main関数1č”Œć§å·®ć—ę›æćˆåÆčƒ½
  • 🧪 ćƒ†ć‚¹ćƒˆć—ć‚„ć™ć•ļ¼šęœ¬ē•Ŗć®DBęŽ„ē¶šć‚’ē«‹ć”äøŠć’ćšć«ć€ćƒ†ć‚¹ćƒˆē”Øć®ćƒ•ć‚§ć‚¤ć‚Æå®Ÿč£…ć‚’ęø”ć—ć¦ćƒ¦ćƒ‹ćƒƒćƒˆćƒ†ć‚¹ćƒˆćŒę›øć‘ć‚‹
  • šŸ›” å¤‰ę›“ć«å¼·ć„ļ¼šå–å¾—å…ˆćŒå¤‰ć‚ć£ć¦ć‚‚Serviceć‚Æćƒ©ć‚¹ćÆē„”å¤‰ę›“ć€‚å½±éŸæēÆ„å›²ćŒå±€ę‰€åŒ–ć•ć‚Œć‚‹
  • šŸ“ č²¬å‹™ćŒę˜Žē¢ŗļ¼šć€Œćƒ‡ćƒ¼ć‚æć‚’å–ć‚‹äŗŗć€ćØć€Œćƒ‡ćƒ¼ć‚æć‚’č”Øē¤ŗć™ć‚‹äŗŗć€ćŒćć‚Œć„ć«åˆ†é›¢ć•ć‚Œć€ć‚³ćƒ¼ćƒ‰ćŒčŖ­ćæć‚„ć™ććŖć‚‹

šŸ“– DIćØć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘čØ­čØˆć‚’ę·±ćå­¦ć¶ćŠć™ć™ć‚ę›øē±

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

šŸ Pythonć§å­¦ć¶ć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘ć®ę±ŗå®šē‰ˆ

ć‚Æćƒ©ć‚¹ć€ē¶™ę‰æć€ćƒćƒŖćƒ¢ćƒ¼ćƒ•ć‚£ć‚ŗćƒ ć€ęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹ćØć„ć£ćŸåŸŗē¤Žć‹ć‚‰ć€DIć‚’å«ć‚€čØ­čØˆćƒ‘ć‚æćƒ¼ćƒ³ć¾ć§ć‚’Pythonć‚³ćƒ¼ćƒ‰ć§äøåÆ§ć«č§£čŖ¬ć™ć‚‹äø€å†Šć€‚å‹•ē”»ć§ćÆé§†ć‘č¶³ć ć£ćŸéƒØåˆ†ć®ć€ŒćŖćœćć†ć™ć‚‹ć®ć‹ć€ćŒč…‘ć«č½ć”ć€ä»Šę›øć„ć¦ć„ć‚‹ć‚³ćƒ¼ćƒ‰ć®čØ­čØˆć‚’č¦‹ē›“ć™ćć£ć‹ć‘ć«ćŖć‚Šć¾ć™ć€‚

šŸ“˜ čØ­čØˆć®åŽŸå‰‡ć‚’å­¦ć¶ć€ŒClean Architecture怍

DIćÆå˜ē‹¬ć®ćƒ†ć‚Æćƒ‹ćƒƒć‚Æć§ćÆćŖćć€ä¾å­˜é–¢äæ‚é€†č»¢ć®åŽŸå‰‡(DIP)ćØć„ć†ć‚ˆć‚Šå¤§ććŖę€ęƒ³ć®äø€éƒØć§ć™ć€‚Clean Architectureć‚’čŖ­ć‚€ćØć€ć€ŒćŖćœęŠ½č±”ć«ä¾å­˜ć•ć›ć‚‹ć®ć‹ć€ć€ŒćŖćœćƒ“ć‚øćƒć‚¹ćƒ­ć‚øćƒƒć‚ÆćÆå¤–éƒØć®éƒ½åˆć«ęŒÆć‚Šå›žć•ć‚Œć‚‹ć¹ćć§ćŖć„ć®ć‹ć€ćØć„ć†čØ­čØˆć®ę øåæƒćŒč…¹č½ć”ć—ć¾ć™ć€‚äø­ē“šä»„äøŠć‚’ē›®ęŒ‡ć™ćŖć‚‰åæ…čŖ­ć®äø€å†Šć€‚

šŸ“• ćƒ‡ć‚¶ć‚¤ćƒ³ćƒ‘ć‚æćƒ¼ćƒ³ć‚’å­¦ć¹ć‚‹å®šē•Ŗćƒ†ć‚­ć‚¹ćƒˆ

DIć®čƒŒå¾Œć«ćÆć€Strategy惻Factory惻AdapterćŖć©å¤šćć®ćƒ‡ć‚¶ć‚¤ćƒ³ćƒ‘ć‚æćƒ¼ćƒ³ćØć®é–¢é€£ćŒć‚ć‚Šć¾ć™ć€‚GoFęœ¬ćÆå°‘ć—é›£č§£ć§ć™ćŒć€Pythonå‘ć‘ć«ć‹ćæē •ć„ć¦č§£čŖ¬ć•ć‚ŒćŸå…„é–€ę›øć‚’äø€å†Šć‚„ć‚Šč¾¼ć‚ć°ć€ć‚³ćƒ¼ćƒ‰ć®å¼•ćå‡ŗć—ćŒäø€ę°—ć«å¢—ćˆć¾ć™ć€‚ć€Œć‚ć€ć“ć‚Œå‰ć«č¦‹ćŸćƒ‘ć‚æćƒ¼ćƒ³ć ć€ćØę°—ä»˜ć‘ć‚‹ę„Ÿč¦šćŒć€čØ­čØˆć®č³Ŗć‚’åŗ•äøŠć’ć—ć¦ćć‚Œć¾ć™ć€‚

šŸ“— ćƒ†ć‚¹ćƒˆćØćƒŖćƒ•ć‚”ć‚Æć‚æćƒŖćƒ³ć‚°ć‚’å®Ÿč£…č¾¼ćæć§å­¦ć¶

DIć®ēœŸä¾”ćÆć€ćƒ†ć‚¹ćƒˆć‚³ćƒ¼ćƒ‰ć‚’ę›øćå§‹ć‚ć‚‹ćØäø€ę°—ć«å®Ÿę„Ÿć§ćć¾ć™ć€‚pytestć‚’ä½æć£ćŸćƒ†ć‚¹ćƒˆć®ę›øćę–¹ć€ćƒ¢ćƒƒć‚Æć®å·®ć—ę›æćˆę–¹ć€ćƒŖćƒ•ć‚”ć‚Æć‚æćƒŖćƒ³ć‚°ć®é€²ć‚ę–¹ć‚’å®Ÿč·µēš„ć«å­¦ć¹ć‚‹ęœ¬ć‚’äø€å†ŠęŒć£ć¦ćŠććØć€ć€ŒDIć‚’å…„ć‚Œć¦ćŠć„ć¦ć‚ˆć‹ć£ćŸć€ćØę€ćˆć‚‹ēž¬é–“ćŒä½•åŗ¦ć‚‚čØŖć‚Œć¾ć™ć€‚

šŸ–„ é•·ę™‚é–“ć®ć‚³ćƒ¼ćƒ‡ć‚£ćƒ³ć‚°ć‚’åæ«é©ć«ć™ć‚‹ćƒ‡ćƒ„ć‚¢ćƒ«ćƒ¢ćƒ‹ć‚æćƒ¼ē’°å¢ƒ

ć‚Æćƒ©ć‚¹å›³ć‚’č¦‹ćŖćŒć‚‰ć‚³ćƒ¼ćƒ‰ć‚’ę›øćć€č¤‡ę•°ć®ćƒ•ć‚”ć‚¤ćƒ«ć‚’åŒę™‚ć«é–‹ć„ć¦å‚ē…§ć™ć‚‹ć€ćƒ‰ć‚­ćƒ„ćƒ”ćƒ³ćƒˆć‚’čŖ­ćæćŖćŒć‚‰å®Ÿč£…ć™ć‚‹ć€‚DIć®ć‚ˆć†ćŖęŠ½č±”ēš„ćŖčØ­čØˆć‚’ę‰±ć†ćØćć»ć©ć€ē”»é¢ć®åŗƒć•ćŒę€č€ƒć®åŗƒć•ć«ē›“ēµć—ć¾ć™ć€‚ć‚µćƒ–ćƒ¢ćƒ‹ć‚æćƒ¼ć‚’äø€ęžščæ½åŠ ć™ć‚‹ć ć‘ć§ć€é ­ć®ę•“ē†ć‚¹ćƒ”ćƒ¼ćƒ‰ćØå®Ÿč£…é€Ÿåŗ¦ćŒä½“ę„Ÿć§å¤‰ć‚ć‚Šć¾ć™ć€‚

ā“ FAQ|DIć«ć¾ć¤ć‚ć‚‹ć‚ˆćć‚ć‚‹ē–‘å•

šŸ¤” Q1. å°ć•ćŖć‚¹ć‚ÆćƒŖćƒ—ćƒˆć§ć‚‚DIć‚’ä½æć†ć¹ćć§ć™ć‹ļ¼Ÿ

ä½æć„ęØć¦ć®ć‚¹ć‚ÆćƒŖćƒ—ćƒˆć§ć‚ć‚Œć°ć€ē„”ē†ć«DIć‚’å°Žå…„ć™ć‚‹åæ…č¦ćÆć‚ć‚Šć¾ć›ć‚“ć€‚ćŸć ć—ć€Œć“ć‚ŒćÆå°†ę„ć€ćƒ‡ćƒ¼ć‚æć®å–å¾—å…ˆćŒå¤‰ć‚ć‚‹ć‹ć‚‚ć€ć€Œćƒ†ć‚¹ćƒˆć‚’ę›øććŸć„ć€ćØå°‘ć—ć§ć‚‚ę€ć£ćŸć‚‰ć€ęœ€åˆć‹ć‚‰DIå‰ęć§ę›øć„ć¦ćŠćć»ć†ćŒēµęžœēš„ć«ę„½ć§ć™ć€‚ę…£ć‚Œć¦ćć‚Œć°ć€DIć‚’å…„ć‚Œć‚‹ć“ćØć®ć‚³ć‚¹ćƒˆćÆć»ć¼ć‚¼ćƒ­ć«ćŖć‚Šć¾ć™ć€‚

šŸ¤” Q2. Python恮DIćÆęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹ć‚’ä½æć‚ćŖć„ćØćƒ€ćƒ”ć§ć™ć‹ļ¼Ÿ

å‹•ēš„åž‹ä»˜ć‘ć®Pythonć§ćÆć€ćƒ€ćƒƒć‚Æć‚æć‚¤ćƒ”ćƒ³ć‚°ć ć‘ć§ć‚‚DIćÆęˆē«‹ć—ć¾ć™ć€‚ćŸć ć—å¤§č¦ęØ”åŒ–ć™ć‚‹å “åˆć‚„ć€č¤‡ę•°äŗŗć§é–‹ē™ŗć™ć‚‹å “åˆćÆć€ęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹+åž‹ćƒ’ćƒ³ćƒˆ+mypyć®ēµ„ćæåˆć‚ć›ć‚’ä½æć†ć»ć†ćŒę„å›³ćŒę˜Žē¢ŗć«ćŖć‚Šć€ćƒŸć‚¹ć‚‚é˜²ć’ć¾ć™ć€‚ć€Œå‹•ć‘ć°ć„ć„ć€ć‹ć‚‰äø€ę­©é€²ć‚“ć å“č³Ŗć‚’ę±‚ć‚ć‚‹ćŖć‚‰ć€ęŠ½č±”ć‚’ę“»ē”Øć™ć‚‹ć®ćŒåœ§å€’ēš„ć«ćŠć™ć™ć‚ć§ć™ć€‚

šŸ¤” Q3. DIć‚³ćƒ³ćƒ†ćƒŠ(injectorなど)ćÆć„ć¤ä½æćˆć°ć„ć„ļ¼Ÿ

ć‚Æćƒ©ć‚¹ę•°ćŒå¢—ćˆć¦ćć¦ć€mainé–¢ę•°ć§ēµ„ćæē«‹ć¦ć‚‹ć‚Ŗćƒ–ć‚øć‚§ć‚Æćƒˆć®ę•°ćŒč†Øå¤§ć«ćŖć£ć¦ććŸć‚‰ę¤œčØŽć™ć‚‹ä¾”å€¤ćŒć‚ć‚Šć¾ć™ć€‚é€†ć«ć‚Æćƒ©ć‚¹ćŒę•°å€‹ēØ‹åŗ¦ć®ć†ć”ćÆć€ę‰‹ę›øćć®ēµ„ćæē«‹ć¦ć§ååˆ†ć€‚ęœ€åˆć‹ć‚‰ć‚³ćƒ³ćƒ†ćƒŠć‚’ä½æć†ćØć€Œé­”ę³•ć®ć‚ˆć†ć«å‹•ćć‘ć©äø­čŗ«ćŒåˆ†ć‹ć‚‰ćŖć„ć€ēŠ¶ę…‹ć«ćŖć‚ŠćŒć”ćŖć®ć§ć€ć¾ćšćÆę‰‹å‹•DIć«ę…£ć‚Œć¦ć‹ć‚‰å°Žå…„ć™ć‚‹ć®ćŒēŽ‹é“ć§ć™ć€‚

šŸ¤” Q4. mypyć®å°Žå…„ćÆę‰‹é–“ć§ćÆćŖć„ć§ć™ć‹ļ¼Ÿ

VS CodećŖć‚‰ę‹”å¼µę©Ÿčƒ½ć‚’1ć¤å…„ć‚Œć‚‹ć ć‘ć§ä½æćˆć¾ć™ć€‚ęœ€åˆćÆč­¦å‘Šć®é‡ć«åœ§å€’ć•ć‚Œć‚‹ć‹ć‚‚ć—ć‚Œć¾ć›ć‚“ćŒć€čØ­å®šćƒ•ć‚”ć‚¤ćƒ«mypy.inić§ę®µéšŽēš„ć«åŽ³ć—ć•ć‚’čŖæę•“ć§ćć‚‹ć®ć§ć€å¾ć€…ć«å°Žå…„ć—ć¦ć„ć‘ć°å•é”Œć‚ć‚Šć¾ć›ć‚“ć€‚äø€åŗ¦åž‹ć®ę©ęµć‚’ä½“ę„Ÿć™ć‚‹ćØć€ęˆ»ć‚ŒćŖććŖć‚‹ćć‚‰ć„ä¾æåˆ©ć§ć™ć€‚

šŸ¤” Q5. ć‚Ŗćƒ–ć‚øć‚§ć‚ÆćƒˆęŒ‡å‘ć®åŸŗē¤ŽćŒäøå®‰ć§ć™ć€‚ä½•ć‹ć‚‰ę‰‹ć‚’ć¤ć‘ć‚Œć°ļ¼Ÿ

ć¾ćšćÆć€Œć‚Æćƒ©ć‚¹ćØć‚¤ćƒ³ć‚¹ć‚æćƒ³ć‚¹ć€ć€Œē¶™ę‰æć€ć€ŒęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹ć€ć®3ē‚¹ć‚’ć€ę‰‹ć‚’å‹•ć‹ć—ć¦ę›øććŖćŒć‚‰ē†č§£ć™ć‚‹ć®ćŒćŠć™ć™ć‚ć§ć™ć€‚Pythonć®å…¬å¼ćƒćƒ„ćƒ¼ćƒˆćƒŖć‚¢ćƒ«+å…„é–€ę›øć‚’äø€å†Šć‚„ć‚Šåˆ‡ć‚‹ćØć€DIć®č§£čŖ¬ć‚‚ć‚¹ćƒƒćØé ­ć«å…„ć£ć¦ćć‚‹ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

šŸŽÆ ć¾ćØć‚ļ½œć€Œå¤–ć‹ć‚‰å·®ć—ę›æćˆć‚‰ć‚Œć‚‹čØ­čØˆć€ćŒć€ć‚Øćƒ³ć‚øćƒ‹ć‚¢ćØć—ć¦ć®ę­¦å™Øć«ćŖć‚‹

ä¾å­˜ę€§ć®ę³Øå…„ćÆć€č¦šćˆć¦ć—ć¾ćˆć°ć€ŒćŖć‚“ć§ć“ć‚“ćŖć«å½“ćŸć‚Šå‰ć®ć“ćØć«åå‰ćŒä»˜ć„ć¦ć„ć‚‹ć®ļ¼Ÿć€ćØę„Ÿć˜ć‚‹ćć‚‰ć„ć‚·ćƒ³ćƒ—ćƒ«ćŖč€ƒćˆę–¹ć§ć™ć€‚ć‘ć‚Œć©ć‚‚ć€ć“ć®č€ƒćˆę–¹ć‚’ę„č­˜ēš„ć«ć‚³ćƒ¼ćƒ‰ćøč½ćØć—č¾¼ć‚ć‚‹ć‹ć©ć†ć‹ć§ć€åŠå¹“å¾Œćƒ»äø€å¹“å¾Œć®ć‚³ćƒ¼ćƒ‰ć®äæå®ˆę€§ćÆåŠ‡ēš„ć«å¤‰ć‚ć‚Šć¾ć™ć€‚

å…·ä½“ć‚Æćƒ©ć‚¹ć‚’ē›“ęŽ„__init__ć§ē”Ÿęˆć™ć‚‹ć®ć§ćÆćŖćć€ęŠ½č±”ć«ä¾å­˜ć•ć›ć¦å¤–ć‹ć‚‰ęø”ć™ć€‚ćŸć£ćŸć“ć‚Œć ć‘ć®ćƒ«ćƒ¼ćƒ«ć§ć€ćƒ†ć‚¹ćƒˆćŒę›øćć‚„ć™ććŖć‚Šć€ę©Ÿčƒ½ć®å·®ć—ę›æćˆćŒē°”å˜ć«ćŖć‚Šć€å¤‰ę›“ć«å¼·ć„ć‚³ćƒ¼ćƒ‰ćƒ™ćƒ¼ć‚¹ćŒę‰‹ć«å…„ć‚Šć¾ć™ć€‚ä»Šę—„ć®ćƒŖćƒ•ć‚”ć‚Æć‚æćƒŖćƒ³ć‚°ć§ć€ćŠę°—ć«å…„ć‚Šć®ćƒ—ćƒ­ć‚øć‚§ć‚Æćƒˆć‚’1恤恠恑DIåŒ–ć—ć¦ćæć¦ćć ć•ć„ć€‚ć€ŒčØ­čØˆć®äø–ē•ŒćŒåŗƒćŒć‚‹ę„Ÿč¦šć€ć‚’ć€ćœć²č‡Ŗåˆ†ć®ę‰‹ć§å‘³ć‚ć£ć¦ćæć¾ć—ć‚‡ć†šŸš€

ęŠ½č±”åŸŗåŗ•ć‚Æćƒ©ć‚¹ć‚’ę›øć„ć¦ć€åž‹ćƒ’ćƒ³ćƒˆć‚’ę·»ćˆć¦ć€mypyć«č¦‹å®ˆć£ć¦ć‚‚ć‚‰ć†ć€‚ćć®å°ć•ćŖē©ćæé‡ć­ćŒć€äø€å¹“å¾Œć«ćÆć€ŒčØ­čØˆć®ć‚»ćƒ³ć‚¹ćŒć‚ć‚‹äŗŗć€ćØć„ć†ć‚ćŖćŸć®ę–°ć—ć„č‚©ę›øćć‚’ä½œć£ć¦ćć‚Œć¾ć™šŸŒŸ

恂恖悉恗

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

Recent Posts