{"id":1359,"date":"2025-09-06T01:13:24","date_gmt":"2025-09-05T16:13:24","guid":{"rendered":"https:\/\/shinke1987.net\/?p=1359"},"modified":"2025-09-06T01:52:40","modified_gmt":"2025-09-05T16:52:40","slug":"ip%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e3%81%8b%e3%82%89%e5%9b%bd%e3%82%92%e5%88%a4%e5%88%a5%e3%81%99%e3%82%8bphp%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88","status":"publish","type":"post","link":"https:\/\/shinke1987.net\/?p=1359","title":{"rendered":"IP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u56fd\u3092\u5224\u5225\u3059\u308bPHP\u30b9\u30af\u30ea\u30d7\u30c8"},"content":{"rendered":"\n<h2 id=\"toc0\" class=\"wp-block-heading\">\u53c2\u8003\u8cc7\u6599<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.datacurrent.co.jp\/column\/ip-rir-country-detect_20220704\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u3010\u30c6\u30c3\u30af\u30b3\u30e9\u30e0\u3011RIR | IP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u56fd\u306e\u7279\u5b9a\u3092\u81ea\u524d\u3067\u3057\u3066\u307f\u308b | DataCurrent<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/qiita.com\/Kaz_Macintosh\/items\/86b977f9cdddaf99772a\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u4e16\u754c\u306eIP\u30a2\u30c9\u30ec\u30b9\u5272\u308a\u5f53\u3066\u30ea\u30b9\u30c8\u304b\u3089CIDR\u8868\u8a18\u306e\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3059\u308b #PHP &#8211; Qiita<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.iso.org\/obp\/ui\/#search\/code\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">ISO3316-1\u306e\u56fd\u540d\u30b3\u30fc\u30c9\u4e00\u89a7<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5272\u308a\u5f53\u3066\u6e08\u307fIP\u30a2\u30c9\u30ec\u30b9\u306e\u30ea\u30b9\u30c8\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/ftp.arin.net\/pub\/stats\/arin\/delegated-arin-extended-latest\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">ARIN<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/ftp.ripe.net\/pub\/stats\/ripencc\/delegated-ripencc-latest\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">RIPE NCC<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/ftp.apnic.net\/pub\/stats\/apnic\/delegated-apnic-latest\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">APNIC<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/ftp.lacnic.net\/pub\/stats\/lacnic\/delegated-lacnic-latest\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LACNIC<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/ftp.afrinic.net\/pub\/stats\/afrinic\/delegated-afrinic-latest\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">AfriNIC<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 id=\"toc1\" class=\"wp-block-heading\">\u74b0\u5883<\/h2>\n\n\n\n<p>macOS\uff1aSequoia 15.6.1<\/p>\n\n\n\n<p>PHP\uff1a8.4.8<\/p>\n\n\n\n<h2 id=\"toc2\" class=\"wp-block-heading\">\u76ee\u7684\u3068\u611f\u60f3<\/h2>\n\n\n\n<p>\u6307\u5b9a\u3057\u305fIP\u30a2\u30c9\u30ec\u30b9\u304c\u3069\u3053\u306e\u56fd\u306e\u3082\u306e\u304b\u77e5\u308a\u305f\u3044\u3002<\/p>\n\n\n\n<p>\u4e0b\u8a18\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u5b9f\u884c\u6a29\u9650\u4e0e\u3048\u305f\u3089\u3001\u300c.\/\u30d5\u30a1\u30a4\u30eb\u540d IP\u30a2\u30c9\u30ec\u30b9\u300d\u3068\u3044\u3046\u5f62\u3067\u5b9f\u884c\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<p>Mac\u3067\u4f5c\u3063\u305f\u306e\u3067\u3001\u30b7\u30d0\u30f3\u306b\u8a18\u8f09\u3057\u3066\u3044\u308bPHP\u306e\u30d1\u30b9\u306f\u9069\u5b9c\u5909\u66f4\u304c\u5fc5\u8981\u304b\u3082\u3057\u308c\u306a\u3044\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>IP\u30a2\u30c9\u30ec\u30b9\u306e\u30ea\u30b9\u30c8\u304c\u8a18\u8f09\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092wget\u7b49\u3067\u4e88\u3081\u53d6\u5f97\u3057\u3066\u304a\u3051\u3070\u3001\u6642\u9593\u304c\u5927\u5e45\u306b\u77ed\u7e2e\u3055\u308c\u308b\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>wget\u7b49\u3067\u53d6\u5f97\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001$url\u5909\u6570\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3057\u3066\u3044\u308b\u90e8\u5206\u3092\u5229\u7528\u3059\u308c\u3070\u826f\u3044\u304c\u3001\u5b9f\u884c\u5b8c\u4e86\u307e\u3067\u306b\u7d04313\u79d2\u304b\u304b\u3063\u305f\u3002<\/p>\n\n\n\n<p>wget\u7b49\u3067\u4e88\u3081IP\u30a2\u30c9\u30ec\u30b9\u306e\u30ea\u30b9\u30c8\u304c\u8a18\u8f09\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u5b9f\u884c\u5b8c\u4e86\u307e\u3067\u306b\u7d040.7\u79d2\u304b\u304b\u3063\u305f\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u30e1\u30e2\u30ea\u306e\u6700\u5927\u4f7f\u7528\u91cf\u306f\u7d0479MB\u3068\u7d50\u69cb\u4f7f\u3063\u3066\u3044\u305f\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3082\u3057\u5b9f\u969b\u306b\u516c\u958b\u3057\u3066\u4f7f\u3046\u306a\u3089\u3001IP\u30a2\u30c9\u30ec\u30b9\u306e\u30ea\u30b9\u30c8\u3092\u30d5\u30a1\u30a4\u30eb\u3067\u306a\u304fDB\uff08SQLite\u3068\u304b\u3067\u3082\u826f\u3055\u305d\u3046\uff1f\uff09\u306b\u4fdd\u5b58\u3059\u308c\u3070\u3001\u3082\u3063\u3068\u65e9\u304f\u3001\u3082\u3063\u3068\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6e1b\u3089\u305b\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u3002<br>\u305d\u306e\u6642\u306flong\u5f62\u5f0f\u3067\u3082IP\u30a2\u30c9\u30ec\u30b9\u3092\u4fdd\u5b58\u3059\u308b\u3068\u826f\u3044\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>5\u3064\u306eIP\u30a2\u30c9\u30ec\u30b9\u30ea\u30b9\u30c8\u306b\u3066\u3001IPv4\u306e\u958b\u59cbIP\u30a2\u30c9\u30ec\u30b9\u306f4672\u500b\u3060\u3063\u305f\u3002\u4e0b\u8a18\u30b3\u30de\u30f3\u30c9\u3067\u78ba\u8a8d\u3057\u305f\u3002<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ngrep -v -E &#039;^&#x5B;^\\|]+\\|\\*\\|ipv4&#039; delegated-* | grep &#039;ipv4&#039; | grep &#039;JP&#039; | awk -F\\| &#039;{print $4}&#039; | sort | uniq | wc -l\n<\/pre><\/div>\n\n\n<p><\/p>\n\n\n\n<h2 id=\"toc3\" class=\"wp-block-heading\">\u30b3\u30fc\u30c9<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n#!\/opt\/homebrew\/bin\/php\n&lt;?php\n\nrequire_once &quot;vendor\/autoload.php&quot;;\n\/\/ \u56fd\u540d\u30b3\u30fc\u30c9\u3068\u65e5\u672c\u8a9e\u306e\u56fd\u540d\u3092\u7d10\u4ed8\u3051\u308b\u305f\u3081\u306b\u6b21\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3002\n\/\/ composer require sukohi\/country-code\n\n\/\/echo &#039;argv : &#039; . $argv&#x5B;1] . PHP_EOL;\n\n\n\/\/ \u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u5f15\u6570\u304c\u4e0e\u3048\u3089\u308c\u306a\u304b\u3063\u305f\u3089\u7d42\u4e86\u3059\u308b\u3002\nif (!isset($argv&#x5B;1])) {\n    exit(1);\n}\n\n\/\/ \u4e0e\u3048\u3089\u308c\u305f\u5f15\u6570\u304cIPv4\u3092\u8868\u3059\u5f62\u5f0f\u3067\u306a\u3051\u308c\u3070\u7d42\u4e86\u3059\u308b\u3002\n$formatCheck = preg_match(&#039;\/^\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}$\/&#039;, $argv&#x5B;1]);\nif ($formatCheck !== 1) {\n    exit(1);\n}\n\n\/\/$startMicroTimeFalse = microtime(false);\n\/\/$startMicroTimeTrue = microtime(true);\n\/\/echo &#039;\u958b\u59cb microtime(false) : &#039; . $startMicroTimeFalse . PHP_EOL;\n\/\/echo &#039;\u958b\u59cb microtime(true) : &#039; . $startMicroTimeTrue . PHP_EOL;\n\/\/echo &#039;\u30e1\u30e2\u30ea\u6700\u5927\u4f7f\u7528\u91cf : &#039;.number_format(memory_get_peak_usage(true) \/ 1024).&#039; KB&#039;.PHP_EOL;\n\n\/\/ RIR\u306e\u5272\u308a\u5f53\u3066\u6e08\u307fIP\u30a2\u30c9\u30ec\u30b9\u306e\u30ea\u30b9\u30c8\u3002\n$url = &#x5B;\n    \/\/ \u3082\u3057\u30cd\u30c3\u30c8\u4e0a\u306eURL\u304b\u3089\u53d6\u5f97\u3057\u305f\u3044\u306a\u3089\u3001\u3053\u306eURL\u3092\u5229\u7528\u3059\u308b\u3068\u826f\u3044\u3002\u305f\u3060\u3057\u3001\u8a66\u3057\u305f\u3089\u5b8c\u4e86\u307e\u3067\u7d04313\u79d2\u304b\u304b\u3063\u305f\u3002\n    \/\/ \u3042\u3089\u304b\u3058\u3081\u30d5\u30a1\u30a4\u30eb\u3092wget\u7b49\u3067\u53d6\u5f97\u3057\u3066\u304a\u3051\u3070\u3001\u7d040.7\u79d2\u3067\u5b8c\u4e86\u3057\u305f\u3002\n\/\/    &#039;http:\/\/ftp.arin.net\/pub\/stats\/arin\/delegated-arin-extended-latest&#039;,\n\/\/    &#039;http:\/\/ftp.ripe.net\/pub\/stats\/ripencc\/delegated-ripencc-latest&#039;,\n\/\/    &#039;http:\/\/ftp.apnic.net\/pub\/stats\/apnic\/delegated-apnic-latest&#039;,\n\/\/    &#039;http:\/\/ftp.lacnic.net\/pub\/stats\/lacnic\/delegated-lacnic-latest&#039;,\n\/\/    &#039;http:\/\/ftp.afrinic.net\/pub\/stats\/afrinic\/delegated-afrinic-latest&#039;,\n    &#039;delegated-arin-extended-latest&#039;,\n    &#039;delegated-ripencc-latest&#039;,\n    &#039;delegated-apnic-latest&#039;,\n    &#039;delegated-lacnic-latest&#039;,\n    &#039;delegated-afrinic-latest&#039;,\n];\n\n\/\/ ipv4List&#x5B;\u56fd\u540d\u30b3\u30fc\u30c9] = &#x5B;\u958b\u59cbIP\u30a2\u30c9\u30ec\u30b9, IP\u30a2\u30c9\u30ec\u30b9\u306e\u500b\u6570] \u3068\u306a\u308b\u3002\n\/\/ \u56fd\u540d\u30b3\u30fc\u30c9\u306fISO3166-1 alpha-2\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u3002\n$ipv4List = &#x5B;];\n\nfor ($i = 0; $i &lt; count($url); $i++) {\n    \/\/ \u30d5\u30a1\u30a4\u30eb\u304b\u3089\u60c5\u5831\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3068\u3081\u308b\u3002\n    $file = fopen(\n        $url&#x5B;$i],\n        &#039;r&#039;\n    ) or die(&#039;\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002&#039;);\n\n    \/\/ \u56fd\u3092\u8868\u3059\u6587\u5b57\u5217\u304c\u3042\u308a\u3001ipv4\u306e\u60c5\u5831\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306e\u6b63\u898f\u8868\u73fe\u3002\n    $pattern = &#039;\/^.+\\|&#x5B;^*]+\\|ipv4\\|.+$\/&#039;;\n\n    while ($line = fgets($file, 4096)) {\n        if (preg_match($pattern, $line, $matches) === 1) {\n            \/\/ ipv4\u306e\u60c5\u5831\u306e\u5834\u5408\u3002\n            $temp = explode(&#039;|&#039;, $matches&#x5B;0]);\n\/\/        echo &#039;\u56fd : &#039; . $temp&#x5B;1] . PHP_EOL;\n\/\/        echo &#039;\u958b\u59cbIP\u30a2\u30c9\u30ec\u30b9 : &#039; . $temp&#x5B;3] . PHP_EOL;\n\/\/        echo &#039;IP\u30a2\u30c9\u30ec\u30b9\u306e\u500b\u6570 : &#039; . $temp&#x5B;4]. PHP_EOL;\n\n            $ipv4List&#x5B;$temp&#x5B;1]]&#x5B;] = &#x5B;$temp&#x5B;3], $temp&#x5B;4]];\n        }\n    }\n\n    fclose($file);\n\/\/    echo $url&#x5B;$i] . &#039; \u306e\u8aad\u307f\u8fbc\u307f\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002&#039; . PHP_EOL;\n}\n\n\n\/\/ \u6307\u5b9a\u3055\u308c\u305fIP\u30a2\u30c9\u30ec\u30b9\u304c\u3069\u306e\u56fd\u3067\u5229\u7528\u3055\u308c\u3066\u3044\u305f\u306e\u304b\u5224\u5225\u3059\u308b\u3002\n$target = $argv&#x5B;1];\n$longTarget = ip2long($target);\n\n\n\/\/ \u6307\u5b9a\u3055\u308c\u305fIP\u30a2\u30c9\u30ec\u30b9\u306e\u958b\u59cbIP\u30a2\u30c9\u30ec\u30b9\u3068\u3001\u305d\u308c\u306b\u7d10\u4ed8\u304f\u56fd\u3092\u78ba\u8a8d\u3059\u308b\u3002\n\/\/ $startIpAddr&#x5B;long\u5f62\u5f0f\u306eIP\u30a2\u30c9\u30ec\u30b9] = &#x5B;\u56fd\u540d\u30b3\u30fc\u30c9, IP\u30a2\u30c9\u30ec\u30b9\u306e\u500b\u6570]\n$startIpAddr = &#x5B;];\nforeach ($ipv4List as $country =&gt; $ipv4) {\n    for ($index = 0; $index &lt; count($ipv4); $index++) {\n        $longIpAddr = ip2long($ipv4&#x5B;$index]&#x5B;0]);\n\n        if ($longTarget &gt; $longIpAddr) {\n            \/\/ long\u5909\u63db\u5f8c\u3001\u6307\u5b9a\u3055\u308c\u305fIP\u30a2\u30c9\u30ec\u30b9\u3088\u308a\u5c0f\u3055\u3044\u3082\u306e\u3092$startIpAddr\u3078\u683c\u7d0d\u3002\n            $startIpAddr&#x5B;$longIpAddr] = &#x5B;$country, $ipv4&#x5B;$index]&#x5B;1]];\n        }\n    }\n}\n\nunset($ipv4List);\n\n\/\/ \u964d\u9806\u306b\u30bd\u30fc\u30c8\u3002\nkrsort($startIpAddr, SORT_NUMERIC);\n\n\/\/ $target\u306eIP\u30a2\u30c9\u30ec\u30b9\u304c\u3001$startIpAddr\u306b\u4fdd\u5b58\u3055\u308c\u305f\u30011\u756a\u5927\u304d\u306a\u958b\u59cbIP\u30a2\u30c9\u30ec\u30b9\u306b\u6240\u5c5e\u3059\u308b\u304b\u78ba\u8a8d\u3002\n\/\/ \u78ba\u8a8d\u3057\u3066\u542b\u307e\u308c\u308c\u3070\u3001$result\u306b\u65e5\u672c\u8a9e\u306e\u56fd\u540d\u304c\u5165\u308b\u3002\n\/\/ \u78ba\u8a8d\u3057\u3066\u542b\u307e\u308c\u306a\u3051\u308c\u3070\u3001\u4e0d\u660e\u3068\u306a\u308b\u3002\n$result = &#039;\u4e0d\u660e&#039;;\n$minIpAddr = array_key_first($startIpAddr);\n$maxIpAddr = $minIpAddr + $startIpAddr&#x5B;array_key_first($startIpAddr)]&#x5B;1];\n\nif (\n    $minIpAddr &lt; $longTarget &amp;&amp;\n    $maxIpAddr &gt; $longTarget\n) {\n    \/\/ \u56fd\u540d\u30b3\u30fc\u30c9\u3068\u65e5\u672c\u8a9e\u306e\u56fd\u540d\u3092\u7d10\u4ed8\u3051\u308b\u6e96\u5099\u3002\n    $countryCode = new \\Sukohi\\CountryCode\\CountryCode();\n    $locale = &#039;ja&#039;;\n\n    $result = $countryCode-&gt;countryName(key: $startIpAddr&#x5B;array_key_first($startIpAddr)]&#x5B;0], locale: $locale);\n}\n\nexit($result . PHP_EOL);\n\n\/\/echo $result.PHP_EOL;\n\/\/echo &#039;\u7d50\u679c : &#039;.$result.PHP_EOL;\n\n\/\/echo &#039;\u30e1\u30e2\u30ea\u6700\u5927\u4f7f\u7528\u91cf : &#039;.number_format(memory_get_peak_usage(true) \/ 1024).&#039; KB&#039;.PHP_EOL;\n\n\/\/$endMicroTimeFalse = microtime(false);\n\/\/$endMicroTimeTrue = microtime(true);\n\/\/echo &#039;\u7d42\u4e86 microtime(false) : &#039; . $endMicroTimeFalse . PHP_EOL;\n\/\/echo &#039;\u7d42\u4e86 microtime(true) : &#039; . $endMicroTimeTrue . PHP_EOL;\n\/\/echo &#039;\u7d42\u4e86 - \u958b\u59cb : &#039; . $endMicroTimeTrue - $startMicroTimeTrue . PHP_EOL;\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>\u53c2\u8003\u8cc7\u6599 \u74b0\u5883 macOS\uff1aSequoia 15.6.1 PHP\uff1a8.4.8 \u76ee\u7684\u3068\u611f\u60f3 \u6307\u5b9a\u3057\u305fIP\u30a2\u30c9\u30ec\u30b9\u304c\u3069\u3053\u306e\u56fd\u306e\u3082\u306e\u304b\u77e5\u308a\u305f\u3044\u3002 \u4e0b\u8a18\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u5b9f\u884c\u6a29\u9650\u4e0e\u3048\u305f\u3089\u3001\u300c.\/\u30d5\u30a1\u30a4\u30eb\u540d IP\u30a2\u30c9\u30ec\u30b9\u300d\u3068\u3044\u3046\u5f62\u3067\u5b9f\u884c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[81],"class_list":["post-1359","post","type-post","status-publish","format-standard","hentry","category-php","tag-php"],"_links":{"self":[{"href":"https:\/\/shinke1987.net\/index.php?rest_route=\/wp\/v2\/posts\/1359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shinke1987.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shinke1987.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shinke1987.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shinke1987.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1359"}],"version-history":[{"count":9,"href":"https:\/\/shinke1987.net\/index.php?rest_route=\/wp\/v2\/posts\/1359\/revisions"}],"predecessor-version":[{"id":1368,"href":"https:\/\/shinke1987.net\/index.php?rest_route=\/wp\/v2\/posts\/1359\/revisions\/1368"}],"wp:attachment":[{"href":"https:\/\/shinke1987.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shinke1987.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shinke1987.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}