あしあと

明日の自分への情報発信

Rubyの学習(1日目)Linuxの学習(6日目)とプロになるためのweb技術入門(4日目)

Javacriptのprogateでの学習が終わったので、今日からRubyの学習に入る。RailsRubyフレームワークなので、Rubyの深い理解が重要になると思って頑張ろうと思う。

 

Rubyとは

Rubyとはwebアプリケーションのシステムを作るための言語

 

Rubyの基本と文字列

Rubyの文字列はjavascriptと同じように""z(ダブルクオーテーション)または``(シングルクオーテーション)で囲う。

出力するなら「puts "文字列"」となる

 

Rubyのコメント

行の先頭に#をつけるとコメントになる。

f:id:keropp1234:20200108175611p:plain

 

計算

putsでは計算もできる。""で囲うと文字列になる。これはjavascriptと同じ

f:id:keropp1234:20200108175850p:plain

 

文字列の計算

こちらもjavascriptと同様に文字列の計算ができる。

f:id:keropp1234:20200108180206p:plain


変数の定義

こちらもjavascriptと同じニュアンス

f:id:keropp1234:20200108180435p:plain

 

変数の命名

Ruby命名にはいくつかのルールがある。特に2語以上繋げるときは必ず_アンダーバーをつけるようにする。

f:id:keropp1234:20200108180829p:plain

 

定数の更新

上から下の順に更新されていく。これもjavascriptと同じ。

f:id:keropp1234:20200108181024p:plain

 

変数の自分自身の更新

変数自身に情報を注ぎ足して更新することもできる。

f:id:keropp1234:20200108181247p:plain

 

計算の省略例

これもJavaScriptと同じ。先に計算の情報( +や-)を書いてから=で結ぶ。

f:id:keropp1234:20200108181447p:plain

 

変数展開 変数を文字に含める

JavaScriptに同じような機能があるが、Rubyでは$の代わりに#{}である、``シングルクオーテーションではなく""ダブルクオーテーションでなければ反映されない(シングルクオーテーションでは文字列として反映されてしまう)。JavaScriptとは逆である・

f:id:keropp1234:20200108190912p:plain

 

Rubyのif文

非常にJavaScriptと文法が似ている。括弧ではなくendという言葉で終わらせるため、より直感的か。なお条件に合わない場合はエラー(一切出力されない)になる。

f:id:keropp1234:20200108191400p:plain

 

Rubyの真偽値

if文なしで条件式のみで出力すると、true, falseの真偽値が出てくる。

これもJavaScriptと似ている。

f:id:keropp1234:20200108191811p:plain

 

真偽値があるならば当然、比較演算子も登場する。

これもまたJavaScriptと似通っている。

f:id:keropp1234:20200108192019p:plain

 

比較演算子を使って等しさを求める

a == bは「aとbが等しければtrueになり、等しくなければfalse」となり、a != bはその逆で、「aとb等しくなければtrue、等しければfalse」というニュアンスになる。

f:id:keropp1234:20200108192706p:plain

 

Rubyのelse

RubyのelseはJavaScriptと同じく「条件が成り立たなかったら」という処理ができる。

条件式などはなく処理だけなのも同様。

ifにelseを組み合わせると「もし〇〇なら●●を行う、そうでなければ■■を行う」という処理ができるようになる。if文の条件がfalseの場合、elseの処理が実行されます。

f:id:keropp1234:20200108192906p:plain

 

elseの実用例

elseを使うことでif文のみでは2パターン用意して冗長だったものが、わかりやすくシンプルになっている。こういう複数の構造があるときはインデントをしっかりすること。

f:id:keropp1234:20200108193120p:plain

 

elsif 〜条件を追加する〜

f:id:keropp1234:20200108194156p:plain

 

elsifには「if」の文字が含まれている通り、if式のように条件式が必要になる。elsifを使えば、もしaだったらa'を行う(if部分)、aではなくbだったらb'を行う(elsif部分)、aでもbでもなければc'を行う(else部分)、というような処理である。

f:id:keropp1234:20200108194429p:plain

 

elsifの注意点

elsifは複数の条件に一致したとしても実行されるのは最初の条件のみなので、条件の順番を間違えると不適切な分岐になってしまう。例えば、左の図は「score > 60」の条件を最初に書いていることで、scoreが98にも関わらず「まずまずです」と出力されてしまっている。

f:id:keropp1234:20200108194706p:plain

 

「かつ」を表す論理演算子 &&

「かつ」は「&&」で表す。「条件1 && 条件2」は「条件1かつ条件2」という意味で、複数の条件がすべてtrueならtrueになる。これはコンピュータの論理和であるandと同じである。

f:id:keropp1234:20200108195506p:plain

 

「または」を表す論理演算子 ||

「または」は「||」で表し、条件1 || 条件2」は「条件1または条件2」という意味になる。この場合は、複数の条件のうち1つでもtrueならtrueになる。これはコンピュータの論理和であるorと同じである

f:id:keropp1234:20200108195834p:plain

 

&&の具体例

f:id:keropp1234:20200108195933p:plain

 

linux

ディレクトリ関連について学習

 

なるほどと思ったところ

 

ホームディレクトリ:シェルを立ち上げた直後の /home/ユーザー名  がホームディレクトリと呼ばれるもので、ユーザーが自由にファイルを置くことができる。/homeはホームディレクトリではなくホームディレクトリを入れるディレクトリである。

unixは複数の人が一台のコンピュータを使う想定がされている。つまり、「ユーザーにとってのホームディレクトリが /home/ユーザー名 」なのである

 

mvファイルはファイル名の変更と、ファイルの移動の二つの役割を持つ。

これはケースバイケースできまる。例えばカレントディレクトリにaとbのファイルがあるときに、$ mv a b としても、bのファイルが既にあるのだから、ファイルの移動だろう、とLinuxが判断するのである。

とは言えまぎらわしいので、$ mv a b/ とするとBディレクトリに移動となり明確化する。

 

web