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

週刊Railsウォッチ(20200908後編)Shopify版Rubyスタイルガイド、JavaScript Primerが2.0に、GitHub Container Registryほか

こんにちは、hachi8833です。私も早速防災アプリを入れました。

  • 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄

今回もつっつき成分が少なめとなります🙇。

Ruby

Shopify版「Rubyスタイルガイド」(Ruby Weeklyより)


つっつきボイス:「Shopifyが公開している自社用のRubyスタイルガイドだそうです」「お、これ前からあったような気がするけど?」「私もそんな気がしたんですが過去のウォッチには見当たりませんでした」「それ用のrubocop.ymlも公開されてる↓」「そこが肝心ですね」


Shopifyのスタイルガイドをざっと見てみたところ、RuboCopによるチェックも用いていますが、RuboCopのスタイルガイド↓よりは短く、最初に一般的なスタイルの心得を述べるなど切り口が異なっている部分もあるようです。

【保存版】Rubyスタイルガイド(日本語・解説付き)総もくじ

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がその逆の『不死身の』という感じですね」

参考: モータルコンバット - Wikipedia

「記事によると、Ruby 2.2以降のシンボルは、GCされるものとされないものの2種類があって、されないものをイモータルと呼んでますね」


  • GCされないイモータルなシンボル
  • GCされるモータルなシンボル
    • to_symで作る
    • シンボルリテラルで書く
    • その他

参考: ガベージコレクション - Wikipedia

記事は他にも、ユーザー入力を動的にイモータルなシンボルに変換しないよう注意を促していて納得です。

その他Ruby



つっつきボイス:「9/19(土)に仮想松本の名で感想戦あるんですね」「とりあえず申し込んだ」「私も」

ちょっとややこしいですが、RubyKaigi Takeout 2020の2日目(9/5)終了直後にも『終わった直後の感想戦』イベントが開催されました↓。Rubyコミッターも含め多数の参加者で賑わい、セッションへの質問回答や興味深い話題に触れられました❤️。

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

GitHub Container Registry


つっつきボイス:「Docker Hubの利用制約発表後にGitHubが発表したContainer Registryについて早速まとめ記事が出てますね」「パブリックベータ終了後はpublicなイメージは無料になるんですって」「記事にもありますけど、GitHub Container Registryには今のところ制限が見当たらない↓とあるだけで、実際に制限があるのかないのかはまだよくわからないんですよね...」「たしかに」

GitHub Container Registry には、今のところ Docker Hub に追加されたような制限は特に見当たりません。
同記事より


なお以下はつっつき後のツイートですが、RubyでもrubyfarmのストレージをDocker Hubから非公開ローカルな場所に移行する予定があると記事にあります。

AWSのコンテナ向けLinux OS「Bottlerocket」(Publickeyより)

bottlerocket-os/bottlerocket - GitHub


つっつきボイス:「BPS社内Slackでも話題になっていましたね」「シェルもsshもなくてSELinux強制という」「リポジトリを見るとほとんどがRustのコードか」「積極的に使う場所がまだ思いつかない...」

参考: Security-Enhanced Linux - Wikipedia

追いかけボイス: 「Bottlerocketの開発はかなりActiveなので、もしかするとAWSの内部(ECSとかFargate、EKS)で使われてるのかもしれないですね」

JavaScript

「JavaScript Primer」が2.0に


つっつきボイス:「以下の記事でも定番として紹介したJavaScript Primerが2.0になったそうです」「おぉ、少し内容が古くなってたかなと思ってたところなのでありがたい🎉」「上の記事で差分も紹介されてて助かりますね」

2019年前半の「JavaScriptをちゃんとやるための地図」

その他

新データ構造


同記事より


つっつきボイス:「はてブで見つけました」「並列処理がよく効くデータ構造を編み出したのね」

『プログラミング作法』に書いてあったことを何となく思い出しました↓。

大幅な改善をもたらす可能性が高いのはデータ構造の改良で、おそらくはアルゴリズムの変更もそれにともなう。
『プログラミング作法』より


後編は以上です。

バックナンバー(2020年度第3四半期)

週刊Railsウォッチ(20200907前編)スライド『Rails 6.1で新しく入る機能について』、Railsコミュニティサーベイ、TruffleRubyでZeitwerkが動いたほか

今週の主なニュースソース

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

Ruby Weekly

Publickey

publickey_banner_captured


CONTACT

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