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

週刊Railsウォッチ(20190212)EnvoyとIstioに大注目、SQLQLとは、buildkite.comのCI、さよならItanium、PWA vs Androidほか

こんにちは、hachi8833です。ドラフト作成中に月曜が祝日だということに気づいて日付↑を直しました。

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

公開つっつきにお集まりいただいた皆さまありがとうございます🙇。今回は予想を超えた濃厚かつハイレベルなやりとりがバルク転送的な勢いで繰り広げられて、私はすっかり振り落とされてしまいました😇。果たしてどこまで書き起こせるか。今回は結果的にインフラ成分がかなり多めとなりました。

Rails: 先週の改修(Rails公式ニュースより)

今回はコミットリストから見繕いました。

ActionViewのメモリリーク修正第一弾


#35032より

これもAction Viewの修正なので一緒に↓。


つっつきボイス:「おー地道にメモリリークを修正!」「この間から@tenderloveさんがActionViewを改修してたのはもしかしてこれをやりたかったのかなと」「Railsのメモリ消費が減るのはとてもいいこと😊」

CollectionProxy#concatがselfを返すよう修正

CollectionProxy#concatCollectionAssociation#concatのドキュメントには「selfを返すからメソッド呼び出しをチェインしてもよい」とあるが、実際には引数の配列を返していた。
このPRでは前者をArray#concatの挙動に合わせることでドキュメントのとおりになるようにし、後者についてはドキュメントから該当部分を削除した。
同PRより大意


つっつきボイス:「お、CollectionProxy#concatをメソッドチェーンできるようにしたのか」「CollectionProxyってhas manyのときのヤツかな」「以下の<<のエイリアスメソッドを足してる↓」「#concatはそんなに積極的には使わないかな〜」

参考: concat -- ActiveRecord::Associations::CollectionProxy

# activerecord/lib/active_record/associations/collection_proxy.rb#L1031
      alias_method :push, :<<
      alias_method :append, :<<
+     alias_method :concat, :<<

terminal-to-htmlの古いURLを更新

微修正ですが。


buildkite.github.ioより


つっつきボイス:「terminal-to-htmlって?」「私も知らなかったんですが、テストでスクショを表示するサービスか何かのURLが古かったんでちょい修正した感じで」「おー、ターミナルにスクショを表示するヤツか」「あーなるほど!そんな機能があったとは〜」

「そういえばこのbuildkiteって自分たちもCIで使ってるし」「それってCircleCIみたいな?」「それとは少し違って、それぞれのエージェントで動いているものの結果を管理できるとかそういう感じ: たとえばEC2の上でエージェントを動かして、そこでDockerを落としてきて、結果を取るとか」「つまりCIに限らない?」「基本はCIですけどね: たしかSmartHRさんがわかりやすい記事書いてて、元々Shopifyが使い始めたとか何とかで(↓スライド)」「へ〜」

参考: Rails のテスト実行時間を60分から6分に短縮するまで - SmartHR Tech Blog

「あーなるほど、↓パイプライン管理がメインなのか」「そういえばGitLab CIも最近はこういうことができるようになってたし☺️」「CircleCIで苦しくなってきたら欲しくなる感じ」「CircleCIってパワーが不足気味って言われたりしますね」

Buildkite は一般的な CI サービスと異なり、このサービス自体はビルドの実行は担わず、主としてビルド全体のパイプライン管理を行うことに特化しています。 ビルドの実行のためには Buildkite の Agent を実行したマシンを用意します。Agent の数はユーザが任意の数立ち上げることが可能になっています。
SmartHR記事より

「buildkiteはCircleCIよりはお高いけどその分速くて、お値段にはEC2のランニングコストも含んでるけど、土日にEC2を回さないホワイトな職場なら割安になるし💰」「なるほど、それはEC2が分単位の課金になったのが大きいっすね」「これは自分たちのAWSアカウントで回せる?」「ですね」「ならReserved Instancesとかも使えそう😋」

参考: リザーブドインスタンス(RI)- Amazon EC2 | AWS

「ちなみにAWSこの辺の値段ってしょっちゅう変わるんですが😅、最近だとConvertible Reserved Instancesっていうのがなかなかよくて、今までのReserved Instancesだと買ったときのインスタンスサイズから変えられなかったのが、たとえばmediumが2でlargeが4みたいにユニット単位で購入して、ユニットを混ぜたり分割したりできるんですよ」「お〜!」「オークションで買うのってまた別のやつでしたっけ?」「それはスポットインスタンスですね🧐」「なお、Reserved Instancesは最近売ることができるようになったので売って新しいのを買うことができますが、Convertible Reserved Instancesは売らなくても変更できます😋」「なるほど!」「Convertible Reserved Instancesは割引率はちょっと低いけどそんなに悪くないと思うし」

参考: リザーブドインスタンス がどのように適用されるか - Amazon Elastic Compute Cloud
参考: スポットインスタンス - Amazon Elastic Compute Cloud

マウントアプリへのルーティングパスと正しくマッチしないことがあったのを修正

\bは語の区切りに使う正規表現ショートハンドですね。

以下↓も関連しそうなのでここに。(|)の中に入れるものを長い順に修正したんですね。

はじめての正規表現とベストプラクティス#5(特別編)`|`と部分マッチのワナ


つっつきボイス:「なるほど、/assets/foo.png/assetsfoo.pngのどちらにもマッチしてしまってたバグ」「どうやってこのバグを踏んだのやら😆」

名前付きスコープのチェインでクラスレベルのクエリ送信メソッドがリークしていたのを修正

# 同PRより
class Topic < ActiveRecord::Base
  scope :toplevel, -> { where(parent_id: nil) }
  scope :children, -> { where.not(parent_id: nil) }
  scope :has_children, -> { where(id: Topic.children.select(:parent_id)) }
end

# ちゃんと動く
Topic.toplevel.where(id: Topic.children.select(:parent_id))

# 動かない: `toplevel`から`Topic.children`にリークする
Topic.toplevel.has_children

つっつきボイス:「kamipoさんの修正でした」「kamipoさんもよくこういうの見つけるな〜: しかも割とヤバそうなバグもあったりして、しかもそれを修正してるという」「ですね〜」「頭が下がる」「こういうスコープチェイン周りのバグってつらいですね: たまたま上みたいな組み合わせのときに起きるみたいなのとか😭」

リレーションがArelメソッドに応答しないよう修正


