Clik here to view.

こんにちは、hachi8833です。今年最後のRailsウォッチ後編です。日本時間12/25夕方の時点のRubyはまだトンテンカンテンやっているようですImage may be NSFW.
Clik here to view.。数日前まではrdocなどドキュメントの更新が増えてリリース間近かと思いきや、直近のコミットを見ているとさまざまな修正が続々入っていてどきどきしています。コミッターの皆さま本当にお疲れさまです。
Image may be NSFW.
Clik here to view.
github.com/ruby/ruby/commits/masterより
2.7 rc2のNEWS↓を改めて見てみると改良・変更が山のように多いですねImage may be NSFW.
Clik here to view.。アグレッシブ…
新機能のnumbered parameterからexperimentalが取れましたね。つい「なんぱら」と呼んでしまいます。
キーワード引数のwarningメッセージも細かく改善されています。
# class.c#L2054
- rb_warn("The last argument is used as keyword parameters");
+ rb_warn("Using the last argument as keyword parameters is deprecated");
以下のように改行を挟んだメソッドチェーンの間にコメントを置けるようになったのも初めて知りました。
foo
# .bar
.baz # => foo.baz
なお直近の@81e3770↓では、(..1)
のmin
をエラーにするよう変更されていました。(1..)
のmax
はその前からエラーになってたようなので合わせたのかもImage may be NSFW.
Clik here to view.。
# 同コミットより
+ assert_raise(RangeError) { (..1).min }
+ assert_raise(RangeError) { (...1).min }
2.7の新機能について詳しくはjnchitoさんの一連の記事をご覧いただくのが早いですね。
- 各記事冒頭にはImage may be NSFW.
Clik here to view.でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成ですImage may be NSFW.
Clik here to view.- 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください
お詫び: 今回のつっつき動画に音声が入っていなかったため、最小限のつっつきボイスとなっていますImage may be NSFW.
Clik here to view.。
Image may be NSFW.
Clik here to view.
お知らせ: 週刊Railsウォッチ「第18回公開つっつき会」(無料)
Image may be NSFW.
Clik here to view.
第18回目公開つっつき会は、来年1月09日(木)19:30〜にBPS会議スペースにて開催されます。今回から会場のPubスペースが隣の部屋に移ります。
週刊Railsウォッチの記事やここだけの話にいち早く触れられるチャンス!発言・質問も自由です。皆さまのお気軽なご参加をお待ちしておりますImage may be NSFW.
Clik here to view.。
Image may be NSFW.
Clik here to view.
臨時ニュース: Railsセキュリティアップデート6.0.2.1 / 5.2.4.1でredis-storeがエラーになる可能性
前回のウォッチ20191223にも追記しましたが、こちらにも再録します。
Image may be NSFW.
Clik here to view.rack gemのセキュリティアップデート2.0.8がリリースされ、Railsも6.0.2.1でrack >= 2.0.8が指定された。アップデートしてみたところ、redis-storeがマウンタブルエンジン(sidekiqのwebインターフェイスらしい)のところで動かなくなったっぽい。
同issueより大意
redis-storeをお使いの方は、本件が解決するまでセキュリティアップデートを待つ必要がありそうです。
なお、同issueのコメントではredis-storeの修正2つで解決できると追記されていますが、本記事公開時点ではまだredis-storeにマージされていません。
Image may be NSFW.
Clik here to view.
Ruby
Image may be NSFW.
Clik here to view.
2.7のキーワード引数変更と待望の公式解説
Ruby 2.7のキーワード引数の仕様変更に関する記事、昨日ようやく公開できました。一度全面的に書き直したりしてかなり時間がかかってますが、日常的なコーディングにおいては、説明その1とその4を押さえておけば十分な気がしますImage may be NSFW.
Clik here to view.https://t.co/fw5LJR2Ekx
— Junichi Ito (伊藤淳一) (@jnchito) December 17, 2019
つっつきボイス:「jnchitoさんがキーワード引数の変更記事をがっつり書いてくれていましたImage may be NSFW.
Clik here to view.」「ありがたい!Image may be NSFW.
Clik here to view.」「エッジケースがいっぱいあるけどjnchitoさんが書いたコードで影響を受けるのはわずかで済みそうだとのことです」「たしかに、こんな書き方普通しないよなみたいなの多いしImage may be NSFW.
Clik here to view.」「皆さんがこんなに苦労しているのを見て、キーワード引数変更の難しさに納得しましたImage may be NSFW.
Clik here to view.」
「と思ってたら、ついこの間(12/12)Rubyの公式サイトにキーワード引数変更の詳しい解説記事が出ていました↓」「みんなが欲しかったヤツImage may be NSFW.
Clik here to view.」「著者はmameさん、レビュアーはJeremy EvansさんとBenoit DalozeさんImage may be NSFW.
Clik here to view.」「jnchitoさん記事では言及されていないので入れ違いだったのかもImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
ruby-lang.orgより
後で上の記事を気合い入れて読んでみましたが、みっちりまとまった力作記事でしたImage may be NSFW.
Clik here to view.。キーワード引数変更についての重要な一次資料ですね。
公式解説の見出しより:
- 概要
- 典型的なケース
- どこが非推奨になるか
- 自分のコードはRuby 2.7で壊れるか?(A:『壊れない可能性はある』)
- 引数の委譲の扱い
- Ruby 2.6以前
- Ruby 3
- Ruby 2.7
- Ruby 2.6/2.7/3で共通に使える委譲方法(A:
Module#ruby2_keywords
を使う)
- その他の微細な変更
- キーワード引数で非シンボルキーが使えるようになる
- 空ハッシュにdouble splatを付けると(
**{}
)引数が従来の[{}]
ではなく空([]
)になる - 非キーワード引数を受け取らないことを示す新しい構文(
**nil
)が導入される
- 自動変換を非推奨にする理由
追記: 本日つい先ほど、本命のガチ解説記事が出ました↓。日本語で真っ先に読めるのはありがたいですねImage may be NSFW.
Clik here to view.。
Link: プロと読み解くRuby 2.7 NEWS – クックパッド開発者ブログ: https://t.co/qxlLMXv9jz
— Yukihiro Matsumoto (@yukihiro_matz) December 25, 2019
Image may be NSFW.
Clik here to view.
Rubyコンカレンシーの進捗レポート(Ruby Weeklyより)
Ruby 3のコンカレンシーモデルについてMatzとkoichiとそれぞれ話す機会があったのでこの記事にまとめる。
同記事より抜粋
記事の見出しより:
- コンカレンシーとパラレリズムとは
- 非決定性が持ち込まれるとどうなるか
- asyncやfalconでRuby Webアプリを改善できるが、Ruby実装全体に効く軽量なフックで拡張したい
- async-ioが提供するIOラッパーは多くの場合暫定的な置き換えとなる
- コンカレンシーの選択肢:
- Auto Fiber(#13618など)
- ラッパー
- 新しいメソッド
- 新しいクラス
- Isolateについて
- キーワードを追加するかどうか
- ブロッキングの発生
- 改変の検出と通知
- 本件はRuby Association GrantとGitHub Sponsorsによって支えられている
つっつきボイス:「Auto Fiberってあったそういえば」「単なるFiberとどう違うんでしたっけ?」「RubyのFiberはcoroutineなので、fiberでマルチスレッドみたいなことをしたければ自分で待ち合わせ処理を書く必要がある、Auto Fiberはマルチスレッドみたいにコンテキスト切り替えを自動でやってくれる感じImage may be NSFW.
Clik here to view.」
参考: class Fiber (Ruby 2.6.0 リファレンスマニュアル)
Thread クラスが表すスレッドと違い、明示的に指定しない限りファイバーのコンテキストは切り替わりません。またファイバーは親子関係を持ちます。Fiber#resume を呼んだファイバーが親になり呼ばれたファイバーが子になります。親子関係を壊すような遷移(例えば自分の親の親のファイバーへ切り替えるような処理)はできません。例外 FiberError が発生します。
docs.ruby-lang.orgより
参考: RubyのGuildとAuto Fiberはどういう名前になれば良いと思いますか? - Quora
(中略)AutoFiberについて。
AutoFiberはnormalpersonことEric Wongが最初にこの機能を提案した時の名前です。機能としてはI/O処理のタイミングでコンテキスト切り替えを行うが、スレッドとは異なり、タイムスライスではコンテキスト切り替えしないというものです。
FiberはCS界ではcoroutineの実現として使われており、暗黙のコンテキスト切り替えを行うAutoFiberはcoroutineではない、すなわちFiberではないという理由で、この名前には難色が示されています。
必要な名前は、一種のスレッドであることを明示しながら、より制限され、より安全である(確率が高く)、より軽量であることを示す名前が期待されます。これがなかなか難しい。
私自身は、最近は「Fiberがcoroutineであることを明示することは実は自明ではなく、さらにcoroutineという単語の定義すら簒奪されつつある昨今、これをAutoFiberと呼んでもよいのではないだろうか」という気になっています。(以下略)
Quoraより
Image may be NSFW.
Clik here to view.
その他Ruby
おととい公開したQiita記事です。puts """abc""" みたいなコードを書いても問題なく動くなんてビックリ!
【トリビア】Rubyにおける3連引用符(ダブルクオート3つ)は何を意味しているのか? https://t.co/QUBPwBLz6j #Qiita
— Junichi Ito (伊藤淳一) (@jnchito) December 15, 2019
つっつきボイス:「あぁ、ダブルクォート3つは""
と"
に解釈されるのかImage may be NSFW.
Clik here to view.」「たしかに出力は変わらないけどImage may be NSFW.
Clik here to view.」
以下はつっつき後のツイートですImage may be NSFW.
Clik here to view.。
Debug Rails issues effectively with tapping_device
Image may be NSFW.
Clik here to view.by @_st0012
Image may be NSFW.
Clik here to view.via @ThePracticalDev
Image may be NSFW.
Clik here to view.#rails #ruby #toolinghttps://t.co/5SQtbNVyZf
— Changelog (@changelog) December 23, 2019
#Railsガイド 『Proプラン』『Teamプラン』から過去バージョンも見れるようになりました!Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.![]()
『今のプロダクトは Rails 5.x だから、Rails 5.x で使える機能に絞って調べたい』といった場面でご活用して頂けると嬉しいですImage may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.詳細は次の #note 記事をご参照くださいImage may be NSFW.
Clik here to view.https://t.co/HJCFKyCMNi pic.twitter.com/oB2uKHfQDv
— Railsガイド Image may be NSFW.
Clik here to view.(@RailsGuidesJP) December 25, 2019
Image may be NSFW.
Clik here to view.
DB
Image may be NSFW.
Clik here to view.
dolt: Git感覚のリレーショナルデータベース(DB Weeklyより)
# 同リポジトリより
$ dolt init
Successfully initialized dolt data repository.
$ dolt sql -q "create table state_populations ( state varchar(14), population int, primary key (state) )"
$ dolt sql -q "show tables"
+-------------------+
| tables |
+-------------------+
| state_populations |
+-------------------+
$ dolt sql -q 'insert into state_populations (state, population) values
("Delaware", 59096),
("Maryland", 319728),
("Tennessee", 35691),
("Virginia", 691937),
("Connecticut", 237946),
("Massachusetts", 378787),
("South Carolina", 249073),
("New Hampshire", 141885),
("Vermont", 85425),
("Georgia", 82548),
("Pennsylvania", 434373),
("Kentucky", 73677),
("New York", 340120),
("New Jersey", 184139),
("North Carolina", 393751),
("Maine", 96540),
("Rhode Island", 68825)'
Rows inserted: 17
Doitかと思ったらDoltでした。
つっつきボイス:「今度こそキワモノでしょうか?」「へぇ〜、GitのようなインターフェースでSQL的な更新かけてバージョン管理するというのはちょっと面白いですねImage may be NSFW.
Clik here to view.: 住所データベースみたいに更新が頻繁でなくて固くメンテしたいようなユースケースとかなら使いみちあるかもImage may be NSFW.
Clik here to view.」「それ用のリポジトリまで作っちゃったそうですが、試しに登録してみたらユーザー名に数字を使えないらしくhachi8833は撥ねられましたImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」
- サイト: DoltHub
Image may be NSFW.
Clik here to view.
dolthub.comより
Image may be NSFW.
Clik here to view.
クラウド/コンテナ/インフラ/Linux/Serverless
Image may be NSFW.
Clik here to view.
AWS RDSプロキシとは
つっつきボイス:「RDSプロキシはこの間のre:Invent 2019で発表されてたヤツですね: 結構よさそうだけどお値段はどうかな?Image may be NSFW.
Clik here to view.」「↓vCPUになってる理由とか謎Image may be NSFW.
Clik here to view.: 近々追ってみよう」
$0.015 per RDS Proxy vCPU hour
RDS Proxy Pricing - Amazon Web Servicesより
「RDSプロキシは平成Ruby会議の以下のスライド↓で紹介されていたことで知りました」
きょうの発表資料でしたー!
(残念ながらアニメーションはしません)#heiseirubykaigi #heiseirubykaigiBhttps://t.co/1o5Qdg02vR— あくあ (@AquaLamp) December 14, 2019
はみだし: 上のスライドの動きがあまりに見事だったので発表者のAquaLampさんにお尋ねしたところ、パワポの変形(morph)機能でやれるとのことでした。
- 元記事: Google Slides vs PowerPoint: a Battle (Not) Worthy of Fighting — 変形機能は今のところPowerPointが強い: Googleスライド頑張れ
Image may be NSFW.
Clik here to view.
JavaScript
Image may be NSFW.
Clik here to view.
Node.jsのはかなさ
つっつきボイス:「Node.jsのLTSの寿命って意外に短いんですね…」「まあ他の言語でもそんなに変わりませんけどImage may be NSFW.
Clik here to view.」「アップグレードで動かなくなるライブラリはつらいImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
CSS/HTML/フロントエンド/テスト
Image may be NSFW.
Clik here to view.
styled-componentとは
# 同記事より
src
├── App
│ ├── Header
│ │ ├── Logo.js
│ │ ├── Title.js
│ │ ├── Subtitle.js
│ │ └── index.js
│ └── Footer
│ ├── List.js
│ ├── ListItem.js
│ ├── Wrapper.js
│ └── index.js
├── shared
│ ├── Button.js
│ ├── Card.js
│ ├── InfiniteList.js
│ ├── EmojiPicker
│ └── Icons
└── index.js
つっつきボイス:「styled-componentsが好きでない人が社内にいるらしいと聞いて」「まあ一部ですけどImage may be NSFW.
Clik here to view.」「CSSだけだとグローバルになってしまいがちですし、コンポーネント的に閉じ込めたい気持ちはワカルImage may be NSFW.
Clik here to view.」「割と最近登場したみたいだけど今後どうなるかな?Image may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他フロントエンド
- 元記事: 手書き風フォント「からかぜ」 - ENUOKA - BOOTH — BPSデザインチームのハートに刺さったそうですImage may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
その他
Image may be NSFW.
Clik here to view.
年末らしい記事
- 元記事: 『Qiitaユーザーが選ぶ、2019年に読んで良かった技術書』アンケート結果発表 - Qiita Zine
- 元記事: スイッチサイエンスで2019年ヒットした電子工作部品にみるMakerのトレンド | fabcross
つっつきボイス:「クリスマスですが年末っぽい記事をいくつか」「Makerのトレンドは自作派にとってうれしい記事!Image may be NSFW.
Clik here to view.」
「自分はスイッチサイエンス↓で買うことが多いかな〜Image may be NSFW.
Clik here to view.」「ここの品は調査が行き届いてて怪しげなものを売ってないのがいいですねImage may be NSFW.
Clik here to view.: といいつつ秋月電子通商とか千石電商も昔から定番ですが」「自作やってたの昔過ぎて最近の通販事情知らなかったImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
switch-science.comより
「そういえばニキシー管↓で表示したことあったな〜Image may be NSFW.
Clik here to view.」「このノイズ多そうな真空管みたいな表示装置、ニキシー管っていうんですね…初めて知りましたImage may be NSFW.
Clik here to view.」
IN-18を6本使用したニキシー管時計を作成中です。
とりあえず通電して動作確認をしました。
コロンを追加してからケースを作成する予定です。 pic.twitter.com/KuJwwsm5g7— シュナバス (@profundum2) May 6, 2018
「昔のビデオデッキなんかに使われてた蛍光表示管↓というのもありましたねImage may be NSFW.
Clik here to view.」「大昔の電卓ってこれでしたImage may be NSFW.
Clik here to view.」「たしか蛍光表示管も真空技術を使ってたかなImage may be NSFW.
Clik here to view.」
シャープの電卓、CS-226Rの表示部です。伊勢電子のFL管「アイトロン」を記号用を含め13本使用しています。独特のセグメントが面白いです。 pic.twitter.com/X9te8tYB8l
— かまがりAA793 (@KamagariAA793) September 7, 2018
「ところで今度はこれ作りません?↓」「作りましょうっImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
番外
Image may be NSFW.
Clik here to view.
宇宙ネタ2題
- 元記事: 突然、100個の星が宇宙から消えていた!新たな天体現象か「宇宙人」の仕業か? | ナゾロジー
- 元記事: 史上最高の精度でパルサーを解析!灯台みたいな教科書のモデルは間違いだった | ナゾロジー
つっつきボイス:「久しぶりの宇宙ネタImage may be NSFW.
Clik here to view.」「ナゾロジーさんは目の付け所のいい良科学記事が多くて大好きですImage may be NSFW.
Clik here to view.」
後編は以上です。Railsウォッチをお読みいただいている皆さま、いつもありがとうございます!Image may be NSFW.
Clik here to view.来年もよろしくお願いします&メリークリスマス。
バックナンバー(2019年度第4四半期)
週刊Railsウォッチ(20191223前編)Railsセキュリティ修正6.0.2.1と5.2.4.1リリース、Ruby 2.7.0-rc2リリース、ActiveRecordのコールバック回避ほか
- 20191217後編 Ruby 2.7の変更点とパターンマッチング、依存性自動アップデートツール、Stack Overflowアンケート2019ほか
- 20191210後編 Ruby 2.7の変更点記事、mrubyで動くmitamae、画像系コラボレーションツールほか
- 20191209前編 Pumaのphased-restartとUnicornのgraceful restart、RailsのTZハックが不要になった話ほか
- 20191204後編 Rubyコードをトランスパイルするruby-next、Cloud Run正式リリース、2019年Web年鑑レポート、V言語ほか
- 20191202前編 Rails 6のimplicit_order_columnはカスタマイズ可能、rubocop-rails 2.4.0リリース、Capistrano記事ほか
- 20191119後編 メソッド参照演算子が廃止、GitHub新機能続々、平成Ruby会議、GitHub OAuthバイパスほか
- 20191118前編 ActiveJob引数のログ抑制、RailsガイドProプランお試し、ファイルアップロードのレジュームgemほか
- 20191112後編 invisible gemで可視性を変えずにパッチ当て、スライド:「型なし言語のための型」、自然言語の言語名を推測ほか
- 20191111前編 Active Recordモデルをprivateで封じ込める、心折れないRailsスキーマ管理、Railsセッションをクロスドメイン共有ほか
- 20191106後編 holiday_japan gemで日本の祝日判定、小さい関数が有害になるとき、Gitブランチのファジー検索ほか
- 20191105前編 Rails 6のデフォルト設定解説、DHHも消したいaccepts_nested_attributes_for、スライド『実践Railsアプリケーション設計』ほか
- 20191029後編 Ruby 2.7.0-preview2、tapping_device gemとhumanize gem、平成Ruby会議ほか
- 20191028前編 RailsにSTI用メソッドsti_class_forとpolymorphic_class_forが追加、RuboCopを変更箇所だけにかけるgem、strftime書式生成サイトほか
- 20191021 Rails 6でhas_many関連の修正やSprockets 4.0対応、Shrine 3.0がリリース、Minitestスタイルガイドほか
- 20191015 スライド「Rails Performance issues and Solutions」を見る、dirtyに*_previously_was が追加、Sidekiq 6.0.1ほか
- 20191008後編 Ruby 2.7のInteger#[]でバイナリチェック、rubyzip gemは強力、13KBのJavaScriptゲームほか
- 20191001後編 RedisとRubyをつなぐredis-object gem、Fullstaq Rubyの新バージョン、COUNT(*)とCOUNT(1)の速度ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp Slackなど)です。