広告
Twitter
Calendar
1234567
891011121314
15161718192021
22232425262728
2930     
<< April 2018 >>
New Entries
Recent Comment
Category
Archives
囲碁アプリの開発日記(21) 亀の歩みで

3か月ぶりの開発日記更新です。ちょっと気を抜くとあっという間に日が過ぎてしまって焦ります。日記を書いていなかっただけでインプット作業は少し行っていたので今回はそれを紹介していきますね。

 

■DeepLearning関係の勉強

DeepLearinngを使うと人間らしい手を打つという囲碁関係者の話を聞いていたので、どうせ作るならスキルアップも兼ねて勉強することにしました。本当に一からの勉強なのでどこから手を付ければよいか分からず悪戦苦闘しています。何冊か買った入門本の中ではこれが一番参考になりました。

 

Google Cloud Platformではじめる機械学習と深層学習

 

DeepLearningのサンプルプログラムを動かすには様々なソフトウェアのインストール必要です。それだけで挫折してしまいます。この本ではGoogle Cloud Platformを使う事で面倒な作業を減らしています。また、理論的な部分も初歩から丁寧に書いてあり何となく分かった気分になりました楽しい

 

次は囲碁プログラムでどのようにDeepLearningを使っているかの勉強です。そのものずばりな本があります。

 

最強囲碁AI アルファ碁 解体新書

 

1年前にこの本を買ったときは、内容が頭に入らずお蔵入りにしていました。DeepLearningの概要を理解してから読む事でようやく内容を理解できました。何となく理解したぐらいのレベルですが・・。余談ですが、この本の著者である大槻和史さんはコンピュータ将棋選手権で準優勝された方です。凄いと思うと同時に知的レベルの差を感じて若干凹みますねくもり

 

…といった感じです。実際にDeepLeariningを使った囲碁AIを作るにはまだ勉強が足りないと思います。ですが、いい加減に飽きてきましたので、途中でストップした囲碁アプリのUIの開発とAI(DeepLearning使わない版)の移植作業を再開する予定です。新しいオフィスを借りたのでそこで黙々と開発しようかなと楽しいブラウザで遊べる最低限の囲碁アプリ公開を目標に頑張ってみます。

 

posted by: ken1-fund | 囲碁 | 17:33 | comments(0) | trackbacks(0) |-
面倒くさい作業が増えた

将皇の問題配信で使っている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か月くらいかけて少しずつ進めていこうと今は考えていますが、それにしても大幅なモチベダウンです。

 

posted by: ken1-fund | 将棋(色々) | 12:20 | comments(0) | trackbacks(0) |-
Twitterカードについて調べた事の備忘録

将皇には対局した棋譜をツイートする機能がありますが、現状はURLの文字情報のみで見栄えがよくありません。Google PlayやApp StoreのURLを貼った場合はアプリのアイコンや説明文が表示されたりして格好良いですよね?あれと同じことができないか調べてみました。調べた結果、頑張れば色々できる事が分かりましたので備忘録として残しておきます(やるとは言わない)。

 

「Twitterカード」という機能があり、Webサイト側にTwitter用のmeta情報を設定することでアイキャッチの画像や説明文などの情報を表示することができます。詳しくは下記のサイトを参考にしてください。

 

【2018年版】Twitterカードとは?使い方と設定方法まとめ

https://saruwakakun.com/html-css/reference/twitter-card

 

画像や説明文だけでなくブログパーツのような事もできるらしいです。これを応用すればTwitter上で棋譜を再生することができます。YoutubeではTwitter上で動画を再生できるのでそれと同じ理屈でしょうか?ティラノスクリプトというゲームエンジンは、「Twitterカード」を使うことでTwitter上でゲームをプレイすることができます。すごい!!

 

 

posted by: ken1-fund | 将棋(色々) | 18:14 | comments(0) | trackbacks(0) |-
囲碁アプリの開発日記(20) 調べたことまとめ

割り込み作業が終わって少し余裕が出てきました。囲碁開発にフルコミット!というわけには行きませんが、少しずつ進めていければと思います。

 

■前回までの成果

・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とか全く分からないです悲しい英語の勉強も(以下略)。

 

 

 

posted by: ken1-fund | 囲碁 | 17:41 | comments(1) | trackbacks(0) |-
棋譜掲示板に自動再生機能を追加しました

勝ち切れ将棋掲示板(http://ken1shogi.sakura.ne.jp/bbs/)やTwitterに投稿した棋譜掲示板(例:http://ken1shogi.sakura.ne.jp/bbs/board?key=619737)の棋譜を自動再生するボタンを追加しました。今までは1手毎にタップするか手数をリストから直接選択する形式だったので、今回の機能追加により多少便利になったかと思います。再生速度は1秒から10秒の間で選択可能です(デフォルト3秒)。

 

アプリで自動再生の機能はありませんが「<」「>」ボタンを長押しする事で連続再生が可能です。こちらもぜひご活用くださいね。

 

posted by: ken1-fund | 将皇(iOS) | 19:45 | comments(0) | trackbacks(0) |-