つっつきボイス:「Arelにみだりに触らないでねみたいなことなんでしょうか?」「Arel触るぐらいなら生SQL書くし😆」

Rails

今回「2019年の定番gemと不要なgemは?」というお題を用意してたのですがインフラ系の話が盛り上がりまくったので順延とします🙇。

ActiveRecordのscope_attributesとは


つっつきボイス:「社内Slackで話題になったので」「そうそう、これ欲しかったヤツ😋」「これを使うしかない状況になりたくないけど😆」

「なはは、クラスメソッドとして定義するんだけどチェインしたときだけ動いて欲しかったんですよー: モデル.メソッド名で雑に取れて欲しくないみたいな」「ははぁ、スコープで欲しいというか」「ですです: スコープで、かつチェインされたときだけ1件返して欲しかったという」「言われてみれば確かにできるけど、あんまし使ったことない😆」「scope_attributesってソース見るとnodocとか書いてあるから、おおっぴらに使って欲しくないのかなと思ったり」

Railsコードでの正規表現乱用


つっつきボイス:「マネーフォワードさんの技術記事ですが、主に正規表現を使いすぎというお題でした」「Rubyは記述の自由度が高いから好きという人が多いので、こんなふうにやりあってるのを見るのがまた楽しいというか😆」

DHHがsource mapをデフォルトで有効にすることに(Ruby Weeklyより)


つっつきボイス:「Webpackerのsource mapをデフォルトにするって、productionで?」「のようです」「へぇ〜」「issueもちょっとざわついてるようです」

「source mapをproductionで使いたくない人っています?source mapには座標情報しかないから元のファイルは復元できないはずだし」「その場所でしか使えないはずだったし」「ならproductionでsource mapが入ってても別にどうということはなさそうだけど?🤔」「アセットのプリコンパイルが少々遅くなるとかはあるかもだけど」

参考: webpackでsource-mapを表示できるようにする - Qiita

Action CableでPumaがおかしくなった話(Ruby Weeklyより)


つっつきボイス:「目を引くタイトル」「へー、ファイルディスクリプタを1023個までしかオープンできない: そんな制約があったとは」「OSの制限っぽい?」「でしょうね」「Action Cableがたくさんファイルを開くというのはありそうな話だし、性質上開きっぱなしになることも多いし」「あーたしかに」

「そういえば以前やってたサービスが15分ぐらい瞬断したことがあったけど、たしかPubNubとかいうやつがコネクションをがっちり掴んで離さないというワイルドなことをやってくれてファイルディスクリプタを使い切ったことがあったし: 仕方がないのでunicorn-worker-killerを入れてメモリが一定以上になったら殺すみたいな感じでしばらく乗り切ったことがありましたね😎」「おお〜今どきunicorn-worker-killerに頼ることになろうとは😆」「😆」「今も非常用に残してるし」「たしかにunicorn-worker-killerときどき欲しくなることあるし😅」

参考: PubNub - Wikipedia

参考: unicorn-worker-killerが便利だった件 · zephiransasのチラシの裏

その他Rails



つっつきボイス:「(ゲストに)そういえば銀座Railsにもよく顔を出してるんでしたっけ?」「銀座Rubyが主だけど銀座Railsも行ってますね」「お、そうでしたか😅」「銀座は機会があれば行きたいけど、なかなか機会がなくて😅」

Ruby

sruby: Rubyの縮小セット

なお、つっつき後いつのまにかリポジトリが以下に移動していました。


つっつきボイス:「実装というより、こういう縮小セットRubyが欲しいみたいな青写真っぽいです」「継承なし、再帰なし、リエントラントなし...」「CRubyの他にJRubyとmrubyもしっかり活動してるぐらいだから、さらに別のがあってもいいのかも?」「mrubyはCRubyとはまた少し違うといえば違うけど」

「散らかった引き出し」クラスを避けるには(RubyFlowより)

最近は抽斗って書いても通じなさそう。


つっつきボイス:「Junk Drawer!」「オープンクラスで開きまくるのやめれとかそういう話?」「だったらRuby使わないければいいのに🤣」「🤣」「🤣」「concernにconcernを重ねまくったらメソッド名がかぶったとかだったりして」「Rubyでモジュール使ってるとよく起きますけどね😅」「そうそう、つらいヤツ😭」「モジュールの名前空間をきれいに管理するしかないし」

email_inquire: Ruby製メアドバリデータ(Ruby Weeklyより)

gmil.com => hint gmail.com
hitmail.com => hint hotmail.com
outloo.com => hint outlook.com
virinmedia.com => hint virginmedia.com
同リポジトリより


つっつきボイス:「これは?」「メアドのバリデータっぽいです」「あー、メールのありがちなタイポを検出するのか: foo@domain..comとかぐらいならRFCチェックでいいだろうけど」「上みたいにGmailのメアドをgmil.comとタイポしたのをチェックするんですって: しかもヒントつきで」「hotmailをhitmailとか😆」「😆」「本当に存在するアドレスだったらどうすんだろう😆」「まあそういうのはたいていスパムサイトだったりするし😎」

「これはなかなかオモシロイ😋」「味わいある👅」

apparition: Chrome DevToolベースのCapybaraドライバ(Ruby Weeklyより)

apparition (n.) 幻影, 幽霊, おばけ; (幽霊などの)出現.


つっつきボイス:「あぱりしょん?」「この種のドライバ周辺って、poltergeistとかghostなんとかみたいにオバケがらみの名前が妙に多いですよね?」「 そうかも」「CDPってChrome DevTools Protocolか」

参考: Chrome DevTools Protocol Viewer

「たしかにChromeドライバを使うときにSeleniumドライバを別名に変えて使うから、これはSeleniumドライバを使わずにやれるってことか」「使いたくない理由って何かあるかしら🤔」「Selenium通さない方が速いから?」「あ、それあるかも」「そしてインターフェイスはCapybara互換だからあまり気にせずに使えるんだろうし😋」「使ったらテストが速くなりそう?」「そう思って入れるとテストが落ちるというパターンも😆」「😆」「誰か使ってみないかなー☺️」

その他Ruby


つっつきボイス:「これはDI話」「こういうの好きかなと思って」「DIそこまで好きじゃないヨ😆」


つっつきボイス:「Rackを解説してるのが珍しいかなと思って」「おぉ、これは貴重💎」「貴重💎」「意外と少ないんでしょうか?」「昔の解説ならいっぱいある😆」「新しいのがあまりないのか〜」

