SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
RubyもApache Arrowで
データ処理言語の
仲間入り
須藤功平
クリアコード
DataScience.rbワークショップ
2017-05-19
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
はじめに
私はRubyが好きだ
だからデータ分析だって
Rubyでやりたい
Rubyよりも向いている言語があるのはわかっているけどさー
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Apache Arrow
データフォーマットの仕様
と
その仕様を処理する実装
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:解決したい問題
高いデータ交換コスト
→低くしたい✓
✓
重複した最適化実装
→実装を共有したい✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:文脈
ビッグデータの
分析
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ビッグデータの分析
いろんなシステムが連携
Java実装のもろもろとPythonとR✓
✓
システム間でデータ交換が必要
交換する度にシリアライズ・パース✓
↑に結構CPUと時間を使われる…✓
そんなのより分析処理に使いたい!✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:解決方針
コストゼロの
シリアライズ・
パース
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:コストゼロの実現
そのまま使えるフォーマット
例:int8の配列→int8の値を連続配置✓
1バイトずつずらせば高速アクセス可✓
✓
Arrowのトレードオフ
サイズ圧縮よりシリアライズゼロ✓
参考:Parquetはサイズ圧縮優先✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrowがある世界
各システムがサクサク連携
例:PySparkが高速化✓
理由:Py🡘Javaのデータ交換コスト減✓
✓
Java・Python・R以外も活躍
例:Ruby・Lua・Julia・Go・Rust…✓
理由:低コストでデータ交換可能✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRuby
チャンス!
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRubyとデータ分析
RubyがArrowに対応
Rubyにデータが回ってくる!✓
→Rubyにもデータ分析の機会が!
(今はできることは少ないだろうけど…)
✓
✓
次のステップ
できることを増やしていく!✓
→Rubyでもいろいろデータ分析!✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRubyの今
RubyでArrowを使える!
私が使えるようにしているから!
コミッターにもなった
✓
公式リポジトリーにも入っている
厳密に言うと違うんだけど公式サポートだと思ってよい
✓
✓
Rubyでデータを読み書きできる
いくらかデータ処理もできる✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
今できること
Python・R…とのデータ交換✓
データ処理をいくらか✓
Rubyの各種ライブラリー間での
データ交換
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:Python
# pandasでデータ生成→Arrow形式で書き込み
import pandas as pd
import pyarrow as pa
df = pd.DataFrame({"a": [1, 2, 3],
"b": ["hello", "world", "!"]})
record_batch = pa.RecordBatch.from_pandas(df)
with pa.OSFile("/dev/shm/pandas.arrow", "wb") as sink:
schema = record_batch.schema
writer = pa.RecordBatchFileWriter(sink, schema)
writer.write_batch(record_batch)
writer.close()
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:Ruby
# RubyでArrow形式のpandasのデータを読み込み
require "arrow"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/pandas.arrow") do |input|
reader = Arrow::RecordBatchFileReader.new(input)
reader.each do |record_batch|
puts("=" * 40)
puts(record_batch)
end
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Arrow:Lua
-- LuaでArrow形式のpandasのデータを読み込み
-- Torchへの変換コードはArrowの公式リポジトリーにアリ
local lgi = require "lgi"
local Arrow = lgi.Arrow
local input_class = Arrow.MemoryMappedInputStream
local input = input_class.new("/dev/shm/pandas.arrow")
local reader = Arrow.RecordBatchFileReader.new(input)
for i = 0, reader:get_n_record_batches() - 1 do
local record_batch = reader:get_record_batch(i)
print(string.rep("=", 40))
print("record-batch["..i.."]:")
io.write(record_batch:to_string())
end
input:close()
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Feather:R
# Rでデータ生成→Feather形式で書き込み
library("feather")
df = data.frame(a=c(1, 2, 3),
b=c(1.1, 2.2, 3.3))
write_feather(df, "/dev/shm/dataframe.feather")
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Feather:Ruby
# RubyでFeather形式のRのデータを読み込み
require "arrow"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/dataframe.feather") do |input|
reader = Arrow::FeatherFileReader.new(input)
reader.columns.each do |column|
puts("#{column.name}: #{column.to_a.inspect}")
end
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Parquet:Python
# Pythonでデータ生成→Parquet形式で書き込み
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
df = pd.DataFrame({"a": [1, 2, 3],
"b": ["hello", "world", "!"]})
table = pa.Table.from_pandas(df)
pq.write_table(table, "/dev/shm/pandas.parquet")
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Parquet:Ruby
# RubyでParquet形式のデータを読み込み
require "arrow"
require "parquet"
path = "/dev/shm/pandas.parquet"
reader = Parquet::ArrowFileReader.new(path)
table = reader.read_table
table.each_column do |column|
puts("#{column.name}: #{column.to_a.inspect}")
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
対応データ形式まとめ
Arrow形式
各種言語(これから広く使われるはず)✓
✓
Feather形式
Python・R専用✓
✓
Parquet形式
各種言語(Hadoop界隈ですでに広く使われている)✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
データ処理例
Groongaでフィルター✓
Groonga
全文検索エンジン✓
カラムストアなので集計処理も得意✓
Apache Arrow対応✓
よくできたRubyバインディングあり✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Groonga:Ruby
# 空のテーブルにArrow形式のデータを読み込む
logs = Groonga::Array.create(name: "logs")
logs.load_arrow("/dev/shm/pandas.arrow")
logs.each {|record| p record.attributes}
# フィルター
filtered_logs = logs.select do |record|
record.b =~ "hello" # "hello"で全文検索
end
# フィルター結果をArrow形式で書き込み
filtered_logs.dump_arrow("/dev/shm/filtered.arrow",
column_names: ["a", "b"])
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Groonga:Python
# Arrow形式のGroongaでのフィルター結果を読み込む
import pyarrow as pa
with pa.OSFile("/dev/shm/filtered.arrow") as source:
writer = pa.RecordBatchFileReader(source)
print(writer.get_record_batch(0).to_pandas())
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Rubyでデータ処理(現状)
既存のCライブラリーを活用
速度がでるし機能もある✓
✓
CライブラリーをArrowに対応
Arrow→Ruby→Cライブラリー
↑から↓で高速化(オブジェクト生成は遅い)
✓
Arrow→Cライブラリー✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Rubyでデータ処理(案)
Fluentdとか速くなりそう
途中でメッセージを参照しないなら✓
✓
MessagePackからArrowに変える
Arrowのまま出力先へ送る✓
途中でRubyオブジェクトを作らない
シリアライズ・パースがなくなって速い!
✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
多次元配列
Arrowではオプション機能
テンソルと呼んでいる
(traditional multidimensional array objectと説
明)
✓
✓
C++実装ではサポート
バインディングでは使える✓
Python・Ruby・Lua…では使える✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Tensor:Python
# NumPyでデータ生成→書き込み
import pyarrow as pa
import numpy as np
ndarray = np.random.randn(10, 6) # 10x6
print(ndarray)
tensor = pa.Tensor.from_numpy(ndarray)
with pa.OSFile("/dev/shm/tensor.arrow", "wb") as sink:
pa.write_tensor(tensor, sink)
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Tensor:Ruby
# Rubyで読み込み
require "arrow"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
p tensor.shape # => [10, 6]
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Ruby:GSL
# GSLオブジェクトに変換
require "arrow"
require "arrow-gsl"
require "pp"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
pp tensor.to_gsl
# tensor.to_gsl.to_arrow == tensor
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Ruby:NMatrix
# NMatrixオブジェクトに変換
require "arrow"
require "arrow-nmatrix"
require "pp"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
pp tensor.to_nmatrix
# tensor.to_nmatrix.to_arrow == tensor
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Ruby:Numo::NArray
# Numo::NArrayオブジェクトに変換
require "arrow"
require "arrow-numo-narray"
require "pp"
Input = Arrow::MemoryMappedInputStream
Input.open("/dev/shm/tensor.arrow") do |input|
tensor = input.read_tensor(0)
pp tensor.to_narray
# tensor.to_narray.to_arrow == tensor
end
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ここまでのまとめ1
Arrowが実現したい世界
データ交換コストが低い世界✓
最適化実装を共有している世界✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ここまでのまとめ2
RubyとArrowの今
ArrowはRubyを公式サポート!✓
Rubyの外の世界とデータ交換可能
(Arrow・Feather・Parquetをサポート)
✓
Rubyの各種ライブラリーとの
相互変換が可能
(メモリーコピーぐらいのコストで)
✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ArrowとRubyとこれから
Arrow
データフレーム処理の最適化実装✓
マルチコア・GPU対応✓
✓
Ruby
Red Data Toolsプロジェクト✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Red Data Tools
Rubyでデータ処理したいなぁ!
の実現を目指すプロジェクト
✓
リソース:
GitHub: red-data-tools✓
https://red-data-tools.github.io✓
https://gitter.im/red-data-tools✓
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
既存プロダクト
Red Arrow(ArrowのRubyバインディング)
Red Arrow XXX(ArrowとXXXの相互変換)✓
✓
Parquet GLib(ParquetのGLibバインディング)✓
Red Parquet(ParquetのRubyバインディング)✓
Jekyll Jupyter Notebook
plugin(JekyllでJupyter Notebookを表示)
✓
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー1
Collaborate
over Ruby communities
Ruby以外の人たちとも言語を超えて協力する
Apache Arrowがやっていることはまさにそう
もちろんRubyの人たちとも協力する
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー2
Acting than blaming
時間は嘆き・非難より手を動かすことに使う
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー3
Continuous small works than
a temporary big work
一時的にガッとやって終わりより
小さくても継続して活動する
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー4
The current
lack of knowledge
isn't matter
現時点で数学や統計学などの知識が足りなくても問題ない
既存の実装を使ったりそこから学んだりできるから
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー5
Ignore blames from outsiders
部外者の非難は気にしない
結果がでるまでグチグチ言われるはず :p
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
ポリシー6
Fun!
Because we use Ruby!
Rubyを使うんだし楽しくやろう!
RubyもApache Arrowでデータ処理言語の仲間入り Powered by Rabbit 2.2.1
Join us!
Rubyでデータ処理したい人!✓
ポリシーに同意できる人!✓
リソース:
GitHub: red-data-tools✓
https://red-data-tools.github.io✓
https://gitter.im/red-data-tools✓
✓

