mthiroshi_blog (ラーメン IT系 筋トレ)

普段の生活から仕事のIT系、趣味のラーメンなど書いていきます。

Ruby コーディング規約を読む

Rubyコーディング規約をいくつか調べた。

下記のコーディング規約は、日本語で記載されていて読みやすかったので参考にした。

github.com

fork 元のドキュメントのほうが最新更新が新しいので気になった部分のソースも確認した。 github.com

構文

  • 否定形のときはifよりunlessが好まれます。(もしくは||構文を使いましょう)。

  • 本文が1行のときは、if/unless修飾子を利用するのが好まれます。 他の良い代替案としては&&/||を使った制御構文があります。

  • unlessをelse付きで使ってはいけません。 肯定条件を先にして書き換えましょう。

  • unless および until の条件式に複数の項を || で結合した論理式 (加法標準形) を書いてはならない。

  • if/unless/while/until構文では()の使用は避けましょう.

if, whileの否定形のunless, until。 多言語ではない制御構造だが、シンプルに読みやすい程度で使うことができる。

  • 内部DSL(例えばRake,Rails,RSpecなど)、 Ruby内で"キーワード"となるステータスを持ったメソッド(例えばattr_reader やputsなど)や アトリビュートにアクセスするメソッドでは、 引数の周りの()を省略しましょう。 それ以外のメソッドでは、メソッド呼び出しの時に()を付けましょう

puts は () を省略を推奨されている

  • 等価演算子===の露骨な使用は避けましょう。 その名が示す通り、caseの条件判定で用いられており、 その外で用いられると混乱のもとになります。

PHPでは、厳格な比較として使われていた。

Rubyでは厳格な比較は、is_a や include などのメソッドを使う。 また、case 文で使われることを許容している。

正規表現

  • どの値が入っているか追うのが困難になるので、 順序付けられたグループを使うのは避けましょう。 代わりに名付けられたグループを使いましょう。

グルーピングは名前つきを使う。

Ruby 入門

Ruby の勉強をした。

こちらの書籍でざっくり入門。

gihyo.jp

Ruby を触ってみて、初めて知ったことなどのメモを残す。

シンボル

任意の文字列を内部的に整数として扱うオブジェクト。 整数であるため、文字列と比べて処理が高速である。

ハッシュのキーなどに使われる。

fruits = {:apple => 'りんご', :banana => 'バナナ', }
p fruits[:apple]
"りんご"

下記の書き方もできる。

fruits = { apple: 'りんご', banana: 'バナナ', }
p fruits[:apple]

ハッシュの初期値

下記のように、ハッシュのデフォルト値を設定した際に、存在しないキーで参照したい際にデフォルト値を取得できる。

hash = Hash.new
p hash[:key]

hash_default = Hash.new('default')
p hash_default[:key]
nil
"dafault"

デフォルト値のオブジェクトは、同一になる。

hash_default = Hash.new('default')
foo = hash_default[:foo]
bar = hash_default[:bar]
p foo == bar

foo.upcase!

p foo
p bar
p foo == bar
true
"DEFAULT"
"DEFAULT"
true

foo に破壊的変更を行うと、bar の値も変更される。

Splat 演算子(展開)

配列やハッシュを展開する演算子。

array = [1, 2, 3]

p([array, 4])
p([*array, 4])
[[1, 2, 3], 4]
[1, 2, 3, 4]

ブロック

ブロックは、処理のかたまり。

array = [1, 2, 3]

array.each do |n|
    p(n)
end

{ } で書き換えができる。1行で書ける場合は、こちらが使われる。

array.each { |n| p(n) }

ブロックは、メソッドの引数として渡すことができる。 渡されたブロックは、yield で実行される。

def hello
    puts('hello')
    yield
end

hello { puts('hoge') }
hello
hoge

メソッド呼び出しの括弧の省略

メソッド呼び出しでは、括弧を省略できる。

