週刊Railsウォッチ(20190521-2/2後編)サーバーレスクラウドのベンチマーク比較サイト、VueJSパフォーマンス向上、GraalVM 19.0ほか

こんにちは、hachi8833です。5月とは思えない風雨がやっと収まりましたね。

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

お知らせ: 第11回公開つっつき会(無料)

第11回目を迎えた公開つっつき会は6月6日(木)19:30〜にBPS会議スペースにて開催されます。皆さまのお気軽なご参加をお待ちしております🙇。

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

serverless-benchmark.com: サーバーレスクラウドのベンチマーク比較サイト


同サイトより


つっつきボイス:「以前ウォッチで紹介した以下の記事に『もっと新しくて信頼できるサイトを公開した』と追記されていたので」「なるほど、同じコードをいろんなクラウドに置いて、コールドスタートに要する時間などのパフォーマンスを比較していると」「『Become a sponsor』バナーが並んでる😆」

参考: The largest benchmark of Serverless providers. – elbstack – Medium

「基本的に他人が行ったベンチマーク参考値程度に考えるしかありませんね🧐」「どんなコードを実行するかで結果がいくらでも変わり得るし😆」「LambdaにJavaのコードを置けば起動が遅くなるし🐢」

「言い換えれば、自分の欲しいベンチマークは自分で取るしかない☺️」「もちろん、他人がすべて作ったコードを使う前提で、それを使った他人のベンチマークを採用する分にはいいんですが、自分で書いたコードを動かそうとしているときに他人の取ったベンチマークを当てにして採用するのはマジで意味がありません🤣」「たしかに🤣」

「他人が取ったベンチマークだとコードがそのベンチマークに最適化されていることもありうるし、ひどい場合は明らかに特定のベンチマーク構成に対して不利なコードを使ってるかもしれないし」「こういうベンチマークを選定の最初の段階である程度参考にするのはもちろん構いませんが、最終的に欲しいベンチマークは自分で取りましょう☺️」「ガッテンです」


「お、クラウドごとのパーセンタイルの分散って結構違うのか↓、へ〜」「ほんとだ、グラフをマウスオーバーすると値が出ますね」「こういう情報を表すのが、たしかCDFと言われるものだった」「ググったらCummurative Distributed Function(累積分布関数)というのが見つかりました」「そのまんまの日本語🇯🇵」


serverless-benchmark.comより

参考: 累積分布関数 - Wikipedia

「CDFはパフォーマンス計測でもよく使われるもので、必ず右肩上がりの分布になる: これで特定の範囲内に何パーセンタイルが収まっているかを表したりしますね」「なるほど!」「maxとminをチェックするだけだと役に立たないことが多いので、こういう『全体の90%がこの範囲に収まる』みたいな分布の傾向を見るのにCDFが使われたりします」

参考: パーセントとパーセンタイルの違い | 統計学が わかった!


「ベンチマークを見ると、Cloudflareもサーバーレスやってるんですね」


cloudflare.comより

Red Hat Universal Base Imageが公開(Publickeyより)


つっつきボイス:「Red Hat Enterpriseももう8か〜」「自分は(Enterpriseでない)Red Hat 6ぐらいから使ってたんですが、そういえば初めてお金出して買ったのが(Enterpriseでない)Red Hat 8だった💰」「だいぶ昔のですね👴」「いろいろ紛らわしい😆」

「パッケージ版のRed Hatを買うと有料フォントが入っているので、それ目当てでRed Hat 8買った気がする😆」「そういえば昔のLinuxディストリってGUIの日本語フォント表示が残念でしたね」「そうそう、kochi(東風)gothicとかない時代はつらかった😢」「Windowsの日本語フォントをLinuxに入れるのはそれだけでライセンス違反ですし⚠」

参考: 東風フォント - Wikipedia

「Red HatのEnterpriseってお高いんでしょうか?」「RHEのイメージは無料で使えますが、Red Hatの公式リポジトリにアクセスして最新に保つには有料のサブスクリプションが必要💰」「なるほど!」「でないとyum updateがはじかれます🚫」

参考: Level 3 (L3) の Red Hat サブスクリプションではどのようなテクニカルサポートが受けられますか? - Red Hat Customer Portal

「RHEは最近使ってないので今はどうかわかりませんが、RHEで提唱しているサポート契約を受けるためには、100%Red Hatのパッケージだけで構成する必要があります」「あーそっか!」「技術サポートが必要ならもちろんありですけど、たとえばrbenvでインストールしたRubyはサポートされなかったりするので自分は使わないかな😆」「😆」

その他クラウド


つっつきボイス:「CDNプロバイダのFastlyがWebAssemblyのコンパイラを出している」「JSのエンジンは軽いのでこういうことをするのには向いてそう😋」「Node.jsがあれだけ流行っているのもそれでしょうね」


fastly.jpより

SQL

EdgeDB(DB Weeklyより)


edgedb.comより


つっつきボイス:「EdgeDBが実装で、EdgeQLがそのクエリ言語ということみたいです」「こういう入れ子的な書き方ができるということみたい」「中かっこがいっぱい出てきますね」

