出力とOS ~ プログラムが魔法でないとわかればプログラマになれる 23

出力でOSがやっていること

入力の反対が出力です。画面に何か表示するのは最も典型的な出力の命令です。出力というとどうしてもケーブルを繋いで外部ディスプレイに映像を出力するようなイメージをしてしまいますが、OSから見た出力先はコンピューターに直接取り付けられている機器ですのでディスプレイやスピーカー、他にもLEDや振動などがあります。流れは入力の逆になります。アプリからの出力はまずOSが受け取り、OSの出力を機器が受け取ります。

画面に文字を表示したいだけなのにわざわざOSを経由しなければならないでしょうか。もちろんOSにインストールするアプリは仕組み上OSを経由せざるを得ないということもありますが、実はOSがないと文字を表示するだけでも大変になります。

ディスプレイは小さな点の集まりです。左上を0としたとき、右に0、下に0を赤色に、右に1、下に0を青色に、右に2、下に0を緑色に、というようにそれぞれの小さな点をどのように表示するのか決めます。点のすべての表示方法を決めることでディスプレイを表示しています。ディスプレイに点は何個あるでしょうか。ディスプレイには解像度という言葉で縦と横の点の数が仕様として記載されています。例えば、iPhone Xには縦に2,436個、横に1,125個の点があります。つまり点の数は縦と横を掛け算した2,740,500個あるということです。

ディスプレイは一度表示して終わりではありません。それでは動かない静止画になってしまいます。この274万個もの点を1秒間に何十回も書き換えることで動きのある表示ができるようになっています。

さて、アプリでは A という文字を表示したかったとしましょう。たったの1文字です。簡単に思えますが、数百万個の点の色や明るさをコントロールしなければなりません。それに A という文字の形をどうやって表示すれば良いでしょうか。コンピューターが認識するA、つまり0と1の羅列を表示しても人間には無意味ですから A という形に変えなければなりません。文字を形に変えるためにはフォントと呼ばれる文字形状をまとめたデータを使います。フォントのデータを使ってAの形を表示するために点をどうすべきか計算します。

文字だけでも大変ですが、アプリにはボタンやウインドウなど他にも表示したいものがたくさんあります。それらの形状を計算してディスプレイに表示するのはとても大変なことです。幸いなことにこれらはOSがやってくれます。アプリはOSに「この場所に A と表示しろ」と命令するだけで上に書いたようなことはすべてOSが計算してディスプレイに表示してくれます。

アプリのプログラムを書くという例で説明しましたが、OSもまたプログラムです。OSを開発するのであれば機器を直接扱うプログラムを書くことになります。OSのプログラムが色々な機器を扱えるように作られているおかげでアプリはディスプレイの点のことを考えなくて良いのです。

既に存在するたくさんのプログラム

OSには非常に多くの動きがプログラムされていますが、プログラムされているだけでは役に立ちません。プログラムされたものは利用できなければなりません。マウスを動かすとポインタが動くといった人間のためのプログラムももちろんありますが、プログラムのためのプログラムもたくさんあります。どういうことでしょうか。

プログラムには他のプログラムの動きを使うという仕組みがあります。たくさんプログラムされているOSの動きをアプリが利用できるのです。入力や出力もその一例に過ぎません。OS以外にも世の中にはたくさんの 利用できるプログラム が存在します。世の中のデジタル機器は既にとても複雑なものです。これらを一からプログラムしていてはどれだけ時間があっても足りません。先人が作ってきたプログラムをうまく利用してプログラムを書くことになります。

プログラミング言語には「文字を出力する」といった誰でもやりたいことは命令として用意されています。既にプログラムされている動きを使うので 用意された命令を使うだけで良い ということです。たった数文字の命令を「○○するものです」と辞書のように説明されてしまいがちですが、OSなどの他のプログラムの動きを使っているからこんなに短い命令で動くようになっているのだということを理解しておくことが大切です。

>>続きを読む

<最新話にご興味があればフォローお願いします>

この記事が気に入ったらサポートをしてみませんか?