どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

Ruby入門 part1

本日からRubyの学習をしていきます。
学習には以下のサイトを使います💪
www.javadrive.jp
一番始めの「Rubyのインストールと環境設定」は終わっているので、「Rubyプログラムの基本事項」から進めていきます。

目次

1.Rubyプログラムの基本事項

Rubyはテキストファイルなので、テキストエディタで編集します。
私は Visual Studio Code を使っていきます🙂
これを 拡張子.rbとして名前をつけて保存します。例えばtest.rbです。
実行するには、ターミナルを開いて実行したいファイルのある場所に行き、ruby test.rb とします💡
また、コメントアウト#を使います。
複数行のコメントアウトには、先頭行の1行前に=beginを書き、最終行の1行後に=endを書いて囲みます。

2.日本語と文字コード

Rubyで日本語を文字化けせずに扱うために、スクリプトエンコーディング__ENCODING__ を確認します。
- Visual Studio Code f:id:mistyrinth:20181106185650p:plain - Terminal f:id:mistyrinth:20181106185927p:plain UTF-8スクリプトエンコーディングに設定されていることが分かりました👀
とりあえず今のところ文字化けしていないのでOKということにしておきましょう😂笑

3.文字列

3-1. 文字列オブジェクト

Rubyで文字列を作るには、Stringというクラスに文字列オブジェクトを作成するという形になります。
もう少し具体的に言うと、String.new("文字列")で作成できます。
String.new("Hello")とかですね👌
オブジェクトについては分かりやすいサイトがいくつかあったのですが、ひとつだけご紹介します💡
qiita.com
もうちょっとRubyのこと分かってきたら読み返したいサイトですね〜(今はよくわからない笑)
あと実は文字列はStringクラスを使わなくても、単にシングルクオーテーション''またはダブルクオーテーション""で囲むだけでも良いです🙂
ただこれだけでは出力できません!!
文字列を標準出力に出力するには、printメソッドを使います。
標準入出力については過去の記事 UNIX・Linux理解の肝 をご参照ください🙃

gist.github.com
これを実行してみます。
f:id:mistyrinth:20181108150434p:plain
「こんにちはHello World」と、続けて出力されました🎉
printメソッドは自動で改行されないっぽいですね。
今度は文字列オブジェクトのクラスを調べてみます。
printメソッドの中に.class()を付け足します。

gist.github.com

 これを実行すると以下のようになります。
f:id:mistyrinth:20181108153451p:plain
先述のとおり、"" で囲った「こんにちは」の文字列オブジェクトは、Stringクラスであることが確認できました〜😊

3-2. バックスラッシュ記法

先程、printメソッドを続けて書いたら改行されませんでした。
改行のように、キーボードで書き表せない物を書くために、バックスラッシュ記法というのがあります!
バックスラッシュ記法はダブルクオーテーション""で囲って使うことができます。
例えば改行なら\nと書きます。
また、文字として\を書きたいときは、\\とします。ひとつめの\エスケープです😎

gist.github.com

これは以下のような結果になります。
f:id:mistyrinth:20181108164811p:plain
\nは改行になって、\\n\nという文字列になりましたね👀
ちなみに、シングルクオーテーション''で囲ったら\も文字列として扱われます。
文字列としてダブルクオーテーション"やシングルクオーテーション'を使いたい時も、\エスケープできます✨
バックスラッシュ記法は、改行の他にもあり、Rubyのリファレンスマニュアルにまとまっています🙂
リテラル (Ruby 2.5.0)

3-3. %Q、%q

文字列としてのダブルクオーテーションやシングルクオーテーションが複数ある場合など、エスケープの\が沢山になってしまうと、コードが見にくくなります。
そこで他の書き方として、%Qまたは%qというのがあります!
%Q[文字列]はダブルクオーテーションで囲ったことになり、%q[文字列]はシングルクオーテーションで囲ったことになります。
この場合、文字列としてのダブルクオーテーションやシングルクオーテーションにエスケープの\は不要になります。
言葉では分かりにくいので、実際に書いてみます💡

gist.github.com

この結果がこちらです。
f:id:mistyrinth:20181108171514p:plain
一見よく分からないかもしれませんが、上のコードと見比べていただけると、%Q[文字列]がダブルクオーテーションで囲っているのと同じ(バックスラッシュ記法が有効であること)、%q[文字列]がシングルクオーテーションで囲っているのと同じ(バックスラッシュ記法が無効であること)がわかると思います😊
なお、[ ]は他の括弧でもOKです👌始点と終点の整合が取れていれば、{ }( )< >でも良いです。

3-4. 複数行文字列の作成(ヒアドキュメント)

複数行にわたる文字列を作成するには、<<"識別子"を使います。
はい、またよく分からない単語が出てきました〜笑 でも簡単なことです。とりあえず識別子というのは置いておいて、<<"EOS"というものを使って書いてみます。
1行目に<<"EOS"、最終行にEOSと書きます。その間は自由に沢山書きます🖊
gist.github.com
これの結果が以下のようになります。
f:id:mistyrinth:20181108173741p:plain
識別子というのは、区切りとなる任意の文字列です。EOSではなくても好きな文字で良いです💪
EOSというのはEnd of Stringの略で、このように複数行にわたる文字列を書く時によく使われるっぽいです😶
行の最後に識別子を書くことで、「文字列はここまでです」という区切りを意味します👀
そして、<<のあとにダブルクオーテーション""があります。これは先述と同じで、シングルクオーテーションでも良いです!
同じ説明になってしまいますが、ダブルクオーテーションならバックスラッシュ記法が有効です。シングルクオーテーションではバックスラッシュ記法は無効です。
「ヒアドキュメント」という言葉は、プログラム内に文字列を埋め込むことを指す言葉です。
とりあえず今はこの程度の認識で大丈夫そうですね😆

3-5. 文字列の中に式を展開

ダブルクオーテーションで囲った文字列には、式を埋め込むことができます💪
例えばnameという変数を埋め込むには#{name}と表現します。
gist.github.com

結果はこちらです。
f:id:mistyrinth:20181108181406p:plain
これは分かりやすいですね\(^^)/

3-6. 文字列の連結

続いて、文字列の連結をしてみます。Stringクラスには+メソッドというものがあります。というとまた難しそうなのですが、実際は+で繋げるだけです👏

gist.github.com
結果は以下のとおり。
f:id:mistyrinth:20181108182217p:plain
これも感覚的にわかりやすいですね😊

3-7. 文字列の繰り返し

文字列を何度も繰り返したい時ってありますね。たぶん。
文字列を繰り返したい回数を掛けます。掛け算は*ですね💡

gist.github.com
結果はブローノ・ブチャラティになります🥰分からない方はジョジョの奇妙な冒険第5部 黄金の風を見てくださいね!!絶賛アニメ放映中なので!!!このシーンまだこれからなので!!!!
f:id:mistyrinth:20181108184628p:plain
オタクなのでこういうことはすぐ思いつくんですよね〜😎

3-8. 文字列に文字列を追加

文字列に文字列を追加するには、先程ヒアドキュメントで登場した<<を使います。
文字列 << 追加する文字列という形になります。+で繋げるのと似ていますね🌝

gist.github.com
結果はこちらです。
f:id:mistyrinth:20181108185913p:plain

文字列はここまで!今度は数値に続きます💪