- プロジェクト: RedAmber - A simple dataframe library for Ruby
- 開発担当者: 鈴木 弘一
- メンター: 村田 賢太
本プロジェクトは、RedAmberの機能強化、パフォーマンス向上、コード品質の向上、ドキュメント整備、および普及活動への取り組みである。
Red Amber は、Ruby で書かれたデータフレームライブラリである。データフレームは、データ処理で利用される表形式のデータ構造であり、リレーショナルデータベースのように列方向に同じ型のデータを保持し、データ処理のための種々の操作と演算をサポートしている。
Red Amber は Red Arrow の Table をバックエンドとして利用し、高速性、汎用性、機能性、将来性の4点について高いレベルを維持しやすい構成になっている。Red Arrow をバックエンドとして利用しているため、Red Amber の開発のために Red Arrow および Apache Arrow C++/GLib への間接的および直接的な貢献も同時に行なっている。
本プロジェクトは、期待を大幅に上回る速度で進捗し、計画を大きく上回る成果を達成した。
本プロジェクトは当初次の内容を計画していた。
- データフレームとして必要な機能の実装
- データフレーム同士の結合関連のメソッド群 (concat, join, set 演算)
- 列を分割する機能と列マルチインデックスを使った処理に相当する機能への対応
- 欠損値処理機能の充実
- ファクター値 (文字列) の数値へのエンコーディング
- Red Arrow への貢献
- 知見のフィードバック
- 機能提案
- バグフィックス
- パフォーマンスとコード品質の向上
- 処理速度の向上
- コードの分割、読みやすさの向上
- YARD 形式ドキュメントの整備
- 普及のための資料の充実
- pandas、dplyr/tidyr の各チートシートに相当する RedAmber チートシートの作成
- RedAmber による実装例を集めた Jupyter Notebook 「N examples of RedAmber」の充実
- N は101以上の素数を目指す (提案当時は61)
実際の成果は、計画を上回って達成された。最終報告書では、実装された新機能について図を用いた詳細な解説を展開した。当初の計画内容に加え、以下の内容も追加で達成された。
- 複数の観点での詳細なベンチマーク結果の作成
- YARDへのフィードバック
- DSL によって動的定義されるメソッドのドキュメントを書く手順の確立と YARD ドキュメントへの反映
- 他のライブラリとの機能比較
本プロジェクトのメンターとして次の役割を果たした。
- 定期的な進捗の確認
- 中間報告書のレビュー
- 最終報告書のレビュー
- 成果物へのレビュー
- 特に、今回採用された SubFrames と既存のデータフレームライブラリの実装の比較によるフィードバック
- ベンチマーク結果に対するフィードバック
最終報告書で言及されているベンチマークについての課題解消は、RedAmber 以外のデータフレームライブラリでもその成果物を利用できる可能性が高い。そのため、Ruby のデータ処理ツールの開発促進に大いに役立つだろう。
本プロジェクトを担当した鈴木氏は、プロジェクト開始前から RedAmber を継続的に開発してきた実績があり、本プロジェクトの最終報告書を提出した後も順調に開発を継続してくださっている。そのため開発の継続性について問題はなさそうだが、鈴木氏がほぼ一人で開発をしている状況が続いていることが気になってしまう。これまで Ruby のデータフレームライブラリは、主要開発者が開発に取り組めなくなることによって開発が停滞してしまうことが多かった。現状のままでは、RedAmber もそうなってしまう可能性が危惧される。RedAmber が他のデータフレームライブラリと同じ運命を歩まないようにするために、この分野に興味を持つ仲間を増やしてチームで開発を進められるようになることが期待される。
本プロジェクトでは、Ruby 用のデータフレームライブラリである RedAmber の機能強化とパフォーマンス向上を行った。それらに伴う取り組みとして Red Arrow への貢献、YARD への貢献、ベンチマーク結果の作成、および他言語のデータフレームライブラリとの比較も実施した。プロジェクトの成果として、計画を上回るかたちで RedAmber の機能強化とパフォーマンス向上が実現した。