Tech Racho エンジニアの「?」を「!」に。
  • 開発

週刊Railsウォッチ(20190604-2/2後編)Cloudflare Workers KVの可能性、PostgreSQL 12 Beta 1、Bootstrap 5でjQuery廃止ほか

こんにちは、hachi8833です。

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

つっつきボイス:「(ゲスト)へ〜、Railsウォッチのつっつきって、こういう感じでコメント付ける前のドラフト記事をみんなで見ながらワイワイやってるんですね😋」「ですです、それを後から文章化してます」「まあ雑談会です😆」「世の中にはいろいろなリリース情報とか出てますけど、そういうのだけ見てても『それで?』で終わりがちですし、『それがあるとどううれしいのか』みたいなところは、その分野に多少なりとも関心のある人の話を聞ける方がうれしいじゃないですか、そういうのを毎週つっつき会でやってます☺️」「ああなるほど、知見のある人だったらどう思うかって知りたいですよね😋」「自分も詳しい人の話聞きたいですし☺️」

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

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

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

高精度位置情報


つっつきボイス:「GNSSの誤差数cmってスゴいなと思って」「こういうのは昔から取り組みがありますけど、これは衛星ベースなのかな?」「衛星の他に基地局の情報も補正に使ってるっぽいですね」「基地局ベースの位置情報や衛星ベースの位置情報、他にもネットワーク系位置情報とかいろいろあります」「GLONASSはロシア系のGPSなのね」

参考: GLONASS - Wikipedia

「誤差数cmレベルのGPSは米国が前からやってると言われてますね」「つい軍事利用を思い浮かべちゃいます」「今のGPSは精度を落として使わせてもらってるという話もありますし☺️」「このシステムも誤差数cmとはいえ、衛星を拾えていればの話でしょとは思いますけどっ😆」「トンネルに入ったらどうする問題😆」

「ところでIPアドレスでふわっと位置情報を出していたりしますけどどこまで信じていいんでしょう?」「GeoIPの精度はそれなりにという程度ですね☺️」「やはり😆」

参考: GeoIP - FreeBSD入門

HotFrameworks: フレームワークランキングサイト


同サイトより

GitHubスコアとStackOverflowから機械的に生成したランキングだそうです。


つっつきボイス:「この間の社内勉強会でちょっと引用したサイトなんですけど、あくまで参考値ということを別にすると、上位10フレームワークが最近になってぎゅっと横並びになっているのが妙に気になりました」「その謎の収束は案外APIがバグってたりして🤣」「何だかそんな気も😅」

「Railsは一応Reactに続いて2位ですね」「Railsがそこまで使われてるとも思えないけどな〜?RubyとonとRailsで3単語のorで引っかかって件数増えてたりして😆: スコアの出し方にもよるでしょうけど、基本的には盲信しないようにしてますし☺️」「ですね、あくまで参考ということで」

Cloud RunでRailsを実行する(Ruby Weeklyより)


同記事より


つっつきボイス:「Cloud RunでRailsを実行、KubernetesのPodを構築するよりは楽かも😆」「Kubernetesは大変なんですね😅」「くばねてはその辺エグいですけど、Cloud Runは覚えることが少ないというのはよさそう😋」

「あとCloud Runは、AWS Lambdaとかと違って立ち上げっぱなしにできます」「あ〜なるほど!」「単なるコンテナなので、立ち上げっぱなしにしたいサービスにはいいでしょうね☺️」「ふむふむ」「ただCloud RunはChunked Transferが厳しいみたいなことも以下の記事にあるので何か制約があるのかも?🤔」

参考: Cloud Runがすごく良い | # cd ~yaasita

「そのChunked Transferって何でしょう?😅」「大きなレスポンスを返すときに、1つのTCPセッションの中でデータを送ったり止めたりする形で制御することを指しますね(long pollingも含めて)」「なるほど!」「なおchunkedはHTTP 1.1の機能です🧐: 多重化ではなくて、あくまで1つのTCPセッションをつなぎっぱなしにしてデータが準備できるまで止めておいたりデータができたらまた流したり、というもので、Cometが比較的近いですね」「おお、ちょうどネスペの過去問題にCometが出てました」

