--- name: edinet-financial-data version: 2026-08-08T15:35:08Z description: 有価証券報告書の数値データと選定した事業説明等のテキストを使って企業分析をするときに使う。https://financial-statements-data.sasakiy84.net/ の EDINET 由来TXTを、curl と grep -E のワンライナーで検索し、企業検索、BS・PL・CF・その他の数値、事業内容・サステナビリティ・ガバナンス等の抽出、書類種別・連結区分・期間・科目・context・unit・親子構造の確認、時系列分析、提出書類PDFの特定を行う。 --- # EDINET 財務諸表 TXT データ `https://financial-statements-data.sasakiy84.net/` の escaped TSV を、保存せず `curl` から直接検索する。各例は状態を持たないワンライナーで、 `E02144` は対象企業のEDINETコードへ置き換える。複数のエンドポイントが必要なら、それぞれを別の `curl` で取得する。 ## エンドポイント ### `/index.txt` 企業名からEDINETコードを探す一覧。列は `edinetCode`、`companyName`。 ### `/E12345.txt`:数値データ 企業別の固定11列TSV。列順は固定である。 ```text itemID itemName statementType context period value unit depth parentItemID consolidated fileType ``` 1 `itemID`、2 `itemName`、3 `statementType`、4 `context`、5 `period`、6 `value`、7 `unit`、 8 `depth`、9 `parentItemID`、10 `consolidated`、11 `fileType`。 - `statementType`: `bs`(貸借対照表)、`pl`(損益計算書)、`cf`(キャッシュ・フロー計算書)、`other`(その他の数値)。 - `context`: segment等のdimensionを `Axis=Member` で表す。通常のcurrent/priorは空。 - `period`: instantまたはdurationの終了日(`YYYY-MM-DD`)。提出日とは異なる。 - `unit`: `円`、`株`、`円/株`、`pure`、通貨code、またはcanonical unit式。 - `depth`: tree rootは `0`、childは `1` 以上、tree外numericは空。 - `parentItemID`: childの直接の親QName。rootとtree外numericは空。 - `consolidated`: `TRUE` は連結、`FALSE` は個別。 - `fileType`: `annual`、`semiannual`、`quarterly`。 field内のbackslash、tab、CR、LFは `\\`、`\t`、`\r`、`\n` にescapeされている。実タブは列区切りだけなので、 検索前にescape解除しない。 ### `/text/E12345.txt`:選定テキスト 企業別の選定テキストfact。書類全文ではなく、分析に役立つ代表的なtext blockを1行1factで収録する。列順は固定である。 ```text docID\ttextType\titemID\tperiod\tsubmitted\tfileType\ttext ``` `textType` は `businessDescription`、`businessPolicy`、`businessResults`、`managementAnalysis`、 `businessRisks`、`companyHistory`、`strategy`、`sustainability`、`corporateGovernance`、`officers`、 `majorFacilities`、`affiliatedEntities`、`employees`、`researchAndDevelopment` のいずれかである。 `docID`で提出書類catalogと照合し、`submitted`で訂正・再提出を確認する。 ### `/documents/E12345.txt`:提出書類catalog 企業別の提出書類一覧。`docID`、`period`、`fileType`、`submitted`、`status`、`dataStatus`、`pdf` を含む。 対象期間のannual文書やPDF URLを特定する。 ## grepによる列指定 n列目の完全一致は `^([^\t]*\t){n-1}VALUE(\t|$)`、部分一致は `^([^\t]*\t){n-1}[^\t]*VALUE[^\t]*(\t|$)` を使う。Bashの `$'...'` で `\t` を実タブへ変換する。 `([^\t]+){n-1}` だけでは列区切りを消費せず、空列も扱えない。反復部分には `[^\t]*\t` を使う。検索値は 拡張正規表現として解釈されるため、`.`、`+`、`(` などを文字として探す場合は `\` でescapeする。 ## ステップ0: SKILL.mdのバージョンを確認する 分析を始める前に、公開中の `SKILL.md` の `version` と、このファイルのfrontmatterにある `version` を照合する。 スキーマや列定義が更新されている可能性があるため、バージョンが一致しない場合は古い定義のまま分析を続けない。 ```bash test "$(curl -fsSL 'https://financial-statements-data.sasakiy84.net/SKILL.md' | sed -n 's/^version: //p')" = '2026-08-08T15:35:08Z' && printf '%s\n' 'SKILL.md version is current.' || printf '%s\n' 'SKILL.md is updated. ユーザーに次の上書きコマンドを提示してください: curl -fsSL '\''https://financial-statements-data.sasakiy84.net/SKILL.md'\'' -o SKILL.md' ``` 不一致の場合は、ユーザーに次のコマンドを提示し、ユーザーが実行して `SKILL.md` を上書きした後に、このステップをもう一度実行する。 ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/SKILL.md' -o SKILL.md ``` ## 一般的なワークフロー 1. `/index.txt` を企業名で検索し、対象企業のEDINETコードを確定する。同名企業が複数ある場合は、候補をすべて確認する。 2. 企業TXTから、分析したい項目の `statementType` に対応する勘定科目一覧を取得する。企業によって勘定科目名や `itemID` が異なるため、一覧を確認してから対象を選ぶ。 3. 選んだ `itemID` を使い、連結区分、書類種別、期間、context、unitなどを絞って必要な値だけを取得する。 4. 事業説明や役員等を分析するときは `/text/E12345.txt` の `textType` と `itemID` を確認し、`docID` と提出日を保持する。 5. 必要な列だけを `cut` で残す。特に大量の企業TXTをエージェントへ渡す場合は、検索条件を先に適用し、不要な列を除外してトークン消費量を抑える。 6. 候補が複数残る場合は、period、submitted、訂正・再表示、書類種別を確認し、根拠なく1行へ決めない。 ## コマンド例 ### 1. 企業名からEDINETコードを確認する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/index.txt' | grep -F 'トヨタ自動車' | cut -f1,2 ``` ### 2. BSの勘定科目一覧を確認する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){2}bs\t' | cut -f1,2 | sort -u ``` ### 3. 連結で通期のデータを取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){9}TRUE\tannual$' | cut -f1,2,3,5-9 ``` 個別は `TRUE` を `FALSE` に置き換える。 ### 4. 事業リスクの本文と提出書類を確認する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/text/E02144.txt' | grep -E $'^([^\t]*\t){1}businessRisks\t' | cut -f1-7 ``` `docID` と `submitted` を `/documents/E02144.txt` で照合し、必要に応じてPDFも確認する。 ### 5. 四半期のデータを取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){10}quarterly$' | cut -f1,2,3,5-9 ``` 半期は `quarterly` を `semiannual` に置き換える。 ### 6. 特定の勘定科目をitemIDで取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^jpcrp_cor:NumberOfEmployees(\t|$)' | cut -f1,2,3,5-7 ``` ### 7. 売上に関係する勘定科目候補を探す ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){1}[^\t]*(売上高|売上収益|営業収益)[^\t]*(\t|$)' | cut -f1,2,7 | sort -u ``` ### 8. 特定の決算日のデータを取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){4}2025-03-31(\t|$)' | cut -f1,2,3,5-7 ``` ### 9. 全社(セグメントなし)のデータを取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){3}\t' | cut -f1,2,3,5-7 ``` ### 10. セグメント別のデータを取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){3}[^\t]*OperatingSegmentsAxis=[^\t]*(\t|$)' | cut -f1-7 ``` ### 11. 円単位のデータを取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){6}円(\t|$)' | cut -f1,2,3,5-7 ``` ### 12. 財務諸表の最上位科目を取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){7}0(\t|$)' | cut -f1,2,3,5-9 ``` ### 13. 特定の勘定科目の直接の子を取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^([^\t]*\t){8}jppfs_cor:Assets(\t|$)' | cut -f1,2,6-9 ``` ### 14. 従業員数の連結通期時系列を取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^jpcrp_cor:NumberOfEmployees\t' | grep -E $'^([^\t]*\t){3}\t' | grep -E $'^([^\t]*\t){9}TRUE\tannual$' | cut -f5-7 | sort -u ``` ### 15. 従業員数の連結通期で最新の値を取得する ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/E02144.txt' | grep -E $'^jpcrp_cor:NumberOfEmployees\t' | grep -E $'^([^\t]*\t){3}\t' | grep -E $'^([^\t]*\t){9}TRUE\tannual$' | cut -f5 | sort -u | tail -n1 ``` 得たperiodを例7へ入れ、同一periodの候補をすべて確認する。複数行を自動的に一つへ決めない。 ### 16. documentsからannualかつlatestの文書キーとPDF URLを取る ```bash curl -fsSL 'https://financial-statements-data.sasakiy84.net/documents/E02144.txt' | grep -E $'^([^\t]*\t){2}annual(\t|$)' | grep -E $'^([^\t]*\t){4}latest(\t|$)' | cut -f1,7 ``` `latest` のannual行は複数存在し得る。対象期間や文書キーを確認してからPDFを選ぶ。 ## 判断上の注意 - 該当行なしを0として扱わない。 - `itemName` で候補を探した後、`itemID`、`statementType`、period、unit、連結区分、書類種別を確認する。 - 同一periodに複数行が残る場合は、訂正・再表示などを確認する。 - `period` はinstantまたはdurationの終了日であり、提出日ではない。提出日は `/documents/E12345.txt` の `submitted` 列で確認する。 - `depth` と `parentItemID` は木構造を示すが、加減算式を単独で保証しない。 ## 企業分析レポートの既定動作 分析範囲が指定されていなければ、連結 `annual` を中心に、財務諸表全体、主要指標の時系列、セグメント、最新の提出書類を確認する。可能な限り過去へ遡って長期の傾向も確認し、その分析をレポートに含める。数値を数件取得しただけで完了とせず、「全体走査」と「重要項目の深掘り」の二段階で進める。 ### 全体走査 1. `/index.txt` で企業名とEDINETコードを確定する。 2. 企業TXTの連結通期について、`bs`、`pl`、`cf`、`other` の全 `itemID`、`itemName`、`unit`、`depth`、`parentItemID` を確認する。 3. 最新通期と直前期の全社行、全 `context`、`depth=0` のrootと直接の子、tree外numeric、同一periodの重複候補を確認する。 4. `/text/E12345.txt` の対象 `textType` と提出日を確認し、`docID`を `/documents/E12345.txt` と照合する。 5. `/documents/E12345.txt` から対象annual文書とPDFを特定する。大量の結果は条件検索後に `cut` で必要列だけ残す。 全科目の確認は、すべてを本文へ列挙するという意味ではなく、全行を走査したうえで重要な科目・変化・異常・構造を報告するという意味である。 ### 重要項目と木構造 最新値・前期比の変化が大きい項目、符号が反転した項目、新規・消失項目、`depth`/`parentItemID` が変わった項目、減損・引当・再編・訴訟・偶発債務などのリスク項目を候補にする。順位や閾値は検索上のheuristicであり、会計上の重要性基準ではない。 `depth=0` のrootから直接の子を取得し、重要な子の `itemID` を次の `parentItemID` として再検索する。BSは資産・運転資本・負債・純資産、PLは収益から利益段階と費用、CFは営業・投資・財務と設備投資・借入・配当を重点的に辿る。`depth` と `parentItemID` は表示上の関係であり、親子の値を機械的に合計して整合性を判定しない。 ### 時系列・業種・計算 主要収益、各利益段階、現預金、売上債権、棚卸資産、総資産、借入金、純資産、営業CF・投資CF・財務CF、EPS、配当、従業員数などを、企業固有の科目体系に合わせて取得可能な全通期で確認する。可能な限り最古のデータまで遡り、長期間の成長、収益性、財務構成、キャッシュ・フロー、資本配分の変化をレポートで分析する。`itemID` は変更され得るため、`itemName`、statementType、unit、親子経路、PDFも根拠にして対応付ける。 連結区分、`fileType`、`context`、unit、期間の長さ、会計基準、企業結合・事業売却、訂正・再表示、セグメント変更を確認してから比較する。四半期・半期は同じ経過期間の前年同期と比較し、通期と直接比較しない。 構成要素が比較可能な場合だけ、成長率、利益率、自己資本比率、営業CFマージン、簡易FCF(営業CF+投資CF)、ネットキャッシュ、ROE/ROAを計算し、式・単位・期末残高ベースかどうかを明記する。分母が0または負の場合は通常の率として解釈しない。金融・保険・証券・REIT等には一般事業会社の指標を機械的に適用しない。株価やPER等は別の市場データと出典・基準日が必要である。 ### セグメント・CF・提出書類 全 `context` を先に確認し、企業独自Axisを含む事業・製品・地域・顧客区分を確認する。外部売上、セグメント間売上、利益、資産、設備投資等を重複計上せず、区分変更や調整額も確認する。 利益と営業CFの方向、運転資本、設備投資、M&A、借入・返済、配当・自己株式取得、現預金と有利子負債を確認する。原因や見通しは数値だけで断定せず、PDFの事業内容、MD&A、リスク、会計方針、企業結合、偶発債務、後発事象等で裏付ける。裏付けのない因果関係は仮説として記述する。 ### レポートと完了条件 レポートは原則として、分析対象・前提、要約、主要指標の長期推移、PL、BS、CF・資本配分、セグメント、直近動向、リスク・確認事項、根拠の順に構成する。可能な限り長いスパンを示し、短期の増減だけでなく長期傾向も記述する。報告値・計算値・解釈を分け、使用した `itemID`、`period`、`context`、unit、連結区分、`fileType`、計算式、文書キーを示す。欠落は0にせず「確認できず」とする。 広範な分析を完了する前に、EDINETコード、連結通期period、最新annual文書、4区分の全item一覧、最新・直前期の全社行、rootと主要な子、tree外numeric、全context、セグメント、主要指標の時系列、利益率・BS・CF、重複候補、PDFの重要な変動要因と比較制約を確認し、データ不足・比較不能・推定を明示する。