概要
プログラムから見たファイルは 「バイト列に、名前 (パス) が付いたもの」。ディスクに記録された 0 と 1 の連なりに、ファイル名と保存場所 (ディレクトリ) でアクセスできるようにしたもの。.txt も .png も .zip も中身は「バイトの並び」で、拡張子は 人間が「これは何のファイルか」を察するためのヒント に過ぎない。
中身の解釈で分かれるのが テキストファイル と バイナリファイル。テキストは「文字コードで意味付けされたバイト列」が並んだもの、バイナリは「画像やアーカイブなど特定アプリが解釈する独自フォーマット」。テキストを cat すると読める、バイナリを cat すると文字化けするのはこの違いから来る。
日本語が混じるテキストでは 文字コード が事故の温床。現代の Web 標準は UTF-8。古いシステムだと Shift_JIS / EUC-JP が混じり、間違うと文字化けする。さらに 改行コード (Unix/macOS は LF、Windows は CRLF) の違いも CSV パースで効いてくる。次の章から実際にファイルを読み書きする前に、「ファイル = バイト列 / 解釈は別レイヤー」をここで押さえる。
学習目標
- 「ファイル = バイト列に名前 (パス) が付いたもの」と絵で言える
- テキストファイル と バイナリファイル の違いを 1 行で説明できる
- 日本語が混ざるテキストは 文字コード (UTF-8 が標準) を意識する必要があると言える
- 改行コード (LF / CRLF) で挙動が変わる場面があると知っている
ドリル
このチャプターにドリルはありません。 スライドを読み終わったら次の ch02-read-file/ に進んでください。
理由: 「ファイルとは何か」を 絵と言葉で押さえる のが目的。手を動かすのは ch02 から (file_get_contents で実際に読むところ) で行います。
確認してみる (任意)
エディタで適当な .txt ファイルを 1 つ作って、以下を観察すると理解が早い。
echo "こんにちは" > /tmp/hello.txt
# バイト列として見る
wc -c /tmp/hello.txt # バイト数を出す (UTF-8 で「こんにちは」は 15 バイト + 改行)
xxd /tmp/hello.txt # 16進ダンプ。1 バイトずつどう並んでいるかが分かる
# テキストとして見る
cat /tmp/hello.txt # こんにちは
「ファイルの中身 = バイト列」「テキストエディタはそれを文字コード経由で 文字に解釈 している」という関係が腹落ちすれば OK。
🤖 この章を AI に聞く
-
「ch01 — ファイルとは / バイナリ vs テキスト / 文字コード」のつまずきやすいポイントを、初学者向けに3つ教えてください
-
「ch01 — ファイルとは / バイナリ vs テキスト / 文字コード」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)
-
「ch01 — ファイルとは / バイナリ vs テキスト / 文字コード」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください