LIVESENSE ENGINEER BLOG

リブセンスエンジニアの活動や注目していることを発信しています

RubyKaigi2019へ行ってきた(そしてRubyGems.orgで2FAをしよう)

賃貸物件検索サービス、DOOR賃貸の開発・運営をしている岩田です。 個人的にプログラミングの母語(?)がRubyなので、普段からよく使っております。DOOR賃貸もRailsで作られています。

また、リブセンスはRubyをほとんどの事業部で活用しています。Redis Gem を Cluster Mode に対応させる Pull Request を出したりもしています。 made.livesense.co.jp

そんなリブセンスには、カンファレンス参加の費用を会社が全額補助する制度があります。 そんなこともあって先週開催された RubyKaigi2019 に行ってきました。 rubykaigi.org

この記事では、今回の会議中に何度かRubyGems.orgで2段階認証をしてほしい、というアナウンスがありましたので、その手順をまとめてみました。 また私は2度めの参加なのですが、来年に向けて参加のコツのようなものをまとめておきました。

RubyGems.orgで2FAをしよう

今回は何度かRubygems.orgで2FA(2段階認証)をしてほしい(もしくはパスワードを使いまわしせず強いものにする)ということが告知されました。

これはbootstrap-sassのgemでアカウントの乗っ取りが発生し、任意のコードを実行できるように書き換えられてしまったことなどから、認証方式を追加したようです。

github.com

私も社内で実施しているランダムランチ(シャッフルランチ)の組み合わせを作るためのgemなどをrubygemsで公開しています。これはしっかり設定せねば、と思い実際にやってみました。

rubygems.org

2FAはRubyGems.orgのプロフィール画面から設定が可能です(画面上では MULTIFACTOR AUTHENTICATION 「多要素認証」となっていますね)

2段階認証していない状態
2段階認証していない状態

手順は Setting up multi-factor authentication - RubyGems Guides に詳しくありますが、軽くまとめておくと手順としては以下のようになります。

  1. 「Register a new device」を押して、画面に現れるQRコードをお使いのアプリなどで読み込む
  2. アプリで表示される数値を入力する
  3. 次の画面で表示される Recovery codes を安全な場所に保管する(デバイスをなくした時などに必要になります)

設定が完了した状態
設定が完了した状態

gem の公開・更新はたいていCLIから行うと思いますが、そのときに2FA(MFA)を使用する手順はUsing multifactor authentication in command line - RubyGems Guidesにあります。 2FA(MFA)を設定した直後の状態では、ブラウザからのアクセスのみでOTPが必要なようですが、これを「UI and API」にすることでCLIの操作でもOTPが必要になります。

2FA(MFA)をCLIからも使用する
2FA(MFA)をCLIからも使用する

私も簡単なbugfixをしたものを公開し直してみました。

まずCLI上でサインインします。ここでOTPを入力することになります。

$ gem signin
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at https://rubygems.org/sign_up
   Email:   ganta.viii@gmail.com
Password:

You have enabled multi-factor authentication. Please enter OTP code.
Code:   963852
Signed in.

新しいバージョンをbuildします。

$ gem build group_mixer.gemspec
  Successfully built RubyGem
  Name: group_mixer
  Version: 0.5.3
  File: group_mixer-0.5.3.gem

その後、rubygems.org に push しました。ここでもOTPが必要です。

$ gem push group_mixer-0.5.3.gem
Pushing gem to https://rubygems.org...
You have enabled multi-factor authentication. Please enter OTP code.
Code:   573830
Successfully registered gem: group_mixer (0.5.3)

以上で、バージョンアップは完了です。日々、セキュリティを気にしながら開発していきたいですね。

カンファレンスに参加するときのまとめ

  1. チケットは決意を持って買う
  2. 前後の日程を含めたスケジュールを立てる
  3. 会場、宿泊先、その他(川など)を含めた現地の交通は入念にチェック
  4. 安全に気をつけて楽しむ!

チケットを買う

今回のRubyKaigiでは、去年の年末ごろに販売が開始されました。

rubykaigi.doorkeeper.jp

参加を決めているなら、お値段がかなり値引きされているので SuperEarlyBird がおすすめです。 ただしすぐになくなってしまうので、絶対に行く、という強い決意を持って、ポチッと購入しましょう。 会社が全額補助する制度があると、安心して決意することができますね。

前後の日程を含めたスケジュール

チケットを買って行くことを決意したら、次は何でいつ行くかを決めましょう。

注意点は、スケジュールの3日間だけではなく、前日・後日にもイベントがあることです。 rubykaigi.org

