【初心者用】イベントドリブンモデルについてまとめてみた
当記事では、
・イベントドリブンとは何か(ざっくりと)
・細かく説明したらどんなものなのか
・プログラミングの形としてはどうなるのか
について説明していきます。
ガリガリと専門用語を噛み砕きながら書いていくので、プログラミング経験者にはやや冗長気味かもしれませんが、タイトル通りプログラミング初心者にも分かりやすい内容になるかと思います。
1. ざっくり表現すると
イベントドリブン型、イベント駆動型とも呼ばれますが、どれも大体一緒と考えてしまって構いません。
綴りとしては Event(イベント、出来事)Driven(駆動) なので、名前のそのままとなりますね。
これだけだとざっくりしすぎて分かりにくいので、次項で細かく説明していきます。
2. ちょっと細かく説明すると
イベントドリブンモデルの「イベント」とは、システム上での意味のあるコントロールの操作や、状態の変化のことです。
ここでのコントロールとは、ユーザーが操作するボタンやドロップダウンリスト、テキストボックスなどの「制御可能なモノ」と考えればいいです。
それらを操作するということは、簡単な例としては、
・ボタンをクリックする
・ドロップダウンリストから選択する
・テキストボックスを入力する
・チェックボックスをクリックする
といったようなことですね。
ちなみにこれは、画面が表示された際の初期動作なども含まれます。
それらを行われることで、「クリックされた」「選択された」「入力された」とシステム側に認識されます。
イベントドリブンモデルとは、このようなイベントが発生した際に、イベントの種類に応じて処理が実行されるようなプログラミングの仕組みを指します。
このイベントドリブンモデルを採用することで、ユーザーの操作に応じた動的なフォームの開発が可能になります。
具体的な例を挙げてみましょう。
Webページ上で、住所を入力するページがあるとします。
手入力ではなく、ドロップダウンリストを採用し、「都道府県」「市区町村」に分けておきます。
都道府県だけでも47と多いですが、市区町村となるとその何倍もの量となり、都道府県が入り混じった状態のそれらのリストから目的のものを探すのは一苦労です。
その解決策の一つとして、イベントドリブンモデルを使ってみます。
まず、ページを開いた当初は、「市区町村」のリストの中を空っぽにしておきます。
それから、ユーザーが「都道府県」をリストから選択させます。
すると、「選択した」というイベントが発生します。
そのイベントで、「市区町村」のドロップダウンリストに、選択した都道府県に属したもののみを表示、選択できるようにします。
このようにすることで、ユーザー側は確認する市区町村の数はだいぶ減り、探しやすくなるでしょう。
これは単なる一例に過ぎませんが、「必要な時に」「必要な処理」を行わせることができるこの方式を採用することで、サービスの種類によりますがユーザー側が操作しやすくなったり、開発や運用の効率化を図ることができるようにあります。
3. プログラム上では
まず、前項でお話ししたイベント発生時に実行されるプログラムコードを「イベントハンドラー」と言います。
イベントドリブンモデルにおける開発者は、「Aのボタンが入力されたら〇〇する」「Bのテキストが入力されたら□□する」といったような様々なイベントハンドラーを記述することで、入力やクリックで反応するアプリケーションやWebフォームを開発していく形になります。
具体的に説明すると、
①ページ入力時の処理
(各項目の初期化等)
②ドロップダウンリストの選択時やテキスト入力時の処理
(Webページでユーザー情報の登録の時などに、入力ごとにチェックを行う等)
③ボタンを押したときなどの画面内や次画面への切り替わり
といったもの等があります。
4. 対となるモデルと比較した際の利点
「リクエスト・リプライ方式」「フロー型プログラミング」と呼ばれるものです。
こちらは、「全体として一つの「流れ」(フロー)があり、そこからのリクエストによってそれぞれの処理が行われる手法」 となります。
イベントに応じて枝分かれするイベントドリブンモデルとは対照的に、主体となっているのはあくまで「一つ」なのがポイントです。
そちらでは、メインとなっている処理以外は、「特定の処理を行うための道具」として利用され、一度にすべてが、順番に流れることになります。
(順番に、と言っても、条件式などで一部工程のスキップやループなどは可能です)
利点としては、イベントごとに行われるイベントドリブンモデルに対して「一定の流れ」がある分、「どの処理をいつ実行するか」という順番を開発者側が決めることができるため、プログラミングの難易度は低いと言えます。
反面、毎回すべての処理を実行することになるために、無駄が出やすいという欠点もあります。
イベントドリブン型は、「どの処理をいつ実行するか」を開発者側で決められない分、「処理を実行する順番」を制御できず、それらを考えたうえプログラミングを行わなければいけないので難易度が上がってしまうという点があります。
ですが、前項でも少し述べましたが、「必要な時に」「必要な処理を行う」ということができるため、リソースの浪費を減らすこともできます。
また、開発者側は行いたい処理を記述するだけでいいうえに、イベントハンドラーごとに処理が分かれているために、プログラムの見通しがよくなるという利点もあります。
5. 最後に
場合によって最適な方を選んでいくのがいいでしょう。