参考: Transfer-Encoding - HTTP | MDN
参考: Push技術 - Wikipedia -- long polling
参考: Comet - Wikipedia

その他インフラ


つっつきボイス:「仕事のキャリアの話という意味では両方できた方がいいといえばいいけど、両方を中途半端にやるよりは片方を専門にやる方がキャリア上は絶対いいと思いますけど☺️」「それもそうですね」

「どちらでも使えるようなサービスはどんどん誰でもできるように簡単になっているので、単にそれぞれのサービスをひととおり触ったことがある程度のキャリアよりは、成熟して枯れたサービスを徹底的に使いこなせて、例外的な問題にも対応できて、難しい要件をそこに落とし込める人の方が、少なくとも弊社ではニーズがありますね」「たしかに〜」「もちろん新しい機能にも対応して欲しいですけど☺️」

「それに、1つのクラウドでしっかり概念を押さえておけば、他ではどう違っているかという点も含めてむしろ理解しやすくなりますし☺️」「たしかにそれぞれのクラウドのアーキテクチャはそれほどかけ離れてなさそうですよね」


「ついでにインフラ面で言うと、AWSとGCPを選択可能にするとすれば、単にロックインを避けるというよりはサービス継続リスクの回避と、あと法務上の問題があるでしょうね」「というと?」「米国とヨーロッパと日本とかでデータを扱うときの法律が違っている場合、その地域の法律に合致するクラウドを使うしかなくなるので、選択可能というよりそれしか選択できなくなる😆」「あーたしかに!」「某大手サービスもそのためにAWSとGCPを地域ごとに使い分けざるを得なかったという話がありますね」

DB

Cloudflare Workers KVが正式リリース(Publickeyより)


cloudflare.comより


つっつきボイス:「なるほど!Cloudflareのエッジにキーバーリューストアを置いてくれるのか: これはとても面白い😍!」「クライアントアプリをめっちゃ高速にできそう😋」

「ソシャゲが使うかな?と思ったけど日本以外のトラフィックはそんなにないしな〜、それよりは全世界的なチャット/プッシュやpub/subサービスなんかを低遅延でやれそう」「お〜」「このサービスだとエッジ同士の通信がものすごく高速だと思うので、なまじサーバーに取りに行くよりエッジから取りに行く方が速くなるだろうし」「ふむふむ」

「おそらくですが、このCloudflare Workers KVで投げるデータはQOS上パケットの優先順位を上げるみたいなこともするでしょうね: 低遅延のAPIはお値段を変えるなんてこともするかもしれませんけど😆」「それはありそう😆」「全体に、Cloudflare Workers KVは低遅延のサービス構築でかなり効果がありそうな気がしています😋」

PostgreSQL 12 Beta 1リリース(DB Weeklyより)

参考: PostgreSQL 12β1が公開。Bツリーインデックス周りの性能向上や、インデックスの並列処理による再構成が可能に - PublickeyPublickeyより)


つっつきボイス:「Publickeyでも出ていましたが一応公式のを」「どれどれ」

Inlined WITH queries

「ぽすぐれではこのWITHが使えるんですよ」「CTE(Common Table Expressions)!」「記事のクエリで言うと、冒頭のWITH cで定義したものを後の方で参照できたりします」「サブクエリをこういうふうにも書けるんですね😋」

-- 同記事より
WITH c AS MATERIALIZED ( SELECT * FROM a WHERE a.x % 4 = 0 ) SELECT * FROM c JOIN d ON d.y = a.x;

参考: WITH問い合わせ(共通テーブル式)

パフォーマンス

「次はINSERTとCOPYのパフォーマンスが向上して、ATTACH PARTITIONも改善された」

JSONパスクエリ