また、カンファレンスは観光地で開催されることもあります。 ですので、可能であれば少し長めにホテルを取っておくと、いろんなところに行けるので良いですね。

今回は福岡で、私は後日福岡城跡の大濠公園周辺でゆっくりしておりました。 f:id:iwtn:20190425132208j:plain

会場、宿泊先、その他(川など)を含めた現地の交通をチェック

朝に会場に行く手段、1日が終わった後のパーティーなどに移動する際の交通手段などは、できれば事前に調べて置くと当日楽です。 RubyKaigi2019が開催された博多では、地下鉄・バス・レンタル自転車など多様な交通手段がありました。

ただ、GoogleMapなどで当日でも交通手段を調べることはできますが、多少は余裕を持っていったほうがギリギリにならず、心理的な余裕も確保できます。 私は一度バス乗り場がわからず、迷ってしまいました。

更に、RubyKaigi2019では、様々なスポンサーがあり、朝食や朝・帰宅時のバスも提供されていました。 rubykaigi.org これらも考慮に入れた日程を予め立てておくと、スムーズに移動できて快適です。

楽しむ(安全に気をつけて)

カンファレンスそのものの内容はすべて興味深いものばかりでしたが、セッション以外でも楽しめる要素がいっぱいありました。

ブース

スタンプを集めながら、そのブースの人とサービスについて説明を受けたり会話したりノベルティをもらったりします。 いろんなゲームをするブースもありました。みなさん、いろんな工夫をされていましたね。

なお、リブセンスでは転職ドラフトがブースを出しており、缶バッジとステッカーを配布しておりました。 f:id:iwtn:20190425111014j:plain f:id:iwtn:20190425111155j:plain

パーティー

カンファレンスでは、メインの他のイベントがたくさんあります。

RubyKaigi2019では、以下のように様々なパーティーが開催されておりました。

rubykaigi.org

私も参加しておりましたが、海外からいらしたRubyistや前にお世話になったRubyistと話をしたりして、楽しい時間を過ごせました。

そのほか

カラオケなども開催されているようです。

#rubykaraoke hashtag on Twitter

リブセンスのメンバーも参加していたようです。楽しそうですね。

また、最終日には恒例の川沿いでの集まりなどもありました。夜の中洲は綺麗でした。 f:id:iwtn:20190425135156j:plain

参加しての感想

リブセンスでは9人がRubyKaigi2019に参加し、以下のような感想をもらっています。

高畠さん

人生2回目のRubyKaigi参加で、前回の会議中に仕様が決まった機能が実装されていたりと、文脈が理解できてきた面白さがあった。型を期待しつつも、コードの中には入れない方針をどう達成するか、スパンの長い流れの中での意思決定の難しさや面白さを感じた。

山内さん

「お前Ruby書かないんじゃないの?」って思われてるかもしれない 実際ほとんど書かないんだけど とはいえ我々が運用してるアプリケーションはRubyでできているので安定に動かしたり速く動かしたりするにはRubyのことを知らないといけない

内山さん

僕のRubyKaigi初参加は2015年で、MatzがRuby3の展望を掲げたのを覚えています。今回は、そのRuby3に向けて型/速度/並行性といったそれぞれの面で、登壇者の方たちが具体的な"進捗" をたくさん出されていて「はーすごい」と思わされっぱなしでした。

望月さん

今回初めてのRubykaigiに出席しました。Ruby3に向けての展望や進捗をRubyコミッターの方々から直に聞けてすごく刺激になった。 その一方で言っていることのほとんどが概要的にしか理解できず、もっと事前にRubyについての学習をしておけばより楽しめたと思う。

荒川さん

Ruby3に向けて、型やGuildなどのチャレンジングな取り組みの内容を聞けて大変刺激になったし、Ruby3のリリースが待ち遠しくなった。Rubyコミュニティ自体の盛り上がりも今回初めて直に体感でき、RubyKaigiを通じてRubyをより好きになれました。

池田さん

みんな気になっているであろうruby3の話しが聞けてよかった。型とGuildという大きいプロジェクトが進行していて、とても楽しみである。互換性の話など、広く使われるツールならではの問題などもあり、面白かった。後方互換を切ってまで実装したい機能なのかなど、コミッター間の議論に面白みを感じた。

おわりに

Rubyにおいてgemは強力の機能の一つですので、安全に公開・運用していきたいですね。gemを公開していてまだ2FAをやっていない人は早めに対応しておきましょう。

そして、次回のRubyKaigi2019は長野県の松本になりました!私の地元なので是非参加したいと思っております。松本にも市街の中心部を流れる女鳥羽川がありますので、楽しくなりそうですね!