週刊Railsウォッチ(20190625-2/2後編)「Webpack入門」は秀逸、「システム設計入門」、Envoy Mobile登場、Docker Desktop for WSL 2ほか

こんにちは、hachi8833です。ソルベくんを軽く試してみたところコアを吐きました😇。

速報: Ruby向け型チェッカー「Sorbet」をStripeがオープンソース化

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

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

開始以来ついに1年目を迎える第12回目公開つっつき会は、来週の7月4日(木)19:30〜にBPS会議スペースにて開催されます。引き続き皆さまのお気軽なご参加をお待ちしております🙇。


つっつきボイス:「もう12回目か、早え〜📅」

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

DockerがWSL 2に最適化する


つっつきボイス:「もう来月に出すのか!😳」「考えてみたら素のLinuxカーネルがWindowsで動くようになればDocker側はあまり変更しなくてよさそうだし、プレビューのときからMSと共同でやってそうだし☺️」

「そうそう、Docker Desktop for WSL 2がHome Editionでも動くようになるのはデカい🌋」「今までWindows 10のHome Editionだとできなかったのか…」「これまではHyper-Vを有効にするためにはProfessional Editionに上げないといけなかったから当然無理でしたね😆」

参考: Hyper-V - Wikipedia

「WSL 2って、結局Hyper-Vが必要になるんじゃないかな?🤔」(ググる)「↓この辺を見るとHyper-Vの機能サブセットとか書いてあるからフル機能ではなさそうだけど😆」「😆」「そうでないとProfessional Edition買う意味がありませんし😆」「そうやってマイクロソフトはメンテの手間を増やしていくんですね😆」「macOSはどれでも開発環境にできるけど、WindowsはProfessional版以上にしないと開発しにくいのが地味にダルい😅」

参考: 「WSL 2」は「Windows 10 Home」でも利用可能 ~MicrosoftがFAQを掲載 - 窓の杜

Q:「WSL 2」は「Hyper-V」を使用する? する場合は「Windows 10 Home」でもサポートされる?
A:「WSL 2」は確かに「Hyper-V」アーキテクチャーで仮想化されるが、「Windows 10 Home」を含むすべてのWindows 10エディション(SKU)で利用できる。「WSL 2」向けの「Hyper-V」機能サブセットが、オプションとして提供される予定だ。
forest.watch.impress.co.jpより

ついでにDocker作者の少し前のツイートを見つけました。

「『もし2008年にWASMとWASIがあればDocker作ってなかったかも』だそうです😆」「ま、そうかも☺️」「もしもの世界😆」「まあOSのメインの部分はまだしも、ネットワーク周りはWASMだけだとつらそう😆: Dockerスタックでもたしかネットワーク周りはiptablesとか使ってるし」

参考: WebAssembly - Wikipedia
参考: WASI の標準化: WebAssembly をウェブの外で使うためのシステムインターフェース (翻訳)
参考: iptables - Wikipedia

DocSearch: Algoliaのドキュメント検索サービス


community.algolia.comより


つっつきボイス:「例のAlgoliaがオープンソースのドキュメントにAlgolia検索機能を提供するものみたいです」「ほほ〜」「公式サイトに行くと、ちょっとわかりにくいですがBootstrapのドキュメントをAlgolia検索できます」「どれどれ、あ真ん中辺のボックスか😆」「Bootstrapドキュメントサイトにある検索機能と同じですね☺️」


同サイトより

「な〜るほど」「そういえばmacOSにもこれっぽく検索できるアプリがあったような?🤔」「Dashでしたっけ?」「あたぶんそれ😆」「私はDashをもっぱらTechRacho執筆用のキーマクロ的に使ってます😅」

参考: Dash for macOS - API Documentation Browser, Snippet Manager - Kapeli


kapeli.com/dashより