引数がある場合は、メソッド のあとにスペースを挟んで引数を並べる。

def puts_sample(text)
    puts(text)
end

puts_sample('foo')
puts_sample 'bar'
foo
bar

まだ違和感もあるが、書いてみると煩わしさが軽減できて悪くもない。

一般的にどちらが使われているかは調べてみる。

キーワード引数

名前を指定して、引数を渡せる。他言語でも使えた。

def puts_sample(text:)
    puts(text)
end

puts_sample(text: 'foo')
foo

任意のキーワード引数

引数の前に ** をつけて、複数のキーワード引数をハッシュで受け取る。

def hoge(**args)
    p(args)
end

hoge(a: 1, b: 2, c: 3)

柔軟性が高い一方で、使い方に注意が必要そう。

&. 演算子 (safe navigation operator)

nil かもしれないオブジェクトに対して、安全にメソッドを呼び出すときに使う演算子。

foo = 'foo'
p foo&.upcase

bar = nil
p bar&.upcase
"FOO"
nil

Dart では Null-aware演算子、Kotlinではセーフコール演算子 として同様の機能があった。

アクセサメソッド

ゲッター、セッターを付与できる。

class Book
    attr_accessor :title

    def initialize(title)
        @title = title
    end
end

book = Book.new('hogehoge')
p book.title
book.title = 'fugafuga'
p book.title
"hogehoge"
"fugafuga"

attr_writer , でセッターのみ、attr_reader でゲッターのみを追加できる。

Java の lombok のような機能

RDocコマンド

Rubyのドキュメント生成をするコマンド

% rdoc
Parsing sources...
100% [ 7/ 7]  /home/ ... /

Generating Darkfish format into /home/ ... /

  Files:       7

  Classes:     4 ( 3 undocumented)
  Modules:     0 ( 0 undocumented)
  Constants:   1 ( 1 undocumented)
  Attributes:  1 ( 1 undocumented)
  Methods:     6 ( 5 undocumented)

  Total:      12 (10 undocumented)
   16.67% documented

  Elapsed: 0.1s

RDoc で生成されたHTML

所感

文字列や整数型などもクラスやオブジェクトになるため、言語標準で使える機能が多いように感じた。 一方で、多様な書き方、表現ができるため、実用に沿った書き方、コーディングルールを調べてみる。

マイプロテイン GW 限定 プロテイン EAA

マイプロテインのGW限定商品のシーズンとなりました。

去年は、ゴールデンEAAが美味しかったです!

今年は、プロテインの方も買ってみました。

Impact EAA - 梅フレーバー

www.myprotein.jp

早速飲んでみました!

しっかり梅味で美味しいです!トレ中も飲みやすいと思います。

欲を言えばもっと酸っぱいほうが美味しいかもしれません。

クエン酸とか入れて適度に酸味増すのもありかもですね。疲労回復にも良さそうです。

Impact ホエイ プロテイン - ミックスジュースフレーバー

www.myprotein.jp

ミックスジュースフレーバーのプロテインは、微妙でしたねーw

マイプロ特有のバナナの臭み(草味)がいる感じがしますw

飲めないほどではないですが、積極的には飲まないと思います。

250gでよかった^^;

まだGWセールやってるみたいなので、気になった方はぜひ!

www.myprotein.jp

蓮爾 新町一丁目店 たまラーメン小ニンニク

蓮爾の新町一丁目店に行ってきました。

GW前の営業でした。

たまラーメン小 麺カタメ 麺マシ

オーダー

  • たまラーメン小 麺カタメ 麺マシ

  • 無料トッピング

    • ニンニク

麺マシ。今日はやけに麺量が多く見える。

ヤサイはシャキ。

豚は大きめの三角豚。ギュチとしたカタめの豚は食べごたえがある。

味もしっかり染みてる。

アブラも程よくついててうまい。

お待ちかねの麺。

序盤はムチとした柔麺。