Contenu connexe

Tendances

Densely Connected Convolutional Networks
Densely Connected Convolutional NetworksDensely Connected Convolutional Networks
Densely Connected Convolutional Networks
harmonylab
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算
智啓 出川
 

Tendances (20)

Densely Connected Convolutional Networks
Densely Connected Convolutional NetworksDensely Connected Convolutional Networks
Densely Connected Convolutional Networks
 
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
TeX言語の展開制御による文書の構造化(TeXユーザの集い2014)
 
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
正規言語と代数と論理の対応:An Introduction to Eilenberg’s Variety Theorem
 
PCFG構文解析法
PCFG構文解析法PCFG構文解析法
PCFG構文解析法
 
「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について「日本語LaTeX」が多すぎる件について
「日本語LaTeX」が多すぎる件について
 
Rで確認しながら解く統計検定2級
Rで確認しながら解く統計検定2級Rで確認しながら解く統計検定2級
Rで確認しながら解く統計検定2級
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋
 
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive Estimation[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
 
OpenFOAMのinterfoamによる誤差
OpenFOAMのinterfoamによる誤差OpenFOAMのinterfoamによる誤差
OpenFOAMのinterfoamによる誤差
 
2値分類・多クラス分類
2値分類・多クラス分類2値分類・多クラス分類
2値分類・多クラス分類
 
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
 
データ解析10 因子分析の基礎
データ解析10 因子分析の基礎データ解析10 因子分析の基礎
データ解析10 因子分析の基礎
 
One Class SVMを用いた異常値検知
One Class SVMを用いた異常値検知One Class SVMを用いた異常値検知
One Class SVMを用いた異常値検知
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術ログ解析を支えるNoSQLの技術
ログ解析を支えるNoSQLの技術
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算
 

Similaire à RubyもApache Arrowでデータ処理言語の仲間入り

ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
nukaemon
 

Similaire à RubyもApache Arrowでデータ処理言語の仲間入り (20)

Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
 
NanoA
NanoANanoA
NanoA
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
 
Pry による repl 駆動開発について
Pry による repl 駆動開発についてPry による repl 駆動開発について
Pry による repl 駆動開発について
 
Haikara
HaikaraHaikara
Haikara
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会
 

Plus de Kouhei Sutou

Plus de Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
 
PGroonga & Zulip
PGroonga & ZulipPGroonga & Zulip
PGroonga & Zulip
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 

Dernier

Dernier (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

RubyもApache Arrowでデータ処理言語の仲間入り