1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

⌨️ キーボードを押してから画面に文字が表示されるまでの旅🧳【初心者向け完全解説】

1
Posted at

はじめに

パソコンのキーボードでキーを押すと、ほぼ一瞬で画面に文字が表示されますよね。
でもその「一瞬」の裏側では、実はたくさんの工程が走っています!
そもそもどうやって画面に文字がひょうじされるの?
この記事では、そんな素朴な疑問を CPU・OS・シェル・ドライバ などの用語を交えながら、わかりやすく解説します 🚀


🗺️ 全体の流れ(まずはざっくり!)

⌨️ キーを押す
  ↓
1. キーボード(ハードウェア)が電気信号を発生
  ↓
2. 割り込み(IRQ)でCPUに通知
  ↓
3. OS(カーネル)がキーボードドライバを呼び出す
  ↓
4. キーコードを文字コード(ASCII / Unicode)に変換
  ↓
5. シェルやアプリケーションが入力を受け取る
  ↓
6. フォントデータをもとに文字を描画
  ↓
7. GPUがディスプレイに出力
  ↓
🖥️ 画面に文字が表示される!

では、それぞれの工程を詳しく見ていきましょう!


1️⃣ キーボードが電気信号を発生させる

キーを押すと、キーボード内部のスイッチが閉じて 電気回路がつながります

  • キーボードには格子状の マトリクス回路 が内蔵されています
  • どの行・列のスイッチが押されたかで「どのキーか」を識別します
  • この情報は スキャンコード(Scan Code) という数値として表現されます
例)「A」キーを押す → スキャンコード: 0x1C(キーボードによって異なる場合あり)

💡 ポイント:スキャンコードはまだ「文字」ではなく、「キーボード上の位置番号」です!


2️⃣ 割り込み(IRQ)でCPUに通知する

キーボードがスキャンコードを発生させると、割り込み(Interrupt) という仕組みでCPUに知らせます。

🧠 CPU(Central Processing Unit)とは?
「中央演算装置」とも呼ばれる、パソコンの中心的な部品です。計算や命令の実行をすべて担当しています。人間でいえば「脳みそ」にあたります。1秒間に何十億回もの処理ができます。

💡 割り込み(インタラプト)とは?
CPUは普段、プログラムの処理を順番にこなしています。でも「キーが押された!」など緊急の出来事が起きると、今の作業をいったん止めて(割り込んで)その対応をします。これが割り込み処理です。

CPUのイメージ:
  「計算中...計算中...」
       ↓ ← 割り込み発生!
  「わかった!キーボードの処理を優先するよ!」
       ↓
  キーボード処理 → また元の作業に戻る

💡 ポイント:割り込みがあるおかげで、CPUは「常にキーボードを監視」しなくて済みます。効率的!


3️⃣ OS(カーネル)がキーボードドライバを呼び出す

割り込みを受けたCPUは、OS(オペレーティングシステム) のカーネルに処理を渡します。

🖥️ OS(Operating System)とは?
「オペレーティングシステム」の略で、パソコン全体を管理するソフトウェアです。WindowsやmacOS、Linuxなどが有名です。ハードウェア(CPU・メモリ・キーボードなど)とアプリの間に立って、うまく橋渡しをする役割を担っています。いわば「パソコンの司令塔」です。

OSは「どのキーが押されたか」という情報を受け取り、現在アクティブなウィンドウ(使っているアプリ) に「こんなキーが押されましたよ」と伝えます。

🖥️ OSとカーネルって何?

用語 説明
OS Windows / macOS / Linux など、パソコン全体を管理するソフトウェア
カーネル OSの中核部分。ハードウェアとソフトウェアの橋渡し役
ドライバ 特定のハードウェアをOSが制御するための専用プログラム

カーネルは キーボードドライバ を呼び出して、スキャンコードを受け取ります。

[ハードウェア層]  キーボード
                    ↕(スキャンコード)
[カーネル層]    キーボードドライバ
                    ↕
[OS層]          入力管理サブシステム

💡 ポイント:ドライバがあるから、メーカーが違うキーボードでも同じように使えます!


4️⃣ スキャンコードを文字コードに変換する

キーボードドライバはスキャンコードを受け取り、キーマップ(Key Map) を使って文字コードに変換します。

🔤 キーマップとは?

「スキャンコード → 文字」の対応表です。
日本語配列・英語配列などの違いも、ここで吸収されます。

スキャンコード: 0x1C
    ↓ キーマップ(日本語配列)
文字コード(Unicode): U+0041 = "A"
    ↓ Shiftキーが押されていれば
文字コード(Unicode): U+0041 = "A"(大文字)
Shiftなしなら: U+0061 = "a"(小文字)

🌐 文字コード(ASCII / Unicode)とは?

💡 文字コードとは?
コンピューターは文字を「数字」で管理しています。「A」は 65、「あ」は 12354 など、世界共通のルールで決められています。このルールを「文字コード」と言い、現在は UTF-8 という形式が広く使われています。

「A」キー → スキャンコード 0x1C → キーコード 65 → 文字コード A(0x41) → 画面に描画、という流れです。

💡 キーコードとは?
キーボードの各キーには番号が割り振られています。たとえば「A」は 65 という数字で表されます。コンピューターは文字をそのまま理解するのではなく、こういった数字で管理しています。

規格 説明
ASCII 英数字・記号などを0〜127の数値で表す古い規格
Unicode 世界中の文字(日本語・絵文字など)を統一的に扱う現代の規格
UTF-8 Unicodeの代表的なエンコード方式。Webで広く使われる

