SlideShare a Scribd company logo
1 of 82
Download to read offline
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Apache Arrowの
Rubyバインディングを
GObject Introspectionで
須藤功平
株式会社クリアコード
名古屋Ruby会議03
2017-02-11
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
内容
まくら1.
本題2.
オチ3.
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
やりたいこと
Rubyで
データ分析
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
データ分析?
いろいろある
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
やりたいデータ分析
全文検索関連
同義語・関連語の自動抽出
例:整数とIntegerは同じ
✓
最近アツいキーワードの抽出✓
...✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
課題
道具が足りない
ライブラリーがない・
メンテナンスされていない
✓
✓
道具が使いにくい✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
解決方法
やる(道具を整備する)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
世間の様子
主にJavaとPythonを使う
道具が揃っている✓
✓
組み合わせてデータ分析✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
組み合わせた様子
https://arrow.apache.org/より(Apache License 2.0)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
組み合わせの課題
データ交換コストが高い
データの直列化でCPUの8割を使用
by https://arrow.apache.org/
✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
解決方法
データの
フォーマットを
統一しよう!
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
統一した様子
https://arrow.apache.org/より(Apache License 2.0)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
これはチャンス!
RubyがArrow対応すると…
既存のシステムとやりとりできる✓
「この部分だけはRubyを使う」を
できる
✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
一部でRuby
前述の図を変更(Apache License 2.0)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
一部でRubyを…使える?
道具が
ないじゃん!
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
道具
Groongプロジェクト(CC BY 3.0)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Rroonga
全文検索エンジンライブラリー
SQLで操作とかじゃなく
オブジェクトとして触れる
✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
オブジェクト例
転置索引
オブジェクト
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
転置索引
雑な説明
Hashみたいなもの✓
キー:
トークン(単語みたいなもの)✓
✓
値:
キー(トークン)を含む文書の一覧✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
転置索引オブジェクト(1)
index = Groonga["Words.index"]
token = "オブジェクト"
p index.estimate_size(token)
# => 19048
# 「オブジェクト」を含む文書は
# 約19048個ありそう
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
転置索引オブジェクト(2)
index.open_cursor(token) do |cursor|
# 最初の出現情報
posting = cursor.next
# 「オブジェクト」を含む最初の文書のID
p posting.record.id # => 17
# この文書が何個「オブジェクト」を含むか
p posting.term_frequency # => 1
# 文書の内容
puts posting.record.document
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
分析に使ってみよう
るりまを分析
↓
関連語を抽出
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
関連語の抽出方法例
文書を前処理1.
全文書をトピックに分類
どんなトピックがあるかは学習✓
2.
同じトピックで使われやすい
単語を抽出
→関連語!
3.
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
文書の前処理
単語の出現頻度(Bag of Wordsという)
に変換
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
単語の出現頻度
"名古屋マジ名古屋"
# ↓
{
"名古屋" => 2, # 2回
"マジ" => 1, # 1回
}
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
単語は数値に変換
# "名古屋" => 10
# "マジ" => 20
{
10 => 2, # 「名古屋」2回
20 => 1, # 「マジ」1回
}
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
なんで数値にするの?
計算しやすい
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Rroongaで前処理できる?
出現回数は求められる?
👌:posting.term_frequency✓
✓
単語を数値に変換できる?
👌:全文検索エンジンの必須機能✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Rroongaで前処理(1)
bow = {} # 「名古屋」の分だけ
index.open_cursor("名古屋") do |cursor|
cursor.each do |posting|
record_id = posting.record_id
term_id = posting.term_id # "名古屋"のID
term_frequency = posting.term_frequency # 出現回数
bow[record_id] ||= {}
bow[record_id][term_id] = term_frequency
# bow: { # ↓実際は文字列じゃなくてID
# 2 => {"名古屋" => 9} # 文書2では9回出現
# 5 => {"名古屋" => 19} # 文書5では19回出現
# }
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Rroongaで前処理(2)
bow = {}
index.table.each do |token| # 全トークンを処理
index.open_cursor(token) do |cursor|
cursor.each do |posting|
# ...同じ...
end
end
end
# bow: { # 完成!
# 2 => {"名古屋" => 9, "マジ" => 2}
# 5 => {"名古屋" => 19, "寄席" => 1},
# ...
# }
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
前処理終わり
次はトピックに分類
どんなトピックがあるかは学習✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
トピックの学習方法
LDA
(Latent Dirichlet Allocation/潜在的ディリクレ配分法)
他にも色々ある
参考:http://www.ism.ac.jp/~daichi/lectures/H24-
TopicModel/ISM-2012-TopicModels-daichi.pdf
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
RubyでLDA
lda-ruby gem
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
RubyでLDAをしない!
なぜなら!
Apache Arrowとか
GObject Introspectionの
話をする
機会がなくなるからだ!
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
PythonでLDA
scikit-learn
(gensimの方がよく使われているかも)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
scikit-learnでLDA
import sklearn.decomposition
LDA = sklearn.decomposition.LatentDirichletAllocation
model = LDA(n_topics=100, # 100トピックに分類
learning_method="online",
total_samples=len(bag_of_words)) # 文書数
for words in bag_of_words: # 前処理結果
model.partial_fit(words) # 要フォーマット変換
model.components_ # ここに学習したトピックがある
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
前処理結果がない!
前処理はRubyでやった
Python側にはない✓
前処理結果がないと
scikit-learnで分析できない!
✓
✓
どうしよう!
そうだ!Apache Arrowだ!✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Arrowでつながる世界
(Apache License 2.0)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
RubyでArrow
ArrowはC++のライブラリー
Rubyからは使えない✓
✓
どうしよう!
やる(バインディングを作る)✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Arrowのバインディング
arrow-glib
github.com/kou/arrow-glib✓
Arrowのラッパー・C APIを提供✓
✓
GObject Introspection対応
バインディングを実行時に生成✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
使い方:準備
require "gi"
Arrow = GI.load("Arrow")
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
使い方:配列を作る
# Arrowは高速に1次元・2次元配列を
# 扱うAPIを提供するライブラリー
builder = Arrow::UInt32ArrayBuilder.new
builder.append(29) # 要素追加
builder.append(9) # 要素追加
term_ids = builder.finish # 配列作成
p term_ids.length # => 2
p term_ids.get_value(0) # => 29
p term_ids.get_value(1) # => 9
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
少し…使いにくい!
GObject Introspection
だいたいいい感じになる!(すごい!)✓
が!Ruby特有のところは一手間必要✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
使いやすさ検討
builder = Arrow::UInt32ArrayBuilder.new
builder.append(29)
builder.append(9)
term_ids = builder.finish
# ↓
term_ids =
Arrow::UInt32ArrayBuilder.build([29, 9])
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
一手間
class Arrow::ArrayBuilder
class << self
def build(values)
builder = new
values.each do |value|
builder.append(value)
end
builder.finish
end
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
もう一手間
class Arrow::UInt32Array
class << self
def new(values)
UInt32ArrayBuilder.build(values)
end
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
一手間後
builder = Arrow::UInt32ArrayBuilder.new
builder.append(29)
builder.append(9)
term_ids = builder.finish
# ↓
term_ids = Arrow::UInt32Array.new([29, 9])
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
さらに使いやすさ検討
p term_ids.get_value(0) # => 29
p term_ids.get_value(1) # => 9
# ↓
p term_ids[0] # => 29
p term_ids[1] # => 9
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
二手間
class Arrow::Array
def [](i)
get_value(i)
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
もう一手間
class Arrow::Array
include Enumerable
def each
length.times do |i|
yield(self[i])
end
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
二手間後
p term_ids.get_value(0) # => 29
p term_ids.get_value(1) # => 9
# ↓
p term_ids.to_a # => [29, 9]
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
一手間はどこに書くの?
# こう?
require "gi"
Arrow = GI.load("Arrow")
module Arrow
class Array
# ...
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
違う!
GI.loadはデモ用のAPI
ちゃんと作るときは使わない✓
✓
GI::Loaderを継承
#post_loadフック時に一手間✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
GI::Loader#post_load
class Arrow::Loader < GI::Loader
private
def post_load(*args)
require "arrow/array"
require "arrow/array-builder"
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
arrow/array.rb
class Arrow::Array
include Enumerable
def each
length.times do |i|
yield(self[i])
end
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
arrow.rb
require "arrow/loader"
module Arrow
Loader.load("Arrow", self)
# ↑の中で#post_loadが呼ばれる
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
使い方
require "arrow"
term_ids = Arrow::UInt32Array.new([29, 9])
p term_ids.to_a # => [29, 9]
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
すごい!
Rubyっぽい!
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
実装
RArrow
github.com/kou/rarrow✓
RのArrowバインディングみたいでアレかもしれない✓
✓
他の一手間例もアリ
例:.open {|io| ...}で自動close✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
前処理結果を渡す
忘れていたでしょ?
Arrowの話をしていたのはこのため✓
✓
手順
Rubyで書き出しa.
Pythonで読み込みb.
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Rubyで書き出し
FOS = Arrow::IO::FileOutputStream # 長いから
SW = Arrow::IPC::StreamWriter # 長いから
FOS.open("/tmp/bow", false) do |output_stream|
# schema:カラム名と型の定義(省略)
SW.open(output_stream, schema) do |writer|
bow.each do |record_id, words|
# record_batch(省略):
# テーブルからN行だけ抜き出したもの
writer.write_record_batch(record_batch)
end
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Pythonで読み出し
from scipy.sparse import csr_matrix
import pandas as pd
import pyarrow as A
with A.io.MemoryMappedFile("/tmp/bow", "rb") as source:
reader = A.ipc.StreamReader(source)
for record_batch in reader: # ストリームで順に処理
# Pandasのデータフレームに変換(ゼロコピー!)
df = record_batch.to_pandas()
# 疎な行列に変換
corpus = csr_matrix((df["score"].values,
df["term_id"].values,
[0, df["term_id"].size]),
shape=(1, n_features))
model.partial_fit(corpus) # 学習
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
トピックを確認
for topic in model.components_:
n_top_terms = 10
# このトピックに関連している
# 上位10単語を計算
top_term_indexes = # ↓[::-1]でreverse
topic.argsort()[:-n_top_terms-1:-1]
for i in top_term_indexes:
term_id = i # 単語ID
score = topic[i] # 関連度
print("%s:%s" % (term_id, score))
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
単語IDじゃわからん!
単語はIDにして計算した
けど、確認は単語でしたい!✓
✓
単語とIDの管理は…Rroonga!
トピックをRubyに持っていかないと✓
そうだ!Apache Arrowだ!✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Arrowでつながる世界
(Apache License 2.0)
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Pythonで書き出し
with open("/tmp/topics", "wb") as sink:
# schema:batch.schemaで取得できる(省略)
writer = A.ipc.StreamWriter(sink, schema)
def topic_to_df(topic):
# 前述のトピックを確認した処理と同じ
values = [[i, topic[i]]
for i in topic.argsort()[:-10-1:-1]]
return pd.DataFrame(values,
columns=["term_id", "score"])
for topic in model.components_:
df = topic_to_df(topic)
batch = A.RecordBatch.from_pandas(df)
writer.write_batch(batch)
writer.close()
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
Rubyで読み込み
MMF = Arrow::IO::MemoryMappedFile # 長いから
SR = Arrow::IPC::StreamReader # 長いから
MMF.open("/tmp/topics", :read) do |input|
SR.open(input) do |reader|
reader.each do |record_batch|
record_batch.each do |record|
# 単語IDを単語に変換
term = index.table[record["term_id"]]
p [term, record["score"]]
end
end
end
end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
実際の結果
1: uzqpuaglzig, あきらめ, ご覧
2: useloopback, タスク
3: プラットホーム, mydog
4: delegateclass, barbar
...
微妙…
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
大事なこと
Garbage in,
Garbage out
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
前処理をがんばる
いらない文書を無視✓
いらないトークンを無視✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
いらない文書を無視
entries = Groonga["Entries"]
# 全文検索エンジンで検索するので高速!すごい!
target_entries = entries.select do |record|
(record.version == "2.4.0") -
(record.document =~ "@todo")
# ↑@todoな文書を対象外
end
# ... do |posting|
# 存在チェックも全文検索エンジンがやるので高速!
next if target_entries.key?(posting.record_id)
# ... end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
いらないトークンを無視
n_entries = target_entries.size
# ほとんどの文書に含まれるなら重要じゃない
too_many_threshold = n_entries * 0.9
# ごく一部の文書にしか含まれないなら重要じゃない
too_less_threshold = n_entries * 0.01
# ... do |term|
n_match_documents = index.estimate_size(term)
next if n_match_documents >= too_much_threshold
next if n_match_documents <= too_less_threshold
# ... end
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
実際の結果
1: self, ブロック
2: each, enumerator
3: integer, 整数, 表示
4: ruby, object
...
それっぽくなってきた!
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
まとめ(1)
Rubyでデータ分析
全部はムリ✓
でも一部ならいける✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
まとめ(2)
一部ならいけるのは…
Apache Arrowの登場
データ交換しやすくなる
✓
Rroongaの存在
Rubyで高速に自然言語処理できる
✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
まとめ(3)
RubyでApache Arrow
バインディングが必要✓
GObject Introspection
ベースで作った(arrow-glib)
✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
まとめ(4)
GObject Introspection
だいたいいい感じ✓
さらに一手間でグッとよくなる✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
まとめ(5)
実際に分析してみた
Rubyで前処理
↓Arrow
✓
Pythonで分析
↓Arrow
✓
Rubyで確認
(本当は全文検索用DBに入れて活用する)
✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
まとめ(6)
Rubyでデータ分析いけそう!
Arrowでデータの受け渡しが容易に
→分析処理へのRubyの参加が容易に
✓
RroongaでRubyでも高速に
自然言語処理をできる
✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
おしらせ(1)
Rubyでデータ分析したい人は
クリアコードに相談してね!
道具の用意・活用を手伝える✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
おしらせ(2)
Groonga Meatup名古屋2017
時間:明日の午前(10:00-)✓
場所:Misoca✓
✓
Apache ArrowのRubyバインディングをGObject Introspectionで Powered by Rabbit 2.2.1
別案
RroongaのPython版を作る
RubyもArrowも必要なくなる…✓
けど、より高速に前処理できる!✓
Cythonで作ろうかと思っている…✓
✓

