【Ruby】組み込みライブラリとKernelモジュール
記事の概要
Rubyにデフォルトで用意されているタイトルの内容について確認する
この記事を書く理由
Rubyをちゃんと学ばないまま実務でRailsを触ってきた自分が最近これらを学び、もっと早くから知っていたかった!と感じたから
組み込みライブラリとgem(外部ライブラリ)
RubyやRailsを触っているとよく出てくるString
,Integer
,Array
,hash
などは、組み込みライブラリとして、Rubyに始めから用意されている。(公式リファレンスの組み込みライブラリ一覧)
それに対し、gemというものもある。
開発を行っていると、こちらもよく出てくると思うが(rails
,rspec
,devise
など)、これらはgemと呼ばれているが、わかりやすく言うならgemは「外部ライブラリ」である。
組み込みライブラリとgemは使い方として以下の違いがある。
組み込みライブラリ | gem | |
---|---|---|
使う方法 | 何もしなくても使える | includeしないと使えない |
※組み込みライブラリではないがRubyに元から備わっている「標準ライブラリ」というものもある
個人的雑感
String
,Array
といったものとrspec
,devise
のようなgemが、大枠としては同じ「ライブラリ」であるというのが衝撃だった。
Rubyはこれらのライブラリをそのまま使ったり、includeして使ったりして、目的の挙動を実現しているのだと理解できた。
Kernelモジュール
開発していると、puts
を使って出力を確認する場面が自分にはよくあった。メソッドの中でputs 変数
と書いて、想定した値が取得できているかをターミナルで確認したり、という使い方だ。
このputs
というのはどこで定義されているのか?
それが Kernel モジュール である。
そして、KernelモジュールをObjectクラスがincludeしているため、どのクラスでも基本的にputsが使えるということになる。
Kernelモジュールのリファレンスはこちら。
主要クラスとKernelモジュールの関係を図で表したものを以下に載せておきます。(書籍「プロを目指す人のためのRuby入門」、p300を参考)
個人的雑感
上の図のような言語の仕組みというのは、経験が浅い段階では理解できていないまま実務に当たることも出てくると思うが、まったくわかっていないまま放置するのではなく、少しずつでもいいので理解のために学習していくことが重要なのだと感じた。
転職を考えている方へ
「転職ドラフト」というサービスを使って、企業から指名を受けてみませんか?
実務1-2年目でも、うまくいけば転職ドラフトで年収数百万UPできるようです(ググると記事が見つかるはず)
登録時に次の紹介コードを入れて、その後レジュメ審査が通過すると、もれなくAmazonギフト券3000円分などのプレゼントがもらえます。
気になっている方はぜひ使ってみてください!
紹介コード:HJGJ
転職ドラフト
参考資料
書籍「プロを目指す人のためのRuby入門」Amazonページ
Discussion