プラグインベースのソフトウェアとは?開発とテストを容易にするデザインパターン #rubykaigi #rubykaigiA

Plugin-based software design with Ruby and RubyGems http://rubykaigi.org/2015/presentations/frsyuki @frsyuki
1
黒曜@Leaner Technologies @kokuyouwind

Fluentdはcoreの上にEvent Routerが乗っている。Plugin Loaderはgemを呼び出すので、pluginをgem installしていれば使うことができる。Rubyのエコシステムに乗ってて合理的やな。 #rubykaigi #rubykaigiA

2015-12-13 15:12:59
tagomoris @tagomoris

Fluentd開発者の意識が更新されてなくて 300+ plugins といっているが既に500くらいあるらしいぞ! #fluentd #rubykaigi

2015-12-13 15:14:31
Takuto Wada @t_wada

Fluent も小さいコアと多数のプラグインで構造されていて、 Core は単なる Event Router。 Event を各 Plugin が捕まえて、全ての仕事をこなす。動的な Plugin Loader は /gems/ から探すようになっている。 #rubykaigiA

2015-12-13 15:16:00
黒曜@Leaner Technologies @kokuyouwind

Embulkのアーキテクチャの話。Java & Rubyで書かれたバルクデータローダー。これもin*out問題がある。 #rubykaigi #rubykaigiA

2015-12-13 15:16:56
馬美肉 @chiastolite

プラグインの話じゃない部分だけどembulkすげぇな #rubykaigia

2015-12-13 15:17:24
Aki Ariga @chezou

RedshiftにあたたかみをもってCOPYしてたところと比べると大分楽だ #rubykaigiA

2015-12-13 15:17:59
Takuto Wada @t_wada

小さいコア、 microkernel と Event router 上に実際の仕事を行うコンポーネント群という構造は Symfony2 にアーキテクチャが似ているな #rubykaigiA

2015-12-13 15:18:19
アルフォートおじさん @joker1007

embulk、RDSからデータ抜くのが超楽なので、素晴らしい。 #rubykaigiA

2015-12-13 15:18:41
Aki Ariga @chezou

embulk-filter-kuromojiなるほどそこでやるのか!よみguessするならKyTeaも使えそうだぞ #rubykaigiA

2015-12-13 15:18:59
黒曜@Leaner Technologies @kokuyouwind

kuromojiでよみがな展開するってのを英語で説明するの、めっちゃ難しそうやな… と思ったけど普通にreading form filterでいいのか。 #rubykaigi #rubykaigiA

2015-12-13 15:19:20
Aki Ariga @chezou

embulkのpluginつくるの楽しそうだなー #rubykaigiA

2015-12-13 15:19:25
Aki Ariga @chezou

JRubyでやるんだとすると、C実装系を使うの大分めんどうそうだなぁ #rubykaigiA

2015-12-13 15:20:31
黒曜@Leaner Technologies @kokuyouwind

なるほど、inputとoutputだけじゃなく、translatorとかfilterもpluginにできるから加工してから流す場合もn*n問題を避けれるのか。 #rubykaigi #rubykaigiA

2015-12-13 15:21:34
黒曜@Leaner Technologies @kokuyouwind

アーキテクチャとしてはEmbulk Coreの上にExecutor Pluginが乗って、Input(+Decoder, Parser)とOutput(+Formatterなど)とFilterが更に乗っかる、と。 #rubykaigi #rubykaigiA

2015-12-13 15:22:53
あおの @aono_ex_parrot

embulkはコアの上にexecutor pluginが載って、そことinput filter outputが通信、filterとguessが通信する構造 #rubykaigi #rubykaigiA

2015-12-13 15:23:29
Blue Garnet @blue_garnet_

EmbulkArchitektureってあんな感じなんだ。 Java RuntimeとJRuby Runtimeが隣にいる Javaで入ってJRubyで出て行く #rubykaigiA

2015-12-13 15:23:43
黒曜@Leaner Technologies @kokuyouwind

Java RuntimeとJRuby Runtimeが並行して動いて、JRubyPluginLoaderPluginがgemから引っ張ってくると。ゲシュタルト崩壊しそうな名前だ #rubykaigi #rubykaigiA

2015-12-13 15:23:56