昨日になりますが、約2年ぶりに岡山Ruby,Ruby on Rails勉強会が開催されました。 そんなに間が空いてたかな…と思ったけれど、確かに空いてた。
今回は、登壇者として申し込んでいました。
自分の発表
今回は数ヶ月前に仕事で調べていたOpenID Connectを題材にして発表しました。 ゴールをOAuth2.0とOpenID Connectについてざっくりとわかってもらうことにして、RailsでOpenID Connectを使うには?に軽く触れるという感じです。 まぁ自分もまだRailsではOpenID Connectでログインできた!というあたりまでしかできていませんが…😅
追記
2020-03-04: OAuth, OpenID Connectに詳しい方々からご指摘やアドバイスを頂き、スライドを修正しています。発表時点のものとは異なっています。
デモでは、権限の認可の結果がキャッシュされていて、確認画面が表示されなかったのでもたついてしまいましたが、本来は以下のような確認画面が出るはずでした。
資料作りでは、ページ数が増えすぎてコンセプトがブレてるなと思ったので、5日前になって作り直そうと思って始めたものの、発表日前日どころか当日の1時間半前まで資料を作ってました。
信じられないと思うが、まだ資料できてません。 #okaruby
— パトラッシュ@エキスパート職 (@patorash) February 29, 2020
泣きながら資料作ってる
— パトラッシュ@エキスパート職 (@patorash) February 29, 2020
資料を作るに当たって
資料を作るに当たってというか、OAuth2.0とOpenID Connectを理解するに当たって、本を3冊読みました。それらを紹介しておきます。
OAuth徹底入門 セキュアな認可システムを適用するための原則と実践
- 作者:Justin Richer,Antonio Sanso
- 発売日: 2019/01/30
- メディア: 単行本(ソフトカバー)
かなりのボリュームですが、OAuth2.0についてと、実装サンプルがあるため、写経をすることですごく勉強になりました。サンプルはnode.jsで作られているのですが、ライブラリのアップデートがあってそのままでは動かないという地雷がありました😇 ただ、やはり翻訳本ということもあってか、理解につまづくこともしばしばありました…。後で紹介する本を読んだあとに、また読むと、理解が深まりました。
雰囲気で使わずきちんと理解する!整理してOAuth2.0を使うためのチュートリアルガイド (技術の泉シリーズ(NextPublishing))
- 作者:Auth屋
- 発売日: 2019/09/20
- メディア: オンデマンド (ペーパーバック)
Auth屋さんのOAuth2.0についての本です。OpenID Connectについては載ってないのですが、PKCEのこととか勉強になりました。
Auth屋さんのOpenID Connectについての本です。OpenID Connectについては、OAuth徹底入門のほうでも書かれているのですが、理解のしやすさでいえば断然こちらの本だと思います。資料を作るときに何度も参考にさせてもらいました😄
他の発表について
パズルで学ぶRuby
同僚のeryskさんの発表。RubyKaigi2019であった、Cookpadさんが考えたRubyパズルをみんなでやってみよう、というものでした。制限時間があり、途中でヒントを出していく方式で、みんなも考えながらRubyの構文に触れることができてとてもよかったと思います。会社で一度発表練習をしていたのですが、その際のフィードバックをすごく活かせてたなと感心しました。
delayed jobの運用
@ore_publicさんの発表。バックグラウンドジョブの制御で抱えていた課題をどうしたか?というもの。delayed jobはジョブにプライオリティをつけて優先度を指定することができるけれど、とはいえ、一度ジョブが動き始めると優先度の高いジョブが後で追加されてもそのジョブが終わるまでは何もできない。これはこのところ勉強しているデータベーススペシャリストの午前問題で出てきた、優先度逆転というやつだな!と思いながら聞いてました。排他制御が働くとどうしてもそうなるので、今回は優先度が最高のジョブのみ処理するプロセスと、その他のジョブを処理する2つのプロセスを置くことで対処したという話でした。
あとは、プロセスの監視でmonitを使って自動起動させたりとか、monitの監視をMackerelで行なったりなど…。発表後の質疑では、systemdにしたほうがいいよという話も。
"Railsをはじめよう"を真似てみた
qt_luigi(岩田プロ)さんの発表。普段は趣味でgoを使っているという話でしたが、Railsを触ってみたら勉強になることがあるかもな、ということで他言語使いからの目線で「Railsをはじめよう」をやってみたという発表で、どういうところでつまづいたか、とか、RESTfulやルーティングについてとかを調べた過程がわかって、Railsの大まかな処理の流れを再確認できてよかったです。質疑では意見交換や、そこの解釈は実際はこうですよ、みたいな話ができてよかったと思います。
それとは別に、なぜか岩田プロのPCのバッテリーが残り少ないのに充電せずに発表してました。
発表者のバッテリーが25%という綱渡りスタート #okaruby
— コバえもん (@koba_emon) February 29, 2020
バッテリーがなくなるのが先か 発表が終わるのが先か #okaruby
— ヒロオカ ケンタロウ (@LeGenD_BeaT) February 29, 2020
充電器あるんかい
— コバえもん (@koba_emon) February 29, 2020
傘はあるけどささない小学生みたいな #okaruby
15分後に死ぬ岩田プロのMac
— パトラッシュ@エキスパート職 (@patorash) February 29, 2020
「ではこれから発表しまーす」 #okaruby
そして・・・
岩田プロのMac、死ななかった。残り14%で生還。 #okaruby
— パトラッシュ@エキスパート職 (@patorash) February 29, 2020
しかし質疑応答している間に残り9%になってました。
Rubyで試すZipkin
岡山大学の乃村研究室の学生による、分散トレーシングシステムのZipkinに関する発表でした。
マイクロサービス化していると、1つの処理に複数のサービスが関わっていることがありますが、そのままだとログが追えないため、zipkinでラベル付して追えるようにしてありました。この発表では、sinatraとrailsで複数のサービスを立ち上げ、それを追うためにrackミドルウェアでZipkinのラベルを貼るための設定と、ラベルを送るFaradayのプラグインの設定などを解説していました。
ZipkinサーバはDockerで起動できるようなので、導入も簡単そうでよさそうだなと思いました!👍👍👍
懇親会は中止
今回は新型コロナウィルスの影響もあって、懇親会は中止となってしまったのが残念でしたが、致し方なし…。
また頻度を上げて開催していくとのことだったので、まだ発表したことない人はぜひチャレンジしていってください!