情報学概論2 第9回(6/14)
(Introduction to Informatics 2)
^ ^^ ^
作業の自動化
ビルドツール(Make と Makefile)
makefile
Makefile に書くべきこと(と、書けること):
- ルール(タスク): ルールは、
- あるターゲット(となるファイル)を生成するために、必要となる(「依存する」とも言う)ファイル(材料)が何であるか(をルールの1行目に)、
- (2行目以降に)そのターゲットを生成するために行うべきこと(「アクション」とも呼ぶ)を、必要ならば複数行にまたがって
から成り立つ。後者は、(先頭にTAB文字が入ることを除いて)BATファイル(Unixだとシェルスクリプト)に書かれるような命令・コマンドの列とほぼ同等のもの。
変数
- また、(一般的なプログラミング言語と同様に)変数を定義して値を代入しておくこともできる。
- 変数はルールの中なので参照することができる。
- Makefileでは変数名は大文字の名前にすることになっている。
実習
makeコマンド
ルールの実行:
- 前回、インストールと、Makefileの作成までを行った。
Makefile には、前回示した内容が書かれていることを前提とする(以下に再掲する)。
%.html:%.md
pandoc -o $@ $<
また、このMakefileと同じフォルダに、何か Markdownで書かれたソースファイルが 置かれていることを前提とする(この説明/実演では、1.md を想定する)。
- これを、実行してみましょう。このMakefileが置かれたフォルダからコマンドプロンプトを起動して、
make
- 実は、これでは(現時点では)何も起きません(デフォルトのターゲットを次節で指定したら使える)。
- ターゲット名として、そこに置いてあるソースファイル(.md)と同じ名前で、拡張子を .html に変えたファイル名を指定します。
make 1.html
- ターゲットとして指定したhtmlファイルが生成されていることを確認。
- また、2回めに(同じ呼び方で)読んだ時には何も起きないことも確認する。
- ターゲットが存在しないか、ターゲットよりもソースの方が新しい時に、 (Makefileのルールに指定した)アクションを実行する、という動作原理なので。
デフォルトのターゲットを指定する
=> 本節は(実演しようとしてエラーが発生してしまったので)次週あらためて扱います。
2 ファイルフォーマットを知る
- ここでは、いわゆる「マルチメディア」系のファイルのうち、
- 圧縮が行われない伝統的なファイル形式を2つ、仔細に見ていきます。
- Atomを使ったダンプ表示と、
- 各ファイル形式の「フォーマット」の解説(検索で見つけて下さい)を比較対象しましょう。
2.1 画像ファイル(BMP)
題材ファイル:
補足
リトルエンディアン
- 2byte, 4byte の長さのデータが含まれる際、
- 「リトルエンディアン」の語順で格納されていることを知っておく必要がある
- (インテル系CPUでの昔からのルールに沿ったもの)。
2.2 音声ファイル(Wav)
(本節は次回扱います)
題材ファイル:
3. 課題
2.1節に置いたBMP形式の画像ファイル(または自分で作ってもいい)のいずれかについて、
- Atomエディタで開き、
- その16進ダンプを表示させ、
- その先頭の数行のデータの中で、
- 当該ファイルのデータサイズや縦横の画素数といった情報がどこに埋め込まれているか
- 推測と、「BMP形式のフォーマット」についての調査を鍵にして、
- 見つけ出してみて下さい。
- わかったことをご報告下さい。
(当初予定していた課題内容を変更しました)
- 今日扱ったファイルのうち1つを選んで、
- データ・フォーマットについて分析してわかったことを報告ください。