• WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCampPro_インタビュー
    未経験から上京し、テレビでも話題のIT企業に転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04

▼当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

金王冠Web Camp【業界最安値】1ヶ月集中してプログラミングスキルを身につけられるスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
銅王冠Tech Camp業界最大級!教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
びっくりマークWebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
7月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
6月受入枠は満員となっております。7月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!
※プログラミングを学んでみたいけど、時間がなくて全文の記事が読めない!という方は、WebCampの無料説明会(毎日開催)に参加してみてください!

はじめに

Rubyで作ったプログラムの多くは、何らかの文字を表示させることが多いと思います。

そのため、文字列の扱いをきちんと押さえておくことは、Rubyを学習する上で重要なポイントと言えるでしょう。

今回は、Rubyで文字列を扱うことについて、少し踏み込んだ説明をしていきます。

Rubyで文字列を扱う

参考書のサンプルプログラムなどでは、あまり意識しないようにしてくれていますが、WindowsでRubyを使うとき、日本語を表示させようとするとうまくいかないことが多いです。

これは、日本語などの全角文字を扱うための文字コードというものの設定が必要になるからです。

文字コードというのは、じつは何かと問題になることの多いものですが、最初にきちんと理解しておけば、恐れるものではありません。

詳しく説明しましょう。

文字コードとは

いきなり「文字コード」と言われても、よく分からない人も少なくありません。

そもそも、文字コードというものは何かから、説明していきます。

コンピュータは文字を理解しない

コンピュータは、計算機です。それも、0と1しか扱えない計算機です。そのため、彼らが理解できるのは、0と1だけです。

もちろん、0と1だけでも桁を多くすれば大きな値を表現することはできます。そのため、コンピュータは値だけは理解することができると言って良いでしょう。

しかし、人間がコンピュータを扱うには、命じるにも結果を確認するにも、文字は書かせません。

そこで、文字を値で表現して、「値と文字の対応表」を作り出しました。そして、コンピュータがこの対応表を元にして文字を表示する仕組みができました。その結果、値しか知らないコンピュータがあたかも文字を理解しているように見えるようになったのです。

この対応表のことを「文字コード」と呼びます(厳密に言えば、違っている場合もありますが、学者でもなければ気にする理由はありません)。

文字コードは1つではない

最初にできたコンピュータは、非常に非力でしたので、文字コードも大きなものを持たせられませんでした。(具体的には、最大でも256種類(1バイト)程度しか、扱えませんでした)そのため、アルファベットと数字、一部の記号のみだけの、最低限の文字コードが使われていました。

「ASCIIコード」と呼ばれるこの文字コードは、現在もすべてのコンピュータの、基本の文字コードとして使われています。

しかし、世の中には無数の文字があり、それらの文字を使う必要が出てくるのは当然のことです。

そこで、文字として認識させる値を256×256(2バイト)などまで拡張した文字コードが生まれました。しかしこのとき、あらゆる国のあらゆる人たちが、自分たちに都合の良い文字コードを作ってしまったのです。

日本語を扱っている代表的な文字コードの例

文字コード 説明
Shift-jis Windowsで標準になっているごく一般的な文字コードです。
EUC-JP UNIX上で日本語の文字を扱う場合にもっとも多く利用されている文字コードの1つです
JIS JIS(日本工業規格)で定めた日本語の文字コードの1つです
UTF-8 ASCIIコードと互換性を持っている世界的にポピュラーな文字コード

しかしこれでは、同じプログラムでも、違う文字コードの環境で動かすことで結果が違うということになり、非常に不便です。

そのため、現在は世界的に文字コードを統一しようという動きがあります。その文字コードが、Rubyが採用している「UTF-8」なのです。

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

文字コードを指定する

では、Rubyで文字コードを指定して、余計な問題が起きないようにする方法を紹介しましょう。

入出力先に教える

文字コードを指定するといっても、RubyではUTF-8として扱っていますので、Ruby環境になにかするわけではありません。

指定する必要があるのは、Rubyに文字を渡す入力元と、渡された文字を解釈して表示する出力先である「コマンドプロンプト(ターミナル)」なのです。

入力元

入力元については、主にRubyのプログラムを作成するエディタでしょう。エディタで入力する文字コードを、UTF-8にしてやらなければいけないということです。

これには、以下の2つの対策を施す必要があります。

・ファイルの先頭に、UTF-8であることを示す文字列を入力する。

