ククログ

株式会社クリアコード > ククログ > RubyKaigi 2022に現地参加してきました! #rubykaigi

RubyKaigi 2022に現地参加してきました! #rubykaigi

9月の8, 9, 10日に三重で開催されたRubyKaigi 2022に現地参加してきた福田です。

今回初めて現地参加をして、Rubyってカッコ良い!面白そう!と感銘を受けました。

本記事では、RubyKaigiに参加して感じたことを紹介します。

私とRuby

去年クリアコードに転職してきた私ですが、クリアコードの採用プロセス時に初めてRubyを触り出しました (クリアコードはRubyを得意としています1)。 なので、Rubyを触り出して1年くらいになります。

この1年は、主にFluentdのサポート2を通してRubyを触ってきました。 前職で主にC#やPythonやTypeScriptを扱っていた自分にとって、一番大変だったのは型を管理しない点でした。 Pythonでは型アノテーションを積極的に使っていましたし、他の言語でも型を宣言してコードを管理することが当たり前の世界でした。 なので、ロジックの流れを追う時は引数の型を追っていくことに慣れていたのです。

Fleuntdはほぼ全てRubyで書かれています(GitHubのリポジトリでは99%以上がRubyと表示されています)。 このようなある程度の規模のアプリケーションのロジックを型無しで追うことにしばらく苦労していました。

最近は少しずつ慣れてきており、他の慣れている言語と同じくらいのペースで読み書きできるようになってきました。 しかし、Pythonの方が使い慣れているし、たくさん使われていそうなのでなんとなく機能も強そうと思ったりして、スクリプト言語を使いたいときは自然とPythonに手が伸びることも多々ありました。

RubyKaigi 2022を楽しむ

そのような状態の私でしたが、RubyKaigi 2022に現地参加することになりました。 クリアコードがRubyKaigi 2022のスポンサーになっているのでチケットがあり、私が参加させてもらえることになりました。

ということで須藤社長と2人でいざ三重へ。

3日間にわたって講演を聞くのはもちろんですが、 講演の空き時間などにも須藤社長のお知り合いの方々に紹介していただき、色々なお話を聞くことができました。 GitHub上で見かけた方とも直接会えたりもしました。 GitHub上でやり取りする人が直接会ったことのある人だということは楽しいです。 ククログを読んでるよ!と言ってくださる方もたくさんいらっしゃって、身近なところで読んでもらえてるんだと思うと嬉しかったです。

講演が終わると、毎日誰かを誘って松坂牛や伊勢海老などを食べに行きました (あまり大人数にならないように、かつお酒を控えめに)。 その時にも面白い話をたくさん聞けました。

講演自体も面白かったですが、高速化の話や並列処理に関する話は難しくてあまり理解できないものも多かったです。 それでも最前線で皆さんが取り組まれていることのジャンルや雰囲気が分かりましたし、 講演以外の時間でも色々なお話を聞けました。

感じたこと

Rubyは開発者に自由を与えることを大事にしている

Rubyは開発者に自由を与えることを大事にしている、ということを何度も感じました。 自由に開発できてプログラミングを楽しめる言語を目指しているのだと感じました。 カッコいいですね!

色々な書き方や使い方ができることや、Pythonの型アノテーションのようなものが積極的には導入されていないことには、 このような背景があるのだろうと納得しました。

特に型の情報が全くない状態で大規模なソースコードを保守できるのか、型が欲しくならないのか、 ということはずっと気になっていたことで、今回須藤さんのお知り合いの方にお聞きすることができました。 規模が大きくなっても型の情報無しで十分保守できる、ということをお聞きできました。

例えば、あるメソッドの引数が何の型であるかはそこまで気にしなくて良いということでした。 変数の名前やメソッドの名前通りにそれらは振る舞うはずであり、そのレイヤーでそれらの内部の実装まで踏み込む必要は通常ありません。 もしその内部までロジックを追う必要があった場合も、コンテキストや変数の名前などから実装を特定できるべきですし、 それが難しかったとしても実行時に直接そのオブジェクトに問い合わせれば分かります。

