週刊Railsウォッチ(20180723)Railsdm Day 3 Extremeを後追い、PSDにはZeplin.io、好みの分かれるJSX、負荷テストツール比較ほか

こんにちは、hachi8833です。2週間ぶりのご無沙汰でした。暑さでもうろうとしています☀️。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 今回のつっつきも、BPSの福岡拠点であるウイングドアの皆さまと画面共有しながら行いました。いつもありがとうございます。 ⚓【お知らせ】週刊Railsウォッチ「公開つっつき会 第1回」を8/2(木)に開催 週刊Railsウォッチを日頃ご愛顧いただきありがとうございます。 ウォッチを出す前に毎週木曜に社内で「つっつき会」を催していますが、このたび8/2(木)に「公開つっつき会 第1回」を開催するはこびとなりました。以下のTECH PLAYページからエントリーいただけますので、つっつき会を覗いてみたい方はお気軽にご参加ください。普段から質問や発言も自由な気楽な集まりとして行っていますので、普段なかなかできない質問やツッコミなどもお気軽にどうぞ。 エントリページ: 週刊Railsウォッチ 公開つっつき会 第1回|IT勉強会ならTECH PLAY[テックプレイ] — 詳しい内容はエントリページにてご確認ください。 参加対象: Web/Ruby/Rails開発者、およびそれらに興味のある学生 定員: 5名 開催日時: 8月2日(木) 19:30〜21:00(開場は19:15〜) その後の懇親会で軽食をご用意いたします 開催場所: BPS株式会社 会議スペース 新宿区西新宿6-20-7 コンシェリア西新宿TOWER’S WEST 2F) 参加費: 無料 持ち物: 特に必要なものはありません ⚓特集: Rails Developer Meetup 2018 Day 3 Extremeその後 おつかれさまでした。なんとか無事終わってホッとしました。 #railsdm — 徳用カルパス (@yoshi_hirano) July 14, 2018 イベント: Rails Developers Meetup 2018 Day 3 Extreme|IT勉強会ならTECH PLAY[テックプレイ] kamipoさんへの質問: [特別講演] Rails 6 に向けた ActiveRecord の改善 | AMA 動画チャンネル: Rails Developers Meetup - YouTube このボリュームを一日でやるとは…😭今週のウォッチはその分後半のエントリを意識的に減らしました。 つっつきボイス: 「文字どおりエクストリームなボリュームでしたね…キャンセル待ちもならず😢」「スケジュールの密度ちょっと高いかなー😅」「今年3月のRailsdmのときは自分たちも発表しました↓が、タバコ吸ったら休憩時間終わっちゃう感じでした🚬」「ともあれ、Railsdmは技術プレゼンの質もいいし、それでいて技術系に限定されないバラエティ豊かな点も貴重😋」「😃」「あと現場のつらみの話をいろいろ聞けるのもいいですねー: 単なる新しい技術の話とかはググれば済むけど、試してはまった話は実際にやってみた人じゃないとできないので」「毎回出席は体力的に大変ですが」「後追いで興味のあるプレゼンのスライドやYouTube動画で確認するだけでも役に立つし」「ストリーム中継の時点でYouTubeだからそのまま動画として残ってるのはありがたいです」 「TechRachoの舞台裏」をRails Developers Meetup 2018で発表してきました ⚓kamipoさん動画のさわり つっつきボイス: 「とりあえずkamipoさんのActiveRecord話を見たかったので後追いでごくあっさりとチェックしてみました: 冒頭『何にも準備しなくていいと聞いてたんで』と言ってたぐらいで、その場でコミット眺めながら進めてました」 Q: 仮にMySQLだけをサポートするARを作れるとしたらどんな最適化ができそう? A: RDBMSを絞れば確かに最適化はしやすい: mysql2 gemは既にいろいろやりすぎてて線引きがしにくいけどpg gemはやりすぎてないのでこれに絞れるなら最適化の余地は大きそう。 14:38 「PostgreSQLのRails向け拡張って結構いろいろあるし便利な機能が本当にいっぱいあるんだけど、Railsにそういうのを導入するとPostgreSQLでしか動かなくなっちゃうのでRails標準でやるのは難しいでしょうねー🤔」「やはり」「個人的にはポスグレで行って欲しいけどねっ😎」 Q: #30000の次にキリ番ゲットしたら直したいARは? A: もし取れたら、ロールバックしたときにdirty valueもロールバックしたい(今は4種類のステートだけロールバックされる)。 19:05 「dirty valueというものがあったとは…」「dirty value、自分はなるべく使わないようにしてるんだけどな…どこでどう変わるか予測しきれないことあるし」「😲」「1つ手前に戻すぐらいならいいんだけど、コミットとかし始めるとどこまで確実にロールバックできるのか正直不安だし😔」「それもそうですね…」「自分は直接dirty valueを触るよりは別の変数に取っておきたい派🤓」 Q: MySQLのdefault character setをutf8からutf8mb4に変えるというのはどうでしょう? A: MySQLのinnodbにはkey prefix lengthの制限があるので厳しいです: この問題をユーザーに押し付けていいんだったら変えられる。 22:25 「key prefix lengthの件はそのとおりで、MySQLだとinnodbのkey prefix lengthをケアしないとインデックス付けた瞬間にコケるとかあるんですよ」「ありゃー」「MySQLをバージョン8にすればいいんじゃね?っと思ったけど、database.ymlでデフォルトでutf8って書かれたらダメだろうし…実際はどうだったかな?」(RubyMineで探し始める)「あったあった: あー、やっぱりymlテンプレートのデフォルトエンコーディングはutf8か↓」「残念😢」「誰もが新しいバージョンのMySQLを使ってくれていれば問題なくデフォルトをutf8mb4に変えられるんですけど、MySQL 5.6の初期バージョンあたりを使う人たちはkamipoさんの言うようにkey prefix lengthの問題を踏むことになっちゃうので、5.7より前のサポートを打ち切るとかしないとねー🕶」 # https://github.com/rails/rails/blob/bd7b61aefb4382f3cf2113c883f12bc5a3e99ae5/railties/lib/rails/generators/rails/app/templates/config/databases/mysql.yml#L14 default: &default adapter: mysql2 encoding: utf8 pool: <%%= ENV.fetch(“RAILS_MAX_THREADS”) { 5 } %> username: root password: … MySQLのencodingをutf8からutfmb4に変更して寿司ビール問題に対応する Q: 非推奨にしたいActiveRecord APIは? A: 6.0までにということだったらscoping(クラスメソッド)を殺したい(#32380の例を参照)。他にも片手ぐらいある。 24:12 Q: ActiveRecordにぜひ入れたいまったく新しい機能は? A: 若い人に任せたい気持ちだけど、1つあるとすれば#12937。typecastしないpluckが欲しい。(年に数件は同じようなissueが上がる)。 34:56 「kamipoさんがリモート参加だったらしく音声がちょっと聞き取りにくくて、最初crackって言ってるのかなと思ったらpluckだったみたいです」「(issueを見ながら)あー、たとえばsumしたものをpluckすると勝手にtypecastされちゃうってやつか」「なのでtypecastしないバージョンのpluckが欲しいということなんですね」「確かにSQLのSELECTを手動でカスタマイズしているときなんかは生のSQL結果に近いデータが欲しいことが多いし、そういうときに余計なtypecastやられると邪魔なんですよね」 Q: 「これを殺したら速くなる」機能は? A: (中略)たぶんdirty tracking(before_type_cast)を殺せばインスタンス生成がものすごく減ると思う。(中略)つまりAttributes APIをなくせばいい(🤣)。ちなみにDiscourseのSam Saffronが作ってるいろんなgemは、使ってないARの機能を殺すことで速くしている。 40:17 「dirty trackingは余分なこといろいろやってそうではある」「上は相当端折ってますが、dirtyに対応するために相当いろんなインスタンスが生成されてるみたいです」「でしょうねー: でないとあんなにたくさんのdirty attributesに対応できるはずがないし」「Attributes APIをなくす云々はギャグで言ってる感」「そこにありますからね😉」 「Sam SaffronさんはTechRachoでも翻訳記事いくつか出してます↓」「使わないARの機能を殺すというのはそれはそれでありかもね😎」「後でRailsをアップグレードするのが大変そう」「アップグレードよりは、他のgemがその機能を使ってるかもしれないからそのあたりをケアしないといけないのが面倒かも」 Rails: productionでCPU usageが100%になる問題をデバッグする(翻訳) ⚓Form Objectの話 Rails DM … Continue reading 週刊Railsウォッチ(20180723)Railsdm Day 3 Extremeを後追い、PSDにはZeplin.io、好みの分かれるJSX、負荷テストツール比較ほか