Skip to content

Instantly share code, notes, and snippets.

@284km
Last active December 10, 2019 05:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 284km/e6edf58f9f160b7c5065250341ffd048 to your computer and use it in GitHub Desktop.
Save 284km/e6edf58f9f160b7c5065250341ffd048 to your computer and use it in GitHub Desktop.
応募用紙は .doc なので、あとでこの内容を .doc に貼ってメールで送付するという手はずです。

1.ソフトウェア、取組等の概要について

(機能・特徴を簡潔に説明してください。)

Charty は Ruby 用データ可視化ライブラリです。少しのコードを書くだけで簡単にデータを可視化できることが特徴です。ユーザは本来の目的であるデータ分析自体に時間を使いましょうという考えで作られました。

(ソフトウェア、取組等について、参考となるURLを記載してください。)

(Charty 本体)

https://github.com/red-data-tools/charty

(Charty の JRuby 用 plugin)

https://github.com/red-data-tools/charty-backends-jfreechart

(benchmark-driver でのベンチマーク結果を Charty で可視化する plugin)

https://github.com/benchmark-driver/benchmark_driver-output-charty

2.ソフトウェア、取組等の目的、ねらいについて 開発の目的や取組の動機、ターゲット等を記述してください。)

大きな目的としては、Ruby でデータ分析の作業が行える状態になること。があります。

現状、Ruby でデータ分析をしたいと考えた場合、定番と言える可視化ツールが存在せず、分析者各々が可視化のために多くの時間を要するという問題があります。 可視化ツールは Ruby でデータ分析作業を行うには足りない機能と認識していたので、必要な機能を持つ Charty を作りました。 Charty は、分析者が可視化に要する時間を減らし、本来の目的であるデータ分析に時間を使うことを可能にするための機能を持ちます。

Charty の想定ユーザーは「データ分析者かどうかにかかわらず、データを可視化したい全ての Rubyists」です。

そして、Charty のポリシーは 3 つあります。

  1. Ruby 用のライブラリとして自然なつくりになっている事
  2. Rubyists が違和感なく使える事
  3. Python などでデータ可視化をしている人でもスムーズに使い始められる事

それぞれ、以下を実現するためのものです。

  1. は、Rubyists が Charty の開発に参加しやすくなるため
  2. は、多くのユーザーに使ってもらうため
  3. は、使い分けのコストを最小限にすることで可視化の労力を減らすため

3.Rubyを用いた理由、またはRubyに注目した理由について

普段から使う機会が多く慣れた言語である Ruby でそのままデータ分析ができたら嬉しいです。

それを実現するためにはまず、データ分析作業に必要なツールが存在しなければならないでしょう。

また、データ分析に Ruby が使われることが普通になるためには、少なくないユーザ数も必要になると考えます。その為にもまず、普通に使える機能を備えたツールが必要になるでしょう。

そこで Ruby の可視化ツールである Charty を作りました。

4.ソフトウェア、取組等の特徴について

1)優位性、セールスポイントについて、具体的に記載してください。

Charty は、データサイエンスの分野での現在の Ruby の位置づけを考えると必須であった、動くものをすぐに作り提供したこと、今後の拡張の余地を持たせて提供できたことが良い点です。

