本日はファイルについてのお話です。
昨日までのはこちら
100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて
100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて
100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1
100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1
100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1
100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1
ファイル形式
ファイル形式はコンピュータ上のデータをどのように扱うかを定めた規約のことです。
ファイルフォーマット
とも言っています。
ファイル形式は下記のようなものがあります。
カテゴリ | ファイル形式 | 拡張子 |
---|---|---|
ドキュメント | テキスト | .txt |
ドキュメント | HTML | .html |
データ記述 | CSV | .csv |
データ記述 | TSV | .tsv |
データ記述 | XML | .xml |
データ記述 | JSON | .json |
データ記述 | YAML | .yml |
データ記述 | CSS | .css |
オフィス関連 | ||
オフィス関連 | エクセル | .xlsx , .xls |
オフィス関連 | ワード | .docx , .doc |
オフィス関連 | パワーポイント | .pptx , .ppt |
画像 | JPEG | .jpg |
画像 | PNG | .png |
画像 | GIF | .gif |
画像 | SVG | .svg |
音声 | MP3 | .mp3 |
音声 | AAC | .aac |
音声 | WAV | .wav |
音声 | AIFF | .aiff |
動画 | AVI | .avi |
動画 | MP4 | .mp4 |
動画 | MOV | .mov |
圧縮 | tar | .tar |
圧縮 | ZIP | .zip |
圧縮 | gzip | .gz |
そのほか | 実行ファイル | .exe |
そのほか | イメージ | .dmg |
そのほか | インストーラ | .pkg |
上記のものは様々なソフトウェアで使用できると思います。
ここに記したものは一部です。
ソフトウェアにより、独自の拡張子がつくことがあります。
その場合、その拡張子のファイルは専用のアプリケーションでしか
開くことができないことがよくあります。
文字コード
ファイルを確認する上で重要な点として文字コード
が挙げられます。
文字コードはコンピュータ上で文字を利用する目的で各文字に割り当てられるバイト表現
もしくはバイト表現と文字の体系のことを指して「文字コード」と呼ばれます。
よく用いられている文字コード
は
UTF-8
Shift-JIS
EUC-JP
などがありますが、ファイルを保存する際に文字コードを指定して保存できます。
Windows
PCではソフトウェアの標準がShift-JIS
であることが多く
MacOS
で作成されたものはUTF-8
であることが多いです。
そのため、想定と違う文字コードで保存されたファイルを開こうとすると
文字が化けて出力されます。
その際には読み込みや書き込み時の文字コードを見直して
際読み込みなどを行えば解消されることがあります。
ドキュメント形式
主なドキュメント形式のファイルとしてテキスト
やHTML
があります。
テキストは記述形式に決まりがなくルールは特にありません。
テキストエディター
と呼ばれる類のソフトウェアであればなんでも開くことができます。
気をつける点としては文字コード
くらいかと思います。
HTML
はブラウザーで開いた時とテキストエディターで開いた時の挙動が変わります。
HTML
のコードを修正したい場合はテキストエディター
コードの表示結果をみたい場合はブラウザーで開きましょう。
データ記述形式
主にデータとして扱われる形式のファイルの形式です。
CSV(Comma-Separated Values)
,
カンマで区切られた形式のファイル形式です。
縦、横で数が揃うような表形式のファイルになっています。
1行目は通常はヘッダー
行として扱われ表頭
としてのデータが書き込まれていることが多いです。
その場合、データ行は2行目以降になります。
注意点として、,
カンマをデータに含む場合は"
で囲まれている場合があります。
,
は通常、区切りの文字として扱われるため、データとしての,
は
囲み文字で囲んでおかないとデータの列数などがずれてしまうことになります。
データを書き込む際や、読み込みをする際には気をつけましょう。
num,name,category
1,aaa,vz
2,bbb,cc
TSV(TAB-Separated Values)
CSVは,
カンマ区切りでしたが、TAB
文字区切りになるとTSV
ファイルになります。
違いは,
がTAB
になっている事くらいです。
データの中には,
を普通に埋め込みすることもできるため、CSVと区別して使われます。
num name category
1 aaa vz
2 bbb cc
XML(Extensible Markup Language)
マークアップ言語で書かれたデータ形式です。
HTMLのようにタグ
を用いて書かれているのが特徴です。
タグによる階層構造になっているので、読み込みや書き込みを工夫する必要があります。
<レシピ 名前="パン" 準備時間="5分" 調理時間="3時間">
<料理>基本的なパン</料理>
<材料 量='3' 単位='カップ'>小麦粉</材料>
<材料 量='0.25' 単位='オンス'>イースト</材料>
<材料 量='1.5' 単位='カップ' 状態="温かい">水</材料>
<材料 量="1" 単位="ティースプーン">食塩</材料>
<要領>
<手順>全ての材料を一緒にして混ぜます。</手順>
<手順>十分にこねます。</手順>
<手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順>
<手順>もう一度こねます。</手順>
<手順>パン焼きの容器に入れます</手順>
<手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順>
<手順>オーブンに入れて温度を180℃にして30分間焼きます。</手順>
</要領>
</レシピ>
JSON(JavaScript Object Notation)
軽量なテキストベースのデータ交換用フォーマットでありプログラミング言語を問わず利用できます。
辞書型の構造になっており
{名前1:値1,名前2:値2,名前3:値3}
というような形式になっています。
配列などと組み合わせて複雑な構造体系にすることも可能です。
{
"キー":"データ",
"キー":[配列データ],
"配列の中に構造":[
{
"項目1":{
"前菜":"サラダ",
"メインディッシュ":"肉"
}
},
{
"項目2":{
"前菜":"サラダ",
"メインディッシュ":"きのこ"
}
}
]
}
YAML
概念的にはXMLと非常に似ていますが、コンフィグファイルの形式としてよく用いられるファイル形式です。
辞書や配列、入れ子など様々な構造を書き込みできます。
- red
- blue
- # 入れ子
- orange
- pink
- green
meta:
title : title text
description : description text
- { name: narusekokomi , age: 28 }
- { name: ueharaai , age: 29 }
CSS(Cascading Style Sheets)
HTMLのスタイルを記述するための形式です。
HTMLと組み合わせて用いられることがほとんどです。
中身はCSSの書き方のルールに併せて記述されます。
h1 {
padding:20px 0px 0px 20px;
font-family:Arial, Helvetica, sans-serif;
}
オフィス関連のファイル形式
オフィス関連でよく用いられるものは4つ
PDF
エクセル
ワード
パワーポイント
です。
基本的に作成は専用のソフトウェアでの作成になりますが
読み込みは様々なソフトウェアで対応している場合があります。
エクセル
,ワード
,パワーポイント
からPDF
を作成できますが
その逆は難しいです。
Python言語
であればこの形式のファイルの読み書きを行うことができるので
レポート処理などを自動化したければPython
がオススメです。
100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1
画像のファイル形式
画像ファイルには様々な形式がありますが
よく使われるのは以下のものです。
ファイル形式 | 拡張子 |
---|---|
JPEG | .jpg |
PNG | .png |
GIF | .gif |
SVG | .svg |
JPEG
主に静止画のデータとして用いられる形式です。
PNG
静止画のフォーマットですが、透過画像として保存することもできます。
GIF
静止画のフォーマットですが、静止画を組み合わせたアニメーション画像を作成することもできます。
SVG(Scalable Vector Graphics)
ベクターとも呼び、JPEGやPNGがビットマップデータなのに対し
SVGはXMLをベースにした二次元ベクターデータです。
そのため、拡大縮小しても、画像の滑らかさが保たれるという利点があります。
企業ロゴなどを作成する場合はこの形式を用いることも多いと思います。
画像データはPhotoshop
などの画像編集ソフトを用いて扱うか
プログラム言語を用いて操作、編集などが行えます。
音声のファイル形式
よく用いられている音声のファイル形式には以下のようなものがあります。
ファイル形式 | 拡張子 |
---|---|
音声 | MP3 |
音声 | AAC |
音声 | WAVE |
音声 | AIFF |
MP3(MPEG-1 Audio Layer-3)
音声の圧縮データファイルになります。
主に圧縮を行う際のサンプリング周波数
,ビットレート
によって圧縮率が変わりファイルサイズが変わります。
AAC(Advanced Audio Coding)
MP3の後継規格で、MPEG形式の動画データに含まれる音声データの標準圧縮方式の一つとして広く利用されています。
WAV(RIFF waveform Audio Format)
音声データ記述のためのフォーマットで、通常は圧縮なしの音声データとして扱われます。
サンプリング周波数
,ビット数
,チャンネル数
から
曲の長さ
をかけあわせるとファイルの容量が計算できます。
値 | |
---|---|
サンプリングレート | 44.1kHz |
量子化ビット数 | 16bit |
チャンネル数 | 2ch |
16(bit/ch)×44.1(k/sec)×2ch=1411.2kbps
1411200(bit/秒)×60(秒)÷8(bit/Byte)=10590000Byte=10.59MB
AIFF(Audio Interchange File Format)
macOS上での音声フォーマットになります。
これも非圧縮であるため、MP3などに変換することができます。
動画のファイル形式
よく用いられるものとしては以下のようなものがあります。
カテゴリ | ファイル形式 | 拡張子 |
---|---|---|
動画 | MP4 | .mp4 |
動画 | AVI | .avi |
動画 | MOV | .mov |
MP4
一般的な動画ファイルの形式です。動画と言えばこの形式をさすことが多いです。
動画広告やYoutubeの動画形式もこのMP4です。
編集を行うには専用のソフトウェアが必要になってきます。
動画の再生はコーデック
と呼ばれる圧縮伸張プログラムを用いて再生することができます。
再生できない場合はコーデック
をインストールすれば再生できることもあるので
整備してみましょう。
動画ファイルの容量の目安は
動画のビットレート × 長さ(秒) ÷ 8(bit/byte)
です。
2.5Mbps × 600秒 ÷ 8 = 187.5MB
ビットレート
は動画のきめ細やかさにも関係してくるので
動画のサイズが大きすぎる場合は落としてみても良いでしょう。
AVI
Windows用の動画用ファイルフォーマットです。
MOV
Apple社のQuickTimeムービーで作成された形式の動画データファイルです。
圧縮ファイル形式
よく用いられるものとしては以下のようなものがあります。
カテゴリ | ファイル形式 | 拡張子 |
---|---|---|
圧縮 | tar | .tar |
圧縮 | ZIP | .zip |
圧縮 | gzip | .gz |
tar
ファイルアーカイブのファイルフォーマットの一種です。
通常はUNIXコマンドなどで作成します。
解凍は一般的な圧縮解凍ソフトウェアで行うことができます。
ZIP
4チャンネルの番組ではないです。圧縮ファイルフォーマットの一種です。
解凍は一般的な圧縮解凍ソフトウェアで行うことができます。
複数ファイルをまとめて1つにする際にはこの形式を用いることが多いです。
gzip
圧縮ファイルフォーマットの一種ですがZIPとの違いは
圧縮されるファイルが1つであることです。
ZIPは複数ファイルをまとめて圧縮することが多いですが
gzipは伸長した際にファイルが1つであることが求められます。
まとめ
様々なファイルの形式があり、ファイルの形式によって取り扱い方も変わってきます。
データの取り扱いはプログラミングやシステム開発では
必須になってきますので、様々なデータ形式のファイルが取り扱えるように
プログラムからのファイルの取り扱いに慣れておきましょう。
君がエンジニアになるまであと55日
作者の情報
乙pyのHP:
http://www.otupy.net/
Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter:
https://twitter.com/otupython