「AlgoliaのDocSearchは、Dashみたいにインストールして使うアプリとかではないのか」「お、サイトの下の方にフォームがある」「オープンソース開発のドキュメントならフォームで申し込んでこの辺の設定すればDocSearchが使えるようになるっぽい」「ホスティングまではやってくれないかな?😆」「さすがにそこまではしなさそうですね😆」

後でFAQを見ると「サイトのクロールは毎日行う」「サイトの側には何もインストールしなくてよい(サイトが常にクロール可能であればよい)」「費用ゼロ」「Webサイトからはマークアップだけを抽出する(ドキュメントのみがクロール対象)」「Algolia Analyticsにもアクセスできる」などとあります。もちろん検索UIはサイトに仕込む必要があるはずですが😆。
参考: FAQ

「お、GitLabのアイコンも並んでるということはGitLabのサイトでもDocSearch使えるのか」「お〜なってるなってる↓」「これは便利〜🥰」「BPSは標準でGitLab使ってますしね😋」


docs.gitlab.comより

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

「よく見ると他にもVueやらReactやらjQueryやらElectronやら色んなサイトがDocSearch導入してますね」「それぞれいい感じに引っ張ってくれてるっぽい😋」


community.algolia.comより

APIdockの差分機能

「それにしてもDocSearchなんてとてもありそうな名前なのに😆」「そっすね〜😆」「RailsとかRubyのAPIドキュメントもこれでやれたらいいかなと思うけど、復活したAPIdockは前からいい感じにやれてるから自分はAPIdockでいいや😋」「あら😅」

Rails: APIdockがいつの間にかRails 5.2.3とRuby 2.6.3まで更新された

「APIdockは、メソッドがどのRailsバージョンで使えるかとかはもちろん、そのバージョンで差分がどのぐらいあるかがグラフィカルに表示される↓のがいいんですよ😍」「あ〜プラスマイナスってそういう意味でしたか😅」


apidock.comより

Envoy Mobile登場


envoy-mobile.github.ioより

つっつきボイス:「これ見出しだけ見かけてたかも☺️」「以前ウォッチで扱ったEnvoy↓(ウォッチ20190212)のモバイル版?」


envoyproxy.ioより

「おぉ、PublicKey記事を見ると、iOSやAndroidのホストをEnvoy Proxyにつなぎこむことができるってあるし!」「おぉ?」

「このあたりは推測ですが、たとえばチャットアプリとかソシャゲとかネットゲームみたいなものが全部Envoy Proxyで束ねられるとしたら、これは結構スゴいかもしれない❤️」「あ〜!」「そういうアプリとかネットゲームのクライアントたちが同じリージョンのEnvoy Proxy群に全部ぶっ刺さっていい感じに動いて、かつ回線断からのリカバリーなんかも全部やってくれるんだとしたら、おそらくネットワーク周りのコードを全部Envoy前提で書けるようになるんじゃないかな」「おお〜!」「それならNAT越えとかも気にしないで済むだろうし、不正っぽいノードを検出して切断するなんてことも全部Envoy Proxyのところから管理できるでしょうし、だとしたらこれはいい👍」「何だかすごい~!」「まぁ本当に動くならですが😆」

参考: NAT traversal - Wikipedia

「結局ネットワークアクセスを透過的にできて、それをまとめてよしなに管理してくれて、かつサーキットブレーカーなんかも全部付いているのがよさなので☺️」「へぇ〜!」「今後他にもいろいろやるみたいだし、オフラインコールなんかもやれるようになるのか: これならかなりのことができそうダ😋」「むちゃ強そう😅」「まあ実際にどのぐらい大規模にやれるのかとかエグいアクセスに耐えられるのかとかはちょっとわかりませんが😆、ちゃんと動くんだったらこれは結構スゴいかも🥰」

システム設計入門


同リポジトリより


つっつきボイス:「バズってたけど中身は見てなかった😆」「どことなく元は中国語っぽいですけど日本語版もありますね」「システム設計の全部盛り的な?」