ファイルの先頭行に以下の文字列を入力してください。

#! ruby -Ku
・UTF-8で保存する

エディタでプログラムを作って保存するときに、「文字コードをUTF-8に指定して保存する」わけです。なお、一部のエディタ(Windowsのメモ帳など)では対応していませんので、注意が必要です。

また、必ず「BOMなし」で保存するようにしましょう。

出力先

出力先は、主にコマンドプロンプト(ターミナル)になるでしょう。ただし、上述のファイルの設定をしておけば、ほとんどの場合はUTF-8と解釈されます

そのため、ここまでの対応で日本語表示できますが、万が一うまくいかなかった場合は、以下の方法を試してみましょう。

・ruby起動時のオプション設定

プログラムを起動するとき、何も考えなければ「ruby ファイル名」としているでしょう。

しかしこのときに、以下のように文字コードを指定する オプション引数を設定します。

ruby -Ku プログラムのファイル名.rb

このオプション引数によって、コマンドプロンプトは、起動されたプログラムの文字コードがUTF-8だと解釈するわけです。
※なお、ここで設定されている末尾のuが、UTF-8を表しています。同様にShift-jisを扱いたければ、-Ks、EUC-JPであれば-Keとなります。

Windowsの場合

残念ながら、Windowsのコマンドプロンプトの場合、初期設定がShift-jisになっています。そのため、以下のようなRubyが出力するUTF-8の日本語文字列が、思ったように表示されないことが多いです。

#! ruby -Ku

print("るびーで表示する")

もし文字化けしてしまう場合には、以下のように、出力する文字列をShift-jisに変換する仕組みを入れてあげることで、文字化けを回避することができます。

#! ruby -Ku

require "kconv"

print(Kconv.tosjis("るびーで表示する"))

なぜ文字化けを回避できるかというと、Kconvという名前のライブラリ(メソッドの固まり)の中に含まれているtojis()関数を使って、Rubyが出力するUTF-8をShift-jisへ変換するためです。

ただし、このままMacやUNIX上で動かすと、逆に文字化けする可能性が高いので、その場合は処理を消しておくなどの別の仕組みが必要になりますので、注意が必要です。(多くの場合、環境の確認なども自動で行っています。詳細は本記事と離れますので、割愛します)

※次から紹介するサンプルプログラムでは、煩雑になることから、敢えてKconvを使用していません。必要な場合は、適宜対応するようにしてください。

時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
2018-01-26 13:03
今回の記事では、WebCampに1ヶ月間通い、未経験からエンジニアとして転職した星野さんにお話を伺いました。 <プロフィール> 星野 智洋 さん(25) 学生時代は日本大学芸術学部...

文字列を使おう

文字コードの設定ができてしまえば、安心して文字列を使った処理を行えます。

ここからは、文字列を扱うための手法について、説明していきましょう。

文字列を使う方法

Rubyで行うことができる文字列の操作をまとめると、次のようなものがあります。

操作 式、メソッド
比較 ==(等しいかどうか)
<, , >=(文字列の順番の比較)
(文字列の順番の比較)
casecmp(大文字小文字を区別しない比較)
結合
分割
+(結合)
split(文字列の分割)
partition(部分文字列で2分割)
rpartition(末尾から部分文字列で2分割)
検索 empty?(空文字列)
start_with?(開始文字列)
end_with?(末尾文字列)
include?(含まれているか)
index(位置)
rindex(末尾からの位置)
変換 reverse, reverse!(文字列の反転)
capitalize, capitalize!(開始文字の大文字化)
swapcase, swapcase!(小文字←→大文字変換)
downcase, downcase!(大文字→小文字)
upcase, upcase!(小文字→大文字)
置換 replace(すべて変更)
tr, tr!(文字置換)
squeeze, squeeze!(同じ文字の繰り返しを1つにまとめる)
tr_s, tr_s!(文字置換してまとめる)
生成 %(書式付き)
*(繰り返し)
<<(追加)
insert(挿入)
succ, succ!, next, next!(「次の文字列」)
削除 chomp, chomp!(末尾の改行削除)
chop, chop!(末尾の文字削除)
delete, delete!(特定の文字を削除)
lstrip, lstrip!(先頭の空白削除)
rstrip, rstrip!(末尾の空白削除)
strip, strip!(先頭と末尾の空白削除)
slice(取り出し)
chars(1文字ずつ取り出す)
chr(最初の文字を取り出す)
clear(空文字列にする)
長さ size、length(文字数(バイト数))
count(特定の文字の数)

