"Ruby" クラスメソッドとインスタンスメソッドの書き方(例示)

Hey, guys !!

クラスメッドとインスタンスメソッドの書き方が自分の中でごちゃごちゃしてしまう為、メモの様に下に記す。
参考になるようならしてね:)

まずはクラスメソッドの主な書き方3つ...

①
class Foo
  def self.bar
    puts 'class method'
  end
end

Foo.bar # "class method"

②
class Foo
  class << self
    def bar
      puts 'class method'
    end
  end
end

Foo.bar # "class method"

③
class Foo; end
def Foo.bar
  puts 'class method'
end

Foo.bar # "class method"

①はクラスメソッドがわかりやすく記載されている。 ②はrailsでよく書かれている! ③は自分ではあまりお目にかからないですが使われているらしい...

次はインスタンスメソッド!!

①
class Foo
  def baz
    puts 'instance method'
  end
end

Foo.new.baz # "instance method"

②
class Foo
  attr_accessor :baz
end

foo = Foo.new
foo.baz = 'instance method'
puts foo.baz

③
class Foo; end

foo = Foo.new
def foo.bar
  puts 'instance method'
end

Foo.new.baz # "instance method"

うーん色々な書き方があるんだね

英語の重要文法①ー述語動詞、準動詞ー

今日はプログラミングのことから離れて英語の重要だと思うルールを数ある中から一つ紹介しよう。

こんなルールがあるんだって気付いたら英語の表現が広がるし、リーディング能力も上がる。

webエンジニアなら「stackoverflowの記事をちゃんと読みたい!」とか「世界にむけて英語で質問がしたい!」..と思ったりするよね?

今日紹介したいのは動詞に関する事である。
述語動詞準動詞
聞いたことはあるかな?
聞いたこと合ってもどういう意味かわからない人は結構いるはず。
私も最近まで知らなかったし聞いたこともなかった気がする..。
まずどういうものか特徴を挙げてから例文で確認してみよう。

ーーー述語動詞の特徴ーーー

①必ず現在形か過去形

②述語動詞がなければ文が成り立たない(つまり不可欠)

③1つの文で1つしか使えない(文とは主語+述語)

④動詞の働きしかしない

ーーー準動詞の特徴ーーー

①形容詞、副詞として働く

②準動詞がなくても文は成り立つ

③1つの文で何回でも使える

[例文 A]

He drinks coffee.  訳) 彼はコーヒーを飲む。

クソみたいな例文ですいませんw
この例文の動詞はdrinksのみ
述語動詞の特徴①②③④全てに当てはまってるよね。
当てはまらない場合次のような文になってしまう。
He coffee.(文が成り立たない)
He drunk coffee.(動詞が過去完了形。意味不明になってしまう。)

[例文 B]

He drinks boiled coffee in the smelling room. 訳) 彼は沸騰した(された)コーヒーを臭い部屋で飲む。  

Heってもしかして上島竜兵さんのことかな?
準動詞 がboiled 、 smellingの2つ出てきました
この例文ではboiledはcoffeeを修飾し、smellingはroomを修飾する形容詞である。 準動詞は2つ以上あっても問題ない。準動詞がなかったら.."He drinks coffee in the room." 成立するでしょ?

簡単に説明したが、なんとなく述語動詞と準動詞の特徴について理解できたかな?
長文になるとこれは成立しないのではないか..と思うかもしれない。 大丈夫!! 例外はあるが8割の英文にて通用する!!

最後になるが述語動詞と準動詞の特徴を知る最大のメリットは...

述語動詞発見することで難しい長文であってもなんとなく理解することが出来る!!
なぜなら述語動詞は文の要になるからだ。

rails "before_action"で記述を簡素化しよう!

Hey, guys!

railsでコードを書いていて同じコードが重複してしまうことってあるよね??
なるべく重複したコードは避けたい。。
そんな時に使えるbefore_actionで簡素化してみよう!
よくある重複する例としては

@article = Article.find(params[:id])

findを使って記事をArticleモデルのデータベースから取り出してくる時。

def show
  @article = Article.find(params[:id])
end

def edit
  @article = Article.find(params[:id])
end

def update
  @article = Article.find(params[:id])
end

def destroy
  @article = Article.find(params[:id])
end

4つのアクション内で同じものが重複してしまっている...
そんな時に使えるのがbefore_actionだ。
とりあえずコードの一番下に重複した部分をメソッドとして追加してみる。

def set_article
  @article = Article.find(params[:id])
end

これを記述した後にbefore_actionを同ファイルの上の方に記述。
set_articleメソッドを記述すること。

before_action :set_article

これでOK! それでは重複した部分を削除しよう!

before_action :set_article

def show
end

def edit
end

def update
end

def destroy
end

def set_article
  @article = Article.find(params[:id])
end

こうするとshowアクションとかが実行される前にset_articleアクションが読み込まれる。
また、onlyでアクションを指定することも出来る!

before_action :set_article, only:[:show, :edit, :update, :destroy]

簡単でしょ?

Have a wonderful Christmas!

My boss, technuma san, advised me how to spend the Christmas in best way.

"Just write codes ;)"

See you :)

railsでMVC作成の超簡単な流れ

Hey, guys:)
さて早速ですがターミナルでrailsアプリの基盤であるMVCを作ってみよう!

まずはターミナルでコントローラーから作成!

$ rails generate controller home top

homeはコントローラー名でtopはアクション名だよ!