More Related Content

What's hot

AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabYutaka Kobayshi
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムKouhei Sutou
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選虎の穴 開発室
 
How Smalltalker Works
How Smalltalker WorksHow Smalltalker Works
How Smalltalker WorksSho Yoshida
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbNaotoshi Seo
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムKouhei Sutou
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?Kouhei Sutou
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版Kouhei Sutou
 
Serf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraSerf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraNaotoshi Seo
 
Maiking RIA Apps by Ruby
Maiking RIA Apps by RubyMaiking RIA Apps by Ruby
Maiking RIA Apps by Rubyshozon
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3moai kids
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Kouhei Sutou
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Jun Ohtani
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているpocketberserker
 
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Masahito Zembutsu
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Naotoshi Seo
 

What's hot (20)

AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
 
How Smalltalker Works
How Smalltalker WorksHow Smalltalker Works
How Smalltalker Works
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdb
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
 
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版
 
Serf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfraSerf という Orchestration ツール #immutableinfra
Serf という Orchestration ツール #immutableinfra
 
Maiking RIA Apps by Ruby
Maiking RIA Apps by RubyMaiking RIA Apps by Ruby
Maiking RIA Apps by Ruby
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版
 
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
 
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
 
Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3Shadow Server on Fluentd at Fluentd Casual Talks #3
Shadow Server on Fluentd at Fluentd Casual Talks #3
 
