- Ruby / Rails関連
週刊Railsウォッチ: Ruby技術者認定試験再受験無料キャンペーン、Starlink日本で販売開始ほか(20221019後編)
こんにちは、hachi8833です。
🔗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_blank
(Ruby Weeklyより)
🗜️You probably want `compact_blank` most places you are using `compact`https://t.co/iTPsQQp7Zk pic.twitter.com/Bsxg87j6WP
— matt swanson 😈 (@_swanson) September 26, 2022
つっつきボイス:「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と再受験無料キャンペーン
Ruby - Zenn 新しいRuby技術者認定試験Gold 3.1を受けた https://t.co/ffcUNIFHzv
— tomi rss (@tomirss) October 12, 2022
つっつきボイス:「Gold 3.1を受けた人が出始めたんですね」「"今はバージョンアップのキャンペーンで落ちたらタダで再受験できるらしい"ですって↓」「当然ですが2.1時代からいろいろ変わってるようですね」
参考: Ruby技術者認定試験再受験無料キャンペーン(2022年10月3日開始)
「ヒアドキュメントの<<-EOS
と<<EOS
の違いはいつもググって公式ドキュメントを見てる」「=~
の向きは"おたまじゃくしが左に向かう"と覚えてます」「String#include?
は正規表現を引数に取れない: Ruby技術者認定試験はこういうコアな問題が結構出る印象ありますね」「多重ループ内のreturn
とbreak
の違いも定番」「Ruby技術者認定試験は取りたい人はぜひ取るといいと思います👍」「自分も取りたいと思いつつまだでした...」
参考: §ヒアドキュメント (行指向文字列リテラル) -- リテラル (Ruby 3.1 リファレンスマニュアル)
「試験つながりでこちらのツイートも貼りました↓」「プリンタかプリンターか」「オープンリゾルバかオープンリゾルバーか」「たしか小説家の森博嗣さんだったかな、大学で教えていることもあってかこういう表記の違いに厳しかった覚えがあります」
本日の応用情報技術者試験ハイライト
「プリンタ」が「プリンター」に変更!
「アクチュエータ」が「アクチュエーター」に変更!
ただし
「サーバ」は「サーバ」のまま!
「オープンリゾルバ」は「オープンリゾルバ」のまま!WHY JAPANESE PEOPLE !! pic.twitter.com/D7uwG48FQb
— HPEO🌐資格部 (@hpeo_jp) October 9, 2022
「結局この辺の違いは出版社や企業ごとにスタイルガイドで定めるしかないですね」「ちなみにマイクロソフトはある時期から各国向けのスタイルガイドを公開しています↓」
参考: 各言語版スタイル ガイドのダウンロード - Microsoft | ランゲージ ポータル
🔗 ESM アジャイル事業部が購入している書籍たち
つっつきボイス:「会社で購入した書籍リスト、面白そう」「BPSでもやってみたい」「PoEAAもリストにありますね: 息の長い本👍」
🔗 endoflife.date
つっつきボイス:「見てのとおり、さまざまなソフトウェアバージョンのEOL情報を集めたサイトです」「EOLをググるとこのサイトがよく出てきますね」
https://t.co/mnvEry4ATA is gold, esp. for the complicatedness of #Java/#OpenJDK versions pic.twitter.com/Hr68Jn8e8p
— Henning Jacobs (@try_except_) May 31, 2019
🔗 その他Ruby
Link: 実は、はじめは「RubyKaigi」という名前ではなかった ─ 創始者と貢献者たちが、歴史を赤裸々に話します - Findy Engineer Lab - ファインディエンジニアラボ https://t.co/zLCZaEvbLV
— Yukihiro Matz (@yukihiro_matz) October 11, 2022
つっつきボイス:「これも面白い記事でしたね」「最初は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万行のテーブルを更新した話
- 元記事: Rails: How I updated table with 26 million rows | by Raghu Varma Bhupatiraju | Oct, 2022 | Medium
つっつきボイス:「大規模なテーブル更新で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、「Cloud Workstations」発表。セキュアな開発環境一式をマネージドサービスで提供。Google Cloud Next '22 - 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があるコマンドは偉いし、manを付けるべき - Lambdaカクテルhttps://t.co/QWsPWePPgc— Windymelt🧪 (@windymelt) October 11, 2022
つっつきボイス:「たしかにコマンドとして配布されるものにはmanがある方がいいという気持ちはわかる: --help
より詳しいことも多いし」「記事ではman(1)とかman(4)などの違いも解説もされてますね」「man(5)はゲームか」「apropos
やwhatis
って知らなかった」
🔗 Starlinkが日本でサービス開始
「Starlink」日本でサービス開始 衛星経由でネット接続 アジア初https://t.co/4OtnxYnKwm pic.twitter.com/EJCx891FrU
— ITmedia NEWS (@itmedia_news) October 11, 2022
StarlinkのTraceRouteどうなってんのか気になって調べてみたところ
149.19.109.20: SpaceX Services, Inc.
111.237.71.109: KDDI地上に降りてくる前にプライベートネットワーク内でルーティングしてる・・・?もしかして宇宙空間で??KDDI通ってきてるのも興味深いですね #starlink pic.twitter.com/dDKtOPASDD
— tesshy (@tesshy) October 11, 2022
つっつきボイス:「Starlink誰か買いました?」「月額1万ちょいとかなら買おうと思えば買えそうかな」「とりあえず以下の導入してみた記事がよくまとまっていました↓」
参考: 200Mbps超えを連発--日本上陸した「Starlink」をさっそく自宅に導入 - CNET Japan
「記事で面白いのは、Starlinkアンテナにはアクチュエータが付いていて、設置してしばらくすると自動的にアンテナが動いて衛星を探索するところ」「お〜」「パラボラアンテナの指向性はかなり厳しいはずなので手動調整だと相当難しいと思います: 衛星エンジニアのサポートなしで設置する前提になっているところは日本のメーカーができないタイプの売り方ですね」「たしかに日本だとサポートを売りがちですよね」「日本は山がちなのでStarlinkのビジネスモデルはマッチすると思います」「山間地でもこのパフォーマンスが得られたら強力ですね」
「ただ消費電力は割とかかるみたい: この記事だと通常50Wぐらいでピーク時100W超えぐらいらしい」「そういえばStarlinkのアンテナがあったかいものだから寒冷地だとネコがアンテナに座り込んじゃうそうです↓😺」
Do you know about this? Your also a Animal activist for cats… #awesome #starlink @elonmusk pic.twitter.com/98LJvLa2xy
— Heber Salvador (@Eberwithouttheh) October 13, 2022
以下はつっつき後に見つけたツイートです。
今日現在で2702基のスターリンク衛星が地球を周回しています。 pic.twitter.com/hBURdpR9QU
— MASA (@masa_0083) October 17, 2022
後編は以上です。
バックナンバー(2022年度第4四半期)
週刊Railsウォッチ: Rails向けLanguage Server “refreshing”開発中、JetBrains Fleetほか(20221018前編)
- 20221012後編 RailsとPostgreSQLで列挙型を作成する6つの方法、Ubuntu Proほか
- 20221011前編 Turbo 7.2.0リリース、GitLabのDevSecOpsサーベイ結果ほか
- 20221004後編 ヒアドキュメント拡張の提案、『組織に自動テストを根付かせる戦略』ほか
- 20221003前編 Kaigi on Rails 2022のタイムテーブル発表、書籍『Practicing Rails』ほか
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)