こんにちは、hachi8833です。そういうわけで週刊Railsウォッチの軽量化企画の後半戦いきます。
⚓週刊Railsウォッチ「公開つっつき会#8」開催のお知らせ
次回はあさって3/7(木)開催です。参加枠はまだ余裕ありますので、鍋でもつっつくような感じで皆さまのお気軽なご参加をお待ちしております🙇。
⚓クラウド/コンテナ/インフラ/Linux/Serverless
⚓GCPでRedisを動かす
- 元記事: Running Redis on GCP: four deployment scenarios | Google Cloud Blog
- サイト: Memorystore | Google Cloud
- Redis公式サイト: Redis
つっつきボイス:「Google Cloudの技術ブログです」「おお、GCPでもAWSのElastiCacheみたくマネージドでRedis使えるのかな?」「そうみたいです」「GCPのはCloud Memorystoreって言うのね」
参考: Amazon ElastiCache (インメモリキャッシュ管理・操作サービス) | AWS
「記事をざざっと見た感じでは、AWSのRedisでできることはだいたいできるっぽい」「GCPもAWSに追いつけ追い越せで頑張ってる感じですね」
⚓AWS AuroraからLambdaを呼べる
すでに2年前からAuroraでLambdaをtrigger経由で呼び出せるということを知って震えている。あっという間にLambdaの同時実行数越えてサチるんじゃないかと思うけど、どうなんだろ?https://t.co/lEGBnELyC3
— masa寿司 (@masa_iwasaki) February 25, 2019
- 記事の概要:
- AWS AuroraからLambda関数を用いてテーブルのデータ変更をキャプチャする
- そのデータをAthenaにエクスポートする
- さらにQuickSightでビジュアル表示する
つっつきボイス:「そうそう、AWS AuroraからLambda呼べるらしいですね」「AuroraってPostgreSQLでしたっけ?(わかってない)」「MySQLとPostgreSQLどちらとも互換性がありますね↓」「やっぱり〜😅」「ツイートにもあるけど確かにLambdaの同時実行数があふれそうではある」
参考: Amazon Aurora(MySQL、PostgreSQL 互換のリレーショナルデータベース)|AWS
⚓the-federation.info: ソーシャルネットワークのデータサイト
あと移住を検討している方は https://t.co/Zt03UGcOrK にネットワーク全体のリストがあるので利用したいサービスとインスタンスをここから選ぶのお勧め。
— 硫酸鶏 (@acid_chicken) February 25, 2019
つっつきボイス:「The Federation?」「SNSとかがどのぐらい賑わってるかを実データで見られるみたいです」「おほ、プロトコルレベルとかノード数とかを見られるし🥰」(しばし個別のデータをつっつく)
「ここにある中ではMastodonが多いですね」「Mastodonは分散型でやってますから」(しばし分散ネットワーキングの話)
「分散型といえば、Chordっていう分散アルゴリズムの一種がとてもよくできてますね」「Chord?!初めて聞きました😳」「この辺によくまとまってますね↓」「DHTって分散ハッシュテーブル(Distributed Hash Table)なのか」
「分散システムでデータをどのノードというかマシンに保存するかを効率よく決定する分散アルゴリズムの総称がDHTなんですが、その中でもChordは上にあるようにID空間をリング状に構成しているのがポイント🤓」「おぉ〜面白れぇ〜!こんな仕組みがあったなんて」(しばしChordの仕組みをつっつく)「Chordは情報科学の分野で割と前から研究されているアルゴリズム」「たしかに上のスライドも2012年ですね: 今のクラウドやSNSみたいな大規模な分散システムで使われてそう」
参考: 分散ハッシュテーブル - Wikipedia
参考: Chord - Wikipedia
比較的動きのあるChordアルゴリズムの動画はこのぐらいしか見当たりませんでした↓。
上と関係ありませんが、私はchordというと音楽の「コード進行↓」などで使うchordしか知りませんでした😅。こちらもcodeではなくchordです。
追記(2019/03/06)
morimorihogeさんからChordとDHTの補足情報をいただきました🙇。
Chordはいわゆるオーバーレイネットワークと呼ばれるIPネットワークとは別の概念レイヤでノード間ネットワークを組む研究分野の一環で出てきたやつです。
Chord自体がとてもよかったのは、
- Chord自体がとてもシンプルだったこと
- Chordの元論文だけではまだ解決しないといけない課題をたくさん産みだしたこと
- DHTという分野の応用性をとても高く切り開いたこと
というのがあり、これによってネットワーク・分散システム系研究をやっていた研究者がたくさん論文や研究成果を出すことができる種になったというのもあります。
DHT自体はHDFS(Hadoopとかで使われている分散ファイルシステム)やBittorrent、Winnyとかでも確か使われていたはず。NAPT超え技術と組み合わせることで、世界中のありとあらゆるノードを任意に直結させることができる技術なので、とても応用範囲が広い。
⚓SQL
⚓dbdiagram.io: 無料のデータベース設計&分析ツール(DB Weeklyより)
- サイト: dbdiagram.io - Database Relationship Diagrams Design Tool
- サイト: Holistics: Business Intelligence and ETL Data Preparation for growing businesses -- dbdiagramの提供元
つっつきボイス:「無料ツールだそうですが、あると便利でしょうか?」「お、どれどれ」(しばし触ってみる)「慣れてないせいかまだ思うように動かないけど、ER図からテーブルを作るというよりはテーブル定義ができあがってからそこからER図を作るのがメインみたいな雰囲気かな?」「おー」「自分なら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↓になってました🚀。
⚓その他JavaScript
- リポジトリ: Microsoft/TypeScript/issues/29288 -- TypeScriptが今後TSLintからESLintへサポートを移す(JSer.infoより)
Reactで去年得たベストプラクティスが今年のベストプラクティスで不要になるみたいなケースが普通にあって実際やばい。propsの変化を検出して副作用を発火させる方式、去年はcomponentWillReceivePropsをやめてcomponentDidUpdateでやりなさいって言ってたけど、Hooksを導入するとまた変わるのよね。
— なかざん@領収書と和解せよ (@Nkzn) February 23, 2019
つっつきボイス:「去年のベストプラクティスが今年そうでなくなるって、Reactコワい...😱」
TypeScriptでの型依存… pic.twitter.com/mhj7dV7cn7
— Reo💻 (@reoring) February 27, 2019
つっつきボイス:「なつかしいテンプレですね😆」「any型補完できないとかstrictオフとかあるある〜😆」
おいかけボイス:「プログラミングの素養のない人は型なしを好むって噂聞いたんすけど」「マジで?😆」「それっぽい記事をときどき見かけるというだけですが🤣」「🤣」「で自分は型あり言語は何となく苦手っす😆」
型あり言語と型なし言語というと、別につながりはありませんが、何となく「フレットありのベース」と「フレットレスベース」の違いを連想してしまいました。達人はどっちを弾いてもだいたい同じ音になるので、単に曲調や好みで使い分けてるようです。
⚓CSS/HTML/フロントエンド/テスト
⚓最近のSEOの良記事
つっつきボイス:「SEO記事って刹那的なものが多い印象だったんですが、はてブにあがってたこの記事はよい感じだったので」「こういうGeneral Guideline↓をちゃんと読んでやってるっぽいですね😋」
- PDF: Search Quality Evaluator General Guidelines(英語のみだそうです)
「うん、これもよく書けてる記事👍: Webやってる人は全員読んでおくぐらいの勢いで」「顧客のSEO的なリクエストを的確に把握するのにも役立ちそうですね」「というより顧客のSEO面で相談に乗れるようにかな🧐」
⚓その他フロントエンド
Photoshopを学ぶ高校生の皆さんへ
AI機能を作品づくりにどう活かせばよいのか、わからないという感想が多かったので一例を紹介します3つのAI機能
・人間を背景から分離して動物と入れ替える
・動物のポーズを変更する
・入れ替えた動物を背景写真の色調に変換する#Photoshop #AdobeSensei #CCDojo pic.twitter.com/Encq1usHJz— Mr. Creative.Edge @Adobe MAX + Adobe Sensei専用 (@commonstyle) February 25, 2019
つっつきボイス:(動画を見て)「フォトショの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)。
- リポジトリ: d4l3k/go-pry
- リポジトリ: motemen/gore
⚓MESHとは
以下をMatzがリツィートしてて気づきました。malloc()
を置き換えられるメモリアロケータだそうです。
"Ruby benchmark: Mesh is able to decrease mean heap size by 18% compared to Mesh with randomization disabled and non-compacting allocators" なるほど / “[1902.04738] Mesh: Compacting Memory Management for C/C++ Applications” https://t.co/dHOtXuxjcF
— sic (@s4ichi) February 26, 2019
上の記事サイトの雰囲気が、どことなくjxck.io↓のレイアウトを連想しました。単に同じスタイルを使ってるのだと思いますが。
blog.jxck.ioより
⚓その他言語
言語処理系を作った小学生は一人しか知らない。中学生は数人、高校生はもうちょっと。自分が高校生の時には、作りたかったけど挫折したな。
(でも、最終的にはすごいの作ったから!←負け惜しみ)
— Yukihiro Matsumoto (@yukihiro_matz) February 25, 2019
⚓その他
⚓GitHubの「Code Owner」
- 元記事: OSSの現状と今後 - 技術探し
つっつきボイス:「上の記事で、GitHubでCode Ownerという仕組みでリポジトリへのpushとかの権限を与えられるって初めて知りました」「見た見た: なかなかうまいアイデア😋」「リポジトリへの参加を増やしてコミュニティを盛り上げるのってよさそうですね😀」
参考: Introducing code owners - The GitHub Blog
⚓レンズのないカメラ
- PDF: 像情報符号化と圧縮センシングを
協調させた新原理小型カメラ -- 180910_説明資料.key -- p17〜- 研究室: 中村 友哉 - 東京工業大学 -
日経の記事は途中から有料になって読みづらいです😭。入力光をフィルタで絞り込むことで、あとはソフトウェア的にフォーカスを移動できるんだそうです。
参考: 《日経Robo》レンズ不要の日立の極薄カメラ技術、ロボットの外装や指などに“貼れる” | 日経 xTECH(クロステック)
⚓その他のその他
- 元記事: HyperCard Zineのために作成されたStacksなどを収めたブラウザベースのエミュレータ「HyperCard Adventures」が公開。 | AAPL Ch.
- 元記事: Webブラウザで利用できるオープンソースのHyperCard再構築プロジェクト「ViperCard」が登場。 | AAPL Ch.
つっつきボイス:「むか〜しHyperCardをよく使ってたのでなつかしくてつい😆」「HyperCardって昔のMac OS 9以前に同梱されてたアレ?」「ですです: 当時は画期的でファンも多かったんですが、カラー化やマーケティングの失敗で消えてしまったという😭」「HyperCardって編集モードでボタンをダブルクリックするとスクリプトを入力したりできるんですが、当時これがオブジェクト指向だと牧歌的に説明されてたせいもあってオブジェクト指向をだいぶ誤解しました😅」「😆」
⚓番外
⚓金属木材
動画があれば貼ろうかと思いましたが、記事のスクショ程度のしかなかったのでやめました。
つっつきボイス:「金属木材っていうけど普通に金属な気が😆」「木材に金属を染み込ませて強化でもするのかなと思ったら、木材のような構造を持った金属みたいです」「metallic woodってそのまんま😆」
後で調べると、単にmetallic woodと言うと従来の「金属建材」を指すのだそうです。
参考: チタンの強度と水の密度を備えた「金属木材」を開発――「インバース・オパール」構造を実現 | fabcross for エンジニア
後編は以上です。公開つっつき会でお会いしましょう!
バックナンバー(2019年度第1四半期)
週刊Railsウォッチ(20190304-1/2:前編)Rails 6.0.0 beta2リリース、Ruby 2.7の新しい記法、各種自動レビューツール、ULIDとはほか
- 20190212 EnvoyとIstioに大注目、SQLQLとは、buildkite.comのCI、さよならItanium、PWA vs Androidほか
- 20190204 あってうれしい40のgem、Ruby 2.6.1セキュリティリリース、Hanami v2.0.0.alpha1リリースほか
- 20190128 Rails 6のオートローダーがZeitwerkに置き換わる?Rails 6はRuby 2.5が必須、最近のSQLiteほか
- 20190121 Rails 6.0.0 beta1リリース、Railsは2019年も「あり」か、Jetsでサーバーレス、ES2018の新機能、RSpecの心ほか
- 20190115 Rubyの<=でクラス同士を比較、Rubyの記号の読み方いろいろ、Ruby C API解説サイトほか
- 20190107 Railsのパフォーマンス改善Tips集、Rubyの
&:シンボル
ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。