【入門編】 String.fromCharCode()による文字生成 – JavaScript実践ガイド

こんにちは!日々Web制作や開発の学習、本当にお疲れ様です。

JavaScriptを学び始めると、次から次へと新しいメソッドが出てきて、「うわぁ、覚えることが多すぎる……」と頭が痛くなることもありますよね。でも、安心してください。焦る必要はまったくありません。一つひとつ、仕組みを「あ、そういうことか!」と納得しながら進めば、コードを書くのがどんどん楽しくなっていきますよ。

今回は、一見すると「なんだか難しそうだな」と感じてしまいがちな、`String.fromCharCode()`(ストリング・フロム・チャームコード)というメソッドについて、世界一わかりやすく、そして現場の知恵も交えながら温かく解説します。

準備はいいですか?ゆっくり一緒に紐解いていきましょう!

—

そもそも `String.fromCharCode()` ってなに?

まずは、この長い名前のメソッドが何をしてくれる道具なのか、身近な例え話から始めてみましょう。

想像してみてください。あなたは今、大人気のラーメン屋さんに来ています。
入り口には券売機がありますよね。

  • 「1番」のボタンを押すと、「醤油ラーメン」が出てくる。
  • 「2番」のボタンを押すと、「塩ラーメン」が出てくる。
  • 「3番」のボタンを押すと、「チャーシュー麺」が出てくる。

この「番号を渡すと、それに対応した商品(文字)を返してくれる券売機」こそが、`String.fromCharCode()` なのです。

コンピュータの裏側にある「秘密の番号表」

実は、コンピュータは「A」や「あ」といった文字をそのまま理解しているわけではありません。裏側では、すべての文字に「秘密の背番号(文字コード)」を割り当てて管理しています。

例えば、

  • 背番号 `65` は、アルファベットの大文字 `A`
  • 背番号 `66` は、アルファベットの大文字 `B`
  • 背番号 `67` は、アルファベットの大文字 `C`

といった具合です。

`String.fromCharCode(65)` と書くのは、コンピュータに「背番号65番の文字をください!」とお願いしているのと同じこと。すると、コンピュータは「はい、どうぞ!」と `”A”` を差し出してくれるのです。

—

実際にコードを書いてみよう!

言葉で聞くよりも、実際に動かしてみるのが一番の近道です。
以下のコードを、お使いのエディタ(VS Codeなど)や、ブラウザの開発者ツール(F12キーで開くコンソール)に貼り付けて動かしてみてください。

// 1. 一番シンプルな使い方(背番号「65」を渡してみる)
const letterA = String.fromCharCode(65);
console.log(letterA); // 結果: “A” が表示されます!

// 2. 複数の背番号をまとめて渡すこともできます
// 74 = ‘J’, 97 = ‘a’, 118 = ‘v’, 97 = ‘a’, 83 = ‘S’, 99 = ‘c’, 114 = ‘r’, 105 = ‘i’, 112 = ‘p’, 116 = ‘t’
const mysteryWord = String.fromCharCode(74, 97, 118, 97, 83, 99, 114, 105, 112, 116);
console.log(mysteryWord); // 結果: “JavaScript” が表示されます!

// 3. 日本語だって背番号を持っています
// 12371 = ‘こ’, 12435 = ‘ん’, 12395 = ‘に’, 12385 = ‘ち’, 12399 = ‘は’
const japaneseGreeting = String.fromCharCode(12371, 12435, 12395, 12385, 12399);
console.log(japaneseGreeting); // 結果: “こんにちは” が表示されます!

どうですか?背番号を並べて渡すだけで、ちゃんと言葉が組み立てられましたよね。
「なんだ、ただの番号札の交換システムじゃないか」と思えてきたら、大正解です!

—

初学者がつまずきやすい「2つの落とし穴」と優しいフォロー

ここで、多くの人が「あれ?」と疑問に思うポイントを整理しておきましょう。つまずきそうになっても大丈夫、ちゃんと救い出しますよ。

1. 「UTF-16」とか「コードユニット」って言葉が難しすぎる!

公式マニュアルを読むと、「UTF-16コードユニットのシーケンスから…」なんて呪文のような言葉が書いてあります。これを見て「うっ、無理かも…」とブラウザのタブを閉じたくなる気持ち、よく分かります。

結論から言うと、今は難しい専門用語を完璧に理解しなくて大丈夫です。

プロとして現場でコードを書くときも、要するに「世界中の文字に割り振られた、国際基準の番号(16ビットという箱に収まるサイズのもの)」を扱っているんだな、というイメージだけで十分に戦えます。最初からすべての原理を学ぼうとせず、「動いた!楽しい!」の気持ちを大切にしてくださいね。

2. 絵文字がうまく表示されない!?(サロゲートペアの罠)

ちょっと実験をしてみましょう。
例えば、きらきら光る星の絵文字「⭐」を表示させたいとします。
この絵文字の背番号は `11088` です。

console.log(String.fromCharCode(11088)); // 結果: “⭐” (これはうまくいく!)

しかし、もっと複雑な絵文字(例えば「🥺(ぴえん)」など)を `String.fromCharCode()` で出そうとすると、文字化けしてしまったり、変な記号が2つに分裂して表示されたりします。

なぜでしょうか?
実は、`String.fromCharCode()` という道具は、昔ながらの「小さめの番号(16ビットで表せる範囲)」しか扱えません。最近の絵文字のような「めちゃくちゃ大きな番号」が割り振られている文字は、この道具のキャパシティを超えてしまうのです。

【プロからのワンポイントアドバイス】
もし、絵文字などの大きな文字も安全に扱いたいときは、少し新しい道具である `String.fromCodePoint()` を使いましょう。使い方は全く同じですが、こちらの方が「大きな番号」にも対応できる力持ちです。

// 絵文字「🥺」の背番号(129402)を渡してみる
console.log(String.fromCodePoint(129402)); // 結果: “🥺” (バッチリ表示されます!)

「基本は `fromCharCode` だけど、絵文字とかを扱うときは `fromCodePoint` という頼れるお兄ちゃんがいるんだな」と頭の片隅に置いておくだけで、現場で文字化けに遭遇したときに「あ、あのことか!」とスマートに解決できますよ。

—

現場の知恵:どんなときに使うの?(実用的なアイデア)

「仕組みは分かったけど、いつ使うの? 普通に `”A”` って書けばよくない?」

そう思ったあなた、素晴らしいセンスをしています!その通り、普通の文字は普通にタイピングして書くのが一番です。

では、プロはどんなときにこのメソッドを使うのでしょうか?
一番よくあるのが、「アルファベットのAからZまでを、ループ(繰り返し処理)で一気に作りたいとき」です。

手動で `[‘A’, ‘B’, ‘C’, …, ‘Z’]` とタイピングするのは面倒ですし、打ち間違い(タイポ)の原因になりますよね。そこで、背番号が連続している特徴(Aは65、Bは66、Cは67…)を利用して、コンピュータに一瞬で作らせてみましょう。

// 空っぽの配列(箱)を用意します
const alphabetList = [];

// A(65) から Z(90) まで、番号を1ずつ増やしながらループを回します
for (let i = 65; i <= 90; i++) { // 番号を文字に変換して、配列に追加していきます alphabetList.push(String.fromCharCode(i)); } // 結果を確認してみましょう! console.log(alphabetList); // 結果: ["A", "B", "C", "D", ..., "Z"] が一瞬で完成! どうでしょう!これ、すごく気持ちよくないですか? このように、「連続する文字のリストをプログラムで自動生成したいとき」に、`String.fromCharCode()` は絶大な威力を発揮します。

—

まとめ:一歩ずつ、あなたのペースで

今日学んだことを、おさらいしてみましょう。

1. `String.fromCharCode()` は、背番号(文字コード)を文字に変換してくれる券売機。
2. 複数の番号をまとめて渡せば、一つの単語にして返してくれる。
3. 絵文字などの「大きな番号」を扱うときは、頼れるお兄ちゃん `String.fromCodePoint()` を使うと安心。
4. アルファベットのリストを自動で作るときなどに大活躍する。

JavaScriptの世界にはたくさんのメソッドがありますが、どれも「誰かが便利にするために作った、ただの道具」です。一度に全部を覚えようとしなくて大丈夫。

「あのとき、番号で文字を作る道具があったな」と、引き出しの隅っこに置いておくだけで、あなたのプログラミングの引き出しは確実に一段増えています。

これからも、焦らず、楽しみながら、一歩ずつ進んでいきましょう。あなたの挑戦を、いつでも応援しています!

コメント

タイトルとURLをコピーしました