ISO国コードから国旗絵文字を生成する
ISO 3166-1 alpha-2国コードからUnicodeの地域指標記号を使って国旗絵文字をプログラムで生成する方法をJavaScriptなどの言語で解説します。
Programming
詳細な説明
国旗絵文字の仕組み
国旗絵文字は単一の文字として保存されていません。ISO 3166-1 alpha-2国コードの文字に対応する2つの地域指標記号で構成されています。
Unicodeのメカニズム
Unicodeは地域指標記号をU+1F1E6(A)からU+1F1FF(Z)の範囲で定義しています。2つの地域指標記号が有効なISO 3166-1 alpha-2コードを形成すると、システムは国旗を表示します。
JavaScript実装
function getFlagEmoji(countryCode) {
const codePoints = countryCode
.toUpperCase()
.split('')
.map(char => 0x1F1E6 + char.charCodeAt(0) - 65);
return String.fromCodePoint(...codePoints);
}
console.log(getFlagEmoji('US')); // アメリカ国旗
console.log(getFlagEmoji('JP')); // 日本国旗
Python実装
def get_flag_emoji(country_code: str) -> str:
return ''.join(
chr(0x1F1E6 + ord(c) - ord('A'))
for c in country_code.upper()
)
プラットフォームの違い
| プラットフォーム | 動作 |
|---|---|
| iOS / macOS | カラーの国旗画像として表示 |
| Android | カラーの国旗画像として表示 |
| Windows | 国旗の代わりに文字を表示(仕様) |
| Linux | フォントに依存(Noto Color Emojiは国旗をサポート) |
ユースケース
Reactアプリの国選択コンポーネントが各国名の横に国旗絵文字を表示します。コンポーネントはalpha-2コードから国旗を導出し、国旗画像アセットを配布する必要がないため、バンドルサイズが数百キロバイト削減されます。