Ruby は、インタプリタ型、動的、リフレクティブな、オブジェクト指向 プログラミング言語です。まつもとゆきひろ氏によって開発されたRubyは、シンプルさと生産性に焦点を当てています。エレガントな構文により、開発者はコードをより簡単に読み書きできます。
このガイドでは、we will be working with strings in Ruby.
前提条件
このチュートリアルで示されている手順を実行するには、次のコンポーネントが必要です。
- 適切に設定されたUbuntuシステム。詳細については、CloudSigmaでの独自のUbuntuサーバーの設定方法を参照してください。.
- 構文ハイライト機能を備えた最新のテキストエディタ(例:VS Code, Sublime Text, Atom, Brackets, Vimなど)
文字列データ型
プログラミングにおいて、文字列 は、すべての現代的なプログラミング言語がサポートしている一般的なデータ型です。それは文字のシーケンスによって特徴付けられます。文字シーケンス全体が1つのデータとして扱われます。文字列には、アルファベット、数字、特殊文字/記号を含めることができます。
Rubyは純粋なオブジェクト指向プログラミング言語であり、文字列をオブジェクトとして扱います。他の多くの言語とは異なり、Rubyの文字列は変更可能(mutable)です。基本的には、文字列の値をその場で変更できます。
ステップ 1 – 文字列の作成と出力
Rubyでは、文字列はシングルクォーテーション( ')またはダブルクォーテーション( ")のいずれかで囲まれます。以下は、Rubyにおける2つの有効な文字列です。
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
コンソール画面に出力を行うために、Rubyには printメソッドが用意されています。
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
実際に動かしてみましょう。新しいRubyファイル practice.rbを作成し、以下のコードを入力します。
コードを実行します。
|
1 |
ruby practice.rb |
予想通り、 printコマンドは指定された文字列を出力します。文字列を改行して出力したい場合は、代わりに putsを使用する方が良いでしょう。コードを更新します。
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
次に、コードをもう一度実行します。
|
1 |
ruby practice.rb |
ステップ 2 – 文字列変数
変数とは、値が格納されているコンピュータメモリ内の特定の場所を指す名前です。必要な値を変数に格納し、後でそれを使用することができます。
Rubyで文字列変数を宣言するには、変数名を定義して文字列値を代入します。
|
1 |
<variable_name> = <string> |
以下のコードを practice.rb:
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
コードを実行します。
|
1 |
ruby practice.rb |
ここで:
- 2つの変数 first_halfと second_halfを定義し、それぞれに文字列値を代入しました。
- The putsメソッドは変数の値を出力します。
ステップ 3 – 文字列の結合
結合(連結)を行うことで、複数の文字列を組み合わせて新しい文字列を作成できます。文字列の結合は、結合演算子( +)で表されます。この記号は、算術演算を行う際の加算演算子でもあることに注意してください。
これまでに宣言した文字列に対して、文字列の結合を実行してみましょう。
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
コードを実行します。
|
1 |
ruby practice.rb |
出力結果が示すように、結合によって文字列の間に余分な文字が挿入されることはありません。そのため、 foxと jumpsが一緒にくっついてしまっています。修正するには、次の後にスペースを入れます: fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
コードを実行します。
|
1 |
ruby practice.rb |
これで出力が見やすくなりました。
文字列の結合は変数でも機能します。次の例を見てみましょう。
|
1 2 |
first_half = "the quick brown fox " puts first_half + "jumps over the lazy dog" |
コードを実行します:
|
1 |
ruby practice.rb |
次の例は、長い連結のチェーンを示しています。
|
1 2 3 |
username = "cloudsigma" fav_color = "blue" puts "hello, " + username + "! your favorite color is " + fav_color + "." |
コードを実行します:
|
1 |
ruby practice.rb |
ここまでは、文字列変数のみを扱ってきました。もし異なる変数の型があったらどうなるでしょうか?次のプログラムでこのシナリオをテストします。
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
このプログラムを実行しようとすると、Rubyはエラーメッセージをスローします。
|
1 |
ruby practice.rb |
しかし、この問題を回避するために、整数を文字列に変換することができます。
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
ここで:
-
メソッド to_s は変数の値を文字列に変換します。
郵便番号、通貨、電話番号、その他の数値データなどの要素を扱う場合、数値を文字列に変換することはよくあります。
ステップ 4 – 式展開
文字列の連結は強力な機能ですが、非常に簡単に複雑になってしまうことがあります。多くの場合、連結演算子( +)を忘れてしまい、頭を抱えることになるでしょう。さらに、異なるデータ型を扱う場合、最初に文字列に変換する必要があります。幸いなことに、Rubyには、式展開(string interpolation)という機能を使って、変数の値を文字列に注入する別の方法を提供しています。.
具体的には次のようになります。例えば、以下を使用する代わりに:
|
1 |
"hello, " + username + "!" |
次のように使用します:
|
1 |
"hello, #{username}!" |
構文は少し奇妙に見えるかもしれませんが、コードを劇的にシンプルにします。手動で to_sメソッドを呼び出して変数の値を文字列に変換する必要はありません。
この新しいテクニックを使って、以前のコードを更新してみましょう:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "hello, #{username}! your user ID is #{user_id}" |
コードを実行します:
|
1 |
ruby practice.rb |
ステップ 5 – 文字列リテラルと文字列値
コード内で宣言された文字列は常に引用符(クォーテーション)で囲まれていることに注意してください。しかし、コンソール画面に出力するときは、引用符は表示されません。これら二つの間には明確な違いがあります。
- 文字列リテラル: ソースコードに書かれた文字列(引用符を含む)のことです。
- 文字列値: 出力に印刷される値(引用符なし)のことです。
例えば、次のものは文字列リテラルです:
|
1 |
"hello world" |
その文字列値は hello world.
ステップ 6 – クォーテーションとアポストロフィのエスケープ
これまで示してきたように、ソースコード内で文字列を表すためにクォーテーションやアポストロフィが使用されます。これは問題を提起します。文字列内に直接それらを含めることはできません。そうしないと、問題が発生します。次のコードはこれを示しています:
|
1 |
puts 'it's what it is' |
この問題を回避するためには、いくつかの異なる戦略があります。
-
代替の文字列構文を使用する
これは問題を回避する最も簡単な方法です。文字列にシングルクォーテーションが必要な場合は、文字列リテラルでダブルクォーテーションを使用します(その逆も同様です)。
前の例を修正してみましょう:
|
1 |
puts "it's what it is" |
別の例は次のようになります:
|
1 |
puts 'he said, "hello world"' |
しかし、すべての状況で機能するわけではありません。例えば:
|
1 |
puts "Clousdigma says, "I'm a happy boi!"" |
-
エスケープ文字を使用する
バックスラッシュ( \)文字は、よくエスケープ文字と呼ばれます。これは、Rubyが次の文字をそのまま解釈するのを防ぎます。前の例を修正してみましょう。バックスラッシュを使用して、Rubyが内部のダブルクォーテーションをリテラルとして解釈するのを防ぎます:
|
1 |
puts "Cloudsigma says, \"I'm a happy boi!\"" |
-
代替構文の使用
これまでは、文字列リテラルを表すためにシングルクォーテーションとダブルクォーテーションのみを使用してきました。しかし、これまでの例は、これがすぐに手に負えなくなることを示す簡単な実演です。この問題を解決するために、クォーテーションマークを完全に廃止し、文字列の開始と終了を表すためにまったく異なる記号を使用することができます。
次の例を見てみましょう:
|
1 |
%$the quick brown fox said, "I jumped over the lazy dog"$ |
ここで:
-
- 記号 % は次の文字( $、この場合は)を文字列のデリミタとして定義します。
- ここでの文字列リテラルは $the quick brown fox said, "I jumped over the lazy dog"$.
実際に動かしてみましょう:
|
1 |
puts %$the quick brown fox said, "I jumped over the lazy dog"$ |
ここで、文字列は基本的に次のように扱われます:
|
1 |
"the quick brown fox said, \"I jumped over the lazy dog\"" |
しかし、デリミタが文字列内で使用されている場合、それをエスケープするという問題が再び発生します。これを回避する1つの方法は、一般的に文字列に現れない記号を使用することです。そのような記号には、波括弧や角括弧などが含まれます:
|
1 |
puts %{"hello, world!", he said} |
これは文字列の式展開(インターポレーション)でも完全に動作します:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{hello, #{username}.#{user_id}!} |
また、 %Q{} および %q{} を使用してRubyプログラムで文字列を定義することも一般的です。ここで、 %Q{} はダブルクォーテーションのように動作し、 %q{} はシングルクォーテーションのように動作します。
ステップ 7 – 改行と長い文字列
文字列を扱う際、文字列内に改行やキャリッジリターンを挿入したい状況が出てきます。これは、エスケープ文字 \n(改行)および \r(キャリッジリターン)を導入することで実現できます。
次の例を見てみましょう:
|
1 2 |
hello_world = "the quick\nbrown fox\njumps over\nthe lazy dog" puts hello_world |
文字列リテラルが分かりにくく見えますね?可読性を高めるために整理してみましょう:
|
1 2 3 4 5 6 7 |
hello_world = "the quick\n" + "brown fox\n" + "jumps over\n" + "the lazy dog" puts hello_world |
手動で改行文字を宣言する代わりに、次の構造を使用することもできます:
|
1 2 3 4 5 6 |
hello_world = "the quick brown fox jumps over the lazy dog" puts hello_world |
この方法では、文字列はすべての空白を保持します。しかし、これによって出力が乱れてしまいます。これを修正するには、余分な空白を削除します:
|
1 2 3 4 5 |
hello_world = "the quick brown fox jumps over the lazy dog" |
空白の問題は解決されましたが、コードの可読性が低下します。この問題は、heredoc(複数行の文字列リテラルを表す用語)を実装することで解決できます。更新されたコードは次のようになります:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END the quick brown fox jumps over the lazy dog END puts hello_world |
Ruby v2.3以降では、 squiggly heredoc 構文という別の機能が利用可能です。これは文字列の先頭の空白を削除します。 squiggly ヒアドキュメントを表すには、ハイフン( -)をチルダ( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END the quick brown fox jumps over the lazy dog END puts hello_world |
ステップ 8 – 文字列の複製
状況によっては、文字列を複数回繰り返す必要がある場合があります。Rubyでは、さまざまな方法で文字列を複製できます。
そのような手法の1つとして、 *演算子を使用する方法があります。一般的に、これは数値を扱う場合には乗算演算子として使用されます。しかし、文字列を扱う場合には、文字列複製演算子となり、単一の文字列を必要な回数だけ繰り返します。繰り返しの回数は整数でなければなりません。
次の例では、テキスト Borisが5回繰り返されます。
|
1 |
print "Boris" * 5 + "\n" |
この機能を使用すると、面白いアスキーアートを作成できます。次の例を見てみましょう。
|
1 2 3 |
puts "=" * 15 puts "| hello world |" puts "=" * 15 |
まとめ
プログラミングにおいて、文字列は極めて重要です。このガイドでは、Rubyでの文字列の扱い方について説明しました。文字列の作成方法や、結合、改行の処理、引用符などのさまざまな操作方法を学びました。また、式展開(文字列補完)を使用して、変数の値を文字列にうまく組み込む方法も学びました。さらに、文字列複製演算子を使用することで、単一の文字列を複数回繰り返すこともできます。
Ruby自体も優れたプログラミング言語ですが、Railsフレームワークと組み合わせて使用されることがよくあります。Ruby on RailsはオープンソースのWebアプリケーションフレームワークです。詳細なインストール方法については、Ruby on Rails on Ubuntuをご覧ください。ただし、Rubyは以下のような他のアプリケーションとも連携できます。MySQLやPostgreSQL.
ハッピーコンピューティング!












































コメント
コメントはまだありません。最初のコメントを投稿しましょう。