# Mobility
Mobility は、
駒がどれだけ自由に動けるかを評価する項目である。
合法手の数そのものを数える場合もあれば、
有効な利きや活動範囲として評価する場合もある。
## 概要
駒の mobility が高い局面では、
- 攻めの選択肢が多い
- 守りへ回る余裕がある
- 相手の王や弱点へ圧力をかけやすい
といった利点がある。
そのため評価関数では、
各駒について「どれだけ働いているか」を数値化することが多い。
## どのように数えるか
最も単純には、
各駒の移動可能先の数に応じて点数を与える。
```cpp
int evaluateMobility(const Position& pos, Color us) {
int score = 0;
for (Piece pc : pos.pieces(us)) {
Bitboard attacks = legalTargets(pos, pc);
score += mobilityWeight(pc.type()) * popcount(attacks);
}
return score;
}
```
ただし実戦的には、
- 単なる利き数
- 安全な移動先
- 相手陣への侵入度
- 王周辺への圧力
を分けて扱うことが多い。
## 将棋AIでの位置づけ
将棋では、
打ち駒や成りがあるため、
チェスの mobility をそのまま持ち込むだけでは不十分である。
それでも、
- 飛車や角の通り
- 金銀の窮屈さ
- 相手陣での成駒の活動性
は強さに直結しやすい。
そのため mobility は、
[King Safety](/shogi/shogiwiki/search/king-safety/) や
[Piece-Square Tables](/shogi/shogiwiki/search/piece-square-tables/) と並んで、
手作り評価の基本要素のひとつとみなせる。
## 注意点
- 利きが多いだけで良い手とは限らない
- 王手されている側の mobility は特殊で、単純評価しづらい
- 打ち駒を含む将棋では「盤上の可動性」だけでは足りない
## 関連項目
- [評価関数](/shogi/shogiwiki/search/evaluation-function/)
- [King Safety](/shogi/shogiwiki/search/king-safety/)
- [Piece-Square Tables](/shogi/shogiwiki/search/piece-square-tables/)
- [パターン認識](/shogi/shogiwiki/search/pattern-recognition/)
## 参考にしたホームページ
- [Chessprogramming Wiki: Mobility](https://www.chessprogramming.org/Mobility)
- [Chessprogramming Wiki: Evaluation Overlap](https://www.chessprogramming.org/Evaluation_Overlap)
- [Chessprogramming Wiki: Evaluation](https://www.chessprogramming.org/Evaluation)