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

週刊Railsウォッチ(20200421後編)Ruby 2.4サポート終了、Ruby 3の右代入演算子、GitHubコア機能無料化ほか

こんにちは、hachi8833です。本日Python 2系の最終リリースが出ました。

  • 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください

Ruby

Ruby 2.4のサポート終了(Ruby公式ニュースより)

Ruby 2.4は今後セキュリティ修正が出なくなります。


つっつきボイス:「おぉ〜Ruby 2.4終わったか〜!」「発表は4/5だったんですが見落としてました😅」「Ruby 2.5もセキュリティメンテナンスフェーズ突入とは😳」

「こういう情報見逃してると、いきなりAWSで新しくLambdaのレイヤを作れなくなったりしますし😇」「ああっ🤣」「それは痛いっ🤣」「おそらくですけど、AWSではサポート対象のRubyバージョンでないと出してくれないんじゃないかと: さすがに今動いているものは止めないでしょうけど☺️」「これは気を付けないと😅」

Ruby 3に入る右代入演算子=>

参考: Ruby の開発版に右代入演算子とエンドレスメソッド定義構文が入った - Qiita


つっつきボイス:「先週のendレスメソッド定義の他にこれも入ってました」「おほ、右代入😆」「=>はキライじゃないけど、いきなり出てきたらビックリするかも😆」

「いわゆる比較演算子と紛らわしくならないかしら?」「一応大丈夫みたい↓」

3 >= 5 # 比較演算子
3 <= 5 # 比較演算子
=>     # 右代入

「右代入演算子オモシロイけど、どこで使ったらいいんでしょうね?🤔」「lambdaチェインの長い処理をtapして、その最終処理を変数に入れたいときとか?😆」「変数名を冒頭に置かなければ処理を読み下しやすいからいい、とか?🤔」「ようわからん😆」「まだ自分は使わないかな〜🤣」「🤣」

比較演算子を英語の語順で覚える

=<>のどっちが先か割と忘れがちで😅」「Rubyに限りませんけど、自分はこういう演算子の順序を英語の語順と同じということで思い出しますね😋」「それだ!」「言われてみれば😳」「less than or equal toとかgreater than or equal toで思い出せばいいですし☺️」「ほら、Perlの比較演算子にもleとかgeとかあるじゃないですか😆」

なお英語的にはequal to or greater thanのようにequal toが先に来るのもありですが、コンピュータの文脈ではequal toを後ろに書く方が多いようです。

Rubyコンカレンシーについての最終レポート


同記事より


同記事見出しより:

  • はじめに
  • 実装(自分たちの提案する設計では現状のマイナーチェンジが必要)
    • スレッドスケジューラ
    • ノンブロッキングFiber
    • ノンブロッキングスレッド
    • ノンブロッキングI/O
  • 今後のスケジュール
  • まとめ

つっつきボイス:「以前もお伝えした(ウォッチ20191225)、Rubyのコンカレンシーをこんなふうに改良しようじゃないかというレポートの最終版だそうです」「ファイバーとかコンカレンシー周りの話はこれまでもRubyKaigiでちょくちょく話されてましたね😋」「その一連の流れにつながっているみたいで、最終的に以下のissueを投げたそうです」

参考: まつもとゆきひろさん「Ruby3の目指す未来 –The Year of Concurrency–」〜RubyKaigi 2019 1日目 基調講演:RubyKaigi 2019 Keynote レポート|gihyo.jp … 技術評論社

Rubyのコンカレンシーとリソース値上げ

「今はパンデミックの影響でクラウドの利用率が上がっているから、Rubyのコンカレンシーを改良しないとクラウドでのRubyが頭打ちになるかもってちょっと思いました」「おぉ😳」「先週もパンデミックがネットに及ぼす影響(ウォッチ20200414)で話しましたけど、今半導体の供給が追いつかなくなっているうえにネットのトラフィックが増加しているので、クラウドのコンピュテーションやネットワークのリソースが値上がりする可能性があるんじゃないかって」「そうでしたね」

「これまではフットプリントがでかくても動けばOKという富豪的な感じでやってきましたけど、リソースが値上がりしてくればフットプリントを小さくすることが直接コスト削減に結びつくようになるかもしれませんし」「ふむふむ」「そうなったら、コンカレンシーがうまく回らないと待ち時間にも課金されて残念みたいなことになったり」「う〜む😅」

参考: 富豪的プログラミング

