週刊Railsウォッチ(20190402-2/2後編)Apache Arrowとは何か、prop drillingはアンチパターン、Node-REDほか

こんにちは、hachi8833です。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください ⚓週刊Railsウォッチ「公開つっつき会」第9回開催のお知らせ エントリ先: 週刊Railsウォッチ 公開つっつき会 第9回|IT勉強会ならTECH PLAY[テックプレイ] 次回の公開つっつき会は4/4(木)です。皆さまのお気軽なご応募をお待ちしております!🙇 RubyKaigi 2019の予習にもぜひどうぞ。 ⚓クラウド/コンテナ/インフラ/Linux/Serverless ⚓Apache Arrowとは 参考: Apache Arrow Homepage Railsdm 2019でjoker1007さんの発表に登場していたApache Arrowが気になりました。 つっつきボイス:「というわけでApache Arrowをピックアップしてみました」「Apache Arrowはこれまでも何回か取り上げてきたと思いますが☺️」 サイト: Apache Arrow Homepage arrow.apache.orgより 「Aapache Arrowは言ってみれば、大量のデータを効率良くさばくために、インメモリのアラインメント(データの並べ方)を規格化しようというのが狙いです」「おぉ?」「上の図↑はカラム指向(カラムナー: columnar)の話なんですが、そもそもデータがメモリ上に凝縮されて並んでいないとキャッシュがうまく効かないといった問題もありますし、いろんな言語やいろんなライブラリがメモリ上に好き勝手にデータを配置していると、それらの間で効率よくデータをやりとりできないという問題が元々あるわけです」「ふむふむ」 columnar: {形} : 円柱(状)の、〔紙面レイアウトが〕縦欄式になった 「たとえばRで作ったデータをPythonで読み込みたいとすると、従来は下の図↓の左みたいにいちいちストリームをファイルに書き出してデータ形式を変換して読み込み直して、みたいなかったるいことをやらないといけなかったわけです」「あー😳」「現状では処理系が違えばデータの持ち方も違うので、そういうのをいったん何らかの中間形式に吐き出してそれを読み込むみたいなことをせざるを得ない😢」 arrow.apache.orgより 「Apache Arrowはメモリ上のアラインメントも含めて規格を揃えようというスタンスなので、Shared Memory的な方式でそれらがデータをやりとりできる😎: つまりmmapするだけでできるイメージ」「おぉー、いわゆるシェルでパイプでつなぐみたいなのを…」「いえ、そういうのとはまるで違います🧐: プロセス間でメモリを共有するからめちゃくちゃ高速✈️」「あっそうか!これ以上速いものがありませんね」「言い換えればやりとりでデータコピーがまったく発生しない😋」「そうだったのか〜😅」 参考: 共有メモリ - Wikipedia 参考: Man page of MMAP 「逆に言えば、メモリアドレスが途中で変わってしまうとキャッシュに乗らなくなってしまいます」「たしかに」「だからArrowではそこの規格を揃えないといけないわけです」 「メモリ共有でやるというのは、ちょっと危険な匂いを感じてしまいますけど、どうなんでしょう?🤔」「もちろんArrowでは低レイヤを扱うことになりますけど、やってることはstruct(構造体)のフォーマットを決めている(Common Data Layer)程度ですね☺️」 「そういえば以下の記事↓でも、従来のデータのやりとりではシリアライズとデシリアライズでほとんどの処理が埋まってしまうとありました」「あと従来だとネットワーク転送もめちゃくちゃ発生しますね: だから遅いし、しかも課金されるのはたいていそういう部分だったりしますし💸」「たしかに〜」 参考: Apache Arrowの最新情報(2018年9月版) - ククログ(2018-09-05) 「さらに、Apache Arrowはそういうインメモリでのデータフォーマットの規格化以外に、データをファイルに書き出すときの公式フォーマット(Parquet: パーケ)も決めています: joker1007さんもこれに言及してましたね😊」「あ〜そういえば」「だからインメモリでやりとりしたいならそのまま使えばいいし、ファイルに書き出して別のパイプにつなぐとかやりたければParquetで受け渡しすればいいし、しかも読み込めばそのまんまインメモリで共有できるし」「何にも加工しなくていいなんてすんげ〜😍」「最初からいつでもメモリに乗せられるように設計されているので☺️」 parquet: {名-2} : 寄せ木細工[寄木張り]技法[工法] 「てな具合に、大量のデータを高速に処理したり、パイプラインに限らず処理を次々につなげていくことに特化しているのがApache Arrowです」「おぉ〜、だから機械学習方面でもすごく注目されてるんですね」「機械学習といえば今のところPythonが圧倒的に強いんですが、トラディショナルな統計処理となると今もRが強かったりしますし、さらに結果を金融工学方面で使おうとすると今度はそっち方面でOcamlが強かったりするじゃないですか😆」「😆」「😆」「とやっていくうちに、さっきの図の左みたいにcopy & convertだらけのメッシュ状になってしまうので、それを図の右のようにすっきりやれるようにしようというのがApache Arrowの目指すところですね🎯」「惚れちゃいそう🥰」 サイト: R: The R Project for Statistical Computing r-project.orgより サイト: OCaml – OCaml ocaml.orgより 「Apache Arrow自体は、おそらくそんなに大きなライブラリではないと思います: Arrowのメッセージングなどの仕様と、小さなコモンライブラリがあって、後は言語ごとの実装があるぐらいかな: そこではプロトコルとデータ構造がきっちり揃っていると」「きっとエンディアン(バイトオーダー)なんかも揃えているんでしょうね」「もちろん: そこが揃ってないと意味ないし😆」「😆」 参考: エンディアン - Wikipedia 「つまりApache Arrowでは各言語用のライブラリがあってそれ経由で使うという感じ?」「最終的にはそうなりますね: 内部実装は言語ごとに違うかもしれませんが(Cのライブラリを使うとか生メモリを読み書きするとか)」「公式サイトを見るとC++やRubyみたいな主要な言語はひととおりカバーしているみたいですね❤️」 ⚓日本でも「技適」なし端末が使える 元記事: もう「日本スルー」はなくなる? 技適なし最新端末が日本で使えるように(前編) (1/3) - ITmedia NEWS 電波法 - Wikipedia — 電波管理局がとっくになくなっていたことを今頃知りました つっつきボイス:「この間のBPS社内勉強会でやった月刊railsウォッチサマリーで、カントリーリスクの話に関連して技適(技術基準適合証明)という言葉が出てきたので、『ギテキって何だろう』と調べていたら上の記事にたどり着きました😆」「そういえば技適ってあまり一般の人は使わないか😆」 「技適はアマチュア無線方面でよく出てくる言葉で、たとえば自分で無線機を組み立てるときには必ず技適を取得しないといけなかったりしますね」 参考: アマチュア無線 - Wikipedia 「技適は法律でありライセンスなんですが、日本の場合、この技適を取得しないと特定の周波数帯で特定の出力で電波を発信してはならない(=やると法律違反になる)というのがまず基本にあります」「ふむふむ」「電波を発信する行為の扱いは国によってさまざまで、たとえば米国ならFCCがすべて管理していますし、EUにもそういうのがあったと思います」 参考: 連邦通信委員会 - Wikipedia — マスコットの項が楽しいです 「そうそう、そういう許諾はたとえばiPhoneの設定で見られますヨ☺️」「お、どれどれ」(しばし探す)「あった〜🎯: 設定 > 一般 > 認証↓」「そうそう、米国とカナダとヨーロッパと日本それぞれで認定を取ってる」 「で、この中で日本は独自ルールなので、海外で販売されている機器は日本では技適を取らなければ電波を発信してはいけない⛔️」「売ることはできても、電源をオンにして電波を出しちゃったらお縄になっちゃうということですね🚓」「よく取沙汰されるのは無線LAN機器で、ISMバンド(周波数帯)の中には日本でしか使えないものや、逆に日本では合法でも海外では違法になるものもあります」「おぉ」 参考: ISMバンド - Wikipedia 「元々、電波というか周波数帯は国が所有するリソースなので、扱いとしては土地とかと同じなんですね: それを国ごとに管理していて、日本の場合は総務省↓がやっていると」「ふむふむ」 参考: 総務省 電波利用ホームページ|周波数割当て 「で、未使用の周波数帯ならともかく、既に使われている周波数帯を別の用途に転用しようとすると『来年からおまいらのテレビは映らなくなるのでよろしく』みたいに国の力でそこからどかすことになる😆」「😆」「なので、国の力を使うとしてもどかす作業はとても大変🏗」「でしょうね〜」 「ちなみについ最近AMラジオ用の周波数を廃止する↓みたいな話がありましたけど、あれは民間側から『やめたい』と言っているのでまた別の話☺️」「採算が取れないとかそういう理由らしいですね」 ちょっと待って!!AM放送が廃止になったらFMが入らない地域に住む者は、ラジオが聴けなくなるじゃないか!!私も上記に当てはまる。昨年のブラックアウトのとき、ラジオにどれだけ救われたことか…。 #AM放送廃止反対 — nao (@nopperan_nao) March 22, 2019 「逆に地デジでVHFからUHFに移行するなんてのは上の国の政策につながる話ですね📺: 従来の地上波VHFの1ch〜12ch(東京)が移行によって空くのはまさにこの話」「あとPHSも廃止されてましたね📱」 参考: 日本の地上デジタルテレビ放送 - Wikipedia 参考: PHS - Wikipedia 「しかし国によって機器の周波数帯がバラバラだと当然ながら不便が生じるので、上述のISMバンドみたいなところでたとえばこういう周波数帯↓を世界共通で使えるように調整を図っているわけです📡」「なるほど!」「ISMを承認している国であればここに載っている周波数帯を使えます: たとえば表の2.4GHz帯が無線LANとかBluetoothで使える部分」「へぇ〜」 Wikipediaより 「昔すぎておぼろげにしか覚えてないんですが、返還前の香港では周波数帯が公にまったく管理されてなかったという記事を当時読んだことがありました」「当時の香港の事情は知らないけど、技術的には誰でも電波を発信するだけならできてしまうので、たとえば法律はあっても誰も従ってなかったとかの方がありそう😆」「そうですね、今はきっと全然違うと思いますが😅」「あるいは逮捕しに行く人がいなかったりとか👮」 参考: 香港の歴史 - Wikipedia 「日本は電波の取締りが厳しいですよね」「日本だと、たとえば屋内では使えるけど屋外では使ってはいけないという周波数帯があったりしますね」「あー、電力線をネットワーク線にする機器がそれに絡んでたんでしたっけ」「それそれ」「コンセントにつなぐと通信できるみたいな」「全っ然流行りませんでしたけど😆」「あれ期待してたのに〜😢」「あれは技術よりも法律の方が問題で、屋内線なら流していいけど屋外線に流すと違法になったりとか🔌」 参考: 電力線搬送通信 - Wikipedia … Continue reading 週刊Railsウォッチ(20190402-2/2後編)Apache Arrowとは何か、prop drillingはアンチパターン、Node-REDほか