Baby step - 思考と実験の足跡

日常のちょっとした、気になって試したこと集です。

Rails6.1で追加されたActionMailer DeliveryJobのDeprecatedを解消する

終わってみれば簡単だったけど、検索してもそのままそのものズバリの記事が見つからなかったのでメモ

環境

  • Ruby: 2.7
  • Rails: 6.1.4.4

前提

Rails5.2時代に、以下の記事を参考にActionMailerを独自のActiveJobで動かしていた。

cf. https://www.bigbinary.com/blog/rails-5-2-allows-mailers-to-use-custom-active-job-class

class CustomMailDeliveryJob < ApplicationJob
  queue_as :mailers

  def perform(mailer, mail_method, delivery_method, *args)
    mailer.constantize.public_send(mail_method, *args).send(delivery_method)
  end
end

問題

Rails6.1にアップデートした時、以下のDEPRECATION WARNINGが表示されるようになった。

DEPRECATION WARNING: In Rails 6.2, Action Mailer will pass the mail arguments inside the `:args` keyword argument.
The `perform` method of the CustomMailDeliveryJob needs to change and forward the mail arguments
from the `args` keyword argument.

The `perform` method should now look like:

`def perform(mailer, mail_method, delivery, args:)`

結論

WARNINGに書かれている通り、以下のように変更することで解決した。

-  def perform(mailer, mail_method, delivery_method, *args)
+  def perform(mailer, mail_method, delivery_method, args:)
    mailer.constantize.public_send(mail_method, *args).send(delivery_method)
  end

調査内容

今回のWARNINGは、以下のPRにて追加された。

cf. https://github.com/rails/rails/pull/39277

※ railsリポジトリのPRで「ActionMailer perform deprecated」で検索したら見つかった

まず、performの引数の中身を確認した。 例として、以下の処理がある。

PostMailer.send_mail(1, User.first).deliver_later

この処理を実行した時preformの各引数は以下のようになった。

puts mailer # => PostMailer
puts mail_method # => send_mail
puts delivery_method # => deliver_later
puts args # => [1, #<User>]

*argsargs:に変更しても結果は変わらなかったので、この変更で良さそう。

注意点

public_sendに渡すargsは可変長引数のままにしておくこと。

argsとして渡したら、deliver_laterでメール送信が失敗していた。

【実験レポート:血糖値コントロール37日目】

米を食べない、は悪手かなあ...と思えてきました...。

  • 炭水化物は少量(例えば玄米0.5合)でも血糖値150ぐらいになってしまう
  • 米を抜いて炭水化物を人参・じゃがいもに任せたら、血糖値が140以下に収まった!

という経験が32-33日目にできたので、その生活スタイルを3-4日続けて、迎えた37日目。 お世話になった方と久しぶりにランチする機会があり、外食してきました🌟

外食とはいえ、白米、味噌汁、サバの文化干しと、まあ大丈夫そうなメニュー。 140は超えるだろうけど、いつものように150-170程度だろう...と思って測定したら、この結果...。

f:id:yukke722:20220125155241p:plain
リブレ_220117

265はじぶん史上最高スコアだったので、びっくり。。 ㅤ                   糖質が少ない日が続いてたから、体が糖を求める状態になっちゃってたんでしょうか・・・ ちょっとやばそうに思えてきたので、米を抜く期間は一旦ストップにしました。 ㅤ                   ㅤ                   ちょうど電話診察があったので、先生にしてみたところ、

  • 90-140に収めるのは理想だけど、いまは食後150-170ぐらいになるのは気にしすぎなくてよい
  • 血糖値が仮に140を超えたとしても、2h後から補食をちゃんと取ること
    • 血糖値上昇後、血糖値が下がらないようにするのは副腎の力だが、副腎を使うせいで副腎疲労になってしまう
    • 副腎を使わず血糖値を保つために補食を取る

↑というフィードバックを頂きました。 なので、しばらくは血糖値の上振れを恐れず、逆に下振れすることを警戒する、食生活を送ってみようと思います。

これ、糖質制限ダイエットを過度にやりすぎた人も近い状態になってそうな気がするけど、どうなんだろう...

余談ですが、久しぶりに白米を食べた後の空腹感は結構しんどかったです、、、 血糖値も70ちょいまで下がったし、気味の悪い食欲が湧くし、親族も変に早くなるし、「あーこれが低血糖の初期症状なのかなー」とか思ったりしました。