これらは、String型のメソッドと呼ばれており、文字列に対して様々な操作を行うことができるものです。

変数について

まず、文字列を扱うに当たって、その表現方法を確認しておきましょう。

プログラムの中で文字列を表現する基本は、""で囲うことです。""で囲ってあげれば、それはリテラル文字列という固定文字列と認識されます。

しかし、文字列を扱うプログラムというのは、ある特定の文字列にだけ対応するものではないのが一般的でしょう。

例えば、ある文字列の空白を取り除いて、すべて大文字にするプログラムを作るとします。仮に固定文字列で作ると、以下のようになります。

#! ruby -Ku

# "Moji Suji  "から空白を取り除く
puts("Moji Suji  ".tr(" ",""))

# すべて大文字にする
puts("MojiSuji".upcase)

結果は、以下のようになりますので、確かに、目的の通りに表示されています。

MojiSuji
MOJISUJI

しかし、このプログラムに違和感を覚える人は多いと思います。

なぜなら、空白を取り除いた文字列をわざわざ手で入力して、大文字に変換しているからです。これでは、プログラムの意味がありません。

そこで、「str= "Moji Suji "」のように、変数と呼ばれる箱に入れてあげることで、汎用的なプログラムにするわけです。

それが、以下のプログラムです。

#! ruby -Ku

# 変数に代入
str= "Moji Suji  "

# "Moji Suji  "から空白を取り除く
str = str.tr(" ","") # 入れなおすのであれば、str.tr!(" ","")だけでもOK
puts(str)

# すべて大文字にする
str.upcase!  # strの中身を直接変更している
puts(str)

結果は同じです。

しかし、固定文字列を使ったプログラムと違って、人が関与することはなく、プログラムがすべての置換や変換を行ってくれます。また、もし文字列が変更となった場合、変数に入れる文字列を変更するだけで対応できるのは、大きな利点でしょう。

考えてみよう

では、前項で紹介したメソッドを使って、少し複雑な文字列操作をしてみましょう。

メソッドの使い方は、上のサンプルプログラムで書いているように、「文字列を格納した変数.メソッド()」です。

じつは、文字列を格納している変数は、文字列専用の「String型」になっており、だからこそString型のメソッドを利用することができるのです。

では、次のサンプルプログラムを見て、何が表示されるのか、予測してみましょう。

敢えてコメントを最小限にしていますので、上の表を参考にして、最終的に何が表示されるのかをしっかりと考えてから、実行してみてください。

#! ruby -Ku

# 初期の文字列
str = "Queen’s talk after Xmas"

# 最終的な結果が入る変数
ret = ""

# ばらして
str1,str2,str3,str4 = str.split(' ')
str1 = str1.chr()
str2 = str2.chr()
str3 = str3.chr()
str4 = str4.chr()

# ずらして
ret = str1.next()
str2.next!()
str3.next!()
str4.next!().downcase!()

# つなげる
ret = ret + str2 + str3 + str4
puts(ret)

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

まとめ

Rubyをはじめとしたプログラムを作っていくに当たって、文字列操作というのは、避けて通れないものです。

特に漢字もある日本語は、文字コードについては必ずどこかで気にしなければいけなくなるものですので、最低限の知識は持っておきたいものです。

また、文字列操作メソッドをすべて憶えておく必要はありませんが、何ができるのかは分かっておきましょう。

・Rubyの文字コードはUTF-8
・Windowsの文字コードはShift-jis
・UNIXの文字コードはEUC-JP
・Rubyのプログラムを保存するときは、UTF-8(BOMなし)で
・プログラムがUTF-8を扱っていることを表すため、ファイルの1行めに「#! ruby -Ku」と入れておく
・Windowsのコマンドプロンプトの場合は、Kconvを使って文字コード変換しなければいけないこともある

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

7月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
6月受入枠は満員となっております。7月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

 

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Rubyの関連記事
  • 【Ruby 入門者説明書!】ifを使いこなすポイントはここ!解説
  • 【Ruby入門説明書】ruby caseについて解説
  • 【Ruby入門説明書】オブジェクトの理解について解説
  • 【Ruby入門説明書】変数と定数について解説
  • 【Ruby入門説明書】数値と四則計算について解説
  • 【Ruby入門説明書】日本語と文字列、コードについて解説

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら

おすすめの記事