「その意味だと、Pumaのソースコード解説があったら読みたいなって思うし」「わかりみ」「Railsサーバーってこれでどうして動いているのかよくわからないことあるし😅」

同リポジトリより



以下はつっつき後に見かけたツイートでした。

Ruby trunkより

zero?== 0より遅い


つっつきボイス:「zero?== 0より遅いってマジで?」「mameさんが==VMインストラクションだから速いって」「たしかに〜」「速くて当然か」「言われてみれば」「今後MJITを通せば同じ速度になるかも」

Ruby 2.6.1のBundlerに不具合

Trunkではありませんがここに。


つっつきボイス:「早くもバグ🐛」

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

GoogleがKubernetesクラスタでSparkアプリ実行をサポート


spark.apache.orgより

参考: Apache Spark - Wikipedia


つっつきボイス:「例のApache Projects(ウォッチ20180925)のひとつらしいので強いのかなと思って」「Spark知らんけど😆、デカいデータをバルクで処理するとかそういうの?: 同じくApacheのHadoopと並べられているぐらいだからそれっぽい🤔」

「まーApache Projectsだからスゴイということでもなくて、完全に息をしていないプロジェクトなんかもざらにありますけどね☺️」「そうそうApache Projectならではというか😆、ゾウの墓場みたいになってるところもありますし🐘」「沈みかかった船から『この子をお願いします👶!』みたいに託すみたいな😆」「ApacheのCassandraとか今も開発されてるんだろうか?サイト見ると更新はされてるっぽいけど」「Apache Projects、強いヤツは強いんでしょうね」「強いプロジェクトがアクティブさをもっとアピールしてくれたらいいのに」「記事はGCPがくばねてでSparkを云々だけど、使ったことがある人がいなくてよーわからん😆」

後で見つけたprojects.apache.orgの方に行くと、メインのapache.orgよりぐっと情報が充実しているようで、コミッター数や言語別などプロジェクトの変遷がよくわかるようになってました😋。

Kubernetes技術者がモテモテ?(Publickeyより)


つっつきボイス:「いかにも過渡期な感じ😆: Dockerがひととおり普及したから次はくばねてやってみたい会社が増えてきたとかそういう感じ?」「その成長著しいスキルリスト↓とやらだけど、Magentとか見たことないし🤔」「Spanishとかあるけど何それ🤣」「Chineseも🤣」「自然言語じゃん🤣」「じゃEnglishが1位なんじゃなくて🤣」「母集団怪しす🤣」「同じに並べていいのかと🤣」「Autocadとかも🤣」


hiringlab.orgより

「選挙の出口調査ですか😆」「出口調査の方がまだ限られてるだけましなんじゃ😛: 出口で聞いたら一番多かったのがチャイナコミュニストパーティだったみたいな話🤣」「リストにCCNAとかあるし」「そんなのあったね、なつかし〜👨‍🦱」「昔就職に有利とか『ネットワークエンジニアは年収が高い』なんてもてはやされたりしましたけど、今や見る影もないという😇」「(やべ知らなかった😅)」「むしろCISCOのルーターやる人が減って需要が高まってたりして😎 」

参考: Cisco Certified Network Associate - Wikipedia

「KubernetesやらAnsibleやらがランク入りってことは、言語として儲かるのはYAMLってことかな、なんてね😎」「ちょ😆」「でもそういうことになるな〜😆」「宣言的に書いてればいいみたいな」「もうYAMLだけ書いて暮らそうかな🏘: もうRubyもなんもかもオワコンということで🙃」「AnsibleのYAMLは特殊感ありますけどね〜😆」

「それにしてもどこで行われたサーベイなんだか😆: 西海岸ではなさげ」「Chineseとかあるし🇨🇳」「まあこれはgrowthだから、成長ほぼゼロのスキルとかは入ってないんだろうし📉」「データの出処がわかんないとね」「向こうもこういう情報を売る商売だし、そのつもりで眺める感じで☺️」

Homebrew 2.0.0リリース(WebOps Weeklyより)

参考: macOS用パッケージマネージャ「Homebrew 2.0」リリース。LinuxとWSL(Windows Subsystem for Linux)にも正式対応 - Publickey


つっつきボイス:「そうそう2.0.0出てた」「今回正規版になったというLinuxbrewはLinux版のHomebrewですけど、使ったりしてます?」「ちょっと使ってます」「私もー」


linuxbrew.shより

「イマイチよくわかってないんですけど、Linuxなら普通にディストリビューションのパッケージとか使えばいいのにLinuxbrewを使う理由って?」「root権限なしで入れられると聞いたのでちょっと前からやってみた感じです」「でもパッケージによってはroot権限必要なものとかありそうだけど?」「/homeの下にlinuxbrewというユーザーができてそこにパッケージが入ってました: でもさすがにmacOS固有っぽいbrew servicesの必要なPostgreSQLやらMySQLやらは入れられませんでしたので😇、もっぱら小物パッケージのインストールに使ってますけど使い分けは全然適当です😅」「な〜る、カーネルモジュールみたいなのでなければユーザーランドの方に入るというかユーザー権限でできる感じ」

「そういえばsystemctlというかsystemdってユーザー権限でできましたっけ?」「Web立てるときは結局必要になるヤツだからLDLIBSあたりをどうにかすればいけそうだけど🤔」

Linuxのサービス起動周りとDockerとの関連を理解する#3(社内勉強会)

「まあDockerが開発環境にまでこれだけ普及した今の世の中では、HomebrewのLinux進出もちょっと遅きに失した感がなくもないけど」「とはいっても、Railsは(ローカルではなく)ホスト環境で開発するなんてことも割と多いし(X Window越しとか)、そういうときにRubyをaptでインストールするとかrbenvでインストールするとか自分でビルドするとか選択肢があったりするけど、たとえばDebian備え付けのRubyが古かったりするときにHomebrewで入れる手もあるのかも🤔」「なるほど、パッケージ供給元が1つ増えた感じ😋」「そういうのだったらanyenv↓とかでやる方が話が早い気もするけど☺️」「それもわかりみ😊」

参考: anyenvを使う - Qiita

