ð ã¯ããã«
ããã«ã¡ã¯ãpiyovateã§ãã
ãããŸã§ãã©ãã¯ãŒæ°ã®å¯èŠåãé³ã«ããéç¥ãªã©ãæ§ã
ãªæ©èœã远å ããŠããŸããã
ä»åã¯ã¡ãã£ãšè¶£åãå€ããŠããã³ãŒãã®æŽçãšä¿å®æ§åäžã®ããã®ãªãã¡ã¯ã¿ãªã³ã°ãã«åãçµãã å
容ã玹ä»ããŸãïŒ
ãããžã§ã¯ãã倧ãããªã£ãŠããä»ãããåå°ã®æŽåãéèŠã§ããð¡
ãŸãä»åã¯ãAnthropic瀟ã®AIãClaudeããããã³ãŒãæ¹åã®ã¢ããã€ã¹ãããããªããé²ããŸããã
èªåäžäººã§ã¯èŠèœãšããŠããèŠç¹ã«ãæ°ã¥ããŠãéåžžã«å®ããããªãã¡ã¯ã¿ãªã³ã°ã«ãªããŸããã
ð¯ ä»åã®æŠèŠ
- ãã£ã¬ã¯ããªæ§æã®æŽçãšããã±ãŒãžå
- ãã°æ©èœã®è¿œå ãšå®å šãªãšã©ãŒãã³ããªã³ã°
- èšå®ãã¡ã€ã«ã®åé¢ãšç®¡ç匷å
- importæã®çµ±äžã«ããéçºå¹çåäž
ð GitHubã§ã³ãŒããå ¬éäž
ææ°ã³ãŒããã»ããã¢ããæé ã¯ä»¥äžã®ãªããžããªã«ãŠð
ð GitHub - SystermDevelopment/follower-counter
ð ãããžã§ã¯ãæ§æãåç·šæïŒ
â Before
follower-counter/
âââ main.py
âââ ui.py
âââ config.py
âââ QiitaAPI.py
âââ xAPI.py
âââ ...
ãã¹ãŠãã«ãŒãçŽäžã«äžŠã¶æ§é ã§ãèŠæš¡ã倧ãããªããšèŠéããæªããªã£ãŠããŸããã
â After
follower-counter/
âââ src/
â âââ api/ # åSNS飿ºã¢ãžã¥ãŒã«
â âââ ui/ # UIé¢é£ïŒPyQtïŒ
â âââ utils/ # ãã°ã»èšå®ã»ãµãŠã³ã
âââ settings/ # èšå®ãã¡ã€ã«ïŒJSONïŒ
âââ logs/ # ãã°åºå
âââ data/ # ããŒã¿ä¿åçš
âââ requirements.txt
ã¢ãžã¥ãŒã«ããšã«æŽçããããšã§ãããŒã ã§ã®éçºãé·æéçšã«ã察å¿ãããããªããŸããâš
ð ãã°åºåã§ãããã°ãå¿«é©ã«ïŒ
â logger.pyãæ°èšïŒ
ã¢ãžã¥ãŒã«ããšã«åå¥ã®ãã°ãã¡ã€ã«ãåºåãã€ã€ã
ã³ã³ãœãŒã«åºåãšãã¡ã€ã«åºåã®ã¬ãã«ã settings.json ããå¶åŸ¡ã§ããããã«ããŸããã
logger = setup_logger('QiitaAPI', 'qiita.log')
logger.info("Qiitaåèšãããæ°ååŸéå§")
â ã»ãã¥ãªãã£é æ ®ã远å ïŒ
APIã¬ã¹ãã³ã¹ãªã©ããã°ã«æ©å¯æ å ±ãèŒããªããã以äžã®ããã«å·¥å€«ïŒ
logger.error("ã¬ã¹ãã³ã¹å
容: [詳现ã¯ãããã°ãã°ã確èª]")
logger.debug(f"ã¬ã¹ãã³ã¹è©³çް: {res.text[:200]}...")
Git管çããã logs/ ãé€å€ããéçºç°å¢ã«ããããæ§æã«ð
âïž èšå®ãã¡ã€ã«ã®åé¢ãšåŒ·å
settings/settings.json ã䜿ã£ãŠãã¢ããªã®æåãå€ããã³ã³ãããŒã«å¯èœã«ïŒ
{
"compare_days_ago": 7,
"daily_json": "./data/daily_followers.json",
"sound_volume": 50,
"logging": {
"console_level": "INFO",
"file_level": "DEBUG",
"enabled": true
}
}
.env ãã¡ã€ã«ã«ã¯APIããŒã¯ã³ãªã©ã®æ©å¯æ
å ±ãåé¢ããã»ãã¥ãªãã£ãšç§»æ€æ§ãäž¡ç«ããŸããâš
ðŠ importãæç€ºçã«çµ±äžïŒ
åŸæ¥ã®ãããªãããã¬ãã«ã®ã¢ãžã¥ãŒã«åŒã³åºããããæç€ºçãªãã¹æå®ã«å€æŽïŒ
# Before
import QiitaAPI
# After
import api.qiita as QiitaAPI
IDEè£å®ãéçè§£æã«ã匷ããªããéçºå¹çãäžãããŸããð¡
â ãªãã¡ã¯ã¿ãªã³ã°ã®ææ
- ã¢ãžã¥ãŒã«æ§é ã®æŽçã§ãã³ãŒãã®èŠéããæ¹å
- ãã°æ©èœã®å°å ¥ã§ããããã°ãé害調æ»ã楜ã«
- æ©å¯æ å ±ã®æ±ããæç¢ºåãããå®å šæ§ãåäž
- ç°å¢ã«å¿ããèšå®ã®æè»ãªåãæ¿ããå¯èœã«ïŒ
ð€ Claudeãšã®å ±åãªãã¡ã¯ã¿ãªã³ã°
ä»åã®ãªãã¡ã¯ã¿ãªã³ã°ã§ã¯ãAnthropic瀟ã®AIãClaudeãã«ãååããŠããããŸããã
æ§æã®æŽçããã°èšèšãªã©ãèªåã ãã§ã¯æ°ã¥ããªãã£ã芳ç¹ãå€ãããšãŠãåèã«ãªããŸããã
AIãšäžç·ã«ã³ãŒããæžãã®ã¯ãŸã 詊ããããšããªãæ¹ãå€ããšæããŸããã
èŠç¹ã®è£å®ããªãã¡ã¯ã¿ãªã³ã°ã®çžè«åœ¹ãšããŠãããªãå¿åŒ·ãååšã§ãð¡
ð ãããã«
ä»åã¯å°å³ã ãã©è¶
éèŠãªãè£æ¹äœæ¥ãã§ããïŒ
å°ãã§ããããžã§ã¯ããã¹ãããªããŠå¬ããã§ãð
ããã¡ãæŽçãããâŠïŒããšããæ¹ã®åèã«ãªãã°å¹žãã§ãã
ãããã»ãã©ããŒã¹ããã¯ããåŸ
ã¡ããŠããŸãïŒ
ð ã·ãªãŒãºãªã³ã¯
ð å šèšäºãŸãšãã¯ãã¡ã â ã·ãªãŒãºãŸãšããªã³ã¯