Sikuli - 比較を2回せずに高速化する

次の処理では、①で存在するかどうかをチェックし②でその場所をクリックするという2つの処理で同じ画像のマッチングをしています。

1
2
3
4
if exists("a.png"):  # ①
click("a.png") # ②
else:
click("b.png")

画像マッチングは時間がかかる複雑な処理のため、Sikuliでは同じ画像マッチングを避けるための工夫があります。それはgetLastMatchメソッドです。

getLastMatchメソッドは最後に画像マッチングしたときの結果を返します。
このメソッドを使うと先ほどの処理は以下のように記述することができます。

1
2
3
4
if exists("a.png"):
click(getLastMatch()) # 最後に画像マッチしたときの結果をクリックする
else:
click("b.png")

変更後のソースでは同じ画像が2つ登場することがないのでプログラムが見やすくなり、さらに処理速度も向上します。