--- 同記事より
SELECT (
    avg := math::mean(
        Movie {
            number_of_reviews := count(.reviews)
        }.number_of_reviews
    ),
    max := max(
        Movie {
            number_of_reviews := count(.reviews)
        }.number_of_reviews
    )
);

「中かっこでUNIONも表せると、へぇ〜」

-- 以下は同等 
edgedb> SELECT {1, {2, 3}, {}, {}};

edgedb> SELECT {1} UNION {2, 3} UNION {} UNION {};

「EdgeDBはObject Relational Databaseという触れ込みで、PostgreSQLの上に構築されてるようです」「EdgeDBは製品名ということですね☺️」「GraphQLもネイティブでサポートとある」「それでいうならPostgreSQLもObject Oriented Databaseに対応してますし: オブジェクト指向と言っていいかどうかは別としてテーブル継承サポートしてるし😆」

参考: オブジェクトデータベース - Wikipedia
参考: PostgreSQL ドキュメント 5.9. 継承

「記事のリファレンスにSIGMODとかあるけど、EdgeDBに関係ありそうな学術発表は見当たらない感じ🤔」「どちらかというとEdgeDBはスタートアップやってるというノリのようですね☺️」

参考: Special Interest Group on Management of Data(SIGMOD) - Wikipedia

参考: 次世代のデータベース 「EdgeDB」 を試してみる | DevelopersIO

JavaScript

VueJSパフォーマンス向上9つの秘訣


デモサイトより

参考: Vueの秘密のパフォーマンステク9選紹介 - Qiita


つっつきボイス:「上のQiita記事の元を辿ってみました」「UnoptimizedとOptimizedで結構スピードが変わる😳」「表示系をやってる人はこの辺知っときたい感じ」

// https://github.com/Akryum/vue-9-perf-secrets/tree/master/src/components/benchmarks/child
// Child最適化前
export default {
  props: ['number'],
  methods: {
    heavy () {
      const n = 100000
      let result = 0
      for (let i = 0; i < n; i++) {
        result += Math.sqrt(Math.cos(Math.sin(42)))
      }
      return result
    },
  },
}

// Child最適化後
export default {
  components: {
    ChildComp: {
      methods: {
        heavy () {
          const n = 100000
          let result = 0
          for (let i = 0; i < n; i++) {
            result += Math.sqrt(Math.cos(Math.sin(42)))
          }
          return result
        },
      },
      render (h) {
        return h('div', this.heavy())
      },
    },
  },
  props: ['number'],
}

「左上にfpsがなにげに表示されてるし」「fpsってframe per secondでしたっけ: 昔のフィルム映画だと24fpsだった覚えが🎥」「今はもっと高そう」「たしか放送系のメディアは29.97fpsとか半端な数値だった」「何だか微妙な値ですね😆」

参考: フレームレート - Wikipedia
参考: NTSC のフレームレートはなぜ 29.97fps なのか - swk’s log

その他JS


reakit.ioより


つっつきボイス:「reactのkitだからreakit」「こういうダイアログとかが組み込みで入ってる感じ↑」「ところで上もそうですけど、最近サンプルコードにcodesandbox.ioを使ってるのを見かけますね」「ゴリゴリ書いている人はCodePenが多いような気もしますけど☺️」


codesandbox.ioより


codepen.ioより

CSS/HTML/フロントエンド/テスト

CSS Scan


つっつきボイス:「有料のChrome拡張みたいです」「画面の要素に当たっているCSSを全部ぶっこ抜いてくれるのね」「もしかしてChrome DevToolsのComputed↓で取れるのと同じなんじゃ?😆」「マウスオーバーで取れるのがいいのかも☺️」「似たようなツールがありそうな気がしてきました😅」「いくらでも車輪が再発明される世界ですし😆」

言語・ツール

GraalVM 19.0とEnterprise Editionがリリース


graalvm.orgより


つっつきボイス:「おお〜GraalVMがついにproductionレベルに!」「どんな人が使うんだろ😆」「軽そうだし、使いたい人はいそう」「GraalVMというとTruffleRubyで使われていますね🍄」

参考: 雑把の仮想マシン(JVM, .NET, BEAM, スクリプト言語, LLVM) | プログラマーズ雑記帳

その他言語


つっつきボイス:「高校生を対象にPythonを援用する授業を行った結果の報告だそうです🎓」「成果は『ニュースやWebで見られるグラフをうのみにしてはいけないことを理解させた』」「エライ😆」

「こういう授業って選択科目ならまだやりやすいんですけど、必修科目にするとなると、できない人でも頑張れば単位を取れるようにしないといけなくなるのがキツイですね😅」「必修科目で単位取れない人続出だと確かにヤバイですね」「それ以前にプログラミングを教えられる先生の絶対数が心配😰」「プログラミングを教える側を育てるのは無理そう😇」

「自分が高校生だったときは週に1回『自由研究』というコマがあって半年に1回発表したりしてたんですけど、そんな感じで学校ごとの裁量で自由にやれるコマでこういう授業をやれるといいですよね😋」「そんな授業があったんですか…いいな〜」「あの頃『総合』っていう科目ありましたよね」「自分の高校ではまさにその総合科目を自由研究に割り当ててました😋」「自分の頃はそんなのなかったというかガッコ真面目に行ってなかったし😆」「私もだった😆」

