u16suzuの blog

日々学んだことのメモブログです。

Ruby東海のアイコンを作成しました

Ruby東海のアイコンを作成しました。スタメンの同僚デザイナーのかすみんさん ( @KasumiMorita ) に作ってもらいました。 Ruby + 招き猫のイメージでリクエストしてみました。 この招き猫のデザインには、初心者でもベテランでもプログラミングが好きな方、 興味がある方、楽しんでいる方にRuby東海にぜ足を運んでみてほしいという意図が込められています。 ほぼ毎月開催されているので、皆様興味がありましたらぜひご参加ください!

株式会社スタメンに入社しました

7月1日からスタメンでRailsエンジニアとしてお仕事をしています。

今は、コードベースをキャッチアップしながら、ユーザ様からのお問い合わせ対応、込み入った既存バグの調査と修正、ジュニアなRailsエンジニアのサポート、他エンジニアからのバックエンド困り事相談役をやっています。

2020年4月から約5年間、家からフルリモートで勤務をしていましたが、 ずっと家の中にいることやリモートでのコミュニケーションのみでやる仕事に限界を感じていました。 出社して開発する文化のある名古屋のスタートアップでRDBRailsが使える会社さんを探したところ、スタメンが見つかり運よくご縁があった次第です。

入社してまだ3週間ですが、みなさん優しくて話しやすいので、仕事がしやすいです。 すぐ会話できる、相談できる環境が自分としては一番パフォーマンスが出るので、とても合っている環境だと思っています。 iOSエンジニアの方から相談され、隣で一緒にサーバログを見ながら調査し、課題の解決まで持っていけた時はとても盛り上がりました。嬉しかったです。

オフィスも新しくて綺麗で何よりもデザインをとても気に入っています。 高架下にあるため通過音がしますが、耳栓、ノイキャンヘッドフォンがあれば気になりません。

入社して1ヶ月は出社前提ですが、それ以降はハイブリッド出社になります。 月水金に出社で、火木はリモート勤務可です。 とはいえ、自分はオフィスの方がパフォーマンスが上がるため、家族関連で緊急のことがない限りは出社しようと思います。

子供が小学校2年生になりました。そろそろ手が掛からなくなってきたので、徐々に仕事、プログラミング、コミュニティへのコミットを増やしていこうと思っています。

頑張っていきますので、コミュニティ活動の場でお会いした際にはどうぞよろしくお願いいたします。

弊社では引き続きRailsエンジニアの採用を行なっております。 気になる方はカジュアル面談にお繋ぎしますのでぜひお声がけください。

recruit.stmn.co.jp

Vueの開発ツールについて

Vue の開発ツールの今昔について本で読んだのでまとめておきます。

Vue CLI

古いほう。内部的には Webpack を使って実行可能ファイルに変換している。 この変換処理のパフォーマンスが悪く問題になっていた。

Vite (ヴィートと発音)

フランス語ではやいという意味。 新しい方。基本的にこっちを使う。 ECMAScript のモジュール機能を使うことで実行ファイルの生成を高速化した。 Vue3 からデフォルトに組み込まれるようになった。 この Vite ベースなのが「create-vue」。

Mongoid gem の test の実行方法

ソースはこちら : https://github.com/mongodb/mongoid/tree/master/spec#running-mongoid-tests

$ git clone git@github.com:mongodb/mongoid.git

$ cd mongoid
$ git submodule init
$ git submodule update

# MongoDB を起動する
# 起動に失敗する場合は /tmp/mdb を作り直すとよい
$ mkdir /tmp/mdb
$ mongod --dbpath /tmp/mdb

# MongoDBが起動してるかチェック
$ ps aux | grep mongo
u16suzu          30089   0.1  0.5 411874576  76624 s000  S+    7:06PM   0:00.94 mongod --dbpath /tmp/mdb

# testを実行する. 以下で全てのテストが走る
# 失敗するときは bundle update を実行すればok
$ rake

# テスト単体を実行したい場合は以下でOK
$ be rspec ./spec/mongoid/association/macros_spec.rb:186
# MongoDBが too many open file エラーで死ぬ場合がある
$ ulimit -n 10000

mongoid の any_of と or の違い

any_of は、前の条件をそのまま残して、その後に or 条件で挿入してくれる。 or は、前の条件も全部ひっくるめた or 条件を生成する。

コード例

実験したバージョン

[57] pry(main)> Mongoid::VERSION
=> "7.3.5"
> User.where(age: 33).any_of({name: "hoge"}, {tel: "123"}).selector
=> {"age"=>33, "$or"=>[{"n"=>"hoge"}, {"t"=>"123"}]}

> User.where(age: 33).or({name: "hoge"}, {tel: "123"}).selector
=> {"$or"=>[{"age"=>33}, {"n"=>"hoge"}, {"t"=>"123"}]}

ドキュメントより

  • any_of

    Adds a disjunction of the arguments as an additional constraint to the criteria already existing in the receiver.

レシーバにすでに存在する criteria に、追加の制約 として引数の論理和を追加します。

  • or

    Creates a disjunction using $or from the existing criteria in the receiver and the provided arguments. This behavior (receiver becoming one of the disjunction operands) matches ActiveRecord's or behavior. Use any_of to add a disjunction of the arguments as an additional constraint to the criteria already existing in the receiver.

$or を使用して、レシーバ側の既存の criteria と指定された引数から論理和を作成します。 この動作 (レシーバーが論理和オペランドの 1 つになる) は、ActiveRecord の or の挙動と一致します。 レシーバ側にすでに存在する条件に対する追加の制約として引数の論理和を追加したい場合は any_of を使います。

mongoid の any_of と or の違い

any_of は、前の条件をそのまま残して、その後に or 条件で挿入してくれる。 or は、前の条件も全部ひっくるめた or 条件を生成する。

[54] pry(main)> User.where(age: 33).any_of( {name: "hoge"}  ,  {tel: "123"} )
=> #<Mongoid::Criteria
  selector: {"age"=>33, "$or"=>[{"n"=>"hoge"}, {"t"=>"123"}]}
  options:  {}
  class:    User
  embedded: false>

[55] pry(main)> User.where(age: 33).or( {name: "hoge"}  ,  {tel: "123"} )
=> #<Mongoid::Criteria
  selector: {"$or"=>[{"age"=>33}, {"n"=>"hoge"}, {"t"=>"123"}]}
  options:  {}
  class:    User
  embedded: false>

ドキュメントより

  • any_of

    Adds a disjunction of the arguments as an additional constraint to the criteria already existing in the receiver. レシーバにすでに存在する criteria に、追加の制約 として引数の論理和を追加します。

  • or Creates a disjunction using $or from the existing criteria in the receiver and the provided arguments. This behavior (receiver becoming one of the disjunction operands) matches ActiveRecord's or behavior. Use any_of to add a disjunction of the arguments as an additional constraint to the criteria already existing in the receiver.
    $or を使用して、レシーバ側の既存の criteria と指定された引数から論理和を作成します。 この動作 (レシーバーが論理和オペランドの 1 つになる) は、ActiveRecord の or の挙動と一致します。 レシーバ側にすでに存在する条件に対する追加の制約として引数の論理和を追加したい場合は any_of を使います。