概要

プログラムから見たファイルは 「バイト列に、名前 (パス) が付いたもの」。ディスクに記録された 0 と 1 の連なりに、ファイル名と保存場所 (ディレクトリ) でアクセスできるようにしたもの。.txt.png.zip も中身は「バイトの並び」で、拡張子は 人間が「これは何のファイルか」を察するためのヒント に過ぎない。

中身の解釈で分かれるのが テキストファイル と バイナリファイル。テキストは「文字コードで意味付けされたバイト列」が並んだもの、バイナリは「画像やアーカイブなど特定アプリが解釈する独自フォーマット」。テキストを cat すると読める、バイナリを cat すると文字化けするのはこの違いから来る。

日本語が混じるテキストでは 文字コード が事故の温床。現代の Web 標準は UTF-8。古いシステムだと Shift_JIS / EUC-JP が混じり、間違うと文字化けする。さらに 改行コード (Unix/macOS は LF、Windows は CRLF) の違いも CSV パースで効いてくる。次の章から実際にファイルを読み書きする前に、「ファイル = バイト列 / 解釈は別レイヤー」をここで押さえる。

学習目標

ドリル

このチャプターにドリルはありません。 スライドを読み終わったら次の 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 に聞く

  1. 「ch01 — ファイルとは / バイナリ vs テキスト / 文字コード」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch01 — ファイルとは / バイナリ vs テキスト / 文字コード」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch01 — ファイルとは / バイナリ vs テキスト / 文字コード」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch01 — ファイルとは / バイナリ vs テキスト / 文字コード」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE