2023-03-01から1ヶ月間の記事一覧

「夜と霧」を読んで「人はなぜ生きるのか」には答えがないことが分かった

最近は技術書だけではなく、さまざまな書籍を読むようになりました。 今回はヴィクトール・E・フランクル著の「夜と霧」を読みました。今更、自分が紹介するまでもなく名著して語り継がれている書籍です。著者のフランクルが第二次世界大戦渦にて、ユダヤ人…

mastdonからServiceクラスの作り方を学ぶ

みなさんはRailsの開発にて、サービスクラス(ServiceObject)を使っているでしょうか。 モデルやコントローラーがファットになるのを防ぐために導入される設計方法で、ドメイン知識におけるサービス(eg: 商品の購入処理)の一連の処理をまとめたクラスを作成す…

トランザクションがあれば安心ではないのでRailsでもロックをかけたい

Railsでトランザクションを扱いたい時はActiveRecordに実装されたtransactionメソッドを呼び出します。 ActiveRecord::Base::transaction do : end 今までRailsでトランザクションのブロックを宣言した時は、他のトランザクションからデータの取得、更新は出…

ミヒャイル・エンデ作のモモは現代の大人こそ読むべき本だった

昨日、ミヒャイル・エンデ作の「モモ」という書籍を読了しました。 この本は児童文学として書かれているので、普段の自分とは縁もゆかりもない書籍です。一週間前にアップロードされたアバタローさんの解説動画を見て「何だこの本は...面白そう」と思い、い…

Railsのマイグレーションファイルでt.stringを使うときはlimitを指定してほしい

Railsではマイグレーションファイルを作成してマイグレートを実行することで、テーブルが作成されます。 非常に便利で手軽にテーブルの定義・作成ができるのですが、マイグレートされた結果、どのような型が選択されるのかが隠蔽化されるという問題があると…

【書評】単体テストの考え方 / 使い方 を読了しました

2022/12/28に「Manning Publishing: Unit Testing Principles, Practices, and Patterns」の翻訳書である「単体テストの考え方/使い方」という書籍が発売されました。買うか迷っていたのですが、TDD(テスト駆動開発)で有名なt_wadaさんがツイートされている…

小さな声で話し出すことがリモートワークのミーティングを加速させた

日々のリモートワークでミーティングをしていると、相手と同時のタイミングで話し始めてしまうことがよくあります。特に自分から話を振ってから、返答を待ってる間に何かを追加で自分が話し出した時なんかひどいもので、せっかく相手が話しだしてくれたのに…

中間テーブルには複合インデックスと単一インデックスどちらを作成すれば良いのか

データベースの設計において正規化の結果、中間テーブルを作ることがよくあると思います。 以下のようなテーブル群があったとします。登録されたユーザーと登録された商品を誰が出品した商品なのかを中間テーブルへ記録しています。 users products user_pro…

Rubyで巨大な配列を扱う時はEnumeratorを使うのが良さそう

先日、Rubyで巨大な配列(Array)を扱うことがありました。 気になるのは巨大な配列を宣言したときのメモリ使用量です。試しに、要素数が10,000個の配列を宣言してみると89,712Byteほどメモリを使用していることが分かります。 require 'objspace' # memsize_o…

オレオレRspecを自作して覚えるRubyのブロック引数について

Rubyのブロック引数についてご存じでしょうか。 非常に便利な機能で皆さんもよく使っている、正確にはブロック引数に対してブロックを渡していますが、ブロック引数を定義する機会がほとんどない方も多いでしょう。 例: eachの場合 # do以降の処理がブロック…