「そういう状況になったら、Go言語みたいなコンカレンシーに強くて起動時間も短いものが全面に出てくるかもしれないって、ちょっと思いました☺️」「流れによってはそうなってくるのかも🤔」「JavaもGraalVMみたいのが出ていますし☕️、最近はコンテナ向けのJavaもあるらしいので(ウォッチ20190218)、コスト面のためにもRubyのコンカレンシー周りがよくなって欲しいですね☺️」

参考: GraalVM


graalvm.orgより

RubyMine 2020の新機能


つっつきボイス:「2020年最初のRubyMineアップデートか」「いろいろ機能増えてるっぽいですね」「Ruby 2.7のnumbered parametersを含む新機能がサポートされてるし」

参考: プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ

「docker-composeをリモートインタプリタとして使えるようになった↓のが素晴らしい〜😂」


同記事より

参考: RubyMine 2020.1 EAP is Open! | RubyMine Blog

「sshコンフィグUIが統一されてる」「sshといえば、Windows版でOpenSSH形式のコンフィグを読めるようになって欲しいな...」

「おぉ、この機能↓はきっとDataGripにも入るに違いない😋」「クエリの結果をエディタに出力できるようになったということでしょうか?」「クエリの結果は通常だとクエリビューに出力されるんですけど、クエリビューの結果と別の結果を比較したいということがよくあってですね😆」「あ〜」「クエリビューに出力されると前の結果が上書きされて比較できないので、こういう機能があると結構うれしい❤️」「なるほど〜😋」


同記事より

「とりあえず新しいRubyMineを使いましょうということで👍」

Rubyにおける「等値」とは

# 同記事より
class Message
  attr_reader :body, :subject

  def initialize(subject:, body:)
    @subject = subject
    @body = body
  end

  def eql?(other)
    other.class == self.class &&
      other.body == body &&
      other.subject == subject
  end
  alias == eql?

  def hash
    body.hash ^ subject.hash
  end
end

つっつきボイス:「Rubyのオブジェクト同士が等しいとは何ぞや的な記事みたいです」「ああeql?とかequal?とか==とかのね😆」「Ruby技術者認定試験に出るヤツ😆」

参考: Ruby技術者認定試験


同記事では、既に同趣旨の記事があったことに気づいたとありました↓。こちらの方が読みやすいかも。

参考: Difference Between ==, eql?, equal? in ruby - Khalidh Sd - Medium

その他Ruby


同リポジトリより


つっつきボイス:「Ruby製のゲーム作成キットだそうです」「なんだかとても懐かしげな画面😆」「昭和の匂い😆」「Rubyでゲームを作るのってもっと流行って欲しい気もするけど、ゲームを作るという目的でRubyを選ぶのってあんまりしないかな☺️」「Rubyを勉強したいならいいかも😋」

DB

ぽすぐれのここがキライ10連発(DB Weeklyより)


つっつきボイス:「PostgreSQLがキライな人もいるんだなと思って」「XIDってトランザクションIDか〜」「そのあたりでハマったことなくてわからないけど😆」

「フェイルオーバーやレプリケーションの問題が挙がってるけど、どっちも自分で設定しないし😆」「随分コアな感じですね😅」「データベースをゴリゴリに使っているDB管理者の立場で書かれた感じがしますね: Oracle使ってたら困らないのにみたいな😆」「うんうん」「DB管理者はこのあたりを気にしておくといいと思います☺️」


