週刊Railsウォッチ(20190305-2/2後編)PostgreSQL強者から見たMySQL、SEO良記事、分散アルゴリズムChordほか

こんにちは、hachi8833です。そういうわけで週刊Railsウォッチの軽量化企画の後半戦いきます。

週刊Railsウォッチ「公開つっつき会#8」開催のお知らせ

次回はあさって3/7(木)開催です。参加枠はまだ余裕ありますので、鍋でもつっつくような感じで皆さまのお気軽なご参加をお待ちしております🙇。

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

GCPでRedisを動かす

同記事より


つっつきボイス:「Google Cloudの技術ブログです」「おお、GCPでもAWSのElastiCacheみたくマネージドでRedis使えるのかな?」「そうみたいです」「GCPのはCloud Memorystoreって言うのね」

参考: Amazon ElastiCache (インメモリキャッシュ管理・操作サービス) | AWS

「記事をざざっと見た感じでは、AWSのRedisでできることはだいたいできるっぽい」「GCPもAWSに追いつけ追い越せで頑張ってる感じですね」

AWS AuroraからLambdaを呼べる


同記事より

  • 記事の概要:
    • AWS AuroraからLambda関数を用いてテーブルのデータ変更をキャプチャする
    • そのデータをAthenaにエクスポートする
    • さらにQuickSightでビジュアル表示する

つっつきボイス:「そうそう、AWS AuroraからLambda呼べるらしいですね」「AuroraってPostgreSQLでしたっけ?(わかってない)」「MySQLとPostgreSQLどちらとも互換性がありますね↓」「やっぱり〜😅」「ツイートにもあるけど確かにLambdaの同時実行数があふれそうではある」

参考: Amazon Aurora(MySQL、PostgreSQL 互換のリレーショナルデータベース)|AWS

the-federation.info: ソーシャルネットワークのデータサイト


つっつきボイス:「The Federation?」「SNSとかがどのぐらい賑わってるかを実データで見られるみたいです」「おほ、プロトコルレベルとかノード数とかを見られるし🥰」(しばし個別のデータをつっつく)


同サイトより

「ここにある中ではMastodonが多いですね」「Mastodonは分散型でやってますから」(しばし分散ネットワーキングの話)

参考: マストドン (ミニブログ) - Wikipedia


File:Mastodon Logotype (Simple).svg - Wikimedia Commonsより

「分散型といえば、Chordっていう分散アルゴリズムの一種がとてもよくできてますね」「Chord?!初めて聞きました😳」「この辺によくまとまってますね↓」「DHTって分散ハッシュテーブル(Distributed Hash Table)なのか」

参考: ChordアルゴリズムによるDHT入門

「分散システムでデータをどのノードというかマシンに保存するかを効率よく決定する分散アルゴリズムの総称がDHTなんですが、その中でもChordは上にあるようにID空間をリング状に構成しているのがポイント🤓」「おぉ〜面白れぇ〜!こんな仕組みがあったなんて」(しばしChordの仕組みをつっつく)「Chordは情報科学の分野で割と前から研究されているアルゴリズム」「たしかに上のスライドも2012年ですね: 今のクラウドやSNSみたいな大規模な分散システムで使われてそう」

参考: 分散ハッシュテーブル - Wikipedia
参考: Chord - Wikipedia

比較的動きのあるChordアルゴリズムの動画はこのぐらいしか見当たりませんでした↓。


上と関係ありませんが、私はchordというと音楽の「コード進行↓」などで使うchordしか知りませんでした😅。こちらもcodeではなくchordです。

参考: ポピュラー和声 - Wikipedia

追記(2019/03/06)

morimorihogeさんからChordとDHTの補足情報をいただきました🙇。

Chordはいわゆるオーバーレイネットワークと呼ばれるIPネットワークとは別の概念レイヤでノード間ネットワークを組む研究分野の一環で出てきたやつです。

Chord自体がとてもよかったのは、

  • Chord自体がとてもシンプルだったこと
  • Chordの元論文だけではまだ解決しないといけない課題をたくさん産みだしたこと
  • DHTという分野の応用性をとても高く切り開いたこと

というのがあり、これによってネットワーク・分散システム系研究をやっていた研究者がたくさん論文や研究成果を出すことができる種になったというのもあります。

DHT自体はHDFS(Hadoopとかで使われている分散ファイルシステム)やBittorrent、Winnyとかでも確か使われていたはず。NAPT超え技術と組み合わせることで、世界中のありとあらゆるノードを任意に直結させることができる技術なので、とても応用範囲が広い。