「JSONパスクエリは、おぉ〜、あの謎のJSON expressionと別の書き方ができるようになってるし😍: 以下のJSONに'$.track.segments[*].location'とか'$.track.segments.size()'みたいにアクセスできるらしい」「ネストをこうやって取れるんですね😋」「JSON expressionは書くのも読むのも辛かったし😭」

{ "track" :
  {
    "segments" : [ 
      { "location":   [ 47.763, 13.4034 ],
        "start time": "2018-10-14 10:05:14",
        "HR": 73
      },
      { "location":   [ 47.706, 13.2635 ],
        "start time": "2018-10-14 10:39:21",
        "HR": 130
      } ]
  }
}

参考: PostgreSQL: Documentation: devel: 9.15. JSON Functions, Operators, and Expressions

コレーション

「ぽすぐれにもついにICU providedのコレーション(照合順序)が!: UTF-8的にイケてそう😋」「こうやってコレーションを作成できるのか↓」

CREATE COLLATION ndcoll (provider = icu, locale = 'und', deterministic = false);

参考: PostgreSQL: Documentation: devel: 23.2. Collation Support
参考: ICU - International Components for Unicode

「今までぽすぐれにコレーションがなかったんでしょうか?」「一応探してみるとPostgreSQL 10には既にICUコレーション入ってるみたい: 参考記事によると、それまではlibcでソートしていたのが10でICUをサポートしたとある」「お〜」

参考: PostgreSQL 10のICUコレーションを使うと日本語を普通にソートでき、更に文字順序までカスタマイズできる – yohgaki's blog

「そしてPostgreSQL 12ではUnicode Technical Standard準拠のnondeterministicコレーションができるようになったらしい」「わかんないので後で見てみます😇」

決定的(deterministic)コレーションでは、文字列がバイトシーケンスまで同じ場合にのみ等価とみなす。非決定的(nondeterministic)コレーションでは、バイトが違う場合でも同一とみなすことがある。よくあるのは、大文字小文字を区別しない比較、アクセント記号を無視した比較、Unicode正規化形式が異なる文字列同士の比較など。
PostgreSQL: Documentation: devel: 23.2. Collation Supportより大意

参考: UTS #10: Unicode Collation Algorithm
参考: Unicode正規化 - Wikipedia

Most-common Value Extended Statistics

「CREATE STATISTICSは最近のぽすぐれで使えますね」「12でパラメータとかが拡張される😋」

参考: PostgreSQL: Documentation: devel: CREATE STATISTICS

Generated Columns

「Generated Columnsは前にも話したので略(ウォッチ20190409)」

参考: PostgreSQL: Documentation: devel: 5.3. Generated Columns

Pluggable Table Storage Interface

「使ったことないけど、table storageをプラガブルにできるとは😆」

CREATE ACCESS METHOD heptree TYPE INDEX HANDLER heptree_handler;

参考: PostgreSQL: Documentation: devel: CREATE ACCESS METHOD

Authentication & Connection Security

「PostgreSQL 12ではLDAPでdiscoveryできるようになった」「管理上ありがたい機能😋」「ぽすぐれのユーザー管理めちゃダルいけど😆」


「あとはNoted Behavior Changesが非互換の変更」「JITコンパイルがデフォルトで有効になるんですね」

JavaScript

木曜日のBPS社内勉強会でJavaScriptをテーマにした後、JSをガシガシ書いている勢からのコメントが印象的でした。

Bootstrap 5からjQueryが消えることに

マージされたのは今年の2月でした。


つっつきボイス:「お、ドキュメント以外はだいぶ進んでる感: jQueryへの依存部分はそんなにないと思うけど、テストが大変なんでしょうね」「リアクションのほとんどは👍ですけど一部👎の人もいますね」「jQueryを使わなくなると別の部分がコンフリクトする可能性もあるからかも☺️」

「v4-without-jqueryというブランチがあったようなんですが今はなくなっているので、Bootstrap 4でjQueryをなくそうとしたけどできなかったのかなと」「一度作ったものをなくすのは大変ですし☺️」「JSをだいぶ書き直したみたい」「一応jQueryなしでBootstrap 4を使えるようにするものをいくつか有志が作ってますね」