表面柔らか、中カタめ。

麺が減ってきて、汁としっかり絡めるといい感じ。

下の方はしっかり硬くて好みの仕上がり。

今日の汁は本当に少なかった。

濃くてうまかった。

所感

GW前の蓮爾。しっかり小麦補給ができて満足。

初手の見た目に比べて意外とぺろりと食べられました。

Twitterを見ると、比較的汁が少ないと感じる人が多かったみたい。

新町蓮爾の醍醐味ですね。

MEN YARD FIGHT えびラーメン

MEN YARD FIGHT でえびラーメン。

えびラーメン

オーダー

  • えびラーメン 1000円

無料トッピング

  • ニンニク

所感

年始ぶりのメンヤードでえびラーメン。 やっぱり、スープうまいんですよね。

麺もさることながら、それに負けないスープだと思います。

現在の限定が辛そうなので、一旦通常メニューを挟んでみました。

限定もチャレンジするか否か、、

豚風。限定こんぶ。

4月上旬、豚風。の限定こんぶ。を食べてきました。

いわゆる昆布水つけ麺。実は昆布水つけ麺、これまで食べたことがなかったので、今回の限定はぜひとも食べたいところでした。

豚星。で以前一度こんぶにトライしましたが、長蛇の行列目の前にして断念したこともありました。。

当時は豚風。ができる前で、人気な限定にありつくが大変でしたが、豚風。の登場によって少し分散できてるのかもしれないですね。

限定 こんぶ。

オーダー

  • 限定こんぶ。 1200円

無料コール

  • ヤサイ、ニンニク、辛味

有料トッピング

  • 海苔 100円

斜めからも

麺

まずは昆布水に浸かった麺から。

ほー!本当に昆布出汁に麺が浸かってる!

確かに、こうやって麺だけで食べたくなるのもわかる。すごく上品で贅沢な感じがします。

つけ麺なんて味の濃いつけ汁につけてなんぼなもんでしょう。それを出汁に浸すとこうも印象が変わるのか。

なるほどなるほど。

そして、つけ汁。

酸っぱ辛さと二郎系特有の脂が効いたつけ汁。これにヤサイと合わせて食べるのが本当においしい。つけ汁がドレッシングになってる。 無料トッピングで辛味をいれましたが、想定した好みの味になってました。

先の昆布水をまとった麺を潜らせて食べてみる。

出汁だけとは打って変わって、濃い塩味と辛味、酸味が効いててうまい。脂を纏っていっきにジャンクに。 このつけ汁好きですね。麺が止まらない。

そしてほのかに感じる昆布出汁。この昆布感を残すようにつけ汁を潜らせるのポイントなのかも笑

豚。

最近、豚星に通っていて改めて思うのが、豚風。の豚はギュチ感が強めかな。豚星。はもう少しトロっとしている印象。(豚のブレや主観が含まれているのであくまで一意見)

ギュチ豚も好きです。

つけ汁

こんぶ

麺を食べきってあらてめ昆布水を眺めるときれいな出汁色なんですね。

浮いている脂はなんだろう。。 多分箸についた脂なのかな。

所感

ごちそうさまでした。念願の豚風。のこんぶ。美味しかったです。

毎回限定が興味を引くラインナップで飽きないんですね。 このブログを書き上げる頃にはこんぶ。終わってしまいました。

あんけか焼きそばやってるみたいです。気になりますね~

また豚風。食べに行きます。

豚星。に比べて、体感麺が多い気がしていますが、気のせいでしょうか

豚星。汁なしそば ショウガ

ラーメン備忘録。2023年の4月上旬です。

豚星。で汁なしのアレンジを模索してきました。

汁なしそば + ショウガ

豚。豚星。の豚はうまい。

麺

所感

ショウガを入れるとさっぱりしてジャンク感が程よく抑えられていいですね。

ショウガは魚粉と合わせてみたいです。ぜひ次回。