ルイス森田の備忘録

このブログはアウトプットが死ぬほど苦手な森田の強制&矯正装置としてゆるっとはじまったブログです。

応用Lesson2:わからない単語一覧

応用Lesson2:わからない単語一覧

勉強中に調べた&覚えた単語とそのコードの一覧

 

単語

意味

クエリ

 

クエリとは、データベースからデータを抽出したり操作したりといった処理を行うための命令のこと

汎用的

さまざまな用途や分野に用いることができるさまを意味する

リファクタリング

 

処理の内容を変えずに冗長なコードを削除したり、コードを改善すること。読み手が最短時間でコードを理解できるようになる。

修正がしやすくなる。

説明変数

目的変数を説明する変数のこと。

「独立変数」とも呼びます。物事の原因ととらえることもできます

目的変数

予測したい変数のこと。

「従属変数」「外的基準」とも呼びます。物事の結果ととらえることもできます

グローバル変数(先頭に$が付いた変数)

どこからでも参照・更新が可能。なるべく使わない方が良いです=変数のスコープが大きくなり、読むコード量が増えるため

正規表現

文字列に特定の文字が含まれているかを確認すること/特定の文字を取り除くなどの操作を行うための技術が正規表現です

subメソッド

subメソッドは、文字列の指定した部分を別の文字列に置き換えるためのメソッドです。第一引数に置き換えたい文字列を指定し、第2引数に変換後の文字列を指定します。

また、操作したい文字列は/で囲みます

matchメソッド

引数に指定した文字列がレシーバの文字列に含まれているか否かをチェックするためのメソッド。含まれている場合は、指定した文字列がMatchDataオブジェクトの返り値で得られます。また、含まれていない場合は、返り値としてnilが得られます。

MatchDataオブジェクト

マッチした文字列等はMatchDataオブジェクトで返される。MatchDataオブジェクトから文字列等を取り出す際は、以下の様に配列からデータを取り出す時と同様の形で取り出すことができる

グローバルマッチのg

適用前→sub:適用後→gsubとなる。文字列内で指定した文字が複数含まれている場合、その全てを置換するという意味。subを使用した場合、初めの1つだけ置換されます。

[a-z]

matchメソッド中で使用。角括弧で囲まれた文字のいずれか 1 個にマッチ。-(ハイフン)を使用することで範囲を設定することができる。

\d

matchメソッド中で使用。このdは数字を表します。数字を表すdのような文字を特殊文字と呼びます。特殊文字を使用する場合は直前に\を記述するというルールが存在します。

[a-z\d]

matchメソッド中で使用。英数字のいずれか1つにマッチ

{n, m}

matchメソッド中で使用。直前の文字が少なくとも n 回、多くても m 回出現するものにマッチ

match(/[a-z\d]{8,}/i)

例)パスワードに英数字8文字以上という制約

i

matchメソッド中で使用。最後にiオプションを加えることで大文字・小文字を区別せずに検索します

.

matchメソッド中で使用。どの1 文字にもマッチ

+

matchメソッド中で使用。直前の文字の 1 回以上の繰り返しにマッチ

(/@.+/)

.+は何かしらの文字が1回以上繰り返すものにマッチします。先頭に@を付けることで「@から始まり、何かしらの文字が1回以上繰り返すものにマッチ」という意味になります。

 

メールアドレスからドメイン部分のみを抽出することができる。

一次ソース

開発者本人が作成している仕様書の情報のこと。

つまり、開発者本人による情報のために信頼性が最も高い情報と言えます。

ライブラリの一次ソースの多くはgithubにコードをreadmeがあるので、そこを閲覧することとなると思います。

今後、信頼性の高い一次ソースの情報が欲しいときはgithubやそのreadmerubyのドキュメントを読むようにしましょう。

upcaseメソッド

全ての小文字を対応する大文字に置き換えた文字列を返す

  

コード例

ーーーーーーーーーーーーーーー

subメソッド

irb(main):001:0> str = "おにぎりを食べる"

=> "おにぎりを食べる"

 

irb(main):002:0> str.sub(/おにぎり/,"ラーメン")

=> "ラーメンを食べる"

ーーーーーーーーーーーーーーー

matchメソッド

irb(main):001:0> str = "Hello, World"

=> "Hello, World"

 

irb(main):002:0> str.match(/Hello/)

=> #<MatchData "Hello">

 

irb(main):003:0> str.match(/Good/)

=> nil

ーーーーーーーーーーーーーーー

MatchDataオブジェクト

irb(main):001:0> str = "Hello, World"

=> "Hello, World"

 

irb(main):002:0> md = str.match(/Hello/)

=> #<MatchData "Hello">

 

irb(main):003:0> md[0]

=> "Hello"

ーーーーーーーーーーーーーーー

電話番号のハイフンを消す

irb(main):001:0> tel = '090-1234-5678'

=> "090-1234-5678"

 

irb(main):002:0> tel.sub(/-/,'')

=> "0901234-5678"

# 最初のハイフンしか置換されない

 

irb(main):003:0> tel.gsub(/-/,'')

=> "09012345678"

ーーーーーーーーーーーーーーー

パスワードに英数字8文字以上という制約を設定しよう

irb(main):001:0> pass = 'Hoge1234'

=> "Hoge1234"

 

irb(main):002:0> pass.match(/[a-z\d]{8,}/i)

=> #<MatchData "Hoge1234">

 

★ポイント

  • [a-z]: 角括弧で囲まれた文字のいずれか 1 個にマッチ
  • \d: 数字にマッチ
  • {n, m}: 直前の文字が少なくとも n 回、多くても m 回出現するものにマッチ
  • i: 大文字・小文字を区別しない検索

 

ーーーーーーーーーーーーーーー

少なくとも4回、多くても6回出現するものにマッチ

irb(main):001:0> '12345678'.match(/\d{4,6}/)

=> #<MatchData "123456">

 

irb(main):002:0> '123'.match(/\d{4,6}/)

=> nil

 

ーーーーーーーーーーーーーーー

★★実践的な使用方法

pass = 'Hoge1234'

if pass.match(/[a-z\d]{8,}/i)

  //パスワード設定の処理

else

   puts 'パスワードの形式が間違っています。'

end

ーーーーーーーーーーーーーーー