情報学概論Ⅱ 第11回

企業情報学部

6/30

情報学概論2 第11回(6/30)

(Introduction to Informatics 2)

0 ファイルについて(この講座の中心テーマ)

ファイル
  • 情報通信技術で「データ」が重要な役割を果たしていて、データは図のように処理、通信、保存といった操作を行う対象となってきている。 データベース
  • データを「保存」(いわば時間の壁を越える)の際には、「ファイル」の形で扱うという方式が主流になっている。
    • 元来のコンピュータでは必ずしもファイルに基づくデータ保存だけが行われていた訳ではなく、様々な方式があった(たとえば「データベース」の「レコード」としての保存は今も使われている)が、
    1970年頃に出現した Unix オペレーティングシステム(その後のコンピュータに様々な影響を与えた)ではあらゆるものを「ファイル」の形式で扱うという考え方で作られていた。(いわば、たまたま)この選択が、現在のデータの扱い方の標準となった。

ファイルの実体

ファイルの分類
  • ファイルとして扱われるデータの種類は図のように様々である。
    • 逆に言えば、これだけ様々のものをすべて「ファイル操作」という形に統一したのがUnixの大胆な発想だったということだが。
    • ファイルの扱いとしては統一されていても、データの扱いは種類によって様々。種類を区別した扱いは必要になる。
  • ファイルにはデータそのものが収められるが、そのファイルそのものに関する情報がどう扱われているかも見ておこう。
    • ファイルには名前がついている(利用者が名前をつける)。
    • 名前は(人間が)その中身を推測・判断するために重要な情報となる。
    • 名前の一部分(末尾の、最後のピリオド以降)を拡張子と呼び、コンピュータがその扱い方を推測・判断するための情報として使われていることはこれまでに見てきた
含まれる情報
(ただし中身と拡張子が必ずしも一致しているという保証はない)。
  • 中身としてはデータの本体が収められているが、原則としてその中には、名前に関する情報や拡張子に相当する情報は含まれていない。
  • 中身のデータの並び方からもそのファイルが何であるかを推測する手立ては(少しは)あることも知っておこう。
  • なお、ファイル名(と拡張子)に加えて、保管されている場所や最終更新日時(タイムスタンプ)、アクセス権、などの情報は、そのファイルが所属しているフォルダ(ディレクトリ)に書き込まれている。
テキストファイル
  • 情報学概論1では、(上記のように様々の種類のファイルのうち)ファイルの先頭から順に文字データが並ぶファイルだけに着目し、 その文字データとして、ASCII(or ANSI)文字コード以外に、多国語の文字を扱ういくつかの文字コード(エンコーディング)があることを見てきた。
    • この科目ではそれ以外の種類(主にマルチメディア系のデータ)にも着目して、データへの理解を深めていきたい。

1 ファイルフォーマットを知る

ヘッダ 今回、画面を使って解説/実演する内容のまとめ(別ページ)

1.1 画像ファイル(BMP)

(前々回、その見方をお伝えし、その実施については宿題としました。)

  • BMPは(WAVなどでもそうだが)先頭部にヘッダ情報があり、その後ろにデータの中身(BMPだと画像の各画素ごとの色をあわわす値)が収められていることは見てとれただろうか。

1.2 音声ファイル(Wav)

波形

題材ファイル:

  • 正弦波250Hzのデータ

    (ここから借用しました) これをダンプして眺めてみる。

    • 右図は音声編集アプリケーションで表示させた波形。
  • 参考資料:
    • 解説として、ここをざっと読んでみる。
    • また、ここにも情報あり。
  • 先頭部はこんな感じだろう。以下のような情報が見てとれる。
    1. RIFF, WAVE, “fmt” (4文字目はスペース)といった文字が入っている。
    2. この2バイトが波形データのフォーマットを示す番号。1は、Microsoft PCM format とされている、.WAV ファイルによく使われる、非圧縮のフォーマット。
    3. bit 数 0010H = 16 bit (つまり2バイト)
先頭部
  1. サンプリング周波数 44100 Hz (= 15855H)。これを含めて数値データはバイト毎にリトルエンディアンの表現で収められていることに注意。

    (右図の赤い下線4に誤りがあったので訂正版を7/2に貼りました)

  2. PAD チャンク

  • データ部分は、2eH = 46 バイト目から始まり、
  • サイズは 00000fcaH = 4042 バイト
  • ということは 46+4042=4088 バイト目 = FF8Hから次のチャンクが始まる。
data部
  • なお(ダンプ出力の見方の確認)、左端に表示される7桁の16進数(図の青い線)は、 その行に出力される各バイトのアドレスの、下一桁を除いたもの。たとえば左端のバイト (青く囲んだ)のアドレスは ff00H、 data の文字が始まるバイトは ff08H であることがわかる。
  1. dataチャンクは 00081330H 529200バイト
    • 2(バイト/サンプル) * 44100(サンプル/秒) * 6(秒) = 529200 (バイト)の計算で確認できる。
    • データは(“data” の文字と4バイトのサイズのあと)4096バイト目 = 1000H から始まる。 0.5秒後
  1. このファイルは最初の0.5秒が無音期間になっているので、2441000.5 = 44100 バイト分の0がつまっている。

    • 4096+44100=48196 (=bc44H) あたりから動きが始まる。 データの意味
  • このあたりに、サンプリングされた各クロック毎の 波の高さを表す数値(符号付き16bit整数)をみることができる。

  • 16bitの最上位の bit が符号(プラスまたはマイナス)を表す。

  • 0 のすぐ下(マイナス1)が、ffffH で表されていることに注意。

  • 例えば下図の 05 fa と並ぶ2バイトが1組で、一回分のサンプリング値を表し、 (左右を並び替えて考えるといい)fa05H (= -1531) がその値だとわかる。

  • 上位バイト(各対の右側のバイト)の値の動きを見ると、なめらかに少しずつ変化していることが見てとれるだろう(右図)。 画面例
バイトの並び

以下は来週扱います

(ここをクリックすると表示が切り替わります)

3. 課題

  • 1.2章のガイドに沿って、 音声データをバイナリエディタ(もしくはエディタの拡張機能)でダンプ表示させ、 WAV形式の規格との照合を試みて、 発見したこと、気づいたことなどをご報告ください。

    (予定していた以下の課題は来週にまわします)

  1. 1.3章で添付した実習用画像それぞれについて、

    • PNGやBMPに変換
    • (JPG、BMPについて)圧縮

    といった作業をしてみて、(そのファイルサイズ等について)気がついたことを報告ください。


  1. 1節(枕草子) について、自分で調べてみてわかったこと、自分がどんな方法を使ったか、 について報告ください。 (作ったHTMLファイルも添えて提出)