第87回 Ruby関西 勉強会 に参加して、 Action Cableで簡易チャットを作ってみたというを発表しました。
会場
大阪産業創造館(サンソウカン) 会議室B で早めに到着したら、 鍵がまだ空いていなかったので、他のスタッフと連絡をとって、 鍵を受け取りに行って開けました。
ライブ配信テスト
今回はライブ配信を試していました。
rtmp 送信ができれば何でもよかったのですが、あまり選択肢がなかったようで、 macOS から OBS か、 Android で Larix broadcaster を試していたのですが、 今回は機種変更前のスマホに Larix broadcaster を入れて、 今使っている方のスマホでテザリングして配信してみました。
映像のビットレートを 500K にして、事前の見積もりどおり全体で通信量は 1 ギガ台 (1ギガ以上2ギガ未満) という感じでした。
Action Cableで簡易チャットを作ってみた
今回も docker の中で実行しました。 サイズはそのままで問題なかったのですが、フルスクリーンがうまくいかなかったので、下のウサギとカメがちょっとしか見えていませんでした。
スライドはいつも通り Rabbit Slide Show (RubyGems), SlideShare, Speaker Deck にあげています。(ソースは github にあげています。)
発表中でははっきり言い忘れていたのですが、基本的に夜だけ作業していて、基本部分作成が1日、 VPS にデプロイで1日、その後の調整に1週間ぐらいという感じでした。
自分の中では公開するのが当たり前すぎて、こちらも発表中では言い忘れていたのですが、ソースコードも https://github.com/znz/chat-201906 で公開しています。
カジュアルSorbet
Sorbet の使い始め方の話でした。
しっかり使おうとするとコードの中にも色々追加しないといけなくて大変そうでした。
正しいメールアドレスのフォーマットをもう一度考える
色々正規表現でのチェックがあるけど、結局入力ミスとかも考えると確認メールを送るのが確実のようです。
その場では詳細を思い出せなかったのですが、 メールアドレスのバリデーション崩壊のお知らせ、もしくは、全てが UTF-8 になる (メールアドレスの国際化(JANOG25からの変更点)) のような話もあるので、将来的には US-ASCII の範囲外の文字もメールアドレスに入ってくる可能性がありそうです。
メールサーバーに EHLO して試してみると gmail や outlook.com は SMTPUTF8 に対応していて、 自分で動かしている postfix は非対応でした。
ドメインの方はエンコードされた状態 (xn– で始まるアレ) があるので、そちらで入力してもらうというのでも回避できそうですが、ローカルパート (@
の左側) の解釈は受け取るサーバー次第で US-ASCII へのエンコード方法は一般的には決められなさそうなので、 バリデーションするならなんでも受け付けることになりそうです。
既存の有効なメールアドレスでもローカルパートの大文字が小文字に変換されてしまって届かないというトラブルが起きているので、 大文字を含むメールアドレスと同様に送信側のシステムによっては壊れるというだけになるかもしれません。
Testing GraphQL-Ruby on Rails With RSpec (TDD で始める GraphQL Ruby)
あらかじめ用意したものを使ったライブコーディングでした。
Ruby 初級者向けレッスン 71 回 –テスト–
test-unit を使ったテストの話でした。
話には出てきませんでしたが、今は test-unit, minitest の他に power_assert も bundled gem として入っているので、 ブロック付きの assert (assert { }
) で書くのもありかもしれないと思いました。
クロージング & 告知
大阪Ruby会議02 の告知がありました。 9 月はこれがあるので Ruby 関西勉強会は開催せず、次回は 11 月ぐらいになりそうです。