- Ruby / Rails関連
週刊Railsウォッチ:書籍『Polished Ruby Programming』、DragonRuby、ES2021の新機能ほか(20210629後編)
こんにちは、hachi8833です。
🔗Ruby
🔗 VSCodeのRubyデバッガextension「VSCode rdbg Ruby Debugger」
[VSCode rdbg Ruby Debugger - Visual Studio Marketplace](https://t.co/g3oZ1dQH09) キリ番だ pic.twitter.com/vmanU7OUge
— _ko1 (@_ko1) June 21, 2021
つっつきボイス:「@ko1さんのRubyデバッガがリリースされました🎉」「早くもやってみた記事が出てますね」「binding_pryで頑張らなくてもいいのか:後で入れようっと」「ツイートでちょくちょく進捗を横目で見ていました」「私もです」「自分はVSCode使っていないけど、もっといろんなやってみた記事が出て使用感がわかるといいですね」
「以下も見つけました」「ivarはインスタンス変数」「Rubyで参考実装を作ってみるとこういうこともわかってきたりしますよね: パフォーマンスは後からが基本」
いやーこれは正直使い物にならないですね…どーしても詰まった時用。3.1 では ivar hook を入れたいと思っています
— _ko1 (@_ko1) June 23, 2021
🔗 DragonRuby
つっつきボイス:「おー、DragonRubyはRubyMotionと同じ人たちがやってるのね」「mrubyベースのクロスプラットフォームなRubyランタイムか」「AndroidやラズパイやWasm(WebAssembly)やNintendo Switchでも動くのか」「名前がかっこいい」「ドラゴンのロゴもイケてますね🐉」
「DragonRuby Game Toolkitも出してるのね↓」「これでRubyのゲームが書けるのか〜」「最近のゲームのクレジットでRubyのコードが使われているのをたまに見かけますね」「そうそう、あります」「これもそういう感じで使えそう」「Toolkitは有料なんですね」「こういう組み込みのニーズは確実にあるので、必要な人は買ってみてもいいでしょうね」
「このあたりの話題をRubyKaigiで見たような記憶があったな🤔」「RubyでSWITCHのゲーム作る話していたのを見ました〜↓」
参考: Building a game for the Nintendo Switch using Ruby - RubyKaigi 2019
後で知りましたが、以下によると「月収1000ドル以下」「学生」「熱狂的ラズパイ使い」のいずれかであれば申請のうえで無料ライセンスを発行してもらえるそうです。
🔗 DWARF
- サイト: Dwarf Home
以下のツイートで気になりました。
Uh you will be mad if I tell you. But I'm gonna tell you. I'm writing a JIT for Ruby in Ruby, and I want to use DWARF info to generate layout info of Ruby internal structs
— Aaron Patterson (@tenderlove) June 20, 2021
つっつきボイス:「DWARFはデバッグ情報保存方式の標準で、ものすごく昔からあります」「サイトが昔っぽいのでそんな気がしてましたが、そうでしたか」「DWARFの規格そのものはよく知りませんが、CやC++などのデバッガでこの用語が頻出していたのを覚えてます」「DWARFについて調べていて以下のサイトを見つけました↓」「@k0kubunさんだ」
参考: Rubyist Hotlinks 【第 38 回】国分崇志 さん -- DWARFについての記述あり
参考: デバッグ情報の歩き方 - Qiita
🔗 書籍『Polished Ruby Programming』予約受付中
Weighing in at 434 pages, "Polished Ruby Programming" will be available for sale on July 9. Currently, it is the #1 New Release in Ruby Computer Programming! This would probably be more impressive if there was more than one new release. :) https://t.co/wFRn4yHbVC @PacktPub
— Jeremy Evans (@jeremyevans0) June 23, 2021
つっつきボイス:「7/9に発売予定の書籍だそうです」「著者はあのJeremy Evansさんか!」「Jeremyさんといえば、RubyKaigiのクロージングキーノートで超濃い話をしていたのが忘れられません↓」
参考: Optimization Techniques Used by the Benchmark Winners - RubyKaigi 2019
「ググったらamazon.comの方が出てきたけど、amazon.co.jpで検索し直したら出てきた↓」「amazon.comで買うとKindleアカウントが別になっちゃうから不便ですよね」「そうそう」
「Jeremyの本なら相当期待できそう」「日本語版ないのかな〜」「まだpreorder中ですから😆」「お、こんないいものを発見↓」「@kakutaniさんが依頼を受けてこの本を査読した記録なんですね」「これはありがたい」「kakutaniさんが翻訳するのかな?」「この分量でこの内容だとある程度時間はかかりそうですね」
参考: Polished Ruby Programming翻訳査読書(のようなもの)
「おぉ、この査読書を見た感じではかなりよさそう👍」「しかもRuby 3.0対応ですって」「"現状で入手しやすい類書は特にない"、自分もそう感じますね」「なるほど」「"適切な変数の使い方"みたいな視点のある本はあまり見かけたことがありませんし、Rubyの本は書き味の話からメタプロの話に進むことがよくあるんですが、この本はどちらかというとRubyのしくみにより近いところを追っているように思えました」「書籍のコード例のリポジトリまで公開されてるんですね↓」
@kakutaniさんは以下の書籍の共訳も手掛けました。
🔗DB
🔗 スライド『SQL Training 2021』
つっつきボイス:「BPS社内Slackに貼っていただいたスライドです」「枚数が凄いですね」「157ページってもう技術書並かも」「スライドなので書籍のようなまとめ方とは違いますが、大事なことはひととおり盛り込まれているようなので、データベースをまったく知らない人向けの資料としてよさそう👍」
🔗クラウド/コンテナ/インフラ/Serverless
🔗 GitHub Issuesの強化
GitHubのIssuesが大幅に強化されます!ベータ申し込み受付中なのでぜひ https://t.co/Mf2OZGquwF
— 田中裕一(Yuichi Tanaka) (@yuichielectric) June 23, 2021
GitHubがソフトウェア開発の急所を押さえた後、1手ずつ盤面をひっくり返している感じがすごい。これProject管理系ツールはわりと辛いのでは。https://t.co/c9WFwjMjfC
— 神速 (@sinsoku_listy) June 24, 2021
つっつきボイス:「GitHub issueの強化、今日見かけたのでとりあえずベータ登録してみました」「私も登録しました」「これは何が変わるんでしょうか?」「まだ情報があまりなさそうですが、issue tracker機能が拡張されてJiraのような感じでリッチに管理できるようですね」「へ〜」「GitHub Codespacesもベータ登録したけどまだ結果出てないんですよね: GitHub issueの強化はいつお試しできるかな?」
参考: Jira | 課題 & プロジェクト追跡ソフトウェア | Atlassian
「こういう高度な機能はGitLabが先行していることが多くて、"GitLabですべてできる世界"を目指しているところがありますが、GitHub Codespacesやこれを見ているとGitHubもそういう世界を目指すことにしたのかもしれませんね」「なるほど」
「ちなみに弊社では、開発者向けのissue管理と、顧客と行う上流工程向けのissue管理を分けていることがよくあります: 開発者向けはGitHub Issuesでいいと思うんですが、上流工程向けのissue管理は取り扱いの敷居がもう少し低いものが望ましいので、Backlogを使うこともよくあります↓」「Backlog使ってますね」
参考: タスク管理、ファイル共有もできるプロジェクト管理ツールBacklog
🔗JavaScript
🔗 ES2021が正式な仕様に
JavaScriptの最新仕様ES2021が、6/22に正式仕様になりました💐💐💐
ES2021の全新機能を紹介する記事を、Zennで書きました🖊
→ 正式仕様リリース! JavaScriptの最新仕様ES2021で追加された新機能まとめ https://t.co/woYFehZezO#JavaScript #ES2021
— Takeshi Kano 鹿野 壮 (@tonkotsuboy_com) June 24, 2021
つっつきボイス:「そうそう、ES2021がapproveされましたね」「何か変わるんでしょうか?」「ブラウザには既に新機能が実装されているので何かが急に変わるわけではなくて、仕様として正式なものになったということですね」「あ、なるほど」「すぐ消える心配なしに安心して新機能を使えるようになったのはいい👍」
参考: Ecma International approves new standards - Ecma International
「_
で桁区切りできる機能はRubyでお馴染みですね」「見覚えあります」「replaceAll()
もどことなくRubyっぽいかも」「文字列操作メソッドはいくらあっても足りないぐらいですよね」
// 同記事より
100_000_000; // 1億(100,000,000)
「Promise.any
もよさそう」
// 同記事より
Promise.any([
promise1, promise2, promise3
]).then(first => {
// 3つのpromiseのうち、最初に解決したpromiseが出力される
console.log(first)
});
「演算子の||=
や&&=
はRubyにもありますけど、??=
はなかったかな」「??=
は値がnull
かundefined
のときに代入: undefined
はJavaScriptでよく登場するのでいかにもJavaScriptらしい演算子ですね」
// 同記事より
let a = null;
a ??= "🐈";
console.log(a); // 結果: "🐈"
let b = "🐷";
b ??= "🐈";
console.log(b); // 結果: "🐷"
「弱参照(WeakRef
)という概念があるのか」「GCしていいものをこれで指定するんですね」「"可能であれば使用を避けるのがよい"、たしかにGCは複雑なので使いこなしも複雑そう」「どういうときに使うのかあまり想像できないかも」
// 同記事より
const myObject = { name: "田中" };
// myObjectへの弱参照が作られる
const ref = new WeakRef(myObject);
「最近JavaScriptを書かないといけないことが増えてきたんですけど、Rubyに慣れているとJavaScriptの書き方の違いに戸惑うこともちょくちょくあるんですよ」「わかります」「let
を避けて極力const
にするために何かと使い捨ての関数を作ってはmap()
するとか、文化が違うといえばそれまでなんですが、ちょっと消化不良というかもやもやした気持ちになるときがあります」
「Rubyだと変数をなるべくイミュータブルにするような書き方はあまりしないんですけど、JavaScriptだと何とかしてconst
に落とし込もうとする傾向がどこかにあって、実際let
で書いてみると何となく今風のJavaScriptではないのかなと思うこともあります」「const
にするのが有効なシチュエーションはたしかにありますけど、ちょっとした文字列操作ぐらいなら普通に変数に再代入してもよさそうですし、何となくやりすぎ注意な気もしますけどね」「Reactのように関数に渡すものをなるべくイミュータブルに保つのはとても納得できます」
参考: React – ユーザインターフェース構築のための JavaScript ライブラリ
つっつき後に以下の記事も出ていました。
参考: ES2021/ES2022を知ろう | フューチャー技術ブログ
参考: ES2021に対応したJavaScript Primer 3.0を公開しました - JavaScript入門 | Web Scratch
後編は以上です。
バックナンバー(2021年度第2四半期)
週刊Railsウォッチ: GitLab 14.0のbreaking changes、Railsのセキュリティ脅威解説シリーズ記事ほか(20210628前編)
- 20210623後編 childprocess gemで子プロセスを制御、Ruby 2.6〜3.0で動くdelegationほか
- 20210621前編 Active Storageのvariantsをeager loadingするメソッドが追加、Hotwire専用Discuss、AnyCable Proほか
- 20210615後編 RubyのRBSを理解する、シンボルがGCされないとき、Terraform 1.0リリースほか
- 20210608後編 RubyでAppleのLZFSE圧縮データ解凍、AWS Lambda Extensionsが正式リリース、unixgame.ioほか
- 20210607前編 ActiveRecord::Relationのone?とmany?が高速化、RubyKaigi Takeout 2021登壇者募集開始ほか
- 20210601後編 Python使いから見たRuby、MySQLのインデックス解説、GitHubが採用したOpenTelemetryほか
- 20210531前編 RailsConf 2021の動画が公開、GraphQLのN+1を自動回避、Ruby 3のJITとRailsほか
- 20210525後編 Rubyのオブジェクトアロケーション改善、RubyKaigi Takeout 2021開催日発表、AWS App Runnerほか
- 20210524前編 Active Supportの知られてなさそうな機能5つ、RSpecの歴史、書籍『Practicing Rails』ほか
- 20210518後編 RubyのGCを深掘りする、Psych gemのbreaking change、11月のRubyConf 2021ほか
- 20210517前編 Bootstrap 5リリース、productionでSQLiteがwarning表示、rails-ujsの舞台裏ほか
- 20210511後編 AWS Lambda関数ハンドラをDSLで書けるyake gem、VPC Peeringが同一AZ転送量無料化ほか
- 20210510前編 属性メソッドをキャッシュして最適化、Railsのガバナンスに関する声明、bundle install高速化ほか
- 20210427後編 RactorでUDPサーバーを作る、JSONシリアライザalba gem、AppleのAirTagほか
- 20210420後編 ShopifyのJITコンパイラYJIT、PicoRuby、DynamoDBの3つの制約ほか
- 20210419前編 RailsのN+1クエリを定番以外の方法で修正する、GitLabのセキュリティ修正リリースほか
- 20210413後編 RubyMineのRBSサポートとCode With Me、GitHub ActionとDockerレイヤキャッシュほか
- 20210412前編 Active Record属性暗号化機能がRails 7にマージ、RailsNew.ioでrails newオプションを生成ほか
- 20210407後編 エイプリルフールのRuby構文プロポーザル、AWSのVPC Reachability Analyzerほか
- 20210406前編 GitHubが修正したRailsセッションハンドリングの競合、erb/haml/slimの速度比較ほか
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)