「あは、『システム設計面接課題に備える』とかありますね😆」「もしかして転職の面接対策?😆」「まあ面接対策は別にしても、システム設計って要は『どこでどういうものが動いているか』『どういうところで詰まる可能性があるか』というイメージを掴んでないといけないんですよ」「ふむふむ」「上の図そのままとまではいかなくても、それに近い図は書ける人でないと☺️」

「うん、このドキュメントなかなか勉強になりそう👍: よい感じなので、暇あるならちゃんと読んでみるといいと思います😋」

「面接にも役に立つ感じでしょうか?」「これに答えられる人なら普通にアーキテクトやれると思いますし、実際自分たちもこういうの面接で尋ねますよ😎: こういう要件でこういう外部サービスを作りたいとして設計してみてくださいとか」「なるほど!」「そしてスケールするときはどこがボトルネックになるかも質問したり」「ここに載ってるレベルに回答できるとBPSではかなり戦力になりますね😋」

「まあこれも流し読むと意味がないドキュメントなので😆、読むなら暇のあるときにちゃんと読む感じで」

「しかしすごいボリューム」「これだけまとまってるあたり、書籍とか大学の資料あたりをベースにしてたりするかも?🤔」「図の感じが途中から変わったりしてますし😅」「いずれにしろこれを書いた人はモチベーションめちゃすごい💪」「たしかに〜」「もちろんこのドキュメントが何もかも網羅しているわけではないと思いますが、アーキテクチャ的に重要なところはひととおり押さえているように見えるので、やってみるにはいいと思います😊」

DB

PostgreSQLから派生したデータベースたち(Postgres Weeklyより)


wiki.postgresql.orgより


つっつきボイス:「いっぱいあるんですね😳」「何度か話したことありますけど、PostgreSQLは元々データベース研究の世界で広く使われていて、情報系の大学院生とかが研究でデータベースを実装するときはPostgreSQLで拡張するのがよく行われてましたので、ぽすぐれの派生は多いです🧐」「やはり😅」

「そういえばAWSのRedshiftもリストに入ってますね」「Redshiftはコードが完全に公開されているわけではないので完全にぽすぐれベースかどうかはわかりませんが😆」

参考: Amazon Redshift(高速、シンプル、費用対効果の高いデータウェアハウス)| AWS

「2019年の人気オープンソースデータベース」レポート(DB Weeklyより)

つっつきボイス:「よくある比較レポートですけど一応」「ああ利用率的なヤツ☺️」


同記事より

「最初のグラフは『2019年の人気オープンソースデータベース』」「NoSQL系も意外に多いかも」「でもMySQLとMariaDBで40%超えてるから相当ですね😆」「レポートのデータソースはどこだろ?…おや、レポートに『Percona Liveイベント』ってあるし、Percona主催ならそりゃMySQLが多いわけだ😆」「ああっ道理で🤣」「こういうレポートはどこから取ったデータなのかとかもチェックしないと😎」「そうでした😅」

参考: Welcome to Percona Live - Open Source Database Conference 2019 | Percona Live - Open Source Database Conference 2019


percona.comより

「なのでここでの最初の図の読み方としては、PerconaのイベントだからMySQLが多い、そのうえでMySQLの苦手な部分をMongoDBやRedisでカバーしているからおそらくこういう図になったんでしょう☺️」「なるほど!」「こういうのは疑ってかかりたいですし: だって普通に考えて全世界的にはOracleの方が多いはずだし🤣」「🤣」「🤣」「最初のグラフにOracleが出てこない時点で気づきますし☺️」「Oracleが次の『有償データベース』のグラフでやっと出てくるあたりに配列の妙があるというか😆」「有償データベースの分布はこんな感じでしょうね☺️」「DB2使ったことないけどっ😆」

「次は『パブリッククラウドvsオンプレミス』のグラフ」「オンプレが半分もあるんですね」「だいたいそうなりそう😆」