見出しより:

  • トランザクションIDが一周すると危険(参考: PostgreSQLのトランザクションID周回問題を強制的に発生させる - Marlock Homes Diary
  • フェイルオーバーするとデータが失われる可能性
  • レプリケーションによってはデータの傷が拡散する可能性
  • MVCC(マルチバージョンコンカレンシー制御)のゴミが何かとつらい
  • 1コネクション=1プロセスはスケールするとつらくなる
  • 主キーインデックスが大飯食らい
  • メジャーアップグレードでダウンタイムが要求されることがある
  • レプリケーションがやや面倒
  • プランナーヒントを採用しない方針がイヤ
  • MySQLのようなブロック圧縮がない
  • といろいろ書いたけど、一般にはPostgreSQLから始めておいて、困ったときに調べることをおすすめする

その他DB


つっつきボイス:「おぉ〜BigQueryにマテビューが❤️」「内部的には今までもやってたんじゃないかという気もしますけど、結果を高速に得たいときにはあるとうれしいときもあるんでしょう☺️」

「BigQueryはどんな課金体系でしたっけ?」「ジョブの回数とI/Oアクセス量に対する課金ですね💰」「なるほど!」

参考: BigQuery の料金  |  Google Cloud
参考: マテリアライズドビュー - Wikipedia

リモートワーク

リモートワークさまざま


つっつきボイス:「1件目の記事は自分がSlackに以下を引用しながら貼ったんだったかな」「ですです」

 “Okay”はシンプルな同意で、“Okay.”は怒っているかもしれず、“Okay…”はためらいを表している。こうした違いが分からないのは、自社の公用語を読む能力がないに等しいとハシモト氏は話した。この違いが分からないからといって雇わないわけではないが、コミュニケーションの仕方と人の気持ちとの関係を理解することは不可欠。ハシモト氏はこれを「チャットリテラシー」と呼び、入社後できるだけ早く教えるようにしているという。
atmarkit.co.jpより

「リモートワークは、やっぱりリモートワークを前提として人を集めるのが大事だなって思いましたね: 出社して働くのが前提の人とリモートでもいいよという人が混じっているのが管理上いちばん調整しづらいので😅」「わかります」「うちのチームを半端にオンサイトに残さずにとっとと全員リモートに移行したのはそういう理由: ひとつのチームで両者入り交じるぐらいならそれぞれ別のチームにする方がいいと思います☺️」「混じってると出社している人はリモートを気にしないといけないし、リモート側は取り残されてるんじゃないかという不安に駆られるし😅」「お互いの負担も大きくなる😢」

「自分はリモート歴長いし性に合ってるからいいんですけど、出社前提で仕事のフォーメーションを構築した人は大変だろうなと」「あと職階や役職にもよるんですよね: 他のメンバーと連携するのが仕事の人が出社前提だとリモートで途端につらくなるでしょうし」「う〜む😅」「2件目の記事にあるリモートだと外出できないのがつらいという話もワカル」「リモート組と出社組がいるところでは、フルリモートへの移行で多少はパフォーマンスが落ちる可能性についてもたぶん覚悟が必要でしょう🧐」

その他リモートワーク

つっつきボイス:「この間も話しましたけど、ツイートにある『当初end-to-end encryptionしているような宣伝をしていたこと』がまさに問題😇」「ですね」「end-to-endでencryptionしてたら録画機能の提供が難しいのはたしかですけど」「できてないのをできてるかのように宣伝するのはマズい」


つっつきボイス:「ゴートを呼べるって🤣」「ヤギとはいえ知らない人をZoomに呼ぶのってどうよ🤣」「$100ってあるけど金取るとは😆」「そこがビジネスですよ🐐」

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

MinIO: S3 API互換のオブジェクトストレージサーバー


つっつきボイス:「MinIO、これは割と前からあるヤツです」「たしかに★もかなり多いですね」「要はオープンソースのS3互換ストレージサーバー」「これはdev環境とかテストで使う感じでしょうか?」「あとCIとかでも使いますね: S3 APIレベルにもテストをかけたいけどAWSへの通信を発生させたくないときなんかに、こういうのを使うとローカルで完結します😋」「なるほど〜」「Webチームでもどこかで使ってた覚えありますし」

「ミンアイオーって読むのかな?」「このスペルとロゴならきっとそうでしょう😆」「ミニオじゃなかった😆」


同リポジトリより

その他インフラ

つっつきボイス:「WSL2なかなかリリースされませんね😆」「😆」「さっきWindows Updateの再起動がなかなか終わらなかったんですけど、Insider Previewを入れてたせいだったという😆」「😆」「道理でWSL2が入らないと思った😆」


つっつきボイス:「お😆、これは香川県のゲームパブコメのIPアドレスの件ですね」「この辺のニュースの元ネタがわかってなかったんですが、それでしたか😅」

参考: 香川県ゲーム条例へのパブコメが192.168.7.21から大量に届いた状況を解説してくれる人々 - Togetter

「パブコメのメールが192.168.7.21というプライベートIPアドレスから来ていたということでツッコまれてたんですけど、ちゃんと技術をわかってたらこのIPアドレスだけで断定的なことは言えないはずなんですよ😆」「なんと😆」「それとは別に、パブコメに同じ誤字が大量にあったという報道もありましたね↓」「まあ組織票ぐらいあってもおかしくないですけど😆、庁内リバースプロキシがあるかもしれませんし、IPアドレスについてはもっと技術的な情報が出てこないと証拠にならないでしょう☺️」

参考: ゲーム条例パブコメに同じ誤字 「依存層」「条例にに」:朝日新聞デジタル

JavaScript

React HooksとRails APIでアプリを作る


同記事より


つっつきボイス:「React Hooksって最近のかな?」「Reactもいろいろ機能が増えてますし☺️」

参考: フックの導入 – React

フック (hok) は React 16.8 で追加された新機能です。state などの React の機能を、クラスを書かずに使えるようになります。
☄ja.reactjs.orgより

「記事はRailsアプリを作るところからやってみた感じ😋」「やってみた系記事😆」

「まあこのぐらいシンプルなCRUDだったら、今だと『どうしてFirebase使わないの?』って言われて終わりそうですけど😆」「😆」「実際最近だとエンタープライズの複雑な用途でないとRailsを選ぶことがあまりなくなってきてますし☺️」

参考: Firebase


firebase.google.comより

CSS/HTML/フロントエンド/テスト/デザイン

Chromiumのアーキテクチャ


つっつきボイス:「これもBPS社内Slackに貼っていただいたヤツです」「これは初心者向けにピッタリの超読みやすい記事👍」「とても優しく書かれている❤️」

「ちなみにGoogleスライドはパブリッシュ側で許可しないとスライドをブログに埋め込めないみたいなので、ツイートを見つけて埋め込みました😅」

言語・ツール

GitHubコア機能が無料に

HackerNewsでもえらく盛り上がっていました。


つっつきボイス:「GitHubに日本語版ブログがあるとは😆」「私もこの記事で初めて気づきました😆」

「今回のGitHub無料化では、オーガナイゼーションのprivateなコラボレーター数に制限がなくなったのがとっても大きいですね❤️」「おぉ〜」「これでGitHub使う人が増えるでしょう😋」

「今まではどういう価格体系だったんでしょう?」「これまでだと、チームのprivateなリポジトリーには、そのチームで購入したライセンス数までしかコラボレーターを追加できなかったんですよ」「あ〜」「なのでフリープランの人たちをいっぱい呼ぼうとすると人数がつっかえちゃったりすることがよく起こりましたし😇」「そういう理由でBitBucketのようなサービスを使ってた人たちがそれなりにいるはず」「あるいはBPSみたいにGitLabサーバーを自前で立てるとかですね↓」

GitLab自社運用のための注意点とノウハウ(2018/06版)

「BPSの場合は協力会社も含めた開発者の人数が多いから、以前の価格体系のGitHubでやろうとするとコストが大変だったんでしょうね😅」「今はGitHubのリポジトリ数の上限もなくなりましたし: でも自分たちの場合、協力会社はともかく社員のライセンスは全員分買わないといけませんし、これまでGitLab上に構築してきたCI環境などをGitHubに移行する手間もあるので、月4ドル✕社員数と移行のコストをかけてまでGitLabからGitHubに移行する価値があるかどうかでしょうね💰」「たしかに〜」「自分たちも既にGitLabにロックインされてますし🔐」「今の社内GitLab上にはSandStar(注: 内製のCIサーバー)↓も動いてますし」

GitLab 10.6以降でpushイベントのSlack通知が止まったときの対応方法

「GitLabを社内でホスティングするのはそれなりに手間ですけど、やっぱりメリットもあるんですよ😋」「ふむふむ」「特にBPSの場合、アプリチームがずっとやっている超縦書超教科書のような超シリーズ↓のコンパイル量がものすごいらしいので、たぶん社内GitLabからGitHubにそのまま移行しても超シリーズのCIが満足に動かない可能性あるかも😅」「あ〜たしかに!」

「超シリーズはChromeのビルドまで含んでてリソースを鬼のように食いますから💋」「Chromeのビルドって😆」「BPSみたいに特殊な要件を抱えているところなら社内GitLabでやる意味はそれなりにあると思いますね: 将来GitLabでやる理由が歴史的経緯ぐらいしかなくなればGitHubに移行してもいいと思いますけど☺️」「なるほど!」

「とにかくGitHubは今回の価格改定で使う人が増えると思いますね😋」「もう使わない理由がありませんし😋」「個人的に持ってるGitHub有料ユーザーも解約しようかと思ってるぐらい😆」「😆」

GItHubの戦略

「GitHubはどの辺を狙っているんでしょうか?」「たぶんGitHubはエンタープライズプラン以上の顧客に狙いを定めているでしょうね☺️」「もうチーム以下は別にいいよみたいなノリで😆」「😆」

「結局エンタープライズプランで一番大きいのはSAML↓なんですよ: SAMLを導入するような大きな企業は人数も相当多いはずですし」「もっと小さいベンチャー企業もこれを機会にGitHubに完全に乗っかるためにエンタープライズプランにするところも増えるかも🏢」

参考: Security Assertion Markup Language - Wikipedia

「想像ですけど、GitHubとしてはチーム以下の個人ユーザーはもうあんまり眼中にないのかなって😆」「そういう人たちはGitHubを無料でガンガン使ってGitHubの知名度を上げてくれればいいよという感じで😋」「最初はチームプランで無料で使ってもらって、規模が大きくなってきてSAMLが使いたくなったらエンタープライズプランに移行してもらう、というようなシナリオを考えてるでしょうね😎」「なるほど!」

「ちなみにSlackは相当大きな企業でも通常プランでやってるところが多くて、エンタープライズはよほど大きな企業ぐらいしかいないようです😎」「へぇ〜😳」「Slackはエンタープライズにするとワークスペースを複数作れるようになるので、人数がすごく増えてくるとそういうのが便利なんでしょうね😋」

その他

吸気と排気


つっつきボイス:「ウィルスの病室内拡散をシミュレーションして最適な換気方法を導き出したそうです」「ほほぅ」「吸気口と排気口を部屋の対面に置くとかえってよくないのか😳」「パラメータ次第では逆にうまくいったりすることもありそうなので慎重にやらないと難しいかも🤔」

「プレハブ診療所みたいな規格化された環境なら理論上は条件が揃うので、こういうシミュレーションの結果がとても効いてきそう👍」「おぉ😍」「逆にカスタマイズされている既存の病室とかだとかなり大変かも😅」「建築は動くお金が大きいから、この規模のシミュレーションでもペイするんでしょうね☺️」

キーボード配列変換アダプター

つっつきボイス:「こういうの好きな人いるかなと思って😆」「とてもオモシロイと思いましたけど、最近ノートPCのキーボードを直接使ってるんで使う機会がなさそう😆」「こんな下のレイヤで変換かけてるんだ😆」「発想はオモシロイですよね😋」

「カンファレンスのブースで配ったらウケそう」「ワンチップマイコン1個でおしまいな感じだし、大した値段じゃないかな?」「ぐぉ、12,800円😇」「「1,000円だったらな〜😆」「3〜4,000円だったらな〜😆」

その他のその他

つっつきボイス:「おニューのiPhone SE、誰か買う人います?😆」「たぶん私かな😆」「iPhone 8のリベンジ感あるというか、中身iPhone 8やんって思ったし😆」「スマホに11万円もかけられない😭」「4万円って安いかなぁ?😆」「今なら安い方だと思いますよ😆」

番外

成功を祈りたい


つっつきボイス:「エサの金属って😆」「もろSFの世界👽」

Stephen Wolframが動いた


つっつきボイス:「あのMathematicaで有名なStephen Wolframという人が、『New Kind of Science』という本で物理学の基本法則はネットワーク理論とかセルオートマトンみたいな計算理論から導けるみたいなことをずっと前から主張してて、主流からは正直あんまり相手にされてなかったんですけど、このたびそれを本気で研究するためのプロジェクトとサイトを立ち上げたという記事です」「何かえらいこっちゃ😆」「しかもパンデミックにもめげずスタートしたそうです」「まあ統一理論は人類の夢ですけど🌠」

「物理業界だと、それまで日の目を見ていなかった理論が突如脚光を浴びることもあったりするから油断なりませんし😆」「70年ぐらい経過した頃とかですね😆」「あ、リンク先の文章めちゃ長いです😅」「理解できる気がしない😆」「Wolframさんの本もむちゃくちゃ長くって😭」

参考: スティーブン・ウルフラム - Wikipedia
参考: 新しい種類の科学 - Wikipedia


後編は以上です。

おたより発掘

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

週刊Railsウォッチ(20200420前編)anyway_config gemでRails環境設定、ShopifyのLiquidテンプレートエンジン、書籍『Beyond the Twelve-Factor App』ほか

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

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

Ruby 公式ニュース

Ruby Weekly

DB Weekly

db_weekly_banner


CONTACT

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