やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

Ruby3.4で追加されるブロックパラメーター"it"について

先週、届いたRuby Weeklyに面白そうなトピックが紹介されていました。

Ruby 3.4 Will Have 'it'
— There’s never been any doubt: Ruby has it. But now as well as the ‘it’ factor,
it really will have it. Confused? it is a nicer looking shortcut to the first parameter in a block (a la _1) – e.g. arr.each { puts it }.
Ruby 3.3 will warn on it with 3.4 (due in a year’s time) getting the real deal.
TAKASHI KOKUBUN

Re-reconsider numbered parameters: it as a default block parameter

ふむふむ...。
要するにRuby3.4系では、ブロック構文のデフォルトパラメーターにitが設定されてブロック引数をしてしなくても要素の参照が可能になるということです。

# 3.4系だとOK
[1,2,3].each do 
  puts it
end
続きを読む

データベースにおけるJSON型のカラムの使い所

最近、データベースのテーブル設計を担当したり、既存のテーブル設計を見ることが多いです。
テーブルの設計書を見てみるとJSON型が指定されているカラムが目につくことがあります。既存のテーブルでもJSON型が使われている箇所がありました。
json型を使うな!」というわけではありませんが、前から何度も言っているように設計やアーキテクチャというのは常にトレードオフです。JSON型のカラムについても同様にメリット・デメリットがあります。
今回はRDBにおいてJSON型を使っても良いケース、避けるべきケースについて個人的な所感を書いてみたいと思います。なお、今回の内容はSQLアンチパターンでも紹介されている「ジェイウォーク(信号無視)」を参考にしています。

SQLアンチパターン

SQLアンチパターン

Amazon

とても良い書籍なので、データベースを触る人は一度は読んでおいて損はありません。

  • RDBの強み
  • JSON型のデメリット
    • 外部キー制約が設定できない
    • SQLが複雑になる
    • インデックスが効かないケースが多い
  • JSON型のメリット
    • 外部テーブルを定義しなくて良い
    • 検索・更新しないデータ
  • まとめ
続きを読む

HonoのNode.jsランタイムにマージされた神PRを見てみる

先日、Twitterにて素晴らしいツイートを見かけました。

このツイートはHono製作者のYusuke Wadaさんのもので、どうやらNode.jsランタイム上でHonoのパフォーマンスがめちゃくちゃ改善されたとのこと。この対応はTaku Amanoさんという方が行われたそうで、神PRと称賛されていました。

現在、世界中で注目されているOSSのHonoに取り込まれた神PRとは、一体、どのような内容なのでしょうか。
気になってしょうがないので実際に神PRの内容を見てみたいと思います。Hono全体のアーキテクチャやWEBフレームワークの作りに詳しいわけではないので、理解できる情報に限界はありますが、チャレンジしてみます。

対応についての全体像はPRを出されたTaku Amanoさんが解説されていました。

ふむふむ...。
このツイートを頼りにRequestとResponse周りを中心に見ていきたいと思います。

続きを読む

エアコンの分解洗浄をして内部の汚さに衝撃を受けた

ある日のこと、ポストに「エアコンの分解洗浄しませんか?」という旨のチラシが入っていました。
今までこういったチラシが入っていたことはなくて、どうもエリアを移動しながら洗浄を行なっているようで、今回、たまたま自分の住んでいる場所が洗浄エリアになったようです。
エアコンの掃除はフィルターを夏と冬、エアコン初稼働の前に簡単に掃除するぐらいで、内部の洗浄までは行なったことがありません。 ただ吹き出し口から内部を覗いてみると、黒くなったホコリが気になります。
とはいえ、手が届かない上に賃貸に付属しているエアコンなので、壊してしまったらどうしよう...と思うと怖くてエアコン内部の洗浄には手が出ませんでした。

そんな感じで、元から「エアコン内部の洗浄をしたいなぁ..」と思っていたので、エアコン分解洗浄をお願いすることにしました。

続きを読む

中間テーブルへのデータ更新(削除・追加)を効率的に行う方法

以下のようなテーブルがあったとします。
ユーザーは記事(posts)に対して、自由にタグ(tags)を設定することが可能です。
記事とタグは多対多の関係にあるため、中間テーブル(post_tags)にて記事へ設定したタグの一覧を管理しています。

仕様上、ユーザーは記事に設定したタグを自由に付け外しできます。
既存のある記事にタグA・Bが設定されている状態で、新たにユーザーがタグBを外して、タグCを設定したとします。最終的に中間テーブルには記事とタグA・Cが紐付くデータが残ります。 この場合、中間テーブルのデータ更新のアプローチには大きく2つのアイディアが考えられます。

続きを読む