Regional RubyKaigi

松江Ruby会議02
( matsuerubykaigi02 )

参加登録

お知らせ

  • [2009/02/12] 懇親会の料金が3,000円で確定しました。
  • [2009/02/12] Rubyを利用したシステム開発の事例紹介のタイトルや概要を更新しました。
  • [2009/02/09] まことに勝手ながらプログラミングコンテストは延期します。それに伴い当日のプログラムを修正しました。ご確認の上、ご来場ください。
  • [2009/02/09] まだまだ持ち時間5分のLTを募集しております。詳しくは以下のプログラムのライトニングトークスをご確認ください。
  • [2009/02/09] 当日は10時からメイン会場すぐとなりの松江オープンソースラボを開場して、Ruby技術者との相談ができるようにしております。お時間のある方は午前中から会場にお越しください。
  • [2009/01/28] プログラミングコンテストで使うオセロのシステム側のソースコードを公開しました。 http://github.com/takaokouji/othello インストールや動作方法はのちほど説明します。
  • [2009/01/25] プログラミングコンテストの詳しい内容を本ページ下部に記述しました。2/1までにデモ用のサーバを用意しますので、今しばらくお待ちください。引き続き、プログラミングコンテストの参加者を募集していますので、よろしくお願いいたします。
  • [2009/01/18] 持ち時間5分のLTを募集いたします。詳しくは以下のプログラムのライトニングトークスをご確認ください。
  • [2009/01/18] プログラミングコンテストの参加者を募集します。プログラミングコンテストの詳しい内容は1月25日までに本ページで提供いたします。今しばらくお待ちください。

開催概要

  • テーマ:「競」 - Rubyに関するプログラミングと発表で参加者同士が競ってお互いを高める。
  • 開催日時: 2010年2月13日(土) 13:00〜18:00 (懇親会: 18:30〜20:30)
  • 開催場所: 松江テルサ 1F テルサホール(メイン会場、懇親会会場)、松江オープンソースラボ(サブ会場)
  • 主催:松江Ruby会議02実行委員会(Matsue.rb 、松江市、島根県、(財)しまね産業振興財団、島根大学、しまねオープンソースソフトウェア協議会)
  • 後援:日本Rubyの会
  • 動画による中継(USTREAM): http://www.ustream.tv/channel/matsuerubykaigi02
  • 公式タグ
    • ブログ:<strong>matsuerubykaigi02</strong>
    • Twitter:<strong>matrk02</strong>

当日は10時からメイン会場すぐとなりの松江オープンソースラボを開場して、Ruby技術者との相談ができるようにしております。お時間のある方は午前中から会場にお越しください。

プログラム

13:00〜13:15 開会

13:15〜13:45 基調講演

発表者

まつもとゆきひろ - Ruby開発者

13:45〜14:00 「まつもとさんに聞いてみよう(仮)」

概要

Ruby開発者のまつもとさんに、Rubyを使っていて気になったことや、Rubyの実装に関する分からないことを質問してみましょう。当日、気軽に質問していただけるように配慮します。また、事前に質問内容を matsue02 _at_ rubykaigi.org に送っていただければ、当日、司会からまつもとさんに質問いたします。

14:00〜14:10 休憩

14:10〜15:50 Rubyを利用したシステム開発の事例紹介

概要

各発表は15分の発表時間と10分の質疑応答を予定しています。

  • 「PHPからRubyへの変換ツール開発」
    • 発表者:若槻 等、川原伸也 - いずもトータルネット株式会社
    • 島根県の平成21年度 IT産業 新技術研究開発助成金を利用して、PHPからRubyへの変換ツールの研究/開発を行った。開発した変換ツールの利用範囲/方法/検証例/今後の課題を、テスト結果等の具体例を用いて発表する。
  • 「発達障害児支援における活用事例」
    • 発表者:縄手雅彦 - 島根大学
  • 「大学における情報共有とRuby on Railsの有効性」
    • 発表者:森 雅生 - 九州大学 大学評価情報室
    • 概要:九州大学ではウェブを利用した教員データベースを平成15年より運用しているが、平成19年春に入力インターフェースとしてRuby on Railsを採用し、システムの大幅な改修を行った。学内の情報担当教員が行つた企画と設計に基づき、実装を業者に発注し、開発手法としてはエクストリーム・プログラミングをとった。その経緯と現在の運用状況などを報告する。
    • 発表資料: 準備中
  • 「評価情報データベースシステム開発」
    • 発表者:井川 勉 - 株式会社エスティック
    • 概要:島根大学様の大学評価情報データベースシステムをRubyで開発中である。今回は本システムの構成、概要等について発表を行う。

15:50〜16:00 休憩

16:00〜16:50 プログラミングコンテストプログラミングコンテストは延期となりました。ご迷惑をおかけします。

16:00〜16:25 プログラミングコンテストの説明会 !NEW!

概要

来年度に予定しているRubyによるプログラミングコンテストに関する説明を行います。

16:25〜16:30 休憩

16:30〜16:50 Ruby関連書籍の紹介とプレゼント !NEW!

概要

松江在住の著者によるRuby関連書籍を紹介します。また、Rubyに関するクイズに答えると、その書籍をゲットできるプレゼント企画も行います。

16:50〜17:00 休憩

17:00〜17:45 ライトニングトークス(LT)

概要