「次の『オンプレで使われるオープンソースデータベース』はPostgreSQLが多いですね」「これはわかる気がする: オープンソースのデータベースで気合を入れて限界までチューニングしようとすると、ビジネスアプリならぽすぐれになることが多いでしょうし: ソシャゲとかだとまた違うかもしれませんが」「ふむふむ」「そういう場合クラウドだと遅いので、自前でムキムキのサーバーを集めてオンプレでやる方が速かったりしますね🧐」「なるほど!」「Elasticsearchは自分でメンテしたくないからオンプレ率が低いのはわかる: セットアップだるいし😆」

「次は『パブリッククラウドで使われるオープンソースデータベース』」「意外にSQLiteが多いですね」「SQLiteは置けば動きますし😆: おそらくハードに読み書きするようなデータではなくマスター的なデータに使うことが多いのかも」「ファイルをデプロイするだけで動くから便利ですし😋」

「次は『ハイブリッドクラウドで使われるオープンソースデータベース』」「ここでElasticsearchが多いのもわかる: 一部をElasticsearchにやらせるとか」「その次の『1つのアプリでオープンソースデータベースをいくつ使うか』もほとんど1つ: そりゃできれば複数ではやりたくないし😆」

「Polyglot Persistenceは、どうやら用途に応じてデータベースを使い分けることみたい」「次のグラフが『組織で平均何種類のデータベースを使っているか』」「組織に複数あるのが多いですね」「大企業だと部門ごとにシステムを作るとかよくあるので、複数あるのはわかる☺️」

「次は『よくある組み合わせ』↓」「何だか強弱がわかりにくいグラフ😆」

「最後は『SQL vs NoSQLの人気』のグラフ」「NoSQLが1/3ある」「どこで取ったデータかわからないけどっ😆」

その他DB


つっつきボイス:「このツイートの言うとおりで、だいたいのユースケースはRDBでカバーできるしRDBを触れるエンジニアの方が多いんだから、ビジネスリスクが見えてもいない状態でマイナーなものを採用するのは普通に考えてもないでしょうね☺️」(以下延々)

JavaScript

🌟Webpack入門🌟


つっつきボイス:「これはとても学びあった❤️: Webpackがどういうものなのかも含めて全部書かれているし、マジでこれでいいんじゃね?って思いました👍」「おお😍」

「WebpackというかJavaScript周りも最近だいぶ落ち着いてきましたし、こういうタイミングで記事にまとめるのはいいかも☺️」「しばらくこの記事で乗り切れそうですね🥰」

🌟を進呈いたします。おめでとうございます!

その他JS(JavaScript Weeklyより)

「ピカ?」「パイカ?」「あれ、このネズミくんの絵見たことある気がする: かぶりないようにチェックしてたはずだけど😆」


同サイトより

「Reactとかの動きに追従することを考えると公式以外はちょっとコワい気が😆」「ホットローダーってデバッグ用でしょうか?」「デバッグならホットロードしたいでしょ普通😆」「でないとダルいし😭」

reduce ({...spread})のアンチパターン」「reduceってRubyだとinject」「injectってハマるとかっこいいけど、代表的でない形になったりすると読みづらくてちょい苦手😅」「パフォーマンスにも影響するみたい↓」「この辺はJS好きな人に😆」


同記事より

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

Google SheetsのサードパーティAPIサービス2つ


つっつきボイス:「2つともサードパーティとしてGoogleスプレッドシートことGoogle SheetsからJSONを吐き出せるサービスみたいです」「このプロジェクトのアカウントに対してシートを共有すると、指定の命名規則でAPI取得できる、って感じ?」「のようです」


heetson.comより

「Google自身もこういうのを一応やってて3年ぐらい前に試したことあるんですけど、途中で仕組みが変わって元のが動かなくなりました😆」「GoogleのAPIをちゃんと設定するのってかなり面倒なんですよね😭」

