JavaScript - Unicode: 初心者向けの包括的なガイド

こんにちは、将来のプログラマーさんたち!今日は、JavaScriptのUnicodeの世界に楽しい旅をすることになります。プログラミングが初めてでも心配しないでください - 私があなたのフレンドリーなガイドとして、ステップバイステップで進めます。で、コーヒー(またはあなたが好きなお茶)を飲みながら、一緒に潜りましょう!

JavaScript - Unicode

Unicodeとは?

中国に住むペンフレンドに手紙を書こうとして、キーボードに英語の文字しかないとします。困るでしょう?ここでUnicodeが救世主的な存在となります!

Unicodeは、世界のすべての言語システムのすべての文字にユニークな番号(「コードポイント」と呼ばれる)を割り当てる魔法のような辞書のようなものです。文字や数字だけでなく、シンボルや絵文字、そして古代の文字も含まれます!

例えば、文字 'A' はUnicodeコードポイント U+0041 で、中国語の文字 '中'(「中間」という意味)はコードポイント U+4E2D です。

Unicodeの直感

Unicodeをコンピュータの万能言語として考えてください。Unicode之前、世界の異なる地域では異なるエンコードシステムが使用されており、多くの混乱や互換性の問題がありました。デジタル世界のバベルの塔のようなものでした!

Unicodeは、すべての言語の文字を表現できる標準化されたシステムを作成することで、この問題を解決しました。すべての言語のすべての文字にユニークなIDカードを与え、すべてのコンピュータで認識できるようにしたものです。

JavaScriptにおけるUnicode

では、JavaScriptがUnicodeをどのように扱うか見てみましょう。JavaScriptはUTF-16エンコーディングを使用しており、最初の65,536のUnicode文字(Basic Multilingual PlaneやBMPとしても知られる)を直接表現できます。

以下は、JavaScriptがUnicodeを扱うためのメソッドのテーブルです:

メソッド 説明
String.fromCharCode() Unicode値から文字列を作成
String.fromCodePoint() コードポイントから文字列を作成
charCodeAt() 文字のUnicode値を返す
codePointAt() 文字のコードポイントを返す

これらの例を見て、実際に動作を確認してみましょう!

1. Unicode値から文字列を作成

let heart = String.fromCharCode(9829);
console.log(heart); // ♥

この例では、String.fromCharCode()を使用してハートシンボルを作成しています。数字9829は、ブラックハートスート(♥)のUnicode値です。JavaScriptに「Hey、IDカード番号9829の文字をくれ!」と伝えるようなものです。

2. 文字のUnicode値を取得

let str = "Hello, 世界!";
console.log(str.charCodeAt(7)); // 19990

ここでは、charCodeAt()を使用して文字列のインデックス7の文字(「世」)のUnicode値を取得しています。文字のIDカード番号を尋ねるようなものです。

3. BMP外の文字を扱う

let emoji = "?";
console.log(emoji.codePointAt(0)); // 128640
console.log(String.fromCodePoint(128640)); // ?

BMP(Basic Multilingual Plane)の外の文字(多くの絵文字など)を扱うには、codePointAt()String.fromCodePoint()を使用する必要があります。この例では、ロケット絵文字を扱っています。非常に高いID番号を持つ特殊な文字を扱うようなものです。

4. 正しく文字数を数える

let text = "? Rainbow";
console.log(text.length); // 9
console.log([...text].length); // 8

これは少し難しいものです!JavaScriptはBMP外の文字を2文字として扱います。虹の絵文字(?)は2文字として数えられます。1文字として数えたい場合は、スプレッド演算子(...)を使用して文字列を文字の配列に分割します。

5. Unicodeエスケープシーケンス

console.log("\u{1F600}"); // ?
console.log("\u{1F64B}\u{200D}\u{2640}\u{FE0F}"); // ?‍♀️

Unicodeエスケープシーケンスを使用することで、コード内でUnicode文字を表現できます。IDカード番号を書く代わりに実際の文字を書くようなものです。\u{...}シンタックスはすべてのUnicodeコードポイントに使用できます。

結論

そして、みなさん、ここまでUnicodeのJavaScriptでの旅を楽しみましたね!Unicodeとは何かを理解することから、JavaScriptがどのようにそれを扱うかを見て、そして楽しい例を試すまで - 私はこの旅をとても楽しみました。

Unicodeは、私たちが世界中の誰にでも使えるソフトウェアを書くことを可能にするものです。技術が私たちを結びつけ、壁を壊す美しい例です。

あなたのプログラミングの旅を続ける中で、Unicodeを探求し、実験を続けてください。異なる言語でメッセージを書いたり、コードに絵文字を追加してみたりしてください。プログラミングの世界は広大でエキサイティングであり、Unicodeはあなたのグローバルコミュニケーションのパスポートです!

ハッピーコーディング、次回まで - あなたのコードがバグフリーで、コーヒーが強いことを祈っています!?☕

Credits: Image by storyset