thednp.github.ioより

その他JS


つっつきボイス:「へぇ〜、UnityでFlutterが動くのか😳: UnityはJSでも書けると聞いている割にはJSでUnityのアプリを出した話ってあまり聞かないかも🤔」「Unityのメイン言語って何でしたっけ?」「C#」「あっそうでした😅」

参考: C Sharp - Wikipedia
* ドキュメント: C# のガイド | Microsoft Docs


Wikipedia-jaより

訂正(2019/06/05)

Unityではしばらく前からJavaScriptは公式にサポートされなくなっているそうです🙇。

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

W3CとWHATWGがついに合意(Publickeyより)


つっつきボイス:「ついに合意だそうです🎉」「むしろまだやってたんだと思いましたし😆」「恥ずかしながら、W3Cと別にWHATWGがあることを知ったのは割と最近でした😇」「WHATWGのドキュメントはめちゃ長いんですけど、それでも2つあるよりは遥かにマシ」


whatwg.orgより

「こういう仕様がもっとスクショとかビジュアルベースになったらいいなと思ったりします」「うーん、ブロックの配置の説明なんかは画像がある方がいいと思いますけど、仕様そのものは文章でないと解釈ができなくなっちゃいますね🧐」「あ、たしかに😅」

はてブのすべてのページでHTTPSが利用可能に


つっつきボイス:「これ、公式より先に増田で最初に見ましたよ🤣」「マジで🤣」「ちょっと前にはてなスターの挙動が怪しかった時期がありましたけど、今思えばあれば移行期だったのかも」

「実はこの移行はTechRacho的にとてもうれしいです😂: TechRachoが数年前にHTTPS化した後、はてなブックマークで同じ記事がHTTP時代のブクマとHTTPS時代のブクマが別エントリになってしまっていたんですけど、これでHTTP/HTTPSのどちらも同じブクマになってくれるので」「これについて以前はてなに相談したことがあったんですけど、そのときは有料で対応という回答でした😆」「そうでしたか〜、とにかくおめでとうございます🎉」

その後、はてなのサービスやいにしえのソーシャルブックマークやTumblrの話題などで延々雑談が続きました☺️。

...「いろんなサービスが出たり消えたりする中で、はてなブックマークなんかは長持ちしてますよね」「何やかやで今もやってくれているのは良心的かなって思ったりしますし☺️」「ブコメとかってえも言われぬ独特の文化がありますよね」...

...「実ははてブのカテゴリのうち『テクノロジー』はあんまり見ない」「え?、意外ですね」「『総合』とか他のカテゴリに上がる技術記事は割と見るんですけど、『テクノロジー』は玉石混交感あるし、よさそうな記事は知り合いがTwitterに流してたりするのでそっち見てる☺️」「人間フィルタ最強😆」「『学び』とか割と面白いですよね」「そうそう☺️、『家電』と『おすすめ』はまず見ないけど😆」...

その他フロントエンド

つっつきボイス:「VS Codeにまた新しい何かが」「scaffoldっぽいというか、createapp.devあたりに通じそうですね」「ちょうどこの間のウォッチで扱いました(ウォッチ20190528)」

参考: Create App - your tool for starting a new webpack or Parcel project

「Web Template Studioは、JSやCSSのテンプレートに加えてこういう↓ビューのテーマ的なものも生成するっぽいですね」「テーマをストアみたいなところに置いてみんなで投稿できるとかもやりそう」「まぁどんなソースコードが出てくるかを見てからですけど 😆」「Wordの拡張HTML形式みたいなのが出てきませんように😆」


同記事より



同記事より


つっつきボイス:「これはBPS社内Slackのテスト板で見かけたんですけど、自分がMacbook Pro(2013 Late)にダウンロードして再生しても違いがよくわからなかったので😅」「自分も60Hz以上のモニタ持ってないから調べられませんね😇」「あ、そういうことでしたか(そりゃ無理だ)😆」「ゲーム用のモニタとかって、144Hzぐらいからですよね?」「ですね」

