進捗

主にRubyを使用してます。

activerecord-importにおけるcallback

仕事でactiverecord-importを使ったバッチの高速化を行っていました。

するとなぜかDBとの不整合が起きてしまう。

デバッグしながら原因を追っていったところ、なんとbefore_saveが上手く機能してませんでした。

GitHubのcallbacksの章を読むとしっかりと書いてありましたね。
github.com

なので、対応をして無事ことなきを終えました。

ドキュメントちゃんと読んでねというのはそうなんですが、
そもそもcallbackがあったことに気づけなかったので、
マジでcallback書くのやめてほしいと思った次第でした。

メタプログラミングRuby(第2版)を読みました。

3年目にしてようやく読むことができました。

私が読んだ技術書の中でも1, 2位くらいには
勉強になった本でした。

Ruby で扱える全ての値はオブジェクトです」
引用:
オブジェクト (Ruby 3.1 リファレンスマニュアル)

という一文の意味がこの本を読んだことでよくわかりました。
gemのコードリーディングでつまづくポイントの理解を理解するための方法(というかgemに使われているRubyの記法)が大体この本に載っていました。

Rubyを使って1,2年くらい業務をされている方には本当におすすめです!
逆に始めたばかりの方には、「書いてあることはわかるが、、どこに使うの??」となってしまうかもしれません。


Amazon.co.jp - メタプログラミングRuby 第2版 | Paolo Perrotta, 角 征典 |本 | 通販

ActiveRecord::Persistence::ClassMethods#upsert_allのオプションについて

バッチ処理の高速化に取り組んでいます。
そこで、あるテーブルに対して一括insert、ユニークキーが重複していればupdateという処理を行いたいと考えました。

まずは、Ruby on Rails 6.0から導入された
ActiveRecord::Persistence::ClassMethods#upsert_all

このメソッドで一括処理を実施したのですが、なぜか`Duplicate entry 'x×' for key`が出てしまう。。

ドキュメントをよく見てみると、ユニークキーを指定するオプションのところにしっかりと書かれていました、、

:unique_by
(PostgreSQL and SQLite only)


担当していたシステムはMySQLを使用していたので、当然このオプションは使えません。

なので、activerecord-import
というgemを使用し、一括処理を実施できるようにしました。


ドキュメントはちゃんと読みます。。

OSS Gateワークショップに参加しました。

タイトルの通りで、OSS Gateワークショップに参加しました!



oss-gate.github.io


私は初めての参加だったので、ビギナーとして参加しました。

このようなハンズオンでの勉強会に参加するのは初めてだったので、とても緊張しましたが、サポーターの方々がつきっきりでとても丁寧に教えてくださいました!

コミットするOSSを決める。→issueを立てる。→PRを立てる。
と最後まで行うこともできました!

実際に立てたPRが以下。(無事、後日Mergeされました。)
github.com



今までは、OSSへコミットしてみたいと思っていたものの、
「効果的な提案をしないといけないのではないか?」
「バグを見つけないといけないのではないか?」
という不安があり、中々issueやPRを立てることができずにいました。

しかし、今回のワークショップを通じて、
普段OSSにコミットしている方々がどんなことに着目して、issueやPRを立てているかがわかり、
「自分でも意外とコミットするチャンスはあるかもしれない。」という気持ちになりました!


OSSへのコミットに興味はあるが、一歩踏み出せないという方は一度参加してみると
とても勉強になると思います!

自分もこっからどんどんOSSに貢献していきたいとおもいます!

Webサーバーを自作してみました

シンプルなWebサーバーを作成しました。



制作物を載せようと思ったのですが、勉強用のプライベートリポジトリ内のディレクトリにpushしていたことに8割方終わっている頃に気づきまして、、

おいおい公開できるように移動させようと思っています、、、


下記の記事を参考にRubyで実装しています。


「伸び悩んでいる3年目Webエンジニアのための、Python Webアプリケーション自作入門」
zenn.dev




とても丁寧な説明で、わかりやすく私のような新米エンジニアでも理解しやすかったです。

また、リファクタリングの方法にも触れてあり、とても実践的な内容になってました。
Chapter16のリファクタリングのとことか「なるほど!」となりました。実務でも使えそうですね、、


Webサーバーってなんぞや?って思っている方や、Webサーバー作ってみたい!と思っている人にこの記事はかなりおすすめです!!

AWS SAAに合格しました〜

タイトルにある通りAWS SAAに合格できました。
思ったよりギリギリでした。。。

f:id:masato-kato0604:20220120175442p:plain

取り組んだのは下記のWEB問題集です。
合格するためなら正直これだけで十分です!

SAA | AWS WEB問題集で学習しよう

今年中にはAsociate3冠したいですね、、