Rubyと仲良くなりたい٩( 'ω' )و

Rubyと仲良くなりたい日々のこと

Kernel偉大という話

Kernelとは

Kernelとは、核心・要点・中心部という意味合いを持つ言葉です。

RubyのKernelは、module Kernel (Ruby 2.5.0)によると、

全てのクラスから参照できるメソッドを定義しているモジュール。

です。

どういう意味?

まず、大事なこと。Kernelモジュールは、モジュールです(そのまんまですみません)。

『全てのクラスから参照できるメソッド』と言うのは、ObjectがKernelモジュールをincludeしていると言うことなのです。

下記の例で言うと、

a = "Hello!!"
a.class
=> String
a.class.sperclass
=> Object

aのクラスはStringです。
StringのスーパークラスがObjectです。
このObjectがKernelモジュールをincludeしているので、aがKernelモジュールを参照できます。

そして、Objectはすべてのクラスのスーパークラスです。
ObjectがKernelモジュールをincludeしているということは、Kernelモジューを『全てのクラスから参照できる』ということになるのです。

どんなのがあるの?

よく見かけるので、Array, Hash, Intege, binding, exit, raise, load, open, p, print, require, select...
書きかけましたが、キリがないので、詳細はこちらのドキュメントからどうぞ。

docs.ruby-lang.org

最後に

よくわからない感じになっていたのですが、先輩に手伝っていただき図に書いたりしながらやっとイメージがついたので要点をまとめました。 Kernel偉大…!

TokyuRuby会議12で初LTをしてきました

TokyuRuby会議

TokyuRuby会議は、Ruby関連のLT大会です。 美味しいものを飲み食いしながらLTを展開するわいわいした会です。 主催者が、この会は「Ruby好きなRubyistを愛でる花見」というようなことを仰っていて、なるほどその通り!と思いました。
普通のLT大会と違って、LT王と飯王の2種類の王が選ばれます。 サントリーさんがスポンサーとなってくださってからは、ビール飲み放題ということでも有名です。

TokyuRuby会議12 - Regional RubyKaigi

今年のTokyuRuby会議

今年は、VOYAGE GROUPさんのオフィスを提供いただき、ビールスポンサーのサントリーさん、コーヒースポンサーのツクルバさんにそれぞれ美味しいビール、美味しいコーヒーをご提供いただいていました。
昔は完全持ち込みで公民館みたいなところで開催してらしたとか。今では無限ビールで有名なLT大会になっていますが、これまでTokyuRuby会議を支えてくださったサントリーの方が今年定年退職されるとのことで花束を贈呈する一幕もあり、歴史を感じました。

初LTをしてきました

TokyuRuby会議は、エントリーのハードルがもっとも低いLT大会(でも王になるハードルは高い)と言われていたのでとりあえずとにかくエントリーしました。そして、去年のTokyuRuby会議に行ったおかげで今の私があるので、その内容を話したいと思い、「TokyuRuby会議行ったら人生変わったww」というタイトルで、表示を頑張りました。

f:id:Chinatz:20180730094926p:plain

よかった点

  • TokyuRuby会議が好きな常連さんが多いので、テーマが場に合っていた。
  • お酒のおかげもあって結構ウケて嬉しかった。
  • いい話!という感想をたくさんいただけて励みになった。
  • 5分いっぱい使って、伝えたかったところまでは全部言えた。
  • 某Asakusa勢の方が「ビール口に含んでるときに笑うスライド出さないでほしいw」と呟いていて嬉しかった笑。

残念だった点

  • 利根川さんに頼りすぎた感。
  • 最初1分ものすごく緊張して足の震えが止まらない。
  • スライドの話題に出させていただいた恩人にお会いできなかった。
  • LT王も自分でエントリーしないといけないことに気づいてなくて後半戦始まってからエントリーしたので、ナウで投票してもらうチャンスを逃していた。

LTをしてみて、大勢のRubyistの方達の前でLTをする、というハードルが若干下がった気がするのと、来年は技術系のお話でエントリーしてみたい(参加する気満々)というモチベーションになって、結果、やってみて本当によかったです。
LTよかった!とかアイコンと本人が一致した!とかで声をかけてくれる人も多くて、やって損することは何もないとも思いました。

当日スタッフもしてきました

運営スタッフではなく、当日のみお手伝いをする当日スタッフをしました。
ご飯周りの整理整頓のお手伝いをさせていただいたのですが、出し方にも工夫が必要でスタッフの人は細かいところをフォローしていらっしゃるのを知りました。
例えば、未開封のものや自分でパンに乗せないと食べられないなどの一手間必要なものは、全然手をつけられなかったり、奥の方に置いているものやパッと見で何なのかわからないものは声をかけないとなかなか手をつけられなかったりなので、運営側で食べてもらえるように配置、トッピング、声かけをしていました。
運営スタッフの方は来る人来る人に自然に声をかけて料理がはけていくのをサポートしていてさすが!と思いました。

当日スタッフをやってみて、これだけのイベントをスムーズに回していてしかも「無理しない」運営をしているのは、積み重ねてきたものや細かな気配りがあってのことだと感じました。
運営スタッフの皆様、本当にありがとうございます。

羊を8匹並べるだけの話

眠れなくて羊を数えていたら羊が8匹になった。 どうすれば羊が8匹並ぶのか考えると、なんか色なパターンで考えてしまった。

ただ並べる

ただ羊を8匹並べる。

"🐏"*8

🐏🐏🐏🐏🐏🐏🐏🐏

mapで並べる

mapでただ羊を並べる。collectでも良い。

p (1..8). map {|n| "🐏" }.join

🐏🐏🐏🐏🐏🐏🐏🐏

犬が混じってる

4匹の羊の中に犬が混じっているので、羊だけキープして他は削除したのちに倍に増やして結合する。

sheep = ["🐏", "🐅", "🐏", "🐅", "🐏", "🐏"]
sheep.keep_if { |n| n =~ /[🐏]/ } 
p (sheep*2).join

🐏🐏🐏🐏🐏🐏🐏🐏

羊を縦に並べる

横に並んでいる羊を一匹ずつ縦に並べる。

sheep = "🐏🐏🐏🐏🐏🐏🐏🐏"
sheep.each_char do |n|
  puts(n)
end

🐏
🐏
🐏
🐏
🐏
🐏
🐏
🐏

ショーンとユキちゃん

ショーンは大人羊。ユキちゃんは子羊。

class Sheep
  def body
    p "🐑"*8
  end
end

shaun = Sheep.new
yukichan = Sheep.new

def yukichan.body
  p "🐏"*8
end

shaun.body
yukichan.body

🐑🐑🐑🐑🐑🐑🐑🐑
🐏🐏🐏🐏🐏🐏🐏🐏

羊がいっぱい٩( 'ω' )و
おやすみなさい。