
- TOP
- ã¿ã°äžèЧ
- JavaScript
JavaScript
ã€ãã³ã

ãã¬ãžã³
æè¡ããã°
ã¯ããã« 1. 泚ç®ããæ¬¡äžä»£ããŒã«ã®é
å 1.1 Oxlint ââ ãä»ãããèšå®ãŒãã§çéåã 1.2 Biome ââ ããã 1 ã€ã§å
šãŠãçä»ãã究極ã®äžæ¬åã 1.3 Deno ââ ãã»ããã¢ããäžèŠãæé«ã«ã¯ãªãŒã³ãªéçºäœéšã 1.4 Ezno ââ ãåãã§ãã¯ãŸã§ Rust åãããè¶
æªæ¥ã®ã³ã³ãã€ã©ã 2. Vueç¹æã®å£ïŒ ã®éçè§£æåé¡ 3. ããŒã ã§ã®è°è«ïŒãèšå®ãã¡ã€ã«2ã€ã¯æ¬åœã«å¿
èŠãïŒã 4. çµæ 5. ä»åŸã®å±æ ãŸãšã ã¯ããã« ããã³ããšã³ããšã³ãžãã¢ãããŠããäŒè€ãšç³ããŸãã æšä»ã¯ãRust 補ã®ããŒã«ãæ°å€ãçã¿åºãããŠãããLinter ããã®æ³¢ã«ä¹ã£ãŠãããšæããŸãã åŒç€Ÿã§ãç§»è¡ãããããã°ãæžããŠãããæ¯éäžèšã®èšäºãèªãã§ã¿ãŠãã ããã https://tech.revcomm.co.jp/ai-lint-formatter-oxc å²äžçšã«èŠãå€§æ³¢ãæ¥ãŠããæä»£ã«ãç§ã颯çœãšæ³¢ã«ä¹ãããšããŸããã ãããŠã©ããã£ãçµè«ã«è³ã£ããã玹ä»ãããŠããã ããŸãã æ³š: æ¬èšäºã®æ€èšŒã¯2026幎9æ10æ¥æç¹ãOxlint v1.82.0 / Biome v2.5.12 ã§è¡ã£ãŠããŸãããã®é åã¯å€åãéãããããèªã¿ããã ãæç¹ã§ã¯ç¶æ³ãå€ãã£ãŠããå¯èœæ§ããããŸãã 1. 泚ç®ããæ¬¡äžä»£ããŒã«ã®é
å 1.1 Oxlint ââ ãä»ãããèšå®ãŒãã§çéåã æå€§ã®é
åïŒæ¢åã®ãããžã§ã¯ãã«ããŒãªã¹ã¯ã§è¿œå ã§ãã ã¡ãªãã ESLint ã® 50ã100 åé«é ïŒ æ°äžè¡ã®ã³ãŒããäžç¬ã§ã¹ãã£ã³ãçµãããŸãã èšå®ãã¡ã€ã«ãäžèŠ ïŒ ã€ã³ã¹ããŒã«ããŠå®è¡ããã ãã§ãããçŽã®ãã°æ€åºã«ãŒã«ãæåããåããŸãã æ¢åã® ESLint ãšäœµçšå¯èœ ïŒ éãåŠçïŒãã°ãã§ãã¯ïŒã¯ Oxlint ã«ä»»ããè€éãªã«ã¹ã¿ã ã«ãŒã«ã ã ESLint ã«æ®ãããããšãåãããã§ããŸãã 1.2 Biome ââ ããã 1 ã€ã§å
šãŠãçä»ãã究極ã®äžæ¬åã æå€§ã®é
åïŒLinter ãš Formatter ãèåãããªãŒã«ã€ã³ã¯ã³æ§é ã¡ãªãã ESLint ãš Prettier ã®å€ãã®çšéãäžæ¬åã§ãã ïŒ åå¥ã«ãã©ã°ã€ã³ãçµã¿åãããç
©ãããããè§£æŸãããŸãïŒãã ãåŸè¿°ã®éããVue ã® <template> éšåã¯çŸç¶ ESLint ãšã®äœµçšãåæã«ãªãå Žé¢ãæ®ã£ãŠããŸãïŒã èšå®ã®è¡çªãŒã ïŒ Linter ãš Formatter ãåãææ³ã§äœãããŠããããããLinter ãš Prettier ã®ã«ãŒã«ããããã£ã³ã°ããŠåããªãããšããå®çªã®ã¹ãã¬ã¹ããããŸããã å§åçãªæ§æè§£æã®æ£ç¢ºã ïŒ ãšã©ãŒããã£ãŠãå£ããã³ãŒããåšçšã«ããŒã¹ãã芪åãªãšã©ãŒã¡ãã»ãŒãžãåºããŠãããŸãã 1.3 Deno ââ ãã»ããã¢ããäžèŠãæé«ã«ã¯ãªãŒã³ãªéçºäœéšã æå€§ã®é
åïŒæåãããã¹ãŠãæã£ãŠãããç°å¢ããã®ãã® ã¡ãªãã ïŒ ããŒã«éžå®ãã€ã³ã¹ããŒã«ã®æéããŒã ïŒ deno lint ãš deno fmt ãæåããå
èµãããŠããŸãã package.json ã«å€§éã®äŸåé¢ä¿ãæžãå¿
èŠããããŸããã æšæºã§ Web æšæºã«æºæ ïŒ ãã©ãŠã¶ãšåã API ããã®ãŸãŸãµããŒãããŠãããããç°å¢ããšã®å·®ç°ã«æ©ãŸãããŸããã Node.js ãšã®äºææ§ã匷å ïŒ è¿å¹Žã¯ Node.js ã®ããã±ãŒãžããã®ãŸãŸåããããæ·å±
ãéåžžã«äœããªã£ãŠããŸãã æ³šæ: Deno 㯠Linter åäœã®ããŒã«ã§ã¯ãªããã©ã³ã¿ã€ã ãšããŒã«ãã§ãŒã³ãã®ãã®ã§ããæ¢åã® Node.js ãããžã§ã¯ãã« deno lint ã ããå·®ã蟌ãã®ã§ã¯ãªãå®è¡ç°å¢ããšç§»è¡ãã話ã«ãªããããOxlint / Biome / Ezno ãšã¯æ¯èŒã®å俵ã»ç§»è¡èŠæš¡ãç°ãªãç¹ã«æ³šæããŠãã ããã 1.4 Ezno ââ ãåãã§ãã¯ãŸã§ Rust åãããè¶
æªæ¥ã®ã³ã³ãã€ã©ã æå€§ã®é
åïŒJavaScript ã®éçãè¶
ãããå§åçã«è³¢ãé«éãªåè§£æ ã¡ãªãã ïŒ TypeScriptïŒtscïŒããé¥ãã«é«é ïŒ çŸåšãããã³ããšã³ãéçºã§äžçªæéãããããåãã§ãã¯ãã®ããã»ã¹ã Rust ã§çéã«ããŸãã åæšè«ãã¹ããŒã ïŒ ã³ãŒãã®åãããæ·±ããæ£ç¢ºã«æšè«ããŠããããããéçºè
ãåå®çŸ©ã现ããæžãæéãæžãããŸãã ãã°ãæªç¶ã«é²ãå
鲿§ ïŒ å¯äœçšïŒSide EffectsïŒã®æ€ç¥ãªã©ãåŸæ¥ã® TypeScript ãããããã«äžæ©é²ãã å®å
šãªã³ãŒãæ€èšŒãå¯èœã§ãã æ³šæ: ãã ã Ezno ã¯æ¬èšäºå·çæç¹ïŒ2026幎9æïŒã§ãŸã feature-complete ã§ã¯ãªããtsc ãšã®å®å
šäºæãç®æããŠããããã§ããããŸãããæ¢åã®å€§èŠæš¡ãããžã§ã¯ãã®åãã§ãã¯ããã®ãŸãŸçœ®ãæããããæ®µéã§ã¯ãªããå°æ¥æ§ã«æ³šç®ãããå®éšçãããžã§ã¯ããšããäœçœ®ä»ãã§ãã ã©ããé«éæ§ã売ãã«ããŠãããReact ã§ã¯éåžžã«ä¹ãæããããæ©æµãåããããŸãïŒ å®éã«ç§ãããŒã«ã«ã§Biomeã®èšå®ã詊ããŠã¿ãŸããããããªãæ©ãã£ãã§ãã ã§ã¯ãã®ãŸãŸå°å
¥ããŠãRust ã®æ©æµãåããããšããŸããã ãã ãVue ã«ãªããšå°ã話ãå€ãã£ãŠãããã§ãã»ã»ã» 2. Vueç¹æã®å£ïŒ ã®éçè§£æåé¡ Vue ã¯ãHTML5 ã®æšæºä»æ§ã§ãã <template> ããç¬èªã®äŸ¿å©ãªåœ¢ã«æ¡åŒµããŠäœ¿ã£ãŠããŸãã èŠçŽ ã« v-if ã v-for ãä»ãããã <template> ã .vue ãã¡ã€ã«ã®æ çµã¿ãšããŠäœ¿ã£ããããŠããŸãã æ®æ®µã®éçºãããŠããäžã§ã v-if ã v-for ã䜿ããªãã±ãŒã¹ã¯ã»ãŒãªããšæããŸãã åœç¶ã§ããããããã®å€ããã§ãã¯ããŠããããšæã£ãŠããŸããã ãã ã <template> å
ã¯ãOxlint, Biome ãšãã«ãã§ãã¯ããŠãããªããã§ãã å®éã«ææ°çïŒOxlint v1.82.0 / Biome v2.5.12ã2026幎9ææç¹ïŒã§è©Šããçµæãã以äžã®ãµã³ãã«ã³ãŒããšããããŠã玹ä»ããŸãã <template > < div > <!-- â 1. å£ïŒLinterããããèŠãªããããååšããªã倿°ïŒã¿ã€ãïŒãã¹ã«ãŒãã --> < p > {{ userNema }} </ p > <!-- â 2. å£ïŒLinterããããèŠãªãããããäžã§äœ¿ãããŠããããšèªèã§ããªã --> < p > {{ unusedMessage }} </ p > </ div > < / template> <script setup lang="ts"> import { ref } from 'vue' const userMessage = ref ( 'ããã«ã¡ã¯' ) // ðŽ <script> å
ã¯èŠãŠããã®ã§ããå®çŸ©ããã®ã«äœ¿ãããŠããªãïŒããšæããã // ïŒå®éã«ã¯äžã® template ã§äœ¿ãããã®ã«ãLinterã template ãèªããªãããã§å€ç«ããïŒ const unusedMessage = ref ( 'ããã¯ãšã©ãŒã«ãªããŸã' ) < / s cript> OxlintïŒv1.82.0ïŒ ããã©ã«ãã§ã vue-plugin ãªãã·ã§ã³ãä»ããŠãããã®ãµã³ãã«ã«å¯ŸããŠã¯äœãèŠåãåºããŸããã§ããã userNema ã®ã¿ã€ãã unusedMessage ã®èª€æ€ç¥ãçºçããªã代ããã«ããã³ãã¬ãŒãåŽã®éçè§£æèªäœããŸã è¡ãããŠããªãããšããã®ã宿
ã§ããã BiomeïŒv2.5.12ïŒ ããã©ã«ãèšå®ã§ã¯ã¹ã¯ãªããåŽã® noUnusedVariables ã«ãŒã«ã .vue ãã¡ã€ã«ã«ãé©çšããã userMessageã»unusedMessage ã®äž¡æ¹ããæªäœ¿çšããšããŠãšã©ãŒã«ããŸã( unusedMessage ã¯å®éã«ã¯ãã³ãã¬ãŒãåŽã§äœ¿ãããŠããã®ã§ãããã¯èª€æ€ç¥ã§ã)ã ãã ã html.experimentalFullSupportEnabled ãæå¹ã«ãããšãBiomeã¯ãã³ãã¬ãŒãå
ã§ã®åç
§ãèªèã§ããããã«ãªãã unusedMessage ã®èª€æ€ç¥ã¯è§£æ¶ãããŸãã(æ¬åœã«æªäœ¿çšãª userMessage ã¯åŒãç¶ãæ£ããæ€åºãããŸã)ã äžæ¹ã§ããã©ã°ãæå¹ã«ããŠããã³ãã¬ãŒãå
ã® userNema ã®ãããªã¿ã€ããæ€åºããã«ãŒã«ã¯ãŸã ç¡ããäžæ£ãªå€æ°åç
§ãèŠéãåé¡ã¯è§£æ¶ãããŸããã äžèšã®æ€èšŒãããããéãããã³ãã¬ãŒãå
ã®éçè§£æã¯Rust補Linteråäœã§ã¯ãŸã å®çµã§ããŸãããBiomeã¯å®éšçãã©ã°ä»ãã§äžéšã®èª€æ€ç¥ãè§£æ¶ã§ããããã«ãªã£ãŠããŠããŸããããã³ãã¬ãŒãå
ã®ã¿ã€ãæ€åºã®ãããªèžã¿èŸŒãã ãã§ãã¯ãŸã§ã¯ãäŸç¶ãšã㊠eslint-plugin-vue ã«é Œãå¿
èŠããããŸãã ã€ãŸããå¿
èŠãªVueåºæã®ã«ãŒã«ãšåããŒã«ã®å¯Ÿå¿ç¶æ³æ¬¡ç¬¬ã§ã¯ãOxlintãŸãã¯BiomeãšESLintã䜵çšããå¿
èŠããããšããããšã§ãã 3. ããŒã ã§ã®è°è«ïŒãèšå®ãã¡ã€ã«2ã€ã¯æ¬åœã«å¿
èŠãïŒã Rust補Linter ãå°å
¥ããããäžæŠã¯ ESLint ã®ãŸãŸã«ãããã ã©ã¡ããéžæãããæ€èšãããããã¡ãªããã»ãã¡ãªãããåºããŠã¿ãŸããã ã¡ãªãã å§åçãªé«éå ïŒ åŸæ¥ã®JavaScriptãªã©ã§æžãããLinterïŒESLintãªã©ïŒã«æ¯ã¹ãæ°åãæ°ååé«éã«åäœããŸããå€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã ããªç§åäœ ã§åŠçãçµãããããCI/CDã®å®è¡æéã倧å¹
ã«ççž®ããéçºè
ã®åŸ
ã¡æéãã»ãŒãŒãã«ããŸãã éçºã®å¿«é©å ïŒ ä¿åæã®èªåæŽåœ¢ã pre-commit ããã¯ã§ã®å®è¡ãåçã«éããªããŸãã ç°¡åãªå°å
¥ ïŒ Rust補ããŒã«ã¯ã³ã³ãã€ã«æžã¿ã®ã·ã³ã°ã«ãã€ããªãšããŠé
åžãããããšãå€ããããç°å¢æ§ç¯ãCIã§ã®ã»ããã¢ãããéåžžã«ã·ã³ãã«ã«ãªããŸãã ãã¡ãªãã äºé管ç ïŒïŒäžçªã®æžå¿µïŒ Rust補ããã³ããšã³ãLinterïŒBiomeãOxcãªã©ïŒã¯ã .vue ãã¡ã€ã«ã®æ§æïŒHTMLãã³ãã¬ãŒããVueåºæã®æ§æã«ãŒã«ïŒãå®å
šã«ãµããŒãããŠããŸããã ãã®ãããVueåºæã®ã«ãŒã«ïŒ vue/valid-template-root ãªã©ïŒããã§ãã¯ããã«ã¯ãçµå±åŸæ¥ã® ESLintïŒeslint-plugin-vueïŒ ãæ®ããªããã°ãªããªããªããŸã TypeScript/JavaScriptéšåïŒ çéã®Rust補LinterïŒBiomeãªã©ïŒã§ãã§ã㯠Vueãã¡ã€ã«ã»ãã³ãã¬ãŒãéšåïŒ åŸæ¥ã®ESLintã§ãã§ã㯠ãã©ã°ã€ã³ãšã³ã·ã¹ãã ã®æªçã ïŒ æŽå²ã®ããESLintãªã©ã®ããã«ãã³ãã¥ããã£ãäœã£ãç¡æ°ã®ãµãŒãããŒãã£è£œãã©ã°ã€ã³ãèªç±ã«è¿œå ããããšãé£ããå ŽåããããŸããç¬èªã®ã«ãŒã«ã远å ãããå Žåã®ããŒãã«ãé«ãã§ãã ã«ãŒã«ãæ§æã®è¿œåŸã©ã°ïŒ èšèªïŒç¹ã«JavaScript/TypeScriptãPythonïŒã®æ°æ©èœãæ°ããæ§æãç»å ŽããéãRuståŽã§ã®ããŒãµïŒæ§æè§£æåšïŒã®å¯Ÿå¿ã«ããããªã¿ã€ã ã©ã°ãçããããšããããŸãã 4. çµæ çµæã¯ããã¡ãªããéšåã®äºé管çã®æžå¿µéšåã倧ãããçŸç¶ã®ESLintïŒeslint-plugin-vueïŒã§ç®¡çããæ¹ãéžã³ãŸããã æå
ã®èšæž¬ã§é床ã«ã€ããŠã¯ãç³ãåãªãããšãç«èšŒæžã¿ã§ããã å°å
¥ããã¡ãªããã倧ãã«æããŠãããã®ã®ã2ã€ã®Linterã䜵çšããç¹ãäžåãã»ã©ã§ã¯ãªããšå€æããŸããã 5. ä»åŸã®å±æ Biome ã¯æ¢ã« html.experimentalFullSupportEnabled ãã©ã°ã§ Vue SFC ã®å®éšçãµããŒããå§ããŠãããOxlint ã vue-plugin ãªãã·ã§ã³ãªã©Vueåãã®æ©èœãå¢ãããŠããŠããŸãã ããµããŒããããã®ãåŸ
ã€ããšãããããããå®éšçãµããŒããã©ããŸã§å®å®ãããã»ãã³ãã¬ãŒãå
ã®ã¿ã€ãæ€åºã®ãããªèžã¿èŸŒãã ãã§ãã¯ãŸã§ã«ããŒããããããç¶ç¶çã«ãŠã©ããããŠããããšããã®ãä»ã®ç«ã¡äœçœ®ã§ãã åãããžã§ã¯ãã®çŸç¶ããã玹ä»ããããŸãã Biome v2.4(2026幎2æ)ã§ Vueã»Svelteã»Astro 察å¿ãå®éšçæ©èœãããããã¯ã·ã§ã³æšæºã«è¿ã¥ããåãçµã¿ãçºè¡šãããŸãããæ¢åã®ãªã³ãã£ã³ã°ã«ãŒã«ã匷åããHTMLã©ã€ã¯ãªèšèªã§ãæ©èœããããã«ããæ¹éã§ãã https://biomejs.dev/ja/blog/roadmap-2026/#2026-roadmap Oxlint å
¬åŒããã¥ã¡ã³ãäžã®å¶éã®èšèŒã«ãVue ãå«ãŸããŠãããæ¹åããŠãããã¯ãã ãšæããŸãããããŠãæ¹åã®ããã® issue ãããéçºãé²ããããŠããã®ãããããŸãã https://github.com/oxc-project/oxc/issues/23207 https://oxc.rs/compatibility.html ãããŠãªããšãã£ãŠããOxlint ã®éçºãæ¯æŽããŠããã®ã Vue ã®éçºè
ã§ãã Evan You ãããç«ã¡äžãã VoidZero ãšããäŒç€Ÿãªãã§ãã çŸåšã®ããã³ããšã³ãã®ãããŒã«ã®æçåïŒLinterãFormatterããã¹ãããŒã«ããã«ãããŒã«ããã©ãã©ã§èšå®ãé¢åãã€é
ãïŒããšãã課é¡ãæ ¹æ¬ãã解決ããããVite+ïŒãŽã£ãŒããã©ã¹ïŒãéçºããããã®äžã« Oxlint ãå«ãŸããŠããŸãã Vue ã®éçºè
ããVue ãèŠæŸãã¯ãããªããã§ãïŒåŒç€Ÿã Oxlint ã«ããã®ãè¿ãã§ããïŒ ãŸãšã Rust 補ã®ããŒã«ã¯éåžžã«é«éã§ãããã«ã§ãä¹ãæããããšæã£ãŠããŸããŸãã ãã ãã¡ãªããã»ãã¡ãªãããä»åŸã®å±æãèžãŸããŠãæ€èšããã®ã倧äºã ãªãšä»åã®ç§»è¡äœæ¥ãéããŠæããŸããã ã©ã®ããŒã«ã«ãããããã£ããæ€èšãããã§ãã AI ã§éçºãè¡ããšãç°¡åã«å®è¡ã§ãããããæ€èšããã®ããµãããã¡ã«ãªã£ãŠããŸããŸãã ããããæå³ã§ãä»åã¯ããå匷ã«ãªã£ããšæããŸãã ãèªã¿ããã ãããããšãããããŸããã æ¬¡ã¯ãOxlint ã«ç§»è¡ãã話ã§ãäŒãããŸãããã
ãµã€ãªã¹ãã¯ãããžãŒã¯ãOSS管çããŒã«ãSCANOSSãã® æ¥æ¬åœå
åã®ä»£çåº ã§ãã çæAIã§ã³ãŒããæžãæ¯éãäžããã«ã€ãããåãã³ãŒãã¯æã«å
¥ã£ãããããã䜿ã£ãŠããããã確ãããå·¥çšãæãèœã¡ãããã«ãªããŸããããã¹ãã¯éããè匱æ§ã¹ãã£ã³ãåããŠããã°ããããéãããããããã®ã³ãŒããã©ãç±æ¥ãªã®ããèŠãå·¥çšã¯ãã©ã¡ãã«ãå
¥ã£ãŠããŸããã AIãçæããã³ãŒãã«å«ãŸããOSSã¯ãèªãã§èŠåããããšãã§ããŸãã ãæ©æ¢°çãªç
§åã§èŠããç¯å²ãšãæ©æ¢°ã«ãèŠããªãç¯å²ãæ®ããŸãã ãã®èšäºã§ãããããš : çæãããã³ãŒãã®åºæããèªãã§èŠåããããªãçç± OSSãæ··ãã£ãŠããå Žåã«ãã©ã€ã»ã³ã¹çš®å¥ããšã«äœãæ±ããããã äœãèŠãããŒã«ãããããã®ãã¡ã³ãŒããèŠããã®ã¯ã©ãã æ©æ¢°çãªç
§åã§ãå€å®ã§ããªãç¯å² ãã®ã³ãŒãã«OSSã¯å
¥ã£ãŠããã æ¬¡ã®ã³ãŒããèªãã§ãã ãããJavaScriptã§ãæååãUTF-8ã®ãã€ãåã«å€æããåŠçã§ãã // convert string to array (typed, when possible) exports.string2buf = function (str) { var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; // count binary size for (m_pos = 0; m_pos < str_len; m_pos++) { c = str.charCodeAt(m_pos); if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { c2 = str.charCodeAt(m_pos + 1); if ((c2 & 0xfc00) === 0xdc00) { c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); m_pos++; } } buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; } // âŠïŒUTF-8ãã€ãåãžã®æžã蟌ã¿ã¯äžç¥ïŒâŠ return buf; }; ãã®ã³ãŒãã«OSSç±æ¥ã®ãã®ãæ··ãã£ãŠããããèªãã§å€å®ã§ããã§ããããã çãã¯ã ãã®ã³ãŒãèªäœãOSS ã§ããå§çž®ã©ã€ãã©ãª pako v1.0.11 ã® lib/utils/strings.js ããã®æç²ïŒMITïŒã§ãåŸåã®ãã€ãåãžã®æžã蟌ã¿ã¯çç¥ããŠãããŸãã pako â Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn / MIT License èŠåããããªãã£ããšããŠããæ³šæåã®åé¡ã§ã¯ãããŸãããçç±ã¯2ã€ãããŸãã ç
§åãã¹ãOSSãå€ããã 1ã€ç®ã¯åçŽãªè©±ã§ããäžã«å
¬éãããŠããOSSã®ã³ãŒããã¹ãŠãšãç®ã®åã®ã³ãŒããçªãåãããäœæ¥ã«ãªããŸãã人éã®èšæ¶ã§ç
§åã§ããèŠæš¡ã§ã¯ãããŸããã ãããŠãããã¯ãçããèµ·ããããšãã§ããããŸãããICSE 2025ã§çºè¡šããã LiCoEval ã¯ã14ã®LLMã«4,187ä»¶ã®ã³ãŒããçæãããæ¢åã®OSSå®è£
ãšåŒ·ã䌌ãŠãããã®ãã©ãã ãå«ãŸããããæž¬ã£ãŠããŸããã³ãŒãçæã®æ§èœãé«ã3ã¢ãã«ïŒGPT-4o / Claude 3.5 Sonnet / DeepSeek-Coder-V2ïŒã§ã¯ãçæããã³ãŒãã®ãã¡ 0.88%ã2.01% ã該åœããŸããã14ã¢ãã«å
šäœã§èŠããš 0.0%ã2.17% ãŸã§å¹
ããããæå€ã¯ã³ãŒãçæã®æ§èœã§äžäœã®CodestralïŒ2.17%ïŒã0ä»¶ã ã£ãã®ã¯æ§èœãäžäœã®GLM-4-9B-Chatã§ããããªãããã®æž¬å®ã®å¯Ÿè±¡ã¯2024幎æç¹ã®ã¢ãã«çŸ€ã§ããã¢ãã«ã¯å
¥ãæ¿ããã®ã§ããã®æ°å€ããã®ãŸãŸä»ã®ã¢ãã«ã«åœãŠã¯ãŸãããã§ã¯ãããŸããã æ°åã ãèŠããšå°ããæããŸããã ãã®å€ã¯äžé ã§ããè«æèªèº«ã枬å®ã®éçãšããŠããæžããŠããŸãã Our striking similarity standard focuses on precision, potentially overlooking cases where LLMs generate code derived from open-source code but fall below our threshold ïŒãã®å€å®åºæºã¯ç²ŸåºŠãéèŠããŠãããããOSSç±æ¥ã®ã³ãŒããçæããŠããŠãéŸå€ãäžåãã±ãŒã¹ã¯èŠèœãšãå¯èœæ§ãããïŒ ã€ãŸããå®éã«ã¯ããããå€ãèµ·ããŠããå¯èœæ§ããããŸãã åºåã«åºæã®æ
å ±ãä»ããªã 2ã€ç®ã®ã»ããåä»ã§ãã人ãOSSãæã£ãŠãããšãã¯ãç±æ¥ãç¥ã£ãŠããŠãå€ãã®å Žåã©ã€ã»ã³ã¹ãã¡ã€ã«ãäžç·ã«ä»ããŠããŸããçæãããå Žåã¯ã äœãä»ããŠããŸãã ã åãLiCoEvalã¯ãã¢ãã«ãçæããã³ãŒãã«ã€ããŠãã©ã€ã»ã³ã¹æ
å ±ãæ£ãã瀺ããããæž¬ã£ãŠããŸããã³ããŒã¬ããã©ã€ã»ã³ã¹ïŒæ¬¡ç« ã§èŠããšããã矩åããã£ãšãéãçš®å¥ïŒã®ã³ãŒãã§åºæãæ£ãã瀺ããå²åã¯ãGPT-4oã»GPT-3.5 Turboã»GPT-4 Turboã»Gemini 1.5 Proã»DeepSeek-Coder-V2ã»Codestral ã®ãããã 0.0 ãClaude 3.5 Sonnet ã® 0.4 ãå¯äžã®äŸå€ã§ããã ãæ§èœã®é«ãã¢ãã«ã䜿ãã°é¿ããããããšãã話ã§ããããŸããã0.0 ã䞊ãã§ããã¢ãã«ã«ã¯ãã³ãŒãçæã®æ§èœã§äžäœ3ã¢ãã«ã«å
¥ã GPT-4o ãš DeepSeek-Coder-V2 ãå«ãŸããŠããŸããè«æèªèº«ãããã®çš®ã®ã¹ã³ã¢ãšçææ§èœã察å¿ããªãããšã«æ³šæãä¿ããŠããŸãã a high LICO score, particularly a score of 1 in the absence of any strikingly similar cases, is not meaningful if the model’s code generation performance is poor. Models producing erroneous or chaotic code may naturally avoid striking similarities ïŒã³ãŒãçæã®æ§èœãäœãã¢ãã«ã§ã¯ãé«ãã¹ã³ã¢ïŒãšãã«äŒŒãäºäŸã0ä»¶ã§æºç¹ã«ãªãå ŽåïŒã¯æå³ãæããªãã誀ã£ãã³ãŒããæ··ä¹±ããã³ãŒããåºãã¢ãã«ã¯ããããã匷ãé¡äŒŒãé¿ããŠããŸãïŒ ã€ãŸããã®æã®ã¹ã³ã¢ã¯ãæ§èœãäœãã¢ãã«ã»ã©è¯ãèŠããåãã«æªã¿ãŸãã ã¢ãã«ãéžã³çŽããŠè§£æ±ºããåé¡ã§ã¯ãããŸãã ã OSSãæ··ãã£ãŠããããäœãããªããšãããªãã®ã ãAIãåºåããã³ãŒãã®èäœæš©ããããäºãã¯ãŸã 決çããŠããªãã®ã ãããæ§åãèŠãã°ããããšèããããšãã§ããŸããå®éããã®è«ç¹ã«å€ããçãã¯åºãŠããŸããã Copilotã®åºåããããéå£èšŽèšïŒ Doe v. GitHub ïŒã¯ã22ä»¶ã®è«æ±ã®ãã¡20ä»¶ãå°è£ã§åŽäžãããå¥çŽéåãšOSSã©ã€ã»ã³ã¹éåã®2ä»¶ãä¿å±äžã§ããåŽäžãããèäœæš©ç®¡çæ
å ±ã«é¢ããè«æ±ã¯æ§èšŽããã2026幎2æ11æ¥ã«ç¬¬9å·¡ååºã§å£é åŒè«ãè¡ããã倿ãåŸ
ã£ãŠããç¶æ
ã§ãïŒ2026幎9æ3æ¥æç¹ïŒã ãã ãã æ··ãã£ãŠããå Žåã«äœãæ±ãããããã¯ãAIãšã¯é¢ä¿ãªãããã§ã«ææã§æ±ºãŸã£ãŠããŸã ã çš®å¥ ä»£è¡šäŸ ã³ãŒãã«åã蟌ãã å Žåã«çããããš permissive MIT / Apache-2.0 / BSD èäœæš©è¡šç€ºãšã©ã€ã»ã³ã¹æã® 衚瀺 ã矩åããŒãã§ã¯ãããŸãã 匱ã³ããŒã¬ãã LGPL / MPL 衚瀺ã«å ããŠã ãã®OSSéšåãæ¹å€ãããªããœãŒã¹ã®é瀺 匷ã³ããŒã¬ãã GPL / AGPL çµåããèªç€Ÿã®ã³ãŒãã«ãŸã§é瀺矩åãåã³ãã ãAGPLã¯ãããã¯ãŒã¯è¶ãã«äœ¿ãããå Žåã«ãåã³ãŸã é ã«èŠãŠãããŸããpermissiveã¯ãèªç±ã«äœ¿ããããšçè§£ãããã¡ã§ããã衚瀺ã®çŸ©åã¯æ®ããŸãã衚瀺ãèœãšãã°æ¡ä»¶éåã§ãã 匱ã³ããŒã¬ããã¯ããã®OSSéšåãæ¹å€ãããã©ããã§å€ãããŸããæ¹å€ããŠé
åžãããªãããã®éšåã®ãœãŒã¹ãé瀺ããããšã«ãªããŸãã 匷ã³ããŒã¬ããã¯ã圱é¿ç¯å²ãèªåã®ã³ãŒãåŽã«åã³ãŸããã©ããŸã§ããçµåããªã®ãã¯é
åžåœ¢æ
ãçµåæ¹æ³ã§å€ããããããããæã倿ã®éãé åã§ãã ãã ããåãçš®å¥ã§ãåå¥ã®ã©ã€ã»ã³ã¹ããšã«æ¡ä»¶ã¯éããŸããäžã®è¡šã¯çš®å¥ããšã«äœãä»ããŠãããã®åŸåã§ãå®éã«ã©ã®çŸ©åãçãããã¯ããã®ã©ã€ã»ã³ã¹ã®æ¡æãšãçµåã®åœ¢ãé
åžã®æ¹æ³ã§æ±ºãŸããŸããã©ã®ã©ã€ã»ã³ã¹ãéãããã䜿ãåŽã決ããããšã§ãã ã©ã¡ãããã©ããªã©ã€ã»ã³ã¹ã®ãã®ãæ··ãã£ãŠããããåãã£ãŠããã®è©± ã§ãã ããŒã«ã¯äœãããŠãããã®ã 人éãèªãã§åãããªãã®ã§ããã°ãæ©æ¢°ã«ç
§åãããããšã«ãªããŸãããã ããOSSã©ã€ã»ã³ã¹ãèŠãããŒã«ããšãŸãšããããŠãããã®ã¯ã äœãèŠãŠããããããããéããŸã ã3ã€ã«åãããŸãã 以äžã¯ äœãèŠãŠããéå
·ãªã®ã ã®åé¡ã§ã補åã©ããã®æ¯èŒã§ã¯ãããŸãããåé ã«æžããç«å Žã®ãšããããã®åé¡ã«ã¯åœç€Ÿãæ±ã補åãå
¥ããŸãã äœãèŠãŠããã éå
· AIçæã³ãŒãã®æ··å
¥ äŸåã®å®£èšïŒmanifestãšlockfileïŒ Dependency graph ïŒ dependency-review-action ïŒ Trivy æ ããªã ãã¡ã€ã«ã®äžã®ã©ã€ã»ã³ã¹ã®èšè¿° ScanCode Toolkit ã©ã€ã»ã³ã¹æãæ®ã£ãŠããã°æ ã ã³ãŒãçã®æçŽ FossID ïŒ Black Duck ïŒ SCANOSS ããã§æ ã äžããé ã«ãèŠãŠãã察象ãã³ãŒãã®å
åŽãžå
¥ã£ãŠãããŸãããã¡ã°ãäžã®æçŽã®ç
§åã ããã宣èšã«ãã©ã€ã»ã³ã¹æã«ãçŸããªãã³ãŒããã®ãã®ãèŠãŸãããã®å±€ã¯è£œåãéãããŠãããå
¬åŒããã¥ã¡ã³ãã§æ©èœã確èªã§ããã®ã¯äžã®3ã€ã§ãã [^1]ã 衚ã«èŒããŠããªãéå
·ã«ãè§ŠããŠãããŸããäŸåããŠããããã±ãŒãžã®åé¡ãç¥ãããä»çµã¿ãšããŠåºãå
¥ã£ãŠããã®ããGitHubã® Dependabotã®ã¢ã©ãŒã ã§ãã èŠãŠããã®ã¯ã衚ã®ãã¡ã°ãäžã®å±€ã§ã ãå
¬åŒããã¥ã¡ã³ãã確èªããéããDependabotã®ã¢ã©ãŒãã¯è匱æ§ã®æ€åºã«éå®ãããŠããŠãã©ã€ã»ã³ã¹ãèŠãæ©èœãžã®èšåããããŸããã ãã§ã«äœããåããŠãããããã©ã€ã»ã³ã¹ãŸã§èŠããŠãããšã¯éããŸãã ã AIçæã³ãŒãã®æ··å
¥ãåé¡ã«ãªãã®ã¯ã 衚ã®ãã¡ã°ãäžãæ±ãç¯å² ã§ãã宣èšãããŠããªãã³ãŒãã¯ãäŸåã®å®£èšãèŠãããŒã«ã«ã¯æ ããŸããã [^1]: åãå±€ã§å
¬åŒããã¥ã¡ã³ãã«èšè¿°ã確èªã§ãããã®ãšããŠãä»ã« FOSSA ïŒãã¡ã€ã«åäœã®æçŽç
§åã»ç¢ºççãªããããšæèšïŒãš Revenera Code Insight ïŒsource-code fingerprintsïŒããããŸããæ¬èšäºã¯å補åã®ç²ŸåºŠã»é床ã»äŸ¡æ Œã®æ¯èŒã¯è¡ããŸããã æ©æ¢°ã«ä»»ããã°çµãããªã®ã ãããŸã§ã§ãæ©æ¢°ã«ç
§åãããã°ããããšãã話ã«ãªããŸãããæ©æ¢°ã«ãèŠããªãç¯å²ãæ®ããŸãã 1ã€ã¯ã æãå
¥ãã»ã©åœãããªããªã ããšã§ããæçŽã®ç
§åã匷ãã®ã¯ããã®ãŸãŸã®åœ¢ã«è¿ãã³ãŒãã§ããæžãçŽãããããå¥ã®èšèªãžç§»ããããããã»ã©ãç
§åã®æãããã¯æžã£ãŠãããŸããããã¯ç¹å®ã®è£œåã®æ§èœã§ã¯ãªãã æçŽãç
§åãããšããæ¹æ³ãã®ãã®ã®æ§è³ª ã§ããã©ããŸã§æãå
¥ããšå€ããã®ãã¯ãéå
·ã«ãã£ãŠéããŸãã ãã1ã€ã¯ã 䌌ãŠããããšãç±æ¥ã®èšŒæã«ã¯ãªããªã ããšã§ããLiCoEvalã¯ããæžããŠããŸãã Text similarity alone cannot determine non-independent creation in LLM-generated code. LLMs can produce highly similar code even for unseen samples ïŒããã¹ãã®é¡äŒŒåºŠã ãã§ã¯ãLLMãçæããã³ãŒããç¬ç«åµäœã§ãªããšã¯å€å®ã§ããªããåŠç¿ã§èŠãŠããªããµã³ãã«ã«å¯ŸããŠããLLMã¯éåžžã«äŒŒãã³ãŒããåºããïŒ äŒŒãŠããã³ãŒããåºãŠãããšãããããåã蟌ã¿ãªã®ããç¬ç«ããŠæžãããçµæãªã®ãã¯ãæ©æ¢°ã®åºåã ãã§ã¯æ±ºãŸããŸããããã¡ããæ©æ¢°æ€åºã®è£œåã100%çºèŠããŠããããšãèšããŸããã ãã ããéçãããããšã¯ãæ©æ¢°ã«ç
§åãããªãçç±ã«ã¯ãªããŸããã æ¯ã¹ãçžæã¯ãå®ç§ãªæ€åºãã§ã¯ãªããäœãèŠãŠããªãç¶æ
ã®ã»ã ã§ããå®ç§ã«æ€åºã§ããéå
·ãç¡ãã®ã¯ãã®é åã«éããŸããããããã§ãå
¥ããã®ã¯ãå
¥ããªãå Žåãšã®å·®ã倧ããããã§ãã åæ
ã§èšããšã æ©æ¢°ãæ
ãã®ã¯æ€åºãŸã§ ã§ããåºãŠãããã®ãæ¬åœã«åã蟌ã¿ãªã®ããæ±ºããã®ã¯äººã®åŽã«æ®ããŸãããã®åæ
ãå
ã«æã£ãŠãããšãããŒã«ã®åºåããçããã§ã¯ãªããåè£ããšããŠåãåããŸãã æå
ã§åãããŠã¿ãå Žåã¯ãSCANOSS ã® CLI ã§ããŒã«ã«ã¹ãã£ã³ã詊ãæé ã å¥ã®èšäº ã«ãŸãšããŠããŸããã€ã³ã¹ããŒã«ããã¹ãã£ã³çµæã®èªã¿æ¹ãSBOM ã®çæãŸã§ãæ±ã£ãŠããŸãã ãªããã®ç¢ºèªãèŠãã®ã AIã«æžãããã³ãŒãã¯ãã¹ãã£ã³ã«ãããŠå€æãããããããŸããã èªãã§èŠåããããªã以äžãåºæã確ãããæ¹æ³ãã»ãã«ç¡ãããã§ãã åé ã®ã³ãŒãã«æ»ããŸãããããpakoç±æ¥ã ãšèŠåããããªãã£ãã®ã¯ãç
§åãã¹ãOSSãå€ãããããã«ãçæãããã³ãŒãã«ã¯åºæãä»ããŠããªãããã§ããã人ã®ç®ã§ã¯ãã©ã¡ããåããããŸãããæžãããéãå¢ããŠããåãŸãããã«ã¯ãªããŸããã ãããŠã 確ãããŠããªãããšã¯ãæ··ãã£ãŠããªãããšã§ã¯ãããŸãã ãæ··ãã£ãŠããå Žåã«çãã矩åã¯ããã§ã«æ±ºãŸã£ãŠããŸããã¹ãã£ã³ããŠããªãã³ãŒãã«ã€ããŠèšããã®ã¯ãæ··ãã£ãŠããªããã§ã¯ãªããã æ··ãã£ãŠãããã©ãããèšããªã ãã ãã§ããçæã®é床ãäžããã»ã©ããã®ç¶æ
ã®ã³ãŒããå¢ããŠãããŸãã æ©æ¢°ãåºããã®ã¯åè£ãŸã§ã§ãããããå
ã¯äººã倿ããŸããããã§ããåè£ãåºãŠããªããã°å€æã®ãããããããŸããã èªåã®ã³ãŒãã«äœãå
¥ã£ãŠãããã¯ãå€ã®çããåŸ
ããªããŠãã確ãããã°åãããŸãã ã芧ããã ãããããšãããããŸãïŒ ãã®æçš¿ã¯ã圹ã«ç«ã¡ãŸãããïŒ åœ¹ã«ç«ã£ã 圹ã«ç«ããªãã£ã 1人ããã®æçš¿ã¯åœ¹ã«ç«ã£ããšèšã£ãŠããŸãã The post AIçæã³ãŒãã®OSSã©ã€ã»ã³ã¹ïœèªåã¹ãã£ã³ãå¿
èŠãªçç± first appeared on SIOS Tech Lab .
Antigravityã¯èªå仿§ã«ã«ã¹ã¿ãã€ãºã§ãã Antigravityã®ç¹åŸŽã®ã²ãšã€ãããšãŒãžã§ã³ãã®æ¯ãèããã«ã¹ã¿ãã€ãºã§ããããšã§ããçæAIã«æ¯åãŒãããæç€ºãåºããŠãããšãããã®ãããžã§ã¯ãã§ã¯ãã®æžãæ¹ã«ããŠã»ãããããã¹ãã³ãŒãã§ã¯ãã®ã«ãŒã«ãå®ã£ãŠã»ããããšãã£ãåã説æãäœåºŠãç¹°ãè¿ãããšã«ãªããŸãã

















