

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
普段私たちが使っている Excel のファイルは、実は見えない場所で賢くデータを整理しています。その中でも sharedstrings.xml は、文字データを「一意にまとめて管理する」秘密のノートのような役割を果たしています。
この仕組みを知ると、どうして同じ文字が何度も書かれていてもファイルが大きくならないのか、どうして Excel が素早く表示できるのかが理解できます。以下では、初心者にも分かりやすいように、sharedstrings.xml について順番に解説します。
sharedstrings.xmlとは何か
Excel のファイルは実は ZIP形式で圧縮された複数のファイル の集まりです。その中の一つが sharedStrings.xml です。
このファイルには、シート上のセルに使われている文字列データが「一意(ユニーク)な形」で並べられ、各セルはその文字列の「番号(インデックス)」を指します。
構造と仕組み
sharedStrings.xml の根は sst という要素です。その中には si(string item)という要素があり、その中には t 要素が文字列の実体を持ちます。
例としては次のような構造です(実際のファイルでは < と > を使って表現します)。
<sst count="3" uniqueCount="3">
<si><t>こんにちは</t></si>
<si><t>世界</t></si>
<si><t>Excel</t></si>
</sst>
なぜ「sharedStrings.xml」が必要なのか
同じ文字列が複数のセルで繰り返されると、Excel はその都度文字列を別々に保存するよりも、1つの文字列を index で参照する方がファイルサイズを小さくできます。これが Shared Strings Table の名前の由来です。セルが実際の文字を直接持たず、代わりにインデックスを指し示すことも多く、結果としてファイル全体の容量が抑えられ、読み込みも速くなります。
セルとはどう結びつくのか
Excel のセルには文字列が入ることがあります。その場合、セルの値は文字列そのものを直書きするのではなく、sharedStrings.xml の中のインデックス(番号)を指します。Excel はこの番号を使って sst に格納された文字列を表示します。これにより、同じ文字列が複数のセルで使われても、実データは1か所に集約されます。
具体例を見てみよう
次のような表を想像してください。セル A1 に「こんにちは」、B1 に「こんにちは」、C1 に「世界」が入っているとします。通常なら「こんにちは」が2回以上出現しますが、sharedStrings.xml を使うと こんにちは は1つの si 要素として保存され、それぞれのセルはその文字列のインデックスを参照します。
| 説明 | |
|---|---|
| A1 | 文字列のインデックス 0 を参照 |
| B1 | 文字列のインデックス 0 を参照 |
| C1 | 文字列のインデックス 1 を参照 |
この仕組みがあるおかげで、同じ文字列が複数回出現してもファイルサイズを小さく保てます。
実際のファイルを見てみる
Excel ファイルは拡張子を .zip に変更して中身を覗くことができます。中には xl/sharedStrings.xml というファイルがあります。ここに上で説明した sst、si、t の構造が現れます。もしこのファイルを編集するときは、Excel で再度正しく参照が結びつくように注意が必要です。
注意点とヒント
手作業で編集するのはおすすめしません。ファイル構造が複雑で、参照が崩れると開けなくなることがあります。どうしても調べたい場合は、元データをバックアップし、Excel の機能や信頼できるツールを使って編集しましょう。
まとめ
sharedstrings.xml は Excel のファイルサイズを抑え、読み込みを速くするための大切な仕組みです。文字列データはここに一括して格納され、セルはそのインデックスを参照して表示します。このような工夫により、私たちは大きなデータを扱うときでも快適に作業することができます。
補足情報
もし授業やプロジェクトで Excel のファイル構造を学ぶ機会があれば、sharedStrings.xml の理解は重要な入口になります。ファイルの整合性を保つことは基本中の基本であり、データを正しく管理する力にもつながります。
sharedstrings.xmlの関連サジェスト解説
- /xl/sharedstrings.xml とは
- /xl/sharedstrings.xml とは、Excelのファイル形式である.xlsx の中にある重要なXMLファイルのひとつです。実は.xlsxはZIP形式で圧縮された複数のXMLファイルの集合で、その中の /xl/sharedStrings.xml は“共有文字列テーブル”を保存する場所です。セルに文字列が入ると、実際の文字列を何度も繰り返して保存するのではなく、このテーブルの中のインデックス(番号)を参照する形をとります。例えば、セルA1に「こんにちは」、セルA2にも「こんにちは」とあっても、A1とA2は同じ文字列を別々に保存せず、sharedStrings.xml の1つのエントリを参照します。この仕組みのメリットは、データ量が少なくなることと、同じ文字列の参照を統一できることです。複数のセルで同じ文章が使われている場合でも、ファイル全体のサイズが小さくなり、読み込み・書き込みも速くなります。 /xl/sharedstrings.xml が存在する場所と仕組み:.xlsx を解凍すると /xl/sharedStrings.xml が現れます。基本は
(共有文字列テーブル)という親要素の中に (string item)要素が並び、それぞれに文字列を表す 要素が含まれます。長い文やフォントの情報が混ざる場合は (run)要素で複数のテキスト部分が組み合わさることもあります。編集の注意点: このファイルを手作業で編集すると、セルが指すインデックスと文字列の整合性が崩れ、ファイルが壊れることがあります。安全に扱うには、PythonのopenpyxlやC#のOpenXML SDKなどのOpenXML対応ライブラリを使って編集します。データ抽出や変換を目的とする場合は、こうしたツールを活用しましょう。要するに、/xl/sharedstrings.xml とは、Excelファイル内の文字列データを効率的に管理するための共通テーブルを保存するXMLファイルであり、ファイルサイズの削減と文字列の再利用を実現する仕組みです。
sharedstrings.xmlの同意語
- 共有文字列ファイル
- OpenXML の .xlsx ファイル内にある xl/sharedStrings.xml のこと。セルで使われる文字列を一元的に共用して格納するデータファイル。
- 共有文字列テーブル
- 文字列をテーブル状に格納し、セルがインデックスで参照する仕組み。OpenXML 仕様で『共有文字列テーブル』と呼ばれるデータ構造。
- 文字列テーブル
- OpenXML の『共有文字列テーブル』を指す略称。文字列の集合を格納するデータ構造。
- 文字列プール
- 文字列を重複なく管理する“プール”としての比喩表現。複数セルで同じ文字列を再利用するためのデータ。
- SharedStrings.xml
- 英語表記のファイル名。OpenXML の xl/sharedStrings.xml を指す正式な名前(ファイル名)。
- sharedStrings.xml
- 小文字の英語表記。ファイル名そのものを指す表現。
- xl/sharedStrings.xml
- Excel ワークブックの ZIP アーカイブ内で xl/ ディレクトリにある sharedStrings.xml ファイルを指す具体的表現。
- 共有文字列データ
- 共有文字列テーブルのデータ本体。セル参照の基になる文字列集合。
- 文字列プールデータ
- 文字列プールとして格納されているデータ本体を指す表現。
sharedstrings.xmlの対義語・反対語
- InlineStrings(インライン文字列)
- セル内に直接文字列を格納する方式。sharedStrings.xmlを介さず、
の形で保存されることが多い。長所はセル参照がシンプルで更新時のオーバーヘッドが少ない一方、重複文字列が多いとファイルサイズが増えやすい点に注意。文字列 - 非共有文字列
- 文字列を共有テーブル(sharedStrings.xml)に集約せず、各セルが独自に文字列を持つ状態。再利用性が低く、ファイルサイズが大きくなりがち。
- 個別文字列(セル個別格納)
- セルごとに文字列を格納する構造。共通化が行われないため、同じ文字列の重複が増えやすい。
- 局所文字列テーブル
- Workbook内の特定範囲でのみ使われる文字列を別のテーブルに格納する比喩的表現。sharedStrings.xmlとは別の運用指針を示す。
- セル内インライン文字列
- セルの中に直接文字列を保持する形式。inlineStr の形で格納され、sharedStrings.xmlを使わないケースの説明に使われる。
sharedstrings.xmlの共起語
- sharedStrings.xml
- エクセルファイル内で文字列を一元管理するXMLファイル。同じ文字列を複数のセルで繰り返し使う場合、重複を避けるためにこのテーブルを参照します。
- Shared String Table
- このファイルに格納される文字列の集合を指す英語表現。セルはこのテーブルのインデックスを参照して値を表示します。
- sst
- Shared String Table の略。実務上、XML 内でこの略称が使われることがあります。
- si
- Shared String Item の略。1つの文字列を表す要素です。
- t
- 文字列そのものを格納する要素。
の形で格納されます。文字列 - xl/sharedStrings.xml
- xlsx ファイル内の実ファイルパス。実ファイルは ZIP で圧縮された Open XML ディレクトリ xl/ に格納されます。
- OpenXML
- Microsoft Office ファイルを XML ベースで表現する標準仕様。xlsx はこの形式を採用しています。
- xlsx
- Excel ファイルの拡張子。XML ベースのファイルを ZIP でまとめた形式です。
- XML
- eXtensible Markup Language の略。データを階層的に記述するためのマークアップ言語です。
- string table
- 文字列を集約して格納するテーブルの英語表現。セルの参照はこの表のインデックスで行われます。
- string index
- 共有文字列テーブルの各文字列は 0 から始まるインデックス番号で参照されます。
- count
- sharedStrings.xml の属性のひとつ。全体の文字列数を示します。
- uniqueCount
- sharedStrings.xml の属性のひとつ。重複を除いたユニークな文字列数を示します。
- namespace
- XML の名前空間。sharedStrings.xml では http://schemas.openxmlformats.org/spreadsheetml/2006/main が使われます。
- 名前空間
- XML における名前空間の日本語表現。衝突を避け、要素を識別します。
- 文字列の重複排除
- 同じ文字列を1つのエントリとして共有文字列テーブルに格納し、ファイルサイズを抑えます。
- セルの値参照
- セルの実値は直接格納せず、共有文字列テーブルのインデックスを参照することがあります。
- Excel 内部構造
- Excel ファイルの内部設計の要点。共有文字列はパフォーマンスとサイズ最適化のために使われます。
- OpenXML 仕様
- OpenXML の仕様自体を指す用語。xlsx などのファイル形式の設計根拠となります。
sharedstrings.xmlの関連用語
- sharedStrings.xml
- Excel の OpenXML フォーマットにおける文字列の共有データベースを格納する XML ファイルです。セルの値として同じ文字列を繰り返し使う場合、ここのインデックスを参照します。
- 共有文字列テーブル (SST)
- Shared Strings Table の略称で、
要素の中に複数の 要素が並び、各 が1つの文字列を表します。 - si (Shared String Item)
- sst 内の1つの文字列エントリを表す要素。複数の si が集まって1つの SST になります。
- t (Text) 要素
- si の中に実際の文字列を格納する要素。プレーンテキストとして文字列データを保持します。
- r (Rich Text Run)
- 文字列が書式付きの場合、複数の r 要素で構成され、各 r の中に t 要素が含まれることがあります。
- is (Inline String)
- セルにインラインで文字列を格納する場合の表現。
の中に があり、内側に が入ることもあります。 - InlineString (is) と Shared Strings の違い
- inlineStr はセル内に直接文字列を格納するのに対し、sharedStrings では SST を参照するインデックスを用います。
- uniqueCount 属性
- SST 内の異なる文字列の数を示します。重複は除かれます。
- count 属性
- SST 内の全体の文字列アイテム数。重複を含む総数です。
- xl/sharedStrings.xml のファイルパス
- 実際のファイルは workbook パッケージ内の xl/ ディレクトリ下にあり、/xl/sharedStrings.xml というパスで格納されます。
- [Content_Types].xml
- このファイルは、xlsx 内の各部品がどんな種類のデータかを宣言します。sharedStrings.xml の MIME タイプもここで定義されます。
- OPC (Open Packaging Conventions)
- OpenXML の部品を ZIP に格納し、部品同士の関係性を定義する規格です。
- ZIP 形式の OOXML ファイル
- xlsx は ZIP 圧縮された複数の部品ファイルの集まりです。
- Workbook と SharedStrings のリレーションシップ
- workbook.xml.rels に sharedStrings.xml への関係が定義され、シートが SST を参照できるようになります。
- workbook.xml.rels でのリレーションシップ
- リレーションシップファイルには rId と Type、Target が記載され、セルが SST を参照するための手がかりになります。
- Relationship の ID (rId) と参照
- rId は sharedStrings.xml への参照を一意に識別する識別子です。
- セルの t 属性: 's' と 'inlineStr' の意味
- c 要素の t 属性が 's' の場合はここの値が SST のインデックス、'inlineStr' の場合は inlineString を使います。
- セルの v 要素の意味
- セルの値を格納する要素。t='s' の場合は SST のインデックス番号を、他の型の場合はそのまま値を格納します。
- Inline String の例 (is) の記述
- 例:
のように書きます。テキスト - Rich Text の表現
- si 内に複数の
要素を組み合わせて、書式付きのテキストを表すことができます。 - OpenXML SDK
- Microsoft が提供する .NET 用の OOXML 操作ライブラリで、sharedStrings.xml の読み書きもサポートします。
- openpyxl などのライブラリ
- Python のライブラリの一例。内部で sharedStrings.xml を扱い、文字列の重複を排除します。
- ファイルサイズとパフォーマンスの最適化
- 重複文字列を SST に集約することで、ファイルサイズを抑え、読み込み時のパフォーマンスを改善します。
- 文字列の重複を避ける仕組み
- 同じ文字列が複数のセルで使われても SST の1エントリだけを使い回します。
- 文字列のエンコーディングと UTF-8
- XML は通常 UTF-8 でエンコードされ、スペースや特殊文字も適切に表現されます。
- Excel のバージョンやツールの影響
- Excel/OpenXML をサポートするツールによって、sharedStrings.xml の書き方に微妙な差異が出ることがあります。
- 実務での注意点
- 文字列の追加や更新時には SST の参照インデックスを更新する必要があり、特に大きなファイルではパフォーマンスに影響します。



