実践Realm
実践Realm実践Realm
実践Realm
 

Viewers also liked

融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)Masahiro Sakai
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報Kouhei Sutou
 
Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Kouhei Sutou
 
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記Kentaro Yoshida
 
How Apache Arrow and Parquet boost cross-language interoperability
How Apache Arrow and Parquet boost cross-language interoperabilityHow Apache Arrow and Parquet boost cross-language interoperability
How Apache Arrow and Parquet boost cross-language interoperabilityUwe Korn
 
リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめKouhei Sutou
 
The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)Ki Sung Bae
 
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こうKouhei Sutou
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Codeeddiehaber
 
実践リーダブルコードの概要
実践リーダブルコードの概要実践リーダブルコードの概要
実践リーダブルコードの概要Kouhei Sutou
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジKouhei Sutou
 
リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめましたリーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめましたTakumi Sato
 
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...MapR Technologies Japan
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable CodeBaidu, Inc.
 
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法Rico Sengan
 
リーダブルコード
リーダブルコードリーダブルコード
リーダブルコードKeita Otsuka
 

Viewers also liked (20)

融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)
 
Groonga族2016
Groonga族2016Groonga族2016
Groonga族2016
 
Mroonga!
Mroonga!Mroonga!
Mroonga!
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報
 
Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法
 
