イベントの話 基礎編第23回


20140218

今回は、「イベント」について説明します。

WindowsやOS Xに代表されるグラフィカルユーザーインターフェイス(GUI)上では、ユーザーがアイコンやメニューをクリックしたときにプログラムが実行されます。また、マウスを右クリックしたときにサブメニューが表示されたり、ショートカットキーを押したときに割り当てられたアプリケーションの機能が作動したりなど、さまざまなユーザーの操作にプログラムが反応します。ユーザーの操作だけではありません。指定した時間が経過したらバックアップ処理が行われる、メモリー使用率が一定の大きさになるとスワップが発生するなど、ユーザーの操作によらない場合でも反応するプログラムもあります。

このようなユーザーの操作やコンピューター内部での自動操作を「イベント(event)」と呼び、イベントによって動作するプログラムを「イベント駆動型(event-driven:イベントドリブン)」プログラムと呼びます。

イベントについて

OS上ではさまざまなイベントが発生しています。たとえば、

  • マウスを移動した
  • ボタンをクリックした
  • メニューを選択した
  • テキストを入力した
  • ショートカットキーを押した
  • XX時XX分になった
    など

OSやアプリケーションはこのようなイベントが発生するのを監視しており、発生するとそれに割り当てられた処理を実行します。一般的なWindowsアプリケーションの電卓を見てみましょう。電卓アプリケーションの中でイベントがどのようにプログラムと結び付いているか考えてみます。

まず、[スタートメニュー][アクセサリ]から[電卓]を選択するというイベントを発生させると、電卓アプリケーションが開始されます。

Cal02

表示されると、アプリケーションはボタンまたはキーが押されるまで、待機します。ここでボタン[5]をクリックするとします。次のようにイベントが発生します。

  1. マウスがボタン[5]の上に移動する → ボタンの色が変化する
  2. マウスをクリックする→再びボタンの色が変化し、青色枠内のボックスに「5」が表示される

1のイベントが発生すると、電卓プログラムはマウスがどのオブジェクトの上にあるかを判断し、該当するオブジェクトのメソッドを呼び出します。つまり、マウスの下にあるボタンの色を変更するプログラムを呼び出して色を変更します。

2のイベントが発生すると、電卓プログラムは該当するオブジェクトが押された場合のメソッドを呼び出します。このメソッドは、該当するボタンの色を再び変更し、ボタンに割り当てられている値(この場合「5」)を青色枠内のボックスに表示します(表示するだけでなくもう少し処理が行われますが省略します)。

「イベント駆動型(event-driven)」プログラミングでは、このように発生したイベントに従って処理を行います。ここでは、オブジェクト指向言語で説明しましたが、手続き型プログラミングでもイベント駆動型のプログラミングが可能です。

次に重要な用語を2つ挙げておきます。

  • イベントハンドラ(event handler):イベント発生時に実行される処理。
  • トリガ(trigger):イベント発生の要因。

まとめ

イベント駆動型プログラミングは、理解しやすいのではないかと思います。要するに、何らかの事象が生じたときに処理が行われるようにプログラミングすることです。

以上で、プログラミングの基礎はほぼカバーしました。次回は最終回としてまとめようと思います。

では、また。

コメントしてみる