「ついでにお伺いしますけど、皆さんはproductionのRubyをどうやってインストールしてます?」「rbenv使ってたかな」「自分も」「rbenvは使ってないですね: 自分でRubyのrpmパッケージを作ってインストールしてます」「おーなるほど!: 管理する余力があれば確かにその方がキレイにできますね😋」「自分はrbenv、それもユーザーランドでrbenvを走らせることも: デプロイユーザーの中で完結させるみたいな☺️」

「世の中には開発環境を入れることが許されないプロジェクトがたまにあるんですけど、そういうところだとccすらインストールできなかったりするので、そういう場合にはたとえばrpmでインストールしたりするのは正しい手法っすね」「最終的には実行バイナリがあればいいし」

cc (UNIX) - Wikipedia

「だからインストールするソフトウェアをそうやってきっちり管理するならDockerの方がやりやすい」「なるほど!」「今風にやるなら、Dockerでインストール後にapt removeとかでccを根こそぎ片付けちゃえばいいし: バイナリさえなくなればライブラリは少々残っててもいいので、といってもさすがにld(リンカ)とかはなくせないけど」「ですね: 最後にリンクしないといけないものはありますし😊」

参考: リンケージエディタ - Wikipedia

「本来的にはですが、余分なソフトウェアはできる限りシステムに入れないのが望ましい: でないと仮に侵入されたときの影響範囲が拡大してしまうので🧐」「案件によりますけどね☺️」

「HomebrewでRubyをインストールしている場合に不便なのは、Rubyが更新されてからHomebrewのFormulaに反映されるまでに割とタイムラグがあること」「そうそう!」「Rubyのセキュリティアップデートが出てHomebrewでアップデートしようとしてもhsbtさんのプルリクが今4時間もビルド中だったりとか😇」「あるある〜」「その意味ではanyenvみたいなので直接取ってきてビルドする方が早いのかな」「自分はこの記事↓にあるようにrbenvのruby-buildをgit pullで更新してやってますね: Rubyのアップデートはruby-buildの方がHomebrewのFormulaより早いので😋」「私もそれでやってます😀」

RailsをHerokuで5.1.3から5.2.1にアップグレードしてheroku-18スタックに対応した

「そのあたりを考えると、Homebrewでどのパッケージをインストールするかが悩ましいところ🤔」「そうそう」「あとHomebrewのFormulaファイルの中に、たまにヤンキーなヤツがあったりして🦹🏻‍♀️うまく動かなかったりするし: ああいうのは更新激しいものなんかだとどこまでチェックされてるのかなと」「古いパッケージしかないなんてのもあったりしますし😅」「ヤンキーなパッケージのアグレッシブさ加減はnpmパッケージといい勝負だったり😆」

「そういうのもあって自分はディストリのパッケージが割と好き🥰」「最近だとVSCodeなんかがオフィシャルパッケージをディストリで出してたりするし、そういうのは一度インストールしちゃえば安定するし☺️」「そうなんですよね: あえてHomebrewでインストールしたいものってあるのかなって思ったり」「運用規約の厳しいところなんかで使うとかですかね🧐」「本当に厳しいところではHomebrew絶対使わないと思いますが😆」「Homebrewだと更新が速すぎて再現性がなくなったりしそうだし」

ネットワーク越しのパイプとか


同記事より


つっつきボイス:「はてブにあがってたヤツですね」「こういうネットワーク越しにパイプでつなぐのって、ありそうでなかったんでしょうか?」「そんなことはないですね🧐: http越しにパイプをやってるとかそんなノリで」「難しいことはしてなさそうですね」「nc(netcat)とか使っても普通にできますし」「あー」「それをhttp経由でTLSも通せるようにした感じですね☺️」

参考: Netcat - Wikipedia
参考: nc(netcat)コマンドで覚えておきたい使い方8個 | 俺的備忘録 〜なんかいろいろ〜

「この記事、はてブでは妙に感心されてましたね」「まあシンプルだし実用性もあるからでしょうね: 自分がこれをそのままproductionに入れることはないと思うけど😆」

「なんやかんやでパイプはつなぎやすくて応用範囲が広いので便利😋: 自分もDockerで標準入力から受け取ったものをSlackのWebフックに投げるだけのスクリプトとか書きましたし」

参考: パイプ (コンピュータ) - Wikipedia

「こういうネットワーク越しのパイプみたいなのは、見方を変えればネットワークプログラミングの練習のお題にとても向いてる😊」「おー確かに」「ちょっと頑張ればできるし、データが巨大な場合はどうするなんてのを真面目に考え始めるといい感じに難易度も上がってくるし: 途中でデータが途切れたら一旦chunkedで送るみたいな実装に挑戦してみたら面白そうだし」「いいですね!😊」

AWSアイコンがリニューアル(WebOps Weeklyより)


aws.amazon.comより


つっつきボイス:「AWSアイコンがまた変わったそうです」「ホントだ😮」「AWSアイコン、変わるたびにわかりにくくなっちゃったし😅」「タロットカードどころじゃないぐらい増えましたよね🃏」

「え〜やっと脳に馴染んできたところなのに、また変わるの〜?🥺」「最近のELBアイコン(↓右)とか今も好きになれないし😭: 前(↓左)の方がよかったし」「おー、左は機能が形に表れてる」

「AWSは名前もCodeなんとかとか同じようなのがいっぱいあるし😤」「今はアイコンの下に『S3』とかサービス名を書いておかないとマジわからないし🤪: デザインから意味が脱落してんじゃね?って思うし」「Adobeみたいに↓開き直って文字にする方がまだマシかも😆」「AWSサービスの機能を2文字で表すのはもはや不可能だし😇」「どもならんのぉ〜😇」

コンペと投票(却下含む)で決めればいいのにとちょっぴり思いました。

「来年はこれでハードなデスマッチかるたができますね🤣」「お手つき続出みたいな🤣」「昔のアイコンだったら割といける自信あるけど今のじゃちょっとぉ😵」

「毎年恒例のAWS Summitでよくやってるクイズでやるとかね: ちなみにトップに勝ち進むとAWS reInventの参加券と宿のチケットなんかがもらえる」「へ〜」「相当難しくなりそうだけど、仕事だから覚えるだろうなきっと😂」

FreeBSDからItaniumアーキテクチャ終焉まで


つっつきボイス:「昔からよくお見かけするお方でした」「ふりびについにさよならを👋」「ネットワーク系やってる人はおしなべてFreeBSDがいいと言ってますね: だいたい教科書に載っているmbufの解説ってFreeBSDのソースが使われてたりするし、でLinuxだとsk_buff」「おーそういえば」「へー😀」

参考: FreeBSD - Wikipedia
参考: mbuf ‐ 通信用語の基礎知識
参考: sk_buff - Linuxカーネルメモ

「このmbufでパケットの組み立てをやってるんですよ: ヘッダーを足してunionするみたいな🤓」「でFreeBSDはこの辺の設計がとてもキレイ🥰と言われていますし、OSの教科書の巻末についているのもFreeBSDのものだったりするしで、ネットワークをいじる人はだいたいFreeBSDですね: プロトコルをカスタマイズするとか」「なるほどね〜」

「ところでBSD系OSって使います?」「ネットワーク寄りの話...よくわかんなくて😅」「さくらのレンタルサーバーは共有サーバーがFreeBSDでしたね😋: Linuxのバイナリとか持っていってみると動かねえなんてことになったり😆」「😆」

参考: 【さくらのレンタルサーバ】基本仕様 – さくらのサポート情報

「話ちょっと戻りますけど、FreeBSDも結構頑張ってるんですよ: (聞き取れず)とかbhyveなんかFreeBSDでやってるし」「へ〜」「ちなみにたしかbhyveのMac版に相当するのがxhiveという軽量ハイパーバイザーで、Docker for Macでxhive使えたりする🤓」「ハイパーバイザーって何とかhiveとか何とかhyveって名前多いっすね」「bhyveは解説も結構豊富にあるし」

参考: bhyve - Wikipedia
参考: OS XのネイティブHypervisorを使うxhyveと、ネイティブDockerを立ち上げるdocker-machine-driver-xhyveを作った話 - Qiita

しょもないですが、「愛してナイト」という昔の少女漫画に出てくるロックバンドの名前がビーハイブでした。

参考: 愛してナイト - Wikipedia

「やっぱりネットワークいじるとなるとBSD系が強い💪」「ですね〜😊」「そして何か新しいデバイスが出現すると真っ先にNetBSDが移植されるのが定番😆」「NetBSDは軽くて小さいせいか、ホントに何にでも移植されてますよね😋」「NetBSDが動かないCPUはないんじゃないかって言われるくらい😎」「そういえばMC68000みたいなCPU使ってるおっそろしく古いMacにNetBSDが移植されてたのを見たことあります」「MMUなしのCPUでも動くのって今やNetBSDぐらいじゃね?☺️」「そうかも☺️」「逆にLinuxはどこかのタイミングでMMUが必須になってたと思う」

参考: NetBSD - Wikipedia
参考: メモリ管理ユニット - Wikipedia

「昔のARMなんかもMMUなかったけど、今やCPUにMMU乗ってるのは当たり前になっちゃいましたね」「同じような感じで仮想化も今や当たり前になったし: 仮想化しないCPUなんてあるの?みたいな😎」「たしかに〜😆」「んで後15年もすれば『主記憶が揮発するってどういうことですか?』『主記憶と別にストレージがあるって意味わかんない』なんて若い世代に言われちったりとか😆」

「ついでに、インテルCPUはいつになったら8ビット起動をやらなくなるんだろうとか思ったり😆」「お、そういやItaniumがディスコンになってましたね↓」「そうそう!」「マジか〜」「ついにIA-64\(^o^)/オワタ: AMD64と紛らわしい紛らわしいと言われまくってたIA64が😇」

「インテルCPUなのにAMD64って表示されてるのはなぜ?って最近の人が不思議に思いそうだよね」「そうそう!」「そんなに紛らわしかったんですか😳」「Itaniumは、それまでのx86アーキテクチャを捨ててスクラッチから設計し直したIntel Architecture 64を採用して、そのまま進むかと思いきや、AMDの設計が拡張されたときにインテルは結局そっちの方に乗っかって、それが今のx86の(Intel) 64: ていうざっくりした理解で合ってる?」「合ってます🧐」「一息で説明すご!」「...」

参考: AMD64 ‐ 通信用語の基礎知識
参考: IA-64 ‐ 通信用語の基礎知識
参考: Intel 64 ‐ 通信用語の基礎知識

「この際人類の皆さんは、一部人類が願う『x86を直したいっっ!』ていう気持ちをもっと理解してやるべき🌏」「😆」「起動のたびに個体発生が系統発生を繰り返すみたいなのを未だにやってるとか😆」「リアルモードから切り替えたりとか、中間カーネルに展開してからモードチェンジしてさらに展開!とか😆」「x86のブートローダーは未だにサイズ大きくできないし😆」「やっぱオペランドが2つとかいろいろキツイわ〜」

「しかしItaniumのディスコン、これはもう歴史ですね🕋」「歴史歴史: 若い衆は知らないだろうけど👴」「自分も64ビットRISCに夢を見ていた世代だったな〜: (今は亡き)DECのAlpha CPUのマシンとか買いましたし」「そういうお年頃」「64ビットには夢があった🏰」「怒涛の会話に振り落とされそう😅」

参考: RISC - Wikipedia
参考: DEC Alpha - Wikipedia

その他クラウド

SQL

SQLQLとは

すくるくる?


つっつきボイス:「発表も記事も@yancyaさんです」「あー前の記事の続きみたいな: SQLQLって一種センスがいいというか、みんなの気持ちをワカッテラッシャル感というか、とにかくいいんですよね〜😍」「『顧客が本当に必要だったもの』的な😆」「あ〜そういう感じですか」

「GraphQLとかって、結局Railsで使うとN+1クエリが発生しまくるし、だったら直接SQL書いて投げればいいんじゃね?みたいな話: ところがSQLをそのまま投げるとモデル層で扱うような数値やロジックを扱えないので、そこをどうするかがポイント🤓」

RailsでGraphQL APIをつくる: Part 1 – GraphQLとは何か(翻訳)

「随分前のRubyKaigiか何かでyancyaさんとこの辺の話をした気がするんだけど、たしかそのときにNGINXをPostgreSQLのプロキシにしてどうのこうのみたいな話してた覚えが」「あ〜ありましたね」「そういうのを使うと、HTTPで受け取ったものをそのままぽすぐれに流すなんてことができたりする」「そうそう、NGINXが型だけ変換して返す感じ」

一昨年のこのツィート↓がちょっと関連しているかなと思いました。

以下はそれとは直接関係ありませんが、yancyaさんの別の発表を見つけたので、もったいない精神で貼ります。

