2025-05-01
GoogleMeet, テキストファイル, マークダウンファイル, 文字コード, 文書構造, 画像ファイル
ICT基礎 第3回
アンケートFeedback
(Pros. &) Cons.
パソコン本当に分からなくて頭をかかえた 少しわからなくなると置いてかれるからもう少し授業ゆっくりにしてほしい
前回よりも複雑な作業が増えて、説明が少し早かったように感じたのでもう少しゆっくりとしてくれればうれしいです。それ以外はとくにないです。
周りがWindowsばかりで難しく感じた。
やることがたくさんあってバタバタしてしまったけれど、友達に教えてもらいながら課題を提出できたのでよかったです。
課題の提出期限とかわかるずらかった。
プロジェクターで写している画面を大きくしてくれたので、前回の授業よりも見やすかったです!
クリックの回数がわからず難しかったので徐々に慣れていきたいと思います。
対面希望 or オンライン希望?
Google Meet
GWなので, Google Meetをオープンしておきます!! 私自身は大学で授業しているため, 気づくのが遅れるかもしれませんが, わからない点があればコメントで質問してください.
ICT基礎 5月 1日 (木曜日) · 午後2:30~6:00 タイムゾーン: Asia/Tokyo Google Meet の参加に必要な情報 ビデオ通話のリンク: https://meet.google.com/poh-dyyy-vnk
今日のフォルダの準備
Windows:
C:\Users\[ユーザ名]\Documents\ict
に移動し,03
というフォルダを作成しておくC:\Users\[ユーザ名]\Documents\ict\03
というフォルダ構成になる
Mac:
/Users/[ユーザ名]/Documents/ict/
に移動し,03
というフォルダを作成しておく/Users/[ユーザ名]/Documents/ict/03
文字の表現
文字コード
コンピュータの中では, 実際にbitという0 or 1を用いて様々なものを表現しています.
シンプルな例は文字です. 活版印刷が生まれる以前, 文字は下図のような手書きによるものでした.
上図では, 上の行と下の行とで同じ内容: a b c あ い う 漢 字 を書いています.
誰が書いても, どんなに汚く or キレイに書いても文字は文字で, 等しく a b c あ い う 漢 字 という同じ内容を示します.
すなわち, 汚い, キレイ, かっこいい, 太い, 細い, 大きい, 小さい等の要素は, 文字の本質ではなく, 装飾であることがわかります. そして, 活版印刷の活字が生まれたことで, 文字自体と, その装飾との区別がより明確になっていきます.
コンピュータで文字を表現する場合も同じです. 文字そのものを表現する共通の方法を用意することが基礎としてあり, 文字の装飾は機器やアプリごとに異なっても良いのです.
コンピュータが扱えるのは (原始的には) 数のみであるため, 文字に数を割り当てる (例: K↔75) ことで文字を表現します. この割り当て方のルールを文字コード (character code) と呼びます.
世界中にただ1つの文字コードしか存在しない、という状況なら特に困らないのですが, 現実はそうではありません. 英語のようにアルファベット26文字で済む場合もあれば, 日本語のように, ひらがな, カタカナ, 漢字など大量の文字を必要とする言語もあります.
各々が各々のルールで文字と数とを割り当ててきた歴史があるため, 現状では様々な文字コードが存在します.
例: ASCII, EBCDIC, JIS, Shift_JIS, EUC, Unicode 等
ASCII
これらの文字コードの中で, 最も基本的な文字コードと呼ばれるものが ASCII (アスキー) です.
アルファベット, 数字, いくつかの記号, そして制御文字 (改行など) を, 7bit (2進数なら7桁の0000000 ~ 1111111, 10進数なら0 ~ 127, 16進数なら0 ~ 7F) で1文字を表します. 他の文字コードでも, この128文字はASCIIと共通している場合がほとんどです.
具体的には下表です. 青文字は制御文字, それ以外が印刷可能文字です.
2進数 | 10進 | 16進 | 文字 | 2進数 | 10進 | 16進 | 文字 | 2進数 | 10進 | 16進 | 文字 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000000 | 0 | 00 | NUL (ヌル) | 0111111 | 63 | 3F | ? | 1100010 | 98 | 62 | b | ||
: | : | : | : | 1000000 | 64 | 40 | @ | 1100011 | 99 | 63 | c | ||
0001010 | 10 | 0A | LF (改行) | 1000001 | 65 | 41 | A | 1100100 | 100 | 64 | d | ||
: | : | : | : | 1000010 | 66 | 42 | B | 1100101 | 101 | 65 | e | ||
0100000 | 32 | 20 | Space | 1000011 | 67 | 43 | C | 1100110 | 102 | 66 | f | ||
0100001 | 33 | 21 | ! | 1000100 | 68 | 44 | D | 1100111 | 103 | 67 | g | ||
0100010 | 34 | 22 | " | 1000101 | 69 | 45 | E | 1101000 | 104 | 68 | h | ||
0100011 | 35 | 23 | # | 1000110 | 70 | 46 | F | 1101001 | 105 | 69 | i | ||
0100100 | 36 | 24 | $ | 1000111 | 71 | 47 | G | 1101010 | 106 | 6A | j | ||
0100101 | 37 | 25 | % | 1001000 | 72 | 48 | H | 1101011 | 107 | 6B | k | ||
0100110 | 38 | 26 | & | 1001001 | 73 | 49 | I | 1101100 | 108 | 6C | l | ||
0100111 | 39 | 27 | ' | 1001010 | 74 | 4A | J | 1101101 | 109 | 6D | m | ||
0101000 | 40 | 28 | ( | 1001011 | 75 | 4B | K | 1101110 | 110 | 6E | n | ||
0101001 | 41 | 29 | ) | 1001100 | 76 | 4C | L | 1101111 | 111 | 6F | o | ||
0101010 | 42 | 2A | * | 1001101 | 77 | 4D | M | 1110000 | 112 | 70 | p | ||
0101011 | 43 | 2B | + | 1001110 | 78 | 4E | N | 1110001 | 113 | 71 | q | ||
0101100 | 44 | 2C | , | 1001111 | 79 | 4F | O | 1110010 | 114 | 72 | r | ||
0101101 | 45 | 2D | - | 1010000 | 80 | 50 | P | 1110011 | 115 | 73 | s | ||
0101110 | 46 | 2E | . | 1010001 | 81 | 51 | Q | 1110100 | 116 | 74 | t | ||
0101111 | 47 | 2F | / | 1010010 | 82 | 52 | R | 1110101 | 117 | 75 | u | ||
0110000 | 48 | 30 | 0 | 1010011 | 83 | 53 | S | 1110110 | 118 | 76 | v | ||
0110001 | 49 | 31 | 1 | 1010100 | 84 | 54 | T | 1110111 | 119 | 77 | w | ||
0110010 | 50 | 32 | 2 | 1010101 | 85 | 55 | U | 1111000 | 120 | 78 | x | ||
0110011 | 51 | 33 | 3 | 1010110 | 86 | 56 | V | 1111001 | 121 | 79 | y | ||
0110100 | 52 | 34 | 4 | 1010111 | 87 | 57 | W | 1111010 | 122 | 7A | z | ||
0110101 | 53 | 35 | 5 | 1011000 | 88 | 58 | X | 1111011 | 123 | 7B | { | ||
0110110 | 54 | 36 | 6 | 1011001 | 89 | 59 | Y | 1111100 | 124 | 7C | | | ||
0110111 | 55 | 37 | 7 | 1011010 | 90 | 5A | Z | 1111101 | 125 | 7D | } | ||
0111000 | 56 | 38 | 8 | 1011011 | 91 | 5B | [ | 1111110 | 126 | 7E | ~ | ||
0111001 | 57 | 39 | 9 | 1011100 | 92 | 5C | \ | 1111111 | 127 | 7F | DEL (削除) | ||
0111010 | 58 | 3A | : | 1011101 | 93 | 5D | ] | ||||||
0111011 | 59 | 3B | ; | 1011110 | 94 | 5E | ^ | ||||||
0111100 | 60 | 3C | < | 1011111 | 95 | 5F | _ | ||||||
0111101 | 61 | 3D | = | 1100000 | 96 | 60 | ` | ||||||
0111110 | 62 | 3E | > | 1100001 | 97 | 61 | a |
「文字に割り当てられた数」を実際に確認する
VS CodeにHex Editorという拡張機能を入れると, テキストファイル内の「各文字に割り当てられた数 (16進数表現) 」を確認できます.
Hex Editorの導入方法と使い方の動画は下記の通りです.
導入方法
VS Codeを開いた状態にする
左側の3つの四角と1つの四角が書かれたマーク
をクリックする
左横に出てきた列の上部の検索ボックスに
hex editor
と入力するHex Editorというツールの
install
ボタンをクリックこれでHex Editorという拡張ツールがVS Codeにインストールされた
使い始め方
VS Codeでテキストファイル (
hex-test.txt
) を開いた状態にするWindows: Ctrl キーとShiftキーを押したまま pキーを押す Mac: Command キーとShiftキーを押したまま pキーを押す
Hex Editor: Open Active File in Hex Editor
をクリックテキストデータ内の文字に割り当てられた数を確認できる新しいタブが開く
テスト方法
適当に文字を入力し, 上書き保存: Windows: Ctrl + s Mac: Command + s
テキストに割り当てられた数が表示される
動画 |
Unicode
上記で紹介したASCIIには日本語や他の言語の文字が含まれていません.
そこで, 各国がASCIIを拡張して独自の文字コードを作っていきました. 自国内で閉じて使用している分にはまだ良かったのですが, 国際化が進むにつれ, 異なる言語間のメールでやり取りする場面が増えていきました.
すると, ある数に割り当てられた文字というのが, 文字コードごとに異なるため, 異なる言語間のメールにおいて, 意図しない文字が表示されてしまう問題が発生しました. これを文字化けと呼びます.
そこで, 世界共通で使用可能な文字コードを作ろうと策定されたものがUnicode (ユニコード) です.
Unicodeではコードポイントと呼ばれる一意な非負整数 (0, 1, 2, ...) が用意されており, その各数字と各文字とが1対1に対応しています.
日本語の例は下表です.
コードポイント (10進数) | コードポイント (16進数) | 文字 |
---|---|---|
12353 | 3042 | ぁ |
12354 | 3043 | あ |
12355 | 3044 | ぃ |
12356 | 3045 | い |
39378 | 99D2 | 駒 |
28580 | 6FA4 | 澤 |
このコードポイントに対して, 更に「コードポイントをどう符号化するか?」という文字符号化形式 (UTF: Unicode Transformation Format)も別途 策定されています.
符号化 情報を一定の規則に基づいて別の形式に変換すること。 今のコードポイントの例だと「あ=12354というコードポイント(数字)を「11100011 10000001 10000010」という0 or 1のビット列に変換すること」 ↕ 復号化 符号化された情報を元の形式に戻すこと
現行では UTF-8, UTF-16, UTF-32 の3種類が定められていますが, 実際によく使うのは UTF-8 です.
UTF-8は,
8 bit = 1 byteずつの単位で符号化
1 byte目は何byte文字かの判定に使用
もし1byte目がASCIIの範囲内だったら, そのままASCIIとして使用し, ASCIIとの互換性を担保
もし1byte目がASCIIの範囲外だったら, その他の言語の文字
何bytes文字の指定範囲の分だけ続くbytesをまとめて1つの文字として扱う
2 ~ 6 bytesの可変長で対応
という特徴をもっています.
1 byte目の具体的な割り当ては下表です.
1 byte目の範囲 (2進数) | 1 byte目の範囲 (16進数) | 何byte文字? | 文字の種類 |
---|---|---|---|
0 0000000 ~ 0 1111111 | 00 ~ 7F | 1 byte文字 | ASCII |
110 00010 ~ 110 11111 | C2 ~ DF | 2 bytes文字 | ラテン, ギリシャ, キリル, アラビア文字等 |
1110 0000 ~ 1110 1111 | E0 ~ EF | 3 bytes文字 | インド, 東アジアの文字 (漢字等) |
11110 000 ~ 11110 111 | F0 ~ F7 | 4 bytes文字 | 古代文字, 上記以外 |
また, 各byte文字の場合に, 実際にコードポイントとして使用する場所は下表です.
何byte文字? | コードポイントとして使う場所をxで表記 |
---|---|
1 byte文字 | 0xxxxxxx |
2 bytes文字 | 110xxxxx 10xxxxxx |
3 bytes文字 | 1110xxxx 10xxxxxx 10xxxxxx |
2進数 | 10進数 | 16進数 | 2進数 | 10進数 | 16進数 | |
---|---|---|---|---|---|---|
0000 | 0 | 0 | 1000 | 8 | 8 | |
0001 | 1 | 1 | 1001 | 9 | 9 | |
0010 | 2 | 2 | 1010 | 10 | A | |
0011 | 3 | 3 | 1011 | 11 | B | |
0100 | 4 | 4 | 1100 | 12 | C | |
0101 | 5 | 5 | 1101 | 13 | D | |
0110 | 6 | 6 | 1110 | 14 | E | |
0111 | 7 | 7 | 1111 | 15 | F |
例えば, UTF-8によって符号化されたbyte列 CF 80 E3 81 82 33 41 を読み取ってみましょう.
CFは2 bytes文字の範囲内なので, 「CF 80」という2 bytesで1文字
「CF 80」を2進数に基数変換すると「11001111 10000000」
青字部分を集めたコードポイントは「01111000000」
これは10進数で960
10進数で960というコードポイントはギリシャ文字の「π」という文字
E3は3 bytes文字の範囲内なので, 「E3 81 82」という3 bytesで1文字
「E3 81 82」を2進数に基数変換すると「11100011 10000001 10000010」
青字部分を集めたコードポイントは「0011000001000010」
これは10進数で12354
10進数で12354というコードポイントは日本語で「あ」という文字
33は1 byte文字の範囲内なので, 「33」という1 byteで1文字
「33」はASCIIで「3」という文字
41は1 byte文字の範囲内なので, 「41」という1 byteで1文字
「41」はASCIIで「A」という文字
となるので, 実際には πあ3A という文字列だったことがわかります.
文字化けさせてみよう
日本人がたまに直面する文字化けは, 日本固有のShift_JISと世界標準のUTF-8との間で起こるものです. VSCodeで実際に文字化けをさせてみましょう.
Shift_JISで保存したファイルをUTF-8で表示 → 文字化けしている → Reopen with Encoding → Japanese (Shift JIS) → 文字化けが直る
UTF-8で保存したファイルをUTF-8で表示 → 正しく表示される → Reopen with Encoding → Japanese (Shift JIS) → 文字化けが発生 → Reopen with Encoding → UTF-8 → 文字化けが直る
UTF-8で表示 | Shift_JISで表示 | |
---|---|---|
UTF-8で保存したファイル | ![]() | ![]() |
Shift_JISで保存したファイル | ![]() | ![]() |
動画 |
画像ファイル
画像, 音, 動画を取り扱う拡張子は様々あり, 可逆性などについて特徴がありますので, 有名なものをいくつか紹介します.
ラスタとベクタ
画像の保存形式には, 実はラスタとベクタという2つの形式があります.
ラスタ形式 (raster) は, 画像をマス目 (ピクセル) に分け, その各ピクセルごとに色を決めていくという画像形式です.
これは, 写真などの複雑な画像の表現に向いています. しかし, ピクセル単位までしか細かく表現できないため, 画像を拡大していくと粗くなっていきます.
それに対し, ある空間内の点群の座標データとそれらをつなぐ線によって構成される画像形式をベクタ形式 (vector)と呼びます.
空間に対する数値データによる構成のため, 拡大しても粗くならないというメリットがあります. しかし, 複雑な画像を表現しようとすると, その分データ量が大きくなり, アプリ等で開くのに時間がかかるという問題もあります.
具体例 (ラスタ)
ラスタ形式の画像の代表例は下記です.
bmp (bitmap, ビットマップ)
(基本的には) 無圧縮
一応, 可逆圧縮の仕様も用意されている
→ ファイルサイズが大きくなりがち
白黒2値画像からフルカラーまで対応
非透過 (透明は表現できない)
gif (graphics interchange format, ジフ)
(基本的には) 可逆圧縮
一応, 非可逆圧縮の仕様も用意されている
256色以下
(基本的には) 非透過
透過表示できるように拡張されたものもある
アニメーション表示可能
一時期, gifで使用しているデータ圧縮アルゴリズムに特許使用料が発生していた. 2003年6月20日 (アメリカ), 2004年6月20日 (日本) に特許が失効し, 現在は自由に使用可能.
png (portable network graphics, ピング)
可逆圧縮
フルカラー (RGB 24bit) 以上の色表現も可
透過
gifに特許使用料が発生すると懸念されていた際に, gifに代わるものとして開発が開始された
pngファイルであることを表すために, バイナリの最初の部分 (ヘッダ) に「89 50 4E 47 0D 0A 1A 0A」という8 bytesが埋め込まれている
画像 | バイナリ |
![]() |
![]() |
jpg, jpeg (joint photographic experts group, ジェイペグ)
(基本的には) 非可逆圧縮
一応, 可逆圧縮の仕様も用意されている
フルカラーまで対応
非透過
具体例 (ベクタ)
ベクタ画像のcodeの具体例
ベクタ形式の画像の代表例は下記です.
pdf (portable document format)
いわゆるpdfで, 主に電子文書のファイル形式として扱われるが, 内部でベクタ画像を扱うことが可能
svg (scalable vector graphics)
XML (extensible markup language) を基本とした画像形式
ウェブページを構成しているHTMLもマークアップ言語であるため, 親和性が高い
画像編集用のソフトでも勿論作成できるが, 中身はテキストで出来ているため, VS codeなどのテキストエディタで画像編集することも可能
よく見るブラウザ (Microsoft Edge, Chrome, Safari等)で実際の図を確認可能
円
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2">
<circle cx="1" cy="1" r="1" style="fill: rgb(3, 3, 3);"/>
</svg>
三角形
<svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 230.94 200">
<polygon points=".87 199.5 115.47 1 230.07 199.5 .87 199.5" style="fill: rgb(255, 0, 0);"/>
</svg>
種類 | 円 | 三角形 |
テキストとして配置 | ||
画像として配置 |
課題: circle.svg
の色を赤 (red=255, green=0, blue=0) から青 (red=0, green=0, blue=255) に変えてみよう!!
VS CodeでSVGをImage PreviewではなくText Editorとして開く
下記の手順でcodeとして表示するように設定変更できます。
画像として開いてしまっている状態 (Image Preview)
ファイル名の上で右クリック or 2本指でクリック → Open With...をクリック
Configure default editor for '*.svg' ...をクリック
Text Editorをクリック
codeとして表示された (Text Editor)
課題
提出締切: ● ICT基礎 木4: 2025-05-08 14:40 ● ICT基礎 木5: 2025-05-08 16:20
講義内で作成した下記の3つのファイルをzipにまとめ, 学生番号_ICT_03.zip
(例: gk9999_ICT_03.zip
) に変更し, 提出してください
UTF-8のテキストファイル (
utf8.txt
)Shift_JISのテキストファイル (
shiftjis.txt
)SVGファイル (
circle.svg
)
アンケート
WebClassのアンケートへの回答もお願いします!! 🙌