Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

週刊Railsウォッチ: Ruby技術者認定試験再受験無料キャンペーン、Starlink日本で販売開始ほか(20221019後編)

こんにちは、hachi8833です。

週刊Railsウォッチについて

  • 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏

TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)

🔗Ruby

🔗 スライド『Towards Ruby 4 JIT』(Ruby Weeklyより)


つっつきボイス:「@k0kubunさんのRubyKaigi 2022スライドがRuby Weeklyで紹介されていました」「もうRuby 4のJITの話をしてる」「考えてみたら今のRubyにはMJITとYJITが両方入っているんですね」「"Ruby 4ではJavaやJavaScript並に高速にしたい"、強い」「Rubyは着々と高速化が進んでいて本当に凄い」「言語が速いと安心して使えますよね」

🔗 Railsのcompact_blankRuby Weeklyより)


つっつきボイス:「Rubyのcompactの代わりにcompact_blankを使うと空文字列や空配列や空ハッシュやfalseなども取り除くんですね」「とてもRailsらしいメソッド: 知ってたら使いたい👍」

# api.rubyonrails.orgより
[1, "", nil, 2, " ", [], {}, false, true].compact_blank
# =>  [1, 2, true]

Set.new([nil, "", 1, 2])
# => [2, 1] (or [1, 2])

参考: Rails API compact_blank -- Enumerable
参考: Enumerable#compact (Ruby 3.1 リファレンスマニュアル)


後で調べると、sue445さんが同じような趣旨で別のgemを作っていたことがあったのを見つけました↓。

参考: compact_blankというgemを作った - くりにっき

🔗 Ruby技術者認定試験Gold 3.1と再受験無料キャンペーン


つっつきボイス:「Gold 3.1を受けた人が出始めたんですね」「"今はバージョンアップのキャンペーンで落ちたらタダで再受験できるらしい"ですって↓」「当然ですが2.1時代からいろいろ変わってるようですね」

参考: Ruby技術者認定試験再受験無料キャンペーン(2022年10月3日開始)

「ヒアドキュメントの<<-EOS<<EOSの違いはいつもググって公式ドキュメントを見てる」「=~の向きは"おたまじゃくしが左に向かう"と覚えてます」「String#include?は正規表現を引数に取れない: Ruby技術者認定試験はこういうコアな問題が結構出る印象ありますね」「多重ループ内のreturnbreakの違いも定番」「Ruby技術者認定試験は取りたい人はぜひ取るといいと思います👍」「自分も取りたいと思いつつまだでした...」

参考: §ヒアドキュメント (行指向文字列リテラル) -- リテラル (Ruby 3.1 リファレンスマニュアル)


「試験つながりでこちらのツイートも貼りました↓」「プリンタかプリンターか」「オープンリゾルバかオープンリゾルバーか」「たしか小説家の森博嗣さんだったかな、大学で教えていることもあってかこういう表記の違いに厳しかった覚えがあります」

「結局この辺の違いは出版社や企業ごとにスタイルガイドで定めるしかないですね」「ちなみにマイクロソフトはある時期から各国向けのスタイルガイドを公開しています↓」

参考: 各言語版スタイル ガイドのダウンロード - Microsoft | ランゲージ ポータル

🔗 ESM アジャイル事業部が購入している書籍たち


つっつきボイス:「会社で購入した書籍リスト、面白そう」「BPSでもやってみたい」「PoEAAもリストにありますね: 息の長い本👍」

🔗 endoflife.date


つっつきボイス:「見てのとおり、さまざまなソフトウェアバージョンのEOL情報を集めたサイトです」「EOLをググるとこのサイトがよく出てきますね」

🔗 その他Ruby


つっつきボイス:「これも面白い記事でしたね」「最初はRubyKaigiという名前ではなかった」「知らない話もいっぱいありますね」「RubyWorld ConferenceなどのRuby関連イベントが増えたことで、RubyKaigiが専門的な話にフォーカスできるようになってきた↓のはいい流れだと思います」

つまり、すべての登壇者を「RubyKaigi」で巻き取るのではなく、より小規模で登竜門的な場として「地域Ruby会議」を開催する方針になりました。さらに、2009年に松江で「RubyWorld Conference」が始まって、ビジネス寄りのRubyの話はこのカンファレンスで話す流れができました。さらに、これは比較的最近の2020年からですが「Kaigi on Rails」ができて、Ruby on Railsの話はこちらでするようになりました。
同記事より

「このあたりはRubyKaigiやさまざまな場で少しずつ話されていますし、昔の動画をネットで探せば当時の雰囲気もある程度わかりますけど↓、やはりこういうふうに歴史がまとまるのはありがたいですね👍」

