- 開発
週刊Railsウォッチ(20190409-2/2後編)Ruby 2.3系サポート終了、Thoughtbotのコーディング指南書、PostgreSQLのgenerated column、Chromebrewほか
こんにちは、hachi8833です。自宅でKindle for Macにダウンロードされる画像がちょくちょく欠落する病が治らず困っています😢。
- 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
- 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください
今回の後編も、4/8の第9回公開つっつき会の内容を元にしています。ご参加いただいた皆さまありがとうございます!
⚓後出し臨時ニュース: Ruby 2.3系のサポートが終了(Ruby公式ニュースより)
Ruby 2.3系のサポートが終了したとのこと。稼働中のアプリケーションはどんどん新しいバージョンにアップデートしていきましょー。
Support of Ruby 2.3 has ended https://t.co/IZBGywbDZq— Junichi Ito (伊藤淳一) (@jnchito) April 8, 2019
先週の公開つっつき会で取り上げようと思っていたのが漏れていました🙇。Rubyにとって春は別れの季節ですね。
Ruby 2.3以前は今後セキュリティパッチがリリースされませんので、お早めの対応をどうぞ。
⚓クラウド/コンテナ/インフラ/Linux/Serverless
⚓faastRuby: RubyやCrystal向けのサーバーレスプラットフォーム
つっつきボイス:「faastRubyは例のRuby on Jetsの対抗馬かな?と思って: とりあえずQiitaの記事も貼りました」「ぱっと見にはAWS Lambda上で動くサーバーレスなRubyという感じだけど、Faster than Lambdaとか書いてるし😆」「ホントに?」「Heroku並に簡単でLambdaより速いという謳い文句ということはLambdaじゃないサーバーレスということか」
「faastRubyでデプロイできて、ローカルHTTPサーバーもあって、と、pricingのあたりを見るとやはり別途サーバーが必要ということなのかな?」「あ、有料ありですか」「Self hostedプランもあったりするので、LambdaではないfaastRubyサーバーを立ててそこにデプロイするというもののようです☺️」「Heroku的なサーバーレスサービスを狙ってるのかも🤔」
「いま話に出てきたJetsは、Railsウォッチでも何度か取り上げたんですが、こちらはAWS Lambdaにデプロイするタイプですね」
⚓不揮発性メモリ(Publickeyより)
つっつきボイス:「そうそう、これも出てましたね😋: こういう↓のをDRAMのところにぶっ刺せる」「最初はもう少し小さめのヤツだった気がしますね」「この製品については今後どうなるかはまだわかりませんが😆: OSやハードウェアのサポートも必要になりそうですし」「マザボとの相性とかありそう😆」
Between Intel #Optane DC persistent memory and QLC NAND technology, Intel is changing data #storage for the better: https://t.co/jSHvVEKBz5 pic.twitter.com/Aoc6EEhqNc
— Intel Storage (@IntelStorage) June 18, 2018
「こういうのを既にやっていそうなのは、やはりクラウドサービスのプロバイダでしょうね(GoogleとかFacebookとか): つかそういうところにこの製品を売りたいでしょうし😆」「最近はあまり追えてないけど、こういう高速デバイス周りはいろいろ論文が出ていそうな気がするので、追ってみると楽しいかも😋」
⚓その他クラウド
つっつきボイス:「Goのバイナリ、そりゃ動くよね🤣」「Goがというより、バイナリもやっぱりLambdaで動かせるんだなと思って😆」「LinuxのELFバイナリなんかは普通に動くでしょうね☺️」
参考: Executable and Linkable Format - Wikipedia
弊社張り切ってkubernetes導入した結果、運用しきれなくてECSとlambdaへ切り替えたでござる。
みんな本当はコンテナ動けば環境はほとんどの場合なんでもいいのにkubernetes運用することが目的になってるんだよなあ。 https://t.co/TCUdzfyip6— 🤓k.bigwheel🤓 (@k_bigwheel) April 1, 2019
⚓SQL
⚓PostgreSQLに「generated column」が追加(Postgres Weeklyより)
-- 同commitより整形
CREATE TABLE gloc1 (a int, b int);
ALTER TABLE gloc1 set (autovacuum_enabled = 'false');
CREATE FOREIGN TABLE grem1 (
a int,
b int GENERATED ALWAYS AS (a * 2) STORED)
SERVER LOOPBACK OPTIONS(table_name 'gloc1');
INSERT INTO grem1 (a) VALUES (1), (2);
UPDATE grem1 SET a = 22 WHERE a = 2;
SELECT * FROM gloc1;
a | b
----+----
1 | 2
22 | 44
(2 rows)
SELECT * FROM grem1;
a | b
----+----
1 | 2
22 | 44
(2 rows)
つっつきボイス:「generated column?」「誰か分かる人います〜?」「言葉自体初めてかも😅」「あ〜そういうことか↓、なるほどなるほど」
参考: JSON型にindexも!MySQL 5.7のGenerated Columnsの可能性について探る - UUUM攻殻機動隊(エンジニアブログ)
簡単に言うと、トリガーで特定のカラムにデータを入れるのを簡単に定義する方法みたいなもので、カラム定義時に
AS 計算式
と書くことで、そのカラムの値が該当の計算結果になります。
この機能はMySQL 5.7.6から追加されました。日本語では「生成列」と呼ぶこともあるようです。
上記事より
-- 上記事より
mysql> CREATE TABLE triangle (
-> sidea DOUBLE,
-> sideb DOUBLE,
-> sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb))
-> );
Query OK, 0 rows affected (0.11 sec)
mysql> INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
「上のsidec
みたいに、他のカラムから計算した結果をカラムの値にできるヤツ」「おぉ?」「言ってみれば、カラムで関数を定義できるような感じ」「標準SQLにあるんだっけか?」
後で調べると、Microsoft SQL Serverでは「computed column(計算列)」と呼ばれているようです。またWikipedia(英)によると、一般にはvirtual columnという名称らしく、標準SQLにはないものだそうです。
参考: 計算列のインデックス - SQL Server | Microsoft Docs
参考: Virtual column - Wikipedia
⚓JavaScript
⚓Visual Studio 2019がリリース(Publickeyより)
つっつきボイス:「おーVS2019!」「ところで、この中でVisual Studio使ってる人います?」「VSCodeなら☺️」「あ、Visual StudioとVSCode(Visual Studio Code)って違うのか😅」「元C#erです😆」「しーしゃーぱー😆」
参考: Microsoft Visual Studio - Wikipedia
参考: Visual Studio Code - Wikipedia
「最近だとJetBrains IDEにもReSharperなどのC#の開発環境もありますけど、C#だとやっぱりVisual Studioが強いのかなーなんて」
私が欲しいものがだんだん現実化している(でも対象はC#)
Link: [速報]AIがコードのレコメンドやバグの指摘など開発を支援してくれる「Visual Studio IntelliCode」発表。Build 2018 - Publickey: https://t.co/HES9YA2HeF
— Yukihiro Matsumoto (@yukihiro_matz) May 8, 2018
「VSはとりあえずMatzもうらやましがってるIntelliCodeが気になります😊」「IntelliCode、名前的にJetBrainsに挑戦してる感🤣」「あは🤣」
参考: ReSharper: The Visual Studio Extension for .NET Developers by JetBrains
参考: Rider: The Cross-Platform .NET IDE from JetBrains
参考: IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains
「IntelliCodeはAI使ってるらしいとか聞いてますが、コードレコメンドとかやってくれるみたい」「そのうちみんなでコピペコードが書ける時代になったりして😆」「😆」
参考: IntelliCode を使ってみて戦慄した - Qiita
⚓ChromeコンソールAPIの新技集
つっつきボイス:「最近はてブで上がってましたね↓」「はい、それの元記事です」「ログを入れ子にする(グルーピング)↓とか、実はChromeコンソールでいろいろできるらしい」
参考: 【2019年4月版】Javascriptのconsoleがすごいことになってた。 - Qiita
// 同記事より(以下同文)
console.group();
console.log("Inside 1st group");
console.group();
console.log("Inside 2nd group");
console.groupEnd();
console.groupEnd();
console.log("Outer scope");
「コンソールログにCSSを当てられる↓ってそれって🤣」「変態や〜🤣」
console.log("Example %cCSS-styled%c %clog!",
"color: red; font-family: monoscope;",
"", "color: green; font-size: large; font-weight: bold");
「WarningやErrorのスタイルにできる機能↓とかは実用性あるかも😋」「いつの間に実装されてたんだろ?」「結構前からあったかも☺️」「お〜」
console.warn("This is a warning!");
console.error("This is an error!");
「assertもあるし」
console.assert(true, "This won't be logged!");
console.assert(false, "This will be logged!");
「TimingとかCountingとかは前からあった気がする」
console.timeLog(); // default: [time] ms
console.count(); // default: 1
console.count(); // default: 2
console.count(); // default: 3
「ついでに、この中でJavaScriptを業務でゴリゴリ書いているフロント系の人っています?」「ちょこちょこ触るぐらいかな〜☺️」「お、じゃ結構モダンなJS環境だったりします?」「Reactとか使ってますが、まだjQuery案件多いですね😅」「やはり〜😆」「まだまだjQueryは生き続けると☺️」
「ES2015は使ったりします?」「今徐々に移行しつつある感じで☺️」「よかった〜、みんな未来に向かって進んでるらしいことがわかって😆」
⚓その他JS
⚓CSS/HTML/フロントエンド/テスト
⚓Kururu: GitHub向けテスト管理ツール
つっつきボイス:「社内Slackのtest板に投下されていたので」「CI回すとかではない?」「どちらかというとissueというかチケットの管理っぽいです」「チケット管理側とコード管理側を紐付けるみたいな感じかな🤔」「とりあえずGitHub専用みたいです」「unitテストとかじゃなくてintegrationテストなんかだとシナリオに沿ってやるから、こうやってチケット書いて対応するみたいなのは欲しいのかも🤔」
開発者自身がテストを担当するレベルの小さなチームやプロジェクトを意識してます。 その上でテスト管理とチケット管理を連携しやすいツールを作ろうと考えました。あえてGitHubと連携を必須にしたのはこれが理由です。自分自身の経験から小さなチームであればGitHubのissueでチケット管理するのが一番楽でした。
そのため、Kururuではもしテストが失敗したら速やかにGitHubと連携できるように作りました。 もちろん、現状ではまだまだ機能が少ないので追加や改善をしていこうと考えてます。
同サイトより
⚓「令和の」令が2つ
U+FA98 https://t.co/EQfIZ854DD は互換漢字,トラブルのもとです.
たとえば,
・Twitterで使うと,U+FA98はU+4EE4に変わります.
・U+FA98とU+4EE4を(Ctrl+Fで)検索するときに同一視するかどうかはブラウザによります.お仕事がちょっと増えた人がいるかもしれません. pic.twitter.com/Ujg5dbXEN2
— Taro YABUKI (@yabuki) April 1, 2019
つっつきボイス:「令和が早くも😆」「令(U+4EE4)と令(U+F9A8)の2つか〜、これはもうしょうがない😇」
「ところで、令和ってどう発音するのが正しいんだろか?😆」「れいわ↑?」「れ↑いわ↓?」「(フラットに)れーわ?」「あれどれだろう😆」
参考: 「令和」のアクセントは? 放送各社で対応分かれる (1/2) - ITmedia NEWS
一応私のオレオレRailsアプリにも令和の誤りを登録しました↓。
⚓Chromebrew: Chrome OSで使えるHomebrew
$ crew install vim
つっつきボイス:「Chrome OSで使えるhomebrewみたい」「Chrome OSというかChromebookって使ってる人います?」「一応気にはなってます☺️」
参考: Google Chrome OS - Wikipedia
「Chrome OS、実は結構いいですよ〜❤️: 今自分が授業やってる学校の先生が最近Chromebookのエントリーモデル使っているのを見てると、論文レビューとかに使う分にはまったく問題ない感じですね」「なるほど😍」
「やったことはないんですが、Chromebookの背面の小さな蓋を開けてDIPスイッチを切り替えると、Chromebookのローカルに書き込めるようになるという噂を見かけたことあります」「それ、やりました✋」「お、どうでした?」「壊れました😇」「やっぱし🤣」「ぶっ壊れですよもう🤣」「ご愁傷様です🙏」
今朝思い出したのですが、私事ながら自分の息子が今年入学した中学では2年生になると全面的にChromebookで授業やるそうです。来年あたりに危うく子どものChromebookのDIPスイッチをドヤ顔で動かして自滅するところでした😅。
⚓その他フロント
私くらいHTML5を愛していると、Googleカレンダーでゲームができるようになります。 pic.twitter.com/IaaKgwLGTw
— すくまり (@squmari) April 1, 2019
つっつきボイス:「とにかく動画を再生」(ぽちっ)「おおwこれは😆」「面白え〜」「しかも左上のところにスコアが表示されるあたり芸が細かい😋」「アイデアの勝利👍」「絵が描けなくてもできるし」「さすがげえむくりえいたあ」
⚓言語・ツール
⚓Playbook: Thoughtbot謹製の汎用プログラミングガイド
例:
- ベストプラクティス
- 一般
- オブジェクト指向設計
- Ruby
- RubyGem
- Rails
- テスト
- Bundler
- RDB
- PostgreSQL
- Web
- JavaScript
- HTML
- CSS
- Sass
- ブラウザ
- Objective-C
- Bash
- Haskell
- (略)
つっつきボイス:「Thoughtbotが作った、コードはこう書けみたいな心得帳というか格言集というかガイドなんですが、カバー範囲がやけに広いのが面白いと思って」「そういえばThoughtbotって最近どんなgem作ってたかな?」「最近ちょっとおとなしめな印象ありましたね」
「Thoughtbotといえばfactory_bot、さすがに今も動いてる」
- リポジトリ: thoughtbot/factory_bot
「あと何が有名だったかな〜」「DeviseはPlataformatecだから違うし」「んーと、Paperclip!」「それだ!」「Paperclipはもうサポート終了なので😇」「年季の入ったプロジェクトにはまだあるかも?😆」
- リポジトリ: thoughtbot/paperclip
Paperclipからの移行ガイド↓です。
「Thoughtbotの有名なgemって他にもあった気がするけど、リポジトリにたくさんありすぎてわからない😅」「backbone-js-on-railsなんてのを見つけました↓」「お〜歴史⛩」「歴史だ」「一時期はBackbone.jsこそ本命みたいに言われてた時期もありましたね☺️」「あっという間に消えた」「あんなに真っ逆さまに消えるとは思わかなったし」
⚓その他
⚓Desmos: 直感的な数式プロットサービス
生成したグラフの埋め込みもできます↓。
つっつきボイス:「Desmosは以下のブログの方が愛用しているそうです」(サイトを開く)「おぉ、これは絵から数式を起こすこともできるヤツ?」「そうですね、どっち方向もやれますね」
やったー!平成が令和になるグラフができthttps://t.co/yo1vD7eglA pic.twitter.com/yKGLeTyZTJ
— 鯵坂もっちょ🐟 (@motcho_tw) April 1, 2019
「ミッキーマウスがドラえもんにモーフィングするとか」「フーリエ展開とか使って」「しかしスポンジボブ😆」
「ついでに以下も貼ってみました」「ほー、階乗の!
記号の由来が印刷の都合で...ってホントか?🤣」「案外4/1だったりして🤣」
なんで階乗の記号ってビックリマークなんやろって思ってたんだけど意外とちゃんとした理由があった pic.twitter.com/mUbZ27BkM1
— MIKE.B (@mikeimikes) March 31, 2019
「ってこの日付、4/1みたいですけど😆」「あー、ネタだったか〜!😇」「ネタ説濃厚😆」「引っかかった〜😆」「真っ赤な嘘😆」「ワンテンポ遅れで四月の魚になってしまいました😅」
四月の魚: Poisson d'avril〈フランス語〉〔仏ではこの日は魚の紙切れを誰かの背中に黙って貼り付け、皆で笑い者にする。アイルランドも他人に紙を貼り付ける(Taily Day)。〕
この記事は既存の記事を改変した架空のもので、内容は真っ赤な嘘です。#エイプリールフールhttps://t.co/lu1YJMbTes
— MIKE.B (@mikeimikes) April 1, 2019
⚓英語の「R」を発音しない流行があった
つっつきボイス:「これイギリスのBBCサイトの記事なんですが🇬🇧、予想以上にいい記事でした😍: おまいらRも発音できないのかみたいにマウント取りに行くのかと思ったら全然違ってたという」「イギリスやアメリカですら、Rの発音が時代によって品がないとされたり、Rの発音を弱めてオシャレ感を出したりしてた時期があったんだそうです」「翻訳が極上なのもポイント高いです😋: こんな訳しにくいものよく訳したなと」「RというとR言語↓しか思い浮かばないけどっ🤣」「それ🤣」
参考: R言語 - Wikipedia
Fred Astaireの歌う古い英語の歌↓がとても聞き取りやすくて好きだったのですが、言われてみればいわゆるRの音がほとんど強調されてなくて単なる「アー」みたいに聞こえます。もしかするとマイクの性能が低かった時代のステージでの歌い方だったりするのかもしれませんが。
⚓番外
⚓文明と衰退
新書の「西洋天文学史」読んでるんだけど、イスラム圏が天文学のトップだった時期があるが大学とか教育機関が無くて、天文学の好きな権力者の下で天文台が作られて学問が進むけど権力者が失脚するとこれは悪魔との通信だとか言われてワーッと何もかも破壊されて成果が失われるの何かおもろいな
— ドンガメ六号 (@dongame6) April 3, 2019
つっつきボイス:「政権交代すると学問が衰退するというのはあるある」「逆もあったりしますし」
「これとは少し違うけど『権力者は暦を操りたがる』みたいな傾向ってあったりしますよね」「ありそう〜」「暦とか元号の改定を権力の証とするみたいな」「ピラミッドとかより安上がりに歴史に名前残るからかも😆」
そういえばプーチンは何年か前にサマータイム周りをエイヤっと変更してましたね。
参考: 【続報】新タイムゾーン決定~10月26日から東京・モスクワ間の時差が通年6時間に~ | ロシアぶろぐ(仮)~目指せ1日1ロシアネタ~
The 9 Different Time Zones in Russia
Source: http://t.co/V8UasUXWzd
- pic.twitter.com/EZNMDkSn4f— Amazing Maps (@Amazing_Maps) March 11, 2014
⚓ダークマターあやうし?
ダークマターの主要部分は、原始ブラックホールではないらしい。アンドロメダ観測データを解析した結果、マイクロレンズ現象が極めて少なかったのだそうです。 https://t.co/Tp9vkq1o3g
— 樺沢 宇紀 (@adx50150) April 2, 2019
つっつきボイス:「現時点ではまだ何とも言えないんですが、ここ何年かでダークマター説がじわじわ苦しくなりつつあるような感じだったので」「久々の宇宙ネタ🛰」「この辺好きなの自分だけかも😆」
参考: 暗黒物質 - Wikipedia
参考: エントロピック重力 - Wikipedia
今回は以上です。
バックナンバー(2019年度第1四半期)
週刊Railsウォッチ(20190408-1/2前編)RubyKaigiの予習資料、Rails「今年ベストのプルリク」、numbered parametersの議論ほか
- 20190408-1/2前編 RubyKaigiの予習資料、Rails「今年ベストのプルリク」、numbered parametersの議論ほか
- 20190402-2/2後編 Apache Arrowとは何か、prop drillingはアンチパターン、Node-REDほか
- 20190401-1/2前編 Rails 5.2.3/5.1.7がリリース、Railsdmの「Railsの正体」、Ruby 2.7のnumbered parameter、新元号「令和」ほか
- 20190319-2/2後編 BrowserStackは優秀、QuarkusとTruffleRubyとJRuby、最近のGPS事情ほか
- 20190318-1/2前編 RailsとRubyでセキュリティ修正リリース、Rails 6でinsert_allやupsert_all追加、Webpacker 4登場ほか
- 20190312-2/2後編 RubyのStringScannerクラス、AWS Amplifyでサーバーレス、Unicode 12.0登場ほか
- 20190311-1/2前編 「Rails Conductor」14年ぶり復活なるか?、RubyGemsに複数の脆弱性、2009年のRailsエコシステムほか
- 20190305-2/2後編 PostgreSQL強者から見たMySQL、SEO良記事、分散アルゴリズムChordほか
- 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など)です。