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

組み込まれた命令

これまでプログラミング言語が何であるかやその書き方を中心に説明してきました。もちろんプログラムを読むために必要な知識ですが、実はそれだけ学習してもプログラムは理解できるようになりません。なぜかというとプログラムに用意されている命令の意味がわからないからです。

プログラミング言語には既に用意されている命令がいくつもあります。説明で使ってきた alert() もそうです。 alert() はウェブブラウザでプログラムを動かした時に画面にメッセージを表示するための命令です。わずか数文字の命令を書くだけで画面に小さなウインドウを表示してその中に文字を入れ OK をクリックするとウインドウを閉じる動作までついてきます。これは考えてみると少し不思議なことです。画面に文字の入ったウインドウを表示したりOKをクリックして閉じる動きを自分でプログラムに書いていないからです。書いたのは alert() という命令だけです。

alert() と書けばそう動くようにできている、といえばそれまでですが、どうしてそのようになっているのかを知らないと命令の意味を理解するのが難しくなります。プログラムを動かすための仕組みがどのようになっているのかをOSなどを含めて考えてみましょう。OSとはオペレーティングシステムと呼ばれるWindows、macOS、iOS、Androidなどのアプリを動かす土台となるシステムのことです。

入力は機器からOSヘ、OSからアプリへ

例えばメモアプリを作りたいとしましょう。メモアプリはどこにでも存在しますから改めて作りたいと思わないかもしれませんが、何か自分がよくやることを簡単にメモできる特別なボタンがあるものを作ると想像してください。さて、何から始めると良いでしょうか。

まず入力について考える必要があります。入力というのはテレビに挿す入力ケーブルの入力と同じ意味です。機器に何かを入れることを言います。テレビのケーブルの場合は映像や音声の信号をテレビに入れますが、コンピューターも外から何かを入れることができるように作られています。といってもケーブルを挿す必要はありません。私たちが使うコンピューターにはもともと入力するための機器が取り付けられています。

スマートフォンで文字を入力するとします。画面に表示されるキーボードを使うか話しかけるかですがキーボードを使うとしましょう。物理的な入力機器はディスプレイです。指で触るとどこが触れたのか位置を識別できるように作られています。

入力の流れはこうなります。最初に「画面にどこを触ったか」をディスプレイを通してスマートフォン機器が識別します。「どこ」というのは「左上の端を0とした時に右に17、下に54の位置」という情報です。この情報をOSに 入力 します。OSは表示しているキーボードのどのボタンがタッチされたのかやフリックしているのかなどを判断します。その後、キーボードでどの文字を選択したのか決定したらアプリに文字を 入力 します。アプリでは入力された文字を受け取って使うことができます。

スマートフォン機器 → OS → アプリ という流れをイメージしてください。それぞれケーブルで繋がっているような想像をしても良いでしょう。入力 が2回ありました。「スマートフォン機器 → OS」の入力と「OS → アプリ」の入力です。このように入力は機器からOSヘ、OSからアプリへと順番に伝わります。伝言ゲームのように同じ内容を伝えているわけではありません。OSが受け取った入力は「右に17、下に54」といった画面の場所でしたが、アプリが受け取った入力は「あ」や「a」といった文字です。OSがキーボードをどう操作したのか計算した上でアプリに入力しているためです。

アプリを作ろうとしているのであれば何の苦労もなくキーボードで入力した文字を使うことができます。これはすごい事で一から十まで自分でプログラムする必要がないということです。私たちが一般的にプログラムを書くといった場合、OSのような既に存在するシステムの上で動くアプリを作る場合がほとんどです。料理に例えると、お好みの野菜や肉をカットしたり炒めたりはすれど市販のカレールーを使って作るカレーのようなものです。完全なレトルトと違いちゃんと自分で作りたいものを作りたいようにアレンジして作っていますが、一から全て作っているわけではありません。自分が書いているプログラムとOSがやってくれていることを区別して理解ができるとプログラミング言語に存在する命令が理解しやすくなります。

>>続きを読む
>>全記事を見る

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

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