SQL

dbdiagram.io: 無料のデータベース設計&分析ツール(DB Weeklyより)


同サイトより


つっつきボイス:「無料ツールだそうですが、あると便利でしょうか?」「お、どれどれ」(しばし触ってみる)「慣れてないせいかまだ思うように動かないけど、ER図からテーブルを作るというよりはテーブル定義ができあがってからそこからER図を作るのがメインみたいな雰囲気かな?」「おー」「自分ならRubyMineでやる方が早いかなと思いますが↓😆」

Rails: RubyMineでテーブル設計する

PostgreSQL強者が見た最近のMySQL(DB Weeklyより)


同記事より


つっつきボイス:「goggleってグーグルかと思ったらゴーグル」「goggleって目ん玉ひんむいてよく見るみたいな意味があるみたい」「PostgreSQLの強い人がMySQLを久しぶりに触ってみて所見を述べる感じのようです」(しばしつっつく)

見出しの概要を以下にまとめました。

  • mysql CLIやクエリ操作の印象
  • MySQLのいい点
  • MySQLの残念な点
  • PostgreSQLのアーキテクチャ/コンセプト/プラットフォームの強み
  • MySQLのアーキテクチャ/コンセプト/プラットフォームの強み
  • MySQLのここがキモい
  • MySQLのここがめちゃキモい
  • PostgreSQLにも欲しいMySQLのクールな機能
  • 結論: MySQL 8 vs PostgreSQL 11

「おー、思ったよりかなりいい記事👍: それぞれのいい点もよくない点を具体的にきっちり押さえていてとても参考になるし」「これ翻訳したいです🥰」「感情的になりそうでならないところがクール😋」

その他SQL


同記事より


つっつきボイス:「Redisモジュールのライセンスが変わるそうです」「なるほど、上の真中部分↑がRSAL(Redis Source Available License)に該当すると」「Redisコアのライセンスには影響なしだそうです」

JavaScript

Flutterが怒涛のアップデート

Hummingbirdというのもあるんですね。と思ったらウォッチで少し取り上げてました(ウォッチ20181217)。


つっつきボイス:「社内Flutter勢から1.2がリリースされたというニュースがあったのでGitHubを見に行ってみたら、もう1.3.0が出てました🥺」「早っ!しかも今日の11時間前とか」「どんだけリリース頻繁なんでしょう😆」

そして今日見返してみると、もう1.3.3↓になってました🚀。


flutter/flutter/releasesより

その他JavaScript



つっつきボイス:「去年のベストプラクティスが今年そうでなくなるって、Reactコワい…😱」



つっつきボイス:「なつかしいテンプレですね😆」「any型補完できないとかstrictオフとかあるある〜😆」

おいかけボイス:「プログラミングの素養のない人は型なしを好むって噂聞いたんすけど」「マジで?😆」「それっぽい記事をときどき見かけるというだけですが🤣」「🤣」「で自分は型あり言語は何となく苦手っす😆」

型あり言語と型なし言語というと、別につながりはありませんが、何となく「フレットありのベース」と「フレットレスベース」の違いを連想してしまいました。達人はどっちを弾いてもだいたい同じ音になるので、単に曲調や好みで使い分けてるようです。

参考: フレットレスベース - Wikipedia

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

最近のSEOの良記事


つっつきボイス:「SEO記事って刹那的なものが多い印象だったんですが、はてブにあがってたこの記事はよい感じだったので」「こういうGeneral Guideline↓をちゃんと読んでやってるっぽいですね😋」

「うん、これもよく書けてる記事👍: Webやってる人は全員読んでおくぐらいの勢いで」「顧客のSEO的なリクエストを的確に把握するのにも役立ちそうですね」「というより顧客のSEO面で相談に乗れるようにかな🧐」

その他フロントエンド


つっつきボイス:(動画を見て)「フォトショのAI機能ってもう当たり前なんだなと思って」「このあたりはBPSのデザインチームが詳しそうですね: こういうノウハウをまったく知らないと、無駄にレイヤとかで力技でやろうとして遠回りしそう😅」

言語

JavaのREPL

