ããã³ãããšã³ãžãã¢ãªã³ã°ã®IDEã»ããã¢ãã
ð In One Sentence
CursorãšVS Code + Continue.devã¯éçºè ã®ããã³ãããšã³ãžãã¢ãªã³ã°ã®ã»ãšãã©ã®ããŒãºãã«ããŒãã2ã€ã®IDEã§ã â Cursorã¯ã¯ã©ãŠãAPIã¯ãŒã¯ãããŒåããContinue.devã¯ãªãŒãã³ãœãŒã¹ããã³ããŒã«ã«ã¢ãã«èŠä»¶åãã
ð¬ In Plain Terms
æãå€ãã®æéãè²»ãããŠããIDEãéžã³ãŸããããTypeScriptãŸãã¯Pythonã䜿çšããŠã¯ã©ãŠãAPIãåŒã³åºãå ŽåãCursorãæãæ©æŠãå°ãªããããŒã«ã«ã§ã¢ãã«ãå®è¡ãããããªãŒãã³ãœãŒã¹èŠä»¶ãããå Žåã¯ãVS Code + Continue.devãæé©ã§ãã
2ã€ã®IDEãéçºè ã®ããã³ãããšã³ãžãã¢ãªã³ã°ã®ã»ãšãã©ã®ããŒãºãã«ããŒããŸãïŒCursorïŒãã€ãã£ãAIçµ±åãããã³ããããã¡ãŒã¹ãã¯ã©ã¹åžæ°ãšããŠæ±ãïŒãšVS Code + Continue.devïŒãªãŒãã³ãœãŒã¹ãããŒã«ã«ã¢ãã«ãµããŒãïŒã éžæã¯äž»èŠèšèªãšã¢ãã«ã¢ã¯ã»ã¹èŠä»¶ã«ãã£ãŠç°ãªããŸãã
Cursorã¯ããã³ãããã¡ã€ã«ããã€ãã£ãã«æ±ããŸã â ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®æšªã®ãšãã£ã¿ã§çŽæ¥ããã³ãããåç §ãç·šéããã¹ãã§ããŸããOpenAIäºæAPIãšã®ãã€ãã£ãçµ±åããããTypeScriptãšPythonããããµããŒãããŠããŸãã
VS Code + Continue.devã¯ãªãŒãã³ãœãŒã¹ã§ãOllamaçµç±ã§ããŒã«ã«ã¢ãã«ããµããŒãããããããèšèªãšã³ã·ã¹ãã ã§åäœããŸãããªãŒãã³ãœãŒã¹èŠä»¶ãããå ŽåããŸãã¯ãã©ã€ãã·ãŒãã³ã¹ãã®çç±ã§ã¢ãã«ãããŒã«ã«ã§å®è¡ããå¿ èŠãããå Žåã«äœ¿çšããŸãã
ð¡ Cursorã§ããã³ããå埩é床åäž
Cursorã¯ãšãã£ã¿ããClaude 4.6 Sonnetãããã³ãããã¡ã€ã«ã«çŽæ¥å®è¡ã§ããŸããCursorããã§ã«ã³ãŒãã«äœ¿çšããŠããããŒã ã§ã¯ãèšè¿°-ãã¹ããµã€ã¯ã«ãååäœããç§åäœã«ççž®ãããŸãã
ããŒã«ã«ããã³ãããã¹ãã«ãŒã
ããŒã«ã«ããã³ãããã¹ãã«ãŒãã«ã¯4ã€ã®ã¹ãããããããŸãïŒããã³ãããæžãã3ã€ã®ä»£è¡šçãªå ¥åã§ãã¹ããããããŒã¹ã©ã€ã³ãšæ¯èŒãããåæ Œãããã³ãããããã ãã®ã«ãŒãã¯ãPromptfooãããŒã«ã«ã§èšå®ããå Žåã30ç§æªæºã§å®äºããã¯ãã§ãã
ã¹ããã1ïŒIDEã§ããã³ãããæžããç·šéããŸããã¹ããã2ïŒ3ã€ã®ä»£è¡šçãªå ¥åã«å¯ŸããŠããã³ãããå®è¡ããŸã â å žåçãªå ¥åããšããžã±ãŒã¹ã以åã«é害ãåŒãèµ·ããããã®ãã¹ããã3ïŒæåŸã«ã³ããããããããŒãžã§ã³ãšããŒã¹ã©ã€ã³ãæ¯èŒããŸããã¹ããã4ïŒå質ãç¶æãŸãã¯æ¹åãããå Žåãconventional messageã§ã³ãããããŸãã
Promptfooã®ããŒã«ã«ã«ãŒãèšå®ïŒ`npm install -g promptfoo`ã§ã€ã³ã¹ããŒã«ã3ã€ã®ãã¹ãã±ãŒã¹ãšLLM-as-judgeè©äŸ¡åšãå«ã`promptfooconfig.yaml`ããããžã§ã¯ãã«ãŒãã«äœæã`promptfoo eval`ãå®è¡ãæ¢åã®ããã³ããã®ã»ããã¢ããæéã¯15åæªæºã§ãã
â ïž ããŒã¹ã©ã€ã³æ¯èŒã¯å¿ é
ããŒã¹ã©ã€ã³ãšã®æ¯èŒãªãã§ã¯ããšããžã±ãŒã¹ã§å£åããããã³ããã絶察ãããå€ãååã«äœããã°ãåæ Œãããå¯èœæ§ããããŸããåžžã«æåŸã«ãããã€ãããããŒãžã§ã³ãšæ¯èŒããŠãã ããã
ããŒãžã§ã³ç®¡çãžã®ããã³ããã®ä¿å
ããã³ããããªããžããªã«ãŒãã®`/prompts`ãã£ã¬ã¯ããªã«`.txt`ãŸãã¯`.ts`ãã¡ã€ã«ãšããŠä¿åããŸãã Gitã§ããã³ãããããŒãžã§ãã³ã°ããããšã¯ã³ãŒããããŒãžã§ãã³ã°ããã®ãšåãå©ç¹ããããŸãïŒå®å šãªå±¥æŽãblameãããŒã«ããã¯ãPRããŒã¹ã®ã¬ãã¥ãŒã
åœåèŠåïŒ`task-version.txt` â äŸïŒ`customer-support-v3.txt`ã`email-draft-v1.txt`ãæ¥ä»ã§ã¯ãªãé£çªã®ããŒãžã§ã³çªå·ã䜿çšããŸãã廿¢ãããããã³ããã¯åé€ãã`/prompts/archive/`ã«ç§»åããŸãã
ããã³ãã倿Žã®ã³ãããã¡ãã»ãŒãžåœ¢åŒïŒconventional commitsã䜿çšããŸããæ¬çªç°å¢ãžã®åæåãããããã€åŸãã³ãããã«`prompts/task/version`ã¿ã°ãä»ããŸãããããã®ã¿ã°ã¯æ¬çªç°å¢ã§ããã³ãã倿Žãå ã«æ»ãå¿ èŠããããšãã®ããŒã«ããã¯ã¿ãŒã²ãããšããŠæ©èœããŸãã
ð ããã³ããã¯ã³ãŒãã§ã
ããã³ãããã¡ã€ã«ãã³ãŒããã¡ã€ã«ãšåãèŠåŸã§æ±ããŸãïŒPRã¬ãã¥ãŒãååä»ãèè ãã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ãåé€ããªã â 代ããã«/prompts/archive/ã«ç§»åã
ããã³ããã®CI/CDã²ãŒã
ãã¹ãŠã®ãã«ãªã¯ãšã¹ãã§PromptfooãŸãã¯Braintrustãå®è¡ããåæ Œçããããå€ãäžåã£ãå Žåã«ãã«ãã倱æãããGitHub Actionsã¯ãŒã¯ãããŒã远å ããŸãã ãããå€ã85%ããå§ãã3ãæã®å®å®ãããã¹ãã®åŸã«95%ã«åŒãäžããŸãã
GitHub Actionsã¯ãŒã¯ãããŒæ§é ïŒ`pull_request`ã§ããªã¬ãŒãããPromptfooãã€ã³ã¹ããŒã«ãã`promptfoo eval --config promptfooconfig.yaml`ãå®è¡ããçµäºã³ãŒãã0以å€ã®å Žåã«å€±æãããžã§ããå«ã`.github/workflows/prompt-test.yml`ãäœæããŸãã
ããã倿Šç¥ïŒå€§ããªãªã°ã¬ãã·ã§ã³ãæ€åºããªããäžéšã®å€åã蚱容ããããã«85%ããå§ããŸãã誀ã£ã倱æãªãã«3ãæã®å®å®ãããã¹ãã®åŸã95%ã«åŒãäžããŸãããªããžããªã®ãã©ã³ãä¿è·èšå®ã«prompt-testãžã§ããå¿ é ã®ã¹ããŒã¿ã¹ãã§ãã¯ãšããŠè¿œå ããŸãã
ããã³ããã®æ¬çªç£èŠ
ããã³ããå ¥åãšåºåããã°ã«èšé²ãããã¹ãŠã®ã¬ã¹ãã³ã¹ã§å質ã¹ã³ã¢ã©ãŒãå®è¡ãã24æéã®ããŒãªã³ã°ãŠã£ã³ããŠã§10%ãè¶ ããå質ã¹ã³ã¢ã®äœäžã«å¯ŸããŠã¢ã©ãŒããèšå®ããŸãã ãŠãŒã¶ãŒããŒã¿ãåŠçãããã¹ãŠã®ããã³ãããç£èŠããŸãã
ãã°ã«èšé²ãããã®ïŒããã³ããèå¥åãšããŒãžã§ã³ãã¢ãã«åãå ¥åããŒã¯ã³æ°ãåºåããŒã¯ã³æ°ãããªç§åäœã®ã¬ã€ãã³ã·ãè©äŸ¡åšããã®å質ã¹ã³ã¢ãå人ããŒã¿ãåŠçããããã³ããã®å Žåãçã®å ¥åã§ã¯ãªãå ¥åã®ããã·ã¥ããã°ã«èšé²ããŸãã
å質ã¹ã³ã¢ãªã³ã°ãªãã·ã§ã³ïŒBraintrustã¯ã¬ã¹ãã³ã¹ããšã®ã¹ã³ã¢ãªã³ã°ãšããã·ã¥ããŒããåããã¯ã©ãŠãããŒã¹ã®è©äŸ¡åšãæäŸããŸããã»ã«ããã¹ãåã¢ãããŒãã®å Žåãã¬ã¹ãã³ã¹ã®10%ã®ãµã³ãã«ã§è»œéãªLLM-as-judgeã³ãŒã«ãå®è¡ããŸããå質ã¹ã³ã¢ã7æ¥éã®ããŒãªã³ã°å¹³åãšæ¯èŒããŠ10%以äžäœäžããå Žåã«ã¢ã©ãŒããããªã¬ãŒããŸãã
éçºè ããã³ããã¯ãŒã¯ãããŒã§ããããééã
â ããã³ãããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«çŽæ¥æžã
Why it hurts: ããŒãã³ãŒããããããã³ããã¯å®å šãªãããã€ã¡ã³ããªãã«ããŒãžã§ã³ç®¡çããã¹ãã倿Žãã§ããªã
Fix: ããã³ããã/promptsãã£ã¬ã¯ããªã«å¥ãã¡ã€ã«ãšããŠä¿åããã©ã³ã¿ã€ã ã«èªã¿èŸŒãã
â ããŒã«ã«ã®ã¿ã§ãã¹ãããCI/CDã§ãã¹ãããªã
Why it hurts: ããŒã«ã«ãã¹ãã¯æéçãã¬ãã·ã£ãŒäžã§ã¹ããããããïŒCI/CDã²ãŒãã¯å¿ é
Fix: GitHub Actionsã«Promptfooãã¹ãã¹ãããã远å ãåæ Œçã85%ãäžåã£ãå Žåã«ããŒãžããããã¯ã
â æ¬çªç£èŠãªã
Why it hurts: ããã³ããå質ã¯ãããã€åŸã«å¯èŠæ§ãªãå£åãã
Fix: 1æ¥ãããããã³ããããšã®åæ Œçããã°ã«èšé²ã鱿¬¡ã§5%äœäžããå Žåã«ã¢ã©ãŒããçºããã
â 1ã€ã®ã¢ãã«ã§ã®ã¿ãã¹ã
Why it hurts: GPT-4oã§åäœããããã³ãããClaude 4.6 Sonnetã§å€±æããå¯èœæ§ããã
Fix: CI/CDã§å°ãªããšã2ã€ã®ã¢ãã«ã«å¯ŸããŠãã¹ãã¹ã€ãŒããå®è¡ã
éèŠãªãã€ã³ã
- ã¯ã©ãŠãAPIã䜿çšããTypeScript/Pythonã«ã¯Cursorã䜿çšããŸããããŒã«ã«ã¢ãã«ããªãŒãã³ãœãŒã¹èŠä»¶ã«ã¯VS Code + Continue.devã䜿çšããŸãã
- ããŒã«ã«ãã¹ãã«ãŒãã«ã¯4ã€ã®ã¹ãããããããŸãïŒæžãã3ã€ã®ä»£è¡šçãªå ¥åã§ãã¹ããããããŒã¹ã©ã€ã³ãšæ¯èŒãããåæ Œãããã³ããããããPromptfooã§30ç§æªæºãç®æšã«ããŸãã
- ããã³ããã/promptsã«.txtãŸãã¯.tsãã¡ã€ã«ãšããŠä¿åããŸããåœåèŠåtask-version.txtãæ¬çªç°å¢ã«ãããã€ãããããŒãžã§ã³ãGitã§ã¿ã°ä»ãããŸãã
- åæ Œçã85%ãäžåã£ãå Žåã«ãã«ãã倱æãããGitHub Actions CI/CDã²ãŒãã远å ããŸãã3ãæã®å®å®ãããã¹ãã®åŸã«95%ã«åŒãäžããŸãã
- æ¬çªç°å¢ã§ã¯ãããã³ããèå¥åãã¢ãã«ãããŒã¯ã³æ°ãã¬ã€ãã³ã·ãå質ã¹ã³ã¢ããã°ã«èšé²ããŸãã24æéã§10%ãè¶ ããå質ã¹ã³ã¢ã®äœäžã«å¯ŸããŠã¢ã©ãŒããçºããŸãã
ãããã質å
ããã³ãããšã³ãžãã¢ãªã³ã°ã«æé©ãªIDEã¯ã©ãã§ããïŒ
TypeScriptãŸãã¯Pythonã§äž»ã«äœæ¥ãããã€ãã£ãAIçµ±åãåžæããéçºè ã«ã¯Cursorãæšå¥šããŸããããŒã«ã«ã¢ãã«ãµããŒãããªãŒãã³ãœãŒã¹èŠä»¶ãå¿ èŠãªå Žåã¯VS Code + Continue.devãæšå¥šããŸãã
ããŒãžã§ã³ç®¡çã«ããã³ãããã©ã®ããã«ä¿åãã¹ãã§ããïŒ
ããã³ããã/promptsãã£ã¬ã¯ããªã«.txtãŸãã¯.tsãã¡ã€ã«ãšããŠä¿åããŸããåœåèŠåïŒtask-version.txtãããã³ãã倿Žã«ã¯conventional commitsã䜿çšããŸããæ¬çªç°å¢ã«ãããã€ããããã¹ãŠã®ããŒãžã§ã³ã«Gitã¿ã°ã远å ããŸãã
ããã³ããã®CI/CDã²ãŒããèšå®ããã«ã¯ã©ãããã°ããã§ããïŒ
ãã¹ãŠã®ãã«ãªã¯ãšã¹ãã§Promptfooãå®è¡ããGitHub Actionsã¯ãŒã¯ãããŒã¹ãããã远å ããŸããåæ Œçããããå€ïŒ85%ïŒãäžåã£ãå Žåã«ãã«ãã倱æãããããèšå®ããŸãã
æ¬çªããã³ããç£èŠã®ããã«äœããã°ã«èšé²ãã¹ãã§ããïŒ
ããã³ããå ¥åïŒPIIå«ãå Žåã¯ããã·ã¥ïŒãã¬ã¹ãã³ã¹ãã¬ã€ãã³ã·ãããŒã¯ã³æ°ãå質ã¹ã³ã¢ããã°ã«èšé²ããŸããå°ãªããšã30æ¥éä¿æããŸãã
Gitãªããžããªã«ããã³ãããã©ã®ããã«ä¿åããŸããïŒ
åããã³ããã`/prompts/theme/`ã«ããã¹ããã¡ã€ã«ãšããŠä¿åããŸããåœåïŒ`classify-intent-v2.txt`ãããŒãžã§ã³ãèè ãæ¥ä»ãã¢ãã«ãå«ãYAMLããã³ããã¿ãŒã远å ããŸãã
ããã³ããã®CI/CDã²ãŒããšã¯äœã§ããïŒ
CI/CDã²ãŒãã¯ããã¹ãŠã®PRã§ããã³ãããã¹ãã¹ã€ãŒããå®è¡ããåæ Œçããããå€ãäžåã£ãå Žåã«ããŒãžããããã¯ããèªååããããã¹ãã¹ãããã§ãïŒéåžž85%ïŒã
ããã³ãããšã³ãžãã¢ãªã³ã°ã«æé©ãªIDEã¯ã©ãã§ããïŒ
Cursorã¯ããã³ãããã¡ã€ã«ã«Claude 4.6 SonnetãçŽæ¥å®è¡ã§ããçµã¿èŸŒã¿AIã¢ã·ã¹ã¿ã³ã¹ããããããããã³ãããšã³ãžãã¢ãªã³ã°ã«æé©ãªIDEã§ããVS Code + Continue.devã¯ãªãŒãã³ãœãŒã¹ããŒã«ãå¿ èŠãªããŒã ã«æé©ã§ãã