- Ruby / Rails関連
週刊Railsウォッチ(20200908後編)Shopify版Rubyスタイルガイド、JavaScript Primerが2.0に、GitHub Container Registryほか
こんにちは、hachi8833です。私も早速防災アプリを入れました。
最近の Yahoo の防災速報アプリ入れてるのだけど、ゲリラ豪雨の直前に「まもなく雨が降ります」って通知が来てくれるので洗濯物取り込むのに非常に役立ってる。
— mattn (@mattn_jp) September 1, 2020
- 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
今回もつっつき成分が少なめとなります🙇。
⚓Ruby
⚓Shopify版「Rubyスタイルガイド」(Ruby Weeklyより)
- サイト: Ruby style guide
つっつきボイス:「Shopifyが公開している自社用のRubyスタイルガイドだそうです」「お、これ前からあったような気がするけど?」「私もそんな気がしたんですが過去のウォッチには見当たりませんでした」「それ用のrubocop.ymlも公開されてる↓」「そこが肝心ですね」
Shopifyのスタイルガイドをざっと見てみたところ、RuboCopによるチェックも用いていますが、RuboCopのスタイルガイド↓よりは短く、最初に一般的なスタイルの心得を述べるなど切り口が異なっている部分もあるようです。
ShopifyのスタイルガイドとRuboCopスタイルガイドの違いは時間をかけて精査しないとわかりませんが、とりあえずShopifyのではmodule_function
よりextend self
が推奨されている↓点がRuboCopのスタイルと逆であることに気づきました。
# Shopifyスタイルガイドより
# bad
module SomeModule
module_function
def some_method
end
def some_other_method
end
end
# good
module SomeModule
extend self
def some_method
end
def some_other_method
end
end
⚓Rubyの2種類のシンボル(Ruby Weeklyより)
つっつきボイス:「モータルとイモータル?」「モータルというとモータルコンバットを思い出しますけど⚔️」「mortalが『死すべき定めの』でimmortalがその逆の『不死身の』という感じですね」
「記事によると、Ruby 2.2以降のシンボルは、GCされるものとされないものの2種類があって、されないものをイモータルと呼んでますね」
- GCされないイモータルなシンボル
define_method
で定義される新しいメソッドinstance_variable_set
によるインスタンス変数の設定const_set
で作成される定数や変数
- GCされるモータルなシンボル
to_sym
で作る- シンボルリテラルで書く
- その他
記事は他にも、ユーザー入力を動的にイモータルなシンボルに変換しないよう注意を促していて納得です。
⚓その他Ruby
RubyPrize 2020|Ruby Prize ノミネート者募集中https://t.co/r6ebRWv2PT
— Yukihiro Matsumoto (@yukihiro_matz) August 31, 2020
RubyKaigi Takeout 2020 感想戦@仮想松本に参加を申し込みました! https://t.co/kHyndCJSP9 #RubyKaigi_SmartHR
— Yukihiro Matsumoto (@yukihiro_matz) September 2, 2020
つっつきボイス:「9/19(土)に仮想松本の名で感想戦あるんですね」「とりあえず申し込んだ」「私も」
ちょっとややこしいですが、RubyKaigi Takeout 2020の2日目(9/5)終了直後にも『終わった直後の感想戦』イベントが開催されました↓。Rubyコミッターも含め多数の参加者で賑わい、セッションへの質問回答や興味深い話題に触れられました❤️。
⚓クラウド/コンテナ/インフラ/Serverless
⚓GitHub Container Registry
良くまとまってた。 / “GitHub Container Registry 入門 - 生産性向上ブログ” https://t.co/Qi3FwZZhK6
— mattn (@mattn_jp) September 3, 2020
つっつきボイス:「Docker Hubの利用制約発表後にGitHubが発表したContainer Registryについて早速まとめ記事が出てますね」「パブリックベータ終了後はpublicなイメージは無料になるんですって」「記事にもありますけど、GitHub Container Registryには今のところ制限が見当たらない↓とあるだけで、実際に制限があるのかないのかはまだよくわからないんですよね...」「たしかに」
GitHub Container Registry には、今のところ Docker Hub に追加されたような制限は特に見当たりません。
同記事より
なお以下はつっつき後のツイートですが、RubyでもrubyfarmのストレージをDocker Hubから非公開ローカルな場所に移行する予定があると記事にあります。
あまり話したことがない、Rubyの開発がどんな風に回っているかを、主にとりまく技術の視点でなんとなくまとめてみました。https://t.co/pFjehi0czr
— Yusuke Endoh (@mametter) September 8, 2020
⚓AWSのコンテナ向けLinux OS「Bottlerocket」(Publickeyより)
つっつきボイス:「BPS社内Slackでも話題になっていましたね」「シェルもsshもなくてSELinux強制という」「リポジトリを見るとほとんどがRustのコードか」「積極的に使う場所がまだ思いつかない...」
参考: Security-Enhanced Linux - Wikipedia
追いかけボイス: 「Bottlerocketの開発はかなりActiveなので、もしかするとAWSの内部(ECSとかFargate、EKS)で使われてるのかもしれないですね」
⚓JavaScript
⚓「JavaScript Primer」が2.0に
つっつきボイス:「以下の記事でも定番として紹介したJavaScript Primerが2.0になったそうです」「おぉ、少し内容が古くなってたかなと思ってたところなのでありがたい🎉」「上の記事で差分も紹介されてて助かりますね」
⚓その他
⚓新データ構造
- 元記事: 圧縮ファイルの展開速度を最大1万倍超高速化するデータ構造を広島大が考案 | マイナビニュース
- 論文: Huffman Coding with Gap Arrays for GPU Acceleration | 49th International Conference on Parallel Processing - ICPP
つっつきボイス:「はてブで見つけました」「並列処理がよく効くデータ構造を編み出したのね」
『プログラミング作法』に書いてあったことを何となく思い出しました↓。
大幅な改善をもたらす可能性が高いのはデータ構造の改良で、おそらくはアルゴリズムの変更もそれにともなう。
『プログラミング作法』より
後編は以上です。
バックナンバー(2020年度第3四半期)
週刊Railsウォッチ(20200907前編)スライド『Rails 6.1で新しく入る機能について』、Railsコミュニティサーベイ、TruffleRubyでZeitwerkが動いたほか
- 20200901後編 RubyKaigi 2020 Takeout登壇者発表、Ruby開発版が2.8から3.0へ、マイクロサービス分割ほか
- 20200831前編 GitHubがRuby 2.7にアップグレード、Durationに変換メソッドが追加、hair_triggerでデータベーストリガほか
- 20200825後編 Rubyクラスライブラリをgem化、Rubyテストフレームワークrr、ChromebookでWindowsが動くほか
- 20200824前編 「Active Jobスタイルガイド」は有用、SiderがGitLabに対応、eager loading時のselectを修正ほか
- 20200818後編 ruby_jardデバッガがスゴい、RubyオンラインマニュアルにEdit機能が追加、Ruby 2.7のBundlerを消す方法ほか
- 20200817前編 お盆も続くRails改修、Rails 6.1にManyモナドが入る?rails-auth gemでクライアント認証ほか
- 20200811山の日短縮版 RSpec Queueでパラレルテスト、カロリーメイトとRubyのコラボ、Rubyのcoercionほか
- 20200804後編 「RubyKaigi Takeout 2020」9月オンライン開催、メールバリデータtruemail、Gitのmasterが変更可能にほか
- 20200803前編 書籍『パーフェクトRuby on Rails』増補改訂版、マルチDBで抽象クラスをscaffold生成、GitLabがPumaに乗り換えほか
- 20200721後編 『パーフェクトRuby on Rails』増補改訂版発売間近、scan_left gemでレイジーなinjectほか
- 20200720前編 10月開催「Kaigi on Rails」CFP募集中、enumにデフォルト値設定機能、RailsでBitemporal Data Modelほか
- 20200714後編 ruby-warning gemでワーニングを手軽に抑制、rubocop -aの振る舞いが変わる、書籍『MySQL徹底入門 第4版』ほか
- 20200713前編 rspec-openapiでスキーマ自動生成、Rails Architect Conf動画、
where()
ハッシュキーに比較演算子条件を書ける機能ほか - 20200707後編 Rubyで無名structリテラル提案、書籍『AWS認定ソリューションアーキテクト』、21世紀のC言語ほか
- 20200706前編 Railsでのマルチテナンシー実装戦略を比較、Railsでサブクエリを使う、URI.parserが非推奨化ほか)
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。