〇〇MBって大きい?小さい?エンジニアなら身に付けておくべきデータサイズの感覚とは
データの大きさ、イメージできますか?
「〇〇MBのファイル」って言われても、正直ピンとこなくないですか?
ある日、お客さんとの要件定義で「写真はどのくらいのサイズまで対応できます?」って聞かれて、固まったことがあります。(縦横の大きさではなく、容量)
「え、どのくらいって言われても...」みたいな。
「〇〇TBのストレージ」と聞くとなんとなく大きそうだと感じるし、「GB」はゲームとかで見るから馴染みある。「MBくらいのファイル」と言われてもピンとこない。私たちエンジニアでさえ、データサイズの「肌感覚」を持っている人は意外と少ないのではないでしょうか。
この記事の目標
この記事では、データサイズを身近なものに例えながら、「〇〇Bと聞いて、大きい・小さいを感覚的に判断できる」 ようになることを目指します(僕も完璧ではないので、この記事を書きながら身に付けたい)。
データサイズの基本単位をおさらい
まずは、データサイズの単位から確認していきましょう。
| 単位 | 読み方 | バイト数 | ざっくり言うと |
|---|---|---|---|
| B | バイト | 1 | ちっちゃい |
| KB | キロバイト | 1,000 B(10³) | まだ小さい |
| MB | メガバイト | 1,000 KB(10⁶) | よくあるサイズ |
| GB | ギガバイト | 1,000 MB(10⁹) | けっこう大きい |
| TB | テラバイト | 1,000 GB(10¹²) | デカい |
| PB | ペタバイト | 1,000 TB(10¹⁵) | ヤバい |
データサイズを身近なものに例えてみる
よく広さの説明で「東京ドーム◯個分」って言うじゃないですか。あれ、わかりやすいですよね。
データサイズにも同じような基準があると便利だなと思って、考えてみました。
覚えなくて良いので、雰囲気だけ掴んでください。
文字数で考える
1バイト = 半角1文字
これを基準に考えると、イメージが湧きやすくなります(日本語とかだともうちょっと大きくなりますが、イメージとして活用ください)。
| サイズ | 例え | イメージ |
|---|---|---|
| 1 B | 半角1文字 | 「A」という文字1つ |
| 1 KB | 半角1,000文字 | 原稿用紙2.5枚分のテキスト |
| 1 MB | 半角100万文字 | 文庫本1冊分のテキスト |
| 1 GB | 半角10億文字 | 文庫本1,000冊分のテキスト |
| 1 TB | 半角1兆文字 | 文庫本100万冊分(国会図書館の蔵書の約1/4) |
1TBあれば国会図書館の1/4が入るって考えると、なんかすごくないですか。
時間で考える
みんな大好きNetflix。動画のストリーミングで考えるとわかりやすいです。
| サイズ | Netflix(標準画質)視聴時間 |
|---|---|
| 1 GB | 約1時間 |
| 1 TB | 約1,000時間(約42日間ノンストップ) |
| 1 PB | 約100万時間(約114年分) |
1TBあれば42日間寝ずにNetflix見続けられます。(やばい)
身近なもののデータサイズ
僕たちの身の回りによくあるデータのサイズを調べてみました。
これも覚えなくて良いので、雰囲気だけ掴んでください。
テキスト系
| 対象 | だいたいこのくらい |
|---|---|
| ツイート1個(140文字) | 300Bくらい |
| メール1通 | 2〜5 KB |
| Word文書(10ページ) | 50〜100 KB |
| 電子書籍1冊 | 500KB〜2MB |
テキストって軽いんですね。メール1通で5KBとか。100万通送っても5GBです。
画像系
| 対象 | だいたいこのくらい |
|---|---|
| LINEスタンプ | 10〜50 KB |
| Webサイトの画像 | 100〜300 KB |
| スマホで撮った写真 | 1〜5 MB ←よく使う |
| スマホで撮った写真(HEIC/RAW) | 10〜25 MB |
| 一眼レフのRAW | 25〜80 MB |
スマホ写真は1〜5MB これだけ覚えておけばOK。要件定義でよく使います。
動画系
| 対象 | だいたいこのくらい |
|---|---|
| TikTok/リール(15秒) | 5〜15 MB |
| YouTube 1分(1080p) | 50〜150 MB |
| YouTube 1分(4K) | 300〜500 MB |
| 映画1本(フルHD) | 3〜5 GB |
| 映画1本(4K) | 15〜30 GB |
動画はさすがに重い。1分で100MBくらい見ておけば間違いなさそう。
アプリ・ゲーム系
| これ | だいたいこのくらい |
|---|---|
| 軽いスマホアプリ | 10〜50 MB |
| 重いスマホアプリ | 100MB〜2GB |
| macOS / Windows | 10〜15 GB |
| 最近のAAAゲーム | 50〜150 GB |
最近のゲームやばいですよね。100GB超えとか普通にある。
これだけ覚えよう
細かい数字は忘れていいので、これだけ覚えてください。
| 対象 | サイズ感 |
|---|---|
| 📝 テキストファイル | KB の世界 |
| 🖼️ 画像ファイル | MB の世界(1〜10 MB) |
| 🎬 動画ファイル | GB の世界 |
| 💾 アプリケーション | 数十 MB〜数 GB |
| 🗄️ データベース(中規模) | 数十 GB〜数 TB |
要件定義で使える回答テンプレ
これまでの点を踏まえ、お客さんに聞かれたときの回答テンプレを置いておきます。
「写真のアップロード上限、どのくらいにします?」
→ 「10MBでどうですか?スマホ写真なら余裕で収まります」
一眼レフのRAWも対応したいなら50〜100MBまで上げる。
「動画もアップロードしたいんですけど」
→ 「1分くらいの動画なら100〜200MBですね。5分の動画も想定するなら500MB〜1GBくらい見ておきましょうか」
「1ユーザーあたり、どのくらいのストレージ容量必要ですか?」
- テキスト中心 → 100MBで十分
- 画像も保存 → 1〜5GB
- 動画も保存 → 10〜50GB
AWSの各サービスのデータサイズ制限
実際のシステム設計では、利用するクラウドサービスの制限も把握しておく必要があります。AWSの主要サービスの制限を見てみましょう。(2026年1月時点)
ストレージ系
| サービス | 制限 | 備考 |
|---|---|---|
| S3 | 1オブジェクト最大 5 TB | 1回のPUTは5GBまで、それ以上はマルチパートアップロード |
| EBS | 1ボリューム最大 64 TiB | gp3/io2の場合 |
| EFS | 実質無制限(PB規模) | ファイルシステム全体で制限なし |
EBSとEFSはあまり使ったことがないので、間違っていればコメントください。
データベース系
| サービス | 制限 | 備考 |
|---|---|---|
| RDS(MySQL/PostgreSQL) | 最大 64 TiB | インスタンスタイプによる |
| Aurora | 最大 128 TiB | 自動で容量拡張 |
| DynamoDB | 1アイテム最大 400 KB | 1テーブルの容量制限なし |
メッセージング・API系
| サービス | 制限 | 備考 |
|---|---|---|
| API Gateway | ペイロード最大 10 MB | REST API の場合 |
| Lambda | ペイロード最大 6 MB(同期)/ 1 MB(非同期) | レスポンスも同様 |
| SQS | メッセージ最大 1 MB | 拡張クライアントライブラリでS3連携可能 |
| SNS | メッセージ最大 256 KB | |
| Kinesis Data Streams | 1レコード最大 1 MB |
ハマりポイント(AWSの場合)
AWSサービスを使った実際の開発でハマりそうなパターンを紹介します。
その1 Lambda + API Gateway
API GatewayとLambdaを組み合わせると、Lambdaの6MB制限に引っかかるんですよね。
スマホ写真(1〜5MB)でギリギリ、ちょっと大きいとアウト。
対策: S3の署名付きURLを使って、フロントエンドからS3に直接アップロードさせる。Lambdaを経由しない。
その2 DynamoDB
DynamoDBは1レコード400KBまで。画像は基本入らないです。
「え、便利そうだからDynamoDBに画像も入れちゃお」→ オワリ
対策: 画像はS3に保存、DynamoDBにはS3のURLだけ保存する。
その3 SQS
メッセージ1個1MBまで。それでも大きいJSONや画像データを渡そうとすると「あれ、入らない」ってなるやつ。
対策: 大きいデータはS3に置いて、SQSにはS3のパス(URL)だけ渡す。Extended Client Libraryを使えば最大2GBまでいける。
ミニクイズ(考えてみてネ)
Q1. スマホ写真を1日100枚、1年間保存すると何GB必要?
答え
約150GB
- 1枚4MBとして
- 1日:4MB × 100 = 400MB
- 1年:400MB × 365 = 146GB
余裕見て200GBくらいあれば安心。
Q2. DynamoDBにプロフィール画像を保存できる?
答え
(2026/1/25更新)
基本、できないと考えて良い
できない
DynamoDBは1レコード400KBまで。スマホ写真は1〜5MB。10倍以上オーバー。
分割すればなんとかなりそうですが、基本はS3に画像を置いて、URLをDynamoDBに保存しましょう。
Q3. Lambdaで画像のリサイズ処理、いける?
答え
「やり方次第」ですが、API経由は危険
Lambdaのペイロード上限は6MB。スマホ写真(1〜5MB)でギリギリ。
S3トリガーでLambdaを起動して、S3から直接読み書きするパターンなら問題なし。API Gateway経由で画像を受け取ろうとすると厳しい。
まとめ
これだけ覚えて帰ってください
- テキスト = KB
- 画像 = 数MB(スマホ写真で1〜5MB)
- 動画 = 数百MB〜GB(1分で100MB)
AWSでハマるやつ
- Lambda(同期)は6MB → 画像を直接受け取るのはキツい
- DynamoDBは400KB → 画像は入らない
- SQSは1MB → それでも大きいデータはS3経由で
要件定義で聞かれたら
まず「何を保存するんですか?」って聞き返しましょう。
テキストなのか、画像なのか、動画なのかで全然違うので。
データサイズの感覚は、一回身につけちゃえばずっと使えると思います。
次にお客さんから「どのくらいのサイズまでいけます?」って聞かれたら、ドヤ顔で答えてやりましょう。
参考リンク
データサイズの参考
- Understanding iPhone Camera Photo Storage - iPhoneの写真サイズについて詳しく解説
- YouTube recommended upload encoding settings - YouTube公式の推奨ビットレート
- How to control how much data Netflix uses - Netflix公式のデータ使用量
AWSサービスの制限(公式ドキュメント)
- Lambda quotas - Lambdaの各種制限
- Amazon SQS message quotas - SQSメッセージサイズ制限
- Quotas in Amazon DynamoDB - DynamoDBの制限
- Best practices for storing large items in DynamoDB - 大きいデータはS3を使おうという話
最近のアップデート
- AWS Lambda increases maximum payload size to 1 MB for asynchronous invocations - 2025年10月のLambda非同期ペイロード拡張
- Amazon SQS increases maximum message payload size to 1 MiB - 2025年8月のSQSメッセージサイズ拡張
NCDC株式会社( ncdc.co.jp/ )のテックブログです。 主にエンジニアチームのメンバーが投稿します。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください!
Discussion
本人確認書類アップロードするときに3MB以下にしてくださいって怒られるサイトあるけど普通に写真撮るだけでそれ超えるし、UXとしては最悪だよなーってのを思い出した。担当者のサイズ感覚の問題なのかな
ありますね、それ。
要件決めた当時の環境が古くて、昔はそれで足りた感覚のまま放置されてるとか、サーバー側の制限を見直すコストを嫌がってユーザーにしわ寄せがきてるとか、何かしら事情があるんでしょうね。
感覚は持つことは大事ですが、それを現代のシステムにどう落とすかは別問題として考えないといけませんね。