# Material
Material は、
盤上と持ち駒を含めて、どちらがどれだけ駒の価値を持っているかを表す評価項目である。
[評価関数](/shogi/shogiwiki/search/evaluation-function/)の中では最も基本的な要素であり、
ほぼすべての将棋AIが何らかの形で material を使う。
## 概要
最も単純には、
各駒へ固定の点数を与えて合計する。
たとえば将棋では、
- 歩
- 香
- 桂
- 銀
- 金
- 角
- 飛
にそれぞれ重みを置き、
成駒や持ち駒は別の重みで扱う。
この差分が material balance であり、
序盤から終盤まで一貫して強い影響を持つ。
## 実装例
```cpp
int pieceValue(PieceType pt) {
switch (pt) {
case PAWN: return 100;
case LANCE: return 300;
case KNIGHT: return 350;
case SILVER: return 500;
case GOLD: return 600;
case BISHOP: return 800;
case ROOK: return 1000;
default: return 0;
}
}
int evaluateMaterial(const Position& pos) {
int score = 0;
for (Piece pc : pos.pieces(BLACK))
score += pieceValue(pc.type());
for (Piece pc : pos.pieces(WHITE))
score -= pieceValue(pc.type());
score += handValue(pos.hand(BLACK));
score -= handValue(pos.hand(WHITE));
return score;
}
```
実戦的には、
- 成駒の価値
- 駒組み合わせの相性
- 終盤での価値変化
まで考えることが多い。
## 将棋AIでの位置づけ
将棋では持ち駒があるため、
material はチェス以上に重要な意味を持つ。
たとえば、
- 角銀交換
- 飛車と金銀の交換
- 持ち駒の歩や金の価値
は単純な固定値だけでは測りきれない。
そのため現代の将棋AIでは、
material を基礎にしつつ
[King Safety](/shogi/shogiwiki/search/king-safety/),
[Mobility](/shogi/shogiwiki/search/mobility/),
[NNUE](/shogi/shogiwiki/search/nnue/)
などで補正する。
## 注意点
- material が良くても王が危険なら負けうる
- 持ち駒の価値は局面依存が大きい
- 単純な固定値だけでは交換の良し悪しを表しきれない
## 関連項目
- [評価関数](/shogi/shogiwiki/search/evaluation-function/)
- [Tapered Eval](/shogi/shogiwiki/search/tapered-eval/)
- [King Safety](/shogi/shogiwiki/search/king-safety/)
- [Mobility](/shogi/shogiwiki/search/mobility/)
## 参考にしたホームページ
- [Chessprogramming Wiki: Material](https://www.chessprogramming.org/Material)
- [www.gnu.org: Evaluation Function.Html](https://www.gnu.org/software/chess/manual/html_node/Evaluation-function.html)
- [Chessprogramming Wiki: Evaluation Function Draft](https://www.chessprogramming.org/Evaluation_Function_Draft)