「ちょっとAPI作りたいだけだったのに、Google APIコンソールを開いてプロジェクト作ってAPIを有効にしてAPIキー作ってダウンロードして…みたいなことをいろいろしないといけなくて、特に学生にこれをやってもらおうとすると本当にめんどくさい😰」

「これらのサービスはこうやって共有するだけでAPIとして取れるのは便利そうですね😋」「顧客が本当に欲しかったもの感😊」

参考: 観測史上最速!GoogleスプレッドシートだけでAPIが作れる「Sheetson」 | AnyPicks magazine
参考: GoogleスプレッドシートでAPIが作れる「SheetDB」 | AnyPicks magazine

Async DOMとDisplay Locking


つっつきボイス:「blog.jxck.ioの最近の記事です」「appencCildはきっとappencChild😆」「きっと😆」「いろいろ知らないけどAsync DOMどこかで見た気がする: 記事でも3〜4年前ぐらいからやってたらしいとあるし」「ゲームとかだとこういうところまでみっちり追いかけないといけないだろうし🤔」「むずい😅」「こういうのはライブラリでやって欲しいし😆」

その他フロントエンド


つっつきボイス:「社内Slackのデザイン板で盛り上がってた記事です」「自分、デザイナーでも何でもありませんけど、少なくとも濁りのない原色の赤や青ってめちゃめちゃ悪目立ちしますよね😆」「少なくとも実際のデザインでは原色の出番ないでしょうね☺️」「この記事みたいなのってWebデザイン以外でもWordのワードアート↓とかでやっちゃいそう😅」「デザイナーならこの辺はまず踏まないパターンだと思うので😆、どちらかというと普通の人向けでしょうね」「なつかしのワードアート、まだあるんだろうか😆」

言語・ツール

GitPressとPull Panda


gitpress.ioより


つっつきボイス:「GitPress?最近GitHubが買収したPull Pandaかと思ったら違ったか😆」「Pull PandaってSlackにプッシュしたりするヤツでしたっけ」「今まではSlackとGitHubのインテグレーションが面倒だったけどこれでやりやすくなったとか」「BPSはGitLabがほとんどなので、顧客がGitHub使ってなければPull Pandaは出番なさそう😆」「むしろなぜ今までなかったのか😆」


pullreminders.comより

GitHub Pagesは…」「それも全然別ですね😆」「やはり😅」

神龍魔神に願いを

Redditに並んでいたタイトルだけリストアップしてみました。リンク先はarchive.orgです。

  • 不老不死になりたい
  • 死んだあの人を蘇らせて欲しい
  • 恋人無限に欲しい
  • 幸せになりたい
  • リッチになりたい
  • 全知全能になりたい
  • 本当の愛が欲しい
  • 世界に平和を

つっつきボイス:「よくお話で魔神とか悪魔に雑に『永遠の命欲しい』とか願い事するとえらい目にあったりするので、それを避けるための仕様書が上のRedditに紹介されてました」「うぷぷ😆」「これは要件を正確に定義しないといけないヤツ😆」「『死ななくなったけどずっと病気』みたいな仕様漏れを塞いでくと😆」

「こういうのって実は大事で、文章から読み取れるおかしな部分を見つける力はプログラマー脳的には重要ですね☺️」「たしかに〜」「正直、図でお願いしたい😆」「きっと魔神だって図で欲しいと思います😆」「仕様が言葉だけでみっちり書かれてるケースってあって、それはそれで別にいいんですけど、量が増えるほどピンと来なくなってくるので、せめてサンプルデータぐらいは欲しいですし🤣」「🤣」「W3Cとか🤣」「齟齬が発生しないうちに図もリクエストしますけどっ😆」

願掛けネタといえば、個人的にはフレドリック・ブラウンの「至福千年期(ミレニアム)」というショートショートが好きです❤️。

