PageSourceSearch

https://www.nefront.com/_next/static/chunks/8958-897ef99224bfa6f4.js

js nefront.com collected 2026-10-08 03:29:18 UTC 22,479 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8958],{1506:function(n,e,r){r.d(e,{Z:function(){return d}});var t=r(5893),a=r(7672),i=r(9008),o=r.n(i);r(7294);var l=r(917);let f=()=>(0,t.jsx)(l.xB,{styles:"\n      .grid-item-thumbnail {\n        border-radius: 50%;\n        width:  180px;\n        height: 180px;\n        margin:auto;\n        display:flex;\n      }\n    "}),p={hidden:{opacity:0,x:0,y:20},enter:{opacity:1,x:0,y:0},exit:{opacity:0,x:-0,y:20}};var d=n=>{let{children:e,title:r}=n,i="".concat(r," - Nefront Inc.");return(0,t.jsx)(a.E.article,{initial:"hidden",animate:"enter",exit:"exit",variants:p,transition:{duration:.4,type:"easeInOut"},style:{position:"relative"},children:(0,t.jsxs)(t.Fragment,{children:[r&&(0,t.jsxs)(o(),{children:[(0,t.jsx)("title",{children:i}),(0,t.jsx)("meta",{name:"twitter:title",content:i}),(0,t.jsx)("meta",{property:"og:title",content:i})]}),e,(0,t.jsx)(f,{})]})})}},5681:function(n,e,r){r.d(e,{C9:function(){return f},Eu:function(){return l},GC:function(){return o},N4:function(){return i}});var t=r(8996);let a=n=>{let e=n.trim().split(/[/.-]/);if(3!==e.length)return null;let[r,t,a]=e;return/^\d{4}$/.test(r)&&/^\d{1,2}$/.test(t)&&/^\d{1,2}$/.test(a)?[r,t.padStart(2,"0"),a.padStart(2,"0")]:null},i=n=>{if(!n)return"";let e=a(n);return e?e.join("."):n},o=n=>{if(!n)return;let e=a(n);return e?e.join("-"):void 0},l=(n,e)=>(0,t.rN)(n,"/news/".concat(e.replace(/\.md$/,""),"/")),f=(n,e)=>(0,t.rN)(n,e<=1?"/news/":"/news/page/".concat(e,"/"))},1332:function(n,e,r){var t=r(2729),a=r(5893);r(7294);var i=r(917);function o(){let n=(0,t._)(['\n    /* --------------------------------------------------- 一覧ページの見出し */\n    /* 一覧ページの h1。見た目は他の新ページの h2(.nf-sec h2)に揃える */\n    .nfn-ptitle {\n        font-size: clamp(24px, 3.1vw, 33px);\n        margin: 0 0 16px;\n        padding: 0;\n        font-weight: 800;\n        line-height: 1.5;\n        text-align: left;\n    }\n\n    /*\n     * 記事が 1 本も無いときの一言(components/news/news-list.tsx が出す)。\n     * 英語版は翻訳済みの記事がまだ少ないので、空の一覧が「壊れている」ように\n     * 見えないようにここで体裁を持つ。\n     */\n    .nfn-empty {\n        margin: 8px 0 0;\n        padding: 22px 24px;\n        border: 1px dashed var(--nf-axis);\n        border-radius: 10px;\n        background: var(--nf-blue-wash);\n        color: var(--nf-ink-soft);\n        font-size: 14.5px;\n        line-height: 1.8;\n    }\n\n    /* --------------------------------------------------- 一覧(サムネイル付き) */\n    /* .nf-newslist に足す修飾クラス。トップの News 節(サムネイル無し)には付けない */\n    .nfn-list a {\n        align-items: center;\n        gap: 20px;\n    }\n\n    /* 日付+タイトルのまとまり。広い画面では .nf-newslist a の直接の子として\n       並んでほしいので display:contents で自身は消し、狭い画面だけ縦に積む */\n    .nfn-row {\n        display: contents;\n    }\n\n    .nfn-title {\n        flex: 1 1 auto;\n        min-width: 0;\n        line-height: 1.7;\n        /* 長い URL やスラッグが 375px で横にはみ出さないように */\n        overflow-wrap: anywhere;\n    }\n\n    /* トップの News 節の日付+カテゴリバッジ。幅があるうちは日付・バッジ・タイトルの\n       3つを1行に並べたいので、.nfn-row と同じく display:contents で自身を消す。 */\n    .nfn-meta {\n        display: contents;\n    }\n\n    .nfn-thumb {\n        flex: none;\n        width: 92px;\n        height: 60px;\n        margin-left: auto;\n        border-radius: 6px;\n        overflow: hidden;\n        border: 1px solid var(--nf-grid);\n        background: #fff;\n        box-shadow: var(--nf-sh-1);\n    }\n\n    /* <picture> は既定でインラインなので、中の img の % 指定が効くように block にする */\n    .nfn-thumb picture {\n        display: block;\n        width: 100%;\n        height: 100%;\n    }\n\n    .nfn-thumb img {\n        display: block;\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n    }\n\n    @media (max-width: 560px) {\n        /* スマホでは、日付+バッジを1行目・タイトルを2行目の全幅にする\n           (一覧ページの .nfn-row と同じ組み方)。タイトルを右のカラムに残すと\n           375px でã
1¯ 1 行 10 字ほどしか入らず、行が増えるうえ右が大きく余る。 */\n        .nf-newslist:not(.nfn-list) a {\n            flex-wrap: wrap;\n            align-items: center;\n            gap: 6px 10px;\n        }\n\n        .nfn-meta {\n            display: flex;\n            flex: none;\n            align-items: center;\n            gap: 10px;\n        }\n\n        .nf-newslist:not(.nfn-list) .nfn-title {\n            flex: 1 0 100%;\n        }\n\n        /* 狭い画面では 1行目に日付(+カテゴリ)、2行目にタイトルを置く。\n           display:contents をやめて自身が折り返す flex になる */\n        .nfn-row {\n            display: flex;\n            flex-wrap: wrap;\n            align-items: center;\n            gap: 6px 10px;\n            flex: 1 1 auto;\n            min-width: 0;\n        }\n\n        /* タイトルは必ず単独の行に送る */\n        .nfn-row .nfn-title {\n            flex: 1 0 100%;\n        }\n\n        .nfn-list a {\n            gap: 14px;\n            align-items: flex-start;\n        }\n\n        .nfn-thumb {\n            width: 64px;\n            height: 44px;\n        }\n    }\n\n    /* トップの News 節から /news へ送る導線 */\n    .nfn-more {\n        margin: 22px 0 0;\n    }\n\n    /* --------------------------------------------------- 一覧のページ送り */\n    /* 記事が増えても 1 ページに出すのは newsPerPage 件までなので、続きはここから辿る。\n       静的書き出しなので JS 無しでも動く素のリンク(components/news/pager.tsx)。 */\n    .nfn-pager {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        flex-wrap: wrap;\n        gap: 14px 16px;\n        margin: 34px 0 0;\n        padding-top: 22px;\n        border-top: 1px solid var(--nf-grid);\n        font-size: 13.5px;\n    }\n\n    .nfn-pager-edge {\n        display: inline-flex;\n        align-items: center;\n        gap: 8px;\n        font-weight: 700;\n        color: var(--nf-blue);\n        text-decoration: none;\n        white-space: nowrap;\n    }\n\n    /* 端(1ページ目の「新しいお知らせ」など)は行き先が無くても場所を残す。\n       消すと真ん中のページ番号が左右にずれて落ち着かない。 */\n    .nfn-pager-off {\n        visibility: hidden;\n    }\n\n    .nfn-pager-nums {\n        display: flex;\n        align-items: center;\n        gap: 6px;\n        margin: 0;\n        padding: 0;\n        list-style: none;\n    }\n\n    .nfn-pager-num {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        min-width: 34px;\n        height: 34px;\n        padding: 0 8px;\n        border: 1px solid var(--nf-grid);\n        border-radius: 8px;\n        background: #fff;\n        color: var(--nf-ink-soft);\n        font-family: var(--nf-mono);\n        font-size: 13px;\n        text-decoration: none;\n        transition:\n            border-color 0.2s var(--nf-ease),\n            color 0.2s var(--nf-ease);\n    }\n\n    a.nfn-pager-num:hover {\n        border-color: var(--nf-blue);\n        color: var(--nf-blue);\n    }\n\n    .nfn-pager-here {\n        background: var(--nf-blue);\n        border-color: var(--nf-blue);\n        color: #fff;\n        font-weight: 700;\n    }\n\n    .nfn-pager-gap {\n        padding: 0 2px;\n        color: var(--nf-ink-faint);\n    }\n\n    @media (max-width: 560px) {\n        /* 狭い画面では番号を 1 行目、前後の導線をその下に置く */\n        .nfn-pager {\n            justify-content: center;\n        }\n\n        .nfn-pager-nums {\n            order: -1;\n            flex-basis: 100%;\n            justify-content: center;\n        }\n\n        .nfn-pager-off {\n            display: none;\n        }\n    }\n\n    /* --------------------------------------------------- 記事詳細 */\n    /* 本文カラム。本文 16px で行長がちょうど 40em(640px)に収まる幅+左右の余白 */\n    .nfn-wrap {\n        max-width: 696px;\n        margin: 0 auto;\n        padding: 0 28px;\n    }\n\n    @media (max-width: 640px) {\n        .nfn-wrap {\n            padding: 0 16px;\n        }\n    }\n\n    .nfn-ahero {\n        background: var(--nf-blue-wash);\n        border-bottom: 1px solid var(--nf-grid);\n        position: relative;\n        overflow: hidden;\n    }\n\n    .nfn-ahero::before {\n        content: \'\';\n        position: absolute;\n        inset: 0;\n        background: radial-gradient(\n                560px 340px at 85% 15%,\n                rgba(48, 84, 214, 0.09),\n                transparent 65%\n            ),\n            linear-gradient(var(--nf-grid) 1px, transparent 1px),\n            linear-gradient(90deg, var(--nf-grid) 1px, transparent 1px);\n        background-size:\n            auto,\n            56px 56px,\n            56px 56px;\n        mask-image: linear-gradient(180deg, #000 82%, transparent);\n        -webkit-mask-image: linear-gradient(180deg, #000 82%, transparent);\n    }\n\n    .nfn-ahero .nfn-wrap {\n        position: relative;\n        padding-top: 42px;\n        padding-bottom: 40px;\n    }\n\n    @media (max-width: 900px) {\n        .nfn-ahero .nfn-wrap {\n            padding-top: 32px;\n            padding-bottom: 30px;\n        }\n    }\n\n    /* --------------------------------------------------- 記事の顔になる画像 */\n    /* 戻り導線とタイトルのあいだ。ベースのグリッドの上にそのまま置きたいので、\n       角丸・枠線・影は付けない(カードのように浮いて見せない)。\n       縦横比はまちまち(1.33〜1.92)なので切り抜かない\n       (UPDATE EARTH 2025 のフライヤーは切ると下端の日付が落ちる)。\n\n       幅は本文カラム(.nfn-wrap の内幅)に合わせる。ただし\n       width: auto + max-width: 100% にしてあるので、\n       実際の幅は min(本文カラム幅, 元画像の幅) になり、\n       551px 幅のような小さい元画像は拡大されずそのままの大きさで左端に揃う。\n       高さの上限は掛けない(掛けると幅が本文より狭くなってしまう)。 */\n    .nfn-ahero picture {\n        display: block;\n        max-width: 100%;\n        margin: 20px 0 4px;\n    }\n\n    .nfn-athumb {\n        display: block;\n        width: auto;\n        max-width: 100%;\n        height: auto;\n    }\n\n    @media (max-width: 640px) {\n        .nfn-ahero picture {\n            margin: 16px 0 2px;\n        }\n    }\n\n    /* パンくず代わりの戻り導線 */\n    .nfn-back {\n        display: inline-flex;\n        align-items: center;\n        gap: 8px;\n        font-size: 12.5px;\n        font-weight: 700;\n        color: var(--nf-blue);\n        text-decoration: none;\n    }\n\n    .nfn-back .nf-ar {\n        display: inline-block;\n        transition: transform 0.25s var(--nf-ease);\n    }\n\n    .nfn-back:hover .nf-ar {\n        transform: translateX(-3px);\n    }\n\n    /* 補助テキストなので本文より薄い。ただし淡い青の上に載るので faint では\n       弱すぎる(3.1:1)。soft まで上げる。 */\n    .nfn-adate {\n        display: block;\n        margin-top: 16px;\n        font-family: var(--nf-mono);\n        font-size: 12.5px;\n        letter-spacing: 0.06em;\n        color: var(--nf-ink-soft);\n    }\n\n    /* 日付とカテゴリバッジを横並びにする。バッジは一覧と同じ .nf-cat を使う。\n       上の余白はこの行が持つので、中の日付側は打ち消す。 */\n    .nfn-ameta {\n        display: flex;\n        align-items: center;\n        gap: 12px;\n        flex-wrap: wrap;\n        margin: 16px 0 0;\n    }\n\n    .nfn-ameta .nfn-adate {\n        margin-top: 0;\n    }\n\n    .nfn-atitle {\n        font-size: clamp(22px, 3.2vw, 32px);\n        font-weight: 800;\n        line-height: 1.6;\n        letter-spacing: 0.01em;\n        color: var(--nf-ink);\n        margin: 10px 0 0;\n        padding: 0;\n        text-align: left;
1\n        overflow-wrap: anywhere;\n    }\n\n    .nfn-abody {\n        padding: 52px 0 72px;\n        background: var(--nf-paper);\n    }\n\n    @media (max-width: 640px) {\n        .nfn-abody {\n            padding: 34px 0 52px;\n        }\n    }\n\n    /* --------------------------------------------------- 記事本文の組版 */\n    /* marked が吐いた HTML をそのまま流し込む場所。旧 .markdown は\n       img に width: max(30vw, 500px) を効かせていて 375px で横に溢れるため、\n       クラスを分けて縁を切っている。 */\n    .nfn-article {\n        font-size: 16px;\n        line-height: 2;\n        /* 長文の本文は主役なので、補助テキストの --nf-ink-soft ではなく\n           見出し(--nf-ink)の少し手前の濃さを当てる。\n           日付・引用・注記などの補助テキストは --nf-ink-soft / --nf-ink-faint のまま。 */\n        color: #1f2a3a;\n        /* 記事中の生 URL(marked が自動リンクする)が横に溢れないように */\n        overflow-wrap: anywhere;\n    }\n\n    .nfn-article > * {\n        max-width: 100%;\n    }\n\n    .nfn-article p {\n        margin: 0 0 1.6em;\n    }\n\n    /* 段落の間隔を作るためだけの <br /> はビルド時に落としている\n       (@/news/normalize の stripSpacerBreaks)。ここに残る <br /> は本当の改行。 */\n\n    .nfn-article h1,\n    .nfn-article h2,\n    .nfn-article h3,\n    .nfn-article h4 {\n        color: var(--nf-ink);\n        font-weight: 800;\n        line-height: 1.6;\n        text-align: left;\n        padding: 0;\n    }\n\n    .nfn-article h1,\n    .nfn-article h2 {\n        font-size: 20px;\n        margin: 2.2em 0 0.8em;\n        padding-left: 13px;\n        border-left: 3px solid var(--nf-blue);\n    }\n\n    .nfn-article h3 {\n        font-size: 17px;\n        margin: 2em 0 0.7em;\n    }\n\n    .nfn-article h4 {\n        font-size: 15.5px;\n        margin: 1.8em 0 0.6em;\n    }\n\n    /* 「■ 〇〇について」のような、段落まるごと太字の小見出し */\n    .nfn-article p > strong:only-child {\n        display: block;\n        font-size: 16.5px;\n        font-weight: 800;\n        color: var(--nf-ink);\n        line-height: 1.7;\n        margin: 1.2em 0 0.2em;\n    }\n\n    .nfn-article strong {\n        color: var(--nf-ink);\n        font-weight: 800;\n    }\n\n    .nfn-article a {\n        color: var(--nf-blue);\n        text-decoration: underline;\n        text-underline-offset: 3px;\n        text-decoration-thickness: 1px;\n        transition: color 0.2s;\n    }\n\n    .nfn-article a:hover {\n        color: var(--nf-blue-deep);\n    }\n\n    .nfn-article img {\n        display: block;\n        width: 100%;\n        height: auto;\n        margin: 30px auto;\n        border-radius: 10px;\n        border: 1px solid var(--nf-grid);\n        box-shadow: var(--nf-sh-1);\n    }\n\n    .nfn-article ul,\n    .nfn-article ol {\n        margin: 0 0 1.6em;\n        padding-left: 1.5em;\n        list-style: revert;\n    }\n\n    .nfn-article li {\n        margin-bottom: 0.4em;\n    }\n\n    .nfn-article blockquote {\n        margin: 0 0 1.6em;\n        padding: 4px 0 4px 18px;\n        border-left: 3px solid var(--nf-axis);\n        color: var(--nf-ink-faint);\n    }\n\n    .nfn-article hr {\n        border: 0;\n        border-top: 1px solid var(--nf-grid);\n        margin: 2.4em 0;\n    }\n\n    .nfn-article code {\n        font-family: var(--nf-mono);\n        font-size: 0.92em;\n        background: var(--nf-blue-wash);\n        border: 1px solid var(--nf-grid);\n        border-radius: 4px;\n        padding: 1px 6px;\n    }\n\n    .nfn-article pre {\n        margin: 0 0 1.6em;\n        padding: 16px 18px;\n        background: var(--nf-blue-wash);\n        border: 1px solid var(--nf-grid);\n        border-radius: 8px;\n        /* 長い行は記事の中だけで横スクロールさせる(ページ全体を横に伸ばさない) */\n        overflow-x: auto;\n        font-size: 13px;\n        line-height: 1.8;\n    }\n\n    .nfn-article pre code {\n        background: none;\n        border: 0;\n        padding: 0;\n    }\n\n    /* 表も同じく、記事の中だけで横スクロールさせる */\n    .nfn-article table {\n        display: block;\n        width: 100%;\n        overflow-x: auto;\n        border-collapse: collapse;\n        margin: 0 0 1.6em;\n        font-size: 13.5px;\n    }\n\n    .nfn-article th,\n    .nfn-article td {\n        border: 1px solid var(--nf-grid);\n        padding: 10px 14px;\n        text-align: left;\n    }\n\n    .nfn-article th {\n        background: var(--nf-blue-wash);\n        color: var(--nf-ink);\n        font-weight: 800;\n        white-space: nowrap;\n    }\n\n    /* --------------------------------------------------- 記事下部 */\n    .nfn-afoot {\n        margin-top: 48px;\n        padding-top: 26px;\n        border-top: 1px solid var(--nf-grid);\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 18px;\n        flex-wrap: wrap;\n    }\n\n    .nfn-share {\n        display: flex;\n        align-items: center;\n        gap: 10px;\n    }\n\n    .nfn-share-label {\n        font-family: var(--nf-mono);\n        font-size: 11px;\n        letter-spacing: 0.14em;\n        color: var(--nf-ink-faint);\n    }\n\n    .nfn-share button {\n        display: inline-flex;\n        border-radius: 50%;\n        transition: transform 0.25s var(--nf-ease);\n    }\n\n    .nfn-share button:hover {\n        transform: translateY(-2px);\n    }\n\n    /* --------------------------------------------------- 本文中のリンクカード */\n    /* 掲載記事など、リンク先が分かる形で置きたい外部リンク。記事の md に\n       <div class="nfn-lcard-wrap"><a class="nfn-lcard" ...>…</a></div> と直接書く\n       (marked に生 HTML のまま通させるので、この div の中に空行を入れないこと)。\n       サムネイルはリンク先ã
1® OGP 画像をそのまま参照する(画像は複製しない)。 */\n    .nfn-lcard-wrap {\n        margin: 30px 0;\n    }\n\n    .nfn-article a.nfn-lcard {\n        display: flex;\n        align-items: stretch;\n        color: inherit;\n        text-decoration: none;\n        background: var(--nf-paper);\n        border: 1px solid var(--nf-grid);\n        border-radius: 12px;\n        overflow: hidden;\n        transition:\n            border-color 0.2s,\n            box-shadow 0.25s var(--nf-ease),\n            transform 0.25s var(--nf-ease);\n    }\n\n    .nfn-article a.nfn-lcard:hover {\n        color: inherit;\n        border-color: var(--nf-axis);\n        box-shadow: var(--nf-sh-1);\n        transform: translateY(-2px);\n    }\n\n    /* 画像は絶対配置で枠を埋める。カードの高さは右のテキスト側で決まる */\n    .nfn-lcard-thumb {\n        flex: 0 0 38%;\n        position: relative;\n        background: var(--nf-ground);\n        border-right: 1px solid var(--nf-grid);\n    }\n\n    .nfn-article .nfn-lcard-thumb img {\n        position: absolute;\n        inset: 0;\n        width: 100%;\n        height: 100%;\n        margin: 0;\n        border: 0;\n        border-radius: 0;\n        box-shadow: none;\n        object-fit: cover;\n    }\n\n    .nfn-lcard-txt {\n        flex: 1 1 auto;\n        min-width: 0;\n        display: flex;\n        flex-direction: column;\n        justify-content: center;\n        gap: 6px;\n        padding: 16px 18px;\n    }\n\n    .nfn-lcard-site {\n        font-size: 12px;\n        line-height: 1.6;\n        color: var(--nf-ink-faint);\n    }\n\n    .nfn-lcard-title {\n        font-size: 15.5px;\n        font-weight: 800;\n        line-height: 1.65;\n        color: var(--nf-ink);\n    }\n\n    .nfn-lcard-host {\n        font-family: var(--nf-mono);\n        font-size: 11px;\n        letter-spacing: 0.08em;\n        color: var(--nf-ink-faint);\n    }\n\n    /* スマホでは縦積みにして、画像は 1.91:1(OGP と同じ比率)の帯にする */\n    @media (max-width: 640px) {\n        .nfn-article a.nfn-lcard {\n            display: block;\n        }\n\n        /* display:block にしないと span のまま inline で、aspect-ratio が効かない */\n        .nfn-lcard-thumb {\n            display: block;\n            aspect-ratio: 1.91 / 1;\n            border-right: 0;\n            border-bottom: 1px solid var(--nf-grid);\n        }\n\n        .nfn-lcard-txt {\n            padding: 14px 16px;\n        }\n    }\n']);return o=function(){return n},n}let l=(0,i.iv)(o());e.Z=()=>(0,a.jsx)(i.xB,{styles:l})},6208:function(n,e,r){r.d(e,{Z:function(){return a}});var t=r(5893);r(7294);var a=n=>{let{src:e,webpSrc:r,smallSrc:a,alt:i,className:o,loading:l="lazy"}=n;return(0,t.jsxs)("picture",{children:[a?(0,t.jsx)("source",{srcSet:a,type:"image/webp"}):null,r?(0,t.jsx)("source",{srcSet:r,type:"image/webp"}):null,(0,t.jsx)("img",{src:e,alt:i,className:o,loading:l,decoding:"async",...a?{width:276,height:180}:{}})]})}},345:function(n,e,r){var t=r(7294);e.Z=()=>{(0,t.useEffect)(()=>{let n=Array.from(document.querySelectorAll(".nf-rv"));if(0===n.length)return;if("function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches||"undefined"==typeof IntersectionObserver){n.forEach(n=>n.classList.add("in"));return}let e=new IntersectionObserver(n=>{n.forEach(n=>{n.isIntersecting&&(n.target.classList.add("in"),e.unobserve(n.target))})},{threshold:.12,rootMargin:"0px 0px -40px 0px"});return n.forEach(n=>{n.classList.contains("in")||e.observe(n)}),()=>e.disconnect()},[])}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.