じゃるログ

その辺にいるエンジニア

新卒1年目の新米 Rubyist が RubyKaigi2017 に行ってみた

RubyKaigi2017

f:id:soccer1356abc:20170926024740j:plain なんとなく顔を隠してみました(笑)

どうもこんにちは!じゃるです!
先日 9/18 ~ 9/20 に開催されていた RubyKaigi2017 に行ってきました。
今年は広島開催だったのですが、広島が初めての中の人からすると観光気分でテンションMAXでした!!(一応お仕事なんですけどね、、)

そんな感じで3日間参加してきた RubyKaigi について新卒1年目が感じたことなどをまとめていこうと思います。

▼中の人のスペック

念のため中の人のスペックを紹介すると

  • 22歳 男性 独身
  • 新卒1年目のエンジニア
  • 8月に研修が終わったばかりの新米 Rubyist
  • Ruby 歴は6ヶ月くらい
  • 理系ではあるが not 情報系学部出身

という RubyKaigi に参加してセッションを聴いても全く理解できないんじゃないかっていうスペックの人として参加してきました。

f:id:soccer1356abc:20170926023958j:plain 広島のお好み焼きがめちゃウマでした

▼なぜ参加しようと思ったのか

Ruby について知りたかったから

6月の技術研修からコードをバリバリ書くようになったんですけど、コードを書いていてなんとなく気持ち悪い感じがしていました。
というのも、自分が書いたソースコードRuby がどうやって実行しているのかが全然分からなかったんですよね。「こう書くと、こんな感じで動いて、こういう振る舞いをする」みたいなざっくりとした感じでしか理解できていませんでした。
その状態が気持ち悪くてもっと Ruby の内部について知りたいなぁと感じていて参加してみました。

機械に選ばれたから

実は弊社、ゴールドスポンサーだったのでブースを出展していました。そのブース担当を決める際に

array = ["立候補者の名前", "名前", "名前", ......"名前"] 
array.sample(2)

上記のプログラム(こんな感じだった気がする)を実行して、立候補者の中からさらに2名に絞りました。その2名に僕が選ばれたというわけですね。新卒にも平等に権利があってとてもホワイトな会社ですね。いや本当に。array.sample ありがとう。

▼聴いたセッション

f:id:soccer1356abc:20170926023317j:plain Ruby Committers vs the World 開始前 僕が聴いたセッションは

1日目

  • dRuby on Browser
  • Ruby Committers vs the World

2日目

  • Keynote
  • An introduction and future of Ruby coverage library
  • Type Checking Ruby Programs with Annotations
  • Lightning Talks

3日目

  • Compacting GC in MRI
  • Irb 20th anniversary memorial session: Reish and Irb2
  • Writing Lint for Ruby

です。

一応2人でブースの担当もしていたので、そのあたりの調整もしながら聴きに行っていました。個人的には割と聴けた方かなと思ってます。

▼特に印象に残ったセッション

An introduction and future of Ruby coverage library

Yusuke Endoh さんによるテストカバレッジの発表でした。 テストカバレッジとは何か、カバレッジをどのように理解して、今後どう付き合っていくべきか、という感じの発表でした。現在やっている業務と関わりが強い分野だったので、とても興味を持って聞くことができました。
ただ単にコードに対してテストを書くだけではなく

  • どのような観点でテストを書くべきか
  • 仕様や設計に対してしっかりテストを書けているか

を意識するべきであると気づくことができました。上記の2つについて考えるための指標として、テストカバレッジを取る必要があるのかなと思いました。
また、業務でテストを書いている方や今は書いていないが今後書いて行こうと思っている方は、「なぜテストを書くのか」までしっかり考えられると良いのかなと感じました。

Writing Lint for Ruby

Masataka Kuwabara さんによる Lint についての発表でした。 セッションの中身では Rubocop についても触れられていました。Rubocopは

  • Lint としての役割
  • コーディングのスタイルチェックとしての役割

の二面性を持ち合わせているとのことでした。
たしかにRubocopは、設定を気をつけないと厳しめのスタイルチェックが行われてしまって、逆に開発の効率が落ちてしまう危険もあるなぁと感じました。
またRubocop がどのようにコード辿っていて、いかに高速に回そうとしているかのお話もありました。
Rubocop は AST(抽象構文木) にした段階でコードを辿って、コードに問題がないかをチェックしているとのことです。つまりコード自体は実行されていないということですね。通りで早いわけですね。

個人的に特に興味深いと感じた2つのセッションを簡単にまとめてみました。興味が湧いた方はぜひRubyKaigi2017の公式ページに掲載されている動画をご覧になってみてください。

f:id:soccer1356abc:20170926024236j:plain 汁なし担々麺、激ウマ辛でした

▼セッションと同じくらい貴重なイベント

実はセッションと同じくらい貴重な「パーティー」というイベントが全日RubyKaigi のセッション終了後に開催されています。 全世界から集結したエンジニアの方々とお酒を飲みながらフランクに交流することができるとても貴重な機会です。

rubykaigi.org

今回は

  • RubyKaigi 2017 Official Party(Sponsored by Akatsuki Inc.)
  • freee DRINK UP at RubyKaigi 2017(Sponsored by freee K.K.)

に参加してきました。個人的には freee さんのパーティーの方が強く印象に残っています。
というのも僕が「最近Rubyが裏でどう動いているのかが気になっていて勉強をしている」ということを話しました。
そうすると色んな人が 「なぜどう動いているのかが気になったのか」 「この本を読むといい」 「Rubyの次はOSがあってコードがすべて公開されているものもあるから読んでみるといい(名前聞き間違えて分からない、、)」
などなどたくさん教えていただきました。
特にyasulab さんには、割と長い時間色んな話をしていただきました。本当にありがとうございます(Rails tutorialでもお世話になりました)。

▼まとめてみた

とりあえず簡単にまとめると

  • Ruby を始めたばかりの人でもRuby が好きという気持ちがあれば楽しく参加できるし、めっちゃタメになる
  • セッションももちろん重要ですが、それと同じくらいパーティーでの交流もめっちゃ重要

▼今後やっていきたいこと

とりあえず当分の間は、Rubyの言語処理系について学んでいこうかなと思ってます。

これとか

Rubyのしくみ -Ruby Under a Microscope-

Rubyのしくみ -Ruby Under a Microscope-

これとか

これとか Rubyソースコード完全解説

読んでいこうかなと思います。
ちなみにこいつはもう読んだやつですがとてもオススメです。プログラミング初心者の方にもオススメです(ただの主観ですが、、)

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門

他にも何かあれば教えてください〜!
ではでは!