CINXE.COM

DinhDuyThanh - Qiita

<!DOCTYPE html><html lang="ja"><head><meta charset="utf-8" /><title>DinhDuyThanh - Qiita</title><meta content="記事投稿数: 21 Contribution: 285 フォロワー数: 11" name="description" /><meta content="width=device-width,initial-scale=1,shrink-to-fit=no,viewport-fit=cover" name="viewport" /><meta content="#ffffff" name="theme-color" /><meta content="XWpkTG32-_C4joZoJ_UsmDUi-zaH-hcrjF6ZC_FoFbk" name="google-site-verification" /><meta content="telephone=no" name="format-detection" /><link rel="canonical" href="https://qiita.com/DinhDuyThanh" /><link href="/manifest.json" rel="manifest" /><link href="/opensearch.xml" rel="search" title="Qiita" type="application/opensearchdescription+xml" /><link as="script" href="https://www.googletagservices.com/tag/js/gpt.js" rel="preload" /><link href="https://securepubads.g.doubleclick.net" rel="preconnect" /><script async="" src="https://www.googletagservices.com/tag/js/gpt.js"></script><meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="B1pHhZKycREWSVwvIbEQAFfoi3jgjKshhT0E5O9xjkDsZJylhHdwXDsBrnKd9dz_4BuXaVvkWY8aW8wmEpie3g" /><link rel="icon" type="image/x-icon" href="https://cdn.qiita.com/assets/favicons/public/production-c620d3e403342b1022967ba5e3db1aaa.ico" /><link rel="apple-touch-icon" type="image/png" href="https://cdn.qiita.com/assets/favicons/public/apple-touch-icon-ec5ba42a24ae923f16825592efdc356f.png" /><link rel="stylesheet" href="https://cdn.qiita.com/assets/public/style-51eab613545cc06cf86e12192ce027fe.min.css" media="all" /><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,500,0..1,-25..0" media="all" /><script src="https://cdn.qiita.com/assets/public/v3-bundle-348db5a3fbfb0792.min.js" defer="defer"></script><meta name="twitter:card" content="summary_large_image"><meta content="@Qiita" name="twitter:site" /><meta property="og:type" content="article"><meta property="og:title" content="@DinhDuyThanhのマイページ - Qiita"><meta property="og:image" content="https://cdn.qiita.com/assets/qiita-ogp-3b6fcfdd74755a85107071ffc3155898.png"><meta property="og:description" content=""><meta content="https://qiita.com/DinhDuyThanh" property="og:url" /><meta content="Qiita" property="og:site_name" /><meta content="564524038" property="fb:admins" /><link rel="alternate" type="application/atom+xml" title="Atom Feed" href="https://qiita.com/DinhDuyThanh/feed" /><style data-emotion="style-global 1252848">.style-1252848{color:var(--color-disabled);font-size:var(--font-size-body-3);font-weight:600;}</style><style data-emotion="style-global m7rwj7">.style-m7rwj7{-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;display:grid;gap:32px;grid-template-columns:minmax(250px, 360px) minmax(450px, 1fr);margin:24px auto 0;max-width:1200px;padding:0 16px;width:100%;word-break:break-all;}@media (max-width: 769px){.style-m7rwj7{gap:24px;grid-template-columns:1fr;margin:16px auto 0;}}</style><style data-emotion="style-global x9e6ck">.style-x9e6ck{width:100%;display:grid;gap:24px;}@media (max-width: 769px){.style-x9e6ck{width:100%;max-width:100%;margin:0;padding:0;}}</style><style data-emotion="style-global y3rr1o">.style-y3rr1o{background:var(--color-surface);border-radius:8px;padding:24px;position:relative;width:100%;word-break:break-all;}</style><style data-emotion="style-global v2p563">.style-v2p563{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:24px;height:24px;overflow:hidden;width:24px;}</style><style data-emotion="style-global 1m5be6d">.style-1m5be6d{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}</style><style data-emotion="style-global 1jy4oqq">.style-1jy4oqq{border-radius:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden;position:relative;width:72px;height:72px;}.style-1jy4oqq::before{background-color:var(--color-gray0);border-radius:50%;content:"";height:71px;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:71px;}</style><style data-emotion="style-global nr0z5m">.style-nr0z5m{display:block;height:72px;object-fit:contain;position:relative;width:72px;}</style><style data-emotion="style-global s8ei2s">.style-s8ei2s{color:var(--color-highEmphasis);font-size:var(--font-size-subhead-2);font-weight:600;line-height:1.6;margin-top:16px;}</style><style data-emotion="style-global nhj0do">.style-nhj0do{color:var(--color-mediumEmphasis);line-height:1.5;}</style><style data-emotion="style-global nqy5i5">.style-nqy5i5{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:8px;}</style><style data-emotion="style-global tecdps">.style-tecdps{border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:12px;}.style-tecdps:active{background-color:var(--color-surfaceVariant);}@media (hover: hover) and (pointer: fine){.style-tecdps:hover{background-color:var(--color-surfaceVariant);}}</style><style data-emotion="style-global bgepov">.style-bgepov{height:20px;fill:var(--color-github);width:20px;}</style><style data-emotion="style-global 1b1cd5z">.style-1b1cd5z{height:20px;fill:var(--color-twitter);width:20px;}</style><style data-emotion="style-global 16qftz4">.style-16qftz4{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:20px;height:20px;overflow:hidden;width:20px;color:var(--color-mediumEmphasis);}</style><style data-emotion="style-global oxylxi">.style-oxylxi{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:24px;padding:0 24px;width:100%;}</style><style data-emotion="style-global whort5">.style-whort5{-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;color:var(--color-highEmphasis);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:4px;}.style-whort5:active{-webkit-text-decoration:underline;text-decoration:underline;}@media (hover: hover) and (pointer: fine){.style-whort5:hover{-webkit-text-decoration:underline;text-decoration:underline;}}</style><style data-emotion="style-global 1snuvpu">.style-1snuvpu{font-size:var(--font-size-subhead-2);font-weight:600;line-height:1.4;}</style><style data-emotion="style-global 1hpkjug">.style-1hpkjug{color:var(--color-mediumEmphasis);font-size:var(--font-size-body-3);line-height:1.5;}</style><style data-emotion="style-global 80q3hi">.style-80q3hi{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid var(--color-divider);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:8px;padding-top:8px;width:100%;}</style><style data-emotion="style-global 1ljjbul">.style-1ljjbul{color:var(--color-mediumEmphasis);font-size:var(--font-size-body-3);line-height:1.5;text-align:center;width:calc(100% / 3);}</style><style data-emotion="style-global 3rmoy5">.style-3rmoy5{border-radius:8px;cursor:pointer;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:var(--font-size-body-2);font-weight:600;line-height:var(--line-height-body);min-height:34px;min-width:106px;text-align:center;-webkit-transition:.1s ease-out;transition:.1s ease-out;transition-property:background-color,border-color;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;background-color:var(--color-surface);border:1px solid var(--color-grayBorder);color:var(--color-grayText);padding:3px 15px;margin-top:24px;width:100%;}</style><style data-emotion="style-global 178yklu">.style-178yklu{margin-top:24px;}</style><style data-emotion="style-global 18ykp90">.style-18ykp90{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:4px;}.style-18ykp90+.style-18ykp90{margin-top:4px;}</style><style data-emotion="style-global tvshn8">.style-tvshn8{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:16px;height:16px;overflow:hidden;width:16px;color:var(--color-disabled);}</style><style data-emotion="style-global 1afofdy">.style-1afofdy{-webkit-transform:scale(0,0);-moz-transform:scale(0,0);-ms-transform:scale(0,0);transform:scale(0,0);position:absolute;}</style><style data-emotion="style-global 3vn0os">.style-3vn0os{color:var(--color-mediumEmphasis);font-size:12px;line-height:1.5;}</style><style data-emotion="style-global vbtr99">.style-vbtr99{color:var(--color-highEmphasis);font-size:var(--font-size-body-1);font-weight:600;}</style><style data-emotion="style-global embtjk">.style-embtjk{display:grid;grid-template-columns:repeat(auto-fill, 40px);gap:8px;margin-top:8px;}</style><style data-emotion="style-global 255m56">.style-255m56{background-color:var(--color-gray0);border-radius:4px;display:block;height:40px;object-fit:contain;width:40px;}</style><style data-emotion="style-global 1u0hf0k">.style-1u0hf0k{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}</style><style data-emotion="style-global 12rvrc0">.style-12rvrc0{color:var(--color-highEmphasis);font-size:var(--font-size-body-2);margin-top:8px;}</style><style data-emotion="style-global o3sgs5">.style-o3sgs5{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;margin-top:8px;}.style-o3sgs5::after{content:"";line-height:var(--line-height-body-dense);}</style><style data-emotion="style-global 1ieqix9">.style-1ieqix9{background-color:var(--color-surfaceVariant);border-radius:4px;color:var(--color-mediumEmphasis);font-size:var(--font-size-body-2);line-height:var(--line-height-body-dense);padding:0 6px;}.style-1ieqix9:active{background-color:var(--color-gray30);-webkit-text-decoration:none;text-decoration:none;}@media (hover: hover) and (pointer: fine){.style-1ieqix9:hover{background-color:var(--color-gray30);-webkit-text-decoration:none;text-decoration:none;}}</style><style data-emotion="style-global 1uhsie3">.style-1uhsie3{background-color:var(--color-gray100);border-radius:8px;color:var(--color-gray0);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:var(--font-size-body-2);padding:24px;}</style><style data-emotion="style-global 1vg6q84">.style-1vg6q84{font-weight:700;}</style><style data-emotion="style-global 19b1h4s">.style-19b1h4s{display:grid;gap:48px;grid-template-columns:repeat(2, calc((100% - 48px) / 2));margin-top:24px;}@media (max-width: 479px){.style-19b1h4s{gap:24px;grid-template-columns:1fr;}}</style><style data-emotion="style-global dbbqgx">.style-dbbqgx{color:var(--color-yellow40);}.style-dbbqgx span{color:var(--color-gray0);}</style><style data-emotion="style-global 4wfmjh">.style-4wfmjh{margin-top:8px;padding-left:16px;}</style><style data-emotion="style-global 1yt4yhy">.style-1yt4yhy{display:grid;grid-template-columns:1fr 38px;gap:16px;}</style><style data-emotion="style-global 8uhtka">.style-8uhtka{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}</style><style data-emotion="style-global 14aqhkq">.style-14aqhkq{color:var(--color-green40);text-align:right;}</style><style data-emotion="style-global 1dopnvl">.style-1dopnvl{background:var(--color-surface);border-radius:8px;padding:8px 0;width:100%;}</style><style data-emotion="style-global tveszc">.style-tveszc{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid var(--color-divider);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;padding:8px 16px;}</style><style data-emotion="style-global 1xzsjx5">.style-1xzsjx5{font-size:var(--font-size-body-1);font-weight:600;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}</style><style data-emotion="style-global oi42s2">.style-oi42s2:modal{background-color:transparent;border:none;max-height:none;max-width:none;width:100%;height:100dvh;display:grid;place-items:center;padding:16px;}.style-oi42s2::backdrop{background-color:rgb(0 0 0 / .32);}</style><style data-emotion="style-global 1ydvl4f">.style-1ydvl4f{background-color:var(--color-surface);border-radius:8px;color:var(--color-highEmphasis);max-width:600px;max-height:calc(100vh - 160px);overflow-y:auto;padding:24px;width:100%;scrollbar-width:thin;scrollbar-color:var(--scrollbar-color-scrollbarThumb) transparent;height:100%;padding:0;position:relative;}.style-1ydvl4f::-webkit-scrollbar{width:8px;}.style-1ydvl4f::-webkit-scrollbar-track{background:transparent;}.style-1ydvl4f::-webkit-scrollbar-thumb{background:var(--scrollbar-color-scrollbarThumb);border-radius:4px;}</style><style data-emotion="style-global 1tgbnja">.style-1tgbnja{background-color:transparent;color:var(--color-mediumEmphasis);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:8px;position:absolute;right:16px;top:16px;}.style-1tgbnja:active{color:var(--color-highEmphasis);}@media (hover: hover) and (pointer: fine){.style-1tgbnja:hover{color:var(--color-highEmphasis);}}@media (max-width: 769px){.style-1tgbnja{right:8px;top:8px;}}</style><style data-emotion="style-global wc0i85">.style-wc0i85{border:none;display:grid;grid-template-rows:auto minmax(0, 1fr);}</style><style data-emotion="style-global s93jt4">.style-s93jt4{color:var(--color-highEmphasis);font-size:var(--font-size-subhead-2);font-weight:600;line-height:var(--line-height-subhead-dense);padding:24px 56px 24px 24px;}@media (max-width: 769px){.style-s93jt4{padding:16px 48px 16px 16px;}}</style><style data-emotion="style-global 1m2egs7">.style-1m2egs7{border-top:1px solid var(--color-divider);overflow-y:auto;padding:16px 24px;scrollbar-width:thin;scrollbar-color:var(--scrollbar-color-scrollbarThumb) transparent;}.style-1m2egs7::-webkit-scrollbar{width:8px;}.style-1m2egs7::-webkit-scrollbar-track{background:transparent;}.style-1m2egs7::-webkit-scrollbar-thumb{background:var(--scrollbar-color-scrollbarThumb);border-radius:4px;}</style><style data-emotion="style-global a0zrpm">.style-a0zrpm{display:grid;gap:12px;}</style><style data-emotion="style-global eo63uh">.style-eo63uh{border-top:1px solid var(--color-divider);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;padding:8px 24px;}</style><style data-emotion="style-global mtcazu">.style-mtcazu{border-radius:8px;box-sizing:border-box;cursor:pointer;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:14px;font-weight:600;line-height:1.8;margin-bottom:0;min-height:34px;min-width:64px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;-webkit-transition:.1s ease-out;transition:.1s ease-out;transition-property:background-color,border-color;background-color:var(--color-greenContainer);color:var(--color-onContainerText);padding:4px 16px;}.style-mtcazu:disabled{box-shadow:none;cursor:not-allowed;opacity:0.32;}.style-mtcazu:active{background-color:var(--color-greenContainerDim);}@media (hover: hover) and (pointer: fine){.style-mtcazu:hover{background-color:var(--color-greenContainerDim);}}</style><style data-emotion="style-global k21u6n">.style-k21u6n >article:nth-of-type(n+2){border-top:1px solid var(--color-divider);}</style><style data-emotion="style-global nqak7h">.style-nqak7h{cursor:pointer;padding:16px 24px;position:relative;}@media (max-width: 991px){.style-nqak7h{padding:16px;}}</style><style data-emotion="style-global 32d82q">.style-32d82q{bottom:0;left:0;position:absolute;right:0;top:0;}</style><style data-emotion="style-global 70qvj9">.style-70qvj9{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}</style><style data-emotion="style-global d39wln">.style-d39wln{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--color-highEmphasis);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;z-index:1;}@media (hover: hover) and (pointer: fine){.style-d39wln:hover,.style-d39wln:active{-webkit-text-decoration:underline;text-decoration:underline;}.style-d39wln:hover >img,.style-d39wln:active >img{-webkit-filter:brightness(0.8);filter:brightness(0.8);-webkit-transition:.1s ease-out;transition:.1s ease-out;}}@media (hover: none) and (any-pointer: coarse){.style-d39wln:active{-webkit-text-decoration:underline;text-decoration:underline;}.style-d39wln:active >img{-webkit-filter:brightness(0.8);filter:brightness(0.8);-webkit-transition:.1s ease-out;transition:.1s ease-out;}}</style><style data-emotion="style-global 135heiq">.style-135heiq{border-radius:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden;position:relative;width:32px;height:32px;}.style-135heiq::before{background-color:var(--color-gray0);border-radius:50%;content:"";height:31px;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:31px;}</style><style data-emotion="style-global 1h6ertn">.style-1h6ertn{display:block;height:32px;object-fit:contain;position:relative;width:32px;}</style><style data-emotion="style-global c45axb">.style-c45axb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;line-height:var(--line-height-body-dense);font-size:var(--font-size-body-2);margin-left:8px;}</style><style data-emotion="style-global cm95co">.style-cm95co{display:grid;gap:4px;grid-template-columns:repeat(3, auto);line-height:var(--line-height-body-dense);max-width:100%;position:relative;z-index:1;}</style><style data-emotion="style-global 6i83bp">.style-6i83bp{color:var(--color-highEmphasis);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}</style><style data-emotion="style-global 15fzge">.style-15fzge{margin-left:4px;}</style><style data-emotion="style-global hl9vr4">.style-hl9vr4{color:var(--color-mediumEmphasis);font-size:var(--font-size-body-3);}</style><style data-emotion="style-global 1t4fpk1">.style-1t4fpk1{margin-top:8px;margin-left:40px;position:relative;z-index:1;}@media (max-width: 479px){.style-1t4fpk1{margin-left:0;}}</style><style data-emotion="style-global 1qb6j16">.style-1qb6j16{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden;font-size:var(--font-size-subhead-1);font-weight:600;color:var(--color-highEmphasis);line-height:var(--line-height-subhead-dense);word-break:break-all;}.style-1qb6j16:visited{color:var(--color-grayVisitedText);}</style><style data-emotion="style-global n1j2x6">.style-n1j2x6{line-height:var(--line-height-body-dense);margin-top:8px;margin-left:40px;}@media (max-width: 479px){.style-n1j2x6{margin-left:0;}}</style><style data-emotion="style-global gnec1p">.style-gnec1p{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;line-height:1.5;}</style><style data-emotion="style-global mp1hhj">.style-mp1hhj{background-color:var(--color-surfaceVariant);border-radius:4px;color:var(--color-mediumEmphasis);display:block;font-size:var(--font-size-body-2);line-height:var(--line-height-body-dense);padding:0 6px;position:relative;z-index:1;}.style-mp1hhj:active{-webkit-text-decoration:none;text-decoration:none;background-color:var(--color-surfaceVariantDim);}@media (hover: hover) and (pointer: fine){.style-mp1hhj:hover{-webkit-text-decoration:none;text-decoration:none;background-color:var(--color-surfaceVariantDim);}}</style><style data-emotion="style-global 1fvis2l">.style-1fvis2l{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-top:4px;}</style><style data-emotion="style-global fv2drl">.style-fv2drl{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:20px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:20px;}</style><style data-emotion="style-global 1iqsurv">.style-1iqsurv{display:inline-block;fill:var(--color-mediumEmphasis);height:16px;vertical-align:middle;width:16px;}</style><style data-emotion="style-global 1whzdj5">.style-1whzdj5{font-size:var(--font-size-body-2);color:var(--color-highEmphasis);margin-left:2px;}</style><style data-emotion="style-global 17ks4wf">.style-17ks4wf{position:absolute;right:24px;bottom:16px;}@media (max-width: 769px){.style-17ks4wf{right:16px;}}</style><style data-emotion="style-global 19mrtba">.style-19mrtba{display:inline-block;fill:var(--color-mediumEmphasis);height:32px;width:32px;}</style><style data-emotion="style-global acjjku">.style-acjjku{scroll-margin-top:8px;}</style><style data-emotion="style-global 22pe9i">.style-22pe9i{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}</style><style data-emotion="style-global ghyrwq">.style-ghyrwq{background-color:var(--color-greenContainer);border-radius:24px;color:var(--color-onContainerText);display:inline-block;font-size:var(--font-size-body-2);font-weight:600;padding:4px 16px;}.style-ghyrwq:hover,.style-ghyrwq:active{-webkit-text-decoration:none;text-decoration:none;}.style-ghyrwq:active{background-color:var(--color-greenContainer);color:var(--color-onContainerText);}@media (hover: hover) and (pointer: fine){.style-ghyrwq:hover{background-color:var(--color-greenContainer);color:var(--color-onContainerText);}}</style><style data-emotion="style-global n43zm8">.style-n43zm8{background-color:transparent;border-radius:24px;color:var(--color-mediumEmphasis);display:inline-block;font-size:var(--font-size-body-2);font-weight:600;padding:4px 16px;}.style-n43zm8:hover,.style-n43zm8:active{-webkit-text-decoration:none;text-decoration:none;}.style-n43zm8:active{background-color:var(--color-surfaceVariant);color:var(--color-mediumEmphasis);}@media (hover: hover) and (pointer: fine){.style-n43zm8:hover{background-color:var(--color-surfaceVariant);color:var(--color-mediumEmphasis);}}</style><style data-emotion="style-global z6198j">.style-z6198j{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--color-mediumEmphasis);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-weight:600;padding-bottom:1px;}.style-z6198j:hover,.style-z6198j:active{-webkit-text-decoration:none;text-decoration:none;}.style-z6198j:active:hover{border-bottom:1px solid var(--color-mediumEmphasis);padding-bottom:0;}@media (hover: hover) and (pointer: fine){.style-z6198j:hover{border-bottom:1px solid var(--color-mediumEmphasis);padding-bottom:0;}}</style><style data-emotion="style-global 1jvcm2e">.style-1jvcm2e{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:16px;height:16px;overflow:hidden;width:16px;}</style><style data-emotion="style-global 1cf27l9">.style-1cf27l9{background-color:var(--color-surface);border-radius:8px;margin-top:16px;padding:8px 0;}</style><style data-emotion="style-global 1bk9n1v">.style-1bk9n1v{border-bottom:1px solid var(--color-divider);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow-x:auto;padding:0 16px;scrollbar-width:thin;scrollbar-color:var(--scrollbar-color-scrollbarThumb) transparent;}.style-1bk9n1v::-webkit-scrollbar{height:8px;}.style-1bk9n1v::-webkit-scrollbar-track{background:transparent;}.style-1bk9n1v::-webkit-scrollbar-thumb{background:var(--scrollbar-color-scrollbarThumb);border-radius:4px;}</style><style data-emotion="style-global 86izkk">.style-86izkk{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:var(--color-highEmphasis);font-size:var(--font-size-body-2);font-weight:600;padding:8px 16px;position:relative;text-align:center;}.style-86izkk:hover,.style-86izkk:active{-webkit-text-decoration:none;text-decoration:none;}.style-86izkk:active{color:var(--color-highEmphasis);}@media (hover: hover) and (pointer: fine){.style-86izkk:hover{color:var(--color-highEmphasis);}}.style-86izkk:after{border-radius:4px 4px 0 0;background-color:var(--color-greenContainer);bottom:0;content:"";height:4px;left:0;position:absolute;right:0;}</style><style data-emotion="style-global 8trra4">.style-8trra4{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:var(--color-mediumEmphasis);font-size:var(--font-size-body-2);font-weight:600;padding:8px 16px;position:relative;text-align:center;}.style-8trra4:hover,.style-8trra4:active{-webkit-text-decoration:none;text-decoration:none;}.style-8trra4:active{color:var(--color-highEmphasis);}@media (hover: hover) and (pointer: fine){.style-8trra4:hover{color:var(--color-highEmphasis);}}</style><style data-emotion="style jbbmo6 bm9z7z qq6zxg dwyaab">.style-jbbmo6{position:absolute;top:16px;right:16px;}.style-bm9z7z{background:transparent;color:var(--color-mediumEmphasis);padding:8px;display:grid;place-items:center;}.style-bm9z7z:hover{color:var(--color-highEmphasis);}.style-qq6zxg{display:grid;grid-template-rows:minmax(0, 1fr) auto;height:100%;}.style-dwyaab{background-color:transparent;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;z-index:1;}.style-dwyaab:active::before{content:"";height:40px;position:absolute;width:40px;background-color:var(--color-surfaceVariant);border-radius:50%;top:-4px;left:-4px;z-index:-1;}@media (hover: hover) and (pointer: fine){.style-dwyaab:hover::before{content:"";height:40px;position:absolute;width:40px;background-color:var(--color-surfaceVariant);border-radius:50%;top:-4px;left:-4px;z-index:-1;}}</style><style data-emotion="style-global 1736035">.style-1736035{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:var(--font-size-body-2);font-weight:600;list-style:none;max-width:1656px;overflow-x:auto;padding:0 32px;width:100%;scrollbar-width:thin;scrollbar-color:var(--scrollbar-color-scrollbarThumb) transparent;}.style-1736035::-webkit-scrollbar{height:8px;}.style-1736035::-webkit-scrollbar-track{background:transparent;}.style-1736035::-webkit-scrollbar-thumb{background:var(--scrollbar-color-scrollbarThumb);border-radius:4px;}@media (max-width: 769px){.style-1736035{padding:0 16px;}}</style><style data-emotion="style-global 1cnt4b8">.style-1cnt4b8{background-color:var(--color-surface);}</style><style data-emotion="style-global ymuwam">.style-ymuwam{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin:auto;max-width:1656px;padding:8px 32px 0;width:100%;}@media (max-width: 769px){.style-ymuwam{padding:8px 16px 0;}}</style><style data-emotion="style-global fv3lde">.style-fv3lde{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}</style><style data-emotion="style-global 1etvg7j">.style-1etvg7j{background-color:var(--color-qiitaGreen);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:6px 10px;border-radius:4px;}.style-1etvg7j >svg{fill:var(--color-gray0);height:18px;}</style><style data-emotion="style-global 68a7fl">.style-68a7fl{margin-right:12px;position:relative;width:320px;}@media (max-width: 991px){.style-68a7fl{display:none;}}</style><style data-emotion="style-global 18lpml7">.style-18lpml7{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:16px;height:16px;overflow:hidden;width:16px;color:var(--color-mediumEmphasis);left:8px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}</style><style data-emotion="style-global 1gmi769">.style-1gmi769{background-color:var(--color-surfaceVariant);border:none;border-radius:8px;color:var(--color-highEmphasis);font-size:var(--font-size-body-1);line-height:var(--line-height-body);padding:4px 8px 4px 32px;width:100%;}.style-1gmi769::-webkit-input-placeholder{color:var(--color-disabled);}.style-1gmi769::-moz-placeholder{color:var(--color-disabled);}.style-1gmi769:-ms-input-placeholder{color:var(--color-disabled);}.style-1gmi769::placeholder{color:var(--color-disabled);}.style-1gmi769::-webkit-search-cancel-button{-webkit-appearance:none;}</style><style data-emotion="style-global 17ja8a3">.style-17ja8a3{display:none;}@media (max-width: 991px){.style-17ja8a3{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:inherit;color:var(--color-mediumEmphasis);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:var(--font-size-body-1);-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;}}.style-17ja8a3:active{color:var(--color-highEmphasis);}@media (hover: hover) and (pointer: fine){.style-17ja8a3:hover{color:var(--color-highEmphasis);}}</style><style data-emotion="style-global v2p563">.style-v2p563{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:24px;height:24px;overflow:hidden;width:24px;}</style><style data-emotion="style-global 1afofdy">.style-1afofdy{-webkit-transform:scale(0,0);-moz-transform:scale(0,0);-ms-transform:scale(0,0);transform:scale(0,0);position:absolute;}</style><style data-emotion="style-global 1sn73cs">.style-1sn73cs{border-radius:8px;box-sizing:border-box;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:14px;font-weight:600;line-height:1.8;min-height:34px;min-width:64px;opacity:1;pointer-events:auto;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;-webkit-transition:.1s ease-out;transition:.1s ease-out;transition-property:background-color,border-color;background-color:var(--color-surface);border:1px solid var(--color-greenBorder);color:var(--color-greenText);padding:3px 15px;margin-left:4px;}.style-1sn73cs:hover{-webkit-text-decoration:none;text-decoration:none;}.style-1sn73cs:active{background-color:var(--color-background);}@media (hover: hover) and (pointer: fine){.style-1sn73cs:hover{background-color:var(--color-background);}}</style><style data-emotion="style-global 1r635es">.style-1r635es{border-radius:8px;box-sizing:border-box;display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:14px;font-weight:600;line-height:1.8;min-height:34px;min-width:64px;opacity:1;pointer-events:auto;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap;-webkit-transition:.1s ease-out;transition:.1s ease-out;transition-property:background-color,border-color;background-color:var(--color-greenContainer);color:var(--color-onContainerText);padding:4px 16px;margin-left:8px;}.style-1r635es:hover{-webkit-text-decoration:none;text-decoration:none;}.style-1r635es:active{background-color:var(--color-greenContainerDim);}@media (hover: hover) and (pointer: fine){.style-1r635es:hover{background-color:var(--color-greenContainerDim);}}</style><style data-emotion="style-global o5vjsc">.style-o5vjsc{display:none;margin:8px auto 0;width:calc(100vw - 32px);position:relative;}</style><style data-emotion="style-global 1l4w6pd">.style-1l4w6pd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}</style><style data-emotion="style-global 1ygoan4">.style-1ygoan4{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--color-mediumEmphasis);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;white-space:nowrap;padding:4px 12px;margin:4px 0;}.style-1ygoan4:hover{background-color:var(--color-surfaceVariant);border-radius:4px;color:var(--color-highEmphasis);-webkit-text-decoration:none;text-decoration:none;}</style><style data-emotion="style-global 1o3zxqp">.style-1o3zxqp{display:inline-block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;font-size:16px;height:16px;overflow:hidden;width:16px;margin-left:4px;}</style><style data-emotion="style 1qkvt8e">.style-1qkvt8e{margin-right:2px;}</style><style data-emotion="style "></style><style data-emotion="style-global 1geho0x">.style-1geho0x{color:var(--color-gray0);background-color:var(--color-gray90);display:grid;grid-template-columns:minmax(0, 1592px);-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:64px;padding:48px 32px;width:100%;}@media (max-width: 991px){.style-1geho0x{padding-inline:16px;}}</style><style data-emotion="style-global 1vesoht">.style-1vesoht{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 1199px){.style-1vesoht{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}</style><style data-emotion="style-global 1xygyrj">.style-1xygyrj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-right:48px;}</style><style data-emotion="style-global j7qwjs">.style-j7qwjs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}</style><style data-emotion="style-global 1g0k1wk">.style-1g0k1wk{fill:var(--color-gray0);}</style><style data-emotion="style-global 754ift">.style-754ift{font-size:var(--font-size-body-2);margin-top:16px;}</style><style data-emotion="style-global zsz8fb">.style-zsz8fb{display:block;margin-top:16px;}</style><style data-emotion="style-global 1efditc">.style-1efditc{border-radius:8px;display:block;}</style><style data-emotion="style-global 120vwzo">.style-120vwzo{font-size:var(--font-size-body-3);}@media (max-width: 1199px){.style-120vwzo{margin-top:24px;}}</style><style data-emotion="style-global 15fzge">.style-15fzge{margin-left:4px;}</style><style data-emotion="style-global 16bbk6m">.style-16bbk6m{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:48px;}@media (max-width: 1199px){.style-16bbk6m{gap:32px;margin-top:48px;}}@media (max-width: 769px){.style-16bbk6m{gap:24px;}}@media (max-width: 479px){.style-16bbk6m{-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}}</style><style data-emotion="style-global u4ybgy">.style-u4ybgy{width:160px;}</style><style data-emotion="style-global 35ezg3">.style-35ezg3{font-weight:600;}</style><style data-emotion="style-global 1fhgjcy">.style-1fhgjcy{margin-top:4px;}</style><style data-emotion="style-global ah54os">.style-ah54os{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--color-gray0);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:var(--font-size-body-2);padding-top:4px;padding-bottom:4px;}</style><style data-emotion="style-global ox3ag9">.style-ox3ag9{height:14px;fill:currentColor;width:14px;}</style><style data-emotion="style "></style><link as="style" crossorigin="anonymous" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha512-SfTiTlX6kk+qitfevl/7LibUOeJWlt9rbyDn92a1DqWOw9vWG2MFoays0sgObmWazO5BQPiFucnnEAjpAB+/Sw==" onload="this.onload=null;this.rel=&#39;stylesheet&#39;" referrerpolicy="no-referrer" rel="preload" /><noscript><link crossorigin="anonymous" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha512-SfTiTlX6kk+qitfevl/7LibUOeJWlt9rbyDn92a1DqWOw9vWG2MFoays0sgObmWazO5BQPiFucnnEAjpAB+/Sw==" referrerpolicy="no-referrer" rel="stylesheet" /></noscript></head><body><div class="allWrapper"><div id="GlobalHeader-react-component-1dfe546d-9b47-4db1-b161-f7788ac5f5ea"><div class="style-1cnt4b8"><header><div class="style-ymuwam"><div class="style-fv3lde"><a href="/" aria-label="Qiita" class="style-1etvg7j"><svg viewBox="0 0 426.57 130" aria-hidden="true"><circle cx="167.08" cy="21.4" r="12.28"></circle><path d="M250.81 29.66h23.48v18.9h-23.48z"></path><path d="M300.76 105.26a22.23 22.23 0 01-6.26-.86 12.68 12.68 0 01-5.17-3 14.41 14.41 0 01-3.56-5.76 28 28 0 01-1.3-9.22V48.56h29.61v-18.9h-29.52V3.29h-20.17v83.34q0 11.16 2.83 18.27a27.71 27.71 0 007.7 11.2 26.86 26.86 0 0011.43 5.62 47.56 47.56 0 0012.34 1.53h15.16v-18zM0 61.7a58.6 58.6 0 015-24.21A62.26 62.26 0 0118.73 17.9 63.72 63.72 0 0139 4.78 64.93 64.93 0 0164 0a65 65 0 0124.85 4.78 64.24 64.24 0 0120.38 13.12A62 62 0 01123 37.49a58.6 58.6 0 015 24.21 58.34 58.34 0 01-4 21.46 62.8 62.8 0 01-10.91 18.16l11.1 11.1a10.3 10.3 0 010 14.52 10.29 10.29 0 01-14.64 0l-12.22-12.41a65 65 0 01-15.78 6.65 66.32 66.32 0 01-17.55 2.3 64.63 64.63 0 01-45.23-18A62.82 62.82 0 015 85.81 58.3 58.3 0 010 61.7zm21.64.08a43.13 43.13 0 0012.42 30.63 42.23 42.23 0 0013.43 9.09A41.31 41.31 0 0064 104.8a42 42 0 0030-12.39 42.37 42.37 0 009-13.64 43.43 43.43 0 003.3-17 43.77 43.77 0 00-3.3-17A41.7 41.7 0 0080.55 22 41.78 41.78 0 0064 18.68 41.31 41.31 0 0047.49 22a42.37 42.37 0 00-13.43 9.08 43.37 43.37 0 00-12.42 30.7zM331.89 78a47.59 47.59 0 013.3-17.73 43.22 43.22 0 019.34-14.47A44.25 44.25 0 01359 36a47.82 47.82 0 0118.81-3.58 42.72 42.72 0 019.26 1 46.5 46.5 0 018.22 2.58 40 40 0 017 3.84 44.39 44.39 0 015.71 4.63l1.22-9.47h17.35v85.83h-17.35l-1.17-9.42a42.54 42.54 0 01-5.84 4.67 43.11 43.11 0 01-7 3.79 44.86 44.86 0 01-8.17 2.59 43 43 0 01-9.22 1A47.94 47.94 0 01359 119.9a43.3 43.3 0 01-14.47-9.71 44.17 44.17 0 01-9.34-14.47 47 47 0 01-3.3-17.72zm20.27-.08a29.16 29.16 0 002.17 11.34 27 27 0 005.92 8.88 26.69 26.69 0 008.76 5.76 29.19 29.19 0 0021.44 0 26.11 26.11 0 008.72-5.76 27.57 27.57 0 005.88-8.84 29 29 0 002.16-11.38 28.62 28.62 0 00-2.16-11.22 26.57 26.57 0 00-5.93-8.8 27.68 27.68 0 00-19.51-7.9 28.29 28.29 0 00-10.77 2.05 26.19 26.19 0 00-8.71 5.75 27.08 27.08 0 00-5.84 8.8 28.94 28.94 0 00-2.13 11.31zm-194.97-30.5h19.78v73.54h-19.78zm49.25 0h19.78v73.54h-19.78z"></path><circle cx="216.33" cy="21.4" r="12.28"></circle></svg></a></div><div class="style-fv3lde"><form action="/search" method="get" role="search" aria-label="Search" class="style-68a7fl"><span class="material-symbols-outlined style-18lpml7" aria-hidden="true">search</span><input type="search" autoComplete="off" placeholder="Search" name="q" required="" class="style-1gmi769" value=""/></form><button class="style-17ja8a3"><span class="material-symbols-outlined style-v2p563" aria-hidden="true">search</span><span class="style-1afofdy">Search</span></button><a href="/login?callback_action=login_or_signup&amp;redirect_to=%2FDinhDuyThanh&amp;realm=qiita" rel="nofollow" class="style-1sn73cs">Login</a><a href="/signup?callback_action=login_or_signup&amp;redirect_to=%2FDinhDuyThanh&amp;realm=qiita" rel="nofollow" class="style-1r635es">Signup</a></div></div><form action="/search" method="get" role="search" aria-label="Search" class="style-o5vjsc"><span class="material-symbols-outlined style-18lpml7" aria-hidden="true">search</span><input type="text" autoComplete="off" placeholder="Search" name="q" required="" class="style-1gmi769" value=""/></form></header><nav aria-label="Global" class="style-1l4w6pd"><ol class="style-1736035"><li><a href="/" class="style-1ygoan4">Trend</a></li><li><a href="/question-feed" class="style-1ygoan4">Question</a></li><li><a href="/official-campaigns/conference/2025?utm_source=qiita&amp;utm_medium=referral&amp;utm_campaign=global_navigation" class="style-1ygoan4"><svg class="style-1qkvt8e" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" width="15" height="15"><path d="M4.38196 0.5C3.18719 0.5 2.09149 0.990204 1.30469 1.77803C0.517886 2.56586 0.0283203 3.66298 0.0283203 4.85931C0.0283203 6.02646 0.482917 7.11775 1.30469 7.94643C2.12646 8.76927 3.22216 9.22446 4.38196 9.22446C4.83073 9.22446 5.27367 9.15443 5.70495 9.0202C6.21783 8.8568 6.77734 8.90349 7.25525 9.16026C7.65739 9.38202 8.16444 9.30032 8.49082 8.97935C8.81719 8.65839 8.89296 8.14484 8.67149 7.74217C8.41505 7.26364 8.36843 6.70341 8.53161 6.18986C8.67149 5.76385 8.7356 5.3145 8.7356 4.86515C8.7356 3.69799 8.281 2.60671 7.45923 1.78387C6.63746 0.955189 5.54759 0.5 4.38196 0.5Z" fill="#55C500"></path><path d="M10.5256 5.74638C9.97772 5.62966 9.4357 5.97981 9.31914 6.52837C9.20258 7.07693 9.55227 7.61965 10.1001 7.73637C11.1958 7.9698 11.9884 8.95021 11.9884 10.0707C11.9884 10.7359 11.7203 11.3312 11.2891 11.763C10.8578 12.1949 10.2633 12.4633 9.59889 12.4633C8.47988 12.4633 7.49492 11.6697 7.26763 10.5725C7.15106 10.024 6.60904 9.67384 6.0612 9.79056C5.51335 9.90727 5.16366 10.45 5.28022 10.9986C5.71151 13.0294 7.52989 14.5 9.60472 14.5C10.8228 14.5 11.9302 14.004 12.7286 13.1986C13.5271 12.3933 14.0283 11.2903 14.0283 10.0707C14.0283 7.99314 12.5538 6.17239 10.5314 5.74054L10.5256 5.74638Z" fill="var(--color-highEmphasis)"></path></svg>Qiita Conference</a></li><li><a href="/official-events" class="style-1ygoan4">Official Event</a></li><li><a href="/official-columns" target="_blank" class="style-1ygoan4">Official Column<span class="material-symbols-outlined style-1o3zxqp" aria-hidden="true">open_in_new</span></a></li><li><a href="/organizations" class="style-1ygoan4">Organization</a></li></ol></nav></div></div> <script type="application/json" class="js-react-on-rails-component" data-component-name="GlobalHeader" data-dom-id="GlobalHeader-react-component-1dfe546d-9b47-4db1-b161-f7788ac5f5ea">{"isHideGlobalNavigation":false}</script> <div id="AlertMessage-react-component-6b2ef383-2bb3-4182-9ddf-3e32745b63b9"></div> <script type="application/json" class="js-react-on-rails-component" data-component-name="AlertMessage" data-dom-id="AlertMessage-react-component-6b2ef383-2bb3-4182-9ddf-3e32745b63b9">{"isShowTfaDownloadAlert":null}</script> <div class="mainWrapper"><script type="application/json" id="js-react-on-rails-context">{"railsEnv":"production","inMailer":false,"i18nLocale":"en","i18nDefaultLocale":"en","rorVersion":"13.4.0","rorPro":false,"href":"https://qiita.com/DinhDuyThanh","location":"/DinhDuyThanh","scheme":"https","host":"qiita.com","port":null,"pathname":"/DinhDuyThanh","search":null,"httpAcceptLanguage":null,"actionPath":"public/users#show","settings":{"analyticsTrackingId":"G-KEVS5DBRVN","tagManagerId":"GTM-W9W5TX4","assetsMap":{},"csrfToken":"hJpIlnbApsAhzOgyWY3J5gIMBkIMaNqThxz4v-5wjsZvpJO2YAWnjQyEGm_lyQUZtf8aU7cAKD0YejB9E5meWA","locale":"en","pushOne":{"accessToken":"4bc4bb057a0601d388a7b9e499ca2307e9eb4fc172804e310c59e511d7cac356","dialogImageUrl":"//cdn.qiita.com/assets/public/push_notification/image-qiitan-572179a3bbde375850422ea48b2b6272.png"},"textlint":{"workerUrl":"//cdn.qiita.com/assets/public/textlint-worker-5ff44d714260eb7f2792faf979577c4b.min.js"},"datetimeParam":null},"currentUser":null,"isLoggedIn":false,"isQiitaConference2025BeingHeld":true,"isQiitaConference2025Closed":false,"isQiitaConference2025Registration":true,"isQiitaConference2025Published":true,"recaptchaSiteKey":"6LdDE6gpAAAAANCGOJu9_xiI5Z-txJxHCz8uBP8Y","errorIconPath":"//cdn.qiita.com/assets/icons/large/missing-profile-image-828ed5829a93fbb35746a6c0f7c8107e.png","additionalParams":{"query_parameters":{},"path_parameters":{"selected_item_list":"article_posted","controller":"public/users","action":"show","id":"DinhDuyThanh"},"request_id":"afc3235c-35d1-4452-a8a2-04de612d0ac8","user_id":null},"realms":[{"humanName":"Qiita","isCurrentRealm":true,"isQiita":true,"isQiitaTeam":false,"loggedInUser":null,"teamId":null,"url":"https://qiita.com/"}],"adventCalendar":{"currentMonth":4,"isAdventCalendarBeingHeld":false,"isCalendarCreatable":false,"isLatestHeldYear":true,"isPreRegistering":false,"isRankingBeingHeld":false,"isSubscribable":false,"year":2024,"years":[2024,2023,2022,2021,2020,2019,2018,2017,2016,2015,2014,2013,2012,2011]},"serverSide":false}</script> <div id="UserMainPage-react-component-f4100617-fd36-4063-a387-cb7636bf9a83"><div class="style-m7rwj7"><div class="style-x9e6ck"><div class="style-y3rr1o"><div class="style-jbbmo6"><button aria-haspopup="dialog" aria-expanded="false" aria-controls="DropdownMenu" aria-label="Open menu" class="style-bm9z7z" type="button"><span class="material-symbols-outlined style-v2p563" aria-hidden="true">more_horiz</span></button></div><div class="style-1m5be6d"><div class="style-1jy4oqq"><img alt="" height="72" loading="lazy" src="https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0&amp;auto=compress%2Cformat&amp;lossless=0&amp;w=128&amp;s=505cedc5c2e360e761a97159c13532d3" width="72" class="style-nr0z5m"/></div><h1 class="style-s8ei2s">Dinh Duy Thanh</h1><p class="style-nhj0do">@DinhDuyThanh</p><div class="style-nqy5i5"><a href="https://github.com/thanhbk55" target="_blank" rel="noopener" aria-label="GitHub" class="style-tecdps"><svg class="style-bgepov" height="20" viewBox="0 0 20 20" width="20" aria-hidden="true"><path d="m10 0c-5.51 0-9.97 4.46-9.97 9.97 0 4.41 2.86 8.14 6.82 9.46.5.09.68-.22.68-.48 0-.24 0-.86-.01-1.7-2.77.6-3.36-1.34-3.36-1.34-.45-1.15-1.11-1.46-1.11-1.46-.91-.62.07-.61.07-.61 1 .07 1.53 1.03 1.53 1.03.89 1.52 2.33 1.08 2.9.83.09-.64.35-1.08.63-1.33-2.21-.25-4.54-1.11-4.54-4.93 0-1.09.39-1.98 1.03-2.68-.1-.25-.44-1.27.1-2.64 0 0 .84-.27 2.74 1.02.8-.22 1.65-.33 2.5-.34.85 0 1.7.11 2.5.34 1.9-1.29 2.74-1.02 2.74-1.02.54 1.37.2 2.39.1 2.64.64.7 1.02 1.59 1.02 2.68 0 3.83-2.33 4.67-4.55 4.92.36.31.68.92.68 1.85 0 1.33-.01 2.41-.01 2.74 0 .27.18.58.69.48 3.96-1.32 6.81-5.06 6.81-9.46-.02-5.51-4.48-9.97-9.99-9.97z"></path></svg></a><a href="https://twitter.com/dinh_duy_thanh" target="_blank" rel="noopener" aria-label="X(Twitter)" class="style-tecdps"><svg class="style-1b1cd5z" viewBox="0 0 20 20" aria-hidden="true"><path d="m11.68 8.62 6.55-7.62h-1.55l-5.69 6.62-4.55-6.62h-5.25l6.88 10.01-6.88 7.99h1.55l6.01-6.99 4.8 6.99h5.24l-7.13-10.38zm-2.13 2.47-.7-1-5.54-7.92h2.39l4.47 6.4.7 1 5.82 8.32h-2.39l-4.75-6.79z"></path></svg></a><a href="/DinhDuyThanh/feed" target="_blank" rel="noopener" aria-label="RSS" class="style-tecdps"><span class="material-symbols-outlined style-16qftz4" aria-hidden="true">rss_feed</span></a></div></div><div class="style-oxylxi"><a href="/DinhDuyThanh/contributions" class="style-whort5"><span class="style-1snuvpu">285</span><span class="style-1hpkjug">Contributions</span></a><div class="style-80q3hi"><a href="/DinhDuyThanh" class="style-1ljjbul">21<br/>Posts</a><a href="/DinhDuyThanh/following_users" class="style-1ljjbul">12<br/>Followees</a><a href="/DinhDuyThanh/followers" class="style-1ljjbul">11<br/>Followers</a></div></div><button class="style-3rmoy5">Follow</button><div class="style-178yklu"><div class="style-18ykp90"><span class="material-symbols-outlined style-tvshn8" aria-hidden="true">work</span><span class="style-1afofdy">Organization</span><p class="style-3vn0os">Basic Inc</p></div></div></div><div><h2 class="style-vbtr99">Participating Organizations<!-- -->(1)</h2><div class="style-embtjk"><a href="/organizations/basicinc"><img alt="basicinc" height="40" src="https://qiita-organization-images.imgix.net/https%3A%2F%2Fs3-ap-northeast-1.amazonaws.com%2Fqiita-organization-image%2F6534ac0049b0bbb7f0c7e7e2bef19af26460dff1%2Foriginal.jpg%3F1576123577?ixlib=rb-4.0.0&amp;auto=compress%2Cformat&amp;s=44ba5e8624dbba7b8d59a5ea38b26fa9" width="40" class="style-255m56"/></a></div></div><div><h2 class="style-1u0hf0k"><a href="/DinhDuyThanh/following_organizations" class="style-vbtr99">Following Organizations</a></h2><p class="style-12rvrc0">No Organizations you are following</p></div><div><h2 class="style-1u0hf0k"><a href="/DinhDuyThanh/following_tags" class="style-vbtr99">Following tags<!-- -->(1)</a><a href="/DinhDuyThanh/following_tags" class="style-1252848">See all</a></h2><div class="style-o3sgs5"><a href="/tags/node.js" class="style-1ieqix9">Node.js</a></div></div></div><div class="style-x9e6ck"><div class="style-1uhsie3"><h2 class="style-1vg6q84">$ analyze @DinhDuyThanh</h2><div class="style-19b1h4s"><div><span class="style-dbbqgx">posted articles<span>:</span></span><ul class="style-4wfmjh"><li class="style-1yt4yhy"><span class="style-8uhtka">React:</span><span class="style-14aqhkq">24%</span></li><li class="style-1yt4yhy"><span class="style-8uhtka">JavaScript:</span><span class="style-14aqhkq">14%</span></li><li class="style-1yt4yhy"><span class="style-8uhtka">redux:</span><span class="style-14aqhkq">14%</span></li><li class="style-1yt4yhy"><span class="style-8uhtka">CKEditor:</span><span class="style-14aqhkq">10%</span></li><li class="style-1yt4yhy"><span class="style-8uhtka">script:</span><span class="style-14aqhkq">10%</span></li></ul></div><div><span class="style-dbbqgx">answered questions<span>:</span></span><ul class="style-4wfmjh"><li>No data</li></ul></div></div></div><div class="style-1dopnvl"><div class="style-tveszc"><span class="material-symbols-outlined style-v2p563" aria-hidden="true">push_pin</span><h2 class="style-1xzsjx5">Pickup Articles</h2><dialog aria-modal="true" aria-labelledby="PickupArticleFormModal-label" class="style-oi42s2"><div class="style-1ydvl4f"><button aria-label="Close" class="style-1tgbnja"><span class="material-symbols-outlined style-v2p563" aria-hidden="true">close</span></button><form action="/DinhDuyThanh/update_pickup_articles" method="post" class="style-qq6zxg"><input type="hidden" name="_method" value="patch"/><input type="hidden" name="authenticity_token" value="hJpIlnbApsAhzOgyWY3J5gIMBkIMaNqThxz4v-5wjsZvpJO2YAWnjQyEGm_lyQUZtf8aU7cAKD0YejB9E5meWA"/><fieldset class="style-wc0i85"><legend id="PickupArticleFormModal-label" class="style-s93jt4">Edit Pickup Articles (Up to 3)</legend><div class="style-1m2egs7"><div class="style-a0zrpm"></div></div></fieldset><div class="style-eo63uh"><button font-size="14" type="submit" class="style-mtcazu">Save</button></div></form></div></dialog></div><div class="style-k21u6n"><article class="style-nqak7h"><a href="https://qiita.com/DinhDuyThanh/items/1b19eba549f3680d3378" tabindex="-1" aria-hidden="true" class="style-32d82q"></a><header class="style-70qvj9"><a href="/DinhDuyThanh" class="style-d39wln"><div class="style-135heiq"><img alt="DinhDuyThanh" height="32" loading="lazy" src="https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0&amp;auto=compress%2Cformat&amp;lossless=0&amp;w=128&amp;s=505cedc5c2e360e761a97159c13532d3" width="32" class="style-1h6ertn"/></div></a><div class="style-c45axb"><p class="style-cm95co"><a href="/DinhDuyThanh" class="style-6i83bp">@<!-- -->DinhDuyThanh<span class="style-15fzge">(<!-- -->Dinh Duy Thanh<!-- -->)</span></a><span>in</span><a href="/organizations/basicinc" class="style-6i83bp">株式会社ベーシック</a></p><span class="style-hl9vr4"><time dateTime="2016-05-27T13:39:15Z">2016-05-27</time></span></div></header><h2 class="style-1t4fpk1"><a href="https://qiita.com/DinhDuyThanh/items/1b19eba549f3680d3378" class="style-1qb6j16">悪いREGEXと良いREGEXと最良REGEX </a></h2><footer class="style-n1j2x6"><ul class="style-gnec1p"><li><a href="/tags/regexp" class="style-mp1hhj">regexp</a></li><li><a href="/tags/performance" class="style-mp1hhj">performance</a></li><li><a href="/tags/pattern" class="style-mp1hhj">pattern</a></li><li><a href="/tags/matching" class="style-mp1hhj">Matching</a></li><li><a href="/tags/non-matching" class="style-mp1hhj">non-matching</a></li></ul><div class="style-1fvis2l"><span class="style-fv2drl"><svg class="style-1iqsurv" height="32" viewBox="0 0 32 32" width="32" aria-label="Like"><path d="M14.1154 28.1838C15.103 29.0961 16.8963 29.1091 17.8839 28.2098L17.9624 28.1383C24.7406 21.9617 29.1759 17.9201 28.9946 12.8825C28.9167 10.6668 27.7861 8.54237 25.9538 7.29116C23.1657 5.37395 19.8454 5.92832 17.4718 7.64444C16.9248 8.03993 16.428 8.49713 15.9996 9C15.5711 8.49695 15.0742 8.04006 14.5269 7.64512C12.1533 5.93219 8.83337 5.3847 6.04547 7.29116C4.21318 8.54237 3.08261 10.6668 3.00464 12.8825C2.83571 17.9395 7.29299 21.9929 14.1154 28.1838ZM5.00346 12.9511C5.06043 11.3482 5.8858 9.82201 7.17333 8.94281L7.17442 8.94206C9.53222 7.32971 12.6568 8.16 14.4772 10.2969L15.3906 11.3693C15.7101 11.7443 16.2892 11.7443 16.6086 11.3693L17.5221 10.2969C19.3469 8.15481 22.4686 7.32185 24.8206 8.93915L24.826 8.94281C26.1139 9.82233 26.9395 11.3493 26.9959 12.9528L26.9959 12.9544C27.0625 14.8048 26.3067 16.6196 24.5072 18.858C22.6788 21.1323 19.9917 23.5832 16.5374 26.7311C16.4848 26.7789 16.3085 26.8783 16.0137 26.8762C15.7197 26.8742 15.5349 26.7723 15.4725 26.7147L15.466 26.7086L15.4594 26.7027C12.0064 23.5693 9.32251 21.1243 7.49669 18.8544C5.70024 16.621 4.94209 14.8045 5.00346 12.9511Z"></path></svg></span><span class="style-1whzdj5">63</span></div></footer><div class="style-17ks4wf"><button aria-haspopup="dialog" aria-expanded="false" aria-controls="ItemListUnifiedArticleBAhJIhNBcnRpY2xlLTM5NTc4MwY6BkVG--7a0806a06acdcfdfeb7aba02535de53c3bcae6359377853a283363486c8c1a56" aria-label="Stock" class="style-dwyaab" type="button"><svg class="style-19mrtba" height="32" viewBox="0 0 32 32" width="32" aria-hidden="true"><path d="M6.5 5H25.5C25.7761 5 26 5.22386 26 5.5V6.5C26 6.77614 25.7761 7 25.5 7H6.5C6.22386 7 6 6.77614 6 6.5V5.5C6 5.22386 6.22386 5 6.5 5ZM24 19V11.5C24 11.3674 23.9473 11.2402 23.8536 11.1464C23.7598 11.0527 23.6326 11 23.5 11H8.5C8.36739 11 8.24021 11.0527 8.14645 11.1464C8.05268 11.2402 8 11.3674 8 11.5V19C8 20.8565 8.7375 22.637 10.0503 23.9497C11.363 25.2625 13.1435 26 15 26H17C18.8565 26 20.637 25.2625 21.9497 23.9497C23.2625 22.637 24 20.8565 24 19ZM6.58579 9.58579C6.96086 9.21071 7.46957 9 8 9H24C24.5304 9 25.0391 9.21071 25.4142 9.58579C25.7893 9.96086 26 10.4696 26 11V19C26 21.3869 25.0518 23.6761 23.364 25.364C21.6761 27.0518 19.3869 28 17 28H15C12.6131 28 10.3239 27.0518 8.63604 25.364C6.94821 23.6761 6 21.3869 6 19V11C6 10.4696 6.21071 9.96086 6.58579 9.58579Z"></path></svg></button></div></article></div></div><div id="items" class="style-acjjku"><div class="style-22pe9i"><div><a href="/DinhDuyThanh#items" class="style-ghyrwq">Articles</a><a href="/DinhDuyThanh/questions#items" class="style-n43zm8">Questions</a><a href="/DinhDuyThanh/likes#items" class="style-n43zm8">Likes</a><a href="/DinhDuyThanh/stocks#items" class="style-n43zm8">Public Stock List</a></div><a href="/search?q=user%3ADinhDuyThanh" class="style-z6198j"><span class="material-symbols-outlined style-1jvcm2e" aria-hidden="true">search</span>Search</a></div><div class="style-1cf27l9"><div class="style-1bk9n1v"><a href="/DinhDuyThanh#items" class="style-86izkk">Posted Articles</a><a href="/DinhDuyThanh/comments#items" class="style-8trra4">Commented Articles</a><a href="/DinhDuyThanh/edit_requests#items" class="style-8trra4">Edit Requests</a></div></div></div></div></div></div> <script type="application/json" class="js-react-on-rails-component" data-component-name="UserMainPage" data-dom-id="UserMainPage-react-component-f4100617-fd36-4063-a387-cb7636bf9a83">{"user":{"encryptedId":"BAhJIhBVc2VyLTExNDU5MAY6BkVG--32533eaa1ccf18d9bc4b76d87d7fffbf71e432fcddbf4284f9cc128dccefe5ff","description":"","email":null,"facebookUrl":null,"followingOrganizationsCount":0,"followersCount":11,"githubLoginName":"thanhbk55","githubSponsorsUrl":null,"githubUrl":"https://github.com/thanhbk55","isBlockableByViewer":false,"isBlockedByViewer":false,"isBlockingViewer":false,"isFollowableByViewer":true,"isFollowedByViewer":false,"isFollowingViewer":false,"isMuteableByViewer":false,"isMutedByViewer":false,"isViewer":false,"linkedinUrl":null,"location":"","name":"Dinh Duy Thanh","contribution":285,"organization":"Basic Inc","profileImageUrl":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=128\u0026s=505cedc5c2e360e761a97159c13532d3","profileImageUrlW48":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=48\u0026s=47d664cba81ac7abf0ec613d6aba195a","profileImageUrlW75":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=75\u0026s=2beef3844b6325ff3fa333a77cce9686","twitterUrl":"https://twitter.com/dinh_duy_thanh","urlName":"DinhDuyThanh","websiteUrl":"","acquaintanceFollowers":{"edges":[]},"followees":{"totalCount":12},"followingOrganizations":{"items":[]},"followingTags":{"totalCount":1},"paginatedFollowingTags":{"items":[{"encryptedId":"BAhJIgtUYWctNTIGOgZFRg==--f4e6f0b531e9d746411a2a8acc61b1498f23eccf9f516621245c1c3f6641115d","urlName":"node.js","name":"Node.js"}]},"articles":{"totalCount":21},"organizations":{"edges":[{"node":{"encryptedId":"BAhJIhRPcmdhbml6YXRpb24tNjIGOgZFRg==--fdcbee39baa431c0a4866da82366336e79d6a8af33b8c3b460ce4feda5a146a4","logoUrl":"https://qiita-organization-images.imgix.net/https%3A%2F%2Fs3-ap-northeast-1.amazonaws.com%2Fqiita-organization-image%2F6534ac0049b0bbb7f0c7e7e2bef19af26460dff1%2Foriginal.jpg%3F1576123577?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026s=44ba5e8624dbba7b8d59a5ea38b26fa9","name":"株式会社ベーシック","urlName":"basicinc"}}]},"postStatsData":[{"tag":{"name":"React"},"rate":0.23809523809523808},{"tag":{"name":"JavaScript"},"rate":0.14285714285714285},{"tag":{"name":"redux"},"rate":0.14285714285714285},{"tag":{"name":"CKEditor"},"rate":0.09523809523809523},{"tag":{"name":"script"},"rate":0.09523809523809523}],"answerStatsData":[],"engineerFestaPostsCount":0,"engineerFestaPostedArticlesCount":0,"pickupArticles":[{"encryptedId":"BAhJIhNBcnRpY2xlLTM5NTc4MwY6BkVG--7a0806a06acdcfdfeb7aba02535de53c3bcae6359377853a283363486c8c1a56","isLikedByViewer":false,"isStockableByViewer":true,"isStockedByViewer":false,"likesCount":63,"linkUrl":"https://qiita.com/DinhDuyThanh/items/1b19eba549f3680d3378","publishedAt":"2016-05-27T13:39:15Z","title":"悪いREGEXと良いREGEXと最良REGEX ","uuid":"1b19eba549f3680d3378","author":{"profileImageUrl":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=128\u0026s=505cedc5c2e360e761a97159c13532d3","urlName":"DinhDuyThanh","name":"Dinh Duy Thanh"},"organization":{"name":"株式会社ベーシック","urlName":"basicinc"},"followingLikers":[],"recentlyFollowingLikers":[],"postingCampaign":null,"tags":[{"urlName":"regexp","name":"regexp"},{"urlName":"performance","name":"performance"},{"urlName":"pattern","name":"pattern"},{"urlName":"matching","name":"Matching"},{"urlName":"non-matching","name":"non-matching"}],"summary":"\n1.REGEXとは ​\n正規表現(RegExp/regex)とは、文字列のパターンを表現する表記法​\n /pattern/\n\n\n2. 良いREGEXと悪いREGEX ​\n[2016-05-02T16:05:18 #92430] INFO -- : Served ass..."}]},"initialPage":0,"per":20,"selectedItemList":"article_posted","adventCalendarBanner":"//cdn.qiita.com/assets/public/advent_calendar/seasons/banner-user_page_advent_calendar-11b7630bc8afa2965983d98494b8df1f.png"}</script> </div><div id="GlobalFooter-react-component-67802891-4e55-4a54-840d-457c2cf62779"><footer class="style-1geho0x"><div class="style-1vesoht"><div class="style-1xygyrj"><div class="style-j7qwjs"><a href="/"><svg role="img" aria-label="To top Qiita" viewBox="0 0 426.57 130" width="110" height="33.5" class="style-1g0k1wk"><circle cx="167.08" cy="21.4" r="12.28"></circle><path d="M250.81 29.66h23.48v18.9h-23.48z"></path><path d="M300.76 105.26a22.23 22.23 0 01-6.26-.86 12.68 12.68 0 01-5.17-3 14.41 14.41 0 01-3.56-5.76 28 28 0 01-1.3-9.22V48.56h29.61v-18.9h-29.52V3.29h-20.17v83.34q0 11.16 2.83 18.27a27.71 27.71 0 007.7 11.2 26.86 26.86 0 0011.43 5.62 47.56 47.56 0 0012.34 1.53h15.16v-18zM0 61.7a58.6 58.6 0 015-24.21A62.26 62.26 0 0118.73 17.9 63.72 63.72 0 0139 4.78 64.93 64.93 0 0164 0a65 65 0 0124.85 4.78 64.24 64.24 0 0120.38 13.12A62 62 0 01123 37.49a58.6 58.6 0 015 24.21 58.34 58.34 0 01-4 21.46 62.8 62.8 0 01-10.91 18.16l11.1 11.1a10.3 10.3 0 010 14.52 10.29 10.29 0 01-14.64 0l-12.22-12.41a65 65 0 01-15.78 6.65 66.32 66.32 0 01-17.55 2.3 64.63 64.63 0 01-45.23-18A62.82 62.82 0 015 85.81 58.3 58.3 0 010 61.7zm21.64.08a43.13 43.13 0 0012.42 30.63 42.23 42.23 0 0013.43 9.09A41.31 41.31 0 0064 104.8a42 42 0 0030-12.39 42.37 42.37 0 009-13.64 43.43 43.43 0 003.3-17 43.77 43.77 0 00-3.3-17A41.7 41.7 0 0080.55 22 41.78 41.78 0 0064 18.68 41.31 41.31 0 0047.49 22a42.37 42.37 0 00-13.43 9.08 43.37 43.37 0 00-12.42 30.7zM331.89 78a47.59 47.59 0 013.3-17.73 43.22 43.22 0 019.34-14.47A44.25 44.25 0 01359 36a47.82 47.82 0 0118.81-3.58 42.72 42.72 0 019.26 1 46.5 46.5 0 018.22 2.58 40 40 0 017 3.84 44.39 44.39 0 015.71 4.63l1.22-9.47h17.35v85.83h-17.35l-1.17-9.42a42.54 42.54 0 01-5.84 4.67 43.11 43.11 0 01-7 3.79 44.86 44.86 0 01-8.17 2.59 43 43 0 01-9.22 1A47.94 47.94 0 01359 119.9a43.3 43.3 0 01-14.47-9.71 44.17 44.17 0 01-9.34-14.47 47 47 0 01-3.3-17.72zm20.27-.08a29.16 29.16 0 002.17 11.34 27 27 0 005.92 8.88 26.69 26.69 0 008.76 5.76 29.19 29.19 0 0021.44 0 26.11 26.11 0 008.72-5.76 27.57 27.57 0 005.88-8.84 29 29 0 002.16-11.38 28.62 28.62 0 00-2.16-11.22 26.57 26.57 0 00-5.93-8.8 27.68 27.68 0 00-19.51-7.9 28.29 28.29 0 00-10.77 2.05 26.19 26.19 0 00-8.71 5.75 27.08 27.08 0 00-5.84 8.8 28.94 28.94 0 00-2.13 11.31zm-194.97-30.5h19.78v73.54h-19.78zm49.25 0h19.78v73.54h-19.78z"></path><circle cx="216.33" cy="21.4" r="12.28"></circle></svg></a><p class="style-754ift">How developers code is here.</p><a href="/official-campaigns/conference/2025?utm_source=qiita&amp;utm_medium=banner&amp;utm_campaign=global_footer_banner_default&amp;utm_content=default" class="style-zsz8fb"><img src="//cdn.qiita.com/assets/public/banner-qiita_conference-c746f76f279d57268fa51a1f5b7c9151.png" alt="Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)" height="60" width="300" class="style-1efditc"/></a></div><small class="style-120vwzo">© 2011-<!-- -->2025<span class="style-15fzge">Qiita Inc.</span></small></div><nav aria-label="Footer" class="style-16bbk6m"><div class="style-u4ybgy"><p id="guideHelp" class="style-35ezg3">Guide &amp; Help</p><ul aria-labelledby="guideHelp" class="style-1fhgjcy"><li><a href="/about" class="style-ah54os">About</a></li><li><a href="/terms" class="style-ah54os">Terms</a></li><li><a href="/privacy" class="style-ah54os">Privacy</a></li><li><a href="http://help.qiita.com/ja/articles/qiita-community-guideline" target="_blank" class="style-ah54os">Guideline</a></li><li><a href="https://help.qiita.com/ja/articles/others-brand-guideline" target="_blank" class="style-ah54os">Media Kit</a></li><li><a href="https://github.com/increments/qiita-discussions/discussions/116" target="_blank" class="style-ah54os">Feedback/Requests</a></li><li><a href="https://help.qiita.com" target="_blank" class="style-ah54os">Help</a></li><li><a href="https://business.qiita.com/?utm_source=qiita&amp;utm_medium=referral&amp;utm_content=footer" target="_blank" class="style-ah54os">Advertisement</a></li></ul></div><div class="style-u4ybgy"><p id="contents" class="style-35ezg3">Contents</p><ul aria-labelledby="contents" class="style-1fhgjcy"><li><a href="/release-notes" class="style-ah54os">Release Note</a></li><li><a href="/official-events" class="style-ah54os">Official Event</a></li><li><a href="/official-columns" class="style-ah54os">Official Column</a></li><li><a href="/advent-calendar/2024" class="style-ah54os">Advent Calendar</a></li><li><a href="/qiita-award" class="style-ah54os">Qiita Award</a></li><li><a href="/white_papers/2024" class="style-ah54os">Engineer White Paper</a></li><li><a href="/api/v2/docs" class="style-ah54os">API</a></li></ul></div><div class="style-u4ybgy"><p id="sns" class="style-35ezg3">Official Accounts</p><ul aria-labelledby="sns" class="style-1fhgjcy"><li><a href="https://x.com/qiita" target="_blank" class="style-ah54os"><svg class="style-ox3ag9" viewBox="0 0 20 20" aria-label="X(Twitter)"><path d="m11.68 8.62 6.55-7.62h-1.55l-5.69 6.62-4.55-6.62h-5.25l6.88 10.01-6.88 7.99h1.55l6.01-6.99 4.8 6.99h5.24l-7.13-10.38zm-2.13 2.47-.7-1-5.54-7.92h2.39l4.47 6.4.7 1 5.82 8.32h-2.39l-4.75-6.79z"></path></svg><span class="style-15fzge">@Qiita</span></a></li><li><a href="https://x.com/qiita_milestone" target="_blank" class="style-ah54os"><svg class="style-ox3ag9" viewBox="0 0 20 20" aria-label="X(Twitter)"><path d="m11.68 8.62 6.55-7.62h-1.55l-5.69 6.62-4.55-6.62h-5.25l6.88 10.01-6.88 7.99h1.55l6.01-6.99 4.8 6.99h5.24l-7.13-10.38zm-2.13 2.47-.7-1-5.54-7.92h2.39l4.47 6.4.7 1 5.82 8.32h-2.39l-4.75-6.79z"></path></svg><span class="style-15fzge">@qiita_milestone</span></a></li><li><a href="https://x.com/qiitapoi" target="_blank" class="style-ah54os"><svg class="style-ox3ag9" viewBox="0 0 20 20" aria-label="X(Twitter)"><path d="m11.68 8.62 6.55-7.62h-1.55l-5.69 6.62-4.55-6.62h-5.25l6.88 10.01-6.88 7.99h1.55l6.01-6.99 4.8 6.99h5.24l-7.13-10.38zm-2.13 2.47-.7-1-5.54-7.92h2.39l4.47 6.4.7 1 5.82 8.32h-2.39l-4.75-6.79z"></path></svg><span class="style-15fzge">@qiitapoi</span></a></li><li><a href="https://www.facebook.com/qiita/" target="_blank" class="style-ah54os">Facebook</a></li><li><a href="https://www.youtube.com/@qiita5366" target="_blank" class="style-ah54os">YouTube</a></li><li><a href="https://open.spotify.com/show/4E7yCLeCLeQUsNqM4HXFXA" target="_blank" class="style-ah54os">Podcast</a></li></ul></div><div class="style-u4ybgy"><p id="service" class="style-35ezg3">Our service</p><ul aria-labelledby="service" class="style-1fhgjcy"><li><a href="https://teams.qiita.com/" target="_blank" class="style-ah54os">Qiita Team</a></li><li><a href="https://zine.qiita.com?utm_source=qiita&amp;utm_medium=referral&amp;utm_content=footer" target="_blank" class="style-ah54os">Qiita Zine</a></li><li><a href="https://suzuri.jp/qiita" target="_blank" class="style-ah54os">Official Shop</a></li></ul></div><div class="style-u4ybgy"><p id="corporate" class="style-35ezg3">Company</p><ul aria-labelledby="corporate" class="style-1fhgjcy"><li><a href="https://corp.qiita.com/company" target="_blank" class="style-ah54os">About Us</a></li><li><a href="https://corp.qiita.com/jobs/" target="_blank" class="style-ah54os">Careers</a></li><li><a href="https://blog.qiita.com" target="_blank" class="style-ah54os">Qiita Blog</a></li><li><a href="https://corp.qiita.com/releases/" target="_blank" class="style-ah54os">News Release</a></li></ul></div></nav></div></footer></div> <script type="application/json" class="js-react-on-rails-component" data-component-name="GlobalFooter" data-dom-id="GlobalFooter-react-component-67802891-4e55-4a54-840d-457c2cf62779">{"currentYear":2025,"pathInfo":"/DinhDuyThanh","bannerUrl":"//cdn.qiita.com/assets/public/banner-qiita_conference-c746f76f279d57268fa51a1f5b7c9151.png","adventCalendarBannerUrl":"//cdn.qiita.com/assets/public/banner-qiita_advent_calendar_2024-8fefcb4d8f1b460321d6efd20e955784.png","latestHeldAdventCalendarYear":2024,"latestHeldWhitePaperYear":2024,"qiitaTeamLandingPageRootUrl":"https://teams.qiita.com/"}</script> <div id="Snackbar-react-component-eb82abe8-9894-42ab-b9f7-91d8d5f88f69"></div> <script type="application/json" class="js-react-on-rails-component" data-component-name="Snackbar" data-dom-id="Snackbar-react-component-eb82abe8-9894-42ab-b9f7-91d8d5f88f69">{}</script> <div id="LoginModal-react-component-f5edc3eb-2ea9-4aed-9370-dfd95660d7be"></div> <script type="application/json" class="js-react-on-rails-component" data-component-name="LoginModal" data-dom-id="LoginModal-react-component-f5edc3eb-2ea9-4aed-9370-dfd95660d7be">{"imageUrl":"//cdn.qiita.com/assets/public/image-qiitan_for_login_modal_glimpse-c148ec9e4debf1f4b880deec194b6fc8.png","githubAuthUrl":"https://oauth.qiita.com/auth/github?callback_action=login_or_signup\u0026realm=qiita\u0026redirect_to=%2FDinhDuyThanh","googleAuthUrl":"https://oauth.qiita.com/auth/google?callback_action=login_or_signup\u0026realm=qiita\u0026redirect_to=%2FDinhDuyThanh","twitterAuthUrl":"https://oauth.qiita.com/auth/twitter?callback_action=login_or_signup\u0026realm=qiita\u0026redirect_to=%2FDinhDuyThanh"}</script> </div><div id="dataContainer" style="display: none;" data-config="{&quot;actionPath&quot;:&quot;public/users#show&quot;,&quot;settings&quot;:{&quot;analyticsTrackingId&quot;:&quot;G-KEVS5DBRVN&quot;,&quot;tagManagerId&quot;:&quot;GTM-W9W5TX4&quot;,&quot;assetsMap&quot;:{},&quot;csrfToken&quot;:&quot;TfAm16XPg5WDs61oxfFqjqC_Lk_mhGIt7zI_0lhayIimzv33swqC2K77XzV5taZxF0wyXl3skINwVPcQpbPYFg&quot;,&quot;locale&quot;:&quot;en&quot;,&quot;pushOne&quot;:{&quot;accessToken&quot;:&quot;4bc4bb057a0601d388a7b9e499ca2307e9eb4fc172804e310c59e511d7cac356&quot;,&quot;dialogImageUrl&quot;:&quot;//cdn.qiita.com/assets/public/push_notification/image-qiitan-572179a3bbde375850422ea48b2b6272.png&quot;},&quot;textlint&quot;:{&quot;workerUrl&quot;:&quot;//cdn.qiita.com/assets/public/textlint-worker-5ff44d714260eb7f2792faf979577c4b.min.js&quot;},&quot;datetimeParam&quot;:null},&quot;currentUser&quot;:null,&quot;additionalParams&quot;:{&quot;query_parameters&quot;:{},&quot;path_parameters&quot;:{&quot;selected_item_list&quot;:&quot;article_posted&quot;,&quot;controller&quot;:&quot;public/users&quot;,&quot;action&quot;:&quot;show&quot;,&quot;id&quot;:&quot;DinhDuyThanh&quot;},&quot;request_id&quot;:&quot;afc3235c-35d1-4452-a8a2-04de612d0ac8&quot;,&quot;user_id&quot;:null}}" /></body></html><script type="application/json" data-js-react-on-rails-store="AppStoreWithReactOnRails">{"snackbar":{"type":"","body":"","isActive":false},"user":{"user":{"encryptedId":"BAhJIhBVc2VyLTExNDU5MAY6BkVG--32533eaa1ccf18d9bc4b76d87d7fffbf71e432fcddbf4284f9cc128dccefe5ff","description":"","email":null,"facebookUrl":null,"followingOrganizationsCount":0,"followersCount":11,"githubLoginName":"thanhbk55","githubSponsorsUrl":null,"githubUrl":"https://github.com/thanhbk55","isBlockableByViewer":false,"isBlockedByViewer":false,"isBlockingViewer":false,"isFollowableByViewer":true,"isFollowedByViewer":false,"isFollowingViewer":false,"isMuteableByViewer":false,"isMutedByViewer":false,"isViewer":false,"linkedinUrl":null,"location":"","name":"Dinh Duy Thanh","contribution":285,"organization":"Basic Inc","profileImageUrl":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=128\u0026s=505cedc5c2e360e761a97159c13532d3","profileImageUrlW48":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=48\u0026s=47d664cba81ac7abf0ec613d6aba195a","profileImageUrlW75":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=75\u0026s=2beef3844b6325ff3fa333a77cce9686","twitterUrl":"https://twitter.com/dinh_duy_thanh","urlName":"DinhDuyThanh","websiteUrl":"","acquaintanceFollowers":{"edges":[]},"followees":{"totalCount":12},"followingOrganizations":{"items":[]},"followingTags":{"totalCount":1},"paginatedFollowingTags":{"items":[{"encryptedId":"BAhJIgtUYWctNTIGOgZFRg==--f4e6f0b531e9d746411a2a8acc61b1498f23eccf9f516621245c1c3f6641115d","urlName":"node.js","name":"Node.js"}]},"articles":{"totalCount":21},"organizations":{"edges":[{"node":{"encryptedId":"BAhJIhRPcmdhbml6YXRpb24tNjIGOgZFRg==--fdcbee39baa431c0a4866da82366336e79d6a8af33b8c3b460ce4feda5a146a4","logoUrl":"https://qiita-organization-images.imgix.net/https%3A%2F%2Fs3-ap-northeast-1.amazonaws.com%2Fqiita-organization-image%2F6534ac0049b0bbb7f0c7e7e2bef19af26460dff1%2Foriginal.jpg%3F1576123577?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026s=44ba5e8624dbba7b8d59a5ea38b26fa9","name":"株式会社ベーシック","urlName":"basicinc"}}]},"postStatsData":[{"tag":{"name":"React"},"rate":0.23809523809523808},{"tag":{"name":"JavaScript"},"rate":0.14285714285714285},{"tag":{"name":"redux"},"rate":0.14285714285714285},{"tag":{"name":"CKEditor"},"rate":0.09523809523809523},{"tag":{"name":"script"},"rate":0.09523809523809523}],"answerStatsData":[],"engineerFestaPostsCount":0,"engineerFestaPostedArticlesCount":0,"pickupArticles":[{"encryptedId":"BAhJIhNBcnRpY2xlLTM5NTc4MwY6BkVG--7a0806a06acdcfdfeb7aba02535de53c3bcae6359377853a283363486c8c1a56","isLikedByViewer":false,"isStockableByViewer":true,"isStockedByViewer":false,"likesCount":63,"linkUrl":"https://qiita.com/DinhDuyThanh/items/1b19eba549f3680d3378","publishedAt":"2016-05-27T13:39:15Z","title":"悪いREGEXと良いREGEXと最良REGEX ","uuid":"1b19eba549f3680d3378","author":{"profileImageUrl":"https://qiita-user-profile-images.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F114590%2Fprofile-images%2F1473712645?ixlib=rb-4.0.0\u0026auto=compress%2Cformat\u0026lossless=0\u0026w=128\u0026s=505cedc5c2e360e761a97159c13532d3","urlName":"DinhDuyThanh","name":"Dinh Duy Thanh"},"organization":{"name":"株式会社ベーシック","urlName":"basicinc"},"followingLikers":[],"recentlyFollowingLikers":[],"postingCampaign":null,"tags":[{"urlName":"regexp","name":"regexp"},{"urlName":"performance","name":"performance"},{"urlName":"pattern","name":"pattern"},{"urlName":"matching","name":"Matching"},{"urlName":"non-matching","name":"non-matching"}],"summary":"\n1.REGEXとは ​\n正規表現(RegExp/regex)とは、文字列のパターンを表現する表記法​\n /pattern/\n\n\n2. 良いREGEXと悪いREGEX ​\n[2016-05-02T16:05:18 #92430] INFO -- : Served ass..."}]}}}</script>

Pages: 1 2 3 4 5 6 7 8 9 10