💡 ポイント:パソコンの中では、文字はすべて「数値」として管理されています!


5️⃣ シェルやアプリケーションが入力を受け取る

文字コードに変換されたデータは、入力バッファ という一時保存領域に格納されます。
そこからシェルやアプリケーションが読み取ります。

💻 シェル(Shell)とは?
ユーザーとOSの間に立って、コマンドを受け付けて実行するプログラムです。「殻(から)」という意味があり、OSの外側を包んで人間が操作しやすくしてくれています。bashzsh などが有名です。
ターミナルで lscd などのコマンドを打てるのは、シェルが解釈して動かしてくれているからです。

代表的なシェル

シェル名 主な使用環境
bash Linux / macOS(旧バージョン)
zsh macOS(現在のデフォルト)
PowerShell Windows
fish クロスプラットフォーム(使いやすさ重視)

📝 GUIアプリケーションの場合

テキストエディタやブラウザなどのGUIアプリでは、シェルではなく アプリケーション自身 が入力イベントを受け取ります。

OSの入力イベントキュー
    ↓
GUIフレームワーク(Windows API / Cocoa / GTK など)
    ↓
アプリケーション(テキストエディタなど)
    ↓
テキストバッファへ文字を追加

💡 ポイント:シェルもアプリも、OSから「キーが押されたよ」というイベントを受け取る点は同じです!


6️⃣ フォントデータをもとに文字を描画する

アプリケーションが文字を「画面に表示する」と決めたら、レンダリング(描画) が始まります。

🔤 フォントとは?

文字の見た目(形・サイズ・スタイル)を定義したデータファイルです。

描画の仕組み

文字コード(例:U+0041 = "A")
    ↓
フォントファイル(.ttf / .otf など)から「A」の形状データを取得
    ↓
ラスタライズ(ベクターデータ → ピクセルデータに変換)
    ↓
アンチエイリアス処理(ギザギザをなめらかに)
    ↓
ピクセルデータ完成!

フォント形式の種類

形式 特徴
TrueType (.ttf) Windowsで広く使われる
OpenType (.otf) TTFを拡張した現代的な形式
Web Font (.woff2) Webブラウザ向けに最適化

💡 ポイント:フォントの形状は「ベクターデータ(数式)」で保存されていて、どんなサイズにも綺麗に拡大できます!


7️⃣ GPUがディスプレイに出力する

描画されたピクセルデータは フレームバッファ というメモリ領域に書き込まれ、GPU(グラフィクス処理ユニット) がディスプレイに送り出します。

🎮 GPU(Graphics Processing Unit)とは?
画面に映像や文字を描画するための専用チップです。CPUが汎用的な計算をするのに対し、GPUは「画面を描く」ことに特化しています。

アプリケーション
    ↓ 描画命令(Draw Text など)
描画API(DirectX / OpenGL / Metal / Vulkan)
    ↓
GPU(ピクセル単位で並列処理!)
    ↓
フレームバッファ(VRAM上の画面データ)
    ↓
ディスプレイコントローラー
    ↓
🖥️ ディスプレイに表示!

📡 ディスプレイへの信号伝送

接続方式 特徴
HDMI 映像+音声を1本で伝送
DisplayPort 高リフレッシュレート・高解像度に強い
USB-C(Thunderbolt) 薄型ノートPCで多く採用

💡 ポイント:GPUは数千〜数万のコアを持ち、ピクセルを並列処理するのが得意です!


🔄 全工程まとめ

ステップ 処理内容 関わる主役
1️⃣ キーを押す → 電気信号 → スキャンコード発生 キーボード(ハードウェア)
2️⃣ 割り込み(IRQ)でCPUに通知 CPU・割り込みコントローラ
3️⃣ キーボードドライバがスキャンコードを受け取る OS カーネル・ドライバ
4️⃣ スキャンコード → 文字コード(Unicode)に変換 キーマップ
5️⃣ シェル・アプリが入力イベントを受け取る シェル / GUIアプリ
6️⃣ フォントデータから文字を描画(ラスタライズ) フォントエンジン
7️⃣ GPUがピクセルデータをディスプレイに送る GPU・ディスプレイ

⏱️ この処理、どのくらい速い?

これだけの処理をして、表示まで通常 数ミリ秒〜数十ミリ秒 程度です!

キー入力 → 表示まで:約 1ms 〜 50ms
(キーボードの種類・OSの負荷・ディスプレイのリフレッシュレートなどによって変わります)

💡 人間が「遅い」と感じるのは約100ms以上と言われています。普段の入力はほぼ気にならないレベル!


🎓 まとめ

「キーを押す」というシンプルな操作の裏では:

  1. ハードウェア(キーボード)が電気信号を生成
  2. 割り込みという仕組みでCPUに通知
  3. OSのカーネルとドライバがスキャンコードを処理
  4. キーマップでUnicodeの文字コードに変換
  5. シェルやアプリが入力を受け取って処理
  6. フォントエンジンが文字をピクセルに変換
  7. GPUがディスプレイに映像を出力

...という7つのステップが、一瞬で完結しています!✨

コンピュータってすごいですよね 🖥️⌨️
この記事が「なんとなくわかった!」のきっかけになれば嬉しいです 😊


📚 参考・もっと深く学びたい方へ


💬 質問や感想があれば、コメント欄でお気軽にどうぞ!
👍 役に立ったら、いいね&ストックをお願いします!
🎓 ここまで読んでくださって、本当にありがとうございました!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?