52
JavaFX で Javascriptを テストする presented by @mike_neck

Groovy joint

Embed Size (px)

DESCRIPTION

Groovy Joint is a simple DI framework.

Citation preview

Page 1: Groovy joint

JavaFX で Javascriptを

テストする

presented by @mike_neck

Page 2: Groovy joint

JavaFXにはWebkitを搭載したWebViewがあります。

皆さんご存知とおもいますが、

Page 3: Groovy joint

だから…

JavascriptのテストをJavaでやることができるんです!

Page 4: Groovy joint

JavascriptでJavaではありません

Page 5: Groovy joint

型安全

カターンゼン

Page 6: Groovy joint

(∩´∀`)∩

バンザーイ

Page 7: Groovy joint

Page 8: Groovy joint

なにっ(・・;)

ところが…

Page 9: Groovy joint

JavaFXやる

Page 10: Groovy joint

(;・∀・)ハッ?

余裕なかった

んで

Page 11: Groovy joint

(ΦωΦ)!!!!!!!!!!!!!!!!!!!!!!!!

なんもやって

ません

Page 12: Groovy joint

(´・ω`・)エッ?

おあり

Page 13: Groovy joint

Page 14: Groovy joint

……

Page 15: Groovy joint

|д゚)チラッ

………

Page 16: Groovy joint

(´;ω;`)ブワッ

ダメだよね…

Page 17: Groovy joint

サボってないよ(゚д゚)(。_。)(゚д゚)(。_。) ウンウン

最近やってた

こと

Page 18: Groovy joint

ε-(´∀`*)ホッ

話します

Page 19: Groovy joint

JavaFXからずいぶんと離れるな…

Swingの

Page 20: Groovy joint

レガシーコード

Page 21: Groovy joint

やっつけてま

した

Page 22: Groovy joint

どんなに、

レガシー?

Page 23: Groovy joint

こんな感じ

Page 24: Groovy joint

strValue = ""; File file = new File ("conf/system.properties");FileInputStream in = null;try {

in = new FileInputStream (file);Properties prop = new Properties();prop.load(in);strValue = prop.get("hoge");

}

あるソースの100行目付近

Page 25: Groovy joint

strValue = ""; File file = new File ("conf/system.properties");FileInputStream in = null;try {

in = new FileInputStream (file);Properties prop = new Properties();prop.load(in);strValue = prop.get("huge");

}

その12行くらい後

Page 26: Groovy joint

strValue = ""; File file = new File ("conf/system.properties");FileInputStream in = null;try {

in = new FileInputStream (file);Properties prop = new Properties();prop.load(in);strValue = prop.get("hade");

}

さらにその12行くらい後

Page 27: Groovy joint

(´;ω;`)ブワッ

コピペ!

Page 28: Groovy joint

氏ね!

レガシーコード

Page 29: Groovy joint

(´;ω;`)ブワッ

改修

やってました

Page 30: Groovy joint

というわけで

Page 31: Groovy joint

自己紹介

Page 32: Groovy joint

みけでいいです

@mike_neck

Page 33: Groovy joint

Groovyが好き

Javaなんか

やってます

Page 34: Groovy joint

あんな酷い

コードですが

Page 35: Groovy joint

ありがたい…

ありがたい

オマンマの種

Page 36: Groovy joint

最初はビルドできませんでした

ビルドとか

面倒なので

Page 37: Groovy joint

build.gradle組むの大変だった

gradleで

buidしてます

Page 38: Groovy joint

レガシーすぎるので

欲が出てtest

書いてます

Page 39: Groovy joint

Javaでテスト面倒なので

欲が出て

groovyでtest

Page 40: Groovy joint

それでもまだまだレガシー

だんだん

イラっとして

Page 41: Groovy joint

やったー

プロダクトに

groovy

Page 42: Groovy joint

(´・ω`・)エッ?

と思ったのも

つかの間

Page 43: Groovy joint

(´;ω;`)ブワッ

ビルドおちた

Page 44: Groovy joint

● JavaのプロダクトコードからGroovyのプロダクトコードを参照している

● gradleのビルドモデルはJava→Groovyの順で実行される

原因

Page 45: Groovy joint

Javaが依存しているGroovyのコードを先にコンパイルしていないとAUTO!

つまり

Page 46: Groovy joint

コンパイル時に実装を隠蔽していくれるようなそんなコンパイルを行いたい

解決策

Page 47: Groovy joint

それも実行時に実装クラスを指定できるようなやつ

DIほしい

Page 48: Groovy joint

● 文字列から実装クラスを指定できる。

● staticなコンテキストでも呼び出せる。

● Exceptionとか面倒なんで、例外はRuntimeにしたい。

欲しい機能

Page 49: Groovy joint

● アノテーションで実装クラスを指定する。

● アノテーションで指定されたクラスを注入する。

● 指定されたクラスがない場合は、それを示す実行時の例外をthrowする。

作った機能

Page 50: Groovy joint

● @GroovyImpl (implementedClass = "クラスのFQCN")

● インタフェースに付与された@GroovyImpleアノテーションをから実装クラスをインスタンス化

作った機能

Page 51: Groovy joint

https://github.com/mike-neck/gj-groovy-joint

にて公開予定

Page 52: Groovy joint

by mike_neck

groovyのご利

用は計画的に