「30Hzと60Hzの違いは人間にわかっても、60Hzと120Hzの違いって果たして人間にわかるかどうか😆」「この辺はゲームやってないとわからなさそうですし、そもそも120Hzの映像データってなかなかなさそう😆」「そもそも人間が識別できる下限が50Hzあたりって言いますから、それより上ならわからなさそう」「たしかVR(Virtual Reality)とかタッチパネルだと60Hzでは足りなくてタイムラグを感じてしまうなんて話をどこかで見ました: iPhoneとかのタッチパネルだとわかるかも」「VRが90Hzぐらいだったかな?」「iPhoneも120Hzとかそのぐらいな覚えが」

「ゲームやらないんでわからないんですけど、140Hzのモニタってどんな人が使うんでしょう?」「レーシングゲームやってる知人なんかはもう感覚が普通と違ってて、その辺を気にするみたいですよ」「へ〜」「レーシングゲームとか格ゲーとかフライトシミュレータあたりでしょうね」「この辺はゲームやりこんでいる人に聞きたいです😆」

「そういえば音ゲーやってる人は液晶だと遅延があって嫌だって言ってましたね」「マジで?」「そうそう、液晶は元々遅延が大きいので」「その道ではブラウン管が最高だそうです😆」「でしょうね😆」「でなければプラズマディスプレイ😆」「音ゲーやってみるとまったく違うんですぐわかりますよ」「気持ち早めに叩いて補正するそうです😆」

「そういえば昔のProphet 5↓というシンセもキーのトリガーが遅延するので有名だったそうで、心持ちツッコミ気味に演奏していた人がいっぱいいました😆」「ああ坂本龍一とか使ってたヤツでしたっけ」「当時プロはみんな使ってましたね😆」

言語・ツール

ループは難しい


つっつきボイス:「Viscuitの原田先生の教育関連記事なんですけど、繰り返しや条件分岐より先に変数を教えないと意味がないのではということだそうです」「そりゃたしかに😆」「変数がないと無限ループぐらいしか書けなさそうですし😆」「なつかしのタートルグラフィックなら、ステートはあっても変数はなしでやれそうですね☺️」

参考: LOGO - Wikipedia

「小学生向けの教育方面で出てくるタートルグラフィックって自分は一度もやったことないんですけど、あれってどのぐらい有効なんだろう?🤔」「イケてそうなのってだいたいCodeCombat↓みたいにキャラクターを動かすようなタイプですし」「あーこれですね」「やったことないけど面白そう!」「CodeCombatはなかなかよくできてます😋: しかも前よりさらに進化してるナ」

「こういうのも要するにタートルグラフィックですけど、これをやることでプログラムが書けるようになるかというと、自分にはあんまりそう思えないんですよね🤣」「そこはまあ🤣」「組み込み制御系ならまだしも、ビジネスロジックとか文字列処理みたいな要素は皆無ですし😆」「ないない😆」

「こういうのはプログラミングのきっかけになればそれでいいのかも🤔」「そうそう、結局きっかけですよね☺️」

その他言語・ツール


jubat.usより

つっつきボイス:「はてブで見かけたので」「ユバタスってどこかで聞いたことあるかも...Preferred Networksのオープンソースですか」「それなら結構なレベルかも」

「機械学習方面は足が早いので大変😅」「最近はSparkとかRed Data Toolsとかが登場してて、学習モデルのデータが共通化される方向に進んでいますね」「あーなるほど」「エンジンはそれこそいろんなものがありますけど、Spark形式とかApache Arrow形式なんかがたいてい読み込めるようになっているので、ここ最近は自分の好きな言語やツールを好きに組み合わせてやれるようにだんだんなりつつあります☺️」「この分野は知らないんですけど、最近はそういう潮流なんですね😳」

Apache Arrowについてはウォッチ20190402をどうぞ。



github.comより

つっつきボイス:「GitHub Sponsorsでお金もらえるようになる日が来るか」「GitHubで有名人のページを見に行くと、もう『この人をスポンサーします』みたいなのが表示されてますね」「へ〜」

