Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pragmatic Charty

Pragmatic Charty

名古屋 Ruby 会議 04

秒速284km

June 08, 2019
Tweet

More Decks by 秒速284km

Other Decks in Programming

Transcript

  1. Pragmatic Charty
    名古屋
    Ruby
    会議
    04
    秒速亭⼆⼋四粁

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. 内径
    35
    メートル
    !!

    View Slide

  7. View Slide

  8. 昨夜
    ロース味噌かつ
    ⼿⽻先
    天むす

    View Slide

  9. 今朝
    串カツ
    エビフライ
    おいしいお茶

    View Slide

  10. お茶
    直前の発表で joker1007
    さんはお茶を濁すって⾔ってたけど
    今朝のは濁っていないきれいなお茶でした

    View Slide


  11. View Slide


  12. :tea:

    View Slide

  13. ...... !!!

    View Slide

  14. "Charty"

    View Slide

  15. (@amatsuda says...)

    View Slide

  16. red-data-tools/charty
    Visualizing your data in Ruby

    View Slide

  17. Visualizing your data in Ruby
    って
    たとえば

    View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. みたいなのが簡単に出⼒できちゃう

    View Slide

  23. red-data-tools/charty
    You need to write very few lines of code for representing what you
    want to do.
    It lets you focus on your analysis of data, instead of plotting.

    View Slide

  24. red-data-tools/charty
    過去の発表
    Charty
    を知ってほしいなあ。開発者が増えたらうれしいなあ。
    RailsDM 2019
    RubyKaigi 2019 - RubyData Workshop

    View Slide

  25. red-data-tools/charty
    今⽇の発表
    Charty
    を知ってほしいなあ
    名古屋でも開発者が増えたらうれしいなあ
    実⽤的な話もしたい ← New!!

    View Slide

  26. Charty
    を知ってほしいなあ
    について

    View Slide

  27. Charty
    の基本情報
    前提ぽいことを話すと⻑いので、ちょっと駆け⾜で説明します。
    ここわからないんだけど!というのがあったら補⾜するので発表中で
    も声かけて頂いて⼤丈夫です!
    (今⽇は最後までいるので発表後に聞いてくれても良いです!)

    View Slide

  28. View Slide

  29. 最近の状況を踏まえて
    (RubyKaigi 2019
    での発表以降、⾊々と開発が進んだので最新情報
    を説明します)

    View Slide

  30. Data Abstraction Layer
    Daru::DataFrame
    Numo::NArray
    NMatrix
    ActiveRecord
    benchmark_driver (Charty Adapter)

    View Slide

  31. Plotting Abstraction Layer
    PyPlot (matplotlib.pyplot)
    Gruff
    rubyplot
    Google Charts ← New!!
    chart.js (experimental)
    (bokeh)
    実装予定
    (Plotly)
    よさそう。実装予定
    GR Framework (
    再考。薄いラッパーを⽤意するか)

    View Slide

  32. View Slide

  33. Simple usage
    require 'charty'
    charty = Charty::Plotter.new(:pyplot)
    bar_plot = charty.bar do
    series [0,1,2,3,4], [10,40,20,90,70], label: "sample"
    end
    bar_plot.render("sample.png")

    View Slide

  34. GitHub
    を⾒たり、デモをしながらい
    くつかのサンプルを紹介します
    実はここにサンプルがいろいろ⼊っている。
    https://github.com/red-data-tools/charty/tree/master/examples

    View Slide

  35. 名古屋でも開発者が増えたらうれしい
    なあ
    について

    View Slide

  36. 最近の
    Charty
    開発のようすを紹介し
    ようと思います

    View Slide

  37. RubyKaigi 2019
    コード懇親会にて
    3
    ⼈からの合計 3
    つの pull request
    がマージまでたどり着いた。
    内 2
    ⼈は OSS
    のコードで pull request
    ははじめだったとのこと
    これらは⾃分以外の⼈が開発をしたから分かったモノ達である。
    Unstrict dependency version for bundler by tomog105 · Pull
    Request #4 · red-data-tools/charty
    Adds MacOS installation to README by Chinats · Pull Request
    #5 · red-data-tools/charty
    Fix typo in examples/daru.rb by kantarow · Pull Request #6 ·
    red-data-tools/charty

    View Slide

  38. RubyKaigi 2019
    の翌⽇
    After Hack
    にて
    実際に使っている backend
    を⾒てもらえると助かる例: Gruff
    現在は Pyplot
    がリファレンス実装的位置づけなので(
    プロット可能な
    グラフが⼀番多い。などが理由)
    直接話しながら背景を踏まえて⼀緒に開発したら捗った例と⾔えそう
    add an instruction for Ubuntu + pyenv by hasumikin · Pull
    Request #8 · red-data-tools/charty
    Add label option to series at README by yaboojp · Pull Request
    #9 · red-data-tools/charty

    View Slide

  39. RubyKaigi
    以降、現在まで
    Add google charts backend by indigolain · Pull Request #11 ·
    red-data-tools/charty
    Abstract plotter by kantarow · Pull Request #13 · red-data-
    tools/charty
    Use volume mount in Dockerfile.dev by kei-s · Pull Request #15 ·
    red-data-tools/charty
    fix travis ci by katsyoshi · Pull Request #17 · red-data-
    tools/charty
    あとは、コミット権を持っている⼈の分は書いていないけれど、裏側
    の設計、実装の整理が最近進⾏していたりします。

    View Slide

  40. How to development

    View Slide

  41. Development with Docker
    (@koic
    さんの "
    海外Ruby
    カンファレンスへの踏み出し⽅"
    に学ぼう!)
    (yn-misaki
    さんの 開発環境のに関する話でも⾔及していましたね。)
    たとえば突然いつもの開発⽤マシンを失うことだってある。そんな時
    にもすぐに開発再開が可能となるのは便利。
    今ならこれだけで動かせます!
    $ bundle install
    $ docker build -f ./Dockerfile.dev -t charty-dev:0.1 .
    $ docker run -it -v ${PWD}:/charty -w /charty charty-dev:0.1 ./bin/console
    irb(main):001:0> Charty::VERSION
    => "0.1.4-dev"

    View Slide

  42. 最近はどんな⼈が、どういうことをや
    っているか、という話
    Gruff
    bokeh
    Chart.js
    Plotly

    View Slide

  43. Ruby Association Grant
    のはなし
    https://www.ruby.or.jp/en/news/20181106

    View Slide

  44. 実⽤的な話もしたい

    View Slide

  45. Gruff
    が古い
    RMagick
    に依存している

    先ほど話した、Charty
    が Gruff
    から他の何かへの移⾏パスになり得
    るという話。
    (
    もし話していなかったら、ここで話します)

    View Slide

  46. ActiveRecord
    との組み合わせ
    image
    ファイルの場合はまあ、Gruff
    を置き換えるだけという感じ
    JavaScript
    ライブラリと組み合わせた場合はどう?
    デモをします
    Chart.js
    の場合、pan
    とか、pinch in, out
    をするために
    hammber.js
    に依存している辺りがちょっと気になっている。
    react
    だったり、他の何らかの javascript
    のライブラリと組み合わ
    せた時⼤丈夫なもの?
    まだ調べられていない。知っている⽅がいたら教えてほしいで
    す!
    こちらはまだ実装が無いのですが、bokeh.js
    や、plotly
    の⽅が本
    命。という感じはしています。

    View Slide

  47. 再びバックエンドの切り替えが楽とい
    う話
    それらが後にバックエンドとして実装されたら、バックエンドを簡
    単に切り替えればそのまま使えるというのも Charty
    のメリット
    まだしていなかったら、Plotly
    のおもしろそうな機能の話

    View Slide

  48. 284km/benchmark_driver-output-
    charty
    $ be benchmark-driver examples/parse.yaml -o charty

    View Slide

  49. red-datasets
    を⽤いての例
    デモしながら説明します!

    View Slide

  50. Future Plans
    実⽤的な例を⽰そうと思った時、例えば他の⾔語やライブラリのサ
    ンプルと同様のデータセットを red-datasets
    に追加して、同様の
    こういうことはカバーしています。という⾒せ⽅ができると説得⼒
    がありそう。とここ最近考えるようになりました。
    最近 Charty
    の interface
    を変えているせいで、rubydown
    との連携
    が壊れていると思う。直す。(スミマセン
    Charty
    を使えそうなところ (
    使うメリットがある部分で使っていく)
    Charty
    を導⼊したいとか、既存のグラフライブラリから置き換え
    たい。気になる。などありましたら是⾮気軽に声をかけてください

    View Slide

  51. こう書く⽅向に変更しようと現在考えている
    foo = Foo.where(...)
    plot = Charty.bar(:price, :sales, foo, plotter: :google_chart)
    plot.render

    View Slide

  52. Practicality
    and Continuity

    ⼿元のブランチで実はあるリポジトリの gruff
    を Charty
    にほぼ置
    き換えたやつがある。
    少しづつ試してみて、いけそうな段階に達したら切り替えようかと

    View Slide

  53. Join us!
    Red Data Tools: https://red-data-tools.github.io/
    次は 6/11(
    ⽕) OSS Gate
    東京ミートアップ for Red Data Tools in
    Speee
    オンラインのコミュニケーションはこちら! red-data-tools/ja -
    Gitter

    View Slide