Perlの哲学 - Perlに対する誤解を解く

データマーケティングの構想 - 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においても、量的な成長、それがかなわないならば、質的な成長が必要です。

それが、前に進む力になるからです。目の前の現実的な問題に対処しながら、少しの時間やお金を、新しいことに投資する。

この少しということが大切なのです。

お手伝いしてくださる方がおられれば、ウェルカム、ウェルカムです!