研究概要

高度プログラミング研究室 (松崎研究室) では,「プログラミング」をより簡単に,より広く利用できるようにする研究に取り組んでいます.そのためには,職人的な技に頼ったアドホックな方法ではなく,数理的な理論に支えられた系統的な方法が必要になります.そのような考え方のもと,具体的には,
 ・ 並列プログラミング
 ・ ゲーム・パズルプログラミング
を主なターゲットにしています.


並列プログラミング

マルチコアCPUが普及し,また複数のPCをネットワークでつないだPCクラスタも構築が簡単になってきました.しかし,そのような高性能な計算機の性能を引き出すには,高度な並列プログラミングが必要です.並列計算のための計算パターン (= 並列スケルトン) をうまく使って,「簡単に」「正しい」「性能のよい」並列プログラムが作れるようにすることが目標です.

並列計算   1つの処理を複数の計算機/プロセッサ/コアに分散して割り当て,全体の処理速度・処理性能を向上させる技術です.逐次計算に加えて,資源配置・プロセッサ間通信・同期などを考える必要があります.

スケルトン並列プログラミング  並列処理における頻出計算パターン (=並列スケルトン) をライブラリとして実装しておき,それを組み合わせて並列プログラムを作成していく方法です.

MapReduce   Google によって提案された大規模データ処理のための並列計算パターンおよびその実装のことです.そのオープンソース実装である Hadoop MapReduce が広く利用されています.

Apache Spark   PCクラスタ上でインメモリデータ処理を実現するための枠組みのひとつです.SQL,機械学習,グラフ処理など,さまざまなアプリケーションフレームワークがApache Spark上に実現されており,今後重要になると期待されます.


ゲーム・パズルプログラミング

この10年で,将棋や囲碁に対するコンピュータプレイヤは大きな発展を遂げてきました.ボナンザ (将棋) やAlphaGo (囲碁) といった名前を聞いたことがあるでしょう.その発展には機械学習技術の応用が大きく関わっています.本研究室では,さまざまなゲームに対して機械学習技術を応用することで,ゲームそのもの,および,機械学習技術の向上を目指しています.

二人零和確定完全情報ゲーム  ゲームの分類のひとつで,プレイヤが2人 (二人) ,片方が勝つともう一方が負け (零和),プレイヤの行動に確率的要素がなく (確定),盤面の情報が全て見える (完全情報) というゲームのことです.オセロ・チェス・将棋・囲碁など多くのゲームがこの分類に属します.

大貧民  多人数零和不完全情報ゲームに属すゲームのひとつです.毎年,電気通信大学においてコンピュータ大貧民大会が開かれ,研究も進んでいます.本研究室でも,いくつかの成果を発表してきました.

2048  一人確率的ゲームのひとつで,世界中で広くプレイされたゲームです.コンピュータプレイヤはすでに人間プレイヤを大きく越える強さになっていますが,さらなる向上のため集中して研究しています.