topアクションのビューファイルも生成されてるよ!

次はモデルとデータベースを作ってみよう!

$ rails generate model Blog title:string content:text

モデルを作成!

Blogがモデル名でtitle:string / content:text= カラム名:データ型 だよ!

とどめに

rake db:migrate

データベースを作っちゃえ!

力が有り余ったので英訳してみた

Lets's create MVC with terminal which is foundation of rails application.
First of all, type below.

$ rails generate controller home top

"home" is the name of controller and "top" is action.
If you want to create the model and database, you can do it easily as below

$ rails generate model Blog title:string content:text

"Blog" = name of database, title:string / content:text = column:Data Type

rake db:migrate

The code of above creates the database of your cool application.

英語のライティングってクソ難しい..

bye guys, see you next time : - )

モバイル版とPC版のビューの違いを@media screenで指定*CSS*

こんにちは、エンジニア見習いのブライアンです。 HTML/CSS/JSの知識はまだまだですが、とあるwebアプリの開発中機能のビューを担当させていただくこととなりました。
利用者様は主にスマホから利用していただいている為、モバイル版向けにビューを作成すればいいんだなと取り組みはじめました。
なんとかそれなりにいい感じのビューが出来上がってきた頃、PC版も考慮するように指示を受けました。 何か嫌な予感がする...と思いPC版に変換するとやはり今まで作成していたビューが人に見せてはいけないぐらい歪んでしまいました...
width,height,margin,padding等全てがモバイル版しか考慮しなかった為、画面の大きさが何倍も違うPC版だとそのようなことになるのは当然です。 そんな私を救ってくれたのは@media screenというコマンドです。
実際にどのようにして使うかというと...

@media screen and (max-width: 703px){
  .content{
    margin: 100px;
  }
}

上記はブラウザのwidthが703pxまではcontentクラスのmargin:100pxとして読み込まれます。widthが704px超えてしまうと上記のコードは読み込まれません。

@media screen and (min-width: 704px) and (max-width: 1055px){
  .content{
    margin:180px;
  }
}

上記の様に記述すればブラウザのwidthが704px以上1055px以下の時はcontentクラスがmargin:180px読み込まれます。 ブラウザがそれ以外のwidthだと読み込まれません。
この利便性に感謝です。

ターミナルでGithubにブランチを切ってからプッシュ-Mac-

突然ですがGithubを使うのって怖くないでしょうか? 私はめちゃめちゃ怖いです。。 なぜなら会社でアプリ開発途中の機能を一人でググりながらブランチを切ってプッシュしようとしたところ、誤ってマスターにプッシュしてしまったからです。周りのエンジニアの方々に大変ご迷惑をおかけしてしまったため、Githubにプッシュする際はいつも緊張します。指導してくださっているtechnuma師匠に正しくブランチを作成してからプッシュの仕方を教わったのでよろしければ参考にしてください。 まず自分が変更した箇所を確認するためにターミナルに下記を入力しましょう。

$ git status

赤い文字で出て来る箇所が自分の変更したファイルに該当します。 その中でブランチに切りたいファイルをコピーします。 次に

$ git add ファイル名

"ファイル名”の所に上記でコピーしたものをペーストしましょう。 ちゃんとaddができたか確認する為にもう一度statusをみてみましょう。

$ git status

先程addしたファイル名が消えていたらaddに成功です。 次にどのような変更をしたのか一言で記します。

$ git commit -m "変更した内容を一言で(日本語OK)"

次はいよいよブランチを作成します。

$ git checkout -b ブランチ名

ブランチ名はよく英語が使われますが日本語でも大丈夫(らしい)です。 ちゃんとブランチを切れたか確認してみましょう。

$ git branch

先程名付けたブランチ名がでてきたら成功です。 それでは最後にプッシュしましょう。

$ git push origin ブランチ名

これでプッシュ完了です!

最後に今回の記事で紹介したコマンドの流れです。↓

$ git status  
$ git add  
$ git status    
$ git commit -m "作業内容を一言で表す"    
$ git checkout -b ブランチ名  
$ git branch  
$ git push origin ブランチ名    

ローカル環境の立ち上げ

Hi :)

株式会社デザートでプログラミングが全くの未経験者の私が開発に携わらせていただくことになりました。 それがきっかけでMacbookを購入し、ローカル環境でwebアプリケーションの機能追加のお仕事をいただいております。
気付いたら1ヶ月Macbookをシャットダウンせず、使わない時はスリープしていました。スリープしておいた方が立ち上げが早いし、使い終わったら閉じるだけという利便性に惹かれているからだ・・というのは理由の30%ぐらいで実はローカル環境の立ち上げかたがわからないというのが70%の理由です。 シャットダウンしたら今まで使っていたローカル環境が使えなくなるのではないか・・ そんな不安をふっ飛ばしてくれたのはtechnuma先生でした。伝授していただいたことを以下に記します。
まずターミナルから開発しているディレクトリへ移動しrailsのサーバーを立ち上げる。ターミナルで以下を入力。

bin/rails s

立ち上がるまでに時間がかかるが焦らなくて大丈夫。 次にターミナルで新しいタブを開き以下を入力しMySQL(データベース)を立ち上げる。

 mysql.server start

SUCCESS!!と出たら成功だ! 続けて

bin/rake db:migrate RAILS_ENV=development

と入力し、その後

redis-server

と入力したらケーキ(?)みたいな絵が出てきます! これでローカル環境立ち上がりました。