参考: Ruby Ruined My Life. | 日本Ruby会議2011(7月16日〜18日)

🔗DB

🔗 260万行のテーブルを更新した話


つっつきボイス:「大規模なテーブル更新でuser.meta.transform_values!(&:to_i))のようなRuby側の処理を加えるのはいかにもつらそう↓」

# 同記事より
user.update_columns(new_column1: user.old_column1_attributes,
                    new_column2: user.old_column2_attributes,
                    meta_jsonb: user.meta.transform_values!(&:to_i))

「記事ではバッチに分割して対応したそうです↓」「Rubyの処理があるとそれでも重くなりそうだけどRailsらしい方法でやることにしたようですね」

# 同記事より
User.find_each(batch_size: 100_000, start: start_id, finish: finish_id) do |user|
  p "Processing user id #{user.id}"
  user.update_columns(new_column1: user.old_column1_attributes,
                      new_column2: user.old_column2_attributes,
                      meta_jsonb: user.meta.transform_values!(&:to_i))
end

「ところで上のp "Processing user id #{user.id}"のように処理中のidも出力しておくのはとても大事」「そうそう、やっとかないと途中で止まったときにどこから再開したらいいからわからなくなったりしますよね」

🔗クラウド/コンテナ/インフラ/Serverless

🔗 Google Cloud Workstations発表(Publickeyより)


つっつきボイス:「Googleが発表したCloud Workstationsはマネージドのクラウド開発環境で、AWS Cloud9やGitHub Codespacesなんかもそうですね」「GoogleもクラウドIDEサービスに参入したんですね」

参考: AWS Cloud9(Cloud IDE でコードを記述、実行、デバッグ)| AWS
参考: Codespaces | GitHub

「こうしたクラウドIDEはプロジェクトメンバーが増減したときの管理がとてもやりやすいのがメリット: 今どきはエンジニアの出入りが頻繁なので、プロジェクトに参加する新メンバーが環境構築に何日もかかるとコストにしかならないので、なるべく減らしたい」「メンバーが参加・退社したときの秘密キーの扱いなどもクラウドIDEの方がやりやすいですね」

🔗 BigQueryの非構造化データサポート(Publickeyより)

「BigQueryが非構造化データをサポートしたという発表もありましたね」「"Google Cloud Storageのバケットのテーブル形表現"とあるので、Googleが既に持っている機能を活用している感じ」「Cloud Storageバケットをテーブルとして扱ったりできるかも」「オブジェクトのメタデータにSQLクエリをかけられるとあるので、音声データや動画データに後から文字起こしのメタデータを付与して検索したりできるかも: なかなか面白そう👍」

参考: Cloud Storage  |  Google Cloud

🔗言語/ツール/OS/CPU

🔗 manコマンド


つっつきボイス:「たしかにコマンドとして配布されるものにはmanがある方がいいという気持ちはわかる: --helpより詳しいことも多いし」「記事ではman(1)とかman(4)などの違いも解説もされてますね」「man(5)はゲームか」「aproposwhatisって知らなかった」

🔗 Starlinkが日本でサービス開始

参考: スターリンク - Wikipedia

つっつきボイス:「Starlink誰か買いました?」「月額1万ちょいとかなら買おうと思えば買えそうかな」「とりあえず以下の導入してみた記事がよくまとまっていました↓」

参考: 200Mbps超えを連発--日本上陸した「Starlink」をさっそく自宅に導入 - CNET Japan

「記事で面白いのは、Starlinkアンテナにはアクチュエータが付いていて、設置してしばらくすると自動的にアンテナが動いて衛星を探索するところ」「お〜」「パラボラアンテナの指向性はかなり厳しいはずなので手動調整だと相当難しいと思います: 衛星エンジニアのサポートなしで設置する前提になっているところは日本のメーカーができないタイプの売り方ですね」「たしかに日本だとサポートを売りがちですよね」「日本は山がちなのでStarlinkのビジネスモデルはマッチすると思います」「山間地でもこのパフォーマンスが得られたら強力ですね」

「ただ消費電力は割とかかるみたい: この記事だと通常50Wぐらいでピーク時100W超えぐらいらしい」「そういえばStarlinkのアンテナがあったかいものだから寒冷地だとネコがアンテナに座り込んじゃうそうです↓😺」

以下はつっつき後に見つけたツイートです。


後編は以上です。

バックナンバー(2022年度第4四半期)

週刊Railsウォッチ: Rails向けLanguage Server “refreshing”開発中、JetBrains Fleetほか(20221018前編)

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。

Ruby Weekly

Publickey

publickey_banner_captured


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。