持ち時間5分のLTを行います。それにともないLTの発表者を募集します。発表いただける方は以下のフォーマットで matsue02 _at_ rubykaigi.org までご連絡ください。当然、当日の飛び入り参加もOKです。

-----
氏名:
連絡先のメールアドレス:
プログラムに載せる名前(氏名と異なる場合):
タイトル:

17:45〜18:00 表彰式 / 閉会式

LTの表彰式を行います。そして、閉会式で本イベントは終了です。

18:00〜18:15 片付け

18:30〜20:30 懇親会

会費3,000円の懇親会を行います。懇親会はメイン会場の隣(松江テルサ1階のテルサホール)で行います。定員は60名ですが、人数が前後しても問題ないようにします。当日、受付にて懇親会の会費を集めさせていただきます。みなさま、ふるってご参加ください。


以下は 松江Ruby会議02で行う 来年度に行うプログラミングコンテストについてです。

プログラミングコンテスト in 松江Ruby会議02

「Rubyによるオセロの人工知能の戦い!頂点に立つRubyistは誰だ!!」

  • 日時:平成22年2月13日(土)16:00〜16:50
  • 場所:松江テルサ 1F テルサホール
  • 備考:当日の10:00から16:00まで、会場のすぐ隣にある松江オープンソースラボにてRuby技術者による本コンテストの説明を聞くことや一緒に本コンテストに向けたプログラミングを行うことができます。

概要

プログラミングコンテスト in 松江Ruby会議02は、Rubyで作成した人工知能同士をオセロで対戦させて競います。

オセロのシステム側のソースコードはgithubで公開しています。 http://github.com/takaokouji/othello

ルール

基本的に通常のオセロと同じルールです。ゲーム性を高めるために以下のルールを追加しています。2/1までにはデモ用サーバを用意して実際に試していただけるようにしますので、もうしばらくお待ちください。

  1. 盤のサイズは縦横が8×8よりも大きく、16×16または32×32とします。
  2. ゲーム全体に制限時間を設けます。例えば制限時間が10分の場合、ゲームを開始してから10分経過後に次の一手を打った時点でゲームが終了します。
  3. 次の手を打つまでの時間が決まっています。次の手を打つ直前に決められた1〜15秒までのランダムな時間(持ち時間)が与えられますので、その時間内に次の手を打ってください。時間内に次の手を打てなかった場合はパスしたものと見なします。また、すぐに次の手を打っても持ち時間が経過するまではそれが反映されません。持ち時間を有効に使ってどれだけ手を読むことができるかが勝負の決め手になります。

オセロの人工知能の作り方

オセロの人工知能はsolveメソッドに実装します。solveメソッドは1つの引数contextを取ります。


def solve(context)
  # ここにオセロの人工知能を実装する。
end

このsolveメソッドを実装したら、本コンテスト用のサーバに「def solve(context)」と最後の「end」を含むsolveメソッド全体をアップロードします。solveメソッド以外の部分(オセロのゲーム部分やsolveメソッドを管理する部分など)はこちらで用意します。

contextにはオセロの人工知能を実装するために必要な次の情報が格納されています。

pieces: 現在の版の状態を示す2次元の配列。pieces[2][8]が、左から3で上から9のマスの状態が格納されている。trueが格納されていれば自分の駒、falseであれば相手の駒、nilは何も置かれていないことを表す。

candidates: 自分の駒を配置できる位置(x、y)の配列。左から3、上から9に配置できる場合は[ [2,8] ]となる。左から6、上から12にも配置できるならば[ [2,8], [5, 11] ]となる。位置は0から始まることに注意する。


使用例
# とにかく最初の候補を次の手とする。
next_piece = context.candidates.first

left_sec: ゲーム全体の残り時間。単位は秒。


使用例
if context.left_sec < 15
  # 残りが15秒なので自分の駒が最大となる手を打つ
end

next_time: 持ち時間(次の手を打つまでの時間)


使用例
if context.next_time > Time.now
  # 次の手を打った後に、時間が余っていれば先を読む。
end

また、次に打つ手もcontextに設定します。

context.set_next_piece(x, y): 次に打つ手を設定する。


使用例
# 左から3、上から9のマスに次の手を打つ。
context.set_next_piece(2, 8)

なお、オセロの人工知能を作り易くするために次のメソッドを用意しています。よろしければお使いください。また、このようなメソッドがほしいというリクエストも受け付けています。matsue02 _at_ rubykaigi.org までメールにてご連絡ください。

context.count_changed_pieces(player, pieces, x, y): xとyの位置に一方の駒を配置したときに他方の駒が入れ替わる数を取得する。playerにtrueを設定すると自分、falseを設定すると相手の駒を配置した結果を取得できる。

context.changed_pieces(player, pieces, x, y): xとyの位置に一方の駒を配置したときに他方の駒が入れ替わる駒の位置(x,y)を配列で取得する。playerにtrueを設定すると自分、falseを設定すると相手の駒を配置した結果を取得できる。

context.next_candidates(player, pieces): 指定したプレイヤーが駒を配置できる位置(x、y)を配列で取得する。playerにtrueを設定すると自分、falseを設定すると相手のプレイヤーの情報が取得できる。

参加登録

お問い合わせ

松江Ruby会議02に関するお問い合わせは、matsue02 _at_ rubykaigi.orgまでメールにてご連絡ください。

Regional RubyKaigi