「GitHubは中間マージンを取らずに100%開発者に届くらしくて、そこがスゴいですよね」「たしかに〜」「それはそれでヨクナイことに使えちゃうかも😆」「個人間送金とか😆」「クレジットカードの現金化とか😆」「資金洗浄とか😆」「真っ先にその辺が気になる😆」「職業病ですね😆」

「ところで最終的に受け取るお金はどういう形式になるんでしょう?」「はてなスターがもらえますとか?🤣」「金額分の鮨が届くとか?😆」



つっつきボイス:「関数名の参照は、言語によるんじゃないかという予感が😆」「それもそうか😆」「最初はおお〜っと思う機能だけど、使いたいときには忘れてそう🤣」「脳内1次キャッシュには乗らない感じ😆」「Gitで拡張するよりJetBrainsのUpsourceとかで頑張りたい」


jetbrains.comより

「Upsourceって?」「これの何がスゴいって、コードジャンプにJetBrains IDEのコードパーサーを使っているので、たとえばRubyMineでできるジャンプは全部Upsourceでもできる」「あ〜それはスゴいですね🥰」「JetBrains IDEならWebStormでもどれでもやれます」

「そういえばGitHubにもちょっと似たようなのが前にありましたね」「Sourcegraphでしたっけ」「あれあんまりうまく動かなかった覚えが」「使ってみたけど重くなるのでやめました😆」「結局git cloneしちゃったり」「それも面倒なときにはいいんですけどね☺️」



つっつきボイス:「『動くコードが正義』派ですけど、OOPが理想とはまったく思いませんし🤣」「スパゲティコードが読めるエンジニアに一定の需要があるとは思いますけど☺️」「こじれにこじれたjQueryコードを追いかけてデバッグできる人とか」「うぎゃ〜😇」「でもそういう人がいないとどうにもならないシチュエーションは、ある😭」「自分はパスタ苦手なんで、そういうのできる人はスゴいと思います😅」「やはり人の嫌がることがお金になる💰」「スパゲティコードが今後なくなることはないでしょうね〜🍝 」「パスタからは逃げられない」「名付けてプロフェッショナルパスタファリアン🤣」(以下延々)

参考: 空飛ぶスパゲッティ・モンスター教 - Wikipedia

その他

おめでとうございます


つっつきボイス:「ついに不起訴🎉」「よかったよかった☺️」「これが通ってたらと思うと」「私も最近JS書いててalertループしちゃいましたし😆」「逮捕されちゃう〜😆」



つっつきボイス:「おおっとこれは😆」「34だけ小数以下がないぞっと」

番外

一度は考える


つっつきボイス:「ピアノの鍵盤で文字入力するのって一度は考えるかなと思うんですけど、なかなか成功しませんね😆」「大昔誰かやってた気もする」「どうマッピングするかにセンスが表れそう😆」「よほどうまく設計しないと音が現代音楽になっちゃうかも😆」「(再生して)おお、でも慣れるとこの速度で文字入力できるのか」「こういうまったく違うインターフェイスにたとえば1か月ぐらいで慣れることができる、なんて研究もあったりしますね」「ピアノキーボードでかな入力はきつそう😆」「変換キーは〜?」「きっとペダルで😆」「Alt+Ctrl+Deleteは〜😆?」

「小学校の頃読んでたマンガ↓でそういうピアノ型キーボードを見たことあります」「そういえばパイプオルガンでロボットを操縦するアニメがあったような気がするんだけど、あれ何だったかな〜🤔」「うーん思い出せない😅」

参考: コブラ速報 : 【コブラ】ピアノ型コンピューターのアイデアが秀逸だと思う・・・


今回は以上です。

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

週刊Railsウォッチ(20190603-1/2前編)Ruby 2.7.0-preview1リリース、RailsConf 2019を追う、pluckとincludesの組み合わせに注意、deep_transform_keys追加ほか

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

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

Ruby Weekly

Publickey

publickey_banner_captured

DB Weekly

db_weekly_banner


CONTACT

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