nounai.output(spaghetiThinking);

趣味と実益を兼ねて将棋プログラム(研究ツールなど)を作ってみたいと思う私の試行錯誤とか勉強したことを綴ってゆく予定です。 主目的はプログラミングの経験値稼ぎですが、コンピュータ将棋の製作も目指してみたいとも考えています。

はじめに。

このブログについて。

FC2でもブログをやっているのですが、

元々はそちらのネタです。

ちなみにこちら

ただ、

ブログテーマを1つに絞った方が、

・カテゴリが分類しやすく自分としてもわかりやすいこと、

・記録としての趣旨がはっきりして、備忘録としても振り返りやすいこと、

こういう理由から、将棋ソフトに関する部分を分離することにしました。

要は自分の勉強のために立ち上げたブログです。

[取り扱うトピック]

基本的には自分の考えたことや勉強したことのアウトプットです。備忘録のためであったり、解説視点を持って記事を書くことで頭の中を整理、洗練させたいという所です。

・ソフトウェアの設計などに関して、考えたことのアウトプット。

デザインパターンについて、自分の現時点での理解での解説。自分が作ろうとしているものに対して、そのパターンがどう適用できそうか、といったことも(ネタがあれば)書きます。

[投稿スタンス]

的外れな考察をしていたり、

説明範囲が充分でなかったり、

理解が間違っていたり、

そうしたことも当然あろうかと思います。

が、私にとっては記事におこすまでの過程を踏むことも重要な勉強であると考えますので、まずβ版でいいから投稿してみて、後日追記なり修正なりして記事の質を高めていく、というスタンスでいきます。そういうことですから内容の正確さや的確さも保証できません。

修正などを行った際は、そのログを記事の最後に簡単に記すことにします。

[目指すもの]

どういうものを目指すか、という所ですが

なるべく簡単に、シンプルな規模、機能から設計(・実装)していきます。

AIはまた別な勉強になるので考えません。

対戦ゲームでプレイヤーを両方「人」にしちゃった時のような感じを目指します。

MVCアーキテクチャに従った設計を行います。

GUIのプログラミングはあまり重視せず、UI部分はViewとして分離・独立だけしっかりしておき、はじめは簡素なCUIでの実装を考えます。

例えば

> 先手の番です -> 26hu

> 1: 2六歩

> (現在の局面)

> 後手の番です -> 34hu

> 2: 3四歩

> (現在の局面)

とまあ、このような感じです。

入出力が質素なだけで本質的な部分はこれとほぼ変わりません。

GUIではマウスイベントの処理だとか、CUIにない部分もありますが、

結局のところ注力したいのは「(想定範囲内での)機能拡張・変更が容易な設計を、オブジェクト指向に基づいて行う」ってことなので、

こういうAPIリファレンス見ながらするような話は設計のかなり後半、詳細の話な気がします。

プレイヤーが選択可能であること、

持ち時間の設定が(初期は無制限のみで良いけど)柔軟に定義できること

などといった、将棋ソフトとして将来的に組み込みたい部分は簡単に追加できるようにしたいですね。

こうして書いてみると、

要はModel部分の設計に力を入れたい、という話になります。

UI設計を低く見ているわけではないんですけどね。

まぁざっくりですが目指す方向はこのような感じです。

勉強成果や脳内のアウトプットをこれからつらつらと書いていければと思います。

[修正Log]

・2012.6.16.Sat

 [取り扱うトピック][投稿スタンス]について追記。