Portable Game Notation

Portable Game Notation(PGN)とは、コンピュータ上でチェスの棋譜を保存するためのファイルフォーマットの一つ。拡張子は".pgn"。
ASCII文字のみによって記述されるため、多くのチェスプログラムが対応しており、事実上の標準形式となっている。座標式をそのまま書いているので、人間が直接読み書きすることも容易である。
概要.
PGNには「インポート」と「エクスポート」の2種類のフォーマットがある。前者は人間が手で書くことを想定しており、したがって一定の表記の揺れが許される。後者はプログラムが生成するもので、出力したのがどのようなプログラムであれ、同じ内容の棋譜ならばバイト単位で厳密に一致しなければならない。また、PGNに対応したプログラムは、どちらも取り扱うことができなければならない。
記述内容は、指し手、タグ、コメントの三つに分けられる。
指し手.
実際の手を座標式で「手数、白の手、黒の手」の順で記述してゆく。改行は任意の位置に入れることができるが、1行は255バイト以下でなくてはならない。可読性のため、80バイトに抑えることが推奨されている。たとえば以下のようになる。
 1.e4 e5 2.Nf3 Nc6
 3.Bb5 {This opening is called Ruy Lopez.} a6
 4.Ba4
ただし、手数の数字は存在しなくても構わない(人間が読みやすくするために書く)。記録が黒の手から始まる場合は、白の手の代わりにピリオド3つを置く。
 4... Nf6
 5.O-O Be7
書式は一般的な座標式がそのまま採用される。キャスリング("O-O"や"O-O-O")、プロモーション(例えば"b8=Q")等もそのまま書く。妙手(指し手の後ろに"!")、チェック("+")、チェックメイト("#")等も書いて構わないが、一般的なソフトウェアには無視される。また、どちらかの勝利またはドローで試合が終了した場合、その結果が最終手の後に追記される。
 42.g4 Bd3
 43.Re6 1/2-1/2
タグ.
対局者の名前や駒の初期配置といった、対局についての情報を記録する部分である。以下のような内容になる。
 [Event "F/S Return Match"]
 [Site "Belgrade, Serbia JUG"]
全体が大カッコ([と])で囲まれ、その中にタグの名前と値が入る。タグの値は2重引用符(")で囲まれ、ISO/IEC 8859-1の文字によってのみ記述され、また制御文字や改行コードが入ってはならない。余計なスペースは無視される。エクスポートフォーマットの場合、以下に挙げた7つのタグが必須である。これらは先頭に置かれ、また順序もこの通りでなければならない。
基本的なタグ.
この7つのタグはSeven Tag Roster(STR)と呼ばれる。
プレーヤーに関するタグ.
黒についても同じタグがある。内容は同様なので省略する。
その他.
ソフトによってはこれ以外に独自のタグをつけることもある。
コメント.
任意の場所にコメントを挿入することができる。セミコロン(;)の後は改行するまでコメントとなる。中カッコで囲んだ部分({...})もコメントとなる。ネストは許されない。つまり、コメントの中にコメントを書くことはできない。
例.
以下は完全なPGNフォーマットの例を示す。
 [Event "F/S Return Match"]
 [Site "Belgrade, Serbia JUG"]
 [Date "1992.11.04"]
 [Round "29"]
 [White "Fischer, Robert J."]
 [Black "Spassky, Boris V."]
 [Result "1/2-1/2"]
 1.e4 e5 2.Nf3 Nc6 3.Bb5 {This opening is called Ruy Lopez.} a6 4.Ba4 Nf6
 5.O-O Be7 6.Re1 b5 7.Bb3 d6 8.c3 O-O 9. h3 Nb8 10.d4 Nbd7 11.c4 c6
 12.cxb5 axb5 13.Nc3 Bb7 14.Bg5 b4 15.Nb1 h6 16.Bh4 c5 17.dxe5 Nxe4
 18.Bxe7 Qxe7 19.exd6 Qf6 20.Nbd2 Nxd6 21.Nc4 Nxc4 22.Bxc4 Nb6 23.Ne5
 Rae8 24.Bxf7+ Rxf7 25.Nxf7 Rxe1+ 26.Qxe1 Kxf7 27.Qe3 Qg5 28.Qxg5 hxg5
 29.b3 Ke6 30.a3 Kd6 31.axb4 cxb4 32.Ra5 Nd5 33. f3 Bc8 34.Kf2 Bf5 35.Ra7
 g6 36.Ra6+ Kc5 37.Ke1 Nf4 38.g3 Nxh3 39.Kd2 Kb5 40.Rd6 Kc5 41.Ra6 Nf2
 42.g4 Bd3 43.Re6 1/2-1/2
変則チェス.
駒の名前がアルファベット1文字で表せる限り、変則チェスの棋譜もPGNフォーマットを使って記録することができる。しかし、対応していないソフトウェアも多い。
ファイルの拡張.
PGNでは駒を複数の字で表したり、棋譜をどこまで再生したかなどを記録することは出来ない。また文字コードがISO/IEC 8859-1と規定されているため、日本語を挿入したりすると、ソフトによってはファイルを開けなくなることがある。そのため一部のデータベースソフトなどでは、PGNの他にソフト独自のファイルを組み合わせることで、これらを実現している。