これからは、コレ!旬なIT技術やこれから主流となりつつあるIT技術に関する情報をご紹介します。

2014年05月01日

次世代アプリケーションの基礎となる!?
リアクティブ・プログラミング

リアクティブ・プログラミングとは

Webアプリケーションやモバイルアプリケーションにおいては、多数のユーザーが同時に、かつ快適に利用できるよう、スケーラブル(拡張可能)であることや、リアルタイムに応答できることが重要です。これらの要求に応えられるプログラム設計モデルとして、「リアクティブ・プログラミング」が注目を集めています。

リアクティブ・プログラミングとは、データの流れと変化に着目し、変化を自動的に伝達するプログラム設計モデルです。「リアクティブ(reactive)」とは、一般的には反応が早いという意味の英単語ですが、ここではデータの変化への反応を意味します。外部からの入力や時間経過によってデータが変化した時に、変化した値を自動的に反映させるように設計するので、イメージとしては、表計算アプリケーションでの計算に似ています。ご存知のように、例えばセル同士の合計を求める計算式では、計算対象のセルの値を変更すると、自動的に合計が再計算され、合計のセルの表示が更新されます(図1)。

k1405.jpg
図1.表計算アプリケーションにおける「リアクティブ」な計算

リアクティブ・プログラミングでは、表計算アプリケーションで計算式を書くのと同じように、入力と出力の関係性を定義します。一度関係性を定義すると、入力に変化があれば、自動的に結果にも反映されます。例として、ユーザーのマウス操作(入力)と画面の変更(出力)を結びつけることで、マウスを動かすと画面が変わるようなアプリケーションを実現できます。

リアクティブ・プログラミングがもたらすメリット

1.プログラムをシンプルに保ち、保守性を向上

これまでのプログラム設計モデルでは、入力が変化したという出来事(イベント)に対応する処理をプログラムで記述していました。これに対して、リアクティブ・プログラミングでは、入力と出力の関係性を定義しておけば自動的に更新処理が行われます。

開発者は、イベントの状態管理や出力の更新などの記述から解放され、入力と出力の関係性の定義に集中できます。シンプルで個人差の少ない記述が行えるため、開発効率、保守性の向上が見込めます。

2.スケーラブルなアプリケーションの構築

仮想化技術やクラウドサービスの普及により、ユーザーの増加に応じてサーバーを追加し、手軽に規模を拡張できる環境が整ってきました。スケーラブルなアプリケーションを構築するためには、アプリケーションの設計段階から複数のサーバーに処理を分散させることを考慮しておく必要があります。

リアクティブ・プログラミングでは、ディスクの読み書きやネットワーク上の通信などのデータの入出力を非同期的に行うよう設計します。非同期的とは、一つの処理の終了を待たずに次々と他の処理を行う方式です。非同期的に処理を行うことで、時間のかかる入出力を行っている間でも、入出力の終了を待たずに新しいイベントを受け取って処理を行うことが可能です。このため、サーバーの処理性能を最大限に活用できます。さらに、個々のイベントの処理は状態を持たないため、複数のサーバーに処理を分散でき、アプリケーションをスケーラブルにできます。

リアクティブ・プログラミングの今後の展望

冒頭で述べたように、リアクティブ・プログラミングは、スケーラブルでリアルタイムな特性が重要視されるWebアプリケーションやモバイルアプリケーションの開発において特に関心を集めています。さらに、クラウドでの分散処理やビッグデータのリアルタイム処理といった、新しい分野での活用も期待されています。是非、リアクティブ・プログラミングの今後の動向に注目してみてください。

2014年5月

ITの可能性が満載のメルマガを、お客様への想いと共にお届けします!

Kobelco Systems Letter を購読