後から見つけたツイートです↓。

その他

笛で呼ぶといえば


つっつきボイス:「タクシー、笛で呼ぶか〜?」「呼んだ瞬間に来るならともかく🤣」「ちょ🤣」「ゼルダの竜巻みたい🤣」「この笛きっと子どもが遊びでピーピー吹きまくるだろうし😆」「インターフェースとして面白いは面白いけど〜」「スマホがないと動かないそうです」「ならスマホでよかった説😆」

三人寄れば文殊の知恵


つっつきボイス:「この数学ブログはビジュアライズ頑張ってて好きです❤️」「冒頭の絵がいきなりエヴァっぽいんですけど😆」「『バルタザール、メルキオール、カスパー』ってもう完全にエヴァねた〜🤣」「そういえば昔最初に立てた3台のLinuxサーバーの名前がこれでした😆」「4台目立てられないし😆」「4台目のファイアウォールは無理やりリリスになりました🤣」

「各自がちゃんと判断できる人であれば『人数が増えれば増えるほど、多数決で正解を選ぶ確率は100%に収束する』ってスゴいな」「あと各自の正答率が同じであれば」

「逆に正答率0.5未満の愚者だと、人数を増やすとどんどん正解率が落ちる🤣」「たしかにそうなるしかないわな〜」「正答率0.5未満だとサイコロにも負けてるし😆」

「ということは、賢い人を集められるなら民主制の方がいいけど、集められないなら有能な君主を1人立てる独裁制の方が結果がいいということだったりして?😇」「もう何というか😆」「やっぱり教育は大事」

「ちなみに、yes/noで答えられる2択問題なら、愚者を集めて出た答えに逆張りすればかなりいい結果が得られるハズ🤣」「たしかに〜!😆」「単純化すればそんな感じになりますね☺️」「阿佐田哲也のギャンブル必勝法にも『ツイてないやつを発見して逆張りせよ』ってありました🎲」

その他のその他

つっつきボイス:「2つ目は嗅覚が衰えると死亡率とか認知症のリスクが上がるという研究の話で、母集団は『運動している高齢者』だそうです」「外界からの刺激が少なくなると認知症になりやすいみたいな話にも通じるのかも?ボケ防止にピアノを練習するみたいな」「うつ病で嗅覚が落ちることがあるという話を何かで見ました」

「おばあちゃんにFPSをめっちゃやりこんでもらうというのは?🤣」「大丈夫かしら🤣」「おばあちゃんが銃持ってヒャッハーな姿を想像してしまいました😆」「まぁ一見やばそうにみえますけど、コンピュータゲームには『絶対ケガをしない』という絶大なメリットがあるので☺️」「それは大きい!」「運動はいくら身体によくてもケガをする可能性は常にありますし🚑」

いろいろ総合すると、ボケ防止には「適度に不慣れなことをする」のがよさそうな気がしています。


つっつきボイス:「電話がかかってくるだけで発動してしまうそうです」「やっぱりAPI連携の口の部分って、悪用の可能性を常日頃から注意しておかないといけないから大変〜」

参考: 電話するだけでスパイウェアをダウンロード――WhatsAppが重大な脆弱性を修正 - ITmedia エンタープライズ

番外

甲骨文字のチート


つっつきボイス:「この間上の新書を読んでて『殷代の甲骨占いは、吉が出やすいようにあらかじめ甲骨を加工して、自分に都合のいいひび割れになるようコントロールしてた』『占う内容を後から改ざんした形跡が見つかった』という記述が面白かったので😆」「当時もそのぐらいのことはやってそう☺️」「数回練習したらすぐできそうですし😆」「意見を通すにも、自分がこうしろと命令するより神がそうおっしゃってるという形にする方が通しやすいでしょうし」「占い師も、期待される答えを忖度してコントロールできる人の方がきっと儲かっただろうし😆」

参考: 甲骨文字 - Wikipedia

「そういえば今度の大嘗祭で使う米の産地を亀甲で占ったというのをTVで見ました」「京都に決まったんでしたっけ」「その亀甲を加工した職人さんのインタビューをTVで見たんですけど、すごく薄く作らないといけなくて大変だったとか🐢」

参考: 亀卜 - Wikipedia

ベイマックス?


つっつきボイス:「結構すごい動きするし😳」「よく考えたな〜これ」「災害救助とかいろいろ使えそうだし」「安いから壊れても平気というのがいい😆」「それ重要かも😋」

参考: これはヤバイ。スタンフォード大学のバルーンロボットが可能性が無限大すぎて絶句(動画あり) | ギズモード・ジャパン


今回は以上です。

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

週刊Railsウォッチ(20190520-1/2前編)Evil Martians愛用の便利gemたち、render_asyncでRails表示を高速化、split gemでA/Bテストほか

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

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

Publickey

publickey_banner_captured

DB Weekly

db_weekly_banner

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