webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

即席クラス。構造化データの表現にはStructを使おう

配列ではなく、キーと値のペアで構成されているデータを扱うには、普通ハッシュを使うかと思います。

それ自体は間違いではありませんが、ハッシュにしてしまうとゲッターメソッドが使えず、オブジェクトかハッシュかを意識しながら扱わなくてはいけません。

要するに、クラスにするまでもない一時的なデータでもオブジェクトのようにゲッターメソッドを使いたいのです。

このような場合にはStructクラスを使うときれいに書くことができます。

続きを読む

買ってよかったAmazonKindle本を紹介します

最近またkindleで本を読み始めました。

欲しい本をkindleで探して、買って、読む。

買うまでのハードルが低すぎてついつい買っちゃうんですよね。

もちろん、買って後悔した本もありますが、今日は買ってよかった本をランキング風に紹介したいと思います。

ちなみに、本体を買うならkindle paperwhiteじゃなくて、Fireタブレットが絶対オススメです。

ほんまにコスパ最強のタブレットです。去年だったか、父の日にプレゼントしてとても喜ばれました。

端末に本をダウンロードしてしまえば通勤電車で読めるし、一旦閉じても次に開いたときにはすぐに途中から読むこともできます。

付属のカメラがしょぼい意外は文句のつけようがないです。

Fire HD 8 タブレット (8インチHDディスプレイ) 16GB

Fire HD 8 タブレット (8インチHDディスプレイ) 16GB

Fire 7 タブレット (7インチディスプレイ) 8GB

Fire 7 タブレット (7インチディスプレイ) 8GB

続きを読む

SCSSの文法で最も基本的であると思われるものをまとめてみました

Progateで勉強したSCSSの文法のまとめです。

「なんかcssをちょっと便利にしたもの」程度の理解しかなかったので、progateで勉強し、文法をまとめてみました。

入れ子構造

通常のcssであれば

.header {
  width: 100%;
}

.header  ul{
  padding: 10px;
}

と書いていたところを、

.header{
  width: 100%;
  
  ul{
    padding: 10px;
  }
}

というように入れ子にして書くことができます。

続きを読む

Rubyをもう一歩進んで勉強する9章(セッターメソッドについて)

Rubyではメソッド名の末尾に"!"や"?", "="のような非英数字文字を使うことができます。

"!"はメソッドの使用者に注意を促すとき、"?"はメソッドが真偽値を返すのを明示的に表したいときに使ったりします。

たまに、"!"を付けると破壊的メソッドになるとか、真偽値を返すメソッドには必ず"?"を付けなければいけないとか質問されているのを目にしますが、強制力もなければ、メソッド名でメソッドの中身が変わることもありません。

しかし、"="が付いたメソッドは少し特別な意味を持ちます。

続きを読む

Rubyをもう一歩進んで勉強する8章(initializeメソッドについて)

伝統的かどうかわからないが、RubyはJavaなどにあるようなコンストラクタを持っておらず、代わりにnewメソッドから呼ばれるinitializeという特別なメソッドを定義することによりオブジェクトを初期化することができます。

特に定義しなければ、BasicObjectクラスに定義されているinitializeメソッドが呼ばれますが、中身は空なので何も起こりません。

initializeメソッドもほかのメソッドと同じくようにメソッド探索を行い、最初に見つかったinitializeメソッドを実行します。

続きを読む

Rubyをもう一歩進んで勉強する7章(superの挙動)

親クラスの同名メソッドを呼ぶsuperについてです。

例えば以下のような場合

class User
  def login(acount, password)
    ~ログイン処理~
  end
end

class AdminUser < User
  def login(password)
    ~ログイン処理~
    ~固有の処理~
  end
end

AdminUserクラスではログインメソッドの中で、親クラスであるUserとログイン処理を共有しています。

同じ処理をなんども書きたくないので、親クラスのログインメソッドを呼びたい。そんなときに使うのがsuperです。

続きを読む

Rubyをもう一歩進んで勉強する6章(メソッド探索と特異クラス)

Rubyでは、継承しているクラスを上へ上へと昇りながらメソッド探索を行います。

一つ上のクラスはsuperclassメソッドで知ることができますが、モジュールをインクルードしたときはsuperclassで検出できず、しかしいつの間にかモジュールのメソッドが使えるようになっています。

今回はその仕組みを紐解いていきます。

そのためにまずは、オブジェクト、クラス、モジュールについて用語を復習しておきます。

続きを読む