ååããWebãã©ãŠã¶ã§äœ¿ããæååæŽåœ¢ããŒã«ãäœã£ãŠããŸããWebãã©ãŠã¶ã§åããªããã¹ããŒããã©ã³ã§ããPCãã¿ãã¬ããã§ãåãããã«åããããšãã§ããã®ãã¡ãªããã§ããä»åã¯ååãããè€éãªèŠåã§ããã¹ãæŽåœ¢ãè¡ãããã°ã©ã ã玹ä»ããŸãã
-

ä»åäœãæååæŽåœ¢ããŒã« - ã¡ã«ãã¬åãã«çªå·ãæ¯ãã€ã³ãã³ãããããã«ã¿ã°ãä»äžãã
ïŒç¶ïŒç·šééšã®ä»äºãJSã§èªååããã
ããŠãååããç·šééšã§å®æçã«çºè¡ããŠããã¡ãŒã«ãã¬ãžã³ãèªåæŽåœ¢ããããã°ã©ã ãäœæããŠããŸããå®ã¯ååã®ããã°ã©ã ã¯ãå®éã®æŽåœ¢ä»æ§ãããç°¡åã«ãããã®ãè§£ããŠã¿ãŸãããä»åã¯ãåŠçãããå°ãé£ãããªããŸãããã£ããããé¡ã確èªããŸãããã
ããé¡ã
Webã·ã¹ãã ããèšäºã¿ã€ãã«ãšURLã®äžèЧãåºåãããŸããèšäºã®ããããã«å¯ŸããŠãé£çªãã€ãURLã«å¿ããã¿ã°ãã¿ã€ãã«ã«ä»äžããŠãã ãããå ¥åããŒã¿ã§ããèšäºã¿ã€ãã«ãšURLã®äžèЧã¯ä»¥äžã®ãããªãã®ã§ãã
ãªã³ã©ã€ã³çµå©åŒå ŽèŠåŠãéå§ããããã¬ãŒãŒã®æçŽã«åããåçµ
https://news.mynavi.jp/article/20200619-1056453/
WindowsãŠãŒã¶ãŒã«èŽãLinuxè¶
å
¥é 第51å
Windows 10ã«Ubuntu 20.04 LTSãã€ã³ã¹ããŒã«ãã
https://news.mynavi.jp/article/liunx_win-51/
ããŒãPCãšåšèŸºæ©åšã®é£ä¿ãäžæ°ã«æ¥œã«ãªãããããã³ã°ã¹ããŒã·ã§ã³ã
https://news.mynavi.jp/kikaku/beginner_pc-3/
...
ããã以äžã®ããã«åºåããŸãã
[ 1] ãªã³ã©ã€ã³çµå©åŒå ŽèŠåŠãéå§ããããã¬ãŒãŒã®æçŽã«åããåçµ
https://news.mynavi.jp/article/20200619-1056453/
[ 2] ãé£èŒãWindowsãŠãŒã¶ãŒã«èŽãLinuxè¶
å
¥é 第51å
Windows 10ã«Ubuntu 20.04 LTSãã€ã³ã¹ããŒã«ãã
https://news.mynavi.jp/article/liunx_win-51/
[ 3] ãåºåãããŒãPCãšåšèŸºæ©åšã®é£ä¿ãäžæ°ã«æ¥œã«ãªãããããã³ã°ã¹ããŒã·ã§ã³ã
https://news.mynavi.jp/kikaku/beginner_pc-3/
ãã®ãšããå ¥åãšåºåãèŠæ¯ã¹ããšåãããŸãããã¿ã€ãã«ã«ãé£èŒããšããåºåãã®ãããªã¿ã°ãä»äžãããŠããŸããURLã®èŠåãå ã«ããããã¿ã°ãä»äžããŸããURLã®èŠåã¯ä»¥äžã®ãããªèŠåã§ãã
| èŠå | ä»äžããã¿ã°
| /article/æ°åã"-" | ã¿ã°ãªã
| /article/ã¢ã«ãã¡ããããæ°åã"_" | é£èŒ
| /kikaku/... | åºå
ããã§ã¯ããã®ã«ãŒã«ã«æ²¿ã£ãããã°ã©ã ãäœã£ãŠãããŸãããã
ããŒã¿ãèªããšãã¯ããŒã¿ã®åºåããèå¯ããã
ã¡ãªã¿ã«ãããäžåºŠãå ¥åããŒã¿ã«æ³šç®ããŠã¿ãŠãã ãããååå©çšããå ¥åããŒã¿ã¯å¿ ã2è¡1çµãšãªã£ãŠããŸããããä»åã®ããŒã¿ã¯ã2è¡1çµã®ããŒã¿ã ãã§ãªãã3è¡1çµã®ãã®ããããŸããååã¯äžè¡ãã€èªãã§ããæã«ãå¶æ°è¡ãšå¥æ°è¡ã§ã©ã®ããã«ããŒã¿ãåŠçããããå€ããŠããã®ã§ãããä»åã¯ãå¥ã®ææ³ãå¿ èŠã«ãªããŸããå®éã«åŠçãããããŒã¿ã«ã¯ããã®ããã«æããã«æã£ãŠããªããã®ãå€ããããŸãã
ããŒã¿ãåºåãããšãã§ãããã«æ³šç®ããŠèå¯ãããšè¯ãã§ããããä»åã®ããŒã¿ã§ã¯ããã¿ã€ãã«ãå¯ã¿ã€ãã«ãURLããããã¯ãã¿ã€ãã«ãURLãã®ã©ã¡ããã«ãªã£ãŠããŸããã€ãŸããããŒã¿ã®æ«å°Ÿã«ã¯å¿ ãURLããããšããããšã§ããURLã¯å¿ ããhttp://...ãããhttps://...ããšãªã£ãŠããã®ã§ããããå©çšã§ããŸãã
ããã§ã¯ãããã°ã©ã ãäœã£ãŠãããŸããããç»é¢èšèšã¯ååãšåãã§å ¥åããã¹ãããã¯ã¹ãšåºåããã¹ãããã¯ã¹ã®äºã€ãé 眮ããç»é¢äžéšã®å ¥åããã¯ã¹ãç·šéãããšãç»é¢äžéšã®åºåããã¯ã¹ã«æŽåœ¢åŸã®ããã¹ãã衚瀺ãããããã«ããŸãã
ããã§ã¯ãå ¥åããã¹ãããã¯ã¹ã®ããã¹ããèªãã§ãäžã€ãã€ã®ããŒã¿ã«åå²ãé å圢åŒã§ããŒã¿ãè¿ãããã°ã©ã ã玹ä»ããŸããããã¯ã以äžã®ããã«ãªããŸãã
// å
¥åããŒã¿ãé
å圢åŒã§åŸã
function getInputArray(text) {
// ååŸã®ç©ºçœãããªã --- (*1)
text = text.replace(/^\s+/, '').replace(/\s+$/, '')
// æ¹è¡ã³ãŒããæããŠäžè¡ãã€ã«åè§£ --- (*2)
const lines = text.replace(/\r\n/g, "\n").split("\n")
// ã¿ã€ãã«ãšURLã®çµã«åãã --- (*3)
const result = []
let title = "", subtitle = ""
for (let i in lines) {
let line = lines[i]
// URLãã©ããå€å® --- (*4)
if (line.substr(0, 4) == "http") {
result.push([title, subtitle, line])
// ã¿ã€ãã«ãšãµãã¿ã€ãã«ãåæå
title = ""
subtitle = ""
continue
}
if (title == "") { // --- (*5)
title = line
} else {
subtitle = line
}
}
return result
}
ããã°ã©ã ã®(ïŒ1)ã®éšåã§ã¯ãååŸã®ç©ºçœãé€å»ããŸãã(ïŒ2)ã®éšåã§ã¯æ¹è¡ãLF(\n)ã«çµ±äžããLF(\n)ãçšããŠäžè¡ãã€ã®ããã¹ãã«åå²ããŸãã(ïŒ3)以éã®éšåã§foræ§æãå©çšããŠäžè¡ãã€ããŒã¿ãèªã¿ãªãããããŒã¿ãçµæã衚ãé åresultã«è¿œå ããŠãããŸãã
(ïŒ4)ã®éšåã§ããŒã¿ã®æ«å°Ÿãã©ãããå€å®ããŸããURLè¡ã§ããã°ããã¯åããŒã¿ã®æ«å°Ÿã衚ããŸããããã§ã¯ãè¡é ãhttpã®åæåã§ããã°URLè¡ãšå€æããŠããŸããããå°ãå³å¯ã«å€å®ããã«ã¯ã7æååãåºããŠãhttp://ãããhttps:/ãã§ããã°URLãšããŠãè¯ãããªãšæããŸããããã§ããããURLè¡ã§ããã°ãããããŒã¿ã®åºåããªã®ã§ããã以åã«ååŸããã¿ã€ãã«ããŒã¿ããµãã¿ã€ãã«ããŒã¿ãå«ããŠãé åresultã«è¿œå ããŸãã
ãããŠã(ïŒ5)以éã®éšåã¯URLè¡ã§ãªãå Žåã®åŠçã§ããURLã§ãªããã°ãã¿ã€ãã«ããµãã¿ã€ãã«ãšãªããŸãã(*4)ã§resultã«ããŒã¿ã远å ããŠãã倿°titleãšsubtitleã空ã«ããŸãããã®ããã倿°titleã空ã§ããã°ããã¯ããŒã¿äžè¡ç®ã«ããã¿ã€ãã«ãtitleã空ã§ãªããã°ãããŒã¿ã«è¡ç®ã«ãããµãã¿ã€ãã«ã§ããããšãåãããŸããããã§ãããããã®å€æ°ã«æäœè¡ãèšå®ããŠã次ã®è¡ãèªããšããå ·åã§ãã
ã¡ãã£ãšè€éã§ãããããç®æ¡æžããããšã以äžã®ããã«ãªããŸãã
ã»ïŒ1ïŒå
¥åããŒã¿ãäžè¡ãã€ã«åºåã£ãŠã以äžã®åŠçãç¹°ãè¿ã
ã»ïŒ2ïŒURLè¡ãã©ããå€å®
ã»ã»ïŒ3ïŒURLè¡ãªãããã以åã§èª¿ã¹ãã¿ã€ãã«ãšãµãã¿ã€ãã«ãçµæé
åã«è¿œå ã
ã»ã»ïŒ4ïŒã¿ã€ãã«ãšãµãã¿ã€ãã«ã空ã«ããŠã次ã®è¡ã調ã¹ãããïŒ2ïŒã«æ»ãã
ã»ïŒ5ïŒURLè¡ã§ãªãå Žåãããã¯ã¿ã€ãã«ããµãã¿ã€ãã«ã
ã»ã»ïŒ6ïŒã¿ã€ãã«ã空ãªãããã®è¡ã¯ã¿ã€ãã«ãïŒ2ïŒã«æ»ãã
ã»ã»ïŒ7ïŒã¿ã€ãã«ã空ã§ãªããã°ããã®è¡ã¯ãµãã¿ã€ãã«ãïŒ2ïŒã«æ»ãã
URLãããšã«ã¿ã€ãã«ã«ã¿ã°ä»ããæœãã
次ã«å ¥åããŒã¿ãå ã«æŽåœ¢ããããã¹ããåºåããåŠçãäœã£ãŠãããŸãããããã ããåºåã«éããŠãURLãå ã«ããŠã¿ã°ãä»äžããåŠçãå¿ èŠã«ãªããŸããããã§ãURLã調ã¹ãŠã¿ã°ãä»äžãããã調ã¹ã颿°ãäœã£ãŠã¿ãŸãããã
// URLã«å¿ããŠã¿ã°ãä»äžãã
function getTag(url) {
let tag = ''
if (url.match(/article\/[0-9\-]+\//)) { // --- (*1)
// ã¿ã°ãªã
}
else if (url.match(/article\/[a-zA-Z0-9\-\_]+\//)) { // --- (*2)
tag = 'ãé£èŒã'
}
else if (url.match(/kikaku\//)) { // --- (*3)
tag = 'ãåºåã'
}
return tag
}
ããã§ã¯ãåŒæ°ãšããŠäžããURLãæ£èŠè¡šçŸã§æ¬¡ã ãšèª¿ã¹ãŠãã¿ã°ãä»äžãããã©ãããæ±ºå®ãããšããåŠçã«ãªã£ãŠããŸããæ£èŠè¡šçŸã䜿ããšæååãå®å šäžèŽãããã©ããã調ã¹ãã ãã§ãªããã¢ã«ãã¡ããããæ°åãèšå·ããªã©ãã¿ãŒã³ãçšããŠäžèŽãããã©ããã調ã¹ãããšãã§ããŸãã
ããã°ã©ã ã®(ïŒ1)ã®éšåã§ã¯ãURLãarticle/ã«ç¶ããŠæ°åããã€ãã³ãã©ããã調ã¹ãŸãã(ïŒ2)ã®éšåã§ã¯article/ã«ç¶ããŠã¢ã«ãã¡ããããæ°åããã€ãã³ãã¢ã³ããŒããŒãã調ã¹ãŸãã(ïŒ3)ã§ã¯kikaku/ãšããæååããããã©ããã調ã¹ãŸãããã®ããã«æ£èŠè¡šçŸã䜿ããšæè»œã«æååã®äžèŽã調ã¹ãããšãã§ããã®ã§äŸ¿å©ã§ãã
ããŒã¿ãæŽåœ¢ããŠåºåããã
ãããŸã§ã®éšåã§ããŒã¿æŽåœ¢ããããã®æºåãæŽããŸãããããã§ã¯ãå ¥åããŒã¿ãã¿ã°ãå«ããŠåºåããŸãããã
// ããã¹ãã«å€æ
function convertText(input) {
const result = []
for (let i in input) { // ç¹°ãè¿ãåºå
const line = input[i] // 察象ãšãªãããŒã¿
// åãããããæå³ã®ãã宿°ã«ä»£å
¥
const title = line[0]
const subtitle = line[1]
const url = line[2]
const tag = getTag(url) // ã¿ã°ã調ã¹ã
const no = pad2(parseInt(i) + 1) // çªå·ãäºæ¡å³å¯ã
// åºåæååãäœã --- (*1)
let s = `[${no}] ${tag}${title}\n`
if (subtitle != '') {
s += " " + subtitle + "\n"
}
s += " " + url
result.push(s)
}
return result.join("\n")
}
ãããªãã«è€éãªåŠçãå¿ èŠãªéšåã颿°ãšããŠå®çŸ©ããŠããŸã£ãã®ã§ããã£ãããšããŠããŸããããã§äžç¹ã ãã(ïŒ1)ã«æ³šç®ããŸããããJavaScriptã®æåå`...`ã䜿ããšå€æ°ãæè»œã«æååã®äžã«åã蟌ãããšãã§ããŸããããã¯ãã³ãã¬ãŒãæååãšåŒã°ããæ©èœã§ãJavaScriptã®èŠæ ŒES6以éã§å°å ¥ãããæ°ããæ©èœã§ãã
`...`ã®æååã®äžã«ã${倿°å} ãšæžããšãããã«å€æ°ã®å€ãåã蟌ãã§ãããŸããä»åã®ããã«ãããªãã«è€éãªããŒã¿ãåºåãããå Žåã«ã¯ããã®ãã³ãã¬ãŒãæååã圹ç«ã¡ãŸãã
å®è¡ããŠã¿ãã
ããã§ã¯ããããŸã§äœæããå®å šãªããã°ã©ã ã確èªããŠã¿ãŸããããã¡ãã£ãšé·ããªã£ãã®ã§ããã¡ãã«çœ®ããŠãããŸãã
ãœãŒã¹ã³ãŒããã³ããŒããŠãconvert-text2.htmlããšããååã§ä¿åããããWebãã©ãŠã¶ã«ãã©ãã°ïŒããããããŠå®è¡ããŠã¿ãŸãããã
-

ä»åäœã£ãæŽåœ¢ããã°ã©ã ãç»é¢äžéšã«ããŒã¿ãå ¥åãããšæŽåœ¢æžã¿ã®ããã¹ããåºåãã
æååæŽåœ¢åŠçã®ãŸãšã
ä»åã¯ãç·šééšã§ã¡ã«ãã¬çºè¡ã®ããã«è¡ã£ãŠããå®ååŠçãåŠçããããã°ã©ã ã玹ä»ããŸãããããããå®éãããã«é¡ããåŠçã¯ããããããªãšããã§è¡ãããŠããŸãã
以åãå¥ã®é£èŒã§ããã«äŒŒãå®ååŠçãè¡ãããã°ã©ã ãããªã§ãããã䜿ã£ãŠè§£ããããšããããŸããããã¡ãã§ããããã¯ã4è¡1çµã®ããŒã¿ãæŽåœ¢ãããšããããã°ã©ã ã§ãããã«æ¥ä»é ã«äžŠã³æ¿ãããšãããã®ã§ããããã¡ããè 詊ãã«ã¯ãŽã£ããã®ãé¡ã§ããããåŠçã®æ¹æ³ãã¡ãã£ãšäŒŒãŠããã®ã§åèã«ãªããšæããŸãã
å®éã®ãšãããããããå°ããªããã°ã©ã ã¯ãèªåã§ãµãµããšäœãããæ¥œãããã®ã§ãããããŸã§ãäœæéããããŠè¡ã£ãŠããäœæ¥ããèªäœããã°ã©ã ã§æ°ç§ã§çä»ããããšãã§ãããšãã¯ããªããšãèšããªãéææããããŸããèªè ã®çãããäœãããã®ããã¹ãæŽåœ¢ãå¿ èŠã§ãããææŠããŠã¿ããšè¯ãã§ãããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠããã
