icon
icon

Rubyによるchrメソッドの利用方法について現役エンジニアが解説【初心者向け】

初心者向けにRubyによるchrメソッドの利用方法について解説しています。chrメソッドを使うことで文字コードから文字を出力することができます。基本の書き方と使い方の例を見ていきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Rubyによるchrメソッドの利用方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Rubyによるchrメソッドを利用することで数値を文字に変換することができます。

実務でも数値を文字に変換する際に活用することが可能です。

目次

1時間でできる無料体験!

そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

 

 

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

chrメソッドの利用方法について詳しく説明していくね!

大石ゆかり

お願いします!

chrメソッドとは

chrメソッドは、ASCIIコードで表示された数値等を文字列に変換するメソッドです。

変換する際にどんな文字コードで変換するかという、変換のためのエンコーディングの種類を指定することもできます。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

chrメソッドの記述方法

基本の使い方

chrメソッドは、数値に対して呼び出します。戻り値は文字列です。

数値.chr

サンプルコード

例えば、49という10進数を変換したい場合は、

puts 49.chr

と書きます。49を変換すると、戻り値は、文字列 “1” です。

表示結果

1

 

16進数を指定する

16進数にも使えます。

サンプルコード

puts 0x45.chr

と書きます。0x45を変換すると、戻り値は、文字列 “E” です。

表示結果

E

 

エンコーディングを指定する

エンコーディングを指定して呼び出すには、chrの後にエンコーディングを指定します。

サンプルコード

puts 0x3042.chr(Encoding::UTF_8)

と書きます。0x3042をUTF-8でエンコードすると、戻り値は、全角文字列 “あ” です。

 

表示結果

エンコーディング表記には、「UTF_8」の部分に、「US_ASCII」「 EUC_JP」「 SHIFT_JIS」どを使うことができます。

その他のエンコーディング表記は、”class Encoding ( Ruby 3.0.0 リファレンスマニュアル)“をご覧ください。

 

chrメソッドと数値データを利用して文字列を出力してみよう

それでは実際にchrメソッドを利用してみましょう。

 

文字コード表を出力する

半角文字の一部の文字コード表を表示してみます。

サンプルコード

#横軸のラベル表示
puts "  |0123456789ABCDEF"
puts "-------------------"

#0x20から0x7fまでを表示
(2..7).each do |roop|
  subset = 0x10*roop
  #縦軸のラベル表示
  print subset.to_s(16) + "|"
  (0x00..0x0f).each do |num|
    print (subset + num).chr
  end
  puts
end

 

表示結果

 

解説

puts ” |0123456789ABCDEF”では、|0123456789ABCDEFという文字列を表示しています。

この文字列が表示結果の1行目になります。

puts “——————-“では、1行目と3行目の間に表の罫線を表す波線を2行目に表示しています。

(2..7).each do |roop|では、each do 処理を利用して、2から7までの数値を、変数roopに代入し続ける繰り返し処理です。

each do のdoは省略可能でが、省略すると実装コードも若干変わります。

詳しくは、繰り返し処理!Rubyでeachを使う方法 を参考にしてみてください。

subset = 0x10*roopでは、変数roopに入った数値を10進数の16で掛け算して、変数subsetに代入します。

0xから始まるため、この0x10が16進数であることがわかります。

16進数の0x10は、10進数の16を意味します。

例えば、0x10*2では、最初の変数roopに入っている2を、0x10と掛けることで32という数値を導き出しています。

今回、0x10と2から7までの数値を掛けることで、それぞれ次のような数値が導き出されます。

0x10*2の結果は 32
0x10*3の結果は 48
0x10*4の結果は 64
0x10*5の結果は 80
0x10*6の結果は 96
0x10*7の結果は 112

これらの数値を繰り返し処理の中で変数subsetに代入しています。

print subset.to_s(16) + “|”では、to_sを利用して、変数subsetの値を、16を基数とした文字列に変換しています。

その後、列部分の罫線を表す|を表示しています。

たとえば、最初に表示される値は、subsetに32が代入されているため、32.to_s(16)の結果である20が表示されます。

to_sメソッドについては、Rubyのto_sメソッドの使い方の記事を参考にしてみてください。

表示結果で言うと、次のような3行目以降の各列の最初の表示の部分になります。

20|
30|
40|
50|
60|
70|

(0x00..0x0f).each do |num|では、each do を利用して変数numに、 0x00から0x0fまでの値を繰り返し代入しています。

0x00は0xで始まる16進数で、10進数の0を意味します。

print (subset + num).chrでは、変数subsetと変数numを加算し、.chrメソッドで

例えば、subsetが48で、numに0x00から0x0fまでの値を繰り返し代入し、加算した場合次のような結果になります。

これらの結果は、表示結果4行目にある、30の行の文字コード表で出力されます。

(48+0x00).chrの結果は 0
(48+0x01).chrの結果は 1
(48+0x02).chrの結果は 2
(48+0x03).chrの結果は 3
(48+0x04).chrの結果は 4
(48+0x05).chrの結果は 5
(48+0x06).chrの結果は 6
(48+0x07).chrの結果は 7
(48+0x08).chrの結果は 8
(48+0x09).chrの結果は 9
(48+0x0a).chrの結果は :
(48+0x0b).chrの結果は ;
(48+0x0c).chrの結果は <
(48+0x0d).chrの結果は =
(48+0x0e).chrの結果は >
(48+0x0f).chrの結果は ?

endでは、(0x00..0x0f).each do |num|の繰り返し処理を終了しています。

putsでは、改行を出力しています。

endでは、(2..7).each do |roop|の繰り返し処理を終了しています。

実行すると、以下のように文字コード表を出力します。

  |0123456789ABCDEF
-------------------
20| !"#$%&'()*+,-./
30|0123456789:;<=>?
40|@ABCDEFGHIJKLMNO
50|PQRSTUVWXYZ[]^_
60|`abcdefghijklmno
70|pqrstuvwxyz{|}~

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

まとめ

chrを使うと、数値を文字に変換できます。文字コードの数値から文字を出力したいときに使ってみてください。

 

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長開発実績:PHPフレームワークによるフランチャイズ企業向け会員制SNS。Shopifyによる海外進出用大規模ネットショップ構築。Vue.jsによる金融機関向け内部アプリ。AWSやLinuxハウジングサーバーでの環境構築。人工知能を利用した画像判別システム。小売チェーン店舗用スマホアプリ。Wordpressによる不動産チェーン店向け賃貸・売買仲介システム。基幹システム移管用データコンバートシステム。ボランティア活動:小学生がオリジナルAndroidアプリをGooglePlayでリリース、NHK Whyプログラミング入賞、全国Programing Festival入賞、中学生がSNS型PWAアプリリリースする市クラブ講座活動を行っている。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する