Sponsored links
0から始める入門囲碁アプリ
囲碁アプリを開発中です!
fe8787e9d6882315df7a2304a5dd86db.pngページへ移動
Twitter
Calendar
     12
3456789
10111213141516
17181920212223
24252627282930
<< April 2016 >>
New Entries
Recent Comment
Category
Archives
スポンサーサイト

一定期間更新がないため広告を表示しています

 

posted by: スポンサードリンク | - | | - | - |-
棋譜投稿画面の盤面を改善しました
棋譜投稿で使っている将棋の盤面について、以下の改善をしました。

・1文字と2文字駒を自由に選択できるようにしました
・成り駒を赤字に変更して見やすくしました
・盤数字の表示に対応しました

http://ken1shogi.sakura.ne.jp/bbs/

突貫工事だったので、何か問題があった場合は優しく教えて頂けると助かりますです。
明日は人間ドックなので対応遅れるかもしれませんが・・・。
 

posted by: ken1-fund | 将皇(Android) | 23:31 | comments(1) | trackbacks(0) |-
囲碁アプリの開発日記(4)
プレイアウト処理ができるところまで移植が完了したので性能を測定してみました。現状でギリギリぐらいの速度ですね。これ以上遅くなるとWebやスマホで動かしたときストレスを感じそうです。というか、これから遅くなりそうなら処理がガンガン増えていくので高速化しないと駄目みたいです。Visual Studioのパフォーマンスモニタでチェックしてみたところ、C#化で遅くなった箇所以外にもボトルネックがあるので結構大変かもしれません。ですが、完成前に最適化を考えても仕方がないので、まずは1局通してプレイができるようになるまでは、現状のまま進めていこうと思います。
 

posted by: ken1-fund | 囲碁 | 12:49 | comments(0) | trackbacks(0) |-
囲碁アプリの開発日記(3)
ソースコードの移植は50%程度完了しました。探索せずに打ってCOM同士で対戦させるところまでできました。完全ランダム打ちのCOMと3x3のパターンも使うCOMで対戦させてみところ、基本的には後者の方が勝っているようです。「ようです」と書いたのは、探索処理を作らないと地の判定処理が完成しないので、作者の拙い囲碁の知識で判断しないと分からないんですよね。早く探索処理を移植して自分で遊べるようにしたいです。

ひとつ懸念がありまして、今回の移植では保守性を考えて移植元のソースが最適化している箇所を見やすいコードに書き換えてるんですね。そのため性能が全然でないかもしれません。そうなったら最適化を色々と考えないといけないので進捗が大幅に遅れそうです。最適化はプログラミングの勉強になるし個人的には嫌いじゃないですが。

あと念のために補足しておきますと、UIは全然作っていないので移植が完了してからが本格的な開発スタートです。夏までにはWebで遊べるβ版ができればいいな〜くらいの感覚ですかね。
 

posted by: ken1-fund | 囲碁 | 18:03 | comments(1) | trackbacks(0) |-
囲碁アプリの開発日記(2)

ソースコードの移植は、5日作業して1/3程度進みました。CからC#への移植なのですが、C#はリバーシで一度使っただけで詳しくないのでイマイチはかどらないですね・・・。あとは移植元のコードがマクロを駆使してステップ数を減らしているので、移植後は意外と規模が大きくなりそうです。プログラムは大変だし、それ以上に入門用の説明を考えるのも大変だしで長期化する予感しかしないです。

初心者向けの説明原稿は、以下のページに少しずつ書き足していこうと思います。今は章立てを考えている段階です。作者の棋力向上がボトルネックになりそうです。
http://ken1shogi.sakura.ne.jp/Igo/memo/doc1.html

ちなみに今回の囲碁アプリですが、UnityのWebGL出力を使ってWebアプリとして公開しようと思います。まずは動くものを公開して、少しずつ改善していきたいです。
 

 

posted by: ken1-fund | 囲碁 | 23:53 | comments(0) | trackbacks(0) |-
囲碁アプリの開発日記(1)
4月から囲碁アプリの開発を始めました。とはいっても、AIを作る以前に囲碁をまともに打てる棋力もないので本当に1からのスタートです。備忘録代わりに色々書いていこうと思います。

まずは、プログラムを作る前にある程度の棋力がないと駄目かなと思い囲碁の勉強を始めました。入門本を買ったりスマホの囲碁アプリやWebで一通り学んでみました。
 
全然分からないし勝てないんですけど

やはり一筋縄ではいきませんね。しかし、初心者の気持ちが分かるこの時期は、アプリを開発するには一番良いタイミングなのかもしれません。先にアプリを開発して、その棋力にギリギリ勝てるAIを作って自分が強くなったらAIも強くするという開発スタイルの方が良いアプリが作れる気がしてきました。というわけで、囲碁の勉強はいったん中断orz

囲碁AIの方を先に作ろうと思い、参考になる情報をWEBから漁ってみました。山下さんの下記サイトが参考になると思います。

囲碁プログラムを作る人向けのリンク集
http://www.yss-aya.com/howtogo.html

囲碁AIは将棋AIと比べるとかなり難しい気がします(年のせいかも)。以前、モンテカルロ木探索の事を少し調べていた時に「人間らしい自然な弱さを実現するにはモンカルロ木じゃなくて、知識ベースの古いアルゴリズムを採用した方がよいのでは?」と少し思って、古い情報から調べたのですが、職人芸の雰囲気を感じてお腹いっぱいになりました。GNU GOのソースも長すぎて手に負えません(ライセンスがGPLだからどっちにしても使えませんが)。

