データマーケティングの構想 - Data::Marketing
Perlゼミは、Perlでできる、データマーケティングのためのモジュールを一つ作ろうと構想している。
コマンドラインで、ひとつコマンドをたたけば、データマーケティングの結果が可視化されて出力される。
cronなどど日時のバッチプログラムにすれば、日々の情報が、HTMLとpngファイルで、出力され、可視化・レポーティングされる。
データマーケティングモジュールには、基礎技術が必要
ある分野のモジュールを作ろうと思ったときに、そのためには、それを構成するための基礎技術が必要である。
その技術がすでに存在していれば、自分で作る必要はなく、利用する。
もしなければ、その前に、基礎技術を開発しなければならない。
そして、2019年、すべてを実現できる基礎技術がPerlの分野にそろったのである。
入力データをどのように読み取るか
データの入力として、いくつかの形式が考えられます。CSV、TSV, Excelデータ、あるいは独自のフォーマット。
ユーザからの入力は多種多様です。
ですので、自前で解析するということに加えて、プラグイン形式で、必要なフォーマットを追加できると便利です。
Text::CSVやSpreadsheet::ParseExcelといった、CPANモジュールを使うことで、対応ができそうですね。
どのように出力するか
データの出力として、いくつかの形式が考えられます。最終出力が、データの要約とグラフがあるレポートであるということを考えると、HTML、Excel、PDFが有力です。
これも、自前で出力を作るという場合に加えて、プラグイン形式で、必要なフォーマットを追加できると便利です。
HTMLである場合はMojolicious、Excelである場合は、Excel::Writer::XLSX、PDFである場合は、PDF::API2が使えそうです。
データをどのように表現するか
Perlの一つの問題点は、連続した配列のデータを持っていないということです。32bit整数型、64bit整数型、32bit浮動小数点型、64bit浮動小数点型の演算を高速に行うには、XSと呼ばれる仕組みを使う必要がありますが、XSの問題点は、ユーザーが、データを加工できないということです。
データマーケティングのためには、ユーザーが、データ処理を高速に行うことができる基盤が必要です。
僕は、この3年間、その基盤を開発していました。それがSVPMというモジュールで、Perlに配列のデータ構造を追加し、ユーザーが、ほぼPerlの文法を使って、C言語に近いレベルのパフォーマンスで、配列操作を行うことができるようになるものです。
日付の時系列データは、64bit整数の連続した値、文字列は、文字列の連続した値、統計データは、64bit浮動小数点、学習データは、32bit浮動小数点でGPU処理も可能、といったような、配列のデータ構造をPerlに追加することが、このためには、必須なのです。
Data::Marketingでは、列のデータは、動的な連続した配列として表現します。SPVMのSPVM::IntListやSPVM::LongList、SPVM::DoubleList、SPVM::FloatList、SPVM::StringListを使います。
列に対する計算や、列どうしの関係を求めるための演算は、連続した配列を使ってで行うことができるので、速いのです。
またこれに加えで、次元の情報とNAの情報を持たせる必要があります。
データマーケティングにおいて、取得したデータには、それを取得できなかったという情報があります。これをNAで表現できることが必要です。
データマーケティングにおいては、必須ではありませんが、一つの列に対して、次元のデータを持たせておくと、柔軟です。データマーケティングで提供される、データ構造が、他の分野に拡張する必要があったときに、対応可能なのです。傾向を知るために、またデータの関係性を知るために、行列計算が必要になる場合は、2次元として扱うことができると、対応可能だからです。
データに対する操作
データに対する操作は、Excelを想像してもらえると簡単です。Excelは実は、すでに、簡便なデータマーケティングのツールなのです。ただし、データが数万件というレベルを超えてくると、パフォーマンスやメモリ効率といった面で、限界がきます。また、最初のデータがデータベースに入っている場合は、Excelに落とし込むという手作業が発生しますね。
Data::Marketingは、Excel操作の自然な拡張を目指します。データの並び替え、回帰分析、ピボットテーブル、棒グラフ、線グラフ、統計ツールなどです。
Excelは、データマーケティングのツールとして、最も利用されているUIだからです。
Data::Marketingは、Excelのデータマーケティングの操作を拡張して、効率化、モジュール化、自動化といったPerlの良い特徴を追加するものになります。
データの可視化 - グラフレポート
データの可視化についてですが、僕は、小さな実験を繰り返していました。Perlと小さな依存でどうやって、グラフを書いて、文字を書いて、グラフの中に画像をいれて、最終的にpngで出力するか。
実験結果は、可能であるということです。ImagerというPerlのモジュールを使えば、2次元のグラフが書けることがわかりました。軸を書いて、メモリ軸のテキストを入れることができます。また、写真を追加することもできます。
Imagerは、二次元描画の基礎技術として利用して、グラフ描画のアルゴリムさえ考えれば、グラフを生成できる。
3D描画は? それは、いったん脇に置いておきましょう。まずは、できることから。
Perlにも未来への期待が必要だ
僕は、Perlにも未来への期待が必要だと考えています。人は成長することに喜びを感じます。Perlにおいても、量的な成長、それがかなわないならば、質的な成長が必要です。
それが、前に進む力になるからです。目の前の現実的な問題に対処しながら、少しの時間やお金を、新しいことに投資する。
この少しということが大切なのです。
お手伝いしてくださる方がおられれば、ウェルカム、ウェルカムです!