- 開発
週刊Railsウォッチ(20191001後編)RedisとRubyをつなぐredis-object gem、Fullstaq Rubyの新バージョン、COUNT(*)とCOUNT(1)の速度ほか
こんにちは、hachi8833です。Macbookのディスク容量がいつの間にかあふれていて焦りました。
- 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
- 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください
⚓週刊Railsウォッチ「公開つっつき会」第15回のお知らせ(無料)
第15回目公開つっつき会は、今週10月5日(木)19:30〜にBPS会議スペースにて開催されます。週刊Railsウォッチの記事にいち早く触れられるチャンスです!皆さまのお気軽なご参加をお待ちしております🙇。
⚓Ruby
⚓Ruby 2.7のIRBはこう変わる(RubyFlowより)
見出し:
- シンタックスハイライト
- relineによるマルチラインモード
- タブキーを2度押しするとドキュメントが表示
- オートインデント
- 履歴保存と読み込みがデフォルトで有効
つっつきボイス:「2.7のIRBはこんな感じで↓色が付くようになったんですよね」「わぉ〜すんばらしい〜!❤️」「矢印キーで履歴を辿る機能とかも強化されますし☺️」「マルチラインで履歴をずごっと戻せますね😋」
「Ruby 2.7をDockerで取り込んでIRBしてみたことあるんですが、微妙に不安定なところがあるような気がしました😅」「それはもしかするとDockerのターミナルの問題かもしれませんね😎」「あ〜」「docker exec
でbashにしたときのDockerのターミナルって微妙に挙動怪しいんですよ😆: 何ならDockerにsshd立てて、そこにsshしてからIRBしてみると結果違うかもしれない😋」「後で試してみます😀」
「ちなみに自分はもう最近pry入れてませんし😆」「自分も😎」「マジですか!😳」「最近は割とIRBで生きてます☺️」「まだpry使ってる...」
⚓Rubyのリファクタリングから学んだ10のこと
「テニス」をお題にした設計になっています。
見出し:
- 容赦ないリファクタリングは絶好の学びの機会
- RedがGreenになったときがリファクタリングどき
- テストを信用するな
- 対象分野(ドメイン)の基礎知識ぐらいは学んでおこう
- いいIDEならメソッド切り出しを何も考えずにやれる
- クライアントのpublic API呼び出しを制御できないならAPIを変えずにモジュールに委譲する
- 新しいクラスに切り出すと概念(テニスのドローや勝ちなど)のカプセル化に役立つ
- ガード文でif条件をシンプルにしよう
- 「データとしてのコード」は、実践というより理論寄りな印象
- ミューテーションをテストする
つっつきボイス:「イケてなさそうなコードから始まって、1つずつリファクタリングしていくぜみたいな記事みたい☺️」「『テストを信用するな』と😆」「こういう記事を丁寧に書くモチベーションの高さがいいですね〜😋」
「最終的なTennis
モジュールのコード↓が何だかスゴい😆」「こうやって並べるとちょいギャグっぽいというか😆」
# 同記事より
module Tennis
class LoveAll
def score; "Love-All" end
def player_1_score; FifteenLove.new end
def player_2_score; LoveFifteen.new end
end
class FifteenLove
def score; "Fifteen-Love" end
def player_1_score; ThirtyLove.new end
def player_2_score; FifteenAll.new end
end
class ThirtyLove
def score; "Thirty-Love" end
def player_1_score; FortyLove.new end
def player_2_score; ThirtyFifteen.new end
end
class FortyLove
def score; "Forty-Love" end
def player_1_score; WinPlayer_1.new end
def player_2_score; FortyFifteen.new end
end
class LoveFifteen
def score; "Love-Fifteen" end
def player_1_score; FifteenAll.new end
def player_2_score; LoveThirty.new end
end
class LoveThirty
def score; "Love-Thirty" end
def player_1_score; FifteenThirty.new end
def player_2_score; LoveForty.new end
end
# (省略)
end
⚓type_struct: Rubyで型付きstruct
- 元記事: Ruby に型があると便利か -- るびま0054
- リポジトリ: ksss/type_struct
# 同リポジトリより
Point = TypeStruct.new(
x: Integer,
y: Integer,
)
Color = TypeStruct.new(
code: /A#[0-9a-f]{6}z/i,
)
Line = TypeStruct.new(
start: Point,
end: Point,
color: Color,
)
hash = JSON.parse(%({"start":{"x":3,"y":10},"end":{"x":5,"y":9},"color":{"code":"#CAFE00"}}))
line = Line.from_hash(hash)
p line
#=> #<Line start=#<Point x=3, y=10>, end=#<Point x=5, y=9>, color=#<Color code="#CAFE00">>
p line.start.y
#=> 10
line.stort
#=> NoMethodError
つっつきボイス:「るびまでたまたま目にして気になったので」「おぉ、これってdry-rbでやれることとはまた違うのかな?」「あ、たしかに路線近いですね」「type_structはちょっぴりGo言語やCrystal言語っぽい要素も入れてるそうです」「まあ型が欲しい人は多いので☺️」
# 同リポジトリより
Foo = TypeStruct.new(
bar: TypeStruct::Union.new(TrueClass, FalseClass)
)
p Foo.new(bar: false) #=> #<Foo bar=false>
「type_structを眺めていて、Rubyの中でbooleanを指定する↑のが大変そうだなと思いました」「まあarrayやhashも大変ですし、あとArrayOf的にarrayの要素の型も含めて定義したいとかも大変ですし☺️」「arrayだけど中にはこういう要素しか入れたくないみたいなヤツですね」「お、type_structにもまさにArrayOf
がある↓」
# 同リポジトリより
Bar = TypeStruct.new(
baz: TypeStruct::ArrayOf.new(Integer),
)
p Bar.new(baz: [1, 2, 3]) #=> #<Bar baz=[1, 2, 3]>
「こういうArrayOf的なことは自分もすっごくやりたいですね〜: 安心を買えるから😋」「そうなんですよ〜😂」「他の型付き言語なら普通にやれますけどね☺️」「型付き言語でどうしても何でも入れたければオブジェクトにしろと」「void
でね😆」「そうそう、void
使いまくり😆」
⚓Fullstaq Ruby epic 2がリリース(Ruby Weeklyより)
つっつきボイス:「お、Fullstaq Rubyの新しいバージョンですか!」「Ruby 2.6.4にも対応」「aptやyumのリポジトリもできたのね」「Fullstaq Rubyはどこかで試してみたいな〜😋」
⚓redis-object: Radisの型をRubyオブジェクトに直接マッピング(Ruby Weeklyより)
つっつきボイス:「なるほど、これはRedisの型をRubyでそのまま扱えるようにするgemですね」「ほほぉ~」「Redisにはいくつかデータ型がありますけど、それに1対1対応するものを作れる: たとえば以下に並んでいるのはRedisの型ですね↓」「おぉ〜😍」「counter
はたしかアトミックにインクリメントできる型だったかな☺️」
class Team < ActiveRecord::Base
include Redis::Objects
lock :trade_players, :expiration => 15 # sec
value :at_bat
counter :hits
counter :runs
counter :outs
counter :inning, :start => 1
list :on_base
list :coaches, :marshal => true
set :outfielders
hash_key :pitchers_faced # "hash" is taken by Ruby
sorted_set :rank, :global => true
end
「以下のincr
とかもRedisのコマンドですし」「へぇ〜!」「こんな具合にRedisの型を直接Active Recordで扱えるんですね😋」「それはアツい🔥」「Redisの機能をがっつり使いたいなら、このgemはなかなか良さそう👍」「その代わりRedisにロックインすることになりますけど😆」「まあそれは😆」
# 同リポジトリより
@team.hits.increment # or incr
@team.hits.decrement # or decr
@team.hits.incr(3) # add 3
@team.runs = 4 # exception
- サイト: Redis
おたより発掘
今分析系のシステムを作っていて、大量の静的なレコードを読み取ることが多く、ほとんどのデータをRedisにキャッシュしてる。その際にRedisの便利なデータ型をRubyのオブジェクトで扱えるredis-objectsはとても使い勝手がいいhttps://t.co/nxXmyI5jpH
— さいぬ🥑 (@sainuio) October 1, 2019
⚓その他Ruby
@unasukeさんのPodcastと、XP祭り2019のキーノートです。
https://t.co/pi5mJ7wKsz 聞くだけではわからないかもしれない箇所の、補足情報入り(リンクとか写真とか)のエントリを書きました!見ながら聴くと楽しめる…かも?🦆https://t.co/wImtbbuyor
— taea🐿 (@ken_c_lo) September 19, 2019
基調講演のスライドです: 僕らはエクストリームプログラミングのかけら https://t.co/hF123VGiEq #xpjug
— Kakutani Shintaro (@kakutani) September 21, 2019
今年のRubyKaigi 2019でもやってた「Apple IIでRubyを動かす企画」のその後の発表です↓。
⚓DB
⚓クエリ言語GQLが国際標準に(DB Weeklyより)
つっつきボイス:「GraphQLかなと思ったら違うみたいです」「へぇ〜?、あ、GraphQLはソフトウェアの名称だけど、これはクエリ言語の部分だけGQL(Graph Query Language)という名前にして標準化を進めているということか」「SQLとは別物ですね☺️」「GQLというクエリ言語の標準化が始まったということなので、これからという感じ」「GQLのマニフェストもありますね」「RDBMSでSQLの亜種がいろいろ出たみたいにGQLの亜種が今後出たりするんだろうかと思いますけど、ま使ったことないし😆」
⚓COUNT(*)
とCOUNT(1)
はどっちが速い?(Postgres Weeklyより)
つっつきボイス:「COUNT(*)
とCOUNT(1)
って同じ意味だったっけ?🤔」「データがそこそこ入ってるPostgreSQLで試してみるか」(しばらく調べる)「どちらも件数は同じだな〜😳」「DISTINCTとかすれば別でしょうけど😆」
COUNT 関数にアスタリスク(*)を使用するとグループ内の全レコード数を戻す。
式、または、列名を指定した場合、その式が NULL 値 のものをカウント数に含めない。
www.shift-the-oracle.comより
COUNT(1)の書式
COUNT(1)構文ではすべてのレコードが返されます。これには、NULL値を持つレコードも含まれます。たとえば、Endecaデータ・ドメイン内のデータ・レコードの数を知るには、次のようにします。RETURN results AS SELECT COUNT(1) AS recordCount WHERE WineID IS NOT NULL GROUP
「あぁ〜、COUNT(1)
はNULL値も数える!?」「上はOracleだけど、他でもそうなんだろうか?🤔」「標準SQLってネットにあんまりない印象だけど、この辺がそうかな↓」
参考: SQL COUNT function - w3resource
「手元でnullableなテーブルでやってみたらこうなった↓」
SELECT COUNT(*) FROM nullables;
--> NULLを含む全件
SELECT COUNT(department) FROM nullables;
--> NULLを含まない全件
SELECT COUNT(1) FROM nullables;
--> NULLを含む全件
SELECT COUNT(null) FROM nullables;
--> 0(全ての行をNULLとしてカウントし、その際にNULLを含まないモノをカウントするため)
「ほんとだ〜!COUNT(0)
だと件数返ってくるけどCOUNT(null)
だとゼロになるし: むずい😭」
COUNT(*)
はNULLもカウントする。COUNT(1)
は全ての行の評価結果を1にした上でカウントするのでNULLもカウントするCOUNT(column)
はNULLをカウントしない
「いろいろ総合してみると、これが正しそう↑」「つまりCOUNT(*)
とCOUNT(1)
は同じということですね」「仕様レベルでは結果が同じになることが保証されると」「あ〜ややこしかった😅」「一度わかっちゃえばいいんですけど」「仕様をたどらないとわからんという話でした😆」「まあCOUNT(1)
使いませんけど🤣」「🤣」
「記事によるとRDBMSによってCOUNT(*)
とCOUNT(1)
のパフォーマンスに違いがあるみたいですね↓」「ぽすぐれだとCOUNT(*)
の方が速くなるように作られてるのかも🤔」「いずれにしろ実装依存か」
- MySQL: 違いは影響しない。
COUNT(1)
が速い場合もCOUNT(*)
が違う場合もあり、ベンチマークのつくり次第。 - Oracle: MySQLと同様。
- PostgreSQL: 違いは影響する。100万行では
COUNT(*)
の方が常に10%ほど速い(筆者の予想を越えていた) - SQL Server: MySQLと同様。
「つまりPostgreSQLではCOUNT(*)
が速くて他ではどっこいどっこい」「へぇ〜」
「たしかMySQLでは、オートインクリメントとかで使えるように各テーブルの行数をinformation_schemaあたりに持ってた気がするんで、そこから持ってきてたら速いでしょうね」「なるほどっ😊」
参考: information_schemaでMySQLの情報取得 | データベース | DoRuby
おたより発掘
SQLにおけるnullはツラミしかない…
週刊Railsウォッチ RedisとRubyをつなぐredis-object gem、Fullstaq Rubyの新バージョン、COUNT(*)とCOUNT(1)の速度ほか https://t.co/g07ZSzzQqi
— Jaga Apple (@jagaapple_tech) October 6, 2019
⚓クラウド/コンテナ/インフラ/Linux/Serverless
⚓サーバーレスは遅くて高いのか?
BeanstalkからServerlessにしてみたら15%遅くなって8倍お高くなったって話。
API Gatewayは1000万req/dayだと$35/dayでお高いらしい。わーロードやリクエストの性質によってはだいぶ割高になる模様
Serverless: 15% slower and 8x more expensive https://t.co/fgHsMtvaZy
— いきもの (@yuroyoro) September 24, 2019
つっつきボイス:「このツイートと同じ記事がServerless Statusにも出てました」「Serverlessにしてみたら15%遅くなって8倍お高くなったと😆」「まあもともとマネージド・サービスってそういうものですし、そうやったらそりゃ高くなるでしょうし😆」
「ツイートにもワークロードやリクエストの性質によって変わる、とあるように、こういうのって結局システムの使われ方の傾向でしか変わらないんですよ☺️」「ですね〜」「多数のリクエストが恒常的にやってくるようなサービスだったら、データセンターに普通にサーバーを立てる方が安くなるのはもう自明ですし💰」
⚓JavaScript
⚓Safari 13でWeb SQLが削除された
つっつきボイス:「Web SQLもついに滅びぬ」「使ってるの見たことありませんけど🤣」「Safari 13のリリースノートにWeb SQLを削除したとあって、調べてみたら仕様も他のブラウザもとっくにWeb SQLやめてました」「Safariも今は使ってないな〜😆」
⚓その他JS
A「好きな数字を思い浮かべてください」
B「はい(Float::INFINITY)」
A「その数字に1を足して」
B (Infinity)
A「2をかけて」
B (Infinity)
A「6を足して」
B (Infinity)
A「2で割って」
B (Infinity)
A「その数字から最初の数字を引いてください」
B (NaNだ…)
A「その数字は…4ですね!」
B「false」— 𝓜𝓲𝔂𝓪𝓰𝓲 (@hanachin_) September 25, 2019
つっつきボイス:「これ面白かった😋」「INFINITYって数字と言っていいんだろうかというのが微妙に気になっちゃいました😅」「数字じゃなくて数(すう)ならよかったりして?」「少なくとも字は付かないかな〜: 無限って単一の元にならないから、数と呼ぶのは無理があるかも😆」「INFINITYイコールINFINITYにはならないですよね?」「なりませんね〜☺️」「数学科出身の人がそう言ってるのできっと正しいでしょう😆」「諸説ありですし😆」
参考: 無限 - Wikipedia
⚓CSS/HTML/フロントエンド/テスト
⚓フォームのボタンやチェックボックスはどう配置すべきか(Frontend Weeklyより)
- 元記事1: Where to put buttons on forms by Adam Silver | Designer, London, UK.
- 元記事2: Accessibility Matters - Checkbox
それぞれ別の著者が書いています。
つっつきボイス:「記事1は、ボタンみたいな要素をどこに置くべきかという話というか提案みたいです」「こういうのって、それぞれのユーザーインターフェイスガイドラインに従えばいいのでは?😆」「自分もそう思いますし☺️」
参考: デザイン - Apple Developer
参考: Android Developers
参考: Guidelines - Windows applications | Microsoft Docs
「このプライマリボタン↓って、たしかAppleだと右寄りに配置するんじゃなかったっけ?」「そうだったと思います」「デフォルトというかおすすめのボタンは画面右に配置するみたいなルールがあった気がする」「スマホだと右親指で押しやすいからとか?」「スマホの前からそうなってましたね: だからAppleはOKボタンが画面の右に配置されます☺️」
後で調べると、「否定的な情報は左に配置する↓」となっていました。
参考: 日本語でヒューマンインターフェースガイドライン15の原則を5分で解説 | フリーランスで稼ぐ方法まとめ
「Backボタンはフォームの上に置けと?↓」「記事1書いた人の意見なのかな?」「すぐには賛同しかねるな〜😅」「まあこういうのは1つのサイトの中で統一されていればいいんですけどね☺️」「サイトの中でバラつくのは困る😤」
「記事1の人はもろもろ左側に寄せたい感じがしますね」「レスポンシブ対応のことを考えると、これみたいに↓最初から縦を左に揃えとけみたいなのはわかる」
「プロフィールを見るとinteraction designerとありますね」「Androidのガイドラインとかは知らないのでわかりませんけど、記事1の人はどちらかというと少数派側の気がしますね🤔」
⚓Firebase Summit 2019
- サイト: Firebase
つっつきボイス:「FirebaseはBPSのアプリチームでも使ってるという話がありましたね」「それ以上のことは知りませんけど😆、Firebaseってむちゃくちゃサービス数が多いんですよ」「そうなんですか!」「Firebaseはこれまで買収に次ぐ買収を重ねて最後にGoogleが買っているからか、前からAPIの数がすごく多い😳」
「前に聞いたときは、Firebaseは計測とかアナリティクスが強いみたいな話もありましたけど」「Firebaseは1個の機能じゃないので、それも機能のひとつですね」「そうでしたか!」「まあGCPみたいなものだと思えばいいかと😆」
参考: Firebaseを使い始めたら人生が変わった(ような気がした) - Qiita
「上のQiita記事でいうと、Firebase AuthenticationがAWSでいうCognitoで、Cloud StorageはAWSのS3に近そうですし、Firebase Hostingは静的ホスティングだからS3のStatic Website Hostingに近くて、Cloud FunctionsはAWSのLambdaに近い、AnalyticsとCrashlyticsはFirebaseのアナリティクス、という感じに見立てられそうですね☺️」「なるほど〜!」
参考: Amazon Cognito とは - Amazon Cognito
参考: Amazon S3 での静的ウェブサイトのホスティング - Amazon Simple Storage Service
⚓言語・ツール
⚓TextMate 2.0がリリース(Ruby Weeklyより)
つっつきボイス:「おおなつかしのTextMate!😂」「昔使ってたっておっしゃってましたね」「TextMate、PHP書いてた頃にむっちゃ使ってた〜なつかしいな〜😘」「Changelogを見ると、そんなに大きく変わってないしwishlistも残ってるけど、いつまでもバージョンアップしないのもどうかと思うので2.0を出したいう感じでした」「長い道のりだったな〜🛣」
「DHHは今でもTextMate使ってるそうですね」「でもTextMateは日本語がアカンのです😇」「そういえばそんな話が」「半角幅になる全角文字をコンパイルして適用するとかいろいろやると一応見られるようになりますけど😆」
参考: TextMateを日本語化してみた – morizotter blog
「TextMateによく似たSublime Textも、未だに検索窓の日本語入力がダメですよね😢」「やっぱりIMEとの連携ってどうしても難しくて、IMEのある世界線にいる人でないと正しく実装できなかったりします🧐」「そういえば今年のbuildersconのこのセッション↓でも同じ話がありました: 英語圏の人にIME連携のところを話してもなかなかわかってもらえなかったそうです」「相手側にIMEという概念がそもそもなかったりしますし☺️」
「中国語の入力メソッドとかもそうですよね: 部首入力みたいなのがあったり」「キーボードに謎の部首がびっしり並んでたり😆」「そして日本語みたいに変換という処理のある入力メソッドはさらに特殊ですよね😆」「たしかに! 」
おたより発掘
今のTextMateは日本語ふつうに使えます。https://t.co/sRn1Y3xPYu
— Ryu Yamamoto (@ryam) October 2, 2019
⚓その他言語
AI がバグ技に気付くの面白い。シミュレーションがどんどん高度になっていくと、例えば新しいサービスを世に公開する前から色々試行錯誤出来るようになりそう。
どんどん戦略的になる。AIに「かくれんぼ」させるとこうなる | ギズモード・ジャパン https://t.co/DudAxQb73y
— サトウリョウスケ (@ryosuke_sato) September 24, 2019
つっつきボイス:「そうそう、この動画めっちゃ面白いですよ〜😋」「貼ったばかりでまだ見てませんでした😅」
(動画を見ながら)「これはマジ面白くて、Hide and Seekというシンプルなかくれんぼゲームです」「鬼の視線ビームがプレイヤーに当たったら負けなんですね」
「鬼とプレイヤーは最初は学習なしでランダムに動いているんですけど、ひたすらぶん回しているうちに、動かせるブロックを使って鬼が入って来られないようにプレイヤーがブロックすることを学習し始めるんですよ」「へぇぇ〜!😳」「開始後に鬼が探し始めるまでに一定時間待つルールがあるので、その間にプレイヤーがいそいそとブロックで塞いで回る📦」
「もっと進むと、斜めのジャンプ台を鬼が見つけて、それを使ってブロックを乗り越えることを覚え始める」「おほぉ〜!😆」
「すると今度はプレイヤーが、その前にジャンプ台をブロックの内側に隠して鬼に使わせないようにすることを覚え始める」「すんげぇ〜!」「こんな調子でだんだん高度なことをするようになってきます☺️」
「その先がまた面白くて、舞台が変わると今度は動かせる壁をシェルターにしてプレイヤーが隠れ場所を作ったり、壁やジャンプ台をロックして絶対動かせないようにしたり」「はぁ〜!」
「すると鬼は、ロックされたジャンプ台を無理やり使って箱に飛び乗って、それをずりずり移動してプレイヤーのところにたどり着くことを覚える(box surfing)」「ひぇ〜😆」「言ってみればエンジンのバグを自らハックして突破してるという😆」「裏技や!」
「最後はプレイヤーがすべての物体をロックしてから壁に引きこもる: これはほんと面白い👍」「面白すぎます!😋」「ボックスサーフ最高😆」「生命ってこういうふうに進化してるのかなと思ったりしました☺️」
⚓その他
⚓わからなくなったとき
めっちゃいい話ですやーん!分からなくてつらいって思ってる人へ届けたい。 / 他4件のコメント https://t.co/HJ4vv4Yg8M “"「わからない」は怖くない"と気づくまでと気づいてから - ねこものがたり” https://t.co/JvpBeX5mT5
— igaiga (@igaiga555) September 25, 2019
ちょっと前に書いた記事です。独学でプログラミングの勉強して変に焦っていたり、新しい職場でスキル不足を痛感して半泣きになってる人は、これを読んで今の自分がグラフのどこにいるのか客観視してみるといいかもしれません。
プログラマの成長とチクセントミハイのフロー理論https://t.co/uUFAdU60KA— Junichi Ito (伊藤淳一) (@jnchito) September 24, 2019
つっつきボイス:「たまたま趣旨の近い記事が立て続けに出てたので」「強い人だって『何がわからないかわからない』ときがあったんだよと」「やっぱり『わからない』って自分で気づいて言えるのが大事」「そうそうっ😊: 3日考えた末に出た結論が『オレはわかってない』だったことありましたし😆」
⚓番外
⚓折り紙の次は切り紙?
折り紙に続いて数学の分野がまた1つ増えたようです。英語でもKirigamiだそうです。
参考: Kirigami - Wikipedia
参考: 折紙の数学 - Wikipedia
今は亡き某ビジュアルSF雑誌で、この前川淳さん↓が折り紙で5角形を折る方法を考案したという記事を見たのが30年ほど前でしたが😅、折り紙が数学界で広まってひとつの分野となるきっかけとなったようです。代表作「悪魔」の両手の5本指を折るのにその5角形が応用されています。
参考: 前川淳 (折り紙) - Wikipedia
参考: 悪魔を飼いならした!-前川淳「本格折り紙」上級篇 : 大田原の明日は、僕たちの手で。
後編は以上です。
バックナンバー(2019年度第3四半期)
週刊Railsウォッチ(20190925-2/2後編)AWS Lambdaの秘密鍵保存法、Rubyコミット歴史の動画、Rubyコードの最適化と式展開ほか
- 20190924-1/2前編 Railsのconcernsを考える、Netflixのヘキサゴナルアーキテクチャ、Railsのアロケーション削減ほか
- 20190918-2/2後編 RubyPrize 2019候補者発表、GoogleがTypeScript 3.5に熱烈フィードバック、日本語形態素分析kagomeほか
- 20190917-1/2前編 Sidekiq 6.0がリリース、銀座Rails#13と「出張!Railsウォッチ」、るびま0060号、ロックイン回避の落とし穴ほか
- 20190910-2/2後編 buildersconと「20年後のソフトウェアテスト」、はてなブックマークがScalaに移行、「詳解PostgreSQL」、Go 1.13ほか
- 20190909-1/2前編 Rails 6のキャッシュバージョニング、Rubyのキーワード引数周りが変わる、Faker 2がリリースほか
- 20190902 Ruby 2.6.4セキュリティ修正リリース、スライド「All About Ruby in 2019」、Shrine gem 3.0に入る新機能ほか
- 20190826 6-0-stableの更新を見てみる、『Morning Cup of Coding』ニュースレター、Rails TutorialがRails 6対応に動き出すほか
- 20190821-2/2後編 11のgemにバックドア、ruby-jp Slackがとてもアツい、Fullstaq Rubyでチューンアップ、HTTPサービス監視chaoほか
- 20190819-1/2前編 祝: Rails 6がついにリリース、RailsガイドもRails 6に対応、Arelはpublicだったかほか
- 20190806-2/2後編 RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか
- 20190805-1/2前編 Rails 6のActive Recordは速くなった、Windows WSL2+VSCodeでのRails開発、Martin Fowler記事ほか
- 20190730-2/2後編 Docker 19.03の新機能に注目、ngrokはスゴい、redis-namespaceほか
- 20190729-1/2前編 Rails 6のリリースは近そう?、Evil MartiansのRails+Docker記事、Railsパフォーマンス測定ほか
- 20190723-2/2後編 Rails 6 rc2がリリース、「MySQLパフォーマンスチューニングTips」が超便利、Aurora Serverlessほか
- 20190722-1/2前編 Rails 6エラー画面の改良点、Dateを四捨五入できるtime_calc、Rackミドルウェアのデザインパターンほか
- 20190717-2/2後編 NFSのよさとは、Linuxカーネル5.2リリース、Puppeteerでメモリリーク検出ほか
- 20190709-2/2後編 strong_password v0.0.7がハイジャックされていた、TerraformとCloudFormation、CSSの設計ミスリストほか
- 20190708-1/2前編 ActiveRecord::FixtureSetがめちゃ強くなってた、MacだとRubyが遅い理由、Puma 4登場ほか
- 20190701 RMagickのメモリ使用量が劇的に改善、インスタンス変数の定義順で速度が変わる?、GitLab CIランナーをローカルで回すほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSなど)です。