まあでも、食事内容と血糖値と体感を照らし合わせながら1つずつ実験するしかないので、いい事例が作れたことは良かったです◎

※ 筆者の体験&筆者の症状の場合の話ですので、万人に当てはまることではありません。

【実験レポート:血糖値コントロール生活 32-33日目】

去年の10月頃から栄養療法の通院を始め、去年の12月からフリースタイルリブレを使った血糖値の測定をはじめてました。

血糖値は高すぎても低すぎてもダメで、(諸説ありそうですが目安として)90-140に収まっているといいようです◎ 厄介なのが、食後に血糖値が急上昇する「血糖値スパイク」なるものがありまして、スパイクしないように食事を摂るわけです。

それも、以下のルール付きで。

  1. グルテンフリー、シュガーフリー、カゼインフリー
  2. こまめに食べる(1日3食+補食)
  3. 極力添加物を避ける

3は普段からしてたのでそんなにだったけど、1,2はなかなか大変でした...。 で、スパイクしない食事探しがまた難しく、 ㅤ

・白米(玄米)の量を1.5合→0.5合にしても150を超える ・GI値の低い蕎麦を食べてるのに200を超える(理由解明済

さらには、 ・サツマイモ1-2口で150を超える時がある ・じゃがいも、にんじん、ブロッコリーを2口ずつ食べて150を超える時がある

なんて時もあり、なかなか発狂ものでした・・・

が、ようやく光明が見えてきまして・・・!

1/12(水)

  • 朝:バタースープ200ml、じゃがいも・にんじん2口
  • 昼:冷玄米0.5合、千切りキャベツ&サバ缶
  • 夕:しゃぶしゃぶ(豚肉・ほうれんそう・えのき)、ポン酢少量
  • 夜:リンゴ酢の炭酸割
  • 補食:バタースープ、じゃがいも・にんじん、かぼちゃの種をちびちびと

f:id:yukke722:20220114230643p:plain:w300
リブレ_220112

1/13(木)

  • 朝:バタースープ150ml
  • 昼:千切りキャベツ&サバ缶、にんじん・じゃがいも
  • 夕:(これから)
  • 補食:バタースープ、じゃがいも・にんじんをちびちびと

f:id:yukke722:20220114230728p:plain:w300
リブレ_220113

12/30(木) ※ 参考用

  • 朝:坦々鍋の残り
  • 昼:玄米0.5合、坦々鍋の残り
  • 夕:玄米1合、ステーキ、豚トロ、ケールサラダ、スープ
  • 補食:さつまいも

f:id:yukke722:20220114230802p:plain:w300
リブレ_211230

ええ、米を止めてみました。 野菜を先に食べたら上がりにくいやろ、と思った昨日の昼でも150超えたので、もうええわ!と。 炭水化物は人参とじゃがいもに任せよう!と。

キャベツやほうれん草の量を増やせば、案外おなかは減らないです◎ ちびちび補食もしてるし。 ㅤ                   体の不調も特にないです。 特別良くなった実感もないけど。 (習慣が固まらない生活が続いてるので、その面の辛さはありますが^^)

ただ、血糖値的に良くても栄養的にどうなのか、はとても気になるところ...ここは先生に聞いてみようと思います。

なお、この生活を始めたからか、2ヶ月前から体重が3kg落ちましたw (の割に筋肉量が0.6kgしか落ちてなかったので、いらん脂肪が落ちてそう) 全体的な食事量は減ってるので、今後も体重が減っていきそうな気もしますが...ここも先生に相談しようと思います。

まあ、仮題や改良点はまだまだあるとはいえ、ようやく食生活のベースっぽいものが見えてきたことは、嬉しい! 引き続き、人体実験を続けてみようと思います!

結婚式場下見の流れと準備ポイント

はじめに

前回の記事で、結婚式場の下見先の見つけ方についてまとめました。

優柔不断な欲張りさん向け!下見に行く結婚式場の見つけ方 - Baby step - 思考と実験の足跡

今回の記事では、下見の大まかな流れと準備するポイントについてまとめました。

工程

大まかには以下の4工程です。フェアにも依りますが、所要時間は2-4時間程です。

  1. 入館
  2. アンケート
  3. 施設巡り
  4. 試食会
  5. 見積もり

1. 入館

  • 最寄り駅から会場まで歩く
  • パンフレットをもらう・読む

会場に入る前から、下見は始まっています! 実際に歩いてみて、以下のようなポイントをチェックしましょう。

  • 会場までの近さ
  • 道のわかりやすさ
  • 道の雰囲気(店の種類や人の雰囲気)

建物に到着したら、入口や受付にスタッフがいるので「フェアに来た」と伝えましょう。待合室に案内されます。

テーブルにはパンフレットが置かれていることが多いです。 が、Webに載っているのと重複していることが多かったです。 復習に使いましょう。

2. アンケート

Webで記入した場合でも、当日アンケートを書くケースが多いです。

アンケートには以下のようなことを記入します

  • 連絡先(住所・電話番号・メールアドレス)
  • プロフィール(年齢・出身・家族構成・休日の過ごし方・好きな漫画/映画)
  • 結婚式の予算や人数、時期
  • 見学した他の式場名

準備として、以下のことを考えておくとスムースです。

  • 2人のどちらが式場と電話やメールをするか決めておく
  • 大まかでいいので実施時期を考えておく(今年の冬、など)
  • 他の式場名は暫定上位を1-2件書く
  • 人数と予算の目安を考える

2人のどちらに連絡をしてほしいか、をアンケートに書くのも良いでしょう。

下見の件数は1-2件書けば十分と思います。 書いたことを元に「何が良かったか/気に入らなかったか」をヒアリングされることもあるので、一言用意すると良いでしょう。

3. 施設巡り

  • プランナー紹介
  • チャペルや披露宴会場の紹介
  • ウリになる演習紹介

プランナーさんが登場し、今日の流れの説明があります。

チャペルや披露宴会場、式場に依っては特色になる演出を見せてもらえます。

  • 楽器の生演奏が聞ける
  • オリジナルなウェルカムドリンクのサンプルがもらえる
  • 結婚式の入場シーンを疑似体験できる

書いたプロフィールを元に演出してくれるケースもありました。 好きな映画に「トイ・ストーリー2」と書いたら、ウェルカムドリンク紹介の時にトイ・ストーリー風のカクテルを用意してもらえたのは嬉しかったですね〜

こういった演出はメモしておきましょう! 先の話ですが、演出をたくさん見ておくことで、打ち合わせの時にどんな演出をするか、アイディアの幅が広がります◎

4. 試食会

わたしたちは試食会が一番の楽しみでした笑

当日のコースからスープ(とパン)、メイン、デザートと、3品ほど出てきます。 メインの魚と肉は2人でシェアすることも多かったです。

食事だけでなく、ドリンクの種類やスタッフ・会場の雰囲気もチェックしましょう。

5 見積もり

  • 日取りの確認
  • 見積もりとその説明

ひと通り見学したら、いよいよ見積もりです。

まずは候補日を調整します。 希望した時期を元に、会場が空いている日を案内されます。

この時点では確定ではないので、とりあえず選べばOKです。 ※ 取り置きでもないので、埋まってしまうこともあります。

見積もり内容についても説明があります。 たぶん、初めて聞いたら(相場も含めて)わからないことだらけだと思います。

わからない点は、遠慮なく質問しましょう!

おわりに

流れとポイントを準備して、ぜひ下見を楽しんでください!

優柔不断な欲張りさん向け!下見に行く結婚式場の見つけ方

はじめに

昨年の12月に結婚式を挙げました。

結婚式を家族婚に切り替えてよかったこと - Baby step - 思考と実験の足跡

結婚式にまつわる思い出で最も楽しかったことの1つが「下見」です。 いや〜本当に楽しかった!

とはいえ、最初の下見に行くまでは不安でした。

  • 「高い買い物だし、下見に行ったら営業されるのでは?」
  • 「サイトごとにキャンペーンもあるようだし、どう進めるのがお得なの?」

そういった心配がありました。。

そんな不安を解消すべく、下見に行く結婚式の見つけ方のプランをご紹介します! かつての自分たちのように、どうやって式場探しを進めたら良いかわからない方々の参考になれば幸いです。

式場探しの楽しみポイント

  1. 普段入れない場所に行けて発見がある
  2. 基本的に綺麗な場所で気持ちが高まる
  3. おいしいごはんが食べられる

これらのことにポジティブな方々に、結婚式場の下見はおすすめです!

下見が向いていない人

  1. 下見の2-4時間拘束されるのが嫌
  2. 一切営業を受けたくない
  3. 明確に挙げたい式場が決まっている

ある程度の時間は拘束されるため、楽しいと思えない方々には苦痛かもしれません。

わたしが行った中では強引な営業を受けたことはありませんでした。 「当日契約特典」など、遠回しな営業はありましたが、当初不安ほどではなかったですよ。

結婚式場の見つけ方

媒体

王道の以下3サイトを利用しました。

1. 見つける

  1. みんなのウェディングで口コミを眺める
  2. 気になった式場をExcelなどに記入する

口コミランキングで並び替えできる みんなのウェディング を最初に見るのがおすすめです。

  • 料理の評価が高い順
  • 費用の評価が高い順

の2つで並び替えをすると、価格帯や会場ジャンルの異なる式場を、少ない操作で幅広いチェックできます。

候補を増やすため最初は絞り込みせずに調べるのがおすすめですが、もし絶対に譲れない条件がある場合は検索条件に含めましょう。

Excelにまとめる際には、どういったポイントが気になったか、をまとめるとよいです◎

  • 最寄り駅やアクセス
  • 雰囲気
  • 料理
  • 予算

などなど、リストを埋めることで自分たちがどういったポイントを重視しているかが見えるようになります。

2. 絞る

10-15件ほどリストアップできたら、実際に下見に行く式場を選びましょう。

最初に行くのは「予算を超えているが気になっている式場」がオススメです! 理由としては、

  1. 初回の下見で良い時間を過ごせる可能性が高い
  2. 営業された時に「予算が超えていた」と断りやすい
  3. 予算をかけた場合のクオリティの基準ができる

からです。

口コミランキング上位&予算が高いお店であれば、会場の雰囲気やスタッフの応対、試食会での食事もレベルが高いはずです。 そういった式場を最初に行くことで、初回の不安も減りますし、結婚式や下見に対してポジティブなイメージが持てます◎

価格とクオリティの軸を作っておくのも大切です。 軸を作っておくことで、「見積もりは安かったけど最終的な金額が高くなった」を防ぎやすくなります。

先の話ですが、契約後に衣装や料理、装飾を決める際にランクアップの提案を受けます。 その際に高品質の体験がないと「どこまでランクアップしていいかわからない」状態になります。

ぜひ下見のうちに、高品質の体験をしておきましょう!

3. 申し込む

流れで申し込む、にはもったいないです! サイトによっては、下見に行くことでキャッシュバックをもらえます。 ぜひ活用しましょう!

  1. 媒体ごとのキャンペーン内容をチェックする
  2. どのサイトで何件行けたら理想か、を考える
  3. リストに載せた式場が、どの媒体に載っているかをチェックする
  4. どの媒体でどの式場に申し込みをするか、決める

↑が大まかな流れです!

おわりに

結婚式の下見に申し込みするまでの流れをご紹介しました。 自分たちに合うように、アレンジして使ってもらえたら幸いです。

下見の時間も楽しんでくださいね!

結婚式を家族婚に切り替えてよかったこと

背景

昨年の12月に家族だけで結婚式を挙げました。 契約時には70人ほど招待する予定でしたがコロナ騒動もあり、キャンセルも選択肢に含めて考えた末、家族婚にしました。

自分が家族婚に参列したことがないため後ろ向きな気持ちもありましたが、最終的には家族婚にしてよかったと思っています!

この記事では、家族婚の良かったポイントを紹介します。

「ご時世的に招待しにくいし、結婚式を挙げるかどうしよう...」

と迷っている方の参考に少しでもなれば幸いです。

家族婚にして良かったポイント

準備から結婚式までを思い返して、特に良かったポイントが以下の3点です。

  • 社会情勢による不安が減った
  • 気楽に当日を楽しめた
  • お互いの家族と長く時間を作れる

社会情勢による不安が減った

  • 開催するか否かなど、招待する方々一人ひとりに連絡&応対する必要がある
  • 招待しても、当日急にキャンセルになるリスクがある
  • 式を中止する場合、遠方の招待客は移動費や宿泊代がキャンセルできない可能性がある

家族婚にすることで調整先が減り、こういったリスクを気にせずに済みました。

「開催ができなくなっても、招待者が両家の家族だけのため調整先が少ない。」

そう思えることで、当日までの心労が大きく減りました。

気楽に当日を楽しめた

相手の家族はいるものの、参加者は全員身内です。

「大勢の前で失敗しないように...」などと変に不安を持つこと無く、1つ1つのコンテンツを楽しむことができました。

お互いの家族と長く時間を作れる

これが一番の発見でした。

「普通の結婚式だと、我々は隅に座ってるじゃないですか」

親同士が話しておりなるほどと思いましたが、ゲストがいる場合は家族もお招きする側です。 家族婚にすることで、家族の負担も減っていたようです。

身内だけということもあり、披露宴中の時間をある程度好きにできるのも良かったです。 わたしのケースでは、家族による写真撮影大会が始まりました笑

家族婚は家族を主役にできる機会です。

お色直しの最中に、親同士、兄弟同士が楽しそうに話している姿を見ていて、開催して本当に良かったなあ、と感じましたね...。

残念だったポイント

良かったポイントとのトレードオフですが、残念なポイントもありました。

たまにしか会えない友人と会う機会が減る

地元や遠方の友達と数年ぶりの再会を楽しみにしていましたが、その機会が無くなりました。 SNSで結婚報告をして、お祝いはしてもらえるのですが、結婚式の場でお祝いしてもらいたかったなあ、という気持ちはあります。

まとめ

お互いの家族も「いい結婚式だった」と度々言っており、聞くたびに嬉しく思います。 想像以上の結婚式だったので、家族婚もアリですよ!

eslintでmax-lenが指摘されたときに試すこと

eslintとは?

  • JavaScriptの静的解析ツール
  • コードを実行する前にスタイルの統一やバグの発見ができる
  • 検証ルールのカスタマイズや多くのビルドツール・プラグインとの連携が可能

cf.

eslint max-lenとは?

  • 可読性を上げるためのルール
  • 1行に指定した文字数以上書かれている箇所を指摘する

解消事例

1. Vue.jsのcomputedテストをjestで書く時

const subject = ((longArgumentFirst, longArgumentSecond) => ComponentName.computed.longComputedName.call({ longArgumentFirst, longArgumentSecond }));

// こんな感じで使う
// longArgumentFirst = true;
// longArgumentSecond = true;
// expect(subject(longArgumentFirst, longArgumentSecond)).toBeTruthy();

=代入時に丸括弧を使う

const subject = (
  (longArgumentFirst, longArgumentSecond) => ComponentName.computed.longComputedName.call({ longArgumentFirst, longArgumentSecond })
);

AirbnbのJavaScript スタイルガイド では以下のように書かれています。

代入で=の前後に改行を入れない。あなたの代入がmax-lenに違反している場合は、値を丸括弧()で囲むこと。 eslint operator-linebreak

// bad
const foo =
  superLongLongLongLongLongLongLongLongFunctionName();

// good
const foo = (
  superLongLongLongLongLongLongLongLongFunctionName()
);

オブジェクトの中括弧に改行を入れる

const subject = ((longArgumentFirst, longArgumentSecond) => ComponentName.computed.longComputedName.call({
  longArgumentFirst, longArgumentSecond 
}));

ここに改行を入れるのはOKのようです。 先程のと合わせ技も使えます。

const subject = (
  (longArgumentFirst, longArgumentSecond) => ComponentName.computed.longComputedName.call({
    longArgumentFirst, longArgumentSecond
  })
);

eslint-disableを使う

// eslint-disable-next-line max-len
const subject = ((longArgumentFirst, longArgumentSecond) => ComponentName.computed.longComputedName.call({ longArgumentFirst, longArgumentSecond }));

最後の手段。 警告は表示されなくなるが、ルールを無効化しただけなので、できれば避けたい...。

2. importが長い時

import LongLongModuleName from '@/LongLongLongLongLongLongLongLongLongLongPath.vue';

importのときのみmax-lenルールを除外する

'max-len': [
        2,
        80,
        4,
        {
            ignoreUrls: true,
            ignorePattern: /^import\s.+\sfrom\s.+;$/
        }
    ],

cf. javascript - Issues with ESLint "max-len" ignore pattern - Stack Overflow

終わりに

直近ハマったケースへの対策をまとめてみました。