優位性に関しては、データ分析をする時に Ruby に足りない機能を作ったため、Charty と同じ位置づけでは他に比べる Ruby のツールがありません。 (似た取り組みとしては rubyplot(https://github.com/SciRuby/rubyplot) が存在しますが、こちらは現時点で動かして使える状態には達しておらず、Charty が先に実際に使える機能を提供するに至りました)

Ruby はたとえば他言語の Python や R に比べると、データ分析に使うツールが揃っていません。また、そのような現状で最初からそれらを上回る可視化ツールを作ることを選択していた場合、多くの時間を要しますから、動作し、実際に使うことのできる可視化ツールが現時点で存在することは無かったでしょう。それではいつまで経っても Ruby でデータ分析が出来ないままなので、まず今、Ruby で実際に使える可視化ツールが必要でした。そのために Charty は、Ruby 以外の言語であっても優れたツールならば Ruby(Charty) から使えるようにするという態度で作られました。

他言語でも優れたツールならば使えるようにするために、Charty は 2 つの抽象レイヤを持ちます。 Data Abstraction Layer と、 Plotting Abstraction Layer です。 Data Abstraction Layer により、 Charty では統一的にさまざまなデータ構造を扱い、可視化することができます。 2019/12/10 時点では以下のデータ構造をサポートしています。

Plotting Abstraction Layer により、 Charty のバックエンドライブラリとして、様々な言語の優れた可視化ライブラリを使い、切り替えることもできます。2019/12/10 時点では以下のライブラリをバックエンドとしてサポートしています。

このように Charty は、言語を問わず良いライブラリは自由な組み合わせで使えるようにすることで、短期間で一般的な機能を提供するところまで開発を進めることができました。

Ruby の可視化ツールが用意できたとなると、この先重要になるのは、他の言語でデータ分析作業を既にしている方が Ruby に移行した場合に、受け入れやすく使いやすいインターフェイスを Charty が備えていることや、他言語の可視化ツールと比べた時に劣らない機能を示せることだと思います。具体的には Python の seaborn(https://github.com/mwaskom/seaborn) や、Plotly を意識していますが、最初から一気にそこまで実装することは現実的ではありませんでした。そのため、後にそのような拡張の余地を持たせつつ最初の基本機能を提供するためにも、上述した抽象レイヤが役立っています。拡張は今後行う予定の作業です。

2)新規性、革新性について、具体的に記載してください。

Ruby で同じことが出来るツールが他にありません。

具体的な内容は "1)優位性、セールスポイントについて、具体的に記載してください。" の欄に記載したように、さまざまなデータ構造、バックエンドライブラリをサポートしており、ユーザが使いたい組み合わせで、少しのコード記述量でそれを実現できる点が Charty の強みであり、 Ruby で同じことができるツールは他にありません。

3)社会的効果、インパクトについて、具体的に記載してください。

これまで Ruby に足りていなかった可視化ツールが既にある状態になったことで、今後はより良くするという発想で開発をするための基準が出来ました。

道具が無いところに参入したいと思う人は少ないかもしれませんが、Charty により道具がある状態になったので、データ分析したい人にとっても、道具の開発に加わりたい人にとっても敷居が下がり、以前より始めやすくなっています。

現在、どこで Charty が使われているかは "5.ソフトウェア、取組等の実績について (具体的な実績、市場等からの評価があれば記載してください。)" に記載します。

また、より社会的効果・インパクトを高めるために、2019 年には "7.添付資料について(添付資料は返却しません。) (概要説明図やこれまでの発表資料、新聞・雑誌の記事等)" に記載した発表を通じて Charty を国内外問わず認知してもらうための活動、Charty の開発者を増やすための活動を行いました。その成果を以下に記載します。

Charty の開発者を増やすための活動成果(2019年)

RubyKaigi 2019

開発者を増やすことを目的に、 RubyKaigi での発表後に Charty に興味のある方を集めてすぐに Hack space に移動して一緒にコードを書き始めたり、 RubyKaigi のコード懇親会や、After Hack イベントで Charty に興味を持った方を集めてコードを書くということをしました。

その結果、開発に参加した内 5 人の方が Pull Request を作るところまでの成果が得られました。

名古屋Ruby会議04

名古屋Ruby会議04 では発表後に開発に興味があると声をかけて頂き、R 言語のライブラリを Charty のバックエンドに加えることに興味を持つ方が加わりました。

RubyConf Taiwan 2019

RubyConf Taiwan 2019 の After Hack イベントでは、海外でも開発者を増やすアプローチはうまく行くのだろうか。という挑戦でもありましたが、ありがたいことに Charty に興味があると声をかけてくれた方が現れ、協力してくれました。以下が Pull Request です。

また、RubyConf Taiwan で、JRuby の作者である Charles 氏(https://github.com/headius) が声をかけてくれたことがきっかけとなり(https://twitter.com/headius/status/1155023767212417024)、Charty の JRuby 向け plugin である charty-backends-jfreechart (https://github.com/red-data-tools/charty-backends-jfreechart) がその後作られました。

RubyConfTH 2019

RubyConfTH では After Hack のようなイベントはありませんでしたが、発表資料を見てくれた Ruby コミッタであり Ruby のベンチマークツール benchmark-driver(https://github.com/benchmark-driver/benchmark-driver) の作者である Kokubun 氏(https://github.com/k0kubun) との会話が生まれ、benchmark-driver の可視化 plugin である benchmark_driver-output-charty(https://github.com/benchmark-driver/benchmark_driver-output-charty) が公式のものとなりました。

5.ソフトウェア、取組等の実績について

(具体的な実績、市場等からの評価があれば記載してください。)

Charty は現在、以下の用途で使われていることが確認できています。

6.今後の展開について

(今後の目標や事業展開について記載してください。)

他言語で既にデータ分析作業を行っている人達が大きな違和感を感じずに Ruby でも引き続き作業ができることを重要視しており、その為に必要なインターフェイスの改善を現在行っています。インターフェイスが固まった時点で、バージョン 1.0 としてリリースを予定しています。

サポートするデータ形式を充実させる予定があります。たとえば、時系列データを簡単に扱えるようにするなどです。

より広く認知してもらい、使われる状態にすることも引き続き考えています。やはり Ruby で使われることの多い Rails と組み合わせて可視化を提供する charty-rails のようなライブラリの開発を、現時点では案として考えています。順次着手する予定です。

7.添付資料について(添付資料は返却しません。)

(概要説明図やこれまでの発表資料、新聞・雑誌の記事等)

これらは 2019 年に行った Charty に関する発表資料です。

2019/09/20 Rubyアソシエーション開発助成成果報告会

2019/09/06 RubyConfTH 2019

2019/06/27 RubyConf Taiwan 2019

2019/06/08 名古屋Ruby会議04

2019/04/19 RubyKaigi 2019

2019/03/23 Railsdm 2019

8.ソフトウェアの動作環境について(ソフトウェアのみ)

(OS、ソフトウェア、ハードウェア構成等について記載してください。)

Linux, macOS, Windows 環境をサポートしています。

https://github.com/red-data-tools/charty#installation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment