将棋プログラミング

将棋に関するソフトウェア開発のノウハウ等。

Unexpected error while obtaining screenshot from device: EOF

多分、Android SDK Build-Tools を r29 にアップデイトしたことが原因で、スクリーンショットを撮る際、次のエラーになるようになった。

Unexpected error while obtaining screenshot from device: EOF

次の対策で、この問題が解決した。

1. Android Studio を終了

2. 次のファイルをダウンロードする。

https://dl.google.com/android/repository/platform-tools_r28.0.0-windows.zip

3. adb.exe を入れ替える。

Android\sdk\platform-tools にある adb.exe の更新日時は 2019/03/06 だった。
これをダウンロードした adb.exe と入れ替える。
adb.exe の更新日時は 2018/05/22 になる。


参考サイト:
stackoverflow.com

第29回世界コンピュータ将棋選手権の戦型分析

今年(2019年)の第29回世界コンピュータ将棋選手権の棋譜296局の戦型を分析しました。

f:id:ykakinoki:20190604070937p:plain
第29回世界コンピュータ将棋選手権の戦型分析

1.棋譜の入手

棋譜ファイルは、次の CSA のサイトから入手できます。
www2.computer-shogi.org

•第29回 (2019年5月3,4,5日) から wcsc29_kifu.zip をダウンロードし、展開します。
拡張子が .csa のCSA形式の棋譜ファイルが296局あります。

2.決勝

8チームによる決勝 28局の勝率・平均手数は、次の通りです。

先手(下手)勝ち:    12
後手(上手)勝ち:    10
先手(下手)宣言勝ち:     2
後手(上手)宣言勝ち:     2
千日手    :     2
持将棋    :     0
先手(下手)勝率: 0.538
後手(上手)勝率: 0.462
平均手数   : 190.143  千日手を含む 
平均手数   : 200.308  千日手を除く 

入玉宣言勝ちは4局と多く、千日手は2局です。
先手勝率は、0.538です。
千日手2局を除くと、平均手数は約200手と、かなり長いです。

決勝の戦型は、次の通りです。

                  戦型        棋譜数  割合(%)  先手勝率
────────────────────────────
  1:            角換わりその他:    11  39.3%    0.600
  2:          角換わり腰掛け銀:     7  25.0%    0.200
  3:                  相掛かり:     4  14.3%    1.000
  4:                      矢倉:     3  10.7%    0.333
  5:                      雁木:     2   7.1%    1.000
  6:              その他の戦型:     1   3.6%
────────────────────────────
計                                 28   100%    0.545

角換わりが18局と最も多く、相掛かり4局、矢倉3局と続きます。
振り飛車横歩取りは、1局もありません。

初手は、次のように、▲7六歩が21局と多いです。

   次の手    棋譜数(%)    先手勝率
────────────────────────────
 1.▲7六歩      21 ( 75%)     0.444      8勝     10敗
 2.▲2六歩       5 ( 17%)     1.000      3勝      0敗
 3.▲7八金       2 (  7%)     1.000      1勝      0敗
────────────────────────────
計               28            0.545     12勝     10敗

3.全棋譜

選手権の全棋譜296局に対しては、次の結果です。

先手(下手)勝ち:   146
後手(上手)勝ち:   134
先手(下手)宣言勝ち:     2
後手(上手)宣言勝ち:     4
千日手    :    10
持将棋    :     0
先手(下手)勝率: 0.517
後手(上手)勝率: 0.483
平均手数   : 122.155  千日手を含む 
平均手数   : 123.717  千日手を除く 

千日手を除く平均手数は、約124手と、一般的な平均手数に近くなります。
先手勝率は、0.517 と、決勝より5割に近くなります。

戦型は、次の通りです。

                  戦型        棋譜数  割合(%)  先手勝率
────────────────────────────
  1:            角換わりその他:    57  19.3%    0.431
  2:                  相掛かり:    46  15.5%    0.524
  3:              その他の戦型:    42  14.2%    0.525
  4:                      矢倉:    22   7.4%    0.571
  5:                  四間飛車:    21   7.1%    0.476
  6:        横歩取り△3三角型:    20   6.8%    0.650
  7:          角換わり腰掛け銀:    19   6.4%    0.353
  8:          角交換型振り飛車:    16   5.4%    0.467
  9:                      雁木:    10   3.4%    0.700
 10:            横歩取りその他:     8   2.7%    0.500
 11:                  三間飛車:     8   2.7%    0.500
 12:                    中飛車:     7   2.4%    0.571
 13:                      未定:     6   2.0%    0.500
 14:            ゴキゲン中飛車:     6   2.0%    0.667
 15:                相振り飛車:     3   1.0%    1.000
 16:                向かい飛車:     3   1.0%    1.000
 17:            一手損角換わり:     1   0.3%    1.000
 18:                ひねり飛車:     1   0.3%    0.000
────────────────────────────
計                                296   100%    0.521

角換わりが最も多く、次が相掛かりです。
四間飛車が21局、横歩取りが28局です。

初手は、次のように、▲7六歩が多く、決勝と違って、様々な手が指されています。

   次の手    棋譜数(%)    先手勝率
────────────────────────────
 1.▲7六歩     171 ( 58%)     0.488     79勝     83敗
 2.▲2六歩      65 ( 22%)     0.565     35勝     27敗
 3.▲7八金      12 (  4%)     0.727      8勝      3敗
 4.▲3八銀       8 (  2%)     0.625      5勝      3敗
 5.▲6八玉       5 (  1%)     0.800      4勝      1敗
 6.▲4六歩       5 (  1%)     0.400      2勝      3敗
 7.▲5八玉       5 (  1%)     0.400      2勝      3敗
 8.▲1六歩       5 (  1%)     0.500      1勝      1敗
 9.▲9八香       4 (  1%)     0.750      3勝      1敗
10.▲6六歩       4 (  1%)     0.500      2勝      2敗
11.▲6八飛       1 (  0%)     1.000      1勝      0敗
12.▲4八銀       1 (  0%)     1.000      1勝      0敗
13.▲6八銀       1 (  0%)     0.000      0勝      1敗
14.▲3八金       1 (  0%)     0.000      0勝      1敗
15.▲3八飛       1 (  0%)     0.000      0勝      1敗
16.▲6八金       1 (  0%)     0.000      0勝      1敗
────────────────────────────
計              296            0.521    146勝    134敗

iOSアプリのリジェクト - We discovered that your app contains obfuscated code...

iOSアプリのアップデイトが次の理由でリジェクトされた。

We discovered that your app contains obfuscated code, selector mangling, 
or features meant to subvert the App Review process by changing this app's concept after approval to the App Store.

リジェクトされた回数は数え切れないが、この理由は初めてで、心当たりもなかった。
そこで、より詳細に説明するように返信したところ、承認された。
心当たりがない場合、説明を求めるべきのようだ。

Android Gradle Plugin のアップデイト(2) - This should not happen under normal circumstances

リリースビルドを作成しようとしたら、次のエラーが起きた。

This should not happen under normal circumstances, please file an issue if it does.
...

Gradle Plugin 3.3.2 で、2MB以上の大きさの画像を使うときに起きる Gradle Plugin のバグらしい。
次の記述の追加で解決した。

// Top-level build file
allprojects {
    // Workaround for https://issuetracker.google.com/117900475
    // Remove when upgrading to AGP 3.4 or higher.
    configurations.matching { it.name == '_internal_aapt2_binary' }.all { config ->
        config.resolutionStrategy.eachDependency { details ->
            details.useVersion("3.5.0-alpha03-5252756")
        }
    }
}

参考サイト:
stackoverflow.com

Android Gradle Plugin のアップデイト - ERROR: Could not find com.android.tools.build:gradle:3.3.2.

次のエラーが起きた。

ERROR: The versions of the Android Gradle plugin and Gradle are not compatible.
Please do one of the following:
Update your plugin to version 2.4. This will require changes to build.gradle due to API changes.

そのため、Gradle Plugin のバージョンを次のように上げた。

// Top-level build file
buildscript {
     dependencies {
       // 2.2.3 -> 3.3.2 に
       classpath 'com.android.tools.build:gradle:3.3.2'
    }
}

すると、次のエラーが起きた。

ERROR: Could not find com.android.tools.build:gradle:3.3.2.

repositories に、google() を追加することで解決した。

// Top-level build file
buildscript {
    repositories {
        google() // 追加
        jcenter()
    }
}

allprojects {
    repositories {
        google() // 追加
        jcenter()
}

参考サイト:
stackoverflow.com

Xcode 10.2 の最適化のバグ

Xcode が 10.2 にアップデイトされ、それでアプリをリリースしたところ、一部の機種で動作が異常になった。
問題を確認できた機種は、iPhone 4siPad 3代目である。恐らく、32bit CPU の機種だろうと思われる。
ソースを変更していない部分で起きた問題なので、Xcode 10.2 の問題だろうと見当をつけ、Xcode 10.1 をダウンロードし、これを使うと、やはり問題なかった。
また、Xcode 10.2 でも、最適化を "None" にすると、問題がない。
以上の結果から、Xcode 10.2 の 32bit CPU に対する最適化のバグだと思われる。

昨年も Xcode をアップデイトしたとき、古い iOS の古い機種で問題が起きたときがあった。
そのときは、しばらく古い Xcode を使っていたが、古い Xcode を使い続けることもできないので、ソースを書き換え、問題を回避した。

何年も前にも、最適化すると問題が起きるアプリがあり、最適化をオフにしたときがあった。

追記:
Xcode 10.2.1 でも修正されていないことを確認した。