Exploiting GPUs in Spark
Exploiting GPUs in SparkExploiting GPUs in Spark
Exploiting GPUs in Spark
 
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
 
How Apache Arrow and Parquet boost cross-language interoperability
How Apache Arrow and Parquet boost cross-language interoperabilityHow Apache Arrow and Parquet boost cross-language interoperability
How Apache Arrow and Parquet boost cross-language interoperability
 
リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめ
 
The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)The art of readable code (ch1~ch4)
The art of readable code (ch1~ch4)
 
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
 
Writing Readable Code
Writing Readable CodeWriting Readable Code
Writing Readable Code
 
実践リーダブルコードの概要
実践リーダブルコードの概要実践リーダブルコードの概要
実践リーダブルコードの概要
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ
 
The Art Of Readable Code.
The Art Of Readable Code.The Art Of Readable Code.
The Art Of Readable Code.
 
リーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめましたリーダブルコードが良書だったのでまとめました
リーダブルコードが良書だったのでまとめました
 
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable Code
 
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
 
リーダブルコード
リーダブルコードリーダブルコード
リーダブルコード
 

Similar to Apache ArrowのRubyバインディングをGObject Introspectionで

Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumTomohiro Kumagai
 
Introduction of Azure Docker Integration
Introduction of Azure Docker IntegrationIntroduction of Azure Docker Integration
Introduction of Azure Docker IntegrationTakekazu Omi
 
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LTAzure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LTJun-ichi Sakamoto
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsShogo Sensui
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSAmazon Web Services Japan
 
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクSEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクKouhei Sutou
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
アプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込みアプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込みKouhei Sutou
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRubyemasaka
 
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Taisuke Oe
 