参考: 「SQL 脳から見た Ruby」発表の様子@大江戸Ruby会議05 - Togetter

「今アプリケーション層のロジックの話が出ましたけど、そういうのは例えばSQLQLで公開する「ビュー」をちゃんと書けばいいんですよね」「そうそうっ😊」「つまり生のテーブルにアクセスするんじゃなくて、アプリケーションロジックを通すか、ビューとして公開するならいいじゃん、と😋」「本気出したらそこにトリガ関数とか入れたりしてやれちゃうので、某O/Rマッパー好きでない派がいつの間にか大勝利みたいな🤣」「🤣」「そうなったらもうDBA(データベース管理者)復興ですよね😆」「ぐるっと回って元の場所に戻ってきた感😆」

参考: 9.27. トリガ関数
参考: データベース管理者の役割 – データベース研究室

「自分は前から言ってますけど、Railsエンジニアはもっとデータベースを大事にすべき」「ほんに!」「データベース知らないまま書いたモデルとか、それめちゃ遅くなるけどいいの?みたいなことになるし」「うんうん」「テーブル定義見てても処理を見ててもそう思うことあるし😅: そんなふうに書くぐらいなら生SQL書けば?って」

「しかも今みたいにAWSとかのクラウドでやってると、トラフィックが増えるかデータが増えるかするまで痛みがあまり表面化しないし」「そういう意味ではRailsでやっとけば本当に痛みが出る前にサーバーが死んでしまうことも多いし🙃」「ちょ🤣」「Railsにしとくとそういう意味でよかったりして🤣」「ま〜最近になるほどCPUに求められるものが増えてるし」

「最近だとマイクロサービスもいろいろ出てきているし、1つ1つが小さくなってくるとそこまで頑張ることも正直あまりないし」「でもマイクロサービスになると逆にそういうところを気にしないといけない気もしますけどね: いったん詰まり始めるとそこが完全にボトルネックになってしまったりするので」「あ〜そうかも」

Envoyはスゴイ

突如Envoyの話に火がつきました。

Envoy: {1-名-1} : 〔政府が特定の案件で派遣する〕特命使節、{1-名-2} : 〔大使館の〕特命全権公使◆大使(ambassador)のすぐ次の位。

「なのでそのあたりをどうするかですよね: で去年ぐらいからEnvoyがデフォルトになってきてて、KubernetesでもEnvoyをSidecarパターンで走らせたりなんてのが標準的になったりすることで、(聞き取れず)とかCircuit Breakerとかを一切気にしなくてよくなるという夢の世界が実現するのであれば、たぶんもうそれでいいんじゃないの、っていうあたりが今年の試金石なのかなと」

参考: KubernetesでEnvoyを使ったSidecarパターンを実装 - Carpe Diem
参考: マイクロサービスでのSidecarパターンとは何か - Carpe Diem
参考: Circuit Breaker Pattern 調べてみた - Qiita

「つことは、今マイクロサービス周りではEnvoyが一番イケてる?」「まずエンボイがわかってません😅: コンボイじゃなくて?🚚」「EnvoyとかIstioとかって、実は割と古くからあるんですよね」

参考: Envoy (Envoy proxy)、Istio とは? - Qiita


envoyproxy.ioより


istio.ioより

「Envoyといえば、最近だとAWSがApp Mesh出してますよね」「そうそう、実はApp MeshってECSをサポートしてるので筋が良い: Kubernetesだとその上にFargateだなんだと構築しないといけないけど、ECSの方がハードウェア性能的に使いやすいはずなんで、SidecarとしてEnvoy置けるなら別にECSでもいいでしょみたいな」「App Meshはあまりレイヤーっぽくないというか、独立したものをメッシュ化してつないでいる印象ありますね: Istioのアーキテクチャとかはよくわかってないんですが」「Istioは、KubernetesベースでEnvoyとかを使う前提で、いわゆるサービスメッシュをKubernetesの上に構築できる: でGoogleとIBMとLyftがやっているという構図」「お〜」「去年この辺を知って急いで調べたし😆」「昔調べたものってときどき再確認しないと忘れちゃいますよね😆」「そしてこうやってドヤ顔するみたいな😎」

参考: AWS App Mesh – マイクロサービスをモニタリングおよび制御する – アマゾン ウェブ サービス
参考: AWS Fargate – サーバーやクラスターの管理が不要なコンテナの実行
参考: IBM、Google、Lyftによるオープンなマイクロサービス管理ツール「Istio」公開について

「こういうマイクロサービス間をどうにかできるサービスが出てきたことで、やっとマイクロサービスも見込みが出てきた感じですかね: さっきの話みたいなボトルネックが検出/トラッキングしやすくなるとか、エラーを共通で引っ張って来るみたいなことができないと、結局マイクロサービスって地獄感抜けないし👿」「Envoyがスゴイのは、どうやってこんな夢のようなものを実際に作ったんだろうってところ✨」「マジっすか!😍」「さっきのQiitaの記事あたりにリンクがあった気がするけど...これこれ↓、このあたりが一次資料かな」「おー、強い人が推してるだけに筋がよさそう😊」「実際に動かして検証したわけではないけど、設計とかびっくりするぐらい良くできてる👑」「やっぱアーキテクチャがきれいでないと後々治安が悪くなりますからね🧨」「Linuxカーネルで使われているパフォーマンス管理とかメモリ管理の手法を導入したりしてて、ゼロダウンタイムなんかもいけるとかで信頼性もかなり高い😎」「そんないいことづくめな話を聞くと、それホントに動くの?なんて思ったり」「普通そう思うよね😆: でもIstioは既にLyftが実装して動いていて、それがEnvoy前提になったのが去年の話」「やべぇ」「やべぇ」「すげぇ」

参考: What is Envoy — envoy 1.10.0-dev-97d259 documentation

「もしそういう世界になったら、大規模なサーバーサイドというものが減ってしまうわけですよ: するとオフショアとかでマイクロサービスを個別売りしていくなんてことになったりして🍬」「今度はそれを組み合わせるのに物凄い能力が求められたりして🧙🏼‍♂️」「そうそう😆: そんな感じでピタゴラスイッチマスターみたいなスキル持ってる求人が来年あたりさっきのサイトでgrowthどっかん伸びたりして😆」「自分も今のAWSでもかなりピタゴラスイッチマスター的なことやってますけど🧩」「AWSのCloudWatch LogsLambdaなんてのはもう完全にピタゴラスイッチなんで😉」「😆」「ほんに、Lambdaを練習しててSQS入れたりSNS入れたりしているうちに意味不明になったり😆」「なるなる😆」

