Droongaプラグイン開発チュートリアル

チュートリアルのゴール

Droongaプラグインの作り方を理解します。 基本的な使い方のチュートリアルを完了している必要があります。

プラグインとは

プラグインはDroongaの中でもっとも重要なコンセプトの一つです。 プラグインがDroongaを柔軟なものにしています。

多くの現実的なデータ処理タスクでは、問題に応じたデータの取り扱いが必要です。これを汎用の方法で解決するのは簡単ではありせん。

このような場合にプラグインを利用することができます。

Droongaエンジンにおけるプラガブルな操作

Droonga Engineにはプラガブルなフェーズが大きく分けて2つあり、そのうちの1つは3つのサブフェーズから構成されます。プラグインの観点からすると、都合1つから4つの操作に処理を追加することができます。

適合フェーズ(adaption phase)
このフェーズでは、プラグインは入力のリクエストと出力のレスポンスを加工できます。
処理フェーズ(processing phase)
このフェーズでは、プラグインはそれぞれのボリューム上で入力のリクエストを逐次処理します。

処理フェーズにはプラグインでの拡張が可能な3つのサブフェーズがあります:

ハンドリング・フェーズ(handling phase)
このフェーズでは、プラグインは低レベルのデータ処理、たとえばデータベース操作などを行うことができます。
立案フェーズ(planning phase)
このフェーズでは、プラグインは入力のリクエストを複数のステップに分割できます。
集約フェーズ(collection phase)
このフェーズでは、プラグインはステップから得られた結果をマージして一つの結果を生成できます。

上記の説明は、Droongaシステムの設計に基いているので、少々わかりづらいかもしれません。 ここでは、プラグインでの拡張が可能な操作という観点から離れて、プラグインで何をしたいのかという観点から見てみましょう。

既に存在するコマンドを元にして新たなコマンドを作成する
たとえば、複雑なsearchコマンドをラップして、手軽に使えるコマンドを作りたいかもしれません。 リクエストとレスポンスに対する適合(adaption)がそれを可能にします。
新しいコマンドを追加してストレージを操作する
たとえば、ストレージに保存されているデータを自在に操作したいかもしれません。 リクエストに対するハンドリング(handling)がそれを可能にします。
複雑なタスクを実現するコマンドを追加する
たとえば、標準のsearchコマンドのような強力なコマンドを実装したいかもしれません。リクエストに対する立案(planning)収集(collection)がそれを可能にします。

このチュートリアルでは、最初に適合(adaption)を扱います。 これはもっともプラグインの基本的なユースケースなので、Droongaにおけるプラグイン開発の基礎を理解する助けになるはずです。 その後、他のケースも上述の順で説明します。 このチュートリアルに従うと、プラグインの書き方を理解できるようになります。 自分独自の要求を満たすプラグインを作成するための第一歩となることでしょう。

プラグインを開発するには

詳細は以下のサブチュートリアルを参照してください:

  1. リクエストとレスポンスを加工し、既存のコマンドに基づいた新たなコマンドを作成する
  2. 全てのボリューム上でリクエストを処理し、ストレージを操作する新たなコマンドを追加する
  3. 特定のボリューム上だけでリクエストを処理し、より効率的にストレージを操作するコマンドを追加する (準備中)
  4. リクエストの分散とレスポンスの回収を行い、新たな複雑なコマンドを追加する (準備中)