やわらかテック

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

卒論の時に作ったアプリケーションのアーキテクチャを考え直してみた

僕は卒論でVB.netを使って「センサーで計測したひずみ値を描画・記録するアプリケーションの作成」を行いました。学部では土木・建築を専攻しましたが、先生が「プログラミングを極めたい」という僕の気持ちを汲んでくれたことを今でも感謝しています。目的…

コードを書かない日があってもいいんじゃないかと思った話

最近のことですが、コードを全く書かない・書こうと思わない日がやってくることに気づきました。 新卒で現職に就いてからこんなことを感じたことはほとんどなかったので、自分でも驚いていますし、本当にショックです。ついに自分にも無気力期間がやってきて…

無名ブロック(anonymous block)によってRuboCopがコケるようになった

2023年3月31日をもってRuby2.7がEOL(EndOfLife)となりました。安らかにお眠りください...🪦 Ruby | endoflife.date 業務でRubyを触り始めたのが、ちょうど2.3~2.7系の時だったので感慨深いものがあります。 Ruby2.7のEOLに伴って、プロダクトのレポジトリ内でR…

技術ブログを始めて5年目に突入して思うこと

はてなブログから素敵なメールが届きました。なんとブログを開設してから早くも4年が経過したそうです。 開設したのは学部を卒業して新卒になる前の2019年3月のこと。 当時の僕は、インターンからアルバイトを経てすでにエンジニアとして業務経験を積…

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

最近は技術書だけではなく、さまざまな書籍を読むようになりました。 今回はヴィクトール・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以降の処理がブロック…

【Ruby】boolean型の値を渡すだけの関数にはキーワード引数を付与してあげよう

ある日のこと。Rubyのコードを読んでいるとboolean型の値が引数となる関数の呼び出し処理を見て「なんじゃこりゃ...」という気持ちになりました。簡単な例を紹介します。 def say_hello(is_morning) if is_morning puts 'おはようございます' else puts 'こ…

母の誕生日にヒエログリフのメッセージを送ったら解読してくれた

僕は毎年、母の誕生日に「知識は力なり」という...思いを込めて何かしらの本をプレゼントしています。 過去には「フランス人は10着しか本を持たない」や「52ヘルツのクジラたち」などジャンルを問わず様々な本をセレクトしてきました。「今年は何にしよう…

「RubyでつくるRuby」を読んだら簡単なRubyインタプリタが作れた

「RubyでつくるRuby ゼロから学ぶなおすプログラミング言語入門」を読了しました。 非常にチャレンジングな本で、なんとRuby初心者の方に向けてRubyを動かすプログラム、つまりRubyインタプリタを作ってみようという本です。「え、そんなのプログラミング初…

【経験者が語る】エンジニア向けはじめての副業の探し方

副業をしてみたいけど、何をしたらいいか分からない 副業に興味があるけど、どこで見つけたらいいか分からない 副業に興味があるけど、自分のレベルでも出来るのか分からない このような悩みを持つエンジニアの方をよく見かけます。 確かに、どうすれば副業…

お題「オタクグッズの処分方法を教えてください」へのミニマリストの回答

お題「オタクグッズの処分方法を教えてください。金額を考えてふと我に返ってるところです。」 面白いお題を見つけたので元グッズ集めアニメオタク、現ミニマリストの自分も「オタクグッズが処分できない!」とお困りの方に自分のグッズ処分経験を書いてみよ…

【Ruby】配列が特定の要素を含むかを判定するならany?ではなくinclude?を使うべし

ある日のこと。Rubyのコードを読んでいると配列の要素が特定の値を含んでいるかどうかの判定にinclude?を使っている箇所とany?を使っている箇所があることに気づきました。 lst = [1,2,3,4,5] puts lst.any?(1) # true puts lst.include?(1) # true たしかに…

【ええな〜コード】作って学ぶRailsのenumの仕組みについて

Railsを使っていて何かと便利なのが「enum」です。 他の言語では列挙型(Enumerable)と呼ばれることがありますが、実態としてはActiveRecordに定義されたenumという関数です。modelファイルの中でカラム値のバリエーションを指定することが出来るのが非常に便…

スプラトゥーン3のER図について考える【キャラクター編】

こちらの記事を見て、自分も別のテーマでやってみたいと思います。 ちょうど同じ任天堂のスプラトゥーン3にドハマりしているので、スプラトゥーン3を題材にやってみます。 qiita.com なかなか、新規にデータベース設計をすることはないので、良い練習になり…

僕のマインドを支える「恩送り」という考え方について

今回は少し照れくさいですが、自分のマインドを支える「恩送り」という考えについて紹介しようと思います。 そもそも「恩送り」という言葉をご存知でしょうか。 この言葉はマイナーな言葉らしいですが、改めて「恩送り」について説明すると、自分が誰かから…

【書評】現場で役立つシステム設計の原則はオブジェクト指向の入門によさげな本だった

Amazonを徘徊していたところ、面白そうな本を見つけました。 現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法作者:増田 亨技術評論社Amazon 目次を見ると、オブジェクト指向の考えとドメイン駆動設計(DDD)を組み合わせて…

アウトプットの達人・伊藤淳一さんは人助けの達人だった

昨日、社内の公開勉強会であるMeets Professionalになんと!あの伊藤淳一さんにご登壇を頂きました。 n2i-engineer.connpass.com MeetsProfessionalとは活躍されているプロフェッショナルな方々をお招きし、これからのキャリア、ビジネス論、仕事の考え方、…

ノンカフェインでも美味しかったオススメのお茶5選

紅茶や緑茶にはもちろん、カフェインが含まれています。 元々はカフェインの含有量なんて気にしたことはなかったのですが、今は彼女と同棲をしており、彼女が生理の日にはカフェインの摂取量に気をつけています。 出来ることなら、一緒にお茶を楽しみたいの…

いつでもどこでも仕事が出来る持ち運びガジェットポーチの中身を大公開

普段は家でリモートワークをしていますが、オフィスに出社したり、実家に帰ったり、外で作業したりと家以外の場所で仕事やPCで作業をすることが割とあったりします。 その度に、家のデスクで使用しているアダプターやケーブルを抜いて、リュックに詰めて...…

4人以上のミーティングってほとんどいらない説

少し前にShopifyのCOO(最高執行責任者)のカズ(Kaz)さんが以下のツイートをされていました。 Meetings are a bug. Today, we shipped a fix to this bug at @Shopify. To start 2023, we're cancelling all Shopify meetings with more than two people. Let'…

関数型言語とはどんな言語なのかChatGPTに聞いてみた

近年、ハードの発展に伴って関数型言語の名前をよく聞くようになりました。 当時、何も知らなかった自分は「バグが出ないコードが書ける」という噂を聞きつけて、elixirというプログラミング言語に出会いました。その後、Haskellの学習を通じて関数型言語と…

大学生の時にプログラミングのアルバイトをして良かったこと・悪かったこと

前回の記事で、大学生でも出来るプログラミングのアルバイトをする方法を紹介しました。 www.okb-shelf.work 本当は合わせて「自分が大学生の時にプログラミングのアルバイトをして良かったこと・悪かったこと」を紹介したかったのですが、記事が長くなりそ…