見出し画像

社内Ruby勉強会をし、技術力向上とプログラミング言語への視座を上げる

社外への発信はPRや採用において非常に重要ですが、社内広報やイベントを通して社内の文化形成や情報浸透も推進していくべきでしょう。

note株式会社では、Ruby未経験のエンジニアでも迅速に戦力となれるように、有志での勉強会を開催しています。この勉強会はnoteエンジニアの小寺さんが主導し、Rubyの基本的構文から最新バージョンで導入された注意点を含めた実践的な内容が扱われます。

勉強会を実施する理由を小寺さんに聞いたところ、技術力の底上げの他に「プログラミング言語の視座を上げる」という部分を重視して開催しているとのことでした。

勉強会の様子とともに、社内で勉強会を行うメリットについてこの記事では紹介していきたいと思います。

勉強会の様子

教科書をもとにirbを用いてライブコーディング的に講義を進めていく。
参加者も手を動かしながら学ぶことができる。勉強会中はチャットで自由に質問可能。

noteでは、他言語での開発経験があるものの、Rubyは未経験というエンジニアが入社することがあります。そのため、新しいメンバーが加わったタイミングで、不定期で勉強会を開催しています。今回は1時間の講義を全3回に分けて行いました。

# 文字列
'abc'.class #=> String
'abc'.class.superclass #=> Object
'abc'.methods #=> [:slice, :slice!, :gsub, :gsub, :upcase, :downcase, :to_i, :length, :size, :encode!,... 他たくさん、使っていれば覚えます。

'abc'.upcase #=> "ABC"
'ABC'.downcase #=> "abc"
'abc'.index('b') #=> 1
'abc'[2] #=> "c"
'abcdef'[2, 3] #=> "cde"
'abcdef'.gsub('cd', 'xx') #=> "abxxef"

'abc' + 'def'  #=> "abcdef"
'abc' << 'def' #=> "abcdef"

# 同じ値を返していますが、実際の動作は異なります。
# 前者は非破壊的(連接して新しい文字列オブジェクトを返す) 
# 後者は破壊的です('abc'の文字列オブジェクトにそのまま連結)

勉強会はRuby初心者を対象としているため、基礎オブジェクトの説明から入ります。しかし、基礎構文や個々のメソッドなどの説明は大半省いて、破壊的操作など、本質的な説明を重点的に行います。

obj = Object.new #=> #<Object:0x007fa1e42b7b58>
obj.class        #=> Object
obj.object_id    #=> 70166647258540
obj.class.ancestors #=> [Object, Kernel, BasicObject]

# RubyのすべてのオブジェクトはObjectクラスを継承しています
# KernelはObjectにincludeされたモジュールです。
# 予約語や組み込み関数に見える記述の多くはたいていObjectクラス(にincludeされたKernel)のメソッドです。

Rubyはすべてオブジェクトで、宣言や記号などメソッドに見えないメソッドなど、Rubyの特徴を捉えプログラム言語に対する理解をショートカットしていきます。

# クラスとはなにか?
Klass= Class.new
klass = Klass.new #=> #<Klass:0x000000010526da30>
# クラス(の定義)とはClassクラスのインスタンスを定数に格納することです。
# そして厳密にはクラスメソッドという仕様はなく、Classクラスのインスタンスの特異メソッドです。

def Klass.meth
  puts 'klass meth.'
end
klass.class.meth #> klass meth

勉強会では、言語仕様についてのTipsについても触れ、Rubyエンジニアたちも言語の理解度を高めることができます。その他、新しいバージョンの新機能、記述表現のテクニックの共有、Rubyの慣習などにも触れていきます。

参加者の感想

Rubyは全てオブジェクトで、それに付随するmethodとattributeっていうことがわかればかなり開発しやすくなるなと思いました。もっと簡単に書く方法がないかなみたいなことを探すときに、irbでそのクラスのmethodsを調べたらそれっぽいものが出てくるというのもわかった。また、エラーメッセージのより深い理解ができた気がするのでデバック等も早くなると思った。

後は単純にシニアエンジニアがRubyコードを書いている時にどんな思考プロセスで進めていっているのかがわかってめちゃくちゃ勉強になった。Rubyに触れるのが初めてなので、このような勉強会があると助かります。

1時間x3回の構成でしたが、個人的には良いペースでした。(以前は30分x6回の構成だったということで書いてます。)現場でよく利用するものや書き方で挙動が微妙に違うところなど、気をつけるTipsを教えてもらえたのが良かったです。

すでに定義済みのクラスをオーバーライドするなど、通常のRuby入門では取り扱わないようなトピックを通してRubyの言語仕様について理解を深められてよかったです。また、irbを活用して開発を進めるという話もなるほどなと思いました。とくにObject、Class、Moduleの構造に触れてもらうことがたすかりました。

社内勉強会を行う理由

技術力の底上げ

社内で勉強会を行う理由として、一番単純なのが全社員の技術力の底上げです。初学者には学びになり、経験者にとっては振り返りの機会になります。

また、ライブコーディング的に行うことで、相互でのやりとりが可能なため、疑問点をすぐに解消できるのは利点でしょう。書籍だけで学習するのとは違ったメリットです。

Rubyの布教

勉強会は、主催である小寺さんのRuby布教活動の一環でもあります。Rubyを知ってもらうことで、Rubyが好きになり、Rubyistを一人でも多く増やそうとしているのです。

プログラミング言語というのは、書きやすさや速度だけではなく、コミュニティに関わる人たちの熱量も大切です。Rubyistが増え、コミュニティが活発になり、多くの人がRubyを支えることで、我々も安心して利用を続けることができます。(小寺さんは単純にRubyが好きなので、好きなものを広めているだけの可能性もありますが 笑)

プログラミング言語の視座を上げる

小寺さんが勉強会をするうえで大事にしている思想が、「視座を上げる」という点です。

1つの言語で開発を続けてきた方にとっては、別の言語への移行はハードルを感じる部分もあるかもしれません。しかし、「Rubyに限らずどの言語でも、ここまで踏み込むと一段技術力が上がる」という部分を勉強会を通して伝えようとしています。

主催する側のメリット:他のエンジニアへの信頼獲得

勉強会を行うことで、主催者は参加した人たちの信頼感の獲得にもつながります。サービスが拡大し、組織が大きくなっていくと、チームごとに数人のエンジニアとしか関わらないことも増えてきます。

チームを横断した取り組みを行うことで、社内のエンジニアとのコミュニケーションにもなり、技術力への信頼性の向上にもつながっています。

まとめ

社内で勉強会を行ってくれるエンジニアがいるのは会社として貴重な財産です。有志で推進してくれる人がいることで、少しずつ社内のコミュニティが形成され、エンジニアとしての文化が醸成されていくと考えています。

noteはまだまだ開発途中のプロダクトであるため、勉強会などを通じて、エンジニアとともに一緒に成長していきたいと思っています。また、記事内でも記載したとおり、Ruby未経験の方の入社も歓迎しています。noteでクリエイターが生活できる世界を一緒に作り上げることに興味がある方は、ぜひご応募ください。

▼noteではサーバーサイドエンジニアを積極採用中

▼noteの技術記事が読みたい方はこちら


note社で働くことに興味がある方は、ぜひカジュアル面談からご応募ください