さらなる高みへ -higher ground -

プログラミング学習の定着を狙いとしたアウトプット(独り言)をしてみるブログ

レビューアプリを作る際に必要なメソッド

ごくごく簡単なレビューアプリを作成するために、ユーザーが任意に文章を入力したり、するのに必須のメソッドをいくつかおさらいする。

puts内で改行をする

都度putsで記述しなくても、一連の記述に改行を表す文字を使い、改行を行うことが可能である。
このような特殊な文字を記述するために使われるのがバックスラッシュ記法(またはエスケープシークエンス)と呼ばれる。

バックスラッシュ記法

バックスラッシュ記法はその名の通り、\(バックスラッシュ)から始まる文字の記法のことである。
なお筆者はWindows環境なのでバックスラッシュの代わりに¥記号で代用する。

この記法を使うと文字列の中でただの文字ではなく改行や、タブなどを行うようになる。
代表的なバックスラッシュ記法は以下に示す。

記法 意味
\n 改行
\t タブ
\b バックスペース
\\ バックスラッシュ


例えば諸事情により、現在4番が空席であるヤクルトスワローズのクリーンアップを表記しよう。

puts "3番セカンド山田"
puts ""
puts "5番ファースト村上"

これを

puts "3番セカンド山田\n\n5番ファースト村上"

としても同じ結果が出力されるのが分かる。

f:id:the_road_to_engineer:20200101171814p:plain

変数の使用

思い付きだが、一つ目の例をヤクルトスワローズの選手で挙げてしまったので、変数の作業における例を同様にヤクルトスワローズの選手で行おうと思う。

変数名
所属 affiliation
守備位置 position
特徴 characteristic

というような変数を設定したとする。

affiliation = "東京ヤクルトスワローズ"
position = "セカンド"
characteristic = "さん然と輝く球界のスーパースター。\n\n3度のトリプルスリーをはじめ、日本シリーズでの3打席連発や連続盗塁成功記録など、打ち立てた金字塔は数知れず。\n\n2019年はチームは低迷したが、プレミア12決勝戦での逆転3ランは記憶に新しい。\n\n2020年にはFA権を取得予定。\n\n今季はフォーティーフォーティーを達成してメジャーへ移籍か。\n
line = "---------------------------"

puts "所属 : " + affiliation
puts line
puts "守備位置 : " + position
puts line
puts "特徴 :"
puts characteristic
puts line

 

変数にしたのは、
- 所属(affiliation)
- 守備位置(position)
- 特徴(characteristic)
- 区切り線(line)

の4つである。

変数としてラベル付けをしたほうがソースコードを読むときにわかりやすくなる。

式展開

文字列の中で式を使い、式によって得られる値を入れることのできる機能である。
式展開の書き方は文字列中で#{式}とするだけ。

"#{}"

式展開をする場合は文字列を作るときに""で囲む必要があり、'(シングルクォテーション)で囲んだ場合は式展開が行われないことに注意。

どういうことかというと

name = "佐藤"

puts "わたしの名前は#{name}です。"
puts "1と3を足した値は#{1 + 3}です"

# シングルクォテーション
puts 'わたしの名前は#{name}です。'
puts '1と3を足した値は#{1 + 3}です'

上の””の記述は

わたしの名前は佐藤です
1と3を足した値は4です

と式展開され、

’’の部分は

わたしの名前は#{name}です
1と3を足した値は#{1 + 3}です

と計算式が残る形となる。

getsメソッド(ターミナルから文字入力を行う)

ターミナルから文字を入力できるようにするにはgetsメソッドを使う。

ユーザーが入力した値を文字列オブジェクトとしてプログラムに渡す(返り値はユーザーが入力した値の文字列オブジェクト)。

getsメソッドが呼ばれるとターミナル画面は入力待ちの状態になる。
そこでキーボードから値を入力してエンターを押すと、getsメソッドは入力した文字をプログラムに返す。

input = gets

puts "入力した値は#{input}です"

これをターミナルで動かすと、入力待ちの状態となり例えば「1」と入力したら、「入力した値は1です」というレスポンスが発生する。

  • getsメソッドは返り値としてターミナルで入力された文字列を返す
  • getsメソッドはターミナルからの入力が終わるまでプログラムの処理を一回止める
getsメソッドの返り値

getsメソッドはターミナルからユーザーに入力を行わせ、入力された値の文字列オブジェクトを返り値として渡す。
上記のサンプルコードを見るとgetsメソッドの返り値が変数inputに代入されているのがわかる。

getsメソッドと処理の流れ

通常、プログラムは上から下に順番に実行されるというルールがある。
しかしgetsメソッドを使うと、ユーザーがターミナルで入力をするまでそこで一回プログラムを中断するということになる。

よってgetsメソッドより下のソースコードは入力が終わるまでは実行されないということである。

input = gets

puts "入力した値は#{input}です" # ユーザーの入力が終わるまで実行されない

 

puts "所属チームを入力してください:"
affiliation = gets.chomp   #chompメソッドは後述
puts "ポジションを入力してください:"
team = gets.chomp
puts "特徴を入力してください:"
caracteristic = gets.chomp
line = "---------------------------"

# レビューの描画
puts "所属 : #{genre}\n#{line}"
puts "チーム : #{title}\n#{line}"
puts "特徴 :\n#{review}\n#{line}"

所属チームを入力してください:
ヤクルトスワローズ
ポジションを入力してください:
セカンド
特徴を入力してください:
トリプルスリー

chompメソッド

chompメソッドは文字列の末尾の改行文字を取り除いた新しい文字列を返してくれるメソッドである。

改行文字は"\n"、"\r\n"、"\r"のどれでも取り除く。