参考: スポンサーから一言 - フレドリック・ブラウン/中村保男 訳|東京創元社

その他言語


つっつきボイス:「1972年😆」「C言語の『配列がポインタに自動変換』、あ〜たしかに〜」「Cの一番わけわからない部分だし😇」「この仕様を乗り越えることでポインタを正しく理解できる感ありますけど😆」「😆」「これは議論になりそう😆」「『charchar*が文字列でもありオールマイティでもある』もわかる〜」「安全な文字列操作ぐらいはあってもよかった😢」「それを克服して今があるといえばありますけど😅」「Cで文字列操作、絶対やりたくないし🤣」(以下延々)

その他

松田卓也先生すごい


つっつきボイス:「松田先生の回答も、インタビューしている編集者の必死の食い下がり方もよくて、久しぶりにじ〜んと来る読み物でした😂」

参考: 松田卓也 - Wikipedia

亀がアキレスに言ったこと

以下の本で知りました。


つっつきボイス:「『亀がアキレスに言ったこと』はルイス・キャロルが考えたパラドックスだそうで、それまでの推論の方法に穴があったことがこれで知られたみたいです」「むむ?」「あ〜前提は前提でしかないから、前提と最後の結論とのつながりの部分を定めておかないと推論が成り立たない、みたいな感じ?😆」「当たり前過ぎて長年見逃されてたのかなと😅」

『「Aが真」「A→Bが真」なら「Bが真」』(モーダスポネンス)は自明ではない(他から導けない)ので公理として定めないといけない。

これもモーダスポネンス?

まだまだありそう

定説が覆るというとこの辺を思い出してしまいました↓。

参考: 緑青はなぜ猛毒と思われているのか? - マイノリティ雑貨店
参考: 勘違いが生んだ「黒い喪服」 増田 美子 氏
参考: 数学A 論証の指導について(PDF)


archive.orgより

必要条件と十分条件という言葉は, どうやらアリストテレス伝来の言葉らしいが, どうも評判が悪い。 日本人だけでなく, 世界中の人が混同するので, あなたが慣れなくてどっちがどっちだか分からないとしても, 悲観する必要はまったくない。
必要条件・十分条件より

番外

マグヌス効果

プロペラの高速回転を見ると冷や冷やする性分なので、ドローンはこういうので作って欲しいです。


つっつきボイス:「野球のボールがカーブやシュートみたいに曲がるのと同じ原理で浮かんで飛ぶそうです」「へぇ〜」「この筒、全部おんなじ方向に回ってる?」「みたいです: 筒を回すだけで揚力と推力が得られるのが自分もにわかに信じがたくて😆」

参考: マグヌス効果 - Wikipedia
参考: ローター船 - Wikipedia

「世の中不思議な乗り物ありますけど、エクラノプラン↓みたいなのが実際に運用されてたとかも不思議ですよね😆」「え、それ知りませんでした😅」「たしか地面効果とかで水上ぎりぎりを滑るように飛ぶ飛行機で、黒海あたりで実際に飛んでたらしいんですけど、風が吹いて水面が波立つと結構危険だったとか🤣」「あ〜これですか!😳↓」「水面ぎりぎりって一般的には危険な飛び方っぽいですけど?😅」「波がなければとても効率がいいらしくて😆」「すんげ〜」「エクラノプランはロマン💖」

参考: エクラノプラン - Wikipedia


後編は以上です。雑学成分減らすようがんばります🙇。

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

週刊Railsウォッチ(20190624-1/2前編)6.1でActionView::Componentが入る、RuboCopのRuby/Railsスタイルガイドサイト、RailsガイドProプラン/Teamプランほか

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

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

Publickey

publickey_banner_captured

Postgres Weekly

postgres_weekly_banner

DB Weekly

db_weekly_banner

Serverless Status

serverless_status_banner

JavaScript Weekly

javascriptweekly_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の書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