// 同リポジトリより
    jshell> import jdk.jshell.*;

    jshell> JShell shell = JShell.create();
    shell ==> jdk.jshell.JShell@3b2c72c2

    jshell> shell.eval("int x = 5;");
    $3 ==> [SnippetEvent(snippet=Snippet:VariableKey(x)#1-int x = 5;,previousStatus=NONEXISTENT,status=VALID,isSignatureChange=true,causeSnippetnullvalue=5)]

    jshell> Stream<VarSnippet> vars = shell.variables();
    vars ==> java.util.stream.ReferencePipeline$3@7674b62c

つっつきボイス:「以下の記事で、JavaでもREPL(Rubyのirbのような対話実行機能)があるんだって初めて知りました」「昔はなかった気が」「自分がやってた頃のJavaはいろいろつらい思い出あるけど、どうやらその後変わりつつあるっぽい」「そうそう、最近のJavaはlambda式も使えるようになってるし😋」「このJShellを作った平成生まれのコミッターさん、Javaへの強い愛を感じる🥰」

// Java 8のlambda式の例
(Integer e) -> e * 2

参考: Javaにもう一度REPLを〜平成生まれのOpenJDKコミッターを刺激するOSS開発の緊張感 - エンジニアHub|若手Webエンジニアのキャリアを考える!
参考: Java 8 のイディオム: 完璧なラムダ式がたった 1 行である理由
参考: REPL - Wikipedia

「ちなみにJShellでググったときに以下が最初に出てきたんですが、こちらはJavaScriptの方なので別物でした」「おほ、XSSを使うJavaScriptシェルだし🤓」「XSSってクロスサイトスクリプティングの?」「ですです: これはこれでオモシロイ😊」


s0md3v/JShellより

参考: クロスサイトスクリプティング - Wikipedia

そういえばGo言語にもいくつかREPLが出てました。go-pryは以前に取り上げました(ウォッチ20170721)。

MESHとは


nhiroki.jpより

以下をMatzがリツィートしてて気づきました。malloc()を置き換えられるメモリアロケータだそうです。

上の記事サイトの雰囲気が、どことなくjxck.io↓のレイアウトを連想しました。単に同じスタイルを使ってるのだと思いますが。

blog.jxck.ioより

その他言語

その他

GitHubの「Code Owner」


同記事より


つっつきボイス:「上の記事で、GitHubでCode Ownerという仕組みでリポジトリへのpushとかの権限を与えられるって初めて知りました」「見た見た: なかなかうまいアイデア😋」「リポジトリへの参加を増やしてコミュニティを盛り上げるのってよさそうですね😀」

参考: Introducing code owners - The GitHub Blog

レンズのないカメラ


同PDF p21より

日経の記事は途中から有料になって読みづらいです😭。入力光をフィルタで絞り込むことで、あとはソフトウェア的にフォーカスを移動できるんだそうです。

参考: 《日経Robo》レンズ不要の日立の極薄カメラ技術、ロボットの外装や指などに“貼れる” | 日経 xTECH(クロステック)

その他のその他


つっつきボイス:「むか〜しHyperCardをよく使ってたのでなつかしくてつい😆」「HyperCardって昔のMac OS 9以前に同梱されてたアレ?」「ですです: 当時は画期的でファンも多かったんですが、カラー化やマーケティングの失敗で消えてしまったという😭」「HyperCardって編集モードでボタンをダブルクリックするとスクリプトを入力したりできるんですが、当時これがオブジェクト指向だと牧歌的に説明されてたせいもあってオブジェクト指向をだいぶ誤解しました😅」「😆」

参考: HyperCard - Wikipedia

番外

金属木材


同記事より

動画があれば貼ろうかと思いましたが、記事のスクショ程度のしかなかったのでやめました。


つっつきボイス:「金属木材っていうけど普通に金属な気が😆」「木材に金属を染み込ませて強化でもするのかなと思ったら、木材のような構造を持った金属みたいです」「metallic woodってそのまんま😆」

後で調べると、単にmetallic woodと言うと従来の「金属建材」を指すのだそうです。

参考: チタンの強度と水の密度を備えた「金属木材」を開発――「インバース・オパール」構造を実現 | fabcross for エンジニア


後編は以上です。公開つっつき会でお会いしましょう!

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

週刊Railsウォッチ(20190304-1/2:前編)Rails 6.0.0 beta2リリース、Ruby 2.7の新しい記法、各種自動レビューツール、ULIDとはほか

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

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

publickey_banner_captured

DB Weekly

db_weekly_banner

JSer.info

jser.info_logo_captured

デザインも頼めるシステム開発会社をお探しなら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の書いた記事

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ

BPSアドベントカレンダー