{"id":14519,"date":"2025-04-02T12:04:31","date_gmt":"2025-04-02T03:04:31","guid":{"rendered":"https:\/\/www.sambuichi.jp\/?p=14519"},"modified":"2025-04-02T14:02:30","modified_gmt":"2025-04-02T05:02:30","slug":"xbrl-gl-palette-taxonomy-parser","status":"publish","type":"post","link":"https:\/\/www.sambuichi.jp\/?p=14519","title":{"rendered":"XBRL GL \u30d1\u30ec\u30c3\u30c8\u30bf\u30af\u30bd\u30ce\u30df\u3000\u30d1\u30fc\u30b5\u30fc"},"content":{"rendered":"<p>Views: 23<\/p><div id=\"header\">\n<h1>XBRL GL \u30d1\u30ec\u30c3\u30c8\u30bf\u30af\u30bd\u30ce\u30df\u3000\u30d1\u30fc\u30b5\u30fc<\/h1>\n<div class=\"details\">\n<span id=\"author\" class=\"author\">Author: ChatGPT\uff08\u7de8\u96c6\uff1a\u4e09\u5206\u4e00 \u4fe1\u4e4b\uff09<\/span><br \/>\n<span id=\"revdate\">2025-04-02<\/span>\n<\/div>\n<\/div>\n<div id=\"content\">\n<div id=\"preamble\">\n<div class=\"sectionbody\">\n<div class=\"quoteblock abstract\">\n<blockquote><p>\n\u672c\u8a18\u4e8b\u3067\u306f\u3001XBRL GL\uff08XBRL Global Ledger\uff09\u30bf\u30af\u30bd\u30ce\u30df\u304b\u3089\u8ad6\u7406\u7684\u968e\u5c64\u30e2\u30c7\u30eb\uff08LHM\uff09\u69cb\u9020\u3092\u62bd\u51fa\u3059\u308b Python \u30d9\u30fc\u30b9\u306e\u30d1\u30fc\u30b5\u30fc\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002\u3053\u306e\u30d1\u30fc\u30b5\u30fc\u306f\u3001<code>labelArc<\/code> \u306b\u3088\u308a\u5b9a\u7fa9\u3055\u308c\u305f\u591a\u8a00\u8a9e\u30e9\u30d9\u30eb\u304a\u3088\u3073\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3082\u53d6\u5f97\u3057\u307e\u3059\u3002\u51fa\u529b\u306f\u69cb\u9020\u5316\u3055\u308c\u305f CSV \u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308a\u3001\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af\u5206\u6790\u3001\u5b9f\u88c5\u3001\u6587\u66f8\u5316\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\n<\/p><\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u80cc\u666f\">1. \u80cc\u666f<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>XBRL Global Ledger\uff08XBRL GL\uff09\u30d1\u30ec\u30c3\u30c8\u30bf\u30af\u30bd\u30ce\u30df\u306f\u3001\u4f1a\u8a08\u304a\u3088\u3073\u76e3\u67fb\u30c7\u30fc\u30bf\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306e XML \u30d9\u30fc\u30b9\u306e\u6a19\u6e96\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u7279\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305f\u69cb\u6210\u3067\u306f\u3001\u305d\u306e\u968e\u5c64\u69cb\u9020\u3092\u628a\u63e1\u3059\u308b\u306e\u304c\u56f0\u96e3\u3067\u3042\u308a\u3001labelArc \u306b\u3088\u308b\u591a\u8a00\u8a9e\u30e9\u30d9\u30eb\u306e\u5229\u7528\u3082\u8907\u96d1\u3055\u3092\u5897\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u3053\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3001\u751f\u306e\u30b9\u30ad\u30fc\u30de\u5b9a\u7fa9\u3068\u3001\u82f1\u8a9e\u304a\u3088\u3073\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3055\u308c\u305f\u30e9\u30d9\u30eb\uff08\u4f8b\uff1a\u65e5\u672c\u8a9e\uff09\u3092\u542b\u3080\u3001\u308f\u304b\u308a\u3084\u3059\u3044 CSV \u5f62\u5f0f\u3068\u306e\u6a4b\u6e21\u3057\u3092\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4e3b\u306a\u6a5f\u80fd\">2. \u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4e3b\u306a\u6a5f\u80fd<\/h2>\n<div class=\"sectionbody\">\n<div class=\"ulist\">\n<ul>\n<li>\n<p>\u3059\u3079\u3066\u306e <code>gl-<strong>.xsd<\/code> \u304a\u3088\u3073 <code>gl-<\/strong>-content.xsd<\/code> \u30b9\u30ad\u30fc\u30de\u3092\u8aad\u307f\u8fbc\u3080<\/p>\n<\/li>\n<li>\n<p><code>anyType<\/code> \u3092\u57fa\u5e95\u3068\u3059\u308b <code>complexType<\/code> \u5b9a\u7fa9\u3092 <strong>\u30bf\u30d7\u30eb<\/strong> \u3068\u3057\u3066\u8a8d\u8b58<\/p>\n<\/li>\n<li>\n<p>\u8981\u7d20\u540d\u3001\u578b\u3001\u51fa\u73fe\u56de\u6570\uff08cardinality\uff09\u3092\u62bd\u51fa<\/p>\n<\/li>\n<li>\n<p><code>label.xml<\/code> \u304a\u3088\u3073 <code>label-ja.xml<\/code> \u304b\u3089 <code>labelArc<\/code> \u3092\u7528\u3044\u3066\u30e9\u30d9\u30eb\u3092\u53d6\u5f97<\/p>\n<\/li>\n<li>\n<p>\u30e9\u30d9\u30eb\u8b58\u5225\u5b50\u306e\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u89e3\u6c7a\u306b\u5bfe\u5fdc<\/p>\n<\/li>\n<li>\n<p>\u30b9\u30ad\u30fc\u30de\u5185\u306e complexType \u304a\u3088\u3073 complexContent\/xs:sequence \u306e\u5b9a\u7fa9\u306b\u57fa\u3065\u304f\u8ad6\u7406\u69cb\u9020\u3092\u793a\u3059\u3001\u6ce8\u91c8\u4ed8\u304d\u306eCSV\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u52d5\u4f5c\u74b0\u5883\">3. \u52d5\u4f5c\u74b0\u5883<\/h2>\n<div class=\"sectionbody\">\n<div class=\"ulist\">\n<ul>\n<li>\n<p>Python 3.7 \u4ee5\u964d<\/p>\n<\/li>\n<li>\n<p><code>lxml<\/code> \u30e9\u30a4\u30d6\u30e9\u30ea\uff1a<\/p>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-shell\" data-lang=\"shell\">pip install lxml<\/code><\/pre>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u5b9f\u884c\u65b9\u6cd5\">4. \u5b9f\u884c\u65b9\u6cd5<\/h2>\n<div class=\"sectionbody\">\n<div class=\"sect2\">\n<h3 id=\"_\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u306e\u5b9f\u884c\">4.1. \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u306e\u5b9f\u884c<\/h3>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-shell\" data-lang=\"shell\">python xbrl_gl_label_parser.py --base-dir XBRL-GL-PWD-2016-12-01<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_\u30aa\u30d7\u30b7\u30e7\u30f3\u5f15\u6570\">4.2. \u30aa\u30d7\u30b7\u30e7\u30f3\u5f15\u6570<\/h3>\n<table class=\"tableblock frame-all grid-all stretch\">\n<colgroup>\n<col style=\"width: 25%;\">\n<col style=\"width: 75%;\">\n<\/colgroup>\n<thead>\n<tr>\n<th class=\"tableblock halign-left valign-top\">\u5f15\u6570<\/th>\n<th class=\"tableblock halign-left valign-top\">\u8aac\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>--base-dir<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><strong>(\u5fc5\u9808)<\/strong> XBRL GL \u30bf\u30af\u30bd\u30ce\u30df\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3078\u306e\u30d1\u30b9<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>--palette<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u30d1\u30ec\u30c3\u30c8\u30d5\u30a9\u30eb\u30c0\u306e\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d\uff08\u65e2\u5b9a\u5024: <code>case-c-b-m-u-e-t-s<\/code>\uff09<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>--lang<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u30e9\u30d9\u30eb\u306b\u4f7f\u7528\u3059\u308b\u8a00\u8a9e\u30b3\u30fc\u30c9\uff08\u65e2\u5b9a\u5024: <code>ja<\/code>\uff09\u3002\u4f8b\uff1a<code>en<\/code>, <code>ja<\/code> \u306a\u3069<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>--debug<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u8a73\u7d30\u306a\u30c7\u30d0\u30c3\u30b0\u51fa\u529b\u3092\u6709\u52b9\u306b\u3059\u308b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>--trace<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u4e0a\u4f4d\u30ec\u30d9\u30eb\u306e\u30c8\u30ec\u30fc\u30b9\u51fa\u529b\u3092\u6709\u52b9\u306b\u3059\u308b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>--output<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u51fa\u529b CSV \u30d5\u30a1\u30a4\u30eb\u540d\uff08\u65e2\u5b9a\u5024: <code>XBRL_GL_Parsed_LHM_Structure.csv<\/code>\uff09<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_vscode_\u306e_launch_json_\u3067\u306e\u4f8b\">4.3. VSCode \u306e <code>launch.json<\/code> \u3067\u306e\u4f8b<\/h3>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-json\" data-lang=\"json\">\"args\": [\r\n  \"--base-dir\", \"XBRL-GL-PWD-2016-12-01\",\r\n  \"--palette\", \"case-c-b\",\r\n  \"--lang\", \"ja\",\r\n  \"--debug\",\r\n  \"--trace\",\r\n  \"--output\", \"XBRL_GL_case-c-b_Structure.csv\"\r\n]<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u5165\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\">5. \u5165\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>\u30bf\u30af\u30bd\u30ce\u30df\u306e\u30d5\u30a9\u30eb\u30c0\u69cb\u6210\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-tree\" data-lang=\"tree\">XBRL-GL-PWD-2016-12-01\/\r\n\u251c\u2500\u2500 gl\/\r\n\u2502   \u251c\u2500\u2500 cor\/\r\n\u2502   \u2502   \u251c\u2500\u2500 gl-cor-2016-12-01.xsd\r\n\u2502   \u2502   \u2514\u2500\u2500 lang\/\r\n\u2502   \u2502       \u251c\u2500\u2500 gl-cor-2016-12-01-label.xml\r\n\u2502   \u2502       \u2514\u2500\u2500 gl-cor-2016-12-01-label-ja.xml\r\n\u2502   \u251c\u2500\u2500 bus\/\r\n\u2502   \u251c\u2500\u2500 muc\/\r\n\u2502   \u2514\u2500\u2500 ...\r\n\u251c\u2500\u2500 gl\/plt\/case-c-b\/\r\n\u2502   \u251c\u2500\u2500 gl-cor-content-2016-12-01.xsd\r\n\u2502   \u2514\u2500\u2500 ...<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u51fa\u529b\u7d50\u679c\">6. \u51fa\u529b\u7d50\u679c<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u6b21\u306e\u3088\u3046\u306a CSV \u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\uff1a<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code>Level,Element,Type,Path,isTuple,minOccurs,maxOccurs,BaseType,Label,Documentation,LocalLabel,LocalDocumentation\r\n1,accountingEntries,gl-cor:accountingEntriesComplexType,\/gl-cor:accountingEntries,True,1,unbounded,,Accounting Entries,Root for XBRL GL. No entry made here.,\u3010\u4f1a\u8a08\u4ed5\u8a33\u3011,XBRL GL\u306e\u30eb\u30fc\u30c8\u8981\u7d20\u3002 \u3053\u306e\u8981\u7d20\u306b\u306f\u30c7\u30fc\u30bf\u306f\u767b\u9332\u3055\u308c\u306a\u3044\u3002\r\n2,gl-cor:documentInfo,gl-cor:documentInfoComplexType,\/gl-cor:accountingEntries\/gl-cor:documentInfo,True,1,1,,Document Information,Parent for descriptive information about the accountingEntries section in which it is contained.,\u3010\u6587\u66f8\u60c5\u5831\u3011,\u3053\u306e\u4f1a\u8a08\u4ed5\u8a33\u306b\u95a2\u3059\u308b\u60c5\u5831\u306e\u89aa\u30bf\u30b0\u3002\r\n3,gl-cor:entriesType,gl-gen:entriesTypeItemType,\/gl-cor:accountingEntries\/gl-cor:documentInfo\/gl-cor:entriesType,False,1,1,xbrli:tokenItemType,Document Type,\"account: information to fill in a chart of accounts file.  \r\nbalance: the results of accumulation of a complete and validated list of entries for an account (or a list of account) in a specific period - sometimes called general ledger  \r\nentries: a list of individual accounting entries, which might be posted\/validated or nonposted\/validated   \r\njournal: a self-balancing (Dr = Cr) list of entries for a specific period including beginning balance for that period.  \r\nledger: a complete list of entries for a specific account (or list of accounts) for a specific period; note - debits do not have to equal credits.   \r\nassets: a listing of open receivables, payables, inventory, fixed assets or other information that can be extracted from but are not necessarily included as part of a journal entry.  \r\ntrialBalance: the self-balancing (Dr = Cr) result of accumulation of a complete and validated list of entries for the entity in a complete list of accounts in a specific period. <\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Google Drive<br \/>\n<a href=\"https:\/\/drive.google.com\/file\/d\/1DgwxLU9P7NXDcz2MbVLJ3jIAa6Cz5Q4u\/view?usp=sharing\">XBRL_GL_Parsed_LHM_Structure.csv<\/a><\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_csv_\u30ab\u30e9\u30e0\u69cb\u6210\">6.1. CSV \u30ab\u30e9\u30e0\u69cb\u6210<\/h3>\n<table class=\"tableblock frame-all grid-all stretch\">\n<colgroup>\n<col style=\"width: 25%;\">\n<col style=\"width: 75%;\">\n<\/colgroup>\n<thead>\n<tr>\n<th class=\"tableblock halign-left valign-top\">\u30ab\u30e9\u30e0\u540d<\/th>\n<th class=\"tableblock halign-left valign-top\">\u5185\u5bb9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>Level<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u968e\u5c64\u306e\u6df1\u3055\uff08\u30eb\u30fc\u30c8\u304b\u3089\u306e\u30ec\u30d9\u30eb\uff09<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>Element<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u8981\u7d20\u540d\uff08QName\u3001\u4f8b\uff1a<code>gl-cor:uniqueID<\/code>\uff09<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>Type<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u30b9\u30ad\u30fc\u30de\u3067\u306e\u578b\uff08\u4f8b\uff1a<code>gl-cor:uniqueIDItemType<\/code>\uff09<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>Path<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u968e\u5c64\u30d1\u30b9<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>isTuple<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u30bf\u30d7\u30eb\u3067\u3042\u308c\u3070 True<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>minOccurs<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u6700\u5c0f\u51fa\u73fe\u6570<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>maxOccurs<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u6700\u5927\u51fa\u73fe\u6570<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>BaseType<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u57fa\u5e95\u578b\uff08\u4f8b\uff1a<code>xbrli:stringItemType<\/code>\uff09<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>Label<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>label.xml<\/code> \u304b\u3089\u306e\u82f1\u8a9e\u30e9\u30d9\u30eb<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>Documentation<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u82f1\u8a9e\u306e\u8aac\u660e\u6587<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>LocalLabel<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3055\u308c\u305f\u30e9\u30d9\u30eb\uff08\u4f8b\uff1a\u65e5\u672c\u8a9e\uff09<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\"><code>LocalDocumentation<\/code><\/p>\n<\/td>\n<td class=\"tableblock halign-left valign-top\">\n<p class=\"tableblock\">\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3055\u308c\u305f\u8aac\u660e\u6587<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_\u6ce8\u610f\u70b9\">6.2. \u6ce8\u610f\u70b9<\/h3>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>\u30bf\u30d7\u30eb\u306f\u3001<code>complexType<\/code> \u304c <code>anyType<\/code> \u3092\u57fa\u5e95\u306b\u6301\u3064\u3053\u3068\u3067\u5224\u5b9a\u3055\u308c\u307e\u3059\u3002<\/p>\n<\/li>\n<li>\n<p>\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3055\u308c\u305f\u30e9\u30d9\u30eb\u306f <code>--lang ja<\/code> \u306e\u3088\u3046\u306b\u6307\u5b9a\u3057\u3066\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/li>\n<li>\n<p>\u4ed6\u306e\u30bf\u30af\u30bd\u30ce\u30df\u306b\u3082\u5bfe\u5fdc\u3067\u304d\u308b\u3088\u3046\u306b\u62e1\u5f35\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u95a2\u9023\u30ea\u30f3\u30af\">7. \u95a2\u9023\u30ea\u30f3\u30af<\/h2>\n<div class=\"sectionbody\">\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https:\/\/www.xbrl.org\/the-standard\/what\/global-ledger\/\" class=\"bare\">https:\/\/www.xbrl.org\/the-standard\/what\/global-ledger\/<\/a> \u2014 XBRL Global Ledger: \u53d6\u5f15\u30c7\u30fc\u30bf\u5831\u544a\u306e\u305f\u3081\u306e\u6a19\u6e96<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/specifications.xbrl.org\/spec-group-index-xbrl-gl.html\" class=\"bare\">https:\/\/specifications.xbrl.org\/spec-group-index-xbrl-gl.html<\/a> \u2014 XBRL GL \u4ed5\u69d8\u66f8\u4e00\u89a7<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.xbrl.org\/int\/gl\/2015-03-25\/GLTFTA-REC-2015-03-25.html\" class=\"bare\">https:\/\/www.xbrl.org\/int\/gl\/2015-03-25\/GLTFTA-REC-2015-03-25.html<\/a> \u2014 XBRL GL \u30bf\u30af\u30bd\u30ce\u30df\u30fb\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u6280\u8853\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\uff082015\u5e74\uff09<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u3054\u610f\u898b\u3054\u8cea\u554f\">8. \u3054\u610f\u898b\u30fb\u3054\u8cea\u554f<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u9069\u7528\u3084\u4ed6\u306e\u30bf\u30af\u30bd\u30ce\u30df\u5bfe\u5fdc\u306b\u95a2\u3059\u308b\u3054\u8cea\u554f\u30fb\u3054\u8981\u671b\u304c\u3042\u308a\u307e\u3057\u305f\u3089\u3001\u672c\u30da\u30fc\u30b8\u306e\u30b3\u30e1\u30f3\u30c8\u6b04\u307e\u3067\u304a\u6c17\u8efd\u306b\u304a\u5bc4\u305b\u304f\u3060\u3055\u3044\u3002\u6539\u5584\u63d0\u6848\u3084\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3082\u6b53\u8fce\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a18\u8ff0\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3067\u304d\u307e\u3059\uff1a<br \/>\nSOURCE<br \/>\nGoogle Drive <a href=\"https:\/\/drive.google.com\/file\/d\/1rC4xIVzt1zOTT4q6rNmjggmUHcmHX9ug\/view?usp=sharing\">xbrl_gl_palette_parser.py<\/a><\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\" style=\"overflow-x: auto; white-space: pre; height: 700px;\">\n<pre class=\"highlight\"><code class=\"language-python\" data-lang=\"python\">#!\/usr\/bin\/env python3\r\n# coding: utf-8\r\n\"\"\"\r\nxbrl_gl_palette_parser.py\r\nParses XBRL Global Ledger (XBRL GL) taxonomy and extracts labeled hierarchical element structures into CSV format.\r\n\r\nDesigned by SAMBUICHI, Nobuyuki (Sambuichi Professional Engineers Office)\r\nWritten by SAMBUICHI, Nobuyuki (Sambuichi Professional Engineers Office)\r\n\r\nCreation Date: 2025-04-02\r\n\r\nMIT License\r\n\r\n(c) 2025 SAMBUICHI, Nobuyuki (Sambuichi Professional Engineers Office)\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and\/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n\r\nUsage:\r\n    python xbrl_gl_label_parser.py --base-dir &lt;taxonomy-root-directory&gt; [--palette &lt;palette-subdir&gt;] [--lang &lt;language-code&gt;] [--debug] [--trace] [--output &lt;filename&gt;]\r\n\r\nArguments:\r\n    --base-dir     Required. Path to the root of the XBRL GL taxonomy (e.g., XBRL-GL-PWD-2016-12-01).\r\n    --palette      Optional. Subdirectory name of the palette folder (default: case-c-b-m-u-e-t-s).\r\n    --lang         Optional. Language code for multilingual labels. Default is 'ja'.\r\n    --debug        Optional. Enables detailed debug output.\r\n    --trace        Optional. Enables trace messages.\r\n    --output       Optional. Filename for the output CSV (default: XBRL_GL_Parsed_LHM_Structure.csv).\r\n\r\nExample:\r\n    python xbrl_gl_label_parser.py --base-dir XBRL-GL-PWD-2016-12-01 --palette case-c-b --lang ja --debug --output my_labels.csv\r\n\"\"\"\r\n\r\nimport lxml.etree as ET\r\nimport os\r\nimport re\r\nimport csv\r\nimport argparse\r\nfrom collections import defaultdict\r\n\r\nTRACE = True\r\nDEBUG = True\r\n\r\ndef trace_print(text):\r\n    if TRACE or DEBUG:\r\n        print(text)\r\n\r\ndef debug_print(text):\r\n    if DEBUG:\r\n        print(text)\r\n\r\n# Helper to clean label IDs\r\ndef clean_label_id(label_id):\r\n    label_id = re.sub(r\"^label_\", \"\", label_id)\r\n    label_id = re.sub(r\"(_lbl|_\\d+(_\\d+)?)$\", \"\", label_id)\r\n    return label_id\r\n\r\n# Argument parser for base directory\r\nparser = argparse.ArgumentParser(description=\"Parse XBRL-GL schemas and extract labeled hierarchy.\")\r\nparser.add_argument(\"--palette\", type=str, default=\"case-c-b-m-u-e-t-s\", help=\"Palette subdirectory under gl\/plt\/ (e.g. case-c-b or case-c-b-m-u-e-t-s)\")\r\nparser.add_argument(\"--base-dir\", type=str, required=True, help=\"Base directory path to XBRL GLtaxonomy, e.g. XBRL-GL-PWD-2016-12-01\")\r\nparser.add_argument(\"--debug\", action=\"store_true\", help=\"Enable debug output\")\r\nparser.add_argument(\"--trace\", action=\"store_true\", help=\"Enable trace output\")\r\nparser.add_argument(\"--lang\", type=str, default=\"ja\", help=\"Language code for local labels (e.g. 'ja', 'en')\")\r\nparser.add_argument(\"--output\", type=str, default=\"XBRL_GL_Parsed_LHM_Structure.csv\", help=\"Output CSV filename\")\r\n\r\nargs = parser.parse_args()\r\nbase_dir = args.base_dir\r\npalette = args.palette\r\nDEBUG = args.debug\r\nTRACE = args.trace\r\nLANG = args.lang\r\noutput_filename = args.output\r\n\r\nxsd_path = os.path.join(base_dir, f\"gl\/plt\/{palette}\/gl-cor-content-2016-12-01.xsd\")\r\nnamespaces = {\r\n    'xs': \"http:\/\/www.w3.org\/2001\/XMLSchema\",\r\n    'xbrli': \"http:\/\/www.xbrl.org\/2003\/instance\"\r\n}\r\nmodules = ['gen', 'cor', 'bus', 'muc', 'usk', 'ehm', 'taf', 'srcd']\r\n\r\n# Load base schemas and build type maps\r\nelement_type_map = {}\r\ntype_base_map = {}\r\ntype_base_lookup = {}\r\ncomplex_type_lookup = {}\r\nfor mod in modules:\r\n    path = os.path.join(base_dir, f\"gl\/{mod}\/gl-{mod}-2016-12-01.xsd\")\r\n    if os.path.exists(path):\r\n        tree = ET.parse(path)\r\n        root = tree.getroot()\r\n        for el in root.xpath(\"\/\/xs:element\", namespaces=namespaces):\r\n            name, type_ = el.get(\"name\"), el.get(\"type\")\r\n            if name and type_:\r\n                # debug_print(f\"gl-{mod}:{name}\")\r\n                element_type_map[f\"gl-{mod}:{name}\"] = type_\r\n        for tdef in root.xpath(\"\/\/xs:simpleType | \/\/xs:complexType\", namespaces=namespaces):\r\n            name = tdef.get(\"name\")\r\n            if name:\r\n                # debug_print(name)\r\n                complex_type_lookup[name] = tdef\r\n                restriction = tdef.find(\".\/\/xs:restriction\", namespaces)\r\n                if restriction is not None:\r\n                    base = restriction.get(\"base\")\r\n                    if base:\r\n                        type_base_map[name] = base\r\n                        type_base_lookup[name] = base\r\n                extension = tdef.find(\".\/\/xs:extension\", namespaces)\r\n                if extension is not None:\r\n                    base = extension.get(\"base\")\r\n                    if base:\r\n                        type_base_map[name] = base\r\n                        type_base_lookup[name] = base\r\n\r\n# Load content schemas\r\ncontent_roots = {}\r\nfor mod in modules:\r\n    path = os.path.join(base_dir, f\"gl\/plt\/{palette}\/gl-{mod}-content-2016-12-01.xsd\")\r\n    if os.path.exists(path):\r\n        content_roots[mod] = ET.parse(path).getroot()\r\n        tree = ET.parse(path)\r\n        root = tree.getroot()\r\n        for el in root.xpath(\"\/\/xs:element\", namespaces=namespaces):\r\n            name, type_ = el.get(\"name\"), el.get(\"type\")\r\n            if name and type_:\r\n                # debug_print(f\"gl-{mod}:{name}\")\r\n                element_type_map[f\"gl-{mod}:{name}\"] = type_\r\n        for tdef in root.xpath(\"\/\/xs:simpleType | \/\/xs:complexType\", namespaces=namespaces):\r\n            name = tdef.get(\"name\")\r\n            if name:\r\n                # debug_print(name)\r\n                complex_type_lookup[name] = tdef\r\n                restriction = tdef.find(\".\/\/xs:restriction\", namespaces)\r\n                if restriction is not None:\r\n                    base = restriction.get(\"base\")\r\n                    if base:\r\n                        type_base_map[name] = base\r\n                        type_base_lookup[name] = base\r\n                extension = tdef.find(\".\/\/xs:extension\", namespaces)\r\n                if extension is not None:\r\n                    base = extension.get(\"base\")\r\n                    if base:\r\n                        type_base_map[name] = base\r\n                        type_base_lookup[name] = base\r\n\r\n# Load content schemas\r\ncontent_roots = {}\r\nfor mod in modules:\r\n    path = os.path.join(base_dir, f\"gl\/plt\/{palette}\/gl-{mod}-content-2016-12-01.xsd\")\r\n    if os.path.exists(path):\r\n        content_roots[mod] = ET.parse(path).getroot()\r\n\r\n# Load label linkbases (EN and JA)\r\ndef load_labels(mod, lang):\r\n    label_map = defaultdict(dict)\r\n    suffix = \"label.xml\" if lang == \"en\" else f\"label-{lang}.xml\"\r\n    path = os.path.join(base_dir, f\"gl\/{mod}\/lang\/gl-{mod}-2016-12-01-{suffix}\")\r\n    if not os.path.exists(path):\r\n        return label_map\r\n    tree = ET.parse(path)\r\n    root = tree.getroot()\r\n    ns = {'link': 'http:\/\/www.xbrl.org\/2003\/linkbase', 'xlink': 'http:\/\/www.w3.org\/1999\/xlink'}\r\n\r\n    locator_map = {}\r\n    label_resources = {}\r\n\r\n    # Map locator label -&gt; href target\r\n    for loc in root.xpath(\".\/\/link:loc\", namespaces=ns):\r\n        label_id = loc.get(\"{http:\/\/www.w3.org\/1999\/xlink}label\")\r\n        href = loc.get(\"{http:\/\/www.w3.org\/1999\/xlink}href\")\r\n        _, anchor = href.split(\"#\")\r\n        if label_id and href and '#' in href:\r\n            locator_map[label_id] = anchor\r\n\r\n    # Collect label resources\r\n    for label in root.xpath(\".\/\/link:label\", namespaces=ns):\r\n        label_id = label.get(\"{http:\/\/www.w3.org\/1999\/xlink}label\")\r\n        role = label.get(\"{http:\/\/www.w3.org\/1999\/xlink}role\")\r\n        label_text = label.text.strip() if label.text else \"\"\r\n        if label_id not in label_resources:\r\n            label_resources[label_id] = {}\r\n        if role.endswith(\"label\"):\r\n            label_resources[label_id][\"label\"] = label_text\r\n        elif role.endswith(\"documentation\"):\r\n            label_resources[label_id][\"documentation\"] = label_text\r\n\r\n\r\n    # Resolve labelArcs and map labels to href anchors\r\n    for arc in root.xpath(\".\/\/link:labelArc\", namespaces=ns):\r\n        from_label = arc.get(\"{http:\/\/www.w3.org\/1999\/xlink}from\")\r\n        to_label = arc.get(\"{http:\/\/www.w3.org\/1999\/xlink}to\")\r\n        href = locator_map.get(from_label)\r\n        label = label_resources.get(to_label)\r\n        if href and label is not None:\r\n            role = label.get(\"{http:\/\/www.w3.org\/1999\/xlink}role\")\r\n            if lang == \"en\":\r\n                if \"label\" in label:\r\n                    label_map[href][\"label\"] = label[\"label\"]\r\n                if \"documentation\" in label:\r\n                    label_map[href][\"documentation\"] = label[\"documentation\"]\r\n            elif lang != \"en\":\r\n                if \"label\" in label:\r\n                    label_map[href][f\"label_{lang}\"] = label[\"label\"]\r\n                if \"documentation\" in label:\r\n                    label_map[href][f\"documentation_{lang}\"] = label[\"documentation\"]\r\n\r\n    return label_map\r\n\r\nlabel_texts = defaultdict(dict)\r\nfor mod in modules:\r\n    labels = [load_labels(mod, \"en\")]\r\n    if LANG != \"en\":\r\n        labels.append(load_labels(mod, LANG))\r\n    for label_map in labels:\r\n        for k, v in label_map.items():\r\n            label_texts[k].update(v)\r\n\r\n# Helpers\r\ndef is_tuple_type(complex_type_element):\r\n    if complex_type_element is None:\r\n        return False\r\n    if complex_type_element.find(\"xs:simpleContent\", namespaces) is not None:\r\n        return False\r\n    complex_content = complex_type_element.find(\"xs:complexContent\", namespaces)\r\n    if complex_content is not None:\r\n        for tag in [\"xs:restriction\", \"xs:extension\"]:\r\n            inner = complex_content.find(tag, namespaces)\r\n            if inner is not None:\r\n                base = inner.get(\"base\")\r\n                return base == \"anyType\"\r\n    return False\r\n\r\ndef resolve_base_type(type_str):\r\n    type_name = type_str.split(\":\")[-1]\r\n    return type_base_lookup.get(type_name, \"\")\r\n\r\n# Traversal\r\nrecords = []\r\ndef process_sequence(seq, _type, module, path, base, namespaces):\r\n    debug_print(f\" - Processing xs:sequence in path: \/{path}\")\r\n    for el in seq.findall(\"xs:element\", namespaces=namespaces):\r\n        ref = el.get(\"ref\")\r\n        name = el.get(\"name\")\r\n        el_name = ref or name\r\n        el_type = element_type_map.get(el_name, \"\")\r\n        type_name = el_type.split(\":\")[-1]\r\n        complex_type = complex_type_lookup.get(type_name)\r\n        is_tuple = False\r\n        if complex_type is not None:\r\n            is_tuple = is_tuple_type(complex_type)\r\n\r\n        path_str = f\"gl-{module}:{path}\" if \"gl-\" not in path else path\r\n        new_path = f\"{path_str}\/{el_name}\"\r\n        min_occurs = el.get(\"minOccurs\", \"1\")\r\n        max_occurs = el.get(\"maxOccurs\", \"1\")\r\n        base_type = resolve_base_type(el_type) if not is_tuple and el_type else \"\"\r\n        level = 1 + new_path.count(\"\/\")\r\n\r\n        raw_key = el_name.replace(\":\", \"_\")\r\n        label_info = label_texts.get(raw_key, {})\r\n\r\n        record = {\r\n            \"Level\": level,\r\n            \"Element\": el_name,\r\n            \"Type\": el_type,\r\n            \"Path\": f\"\/{new_path}\",\r\n            \"isTuple\": is_tuple,\r\n            \"minOccurs\": min_occurs,\r\n            \"maxOccurs\": max_occurs,\r\n            \"BaseType\": base_type,\r\n            \"Label\": label_info.get(\"label\", \"\"),\r\n            \"Documentation\": label_info.get(\"documentation\", \"\"),\r\n            \"LocalLabel\": label_info.get(\"label_ja\", \"\"),\r\n            \"LocalDocumentation\": label_info.get(\"documentation_ja\", \"\")\r\n        }\r\n        records.append(record)\r\n        if not el_type:\r\n            continue\r\n        type_name = el_type.split(\":\")[-1]\r\n        if is_tuple:\r\n            mod = el_type.split(\":\")[0][3:]\r\n            for _path in [\r\n                os.path.join(base_dir, f\"gl\/{mod}\/gl-{mod}-2016-12-01.xsd\"),\r\n                os.path.join(base_dir, f\"gl\/plt\/{palette}\/gl-{mod}-content-2016-12-01.xsd\")\r\n            ]:\r\n                if os.path.exists(_path):\r\n                    tree = ET.parse(_path)\r\n                    nested = tree.xpath(f\".\/\/xs:complexType[@name='{type_name}']\", namespaces=namespaces)\r\n                    if nested:\r\n                        walk_complex_type(type_name, nested[0], \"tuple\", mod, new_path, namespaces)\r\n                        break\r\n\r\ndef walk_complex_type(name, element, _type, module, path, namespaces):\r\n    if \":\" not in path:\r\n        trace_print(f\"Walking {_type} type '{name}' at path: \/gl-{module}:{path}\")\r\n    else:\r\n        trace_print(f\"Walking {_type}: '{name}' at path: \/{path}\")\r\n    sequence = element.find(\"xs:sequence\", namespaces)\r\n    if sequence is not None:\r\n        process_sequence(sequence, _type, module, path, name, namespaces)\r\n        return\r\n    complex_content = element.find(\"xs:complexContent\", namespaces)\r\n    if complex_content is not None:\r\n        for tag in [\"xs:restriction\", \"xs:extension\"]:\r\n            inner = complex_content.find(tag, namespaces)\r\n            if inner is not None:\r\n                base = inner.get(\"base\")\r\n                seq = inner.find(\"xs:sequence\", namespaces)\r\n                if seq is not None:\r\n                    process_sequence(seq, _type, module, path, base, namespaces)\r\n                return\r\n\r\n# Start with root complexType\r\nroot = content_roots[\"cor\"]\r\ncomplex_type_list = root.xpath(\".\/\/xs:complexType[@name='accountingEntriesComplexType']\", namespaces=namespaces)\r\nif complex_type_list:\r\n    href = \"gl-cor_accountingEntries\"\r\n    record = {\r\n        \"Level\": 1,\r\n        \"Element\": \"accountingEntries\",\r\n        \"Type\": \"gl-cor:accountingEntriesComplexType\",\r\n        \"Path\": \"\/gl-cor:accountingEntries\",\r\n        \"isTuple\": True,\r\n        \"minOccurs\": \"1\",\r\n        \"maxOccurs\": \"unbounded\",\r\n        \"BaseType\": \"\",\r\n        \"Label\": label_texts[href].get(\"label\", \"\"),\r\n        \"Documentation\": label_texts[href].get(\"documentation\", \"\"),\r\n        \"LocalLabel\": label_texts[href].get(\"label_ja\", \"\"),\r\n        \"LocalDocumentation\": label_texts[href].get(\"documentation_ja\", \"\")\r\n    }\r\n    records.append(record)\r\n    \r\n    walk_complex_type(\"accountingEntriesComplexType\", complex_type_list[0], \"tuple\", \"cor\", \"accountingEntries\", namespaces)\r\nelse:\r\n    print(\"\u274c Not found: accountingEntriesComplexType\")\r\n\r\n# Output to CSV\r\noutput_dir = \"XBRL-GL-2025\"\r\nos.makedirs(output_dir, exist_ok=True)\r\noutput_file = os.path.join(output_dir, output_filename)\r\n\r\nwith open(output_file, mode='w', newline='', encoding='utf-8-sig') as f:\r\n    if records:\r\n        writer = csv.DictWriter(f, fieldnames=records[0].keys())\r\n        writer.writeheader()\r\n        writer.writerows(records)\r\n    else:\r\n        print(\"\u26a0\ufe0f No records to write.\")\r\n\r\nprint(f\"\\n\u2705 Saved parsed structure to: {output_file}\")<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"footer\">\n<div id=\"footer-text\">\nLast updated 2025-04-02 13:39:03 +0900\n<\/div>\n<\/div>\n<div id=\"toc\" class=\"toc2\">\n<div id=\"toctitle\">\u76ee\u6b21<\/div>\n<ul class=\"sectlevel1\">\n<li><a href=\"#_\u80cc\u666f\">1. \u80cc\u666f<\/a><\/li>\n<li><a href=\"#_\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4e3b\u306a\u6a5f\u80fd\">2. \u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4e3b\u306a\u6a5f\u80fd<\/a><\/li>\n<li><a href=\"#_\u52d5\u4f5c\u74b0\u5883\">3. \u52d5\u4f5c\u74b0\u5883<\/a><\/li>\n<li><a href=\"#_\u5b9f\u884c\u65b9\u6cd5\">4. \u5b9f\u884c\u65b9\u6cd5<\/a>\n<ul class=\"sectlevel2\">\n<li><a href=\"#_\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u306e\u5b9f\u884c\">4.1. \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u306e\u5b9f\u884c<\/a><\/li>\n<li><a href=\"#_\u30aa\u30d7\u30b7\u30e7\u30f3\u5f15\u6570\">4.2. \u30aa\u30d7\u30b7\u30e7\u30f3\u5f15\u6570<\/a><\/li>\n<li><a href=\"#_vscode_\u306e_launch_json_\u3067\u306e\u4f8b\">4.3. VSCode \u306e <code>launch.json<\/code> \u3067\u306e\u4f8b<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#_\u5165\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\">5. \u5165\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020<\/a><\/li>\n<li><a href=\"#_\u51fa\u529b\u7d50\u679c\">6. \u51fa\u529b\u7d50\u679c<\/a>\n<ul class=\"sectlevel2\">\n<li><a href=\"#_csv_\u30ab\u30e9\u30e0\u69cb\u6210\">6.1. CSV \u30ab\u30e9\u30e0\u69cb\u6210<\/a><\/li>\n<li><a href=\"#_\u6ce8\u610f\u70b9\">6.2. \u6ce8\u610f\u70b9<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#_\u95a2\u9023\u30ea\u30f3\u30af\">7. \u95a2\u9023\u30ea\u30f3\u30af<\/a><\/li>\n<li><a href=\"#_\u3054\u610f\u898b\u3054\u8cea\u554f\">8. \u3054\u610f\u898b\u30fb\u3054\u8cea\u554f<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Views: 23 XBRL GL \u30d1\u30ec\u30c3\u30c8\u30bf\u30af\u30bd\u30ce\u30df\u3000\u30d1\u30fc\u30b5\u30fc Author: ChatGPT\uff08\u7de8\u96c6\uff1a\u4e09\u5206\u4e00 \u4fe1\u4e4b\uff09 2025-04-02 \u672c\u8a18\u4e8b\u3067\u306f\u3001XBRL GL\uff08XBRL Global Ledger\uff09\u30bf\u30af\u30bd\u30ce\u30df\u304b [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":14540,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,65],"tags":[],"_links":{"self":[{"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=\/wp\/v2\/posts\/14519"}],"collection":[{"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14519"}],"version-history":[{"count":17,"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=\/wp\/v2\/posts\/14519\/revisions"}],"predecessor-version":[{"id":14589,"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=\/wp\/v2\/posts\/14519\/revisions\/14589"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=\/wp\/v2\/media\/14540"}],"wp:attachment":[{"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sambuichi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}