飛行機に乗る際に発行されるチケット、つまり搭乗券。
この搭乗券には大抵、バーコードが記載されている。
そして、そのバーコードには色んな情報、例えば氏名やマイル口座番号、行き先や出発日などの情報も含まれるらしい。
詳しくはWebをチェック↓
飛行機の搭乗券に印刷されたバーコードを読み取ると個人情報など意外にも多くの情報が書かれていた – GIGAZINE
さて。
ちょっと気になったので、実際に自分の搭乗券のバーコードを読み取って、どんな情報が入っているか確認してみた。
そのメモにて。
搭乗券のバーコード(PDF417/QRコード)
ANAの国際線の搭乗券は、便名や座席番号の他に、下記のようなバーコードが記載されている。
※https://www.ana.co.jp/amc/reference/tameru/flightmile/int/retro.html
※これはあくまでサンプル画像です
このバーコードのフォーマットは、「PDF417」。
世界的によく使われている2次元バーコードの一種。
PDF417|アイニックス株式会社
国内線チケット(ANA)の方はどうだろうか?
https://www.ana.co.jp/domestic/promotions/airport_renewal/checkin/
※これはあくまでサンプル画像です
こっちのバーコードは、「QRコード」。
日本のデンソーが作った2次元バーコードの仕様である。
QRコード – Wikipedia
「PDF417」であれ、「QRコード」であれ、この中には情報が入っているんだな。
そして最近では、スマホアプリのバーコードリーダーで簡単に内容を読み取ることができる。
アプリは「PDF417」とかで検索すれば色々見つかる。
自分が今回使ったのは、「Scandit」というアプリ。
iPhone – Scandit Barcode Scanner
Android – Scandit Barcode Scanner Demo
こうしたアプリで実際にバーコードを読み取ってみると、以下のようなアルファベットと数字の羅列がでてきた。
M 1 TANAKA/TARO E XXXXXX HND SIN NH 0843 214 Y 010K 0031 1 XX >5 XX X 7214 B XX NH NH XXXXXXXXXX Y * X X XX XXXXXXXXXX
※サンプル文字列です
この時点で、名前などが見て取れるんだが、他の文字列にはどんな情報が入っているのか?
データフォーマットが分からないと、意味が分からないが・・・。
BCBPのデータフォーマット
こうした「搭乗券のバーコード」のデータ・フォーマットは、BCBP(BAR CODED BOARDING PASS)として規定されていた。
バーコード・ボーディングパス=BCBP。
仕様書は、IATAからpdfでゲット可能。
BAR CODED BOARDING PASS(BCBP) IMPLEMENTATION GUIDE
上記のpdfでフォーマットについての記載があるのは「4.2.2. Encoding one flight leg」の項。
注意点として、BCBPのフォーマットにはバージョンがある。
上記の仕様書は、ver5のもの。
BCBPの文字列の中にある「>」の後に続く文字がバージョン番号を示している。
M 1 TANAKA/TARO E XXXXXX HND SIN NH 0843 214 Y 010K 0031 1 XX >5 XX X 7214 B XX NH NH XXXXXXXXXX Y * X X XX XXXXXXXXXX
※サンプル文字列です
ANAのチケットのバージョン番号をみたら「>5」(ver5)とあったので、↑の仕様書でそのまま中身を把握できそう。
ということで、最近使った自分のチケット(ANA国際線/国内線)から、データの詳細を見てみる。
実際の搭乗券から読み取ってみたデータ
以下は、自分が今年になってから乗った国際線(PDF417)/国内線(QRコード)の搭乗券から読み取ったデータ。
(両方ともver5であった)
便名や名前などは、適当に文字を修正している。
そのほか「X」は、適当な修正候補がないので、とりあえず伏せ字とした箇所。
「-」は、「半角空白文字」が入っていたか、値が入ってなかった箇所。
項目 | 文字数 | 実際のチケット | 意味 |
---|---|---|---|
Format Code | 1 | M | [s]ingle leg か [m]ultiple legsか |
Number of Legs Encoded | 1 | 1 | 記載されるレグ数 |
Passenger Name | 20 | TANAKA/TARO | 氏名 |
Electronic Ticket Indicator | 1 | E | [E]チケットを意味する |
Operating carrier PNR Code | 7 | XXXXXX | PNRコード(予約番号) |
From City Airport Code | 3 | HND | 出発地の空港コード |
To City Airport Code | 3 | SIN | 目的地の空港コード |
Operating carrier Designator | 3 | NH | 運行会社(NH=ANA) |
Flight Number | 5 | 0843 | 便名 |
Date of Flight (Julian Date) | 3 | 214 | 出発日(ユリウス通日) |
Compartment Code | 1 | Y | 座席クラス |
Seat Number | 4 | 010K | 座席番号 |
Check-in Sequence Number | 5 | 0031 | チェックイン番号(連番) |
Passenger Status | 1 | 1 | 乗客ステータス(定義不明) |
Field Size of variable size field (Conditional + Airline item 4) |
2 | XX | 以降のデータサイズ |
Beginning of version number | 1 | > | バージョン番号開始文字 |
Version Number | 1 | 5 | BCBPバージョン |
Field Size of following structured message – unique |
2 | XX | 以降のデータサイズ |
Passenger Description | 1 | X | 乗客についての備考番号? |
Source of check-in | 1 | – | チェックイン場所 |
Source of Boarding Pass Issuance |
1 | – | 搭乗券の発行場所 |
Date of Issue of Boarding Pass (Julian Date) |
4 | 7214 | 搭乗券の発行日(ユリウス通日) |
Document Type | 1 | B | [B]ording Pass? |
Airline Designator of boarding pass issuer |
3 | XX | 搭乗券の発行会社? |
Baggage Tag Licence Plate Number (s) |
13 | – | バゲージタグの番号 |
1st Non-Consecutive Baggage Tag Licensce Plate Number |
13 | – | 1つ目の荷物の番号 |
2nd Non-Consecutive Baggage Tag Licensce Plate Number |
13 | – | 2つ目の荷物の番号 |
Field Size of following structured message – repeated |
2 | – | 以降のデータサイズ |
Airline Numeric Code | 3 | – | 航空会社番号 |
Document Form/ Serial Number |
10 | – | 文書のシリアル番号 |
Selectee indicator | 1 | – | なんかインジケータ |
International Documentation Verification |
1 | – | なんか証明的な |
Marketing carrier designator |
3 | NH | 販売元 |
Frequent Flyer Airline Designator | 3 | NH | FFP会社 |
Frequent Flyer Number | 16 | XXXXXXXXXX | マイル口座番号 |
ID/AD Indicator | 1 | – | なんかインジケータ |
Free Baggage Allow ance | 3 | – | 無料荷物の数 |
Fast Track | 1 | Y | Fast Trackが使えるか? |
For individual airline use | Var | X | 以降、セキュリティーデータ |
Beginning of Security Data | 1 | X | – |
Type of Security Data | 1 | X | – |
Length of Security Data | 2 | XX | – |
Security Data | 100 | XXXXXXXXXX | – |
※「文字数」の定義通り、半角空白で埋めてあったりする
※ユリウス通日は1/1からの通算日。例えば「7214」の場合、201[7]年の「214」日目という意味。3桁の場合は「年」なしで通算日のみ。
※データサイズを示す項などの数字は16進数で、例えば「D6」=「214」
※途中でデータシーケンスについていけず、放棄した箇所もあり
航空会社によって、使っている項目と使ってない項目があるっぽい。
ブッキングクラスとか書いてあるのかな?と思ったんだが、そうでもないようだった。
バゲージタグの番号が空白だったのは、なんでかな。
オンラインチェックインとかすると、荷物預ける前なので空白になるとかあるんだろうか。
ちょっと気になるのは、「Passenger Status」(乗客ステータス)かな。
どういう意味があるのか、ちょっと分からなかった。
「Fast Track」あたりも定義不明。
「Y」だと、ダメってことなのか?
どうなんだろう。
ちょっと国際線・国内線の1チケットずつしか確認してないので、定義が分かんないところがちょこちょこあった。
そんな感じ。