この記事の要点
• JAL アプリの DAU は約 320 万人、Face Express(顔認証搭乗)は羽田・成田・伊丹など主要 13 空港で展開
• バックエンドは AWS 基盤、AI チャットボット、Apple Wallet / Google Pay 連携を実装
• IATA NDC(New Distribution Capability)への対応が 2025 年から本格化、流通コスト削減が目的
• 個人情報保護法・改正電気通信事業法に基づく生体データ管理が運用の鍵
JAL アプリ DX の現状
日本航空(JAL)は 2025 年から 2026 年にかけて、モバイルアプリを中心とした DX(デジタルトランスフォーメーション)を加速させています。JAL アプリの月間アクティブユーザーは約 600 万人、デイリーアクティブユーザー(DAU)は約 320 万人に達し、航空券購入・チェックイン・搭乗までをアプリで完結させるユーザーが増加しています。
この動きの背景には、パンデミック後の非接触オペレーションへの需要、IATA が主導する流通規格の刷新、そして AWS・Azure などクラウド基盤の成熟があります。本記事では、JAL アプリの技術スタック、Face Express の実装範囲、競合キャリアとの比較、そして開発者が知っておくべき API 設計の要点を解説します。
JAL アプリの技術スタック
バックエンド基盤
JAL は 2023 年以降、基幹システムの段階的なクラウド移行を進めており、モバイルアプリのバックエンドは主に AWS 上で稼働しています。以下は推定される構成です。
| コンポーネント | 技術スタック | 用途 |
|---|---|---|
| API Gateway | AWS API Gateway / CloudFront | モバイル・Web からのリクエスト受付 |
| コンピュート | AWS Lambda / ECS (Fargate) | マイクロサービス実行基盤 |
| データベース | Amazon Aurora (PostgreSQL) / DynamoDB | 予約情報・顧客プロファイル管理 |
| AI チャット | Amazon Lex / Bedrock | 問い合わせ自動応答 |
| Push 通知 | Amazon SNS / Pinpoint | 遅延・ゲート変更通知 |
| 生体認証 | 自社開発 + Amadeus Altéa | Face Express 連携 |
ポイント: 航空業界の基幹システムは Amadeus、Sabre、Travelport といった GDS(Global Distribution System)との連携が必須です。JAL の場合、Amadeus Altéa を PSS(Passenger Service System)として使用しており、クラウド基盤はこれらレガシーシステムとの API 統合が前提となります。
モバイルアプリの主要機能
JAL アプリ(iOS / Android)は次の機能を統合しています。
- 航空券検索・予約: 国内線・国際線の検索、空席照会、座席指定
- チェックイン: 出発 24 時間前から可能、2 次元バーコード発行
- Face Express 登録: 顔写真のアップロードと搭乗時の顔認証連携
- JAL マイレージバンク: マイル残高照会、特典航空券予約
- JAL Pay 連携: プリペイド決済、マイル積算
- JAL Mall: EC サイトとの ID 連携
- リアルタイム通知: 遅延、ゲート変更、搭乗案内
このうち、Face Express と Apple Wallet / Google Pay 連携が 2025〜2026 年の目玉機能です。
Face Express(顔認証搭乗)の実装
対応空港と運用範囲
Face Express は 2024 年 10 月時点で国内 13 空港に展開されています。主要空港は以下の通りです。
| 空港 | 利用可能区間 | 備考 |
|---|---|---|
| 羽田(HND) | 保安検査・搭乗ゲート | 国内線全ゲート対応 |
| 成田(NRT) | 保安検査・搭乗ゲート | 国際線も段階的に拡大 |
| 伊丹(ITM) | 保安検査・搭乗ゲート | 2024 年 4 月拡大 |
| 福岡(FUK)・新千歳(CTS)・那覇(OKA) | 保安検査・搭乗ゲート | 主要地方空港 |
| その他地方空港 | 順次展開中 | 2026 年度内に 20 空港目標 |
技術的な仕組み
Face Express は、事前に登録した顔写真と空港での顔認証カメラを照合する仕組みです。フローは以下の通りです。
flowchart LR
A[ユーザー] -->|1. 顔写真登録| B[JAL アプリ]
B -->|2. 暗号化アップロード| C[JAL サーバー]
C -->|3. 顔特徴量抽出| D[生体認証 DB]
D -->|4. 予約情報と紐付け| E[Amadeus PSS]
A -->|5. 空港で顔認証| F[保安検査場カメラ]
F -->|6. 特徴量照合| D
D -->|7. 搭乗可否判定| F
F -->|8. ゲート通過| A
重要な設計ポイントは次の通りです。
- 顔写真は生の画像ではなく特徴量(ハッシュ化されたベクトル)として保存: GDPR・個人情報保護法対応のため、復元不可能な形式で保管
- 予約記録(PNR)との紐付け: 搭乗日のみ有効な一時的な照合キーを生成
- オプトアウト可能: ユーザーはいつでも登録を削除でき、従来の 2 次元バーコードでも搭乗可能
注意: 顔認証データは「個人情報保護法」における「要配慮個人情報」に該当します。JAL は取得時に明示的な同意を取得し、利用目的を「本人確認・搭乗手続きの円滑化」に限定しています。また、改正電気通信事業法(2023 年施行)により、外部送信(第三者提供)には事前通知が必要です。
開発者向け:PassKit と Wallet API の実装
JAL アプリは Apple Wallet(iOS)と Google Pay(Android)に搭乗券を追加する機能を提供しています。これは PassKit(iOS) と Google Wallet API(Android) を使用しています。
iOS: PassKit
// Pass (搭乗券) の生成例
import PassKit
func createBoardingPass(flight: FlightInfo) -> PKPass? {
// サーバー側で .pkpass ファイルを生成
// - pass.json (メタデータ)
// - manifest.json (ファイルハッシュ)
// - signature (Apple Developer 証明書で署名)
let passURL = URL(string: "https://api.jal.co.jp/passes/\(flight.pnr).pkpass")!
let passData = try? Data(contentsOf: passURL)
guard let data = passData else { return nil }
return try? PKPass(data: data)
}
// Wallet に追加
func addToWallet(pass: PKPass) {
let passLibrary = PKPassLibrary()
if passLibrary.containsPass(pass) {
print("既に Wallet に存在します")
} else {
// UI で追加プロンプトを表示
let vc = PKAddPassesViewController(pass: pass)
present(vc, animated: true)
}
}
Android: Google Wallet API
// Google Wallet への搭乗券追加
import com.google.android.gms.pay.Pay
import com.google.android.gms.pay.PayClient
fun addToGoogleWallet(flightJson: String) {
val walletClient: PayClient = Pay.getClient(this)
val request = PayClient.SavePassesRequest.builder()
.setJson(flightJson) // JWT 形式の搭乗券データ
.build()
walletClient.savePasses(request)
.addOnSuccessListener {
Log.d("Wallet", "搭乗券を追加しました")
}
.addOnFailureListener { e ->
Log.e("Wallet", "追加失敗: ${e.message}")
}
}
実践メモ: PassKit の .pkpass ファイルは Apple Developer Program の証明書で署名する必要があります。また、Google Wallet はサーバー側で JWT を生成し、Google Wallet API にアップロードする仕組みです。両者とも Push 通知でゲート変更や遅延を送信できるため、UX 向上に有効です。
IATA NDC(New Distribution Capability)への対応
NDC とは
IATA NDC(New Distribution Capability) は、航空券の流通を従来の GDS(Global Distribution System)中心から、航空会社直販へシフトさせる XML ベースの通信規格です。
従来の GDS モデルでは、旅行代理店が Amadeus・Sabre・Travelport を経由して航空券を販売し、航空会社は 1 予約あたり約 $10〜$15 の GDS 手数料を支払っていました。NDC はこのコストを削減し、航空会社が座席アップグレード・機内食・手荷物などの 付帯サービス(アンシラリー) を直接販売できるようにする仕組みです。
JAL の NDC 対応状況
JAL は 2025 年から NDC API を法人向けに提供開始し、2026 年には 国際線予約の約 30% が NDC 経由になる見通しです(JAL IR 2025 年度資料より)。
| 項目 | 従来 GDS | IATA NDC |
|---|---|---|
| プロトコル | EDIFACT(テキストベース) | XML / JSON REST API |
| 提供情報 | 航空券のみ | 航空券 + アンシラリー(座席・手荷物・WiFi) |
| 手数料 | $10〜$15 / 予約 | $2〜$5 / 予約 |
| リアルタイム性 | 低(キャッシュ多用) | 高(API 直接照会) |
| カスタマイズ | 不可 | 顧客プロファイルに基づく動的価格設定可能 |
開発者向け:NDC API の例
以下は IATA NDC 17.2 スキーマに基づく航空券検索リクエストの簡略例です。
<!-- AirShoppingRQ (航空券検索リクエスト) -->
<AirShoppingRQ xmlns="http://www.iata.org/IATA/2015/00/2019.2/IATA_AirShoppingRQ">
<Party>
<Sender>
<TravelAgency>
<AgencyID>AGENCY123</AgencyID>
</TravelAgency>
</Sender>
</Party>
<CoreQuery>
<OriginDestinations>
<OriginDestination>
<Departure>
<AirportCode>NRT</AirportCode>
<Date>2026-05-01</Date>
</Departure>
<Arrival>
<AirportCode>LAX</AirportCode>
</Arrival>
</OriginDestination>
</OriginDestinations>
<Travelers>
<Traveler>
<PassengerTypeCode>ADT</PassengerTypeCode>
</Traveler>
</Travelers>
</CoreQuery>
</AirShoppingRQ>
レスポンスには航空券だけでなく、座席選択・機内 WiFi・ラウンジ利用などの アンシラリー商品 が含まれます。
ポイント: NDC API は従来の GDS に比べて柔軟ですが、標準化が完全ではなく、航空会社ごとに独自拡張が存在します。OpenAPI 3.0 による NDC Schema も登場しており、開発者は IATA の NDC Developer Portal で仕様を確認できます。
競合キャリアとの UX 比較
国内競合:ANA アプリ
全日本空輸(ANA)も同様に顔認証搭乗「ANA Face Express」を展開しています。比較表は以下の通りです。
| 項目 | JAL アプリ | ANA アプリ |
|---|---|---|
| DAU | 約 320 万人 | 約 280 万人 |
| 顔認証対応空港 | 13 空港(2024 年 10 月) | 11 空港(2024 年 10 月) |
| Wallet 連携 | Apple Wallet / Google Pay | Apple Wallet / Google Pay |
| AI チャット | Amazon Lex ベース | IBM Watson ベース |
| マイル統合 | JAL Pay、JAL Mall | ANA Pay、ANA マイレージモール |
| NDC 対応 | 2025 年開始 | 2025 年開始 |
両社とも技術的には同水準ですが、JAL は JAL Pay(プリペイド決済)との統合が強み、ANA は提携クレジットカードとの連携に注力しています。
海外競合:Delta・United Mobile
米国の主要キャリアはモバイルアプリの完成度が高く、以下の機能が標準です。
| キャリア | 特徴的な機能 | 技術スタック |
|---|---|---|
| Delta | Parallel Reality(個人別案内ディスプレイ)、自動リブッキング | Azure、Misty Robotics |
| United | Dynamic Offers(動的価格設定)、ConnectionSaver(乗り継ぎ自動調整) | Google Cloud、Salesforce |
| American | 5G による機内エンタメストリーミング | AWS、Verizon 5G |
特に Delta の「自動リブッキング」機能は、遅延・欠航時に AI が代替便を自動で提案・確保する仕組みで、日本のキャリアにはまだ実装されていません。
セキュリティとサイバー攻撃事例
航空業界へのサイバー攻撃
航空業界は機密性の高い個人情報(パスポート番号、クレジットカード、旅程)を扱うため、サイバー攻撃の標的になりやすい業種です。
| 時期 | 対象 | 攻撃内容 | 影響 |
|---|---|---|---|
| 2024 年 9 月 | British Airways | ランサムウェア攻撃 | 予約システム一時停止、約 40 万人の個人情報漏洩リスク |
| 2025 年 2 月 | JAL(海外問い合わせシステム) | DDoS 攻撃 | 海外からの予約サイトに断続的な接続障害 |
| 2025 年 6 月 | Amadeus | API Gateway への不正アクセス試行 | GDS 全体に影響、一部航空会社で予約遅延 |
JAL の 2025 年事例では、海外の問い合わせシステムに対する DDoS 攻撃が発生しましたが、国内線の予約・運航システムは分離されており、直接的な影響はありませんでした。
注意: 航空業界のシステムは「運航系(CRS: Computerized Reservation System)」と「決済系」が別々に構成されていますが、API 統合が進むにつれて攻撃面が増加します。NIST Cybersecurity Framework および ISO/IEC 27001 に基づくリスク管理が不可欠です。
生体認証データの保護
顔認証データの保護には以下の技術的対策が取られています。
# 顔特徴量の暗号化保存(疑似コード)
import hashlib
import hmac
def store_face_template(user_id: str, face_vector: list[float]):
# 1. 顔ベクトルを正規化
normalized = normalize(face_vector)
# 2. ソルト付きハッシュ化
salt = os.urandom(32)
hashed = hmac.new(salt, str(normalized).encode(), hashlib.sha256).digest()
# 3. データベースに保存(元の顔画像は保存しない)
db.insert({
"user_id": user_id,
"template_hash": hashed,
"salt": salt,
"created_at": datetime.now(),
"expiry": datetime.now() + timedelta(days=365) # 1年で自動削除
})
Push 通知設計のベストプラクティス
通知タイプと優先度
JAL アプリの Push 通知は、搭乗に関わる重要度に応じて優先度が設定されています。
| 通知タイプ | 優先度 | 例 | 配信タイミング |
|---|---|---|---|
| Critical | High | ゲート変更、遅延 30 分以上 | 即時 |
| Informational | Medium | 搭乗開始案内、マイル加算通知 | 出発 60 分前〜 |
| Marketing | Low | キャンペーン、セール情報 | ユーザー設定に依存 |
iOS・Android での実装
// Firebase Cloud Messaging (FCM) を使った Push 通知送信
const admin = require('firebase-admin');
async function sendFlightNotification(userId, flightData) {
const message = {
notification: {
title: `【重要】${flightData.flightNumber} ゲート変更`,
body: `搭乗ゲートが ${flightData.newGate} に変更されました`,
},
data: {
type: 'gate_change',
flight_number: flightData.flightNumber,
new_gate: flightData.newGate,
departure_time: flightData.departureTime,
},
token: await getUserFCMToken(userId),
apns: {
headers: {
'apns-priority': '10', // Critical
},
payload: {
aps: {
sound: 'critical.wav',
badge: 1,
},
},
},
android: {
priority: 'high',
},
};
return admin.messaging().send(message);
}
実践メモ: iOS の Critical Alert は、ユーザーが「おやすみモード」でも通知を表示できる機能ですが、Apple の審査で正当な理由(緊急連絡、医療、航空便の重要通知)が必要です。JAL・ANA はこの許可を取得しています。
今後の展望
2026〜2028 年の予測
| 技術・施策 | 時期 | 内容 |
|---|---|---|
| 国際線での顔認証拡大 | 2026 年度 | 成田・羽田の国際線全便で Face Express 対応 |
| NDC 比率向上 | 2027 年度 | 国際線予約の 50% が NDC 経由に |
| AI による動的価格設定 | 2027 年度 | 需要予測に基づく座席・アンシラリー価格の最適化 |
| 機内 WiFi の 5G 化 | 2028 年度 | Starlink など衛星通信の導入 |
| カーボンオフセット統合 | 2026 年度 | アプリ内で CO2 排出量表示・オフセット購入 |
開発者が押さえるべきポイント
- PassKit / Google Wallet API の習得: 搭乗券・クーポンの Wallet 統合は標準機能に
- NDC Schema の理解: 航空券流通の主流が GDS から NDC へ移行
- 生体認証の法令対応: GDPR・個人情報保護法・改正電気通信事業法を遵守
- リアルタイム通知設計: FCM・APNs の優先度制御と Critical Alert の適切な利用
- クラウドネイティブ設計: AWS Lambda・API Gateway などサーバーレスアーキテクチャの活用
よくある質問
Face Express の顔データはどこに保存されていますか?
JAL のサーバー内に暗号化された特徴量として保存されます。元の顔写真は保持されず、復元不可能な形式です。また、搭乗日から一定期間後に自動削除されます。
NDC は従来の GDS を完全に置き換えますか?
置き換えるのではなく、併存する形になります。法人向けや旅行代理店経由の予約は GDS が引き続き使われ、航空会社直販(公式サイト・アプリ)は NDC が主流になる見通しです。IATA は 2030 年までに航空券流通の 70% を NDC 化する目標を掲げています。
JAL アプリの開発言語は何ですか?
公式には非公開ですが、iOS は Swift、Android は Kotlin で開発されていると推測されます。バックエンドは Java(Spring Boot)および Python(AWS Lambda)が使われている可能性が高いです。
まとめ
JAL アプリを中心とした航空 IT の DX は、次の 4 つの柱で進行しています。
- Face Express による生体認証搭乗の拡大: 国内 13 空港から 2026 年度に 20 空港へ、国際線も順次対応
- IATA NDC への移行: 流通コスト削減とアンシラリー収益の拡大、2027 年に国際線予約の 50% が NDC 経由に
- Wallet API と Push 通知の高度化: Apple Wallet / Google Pay 連携、リアルタイム通知による UX 向上
- 生体データの法令準拠: 個人情報保護法・改正電気通信事業法に基づく厳格な管理体制
航空業界の IT は、レガシーシステムとクラウドネイティブ技術の共存が特徴です。開発者は GDS・PSS といった既存インフラへの理解と、モバイル・API・生体認証といった新技術の両方を習得する必要があります。
関連記事:Passkey 2026の最新動向 と AWS Lambda SnapStartの実装例 も合わせてご参照ください。
参考リソース
- JAL Face Express 公式サイト - 顔認証搭乗の対応空港と利用方法
- IATA NDC (New Distribution Capability) - 航空券流通の新規格
- 国土交通省航空局 - 航空運送事業の現況 - 日本の航空業界統計
- 個人情報保護委員会 - 改正個人情報保護法 - 生体認証データの取り扱いに関する法令
- Apple PassKit Documentation - iOS Wallet 連携の公式ドキュメント
- Google Wallet API Documentation - Android Wallet 連携の公式ドキュメント