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

Plugin-based software design with Ruby and RubyGems http://rubykaigi.org/2015/presentations/frsyuki @frsyuki
1
トゥギャッター開発まとめ @tg__dev

Next up: 14:50-15:25 (35) / "Plugin-based software design with Ruby and RubyGems" / 🔈@frsyuki / 📍HallA ( #rubykaigiA ) #rubykaigi

2015-12-13 14:45:01
Sadayuki Furuhashi @frsyuki

Founder of Treasure Data, Inc. The original creator of MessagePack https://t.co/TbHobYGlFU, Fluentd https://t.co/DwYeCNCaDu, and Embulk https://t.co/vZ3FeokAkT. github: https://t.co/50bnyfM3zF

http://t.co/trJIXsKdfY

Takuto Wada @t_wada

古橋さんが US に渡ったの、もう4年前なのか…… #rubykaigiA

2015-12-13 14:56:38
黒曜@Leaner Technologies @kokuyouwind

ホールAに移動して"Plugin-based software design with Ruby and RubyGems"を聞いてる。MessagePackの人? msgpack.org #rubykaigi #rubykaigiA

2015-12-13 14:57:18
Tomoya Kabe @limitusus

「RubyKaigiなら英語でやる方が楽」とのこと #rubykaigi #rubykaigiA

2015-12-13 14:57:39
局所解 @s_osa_

一昨日も思ったんだけど英語だと「しーくぇる」の方がメジャーなのかな? #rubykaigi #rubykaigiA

2015-12-13 14:58:40
かるぱねるら @karupanerura

Plugin毎に簡単にテスト書けるのだいじだ #rubikaigi #rubykaigiA

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

Plugin Architectureを取ることで、コアをシンプルに保ち、testableにすることができる… うまくデザインされてれば、の話だけどね。 #rubykaigi #rubykaigiA

2015-12-13 14:59:45
やぬすさん / Takagi Kensuke @janus_wel

どのように plugin architecture を設計したか、のハナシ #rubykaigi #rubykaigiA

2015-12-13 14:59:50
Takuto Wada @t_wada

plugin architecture の設計について。なんて俺得な講演なんだ…… #rubykaigiA

2015-12-13 15:00:49
Blue Garnet @blue_garnet_

#rubykaigi #rubykaigiA むかしの拡張ソフトウェアアーキテクチャHostアプリの拡張ソケットにプラギンを登録する形

2015-12-13 15:01:00
やぬすさん / Takagi Kensuke @janus_wel

「従来の方法だと拡張できる場所を用意してそこに登録していく形だった」 #rubykaigi #rubykaigiA

2015-12-13 15:01:30
黒曜@Leaner Technologies @kokuyouwind

Plugin Architecture Design Patternには2種類ある。extention pointを用意しておくTraditional wayと、Plugin同士がnetworkを構成するplugin-base。 #rubykaigi #rubykaigiA

2015-12-13 15:01:31
Blue Garnet @blue_garnet_

プラグインベースソフトウェアアーキテクチャは カーネルの上にプラグインが積み重ねられている。ネットワークとして。 プラグインのネット枠としてのアプリケーション #rubykaigi #rubykaigiA

2015-12-13 15:02:06
あおの @aono_ex_parrot

プラグインはベースアプリの受け口にはめ込むのが一般的だけど、プラグインベースアプリケーションはプラグインとカーネルアプリケーションが通信するイメージ #rubykaigi #rubykaigiA

2015-12-13 15:02:09
もひゃ @onjiro_mohyahya

デザインとパフォーマンス最適化が大変か、なるほど・・・ #rubykaigiA

2015-12-13 15:02:24
黒曜@Leaner Technologies @kokuyouwind

plugin-basedではKernelはpluginを実装するためのフレームワークに過ぎず、1プラグインが1機能を提供する。 #rubykaigi #rubykaigiA

2015-12-13 15:02:33
Blue Garnet @blue_garnet_

パターン1、DI!DI! DIコンテナがオブジェクトを置き換える テストが楽。テスト対象以外をダミーにかえればいいから #rubykaigi #rubykaigiA

2015-12-13 15:03:55
黒曜@Leaner Technologies @kokuyouwind

これを実現するデザインパターンの一つがDependency Injection。DIコンテナが実行時にプラグインに置き換えられる。単体テスト時には対象以外をdummyに置き換えることで簡単にテスト出来る。 #rubykaigi #rubykaigiA

2015-12-13 15:03:57
あおの @aono_ex_parrot

プラグインはカーネルと自分以外全部ダミーでテスト出来る #rubykaigi #rubykaigiA

2015-12-13 15:04:20
m1sogi webエンジニア @m1sogi

#rubykaigiA DIコンテナだとソフトウェア内の特定のアレだけ切り替えるとかやりやすいわなー。DIの例でもDBドライバ部分とか出てくるな

2015-12-13 15:04:25