「囲碁AIはワイには無理やったんや」と思い途方に暮れていたところ、ライセンスがMITのオープンソースを発見しました!しかもソースコードの記述が分かりやすく量も少ないです。これなら何とかなるかもしれません。

https://github.com/db3108/michi-c

まずは、このコードを理解してC#に移植する作業から始めてみます。1か月くらいで何とかしたいな〜。
 

posted by: ken1-fund | 囲碁 | 16:15 | comments(0) | trackbacks(0) |-
今後やる事について色々と考えてみる
久しぶりにリリース情報ではない普通の日記でも書いてみます。今後やりたい事とか、自分の頭を整理するための情報をだらだらと書いていくだけでまとまりのない長文になりそうです。暇な方だけ見てくださいね!

3月はGoogle Playのデベロッパーポリシー対応で忙しかったです。本来であれば、3月から新アプリの構想とかエンジニアとしてのスキルアップとか色々考えていきたかったのですが丸々1か月潰れてしまいました。とはいえ、私は数アプリ(Android:4)しか公開していないので楽は方だとは思うのですが・・・。数10個以上公開している開発者さんは一体どうされているのでしょうか?

まずは、アプリ関係で今後やりたい事を挙げてみました。

■入門者向け囲碁アプリの開発
■ちょっと特殊な囲碁アプリの開発
■入門者向け麻雀アプリの開発
■将皇のアルゴリズム強化
■アプリの国際化対応

結構ありますね・・。ちなみに、やらなくてはいけない事は書いていません(笑)。それぞれについてコメントしていきます!

■入門者向け囲碁アプリの開発
まずはこれを最優先で開発していきたいと考えています。スマホが普及しだしてから5年以上たちますが、「国内」の「コンピュータと対局」する「初心者向け」の囲碁アプリは非常に少ないと感じています。囲碁は将棋と並ぶ定番ボードゲームのはずなのに、Google Playの無料ゲームTOP500に1個も入っていません。世間一般のイメージより囲碁に興味を持つ人が少ないとか、スマホでやるには囲碁は向いていないとか色々理由はあると思いますが、しっかりしたものを1本作れば安定した需要が見込めると考えています。短期的には採算が合わないけど、超長期で考えると良い収益源になるかもしれない。そんな皮算用をしています。しかしながら、初心者向けの囲碁アプリを作るには囲碁そのものを勉強しないといけないですし、囲碁AIの開発も当然しないといけないわけなので年単位の開発期間が必要だと思います。

■ちょっと特殊な囲碁アプリの開発
もったいぶった書き方をしてしまいましたが、囲碁をベースにした乙女ゲーを作りたいなと(笑)。以前、囲碁アプリをヒットさせるにはどうすれば良いかブレストした時の案を知人に話したら凄く乗り気になってぜひ一緒にやりたいという話になりました(笑)。個人的には定番のボードゲームだけでなく、ゲームっぽいゲームを作りたいという目標があったので何とか形にしたいなと思います。採算度外視で色々挑戦してみたいです。まずは普通の囲碁アプリを完成させてからですけどね!

■入門者向け麻雀アプリの開発
麻雀アプリも定番アプリの一角としてリリースしたかったのですが、既存のアプリに勝てるポイントがなく無理かなと思い始めました。入門リバーシと同じような形でユーザのプレイ内容を分析する機能ができれば良いのですが、麻雀は運要素が強いゲームのため明確な好手・悪手を判断するのが難しく結果論になりがちです。私もルールを少し覚えてプレイしましたが、何となく勝ててしまうので敢えて勉強しようとは思いませんでした。麻雀は人と対戦して、その時々の勝ち負けを味わうのが醍醐味なんだと思います。

■将皇のアルゴリズム強化
1プログラマーとしてはこれを一番優先してやりたいです。将皇を最初から作り直して有段者でも戦えるようにしたり棋譜解説機能を付けたりしたいです。しかし、そういった機能は強いプレイヤー向けになりがちで母数が少なく収益的にはあまりプラスになりません。しかもアプリ向けに強いアルゴリズムを作ろうとすると、容量やメモリに制約が加わるので結局本当の意味で強いプログラムを作る事ができずモチベーションが低下してしまいます。サーバサイドでAIを動かせばいいんじゃないの?と思う方がいらっしゃるかもしれませんが、将皇のユーザ数でそれをやったら赤字ですよ。超赤字!!

■アプリの国際化対応
文化普及の一環として英語版を作りたいなと常々思っています。丸投げできるなら普通にお金を払ってお願いしたいですが、実際はプログラム側の修正も多いし外注って何かと手間がかかるんですよね。全く管理しないで仕事をお願いすると後々面倒臭い事になるのは良くある話で、将皇入門編の記事作成を依頼したときは散々待ったあげく「仕事を頼まれていた事を失念していました」という凄いイベントがありました(笑)。最終的には自分で記事を書いたのですが、自分で書いた方が好きにかける分納得のいく内容だったと思います。というわけで外注は信頼できる人を探すのが大変なのです。現状は、英語のできる知人に暇なときに作業してもらう依頼をしています。自分でも英語ができれば、ざっくりと訳してあとは他の人に修正してもらうとかできるんですけね・・・。
 

posted by: ken1-fund | その他 | 01:45 | comments(2) | trackbacks(0) |-