-
面倒くさい作業が増えた2018.03.31 Saturday
-
将皇の問題配信で使っているGoogleのサーバ(AppEngine)でJava7が使えなくなるからJava8に移行してくれとアナウンスが来ました。Java7でデプロイしたプログラムは来年の1月で強制的にシャットダウンするという事です。( ´_ゝ`)フーンと思って移行方法を調べてみたところ芋づる式に作業が増える事が分かりテンションがガタ落ちです。とりあえずまとめてみます。
■Java7からJava8への移行方法について
Migrating from Java 7 to Java 8 Runtime
https://cloud.google.com/appengine/docs/standard/java/migrating-to-java8
をみるとappengine-web.xmlに<runtime>の設定を追加してデプロイすれば良い、とあるので早速試してみたところエラーがでました。「今使っている環境が最新でない(むしろかなり古い)ので最新にしてから考えよう!」と思い調べると、現在使っている「Google Plugin for Eclipse」が非サポートになっていた事を今更知りました。「Cloud Tools for Eclipse」に移行せよとのことです。
■Cloud Tools for Eclipseの移行方法について
Google Plugin for Eclipse からの移行
https://cloud.google.com/eclipse/docs/migrating-gpe?hl=ja
新しいソフトウェアをいくつかインストールする必要があります。普段なら面倒臭い作業ですが、開発環境を新しいPCに移行する必要が元々あったため、ちょうど良いきっかけになりました。手順に従って移行するといくつかエラーが発生します。エラーの内容をググって解決。解決した後にナレッジをまとめたQiitaを発見しました…。
Google Plugin for Eclipse から Cloud Tools for Eclipse への移行
https://qiita.com/kazuki1600/items/360f649d158cd81191c2
色々あったけどjava8でデプロイできました。と思ったら実行時エラーが発生。Java8でサポートしていないクラスがあるとのこと。使っていないので削除!削除!
今度は別のエラーが発生。これが一番の問題です。移行ガイドを再度読んでみたところ「Cloud Tools for Eclipse はエンティティ クラスを自動拡張しません」という一番がさらっと書いてあって、このせいでエラーが起きていました。端的にまとめるとDBアクセス系の関数が全部非サポートということです。移行の方法がさらっと書いてありましたが、Stackonverflowの事例を見た限りでは別のライブラリを使った方が早いみたいです。
DataNucleus JDO with Google Cloud Tools for Eclipse
https://stackoverflow.com/questions/43395026/datanucleus-jdo-with-google-cloud-tools-for-eclipse
それなりのプログラム修正が必要です。残念無念。しっかりしたテストも必要だし、この作業に集中しても半月以上かかる気がします。3か月くらいかけて少しずつ進めていこうと今は考えていますが、それにしても大幅なモチベダウンです。
-
Twitterカードについて調べた事の備忘録2018.03.29 Thursday
-
将皇には対局した棋譜をツイートする機能がありますが、現状はURLの文字情報のみで見栄えがよくありません。Google PlayやApp StoreのURLを貼った場合はアプリのアイコンや説明文が表示されたりして格好良いですよね?あれと同じことができないか調べてみました。調べた結果、頑張れば色々できる事が分かりましたので備忘録として残しておきます(やるとは言わない)。
ats対応のテストhttps://t.co/GbTYu5UXQQ
— Ken1 (@ken1shogi) 2017年2月14日「Twitterカード」という機能があり、Webサイト側にTwitter用のmeta情報を設定することでアイキャッチの画像や説明文などの情報を表示することができます。詳しくは下記のサイトを参考にしてください。
【2018年版】Twitterカードとは?使い方と設定方法まとめ
https://saruwakakun.com/html-css/reference/twitter-card
画像や説明文だけでなくブログパーツのような事もできるらしいです。これを応用すればTwitter上で棋譜を再生することができます。YoutubeではTwitter上で動画を再生できるのでそれと同じ理屈でしょうか?ティラノスクリプトというゲームエンジンは、「Twitterカード」を使うことでTwitter上でゲームをプレイすることができます。すごい!!
タイムラインプレイヤーのテスト。見れるかな? #ティラノスクリプトhttps://t.co/q2dMkja0gG
— シケモクMK🦖 (@shikemokumk) 2018年3月12日
-
囲碁アプリの開発日記(20) 調べたことまとめ2018.03.11 Sunday
-
割り込み作業が終わって少し余裕が出てきました。囲碁開発にフルコミット!というわけには行きませんが、少しずつ進めていければと思います。
■前回までの成果
・Pixi.jsを使ってWebアプリで基本的なGUIが作れるようになった
・囲碁の盤面や説明GUIを作成した
・囲碁入門のコンテンツを一部作成した
・C#で作った囲碁AIをC++に途中まで移植した
■今後やる事
・囲碁AIの移植を終わらせる
・WebAssemblyを使ってWeb上でコンピュータと対局できるようにする
・開発者の囲碁棋力アップ
・囲碁入門のコンテンツを拡充する
・ディープラーニングを勉強して囲碁AIに組み込む
・その他、便利な機能を組み込む
ディープラーニングは今まで勉強したことがなく一番時間がかかりそうです。一応補足しておくと、ディープラーニングを使わなくても囲碁アプリを作る事自体はできます。ですが使った方が人間らしい手を打てるという話を聞いており、ぜひチャンレンジしてみたいです。単純に性能が良くて強いAIができるというのもあります。強いAIがあるとヒント機能など便利な機能として生かす事ができます。
今は参考書を読んで基本を勉強しています。新しいPCを買ったらtensorflowをインストールしてサンプルプログラムを動かしてみます。囲碁プログラムについては、過去の記事でも紹介したとおり「AQ」開発者である山口さんが公開された「Pyaq」を読んで勉強します。
懸案としては、ディープラーニングで学習したモデルをどうやってWeb(将来的にはAndroid、iOS)で動かせばよいか?というのがあります。tensorflowはC++のAPIをサポートしていますが、そのAPIを使うためのセットアップが大変そうです。ライブラリが機能豊富すぎて容量が大きくなるのも心配です。今のところ、tiny-dnn(https://github.com/tiny-dnn/tiny-dnnというC++のヘッダだけで使えるフレームワークを使うことで解決できるのではないかと考えています。日本の個人の方が開発されているフレームワークだそうです!!ただし、tensorflowのモデルをインポートする機能がないので(caffeからのインポートはあるのですが)、そこを自分で何とかする必要があります。C++の文法も再勉強しないとダメですね。C++14とか全く分からないです英語の勉強も(以下略)。
-
棋譜掲示板に自動再生機能を追加しました2018.03.09 Friday
-
勝ち切れ将棋掲示板(http://ken1shogi.sakura.ne.jp/bbs/)やTwitterに投稿した棋譜掲示板(例:http://ken1shogi.sakura.ne.jp/bbs/board?key=619737)の棋譜を自動再生するボタンを追加しました。今までは1手毎にタップするか手数をリストから直接選択する形式だったので、今回の機能追加により多少便利になったかと思います。再生速度は1秒から10秒の間で選択可能です(デフォルト3秒)。
アプリで自動再生の機能はありませんが「<」「>」ボタンを長押しする事で連続再生が可能です。こちらもぜひご活用くださいね。
-
将皇(iOS)ver5.1と入門編(iOS)ver2.5を公開しました2018.03.08 Thursday
-
将皇(iOS)と入門編(iOS)をバージョンアップしました。変更点は以下の通りです。
・実戦詰将棋の「解答モード」機能を追加
・対局の上限手数を999手に拡張
・実戦詰将棋で詰まない局面の時に表示するメッセージのON/OFFを切り替え可能にiOS版にもようやく「解答モード」を実装しました。「解答モード」は詰将棋をプレイしたときに「模範解答は王が逃げる手だけど、別の手ならどうなったんだろう?」とか「模範解答だと〇〇だけど、××でも詰むよね?」といった検討をするために有用な機能です。ぜひご活用ください。
あらかじめ言い訳させていただきますと、模範解答は最短ではない手順を解答として出す場合があります
対応しない理由としては、手間がかかる(70%)、厳密に最短手順を探すと処理時間がかかるから変更したくない(15%)、時々最短手順と一致しない方が自分で考えるきっかけになるし、Twitterでつぶやいてもらえるからトータルでプラスなんじゃないの?(15%)くらいの割合です。
-
将皇の棋力について2018.03.08 Thursday
-
そんな細かい事は気にしなくていいんじゃない?
というのが作者の思いなんですが、意外と気にされるユーザが多いようです。Yahoo掲示板でも定期的に質問があります。昔メールで棋力について問い合わせを受けた時は、返信をしても戻ってきてしまい放置したら全く同じ文面で数か月問い合わせを受け続けるという軽い恐怖体験もしました。それはどうでも良いですが。
■前提その1
レベルが同じでもプラットホームによって強さは変化します。具体的にいうとスマホ版よりWeb版(Flash版)の方が強い傾向にあります。これは使っているメモリの量や計算速度の違い(スマホよりPCの方が速い)によるものです。Web版の方が定跡データを豊富に使っているため、人間にとっては強いと感じる要素になっているかもしれません。また、同じスマホでも性能差はあります。
■前提その2
1~2局指しただけで判断するのは正確ではありません。将皇にも力を発揮できる局面やそうでない局面があります。ありますというか、その差が激しいようです。また、同じ戦法ばかり使用していると棋譜も似たようなものになるためブレが発生する要因になります。
という事を踏まえたうえで、将皇の棋力について考えてみましょう。過去に将皇(Flash版)を将棋倶楽部24に参戦させてもらった事があり、そのときのレートは以下のようになりました。
LV0:214(14級)
LV1:451(11級)
LV2:記録なし
LV3:899(7級)
LV4:記録なし
LV5:1701(2段) ※R200差のみ対戦受付
LV6:1934(3段)※R200差のみ対戦受付
これが現状で提示できる棋力の目安です。将棋倶楽部24の基準は他のアプリや道場と比較して厳しめなので適宜読み替えて頂ければと思います。
※補足
将棋倶楽部24のレートは対戦相手をどう選ぶかで数値が大きく変動します。当初、将皇LV6を対戦相手の条件なしで戦わせていたところ3級くらいで推移していました。しかし、同レート帯の人には8割以上勝ち越しているという不可解な状態でした。詳しく調べると、極端にレートに差がある(低い)人から繰り返し対局を受けてそれらの相手に9割勝っても残りの1割でレートがゴッソリ奪われて上に行けないという結果になっていました。逆にレートが高い人から挑戦を受ける事はほとんどない…。これでは不公平と思い、レート差200以上の相手からの対局を拒否するように設定を変えたところ3段まで上昇しました。棋力を絶対的な基準で判断するのがそもそも難しいと考えた方が良さそうですね。
-
雑記2018.03.07 Wednesday
-
既存アプリのメンテ作業がようやく一息つきました。現況や頭の中で考えている事を整理するために色々書いていきます。
■Javaアプレット(JRE)のサポートを継続するかどうか
先日、Javaアプレットで使用している署名の有効期限が切れる旨のメールが届きました。署名にかかる費用は年間6万円。結構かかります。しかも昨年のバージョンアップでJavaアプレットを使用しないバージョンをリリースしており、Internet Explorer(IE)以外のブラウザではJavaアプレットは不要になっています。わざわざ古いIEのためだけに年間6万払ってサポートを継続したくないのが私の本音ですが…、なんと私のサイト利用者はIE使用率が未だに5割を超えています!!やはりサポート継続した方がよいのでしょうか?いずれにせよ2020年末でFlashが使えなくなるため、IEサポートはそこが限界なのですが。
■将皇に解析モード?
駒損や詰みの見逃しレベルの指摘を可読性のある表現でサポートしてくれる解析モードを作りたいと時々考えています。入門リバーシで作ったようなヤツです。ガチ勢の使用に耐えうる評価値もできればいいなと少し思います。ただし、しっかりしたものを作ろうとすると解析プログラムはサーバサイドで動かさないといけないし、今のユーザ数に耐えうるシステムを準備するとお金がどれだけかかるやマネタイズをどうするか等考えることが多いです。解析モードを1回使うのに動画を視聴するとか受け入れられるんでしょうか?それでも黒字にならないかもしれません。将棋プログラムをはじめから作り直さないといけないからすぐには無理ですが。
書きながら思いついた!将皇入門編の方で実装するのは面白いかもしれません。あちらのAIに負ける人はかなりの悪手を指しているわけだから、簡単なものでもニーズにマッチしたものが作れるかもしれない。
■将皇(HTML5版)
Javaの方でも少し書きましたが、2020年末でFlashが使えなくなります。すなわち将皇(Flash版)が動かなくなります。あと2年半の間に将皇(HTML5版)を作らないといけないわけです。幸いにも囲碁アプリを作る過程でHTML5のGUIを作る目途は経ちましたが、モチベーションがちょっと…な感じです。手を動かせばできると分かっているといまいちモチベーションも湧きません。このままずるずると時間がたつとヤバい気がします。
■囲碁アプリ
途中で止まってしまった開発を少しずつでも再開させたいです。頭の中では完成系が見えており、あとはそれを形にしていく作業となります。DeepLearningは全くの初心者なので一から勉強しないといけません。とか思っていたら、囲碁プログラム「AQ」開発者である山口さんが、DeepLearningを使った囲碁プログラムの教材「Pyaq」を公開されました!!これは大変ありがたいです。動くものがあれば理解度も断然違ってきますので本当に助かります。
Pyaq
DeepLearningを学ぶにはGPU付きのマシンも必要です。デスクトップPCは置く場所がないのでNG。最終的に動かすプログラムはクラウド上だとしてもテストはノートPCでやりたいと思い色々調べました。現状では4月に発売するSurfaceBook2の15インチが一番良いと思っています。SSD 1TBタイプで税込み40万。ちょっと高い。
https://www.microsoft.com/ja-jp/surface/devices/surface-book-2/tech-specs
< 前のページ | 全 [1] ページ中 [1] ページを表示しています。 | 次のページ > |