Pythonã®åå空éããã±ãŒãžãæ¢ããããã±ãŒãžç·šæã®æè»ãªã¢ãããŒããçè§£ããŸããããæé»çãªåå空éããã±ãŒãžããã®å©ç¹ãã¹ã±ãŒã©ãã«ãªPythonãããžã§ã¯ãã§ã®å®è£ æ¹æ³ã«ã€ããŠåŠã³ãŸãã
Pythonã®åå空éããã±ãŒãž: æé»çãªããã±ãŒãžæ§é ã®èšèš
Pythonã®ããã±ãŒãžã·ã¹ãã ã¯ããã®ã¢ãžã¥ãŒã«æ§ãšã³ãŒãã®åå©çšæ§ã®èŠã§ããç¹ã«æé»çã«äœæãããåå空éããã±ãŒãžã¯ãå€§èŠæš¡ã§è€éãªãããžã§ã¯ããæŽçããããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸãããã®èšäºã§ã¯ãåå空éããã±ãŒãžã®æŠå¿µã«æ·±ãå ¥ã蟌ã¿ãæé»çãªæ§é èšèšã«çŠç¹ãåœãŠããã®å©ç¹ãšå®è£ æŠç¥ãæ¢ããŸããã°ããŒãã«ãªãœãããŠã§ã¢éçºã®ç¶æ³ã«ãããŠããããããããžã§ã¯ãã®ã¹ã±ãŒã©ããªãã£ãã³ã©ãã¬ãŒã·ã§ã³ãå¹ççãªé åžãã©ã®ããã«ä¿é²ããããèå¯ããŸãã
Pythonããã±ãŒãžãšã¢ãžã¥ãŒã«ã®çè§£
åå空éããã±ãŒãžã«æ·±ãå
¥ã蟌ãåã«ãåºæ¬ãå確èªããŸããããPythonã§ã¯ãã¢ãžã¥ãŒã«ã¯Pythonã³ãŒããå«ãåäžã®ãã¡ã€ã«ã§ããäžæ¹ãããã±ãŒãžã¯ã¢ãžã¥ãŒã«ãš__init__.py
ãšããç¹æ®ãªãã¡ã€ã«ãå«ããã£ã¬ã¯ããªã§ãã__init__.py
ãã¡ã€ã«ïŒç©ºã§ãã£ãŠãããïŒã¯ãPythonã«ãã£ã¬ã¯ããªãããã±ãŒãžãšããŠæ±ãã¹ãã§ããããšãäŒããŸãããã®æ§é ã«ãããé¢é£ããã¢ãžã¥ãŒã«ãè«ççãªåäœã«æŽçããããšãã§ããŸãã
ã·ã³ãã«ãªããã±ãŒãžæ§é ãèããŠã¿ãŸããã:
my_package/
__init__.py
module1.py
module2.py
ãã®äŸã§ã¯ãmy_package
ã¯ããã±ãŒãžã§ãããmodule1.py
ãšmodule2.py
ã¯ãã®äžã®ã¢ãžã¥ãŒã«ã§ããã¢ãžã¥ãŒã«ã¯import my_package.module1
ãŸãã¯from my_package import module2
ã®ããã«ã€ã³ããŒãã§ããŸãã
åå空éããã±ãŒãžã®å¿ èŠæ§
åŸæ¥ã®ããã±ãŒãžã¯ã__init__.py
ãã¡ã€ã«ã䌎ããŸãããå€ãã®ãããžã§ã¯ãã§ååã§ããããããç¹ã«è€æ°ã®è²¢ç®è
ãé¢ããããŸãã¯åºç¯å²ãªé
åžãç®æããããžã§ã¯ããæé·ããã«ã€ããŠãåŸæ¥ã®ããã±ãŒãžã®éçãæããã«ãªããŸãããããã®éçã«ã¯ä»¥äžãå«ãŸããŸã:
- è¡çª: åãååã®2ã€ã®ããã±ãŒãžãç°ãªãå Žæã«ååšããå Žåãã€ã³ããŒãã¡ã«ããºã ãäºæããªãåäœãç«¶åãåŒãèµ·ããå¯èœæ§ããããŸãã
- é åžã®èª²é¡: ç°ãªããœãŒã¹ããã®è€æ°ã®ããã±ãŒãžãåäžã®ã€ã³ã¹ããŒã«ã«çµ±åããããšã¯è€éã«ãªãå¯èœæ§ããããŸãã
- æè»æ§ã®å¶é: åŸæ¥ã®ããã±ãŒãžã¯ãã£ã¬ã¯ããªæ§é ã«å¯æ¥ã«çµåããŠãããã¢ãžã¥ãŒã«ãè€æ°ã®å Žæã«é åžããããšãå°é£ã§ãã
åå空éããã±ãŒãžã¯ãåãååã®è€æ°ã®ããã±ãŒãžãã£ã¬ã¯ããªãåäžã®è«çããã±ãŒãžã«çµåããããšãå¯èœã«ããããšã§ããããã®å¶éã«å¯ŸåŠããŸããããã¯ãããã±ãŒãžã®ç°ãªãéšåãç°ãªãããŒã ãçµç¹ã«ãã£ãŠéçºããã³ä¿å®ãããŠãããããžã§ã¯ãã«ç¹ã«åœ¹ç«ã¡ãŸãã
åå空éããã±ãŒãžãšã¯ïŒ
åå空éããã±ãŒãžã¯ãåãããã±ãŒãžåãæã€è€æ°ã®ãã£ã¬ã¯ããªãåäžã®è«çããã±ãŒãžã«çµ±åããæ¹æ³ãæäŸããŸããããã¯ã__init__.py
ãã¡ã€ã«ãçç¥ãããïŒãŸãã¯Python 3.3以éã§ã¯ãæå°éãŸãã¯ç©ºã®__init__.py
ãã¡ã€ã«ãæã€ããšã«ãã£ãŠïŒå®çŸãããŸãããã®ãã¡ã€ã«ã®äžåšã¯ãPythonã«ãã®ããã±ãŒãžãåå空éããã±ãŒãžã§ããããšã瀺ããŸãããã®åŸãã€ã³ããŒãã·ã¹ãã ã¯è€æ°ã®å Žæã§ããã±ãŒãžãæ€çŽ¢ããèŠã€ãã£ãã³ã³ãã³ããåäžã®åå空éã«çµåããŸãã
åå空éããã±ãŒãžã«ã¯äž»ã«2ã€ã®ã¿ã€ãããããŸã:
- æé»çãªåå空éããã±ãŒãž: ãããã¯ãã®èšäºã®çŠç¹ã§ããããã±ãŒãžãã£ã¬ã¯ããªã«
__init__.py
ãã¡ã€ã«ãå«ãŸããŠããªãå Žåã«èªåçã«äœæãããŸããããã¯æãã·ã³ãã«ã§äžè¬çãªåœ¢åŒã§ãã - æç€ºçãªåå空éããã±ãŒãž: ãããã¯ã
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
ãšããè¡ãå«ã__init__.py
ãã¡ã€ã«ãå®çŸ©ããããšã«ãã£ãŠäœæãããŸããããã¯ããæç€ºçãªã¢ãããŒãã§ãã
æé»çãªåå空éããã±ãŒãž: ãã®æ žãšãªãæŠå¿µ
æé»çãªåå空éããã±ãŒãžã¯ãããã±ãŒãžãã£ã¬ã¯ããªã«__init__.py
ãã¡ã€ã«ãå«ãŸããŠããªãããšã確èªããã ãã§äœæãããŸããPythonãããã±ãŒãžã®ã€ã³ããŒãã¹ããŒãã¡ã³ãã«ééãããšãPythonãã¹(sys.path
)ãæ€çŽ¢ããŸããåãããã±ãŒãžåãæã€è€æ°ã®ãã£ã¬ã¯ããªãèŠã€ãã£ãå Žåãããããåäžã®åå空éã«çµåããŸããããã¯ããããã®ãã£ã¬ã¯ããªå
ã®ã¢ãžã¥ãŒã«ãšãµãããã±ãŒãžãããããããã¹ãŠãåäžã®ããã±ãŒãžå
ã«ååšãããã®ããã«ã¢ã¯ã»ã¹ã§ããããšãæå³ããŸãã
äŸ:
my_project
ãšããååã®ããã±ãŒãžãå®çŸ©ãã2ã€ã®å¥ã
ã®ãããžã§ã¯ãããããšæ³åããŠãã ãããäŸãã°:
Project 1:
/path/to/project1/my_project/
module1.py
module2.py
Project 2:
/path/to/project2/my_project/
module3.py
module4.py
my_project
ãã£ã¬ã¯ããªã®ã©ã¡ãã«ã__init__.py
ãã¡ã€ã«ãå«ãŸããŠããªãå ŽåïŒãŸãã¯__init__.py
ã空ã®å ŽåïŒããããã®ããã±ãŒãžãPythonç°å¢ã§ã€ã³ã¹ããŒã«ãŸãã¯ã¢ã¯ã»ã¹å¯èœã«ãããšã次ã®ããã«ã¢ãžã¥ãŒã«ãã€ã³ããŒãã§ããŸã:
import my_project.module1
import my_project.module3
Pythonã®ã€ã³ããŒãã¡ã«ããºã ã¯ãäž¡æ¹ã®my_project
ãã£ã¬ã¯ããªã®å
容ãåäžã®my_project
ããã±ãŒãžã«å¹æçã«çµåããŸãã
æé»çãªåå空éããã±ãŒãžã®å©ç¹
æé»çãªåå空éããã±ãŒãžã¯ãããã€ãã®é åçãªå©ç¹ãæäŸããŸã:
- 忣éçº: ããã«ãããç°ãªãããŒã ãçµç¹ãåãããã±ãŒãžåå空éå ã§ã¢ãžã¥ãŒã«ãç¬ç«ããŠéçºããã³ä¿å®ã§ããããã±ãŒãžåã«é¢ãã調æŽã¯äžèŠã§ããããã¯ãè²¢ç®ã倿§ãªãœãŒã¹ããã°ããŒãã«ã«å¯ããããå€§èŠæš¡ãªåæ£ãããžã§ã¯ãããªãŒãã³ãœãŒã¹ã€ãã·ã¢ããã«ãšã£ãŠç¹ã«é¢é£æ§ãé«ãã§ãã
- é åžã®ç°¡çŽ å: ã¢ãžã¥ãŒã«ã¯ç°ãªããœãŒã¹ããã€ã³ã¹ããŒã«ãããåäžã®ããã±ãŒãžã«ã·ãŒã ã¬ã¹ã«çµ±åã§ããŸããããã«ãããé åžããã»ã¹ãç°¡çŽ åãããç«¶åã®ãªã¹ã¯ãäœæžãããŸããäžçäžã®ããã±ãŒãžã¡ã³ãããŒã¯ãããã±ãŒãžåœåã®åé¡ã解決ããããã®äžå€®æ©é¢ãå¿ èŠãšããã«è²¢ç®ã§ããŸãã
- ã¹ã±ãŒã©ããªãã£ã®åäž: ãããã¯ãå€§èŠæš¡ãªãããžã§ã¯ããããå°ããã管çããããåäœã«åå²ããããšãå¯èœã«ããããšã§ããããžã§ã¯ãã®æé·ãä¿é²ããŸããã¢ãžã¥ãŒã«èšèšã¯ãããè¯ãçµç¹åãšå®¹æãªã¡ã³ããã³ã¹ãä¿é²ããŸãã
- æè»æ§: ãã£ã¬ã¯ããªæ§é ãã¢ãžã¥ãŒã«ã®ã€ã³ããŒãæ§é ãçŽæ¥åæ ããå¿ èŠã¯ãããŸãããããã«ããããã£ã¹ã¯äžã§ã®ã³ãŒãã®æŽçæ¹æ³ã«ãããªãæè»æ§ãããããããŸãã
- `__init__.py`ã®è¡çªåé¿: `__init__.py`ãã¡ã€ã«ãçç¥ããããšã§ãè€æ°ã®ããã±ãŒãžãåãåæåããžãã¯ãå®çŸ©ããããšããå Žåã«çºçããå¯èœæ§ã®ããè¡çªãæé€ããŸããããã¯ã忣ãããäŸåé¢ä¿ãæã€ãããžã§ã¯ãã«ãšã£ãŠç¹ã«æçã§ãã
æé»çãªåå空éããã±ãŒãžã®å®è£
æé»çãªåå空éããã±ãŒãžã®å®è£ ã¯ç°¡åã§ããäž»ãªæé ã¯æ¬¡ã®ãšããã§ã:
- ããã±ãŒãžãã£ã¬ã¯ããªã®äœæ: ããã±ãŒãžã®ãã£ã¬ã¯ããªãäœæããåãã£ã¬ã¯ããªãåãååïŒäŸ:
my_project
ïŒã§ããããšã確èªããŸãã __init__.py
ãçç¥ããïŒãŸãã¯ç©º/æå°éã®ãã®ãæã€ïŒ: åããã±ãŒãžãã£ã¬ã¯ããªã«__init__.py
ãã¡ã€ã«ãå«ãŸããŠããªãããšã確èªããŸããããã¯ãæé»çãªåå空éã®åäœãå¯èœã«ããããã®éèŠãªã¹ãããã§ããPython 3.3以éã§ã¯ã空ãŸãã¯æå°éã®__init__.py
ãèš±å¯ãããŸããããã®äž»ãªç®çã¯å€æŽãããŸããåå空éã¬ãã«ã®åæåã³ãŒãã®å ŽæãšããŠæ©èœããããšã¯ã§ããŸããããã®ãã£ã¬ã¯ããªãããã±ãŒãžã§ããããšã瀺ããã®ã§ã¯ãããŸããã- ã¢ãžã¥ãŒã«ã®é
眮: Pythonã¢ãžã¥ãŒã«ïŒ
.py
ãã¡ã€ã«ïŒãããã±ãŒãžãã£ã¬ã¯ããªå ã«é 眮ããŸãã - ããã±ãŒãžã®ã€ã³ã¹ããŒã«ãŸãã¯ã¢ã¯ã»ã¹å¯èœå: ããã±ãŒãžãã£ã¬ã¯ããªãPythonãã¹äžã«ããããšã確èªããŸããããã¯ã
pip
ã®ãããªããŒã«ã䜿çšããŠããã±ãŒãžãã€ã³ã¹ããŒã«ããããPYTHONPATH
ç°å¢å€æ°ã«ãã¹ãæåã§è¿œå ããããPythonã¹ã¯ãªããå ã§sys.path
ã倿Žããããšã«ãã£ãŠè¡ããŸãã - ã¢ãžã¥ãŒã«ã®ã€ã³ããŒã: ä»ã®ããã±ãŒãžãšåæ§ã«ã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸã:
import my_project.module1
ã
å®è£ äŸ:
ããŒã¿åŠçããã±ãŒãžãå¿ èŠãšããã°ããŒãã«ãããžã§ã¯ããæ³å®ããŠã¿ãŸããããã€ã³ãã®çµç¹ïŒãããžã§ã¯ãAïŒãšç±³åœã®çµç¹ïŒãããžã§ã¯ãBïŒã®2ã€ããããšããŸãããããããç°ãªãçš®é¡ã®ããŒã¿ã»ãããæ±ãç°ãªãã¢ãžã¥ãŒã«ãæã£ãŠããŸããäž¡çµç¹ã¯ãã¢ãžã¥ãŒã«ãçµ±åãã䜿çšã®ããã«ããã±ãŒãžãé åžããããã«åå空éããã±ãŒãžã䜿çšããããšã決å®ããŸãã
Project A (India):
/path/to/project_a/my_data_processing/
__init__.py # (May exist, or be empty)
india_data.py
preprocessing.py
Project B (USA):
/path/to/project_b/my_data_processing/
__init__.py # (May exist, or be empty)
usa_data.py
analysis.py
india_data.py
ã®å
容:
def load_indian_data():
"""Loads data relevant to India."""
print("Loading Indian data...")
usa_data.py
ã®å
容:
def load_usa_data():
"""Loads data relevant to USA."""
print("Loading USA data...")
ãããžã§ã¯ãAãšãããžã§ã¯ãBã®äž¡æ¹ãã³ãŒããããã±ãŒãžåãããŠãŒã¶ãŒã«é åžããŸããäžçäžã®ã©ãã«ãããŠãŒã¶ãŒã§ããã¢ãžã¥ãŒã«ãã€ã³ããŒãããŠäœ¿çšã§ããŸãã
from my_data_processing import india_data, usa_data
india_data.load_indian_data()
usa_data.load_usa_data()
ããã¯ãããã±ãŒãžåå空éã«ãããåœåè¡çªãå¿é ããããšãªããã¢ãžã¥ãŒã«ãä»è ã«ãã£ãŠç¬ç«ããŠéçºããã³ããã±ãŒãžåãããŠäœ¿çšãããæ¹æ³ã®äŸã§ãã
åå空éããã±ãŒãžã®ãã¹ããã©ã¯ãã£ã¹
æé»çãªåå空éããã±ãŒãžã广çã«æŽ»çšããã«ã¯ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ãã:
- æç¢ºãªããã±ãŒãžåœå: ä»ã®ãããžã§ã¯ããšã®è¡çªã®ãªã¹ã¯ãæå°éã«æããããã«ãã°ããŒãã«ã«äžæã§ããããéåžžã«èšè¿°çãªããã±ãŒãžåãéžæããŠãã ãããçµç¹ãŸãã¯ãããžã§ã¯ãã®ã°ããŒãã«ãªåœ±é¿ãèæ ®ããŠãã ããã
- ããã¥ã¡ã³ã: ããã±ãŒãžã®çµ±åæ¹æ³ããŠãŒã¶ãŒããã®ã¢ãžã¥ãŒã«ãã©ã®ããã«ã€ã³ããŒãããŠäœ¿çšãã¹ãããå«ããããã±ãŒãžã®åŸ¹åºããããã¥ã¡ã³ããæäŸããŸããããã¥ã¡ã³ãã¯ã°ããŒãã«ãªèŽè¡ã«å®¹æã«ã¢ã¯ã»ã¹ã§ãããã®ã§ããã¹ãã§ãïŒäŸ: Sphinxã®ãããªããŒã«ã䜿çšããããã¥ã¡ã³ãããªã³ã©ã€ã³ã§ãã¹ãããïŒã
- ãã¹ã: ã¢ãžã¥ãŒã«ã®æ£ããåäœãä¿èšŒããä»ã®ãœãŒã¹ããã®ã¢ãžã¥ãŒã«ãšçµã¿åããããšãã«äºæããªãåé¡ã鲿¢ããããã«ãå æ¬çãªåäœãã¹ããäœæããŸãã倿§ãªäœ¿çšãã¿ãŒã³ããã¹ãã«ã©ã®ããã«åœ±é¿ããããèæ ®ããããã«å¿ããŠãã¹ããèšèšããŠãã ããã
- ããŒãžã§ã³ç®¡ç: ã³ãŒãã管çãã倿Žã远跡ããããã«ããŒãžã§ã³ç®¡çã·ã¹ãã ïŒäŸ: GitïŒã䜿çšããŸããããã«ãããã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ãããå¿ èŠã«å¿ããŠä»¥åã®ããŒãžã§ã³ã«æ»ããããã«ãªããŸããããã¯ã°ããŒãã«ããŒã ã广çã«ååããããã«äœ¿çšãããã¹ãã§ãã
- PEP 8ã®éµå®: PEP 8ïŒã¹ã¿ã€ã«ã¬ã€ãã©ã€ã³ã«é¢ããPythonæ¡åŒµææ¡ïŒã«åŸããã³ãŒãã®å¯èªæ§ãšäžè²«æ§ã確ä¿ããŸããããã«ãããäžçäžã®è²¢ç®è ãã³ãŒãããŒã¹ãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
__init__.py
ã®èæ ®: æé»çãªåå空éã®å Žåãéåžž__init__.py
ãçç¥ããŸãããçŸä»£ã®Pythonã§ã¯ãåå空éã¬ãã«ã®åæåãªã©ãç¹å®ã®ç®çã®ããã«ç©ºãŸãã¯æå°éã®__init__.py
ãã¡ã€ã«ãå«ããããšãã§ããŸããããã¯ãããã±ãŒãžãå¿ èŠãšãããã®ãã»ããã¢ããããããã«äœ¿çšã§ããŸãã
ä»ã®ããã±ãŒãžæ§é ãšã®æ¯èŒ
æé»çãªåå空éããã±ãŒãžãä»ã®Pythonããã±ãŒãžã³ã°ã¢ãããŒããšæ¯èŒããŠã¿ãŸããã:
- åŸæ¥ã®ããã±ãŒãž: ãããã¯
__init__.py
ãã¡ã€ã«ã§å®çŸ©ãããŸããåºæ¬çãªãããžã§ã¯ãã«ã¯ããã·ã³ãã«ã§ãããåå空éããã±ãŒãžã®æè»æ§ãšã¹ã±ãŒã©ããªãã£ã«ã¯æ¬ ããŸãã忣éçºãè€æ°ã®ãœãŒã¹ããã®ããã±ãŒãžã®çµåã«ã¯ããŸãé©ããŠããŸããã - æç€ºçãªåå空éããã±ãŒãž: ãããã¯ã
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
ãšããè¡ãå«ã__init__.py
ãã¡ã€ã«ã䜿çšããŸããæå³ã¯ããæç¢ºã§ãããæé»çãªåå空éãåé¿ããè€éãã®å±€ã远å ããå¯èœæ§ããããŸããå€ãã®å Žåã远å ãããè€éãã¯äžèŠã§ãã - ãã©ãããªããã±ãŒãžæ§é : ãã©ãããªæ§é ã§ã¯ããã¹ãŠã®ã¢ãžã¥ãŒã«ãåäžã®ãã£ã¬ã¯ããªå ã«çŽæ¥ååšããŸãããã®ã¢ãããŒãã¯å°èŠæš¡ãªãããžã§ã¯ãã«ã¯æãã·ã³ãã«ã§ããããããžã§ã¯ããæé·ããã«ã€ããŠç®¡çãå°é£ã«ãªããŸãã
æé»çãªåå空éããã±ãŒãžã¯ãã·ã³ãã«ããšæè»æ§ã®ãã©ã³ã¹ãæäŸããããå€§èŠæš¡ã§åæ£ããããããžã§ã¯ãã«æé©ã§ããããã¯ãã°ããŒãã«ããŒã ã®ãã¹ããã©ã¯ãã£ã¹ããããžã§ã¯ãæ§é ããæ©æµãåããããç¹ã§ãã
å®è·µçãªå¿çšãšãŠãŒã¹ã±ãŒã¹
æé»çãªåå空éããã±ãŒãžã¯ãããã€ãã®ã·ããªãªã§äŸ¡å€ããããŸã:
- å€§èŠæš¡ãªãŒãã³ãœãŒã¹ãããžã§ã¯ã: 倿§ãªéçºè ããã®è²¢ç®ãããå Žåãåå空éããã±ãŒãžã¯åœåè¡çªãé²ããçµ±åãç°¡çŽ åããŸãã
- ãã©ã°ã€ã³ã¢ãŒããã¯ãã£: åå空éããã±ãŒãžã䜿çšãããšãã³ã¢ã¢ããªã±ãŒã·ã§ã³ã«è¿œå æ©èœãã·ãŒã ã¬ã¹ã«çµã¿èŸŒãããšãã§ãããã©ã°ã€ã³ã·ã¹ãã ãäœæã§ããŸãã
- ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£: ãã€ã¯ããµãŒãã¹ã§ã¯ãåãµãŒãã¹ãåå¥ã«ããã±ãŒãžåããå¿ èŠã«å¿ããŠãã倧ããªã¢ããªã±ãŒã·ã§ã³ã«çµåã§ããŸãã
- SDKãšã©ã€ãã©ãª: ãŠãŒã¶ãŒã«ãã£ãŠæ¡åŒµãããããã«èšèšãããããã±ãŒãžã®å Žåãåå空éããã±ãŒãžã¯ã«ã¹ã¿ã ã¢ãžã¥ãŒã«ãæ©èœã远å ããæç¢ºãªæ¹æ³ãæäŸããŸãã
- ã³ã³ããŒãã³ãããŒã¹ã·ã¹ãã : ã¯ãã¹ãã©ãããã©ãŒã ã·ã¹ãã ã§åå©çšå¯èœãªUIã³ã³ããŒãã³ããæ§ç¯ããã®ããåå空éããã±ãŒãžã圹ç«ã€ããäžã€ã®å Žæã§ãã
äŸ: ã¯ãã¹ãã©ãããã©ãŒã GUIã©ã€ãã©ãª
ã°ããŒãã«äŒæ¥ãã¯ãã¹ãã©ãããã©ãŒã GUIã©ã€ãã©ãªãæ§ç¯ããŠãããšæ³åããŠãã ããã圌ãã¯åå空éããã±ãŒãžã䜿çšããŠUIã³ã³ããŒãã³ããæŽçãããããããŸãã:
gui_library/
platform_agnostic/
__init__.py
button.py
label.py
windows/
button.py
label.py
macos/
button.py
label.py
platform_agnostic
ãã£ã¬ã¯ããªã«ã¯ã³ã¢UIã³ã³ããŒãã³ããšãã®æ©èœãå«ãŸããwindows
ãšmacos
ã«ã¯ãã©ãããã©ãŒã åºæã®å®è£
ãå«ãŸããŸãããŠãŒã¶ãŒã¯æ¬¡ã®ããã«ã³ã³ããŒãã³ããã€ã³ããŒãããŸã:
from gui_library.button import Button
# The Button will use the appropriate platform-specific implementation.
ã¡ã€ã³ããã±ãŒãžã¯ãOSèªèãåŠçããããŒã«ã䜿çšããŠãã°ããŒãã«ãªã¿ãŒã²ãããŠãŒã¶ãŒããŒã¹ã«é©åãªã¢ãžã¥ãŒã«ãããŒãããããã«ãã©ã®å®è£ ãããŒããã¹ãããç¥ã£ãŠããŸãã
æœåšçãªèª²é¡ãšèæ ®äºé
æé»çãªåå空éããã±ãŒãžã¯åŒ·åã§ããã以äžã®æœåšçãªèª²é¡ã«æ³šæããŠãã ãã:
- ã€ã³ããŒãé åº: ããã±ãŒãžãã£ã¬ã¯ããªãPythonãã¹ã«è¿œå ãããé åºã¯ãç°ãªããã£ã¬ã¯ããªã®ã¢ãžã¥ãŒã«ãåãååãå®çŸ©ããŠããå Žåãã€ã³ããŒãã®åäœã«åœ±é¿ãäžããå¯èœæ§ããããŸããPythonãã¹ãæ éã«ç®¡çããé©åãªå Žæã§çžå¯Ÿã€ã³ããŒãã䜿çšããããšãæ€èšããŠãã ããã
- äŸåé¢ä¿ã®ç«¶å: ç°ãªãåå空éããã±ãŒãžã³ã³ããŒãã³ãã®ã¢ãžã¥ãŒã«ã«ç«¶åããäŸåé¢ä¿ãããå Žåãã©ã³ã¿ã€ã ãšã©ãŒã«ã€ãªããå¯èœæ§ããããŸããäŸåé¢ä¿ã®æ éãªèšç»ãéèŠã§ãã
- ãããã°ã®è€éã: ã¢ãžã¥ãŒã«ãè€æ°ã®ãã£ã¬ã¯ããªã«åæ£ãããŠããå Žåããããã°ããããã«è€éã«ãªãå¯èœæ§ããããŸãããããã°ããŒã«ã䜿çšããã€ã³ããŒãã¡ã«ããºã ãã©ã®ããã«æ©èœããããçè§£ããŠãã ããã
- ããŒã«ãšã®äºææ§: äžéšã®å€ãããŒã«ãIDEã¯ãåå空éããã±ãŒãžãå®å šã«ãµããŒãããŠããªãå ŽåããããŸãã䜿çšããŠããããŒã«ãäºææ§ãããããšã確èªããããææ°ããŒãžã§ã³ã«æŽæ°ããŠãã ããã
- ã©ã³ã¿ã€ã ããã©ãŒãã³ã¹: ã»ãšãã©ã®å Žåã倧ããªåé¡ã§ã¯ãããŸããããåå空éããã±ãŒãžã䜿çšãããšãã¹ãã£ã³ãããã£ã¬ã¯ããªãå€ãå Žåãã€ã³ããŒãæéã«ããããªåœ±é¿ãäžããå¯èœæ§ããããŸããæ€çŽ¢ããããã¹ã®æ°ãæå°éã«æããŠãã ããã
çµè«
æé»çãªåå空éããã±ãŒãžã¯ãã¢ãžã¥ãŒã«åãããã¹ã±ãŒã©ãã«ã§ãå ±åäœæ¥ãå¯èœãªPythonãããžã§ã¯ããæ§ç¯ããããã®è²ŽéãªããŒã«ã§ããæ žãšãªãæŠå¿µããã¹ããã©ã¯ãã£ã¹ãããã³æœåšçãªèª²é¡ãçè§£ããããšã§ããã®ã¢ãããŒããæŽ»çšããŠå ç¢ã§ä¿å®å¯èœãªã³ãŒãããŒã¹ãäœæã§ããŸããããã¯ãã°ããŒãã«ããŒã ã§è¡çªãæžããããã®ç¢ºããªããŒã«ã§ããããŸããè€æ°ã®çµç¹ãããŒã ãåããããžã§ã¯ãã«è²¢ç®ããå Žåã«ç¹ã«æçã§ããæé»çãªæ§é èšèšãæ¡çšããããšã§ãéçºè ã¯Pythonã³ãŒãã®çµç¹åãé åžãããã³å šäœçãªå¹çãåäžãããããšãã§ããŸãããããã®æ¹æ³ãçè§£ããããšã§ãäžçäžã®ã©ãã«ããä»ã®éçºè ãšååããŠãããŸããŸãªãããžã§ã¯ãã§Pythonãæåè£ã«äœ¿çšã§ããŸãã
ãœãããŠã§ã¢ãããžã§ã¯ãã®è€éããå¢ãç¶ããã«ã€ããŠãåå空éããã±ãŒãžã¯ã³ãŒããæŽçããã³ç®¡çããããã®ãŸããŸãéèŠãªææ³ãšãªãã§ãããããã®ã¢ãããŒããæ¡çšããŠã仿¥ã®ã°ããŒãã«ãªãœãããŠã§ã¢ç°å¢ã®èŠæ±ã«å¿ãããããå ç¢ã§ã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠãã ããã