次のようにbinding.irbをコードに挟むことで、その時点でirbを起動させることができます。

class TestObj
  def initialize(a)
    @a = a
  end

  def print
    p @a
  end
end

a = TestObj.new("aaa")

binding.irb

a.print

irbが起動したら、例えば次のように調べることができます。

# 現スコープのローカル変数一覧
irb(main):001:0> local_variables
=> [:_, :a]
# 変数aのクラス情報など
irb(main):002:0> a
=> #<TestObj:0x000000014814df18 @arg="aaa">
# 変数aのprintメソッドの定義場所
irb(main):003:0> a.method(:print).source_location
=> ["test.rb", 6]

このように、講演以外でも色々と勉強になった3日間でした。

Rubyのコミュニティが面白い!

3日間を通して強く感じたのは、Rubyのコミュニティの面白さです。

特に、2日目のMatzさんの講演や、"Ruby Committers vs The World"はとても刺激的でした。

Matzさんの「Rubyはメジャーじゃなくてもいい、マイナーでも自分達の価値を追求していくだけだ」というお話が強く印象に残っています。 自分も、Pythonの方がメジャーだからという感覚だけで、なんとなくRubyは不便なんじゃないか、Pythonの方がカッコいいのではないか、と思っていた部分があったように思います。 実際にRubyの機能不足で困ったことがあるわけではないのにも関わらず、そう思ってしまっていた部分がありました。 Matzさんのお話をお聞きして、Pythonの方がメジャーだから、という理由だけでRubyを使うことを避けてPythonを使うことは、もったいないことだなと感じるようになりました。 Matzさんのお話でもう一つ印象に残っていることは、「Rubyの価値はこのコミュニティだ」ということです。 その通り、RubyKaigiではコミュニティの面白さを強く感じました。

"Ruby Committers vs The World"では、コミッターの方々がRubyの仕様について熱烈に討論されているのを目の前で見て、とても刺激的でした。 それを見ていて、これこそがRubyのすごいところだと感じたのです。 それは、Rubyが日本からスタートしているおかげで、このようなグローバルなカンファレンスが日本で行われたり、最先端の話を生で日本語で聞いたりできる、というところです。 Rubyのような言語の開発が、このような面白いコミュニティによって、日本人のとても身近なところで行われていること、それが自分にとってのRubyの価値だと感じました。 偶然日本に生まれ、須藤社長のいるクリアコードに入社したのだから、こんな身近な面白いコミュニティに積極的に関わらないという手はありません。

もっともっとRubyと関わっていきたいなと、思いを新たにした自分でした。

まとめ

今回の記事では、RubyKaigi 2022に現地参加して感じたことを紹介しました。

Rubyの見方が大きく変わった3日間となりました。英語に堪能でない私のような日本人にとっては、Rubyとそのコミュニティほど身近なところでワクワクさせてくれるものはありません。 自分なりの形で少しずつでもRubyの発展に貢献していきたいと強く思いました。 まずはRubyの色々な面白いツールを使ったり作ったりするところから始めていきたいと思います。

クリアコードの須藤社長はRubyのコミッターの1人です。 クリアコードではRubyを使う仕事はもちろん、Ruby以外でも様々な自由ソフトウェアのオープンな開発を行っています。 興味を持たれた方はクリアコードの採用情報をぜひご覧ください。

  1. 社長の須藤はRubyのコミッターです。Rubyに関する記事をたくさん公開しているので、ぜひご覧ください。

  2. クリアコードはFluentdの開発/メンテナンスに参加し、サポート/コンサルタントを行っています。詳しくはFluentdのサポートサービスをご覧いただき、お問い合わせフォームよりお気楽にお問い合わせください。