そういえばピタゴラスイッチ的なものは英語圏だと昔からRobe Goldberg Machineって呼ばれてますね。

参考: ルーブ・ゴールドバーグ・マシン - Wikipedia

「Envoyか〜」「今後はもしかしてEnvoy一択みたいな?」「じゃないかな〜: どうしてこれが可能なんだって思うくらい、できていることがあまりに凄いし」「へ〜」「Circuit Breakerもモニタリングも再起動も、必要なものは全部入ってるし」「そういえばGoogleのGCPのロードバランサーにある何とかStackってのがありますけど、競合するとしたらそのStackdriverあたりですかね?」「ふ〜む、どうだろう🤔?」「Stackdriverのウリは、ストリームをぶっ放せることとスケールできることと聞いてますけど」「Stackdriverはモニタリングとロギングにフォーカスしてる感じだけど、EnvoyはCircuit Breakerやらアプリケーション連携やらもひととおり代行してるし」「Envoyの方が広いのか」

参考: Stackdriver - ハイブリッド モニタリング  |  Stackdriver  |  Google Cloud

「Googleが前にSpannerを導入して分散同期がやりやすくなったけど、結果整合性を保つためには結局アプリケーションエンジニアがゴリゴリやらないといけなかったし: でやっぱりミドルウェアが必要だよねという流れでこのEnvoyが出てきて、そこで閉じた環境ならネットワークは面倒見てくれるからとか言ってるけどそれって昔に通った道じゃね?と思ってたら、あれよあれよという感じ」

参考: Cloud Spanner | 大規模な自動シャーディングとトランザクションの整合性  |  Cloud Spanner  |  Google Cloud

「ちなみにEnvoyを初めて知ったのは去年のビルコン(builderscon)↓で、そのときはベーパーウェアじゃね?としか思えなかったし😆」「すげ〜わかる😆: Kubernetesだってよく動いてるなって思ったし: もし最初に論文で出てきたら胡散臭すぎて却下されそうだし」「だいぶ話が逸れまくったので次行きましょうか👉」

参考: 『builderscon tokyo 2018』に行ってきたよメモ - コード日進月歩
参考: ベーパーウェア - Wikipedia

この後もインフラエンジニアが足りない話など、まだまだ続きましたが、キリがないのでこの辺で🙇。

PostgreSQLでスター・ウォーズを見る方法(Ruby Weeklyより)

広告リンクだったのですが釣られてしまいました。


つっつきボイス:「psqlでスター・ウォーズだそうです」「ま、ぽすぐれは何でもできるから🤴」「Vimでやってる人もいたしそういえば」

その他SQL


つっつきボイス:「データがうっかりで消えたらしいです」「やっぱりクラウドでも障害が起きるときは起きるというか: かのS3ですら一回だけあった気がするし」「落ちるときは落ちるし、メリットとデメリットを天秤にかけたときが重要だし」「ですね」

参考: Amazon S3ダウンの原因、コマンドの入力ミスで多数のサーバを削除。サブシステム再起動に時間がかかり障害が長引く。AWSの報告を読み解く - Publickey

JavaScript

EC2019の予定機能が確定(JSer.infoより)


つっつきボイス:「お、ついに決まったか🥰」「Rubyっぽいものも入ってるような?」「つか、普通の言語にあるものがようやく揃いつつある感」

「ところでJSはTypeScript派だったりします?まさかCoffeeScript書いてたりとか?」「バックエンドなのでほとんどJSを書いてないですね☺️: ごくたまにJSに触ると、まさに『この機能ないのかよ!?』ってなったりとか😆」「やっぱり〜😆: でnpmでそれっぽいパッケージを見つけて入れると、何だかよくわかんないものまで大量に入ってきたりするという」「コワイコワイ😇」

ReactのRefsとは


つっつきボイス:「Refsが謎機能という声が聞こえたので貼ってみました」「Reactはだいぶ普及しましたね」「自分はどちらかというとVue.js派」「Angular.jsはあまり聞かなくなった気がする?」「Angularは移行で相当つらい目に遭ったから😭」「あー1から2へのね😆」

参考: Angular v2からv6までの変化をまとめてみた - lacolaco

「Refsは確かにマニュアル見てもわかりづらい: コンポーネントのツリーを超えて更新とかするみたいな記憶がうっすらあるくらいで、しかもReact 13ぐらいの頃の知識で今16とかだし😆」「あ〜😆」「でバージョン上げたときにRefsあたりで悲鳴が上がった気がするんですよね」「ざっくりとですが、簡単なものならVueでいいけど、それなりの規模のSPAとかやろうとするとReactになることが多い感じですね」「フロントが気づくと大きくなってたりするんで、Vueでそれなりに大きなSPA的なのをやってる人っていないんじゃないかなって思ったりもするし、勉強会なんかでたとえばニュースサイトとかECサイトでSEOのために使ったりしてるけど、業務系のロジックをどう分離するかなんて話は出てきてなかったし」「そういうのはVueでやりたくないな〜😆: ある程度複雑になってくるとReact一強な感じ」「そうかもね」

「となると今VueとReactのどっちを勉強すべきか」「まあReactの方がいろいろ強固だし」「ただ受託開発とかでひよコード🐥が流れてきたときに、せめて自分たちのコードだけでもキレイにしておきたい!と思ってもReactだと基本無理だし😆」「そうね〜」「Vueはひよコードの中にちょろっと入れてもちゃんと動いてくれるんですよね😂: あれは偉大だと思う🐥」

ghcrawler: GitHubをクロールするNodeアプリ


つっつきボイス:「Microsoftが出してるということは公式なのかなと」「ちゃんと見てないけど、GitHubをガンガン回して負荷かけるぐらいならこういうの使ってくれ、みたいな?」「ちょろっといじりかけたんですが、GitHubの2段階認証でやる方法がまだわからなくて😅」

その他JavaScript


つっつきボイス:「TypeScriptからLLVMを通ってWebAssemblyみたいなのを頑張ってる人たちもいますね☺️」「トランスパイルまで使ったらもう何でもありじゃね?って」「しかしJSがこんなにプログラミングに使われるようになるなんて昔じゃ考えられなかったし」「こうなったらRustまで突っ走って欲しい🏎」

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

