際際滷

際際滷Share a Scribd company logo
Rubyからkuromojiを柵ぶた
めにgRPCサ`バにして
Docker晒した
kawasaki.rb #51
2017/8/23
ぺけみさお / xmisao
Kuromoji
侘B殆盾裂をしてくれる徨(Java)
Builder builder = Tokenizer.builder();
builder.mode(Mode.NORMAL));
Tokenizer tokenizer = builder.build();
Token token = tokenizer.tokenize("もう採も訊くない");
// 侘B殆盾裂のY惚が函れる
gRPC
¢ GoogleuのRPCフレ`ムワ`ク
¢ .protoファイル(Protocol BufferのIDL)でインタフェ`スを協x
¢ .protoファイルからクライアント?サ`バのスタブを竃薦できる
¢ Protocol BufferでHTTP2で壼いらしい
.protoファイル(1/2)
syntax = "proto3";
option java_multiple_files = true;
option java_package = "com.xmisao.mojix.tokenizer";
option java_outer_classname = "IpadicTokenizer";
option objc_class_prefix = "IT";
package mojix;
service Tokenizer {
rpc tokenizeSimply (SimpleRequest) returns (SimpleResponse) {}
}
.protoファイル(2/2)
message SimpleRequest {
string text = 1;
enum Mode {
NORMAL = 0;
SEARCH = 1;
EXTENDED = 2;
}
Mode mode = 2;
}
message SimpleResponse {
repeated string tokens = 1;
}
Java
static class TokenizerImpl extends TokenizerImplBase {
@Override
public void tokenizeSimply(SimpleRequest request, StreamObserver<SimpleResponse>
responseObserver) {
Tokenizer tokenizer = getTokenizer(request.getMode());
String text = request.getText();
SimpleResponse.Builder responseBuilder = SimpleResponse.newBuilder();
List<String> tokens = new ArrayList<String>();
for (Token token : tokenizer.tokenize(text)) {
tokens.add(token.getSurfaceForm());
}
responseBuilder.addAllTokens(tokens);
SimpleResponse response = responseBuilder.build();
responseObserver.onNext(response);
responseObserver.onCompleted();
}
Ruby
stub = Tokenizer::Stub.new(
host_port,
:this_channel_is_insecure)
req = SimpleRequest.new(
text: text,
SimpleRequest::Mode::NORMAL)
stub.tokenize_simply(req).tokens
Dockerfile
# xmisao/mojix
FROM maven:3.5.0-jdk-8
ADD . /srv/mojix
WORKDIR /srv/mojix
RUN mvn install
EXPOSE 9661
CMD java -jar
target/mojix-0.0.1-SNAPSHOT-jar-with-dependencies.jar
恬った
¢ GitHub
$ xmisao/mojix-server
$ xmisao/mojix-client-ruby
¢ Docker Hub
$ xmisao/mojix
デモ
# docker run -it --rm -p 9661:9661 xmisao/mojix
# bundle exec irb
> require `mojix¨
> Mojix::Client.new.tokenize_simply(`もう採も訊くない¨)
=> ["もう", "採", "も", "訊く", "ない"]
まとめ
云輝に駅勣なのはRPCだった

More Related Content

What's hot (20)

linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptlinq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
?
Kink: プロトタイプベ`スの鯵? JVM 冱Z
Kink: プロトタイプベ`スの鯵? JVM 冱ZKink: プロトタイプベ`スの鯵? JVM 冱Z
Kink: プロトタイプベ`スの鯵? JVM 冱Z
Taku Miyakawa
?
赫看界看稼2017些甸任離蹈ング巓りの深賀
赫看界看稼2017些甸任離蹈ング巓りの深賀赫看界看稼2017些甸任離蹈ング巓りの深賀
赫看界看稼2017些甸任離蹈ング巓りの深賀
F畔 寄才塁
?
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Uehara Junji
?
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
?
griffon plugin を gHに恬ってみよう #jggug
griffon plugin を gHに恬ってみよう #jgguggriffon plugin を gHに恬ってみよう #jggug
griffon plugin を gHに恬ってみよう #jggug
kimukou_26 Kimukou
?
Prometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidePrometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slide
cosmo0920
?
バッチリネ`マ`の崙恬
バッチリネ`マ`の崙恬バッチリネ`マ`の崙恬
バッチリネ`マ`の崙恬
eighttails
?
干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞
干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞
干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞
Yasuharu Nakano
?
JEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_ccc
JEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_cccJEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_ccc
JEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_ccc
YujiSoftware
?
児AからのCode Contracts
児AからのCode Contracts児AからのCode Contracts
児AからのCode Contracts
Yoshifumi Kawai
?
.NET Core 2.x r旗の C#
.NET Core 2.x r旗の C#.NET Core 2.x r旗の C#
.NET Core 2.x r旗の C#
佚岻 冫喟
?
Rx java x retrofit
Rx java x retrofitRx java x retrofit
Rx java x retrofit
Shun Nakahara
?
Go conference 2017 Lightning talk
Go conference 2017 Lightning talkGo conference 2017 Lightning talk
Go conference 2017 Lightning talk
mokelab
?
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
Masaru Oki
?
Task Spooler をした
Task Spooler をしたTask Spooler をした
Task Spooler をした
y-uti
?
Fluentd+MongoDB+Groovy
Fluentd+MongoDB+GroovyFluentd+MongoDB+Groovy
Fluentd+MongoDB+Groovy
Daisuke Ando
?
Retrofit2 &OkHttp ?でAndroidのHTTP宥佚が酔mだにゃん
Retrofit2 &OkHttp ?でAndroidのHTTP宥佚が酔mだにゃんRetrofit2 &OkHttp ?でAndroidのHTTP宥佚が酔mだにゃん
Retrofit2 &OkHttp ?でAndroidのHTTP宥佚が酔mだにゃん
removed_96f4639f4009e61a478bf38f188e8404
?
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
佚岻 冫喟
?
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptlinq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
?
Kink: プロトタイプベ`スの鯵? JVM 冱Z
Kink: プロトタイプベ`スの鯵? JVM 冱ZKink: プロトタイプベ`スの鯵? JVM 冱Z
Kink: プロトタイプベ`スの鯵? JVM 冱Z
Taku Miyakawa
?
赫看界看稼2017些甸任離蹈ング巓りの深賀
赫看界看稼2017些甸任離蹈ング巓りの深賀赫看界看稼2017些甸任離蹈ング巓りの深賀
赫看界看稼2017些甸任離蹈ング巓りの深賀
F畔 寄才塁
?
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
Uehara Junji
?
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
?
griffon plugin を gHに恬ってみよう #jggug
griffon plugin を gHに恬ってみよう #jgguggriffon plugin を gHに恬ってみよう #jggug
griffon plugin を gHに恬ってみよう #jggug
kimukou_26 Kimukou
?
Prometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slidePrometheus meetup tokyo#3 slide
Prometheus meetup tokyo#3 slide
cosmo0920
?
バッチリネ`マ`の崙恬
バッチリネ`マ`の崙恬バッチリネ`マ`の崙恬
バッチリネ`マ`の崙恬
eighttails
?
干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞
干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞
干温厩温蝕kの膿薦な牋瑤箸靴峠颪垢?聞える赫姻看看厩霞
Yasuharu Nakano
?
JEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_ccc
JEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_cccJEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_ccc
JEP280: Java 9 で猟忖双Y栽のI尖が笋錣襪升笋呂いい。 #jjug_ccc
YujiSoftware
?
児AからのCode Contracts
児AからのCode Contracts児AからのCode Contracts
児AからのCode Contracts
Yoshifumi Kawai
?
Go conference 2017 Lightning talk
Go conference 2017 Lightning talkGo conference 2017 Lightning talk
Go conference 2017 Lightning talk
mokelab
?
Task Spooler をした
Task Spooler をしたTask Spooler をした
Task Spooler をした
y-uti
?
Fluentd+MongoDB+Groovy
Fluentd+MongoDB+GroovyFluentd+MongoDB+Groovy
Fluentd+MongoDB+Groovy
Daisuke Ando
?

Similar to Rubyからg rpcでdocker晒したkuromojiを聞った (20)

Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
tako pons
?
WSL2+docker+JupyterとVS Codeリモ`トh廠のB
WSL2+docker+JupyterとVS Codeリモ`トh廠のBWSL2+docker+JupyterとVS Codeリモ`トh廠のB
WSL2+docker+JupyterとVS Codeリモ`トh廠のB
Saito5656
?
PEZY-SC programming overview
PEZY-SC programming overviewPEZY-SC programming overview
PEZY-SC programming overview
Ryo Sakamoto
?
芙坪鬚Tech TalkY創゛Fluentdの児云B初゛
芙坪鬚Tech TalkY創゛Fluentdの児云B初゛ 芙坪鬚Tech TalkY創゛Fluentdの児云B初゛
芙坪鬚Tech TalkY創゛Fluentdの児云B初゛
Daisuke Ikeda
?
鰻看糸艶.逮壊でブラウザメッセンジャ`
鰻看糸艶.逮壊でブラウザメッセンジャ`鰻看糸艶.逮壊でブラウザメッセンジャ`
鰻看糸艶.逮壊でブラウザメッセンジャ`
額温鞄看看!デベロッパ`ネットワ`ク
?
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdmod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
?
ラズパイ2で咾 Docker PaaS
ラズパイ2で咾 Docker PaaSラズパイ2で咾 Docker PaaS
ラズパイ2で咾 Docker PaaS
npsg
?
堰意珂晦5&温馨沿;粥永鴛tまくり
堰意珂晦5&温馨沿;粥永鴛tまくり堰意珂晦5&温馨沿;粥永鴛tまくり
堰意珂晦5&温馨沿;粥永鴛tまくり
Shumpei Shiraishi
?
赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒
赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒
赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒
Shigeru Tsubota
?
皆看鞄顎喨箋脹莢盂抒鶸撚埔刮
皆看鞄顎喨箋脹莢盂抒鶸撚埔刮皆看鞄顎喨箋脹莢盂抒鶸撚埔刮
皆看鞄顎喨箋脹莢盂抒鶸撚埔刮
Ryan Poy
?
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
?
及8指悪永酷k燕彿創
及8指悪永酷k燕彿創及8指悪永酷k燕彿創
及8指悪永酷k燕彿創
cryks
?
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
?
WTM53 phpフレ`ムワ`ク いまさらcodeigniter
WTM53 phpフレ`ムワ`ク いまさらcodeigniterWTM53 phpフレ`ムワ`ク いまさらcodeigniter
WTM53 phpフレ`ムワ`ク いまさらcodeigniter
Masanori Oobayashi
?
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Masahito Zembutsu
?
ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)
ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)
ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
?
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
tako pons
?
WSL2+docker+JupyterとVS Codeリモ`トh廠のB
WSL2+docker+JupyterとVS Codeリモ`トh廠のBWSL2+docker+JupyterとVS Codeリモ`トh廠のB
WSL2+docker+JupyterとVS Codeリモ`トh廠のB
Saito5656
?
PEZY-SC programming overview
PEZY-SC programming overviewPEZY-SC programming overview
PEZY-SC programming overview
Ryo Sakamoto
?
芙坪鬚Tech TalkY創゛Fluentdの児云B初゛
芙坪鬚Tech TalkY創゛Fluentdの児云B初゛ 芙坪鬚Tech TalkY創゛Fluentdの児云B初゛
芙坪鬚Tech TalkY創゛Fluentdの児云B初゛
Daisuke Ikeda
?
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpdmod_auth_ticket - Bringing Single-Sign-On to lighttpd
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
?
ラズパイ2で咾 Docker PaaS
ラズパイ2で咾 Docker PaaSラズパイ2で咾 Docker PaaS
ラズパイ2で咾 Docker PaaS
npsg
?
堰意珂晦5&温馨沿;粥永鴛tまくり
堰意珂晦5&温馨沿;粥永鴛tまくり堰意珂晦5&温馨沿;粥永鴛tまくり
堰意珂晦5&温馨沿;粥永鴛tまくり
Shumpei Shiraishi
?
赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒
赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒
赫鰻皆3貧の∀襯▲廛薀ぅ▲鵐坑赫庄岳晦温恢檎顎稼稼艶姻+京禽禽によるテスト徭強晒
Shigeru Tsubota
?
皆看鞄顎喨箋脹莢盂抒鶸撚埔刮
皆看鞄顎喨箋脹莢盂抒鶸撚埔刮皆看鞄顎喨箋脹莢盂抒鶸撚埔刮
皆看鞄顎喨箋脹莢盂抒鶸撚埔刮
Ryan Poy
?
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
?
及8指悪永酷k燕彿創
及8指悪永酷k燕彿創及8指悪永酷k燕彿創
及8指悪永酷k燕彿創
cryks
?
WTM53 phpフレ`ムワ`ク いまさらcodeigniter
WTM53 phpフレ`ムワ`ク いまさらcodeigniterWTM53 phpフレ`ムワ`ク いまさらcodeigniter
WTM53 phpフレ`ムワ`ク いまさらcodeigniter
Masanori Oobayashi
?
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Docker秘T-児A いまから兵めるDocker砿尖‐2nd Edition/
Masahito Zembutsu
?
ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)
ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)
ZynqMPのブ`トとパワ`マネ`ジメント : (ZynqMP Boot and Power Management)
Mr. Vengineer
?

More from Misao X (7)

BestGems.org 2018定のM晒
BestGems.org 2018定のM晒BestGems.org 2018定のM晒
BestGems.org 2018定のM晒
Misao X
?
檎顎恢霞で赫雨鴛アプリケ`ションを慕く
檎顎恢霞で赫雨鴛アプリケ`ションを慕く檎顎恢霞で赫雨鴛アプリケ`ションを慕く
檎顎恢霞で赫雨鴛アプリケ`ションを慕く
Misao X
?
OWebサ`ビス\喘 kawasaki.rb #044
OWebサ`ビス\喘 kawasaki.rb #044OWebサ`ビス\喘 kawasaki.rb #044
OWebサ`ビス\喘 kawasaki.rb #044
Misao X
?
Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?
Misao X
?
しょぼいカレンダ`からアニメデ`タベ`スを恬る
しょぼいカレンダ`からアニメデ`タベ`スを恬るしょぼいカレンダ`からアニメデ`タベ`スを恬る
しょぼいカレンダ`からアニメデ`タベ`スを恬る
Misao X
?
BestGems.org -RubyGemsランキングサイトのごB初-
BestGems.org -RubyGemsランキングサイトのごB初-BestGems.org -RubyGemsランキングサイトのごB初-
BestGems.org -RubyGemsランキングサイトのごB初-
Misao X
?
閣庄馨と檎顎恢霞のアツいvS
閣庄馨と檎顎恢霞のアツいvS閣庄馨と檎顎恢霞のアツいvS
閣庄馨と檎顎恢霞のアツいvS
Misao X
?
BestGems.org 2018定のM晒
BestGems.org 2018定のM晒BestGems.org 2018定のM晒
BestGems.org 2018定のM晒
Misao X
?
檎顎恢霞で赫雨鴛アプリケ`ションを慕く
檎顎恢霞で赫雨鴛アプリケ`ションを慕く檎顎恢霞で赫雨鴛アプリケ`ションを慕く
檎顎恢霞で赫雨鴛アプリケ`ションを慕く
Misao X
?
OWebサ`ビス\喘 kawasaki.rb #044
OWebサ`ビス\喘 kawasaki.rb #044OWebサ`ビス\喘 kawasaki.rb #044
OWebサ`ビス\喘 kawasaki.rb #044
Misao X
?
Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?Native Extensionのビルドどうしてますか?
Native Extensionのビルドどうしてますか?
Misao X
?
しょぼいカレンダ`からアニメデ`タベ`スを恬る
しょぼいカレンダ`からアニメデ`タベ`スを恬るしょぼいカレンダ`からアニメデ`タベ`スを恬る
しょぼいカレンダ`からアニメデ`タベ`スを恬る
Misao X
?
BestGems.org -RubyGemsランキングサイトのごB初-
BestGems.org -RubyGemsランキングサイトのごB初-BestGems.org -RubyGemsランキングサイトのごB初-
BestGems.org -RubyGemsランキングサイトのごB初-
Misao X
?
閣庄馨と檎顎恢霞のアツいvS
閣庄馨と檎顎恢霞のアツいvS閣庄馨と檎顎恢霞のアツいvS
閣庄馨と檎顎恢霞のアツいvS
Misao X
?

Rubyからg rpcでdocker晒したkuromojiを聞った