プログラマー
プログラマープログラマー
プログラマーKouhei Sutou
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE辰徳 斎藤
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 
ROMA on JRuby at JRubyKaigi 2010
ROMA on JRuby at JRubyKaigi 2010ROMA on JRuby at JRubyKaigi 2010
ROMA on JRuby at JRubyKaigi 2010Rakuten Group, Inc.
 

Similar to Apache ArrowのRubyバインディングをGObject Introspectionで (20)

Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
 
Introduction of Azure Docker Integration
Introduction of Azure Docker IntegrationIntroduction of Azure Docker Integration
Introduction of Azure Docker Integration
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LTAzure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイクSEゼミ2014 - リーダブルコード勉強会のアイスブレイク
SEゼミ2014 - リーダブルコード勉強会のアイスブレイク
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
アプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込みアプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込み
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
bicep 0.5 pre
bicep 0.5 prebicep 0.5 pre
bicep 0.5 pre
 
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Real World Android Akka - 日本語版
Real World Android Akka - 日本語版
 
プログラマー
プログラマープログラマー
プログラマー
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
ROMA on JRuby at JRubyKaigi 2010
ROMA on JRuby at JRubyKaigi 2010ROMA on JRuby at JRubyKaigi 2010
ROMA on JRuby at JRubyKaigi 2010
 

More from Kouhei Sutou

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 ArrowKouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
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 ArrowKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
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 dataKouhei Sutou
 
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.6Kouhei Sutou
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
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!Kouhei Sutou
 
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 extensionKouhei Sutou
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!Kouhei Sutou
 
株式会社クリアコード
株式会社クリアコード株式会社クリアコード
株式会社クリアコードKouhei Sutou
 

More from Kouhei Sutou (17)

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
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
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
 
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!
 
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
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 
株式会社クリアコード
株式会社クリアコード株式会社クリアコード
株式会社クリアコード
 

Recently uploaded

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

Apache ArrowのRubyバインディングをGObject Introspectionで