{"id":52391,"date":"2026-09-11T11:30:00","date_gmt":"2026-09-11T02:30:00","guid":{"rendered":"http:\/\/V-CMS.library.local\/?page_id=52391"},"modified":"2026-09-11T11:30:03","modified_gmt":"2026-09-11T02:30:03","slug":"slag2367","status":"publish","type":"page","link":"https:\/\/www.library.pref.osaka.jp\/site\/business\/z-sokuhou-03shokuryouhin.html","title":{"rendered":"\u30d3\u30b8\u30cd\u30b9\u8cc7\u6599\u5ba4\u3000\u958b\u67b6\u96d1\u8a8c\u3000\u8a18\u4e8b\u901f\u5831\uff08\uff13\uff0e\u98df\u6599\u54c1\uff09"},"content":{"rendered":"\n<a id=\"top\"><\/a>\n\n<div>\u76ee\u6b21\u60c5\u5831\u306f\u968f\u6642\u66f4\u65b0\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/div>\n<hr \/>\n<div id=\"loadingStatus\"\n     style=\"\n        margin:10px 0;\n        padding:8px;\n        font-weight:bold;\n        color:#005bac;\n     \">\n<\/div>\n\n<div id=\"toc\"><\/div>\n<div id=\"feeds\"><\/div>\n\n<script>\n\n\/\/ RSS\u4e00\u89a7\nconst rssList = [\n    {\n        name: \"\u300e\u98f2\u98df\u5e97\u7d4c\u55b6\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z4-372\"\n    },\n    {\n        name: \"\u300e\u7802\u7cd6\u985e\u30fb\u3067\u3093\u7c89\u60c5\u5831\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z74-H519\"\n    },\n    {\n        name: \"\u300e\u9152\u985e\u98df\u54c1\u7d71\u8a08\u6708\u5831\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z3-867\"\n    },\n    {\n        name: \"\u300e\u98df\u54c1\u5546\u696d\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z4-322\"\n    },\n    {\n        name: \"\u300e\u98df\u54c1\u3068\u958b\u767a\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z17-380\"\n    },\n    {\n        name: \"\u300e\u98df\u54c1\u3068\u5bb9\u5668\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z17-404\"\n    },\n    {\n        name: \"\u300e\uff08\u6708\u520a\uff09\u98df\u7ce7\u30b8\u30e3\u30fc\u30ca\u30eb\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z3-1958\"\n    },\n    {\n        name: \"\u300eFoods & food ingredients journal of Japan\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z17-166\"\n    },\n    {\n        name: \"\u300e\u88fd\u83d3\u88fd\u30d1\u30f3\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z17-422\"\n    },\n    {\n        name: \"\u300e\u30bd\u30a4\u30d5\u30fc\u30c9\u30b8\u30e3\u30fc\u30ca\u30eb\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z74-J890\"\n    },\n    {\n        name: \"\u300e\u30df\u30fc\u30c8\u30b8\u30e3\u30fc\u30ca\u30eb\u300f\",\n        url: \"https:\/\/ndlsearch.ndl.go.jp\/rss\/ndls\/bib.xml?cs=bib&display=panel&from=0&sort=published%3Adesc&f-ht=ndl&f-ht=library&f-mt=article&f-repository=R000000004&size=50&f-callno=Z18-841\"\n    }\n];\n\n\/\/ lib-api.net\uff08JSONP\uff09\nconst api = \"https:\/\/lib-api.net\/rss2json?url=\";\n\nconst toc = document.getElementById(\"toc\");\nconst container = document.getElementById(\"feeds\");\nconst loadingStatus = document.getElementById(\"loadingStatus\");\n\nlet callbackId = 0;\ncleanupReadHistory();\n\n\/\/========================================\n\/\/ 30\u65e5\u4ee5\u4e0a\u524d\u306e\u65e2\u8aad\u60c5\u5831\u3092\u524a\u9664\n\/\/========================================\n\nfunction cleanupReadHistory() {\n\n    const THIRTY_DAYS = 30 * 24 * 60 * 60 * 1000;\n    const now = Date.now();\n\n    for (let i = localStorage.length - 1; i >= 0; i--) {\n\n        const key = localStorage.key(i);\n\n        if (!key.startsWith(\"read_\")) continue;\n\n        const timestamp = Number(localStorage.getItem(key));\n\n        if (!timestamp || now - timestamp > THIRTY_DAYS) {\n            localStorage.removeItem(key);\n        }\n\n    }\n\n}\n\n\/* ===========================\n   RSS\u672c\u6587\u89e3\u6790\n=========================== *\/\n\nfunction parseContent(item) {\n\n    const info = {\n        journal : \"\",\n        volume  : \"\",\n        year    : \"\",\n        pages   : \"\",\n        doi     : \"\"\n    };\n\n    \/\/--------------------------------------------------\n    \/\/ \u5143\u30c7\u30fc\u30bf\n    \/\/--------------------------------------------------\n\n    let text =\n        item.content ||\n        item.contentSnippet ||\n        item.description ||\n        \"\";\n\n    text = text.trim();\n\n    \/\/--------------------------------------------------\n    \/\/ \u2460 DOI\n    \/\/--------------------------------------------------\n\n    const doiStart =\n        text.search(\n            \/(?:DOI[:\uff1a]?\\s*|https?:\\\/\\\/doi\\.org\\\/|10\\.\\d{4,9}\\\/)\/i\n        );\n\n    if (doiStart >= 0) {\n        const doiText = text.substring(doiStart);\n        const dois =\n            doiText.match(\/10\\.\\d{4,9}\\\/\\S+\/g);\n        if (dois && dois.length > 0) {\n            info.doi = dois\n                .map(d => d.replace(\/[.;,]+$\/, \"\"))\n                .join(\"; \");\n        }\n        text = text.substring(0, doiStart).trim();\n    }\n\n    \/\/--------------------------------------------------\n    \/\/ \u2461 \u5e74\u6708\u3092\u5f8c\u308d\u304b\u3089\u63a2\u3059\n    \/\/--------------------------------------------------\n\n    const yearPatterns = [\n\n        \/\\d{4}\\.\\d+\\.\\d+(?:[-\\\/]\\d+)?\/g,\n        \/\\d{4}\\.\\d+(?:-\\d+)?(?:\u30fb\\d+)?\/g,\n        \/\\d{4}\\.\\d+(?:\\.\\d+)?(?:\u30fb\\d+)?\/g,\n        \/\\d{4}\\.[A-Za-z]+\/gi,\n        \/\\d{4}[A-Za-z]+\/gi,\n        \/\\d{4}\\.[^\\s,:]+\/g,\n        \/\\d{4}\/g\n    ];\n    let yearStart = -1;\n    let yearEnd = -1;\n    let lastMatch = null;\n    \/\/ \u3059\u3079\u3066\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u6700\u5f8c\u307e\u3067\u8abf\u3079\u308b\n    for (const p of yearPatterns) {\n        let r;\n        while ((r = p.exec(text)) !== null) {\n            \/\/ text\u4e2d\u3067\u4e00\u756a\u5f8c\u308d\u306b\u3042\u308b\u5e74\u6708\u3092\u63a1\u7528\n            if (!lastMatch || r.index > lastMatch.index) {\n                lastMatch = {\n                    index: r.index,\n                    value: r[0]\n                };\n            }\n        }\n        p.lastIndex = 0;\n    }\n    if (lastMatch) {\n        yearStart = lastMatch.index;\n        yearEnd = yearStart + lastMatch.value.length;\n        info.year = lastMatch.value;\n    }\n\n    \/\/--------------------------------------------------\n    \/\/ \u5e74\u6708\u304c\u53d6\u5f97\u3067\u304d\u305f\n    \/\/--------------------------------------------------\n\n    if (yearStart >= 0) {\n\n        \/\/--------------------------------------------------\n        \/\/ \u5e74\u6708\u306e\u5f8c\u308d\n        \/\/--------------------------------------------------\n\n        const afterYear = text.substring(yearEnd);\n        const comma = afterYear.indexOf(\",\");\n        if (comma >= 0) {\n            info.pages =\n                afterYear.substring(comma + 1).trim();\n        }\n\n        \/\/--------------------------------------------------\n        \/\/ \u5e74\u6708\u3088\u308a\u524d\n        \/\/--------------------------------------------------\n\n        let beforeYear =\n            text.substring(0, yearStart).trim();\n        if (beforeYear.endsWith(\":\")) {\n            beforeYear =\n                beforeYear.slice(0, -1).trim();\n        }\n\n        \/\/--------------------------------------------------\n        \/\/ \u5dfb\u53f7\u5224\u5b9a\n        \/\/--------------------------------------------------\n\n        const volumeDot =\n            beforeYear.lastIndexOf(\". \");\n        if (volumeDot >= 0) {\n            const tail =\n                beforeYear.substring(volumeDot + 2).trim();\n            if (\n                \/^\\d\/.test(tail) ||\n                \/^\\(\/.test(tail) ||\n                \/^No\\.\/i.test(tail) ||\n                \/^Vol\\.\/i.test(tail)\n            ) {\n                info.volume = tail;\n                beforeYear =\n                    beforeYear.substring(0, volumeDot).trim();\n            }\n        }\n\n        \/\/--------------------------------------------------\n        \/\/ \u8a8c\u540d\n        \/\/--------------------------------------------------\n\n        let remain = beforeYear;\n        const journalDot = remain.lastIndexOf(\". \");\n        if (journalDot >= 0) {\n            info.journal =\n                remain.substring(journalDot + 2).trim();\n        } else {\n            info.journal = remain.trim();\n        }\n    }\n\n    \/\/--------------------------------------------------\n    \/\/ \u5f8c\u59cb\u672b\n    \/\/--------------------------------------------------\n\n    [\n        \"journal\",\n        \"volume\",\n        \"year\",\n        \"pages\"\n    ].forEach(key => {\n        if (info[key]) {\n            info[key] = info[key]\n                .replace(\/\\.+$\/, \"\")\n                .trim();\n        }\n    });\n    return info;\n}\n\n\/* ===========================\n   RSS\u53d6\u5f97\uff08\u9010\u6b21\u8aad\u307f\u8fbc\u307f\uff09\n=========================== *\/\n\nfunction loadFeed(index) {\n    \/\/ \u5168\u4ef6\u7d42\u4e86\n    if (index >= rssList.length) {\n        loadingStatus.textContent =\n            `\u8aad\u307f\u8fbc\u307f\u5b8c\u4e86\uff08${rssList.length}\u4ef6\uff09`;\n        console.log(\"\u3059\u3079\u3066\u306eRSS\u306e\u53d6\u5f97\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\");\n        return;\n    }\n    const feed = rssList[index];\n    loadingStatus.textContent =\n        `\u8aad\u307f\u8fbc\u307f\u4e2d... ${index + 1}\u4ef6\u76ee \/ ${rssList.length}\u4ef6`;\n    const id = callbackId++;\n    const callbackName = \"readFeed_\" + id;\n\n    \/\/ ------------------------\n    \/\/ \u76ee\u6b21\n    \/\/ ------------------------\n\n    const tocLink = document.createElement(\"span\");\n    tocLink.innerHTML = `\n        <a href=\"#feed-${id}\">\n            ${feed.name}\n        <\/a>\n    `;\n    toc.appendChild(tocLink);\n\n    \/\/ ------------------------\n    \/\/ JSONP\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\n    \/\/ ------------------------\n\n    window[callbackName] = function(data) {\n        const div = document.createElement(\"div\");\n        div.className = \"feed\";\n        div.id = `feed-${id}`;\n        let html = `<h2>${feed.name}<\/h2>`;\n        if (!data || !Array.isArray(data.items)) {\n            html += `\n                <p style=\"color:red\">\n                    RSS\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\n                <\/p>\n            `;\n        } else {\n            let itemsHtml = \"\";\n\n            data.items.forEach((item, index) => {\n\n                const info = parseContent(item);\n\n                itemsHtml += `\n                <div class=\"item ${index >= 10 ? \"hidden-item\" : \"\"}\">\n                    <li>\n                    <a href=\"${item.link}\"\n                       target=\"_blank\"\n                       class=\"article-link\">\n                        ${item.title}\n                    <\/a>\n                    <div class=\"meta\">\n                        ${info.journal}\n                        ${info.volume ? \" \" + info.volume : \"\"}\n                        ${info.year ? \":\" + info.year : \"\"}\n                        ${info.pages ? \" p.\" + info.pages : \"\"}\n                    <\/div>\n                    <\/li>\n                    <br>\n                <\/div>\n                `;\n            });\n\n            html += itemsHtml;\n\n            html += `\n            <div class=\"feed-footer\">\n                ${\n                    data.items.length > 10\n                    ? `\n                    <button class=\"expand-btn\">\n                        \u25bc \u3082\u3063\u3068\u898b\u308b\uff08\u6b8b\u308a${data.items.length - 10}\u4ef6\uff09\n                    <\/button>\n                    <button class=\"collapse-btn\" style=\"display:none;\">\n                        \u25b2 10\u4ef6\u8868\u793a\u306b\u623b\u3059\n                     <\/button>\n                     `\n                    : \"\"\n                }\n\n                <a href=\"#top\" class=\"back-to-top\">\n                    \u3010\u30da\u30fc\u30b8\u30c8\u30c3\u30d7\u306b\u623b\u308b\u3011\n                <\/a>\n                <a href=\"https:\/\/www.library.pref.osaka.jp\/site\/business\/z-sokuhou.html#index\">\n                    \u3010\u96d1\u8a8c\u30b8\u30e3\u30f3\u30eb\u4e00\u89a7\u306b\u623b\u308b\u3011\n                <\/a>\n            <\/div>\n            `;\n            \n        }\n        div.innerHTML = html;\n\n        \/\/==============================\n        \/\/ \u65e2\u8aad\u72b6\u614b\u306e\u5fa9\u5143\n        \/\/==============================\n\n        div.querySelectorAll(\".article-link\").forEach(link => {\n\n            \/\/ URL\u304b\u3089\u8a18\u4e8bID\u3092\u53d6\u5f97\n            const match = link.href.match(\/R\\d+-I\\d+(?:-\\d+)?\/);\n\n            const key =\n                match ? \"read_\" + match[0]\n                      : \"read_\" + link.href;\n\n            \/\/ \u65e2\u8aad\u306a\u3089\u8272\u3092\u5909\u66f4\n            if (localStorage.getItem(key)) {\n                link.classList.add(\"read\");\n            }\n\n            \/\/ \u30af\u30ea\u30c3\u30af\u6642\u306b\u4fdd\u5b58\n            link.addEventListener(\"click\", () => {\n\n                localStorage.setItem(key, Date.now());\n                link.classList.add(\"read\");\n\n            });\n\n        });\n\n        const expandBtn = div.querySelector(\".expand-btn\");\n        const collapseBtn = div.querySelector(\".collapse-btn\");\n\n        if (expandBtn) {\n\n            const items = div.querySelectorAll(\".item\");\n            const totalCount = items.length;\n\n            \/\/ \u73fe\u5728\u8868\u793a\u4ef6\u6570\n            let visibleCount = 10;\n\n            \/\/----------------------------------\n            \/\/ \u8a18\u4e8b\u306e\u8868\u793a\u66f4\u65b0\n            \/\/----------------------------------\n\n            function updateItems() {\n                items.forEach((item, index) => {\n                    item.style.display =\n                        index < visibleCount ? \"block\" : \"none\";\n                });\n            }\n\n            \/\/----------------------------------\n            \/\/ \u30dc\u30bf\u30f3\u8868\u793a\u66f4\u65b0\n            \/\/----------------------------------\n\n            function updateButtons() {\n                const remain = totalCount - visibleCount;\n                if (visibleCount === totalCount) {\n\n                    \/\/ \u5168\u4ef6\u8868\u793a\n                    expandBtn.textContent = \"\u25b2 10\u4ef6\u8868\u793a\u306b\u623b\u3059\";\n                    expandBtn.style.display = \"inline-block\";\n                    collapseBtn.style.display = \"none\";\n                } else {\n\n                    \/\/ \u307e\u3060\u7d9a\u304d\u304c\u3042\u308b\n                    expandBtn.textContent =\n                        `\u25bc \u3082\u3063\u3068\u898b\u308b\uff08\u6b8b\u308a${remain}\u4ef6\uff09`;\n                    expandBtn.style.display = \"inline-block\";\n                    collapseBtn.style.display =\n                        visibleCount > 10 ? \"inline-block\" : \"none\";\n                }\n            }\n\n            \/\/----------------------------------\n            \/\/ \u521d\u671f\u8868\u793a\n            \/\/----------------------------------\n\n            updateItems();\n            updateButtons();\n\n            \/\/----------------------------------\n            \/\/ \u25bc\u3082\u3063\u3068\u898b\u308b\n            \/\/----------------------------------\n\n            expandBtn.addEventListener(\"click\", () => {\n                if (visibleCount < totalCount) {\n                    visibleCount =\n                        Math.min(visibleCount + 10, totalCount);\n                } else {\n                    visibleCount = 10;\n                }\n                updateItems();\n                updateButtons();\n            });\n\n            \/\/----------------------------------\n            \/\/ \u25b210\u4ef6\u623b\u3059\n            \/\/----------------------------------\n\n            collapseBtn.addEventListener(\"click\", () => {\n                visibleCount = 10;\n                updateItems();\n                updateButtons();\n            });\n        }\n        container.appendChild(div);\n        delete window[callbackName];\n        script.remove();\n        \/\/ 500ms\u5f85\u3063\u3066\u6b21\u306eRSS\u3078\n        setTimeout(() => {\n            loadFeed(index + 1);\n        }, 500);\n    };\n\n    \/\/ ------------------------\n    \/\/ JSONP\u8aad\u307f\u8fbc\u307f\n    \/\/ ------------------------\n\n    const script = document.createElement(\"script\");\n    script.src =\n        api +\n        encodeURIComponent(feed.url) +\n        \"&callback=\" +\n        callbackName;\n    \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\uff0815\u79d2\uff09\n    const timer = setTimeout(() => {\n        console.log(feed.name + \" \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\");\n        delete window[callbackName];\n        script.remove();\n        const div = document.createElement(\"div\");\n        div.className = \"feed\";\n        div.id = `feed-${id}`;\n        div.innerHTML = `\n            <h2>${feed.name}<\/h2>\n            <p style=\"color:red\">\n                \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\u3002\n            <\/p>\n        `;\n        container.appendChild(div);\n        \/\/ 1000ms\u5f85\u3063\u3066\u6b21\u3078\n        setTimeout(() => {\n            loadFeed(index + 1);\n        }, 1000);\n    }, 20000);\n    script.onload = function() {\n        clearTimeout(timer);\n    };\n    script.onerror = function() {\n        clearTimeout(timer);\n        console.log(feed.name + \" \u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\");\n        delete window[callbackName];\n        script.remove();\n        const div = document.createElement(\"div\");\n        div.className = \"feed\";\n        div.id = `feed-${id}`;\n        div.innerHTML = `\n            <h2>${feed.name}<\/h2>\n            <p style=\"color:red\">\n                \u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\n            <\/p>\n        `;\n        container.appendChild(div);\n        \/\/ 1000ms\u5f85\u3063\u3066\u6b21\u3078\n        setTimeout(() => {\n            loadFeed(index + 1);\n        }, 1000);\n    };\n    document.body.appendChild(script);\n}\n\n\/\/ \u6700\u521d\u306eRSS\u304b\u3089\u958b\u59cb\nloadFeed(0);\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u6b21\u60c5\u5831\u306f\u968f\u6642\u66f4\u65b0\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":52387,"menu_order":24490,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_themeisle_gutenberg_block_has_review":false,"_vk_print_noindex":"","sitemap_hide":"","vkExUnit_sitemap":"","_veu_custom_css":"","veu_display_promotion_alert":"common","_exclude_from_list_pages":"","vkExUnit_childPageIndex":"","vkExUnit_pageList_ancestor":"","footnotes":""},"class_list":["post-52391","page","type-page","status-publish","hentry"],"acf":[],"veu_head_title_object":{"title":"","add_site_title":""},"_links":{"self":[{"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=\/wp\/v2\/pages\/52391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=52391"}],"version-history":[{"count":15,"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=\/wp\/v2\/pages\/52391\/revisions"}],"predecessor-version":[{"id":123508,"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=\/wp\/v2\/pages\/52391\/revisions\/123508"}],"up":[{"embeddable":true,"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=\/wp\/v2\/pages\/52387"}],"wp:attachment":[{"href":"https:\/\/www.library.pref.osaka.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=52391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}