Vue Storefront: PWAでネットショップを作れるOSS

devMe Tokyoの方に教えていただきました🙇。

参考: Storefront Cloud | Mobile-first eCommerce Platform
参考: はじめてのプログレッシブ ウェブアプリ  |  Web  |  Google Developers
参考: PWA(Progressive Web Apps)はどうスゴイのか?基本知識と12のメリットを解説 |ビジネス+IT

WebサイトをPWA(Progressive Web App)に変える簡単な手順(翻訳)


つっつきボイス:「既存のWebページをPWA化で高速化するみたいなのをVue StoreFrontでやれるそうです」「へ〜」「まだこの分野を手がけてるところがほとんどないらしくて」「PWAは今頑張れば一発当たるかも🎯」

AndroidアプリがPWAに食われる?

「PWAといえば、ついこの間見た記事↓か何かによると、AndroidのマーケットでPWAがネットワーク配布できるようになったらしくて」「おぉ?」「で、Kotlinとかの界隈が結構ざわついてるらしいって🤡」「あー、ってことは...」「ほら、GoogleがJavaやめたいんじゃないかって話もあるし、WindowsアプリなんかもJavaScriptとHTMLだけで書けるようになってきてたりするし、世の中どうやらそういう方向に進みつつあるんじゃないかなって」「もしそうなったら何というゲームチェンジング😲」

「たしかにJSエンジンも洗練されてきたしCPUも速くなってきたしで、もうJSでいいじゃんみたいなのがアプリで広がってきましたよね」「NginxとかにもJSのモジュール入ってるぐらいなので組み込みやすいし、シングルスレッドなのもむしろランタイム的にスマホアプリと相性がよさそうだし」「そのうちJS専用のコプロセッサとかできたりして😆」「MMUだとか仮想化なんかもJSでやるようになるかもしれないし🤓」「後はネイティブ周りのインターフェイスだけは整理しておくとして😆」

「Android界隈がざわついているってそれって...」「もしかするとだけど、今後もうネイティブアプリ書かなくていいんじゃねみたいな流れになって、iOSもそれでいけるようになるとかね」「まあiOSはアップル様のご意向次第ですけど🍎」

Chrome vs Firefox新機能対決


つっつきボイス:「Firefoxは動画再生ブロック機能を付けたり広告ブロッカーをつけたりと、Googleとは逆方向にいろいろ快挙😆」「Googleは広告ブロッカーを外すんじゃないかって言われたりしてますね😆」「動画の流れる広告って許しがたい感😤」

「そして恐竜ゲームのハイスコアが保存できると🦕」「これは画期的な機能ですよね(棒)」「画期的😆」「みんな待ってた機能😆」「これも『顧客が本当に欲しかったもの』」「世知辛い世の中の数少ないオアシス⛲️」

参考: 「Chrome」改良で広告ブロッカーなど無効化の懸念--グーグルが回答 - CNET Japan

その他フロントエンド


同記事より


つっつきボイス:「gRPC使ってます?」「まだやってませんねー」「gRPCをどこまで積極的に使うかですけど、さっきのEnvoyとかでいいんじゃね?って」「EnvoyもgRPC使ってやってますけどね」「でもEnvoyならgRPCを意識しなくても使えるでしょうし😆」「まあね〜、gRPCだといろいろ自分でやらないといけなくなるし」「gRPC、ないと困るところまではいってないし😆」



つっつきボイス:「これはBPSで漫画のビューワーを作っているチームが発見したバグで、普通あまり踏まないようなバグを追い込んでいる人たちです☺️」


言語

MISRA-Cとは

参考: MISRA C - Wikipedia


つっつきボイス:「MISRA Cって知らなかったんですが、そういう規格みたいなものがあるそうです」「これを満たすと品質の高いソフトウェアということになるみたいな?こんなのがあるとは😆」「Rubyみたいにフリーダムに書く文化だと難しそう」

その他言語



つっつきボイス:「ああこれ😆: このissueはいろんな意味でヒドイ」「いろんな言語をいっぺんに巻き添えにしてるし😭」

その他

ドイツテレコムのnuSIM

オールインワンで低コスト低消費電力で長寿命という触れ込みですが、IoTでどのぐらい画期的なのかよくわかりませんでした😅。

その他のその他


つっつきボイス:「job interviewだから面接の話ね」「面接でfizzbuzzやれって言われてそうそう解けないよっみたいな」「こういうのって結局一緒に仕事をしてみないとわからないし😆」


つっつきボイス:「最近のmacOSってどうしてこんなことがみたいな脆弱性が目につくし」「やー、Windowsいいっすよ😆」「ちょ😆」「😆」「そういえば以前マカーだったお二人がいつの間にかWindowsノートになってるし!」「おー言われてみれば😆」「WindowsでVM+Linuxでやってるけど快調ヨ😎」「自分のWindowsは絶賛修理中😭(その後戻ってきたけどっ)」

番外

つっつきボイス:「そういえばさっき秋葉でGPUボードが安くなってる説を小耳に挟んだんですが」「ああ、仮想通貨バブルがはじけたおかげで😆: 純粋に計算用のGPUで基盤にコネクタとかついてないようなヤツですが、普通にGeForce買うより安くなってる」「おぉ」(しばしボードの話)

参考: NVIDIA GeForce - Wikipedia

北磁極に異変

参考: 北磁極の動きが加速、原因不明、あまりに急激 | ナショナルジオグラフィック日本版サイト

ロシアの幻覚光兵器

兵器の配備もdeployなんですね。スタンガンならぬスタン光線というのも研究されているそうです。


つっつきボイス:「Hallucinateってなかなか読めないし😆」「医学英語ってかなりわからないです😭」「そろそろ空腹が限界」「ではさっそく親睦会を🍻」「お疲れさまでした〜」「お疲れさま〜」


今回は以上です。ご参加いただいた皆さま、遅くまでありがとうございました🙇。

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

週刊Railsウォッチ(20190204)あってうれしい40のgem、Ruby 2.6.1セキュリティリリース、Hanami v2.0.0.alpha1リリースほか

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

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

Rails公式ニュース

Ruby Weekly

RubyFlow

160928_1638_XvIP4h

Hacklines

Hacklines

WebOps Weekly

webops_weekly_banner

Publickey

publickey_banner_captured

DB Weekly

db_weekly_banner

JSer.info

jser.info_logo_captured


CONTACT

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