個人開発やツール作成で必ず迷うのが「データをどの形式で保存するか」です。
txt か json でいいや」と選んでいませんか?
データ量が増えると、その選択が「アプリの重さ」や「データ消失事故」に直結します。
ここでは、基本の3形式(txt, json, db)に加え、用途別の専門形式を含めた全8種類を徹底比較します。
Contents
🔰 基本の3形式:まずはここから

1. テキストファイル .txt
最も原始的な形式。ただの文字の羅列です。
用途:動作ログ(log.txt)、簡単なメモ、Readme。
どのPC、どのソフトでも絶対に開ける。
構造がないので、とりあえず文字を書き込むだけなら一番カンタン。
検索・集計が絶望的。「IDが〇〇のデータ」を探すには全部読む必要がある。
データの区切り(構造)を持てないので、複雑なデータ管理には不向き。
2. JSON .json
Web開発や設定ファイルで標準的に使われる、「構造」を持てるテキスト形式です。
用途:アプリの設定ファイル、小規模なデータ保存、API通信。
入れ子構造(リストの中に辞書など) をそのまま保存できる。
テキストエディタで開いて、人間が手で修正できる。
Pythonの辞書型と相性が抜群。
部分更新ができない。 1文字直すだけでも「ファイル全体」の上書き保存が必要。
データが数万件を超えると、読み書きが遅くなり、データ消失リスクが高まる。
3. データベース / SQLite .db
ファイルの中に「エクセル」のような表が入っているイメージ。Python標準で使えます。
用途:アプリのメインデータ保存先。数万件〜数百万件のデータ管理。
部分更新 (UPDATE) が可能。 変更点だけを書き込むので爆速&安全。
検索が爆速。 「数万件の中から条件に合うデータ」を一瞬で抽出できる。
保存中にPCが落ちてもデータが壊れにくい(堅牢性)。
中身を見るには専用ソフト(DB Browser for SQLiteなど)が必要。
最初に「テーブル設計」をする必要がある(ただしJSON型を使えば柔軟に対応可)。
📊 人間が見る・交換するための形式

4. CSV .csv
データを「カンマ」で区切った形式。実態はテキストファイルです。
用途:Excelへの取り込み用、他ツールへのデータ移行。
Excelでダブルクリックするだけで開ける。
ファイルサイズがJSONより少し小さい。
「型」の情報がない。 数字も日付も全部「文字」として扱われる。
データの中に「カンマ」や「改行」が含まれると壊れやすい。
5. Excel .xlsx
マイクロソフト・エクセルそのもの。
用途:クライアントへの納品物、人間用のレポート。
色、フォント、グラフ、計算式まで保存できる。
ビジネスの現場では共通言語。
プログラムでの処理が激重。 数万件の書き込みに数十秒かかることも。
アプリの内部データとして使うのはNG(遅すぎるため)。
🚀 高速処理・分析・設定用の形式

6. Parquet .parquet
データ分析界隈(Pandasなど)で標準の、超圧縮・高速フォーマット。
用途:ビッグデータの保存、ログのアーカイブ、分析用データ。
読み込みが爆速。 CSVの10倍〜100倍速いこともある。
サイズが極小。 JSONの1/10以下になることも。
追記・編集ができない。 読み取り専用のアーカイブ向き。
専用ライブラリがないと開けない。
7. Pickle .pkl
Pythonの変数を「そのまま」バイナリ(0と1)にして保存する形式。
用途:計算途中のデータの一時保存、AIモデルの保存。
Pythonのあらゆるオブジェクト(クラス、画像データ等)を何も考えずに保存できる。
Python以外では開けない。
危険。 知らない人が作ったpklファイルを読み込むとウイルス感染のリスクがある。
8. YAML .yaml
JSONに似ているが、括弧 {} を使わずインデントで構造を表す形式。
用途:DockerやKubernetesの設定ファイル、アプリの config.yaml。
JSONより人間が読み書きしやすい。コメント(#)が書ける。
Python標準ライブラリだけで扱えない(PyYAML等のインストールが必要)。
データ保存用としてはJSONより処理が遅い。
🏆 結論:結局どれを選べばいい?

「例:数十万件規模のデータ管理」における「正解」は以下の通りです。
| 用途 | 最適な形式 | 理由 |
|---|---|---|
| メインの保存先 | 🥇 DB (SQLite) | 唯一「部分更新」ができ、数十万件でも高速だから。 |
| 設定ファイル | 🥈 JSON / YAML | 手で書き換えやすく、読み込みも簡単だから。 |
| Excelで見たい時 | 🥉 CSV | 「出力機能」として実装し、Excelで開けるようにする。 |
データ量が増えてきたら、迷わず JSON → SQLite への移行を行いましょう。快適さが段違いです。

