日頃の行い

個人的な日頃の行いをつらつら書いてます\\\\ ٩( 'ω' )و ////

数年前、突発性難聴にかかった時の話

この記事は難聴Advent Calendar 2022の14日の記事です。
なんか会社のチームメイトが作ったので昔自分が突発性難聴になったときの話を備忘録的に書こうかなと思いました。
adventar.org

もし今耳の調子が悪くてまだ病院行っていない人がこの記事を見ている場合、まずこのブラウザで近くの耳鼻科をググり、いち早く受診しましょう。
何もなかったらそれはそれで良かったという話なので、違和感がある場合、まず受診して突発性難聴でないことを確認しましょう。

参考 nlab.itmedia.co.jp

発症時の思い出

時は2017年1月15日片耳の聞こえ方がおかしいことに気づく、

次の日、起きたら問題なく聞こえるようになっていた。
しかし、そのまた2日後の18日の朝おかしいと感じたため、すぐ行きつけの耳鼻科に行きました。
そして無事(?)突発性難聴と診断されました。\(^o^)/

病院の思い出 ~ 音を顔で感じる聴力検査 ~

とりあえず家の近くの行きつけの耳鼻科に向かったところ、聴力検査をしてもらいました。
あー健康診断でやってるやつねって思ったけど、それの5倍くらい長めの検査でした。
これやってから健康診断のやつ本当に軽めなんだなってなりました。
また、健康診断でやってるやつの後に骨伝導版(なのかな?)の検査も行いました。
聞こえない方はまじで聞こえなくて、骨伝導版のとき、一生聞こえないなと思ったら振動がやばくて顔がブルブル震えて気がついたのを覚えています。

薬の思い出 ~ ゼリーは不味い ~

そのまま検査が終わり、結果のグラフで明らかに片耳が聞こえていないことがわかる様子を見せてもらいました。
そして突発性難聴と診断され、薬を確か一ヶ月分ほど処方されました。
この日は平日だったので、とりあえず薬をもらってそのまま出社しよ〜とか思ってたんですが、ゼリーの薬が大量すぎて持てるわけ無いやろみたいな量来たため、やむなく帰ったのを覚えています。
もしかしたらゼリーが処方されるんだ、ええやんとか思うかもしれませんがめっちゃまずくて最悪でした。

ゼリーが美味しすぎて()泣いてる様子

その後約1ヶ月間の生活の思い出

耳鳴りと睡眠

結構しんどかったのが耳鳴りの症状でした。
なんかクーラーの音とかがなんか音楽に聞こえたりとかして一生気になり続けたり、
耳の内部の方で冷蔵庫とかのじーーーーーって音が一生してて眠れず気が狂いそうでした。
当時知らなかったのですが、音楽に聞こえるというのは「音楽幻聴」という症状があるみたいですね。

アルコール

薬を飲んでいるので基本的にアルコールは飲まないようにしてました。
飲まないように・・・してたんですけど・・・最終的にはビールの誘惑に負けました・・・

運動

振り返ってみて運動大丈夫なんか?って思ったけどバスケの大会に出たらしいです。

今ググって見ると気圧の変化とかで耳に負担がかかるようなやつはやめといた方が良さそうだけど、完全に運動禁止ってほどではなさそうなので安心しました。
気になる人はお医者さんに聞いてみましょう。

完治

1ヶ月ほどたった後、病院に行ったところ聴力が回復していることがわかり、どうにか治ったようでした。
周りには、病院に行くのが遅れたことでまだ治っていない友人もいるので、運がよかったなと思います。
まじでスピードが命みたいなので、もし何か耳に違和感がある場合は、全てを投げ出して病院に行きましょう。

食べ物からふるさと納税まで2022年買ってよかったもの振り返り

今年結構色々買ったなぁと思ったので何買ったかを振り返って、
来年も買いたい物は買おうという気持ちから振り返ることにしました。

せっかくなのでアドベントカレンダーにしました。
adventar.org

食べ物たち

ベースブレッド

チョコレート味ならレンチンすると普通に食べれるなって感じなので朝食べるのに良かった。
中に入ってる脱酸素剤を取り除いて500Wのレンジで20秒とかなので、レンチンも簡単。

Amazon | BASE BREAD ベースブレッド チョコレート 完全食 完全栄養食 食物繊維 16袋セット | ベースフード | パン 通販

小粒のみかん

甘くて美味しいので既に3回ほどリピートしてる。
とりあえずなんか小腹空いたら食べれてしまうのでとても便利。(だが太る)

Amazon | みかん 訳あり 8kg 小粒 S 2S 3S サイズ混合 和歌山県産 有田 伊藤農園 柑橘 甘い 家庭用 小玉 御歳暮 みかん 減農薬 ノーワックス | 伊藤農園 | みかん・柑橘類 通販

チリトマトの低糖質版

普通のチリトマトと違いを自分は感じ取れないほどに美味しいのでおすすめ。
昼飯めんどくさいときにとりあえず食べれるので良い。

Amazon | 日清食品 カップヌードルPRO 高たんぱく&低糖質 チリトマトヌードル [1日分の食物繊維入り] 79g×12個 | カップヌードル | ラーメン 通販

ブタメンカレー

カレー味美味しい。ちょっと小腹が空いたときに食べるように箱買いしてる。

Amazon | おやつカンパニー カップブタメンカレー 37g×15個 | ブタメン | 食品・飲料・お酒 通販

ラベルレスの炭酸水

ウイスキーを割るのに使ったり、家で酒を飲むのを減らそうと炭酸水を買ったやつ。
間違いなく酒の量が減ったので良かった。
Amazon | [Amazon限定ブランド] アサヒ飲料 MS+B ウィルキンソン タンサン ラベルレスボトル 500ml×24本 [炭酸水] | MS+B(エムエスプラスビー) | 炭酸水 通販

ウイスキー碧 Ao

今年の初めにウイスキーに目覚めて炭酸で割ってハイボールで飲んでる。
飲みやすくて好きなので一生リピートしてる。
Amazon.co.jp: サントリー ワールド ウイスキー 碧 Ao [日本 ウイスキー 700ml お酒] : 食品・飲料・お酒

アスパラガス「さぬきのめざめ」

香川県ふるさと納税でアスパラやったらすごい良くてAmazonでも見つけて買ったやつ。
Amazon | アスパラガス「さぬきのめざめ」1kgセット | 網元大将 | アスパラガス 通販

むきえび ブラックタイガー

よく奥さんの料理にえびが出るのでなんか良い感じのやつを買ってみようって買った。
Amazon | ますよね ブラックタイガー使用!特大 むきえび 1kg (背ワタなし 海老 エビ)【巣ごもり応援】 | 越前かに問屋ますよね | エビ 通販

福岡有明のりのボトルのり

ここの塩のりボトルと味のりボトルが美味しくてよかった。
初めはボトル3本セットで買って試した後に、味のりと塩のりをまとめて買ってる。
白米と一緒に食べることが多かったので焼のりは他に比べたら別にという感じになってしまった。

nori.fukuoka-ariake.com

日用品というかガジェットというかみたいな物

腹巻き

お腹の冷え対策をしたくて買ってみたやつ。
寝るときにお腹出してても大丈夫(そういう問題じゃない)なので便利。
外が寒い時もたまに着てる。

Amazon | [グンゼ] 腹巻 Haramaki 体にフィット ストレッチ 男女兼用 MK1001 チャコールグレー 日本F (FREEサイズ) | インナーウェア 通販

ワイヤレス充電器

iPhoneSE使ってて机の上とベッドの横らへんに置けるようにしてる。
とりあえず置けばいいのはやはり楽。

Amazon.co.jp: Anker PowerWave 10 Stand ワイヤレス充電器 Qi認証 iPhone 14シリーズ / 13シリーズ Galaxy 各種対応 最大10W出力 (ブラック) : 家電&カメラ

ティファール 電気圧力鍋(炊飯器)

一人暮らし時期からずっと使ってた炊飯器を引退させてタイムセールのときに買った。
こいつのせいでご飯が美味しくなって太った。

Amazon | ティファール 電気圧力鍋 3L 2~4人用 1台10役 独自の煮込み鍋 「ラクラ・クッカー コンパクト」 時短 レシピブック付き(50種類) ブラック CY3508JP | ティファール(T-fal) | ホーム&キッチン

マジック結束バンド

家にHDMIとか充電ケーブルとか様々なケーブルがあってそれを整理したくて買った。
使わずにしまうやつは8の字巻きにしてこのバンドで止めて袋なりに突っ込んで整理できたのでとても良い。

Amazon | CableMGT マジック結束バンド はさみは必要ありません 調節可能な長さ 結束テープ 面ファスナー 配線整理 ケーブル/コード等収納 (幅15mm x 長さ5m x 2巻) 合計10m | 配線アクセサリー | 文房具・オフィス用品

ダンボーの折りたたみコンテナ

ものを整理したくて買った。
多めに買っておいても折りたたんで置けるのでとても便利。
それなりに物も入るしなにより可愛いので良い。

Amazon | 【Amazon.co.jp限定】TRUSCO(トラスコ) ダンボー 薄型折りたたみコンテナ 50L ロックフタ付 TR-C50B-A-DNB | 物流コンテナ

PCゲーム用にxboxのコントローラー

前から気になっていたのでゲームするように買ってみた。
普段はPS4のコントローラーをPCにつなげてやっていたが、こいつは遅延が少なく感じるので良かった。
最近DbDができていないのでまたやりたい・・・

Amazon | Xbox ワイヤレス コントローラー (カーボン ブラック) | ゲーム

フォーウェイ・サラダスピナー

会社のチームメイトが昔のチームメイトにおすすめされた物をおすすめされて買ったやつ(複雑)。
奥さんとサラダスピナー場所取りそうなので買いたくないなーって話してたんだけど、
こいつはサラダスピナーだけじゃなく、ザルやボウルにも使えるので便利じゃんとなり買った。

www.keyuca.com

バスタオルも干せる伸縮式ハンガー

なんかテレビでカインズの紹介があって、タオル干せて便利じゃんってなったので買った。

www.cainz.com

漫画

普段ebookjapanの電子書籍で買ってるんだけど、奥さんもハマっていて何回も見返したくなるやつは物理で買って本棚に置こうと決めたので物理本でも買うようにしたやつ。

薫る花は凛と咲く

とても平和で優しい気持ちになるので全人類見て欲しい。
薫る花は凛と咲く(5) (講談社コミックス) | 三香見 サカ |本 | 通販 | Amazon

葬送のフリーレン

たびたび時間の経過を感じる描写が好きすぎるので全人類見て欲しい。
葬送のフリーレン (9) (少年サンデーコミックス) | 山田 鐘人, アベ ツカサ |本 | 通販 | Amazon

ふるさと納税

アスパラガス「さぬきのめざめ」

これを試してみてよかったのでAmazonでも買った。

www.satofull.jp www.satofull.jp

種無しスイカブラックジャック

去年も買ったスイカ
種がないのでマジでいい。

www.satofull.jp

ブロッコリー

美味しいブロッコリー
5000円で軽く試せるので良かった。

www.satofull.jp

ホワイトコーン

あまーいとうもろこしだった。
とても良いのでまた買いたい。

www.satofull.jp

Rustのgoogle/arghライブラリで引数をstructにbindする

GWにRustを触り始めたら楽しくなってきました。
新しい言語を触るのはやはり楽しいです。
今回はなんやかんやするコマンドを作ろうと思って、
引数をいい感じにしてくれるライブラリないかなと思って調べてたら、
googleのarghというライブラリがあったのでそれを触った備忘録です。

google/arghはこちら

github.com

基本的に使用するCargo.tomlはinitして、dependenciesにarghを追加した下記のようなのものでした。

Cargo.toml

[package]
name = "argh_opt"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
argh = "0.1.7"

目次

1.1 --hoge fugaのようなオプションを設定する

よくある ./bin/foo --hoge fuga みたいなやつですね。
これを実装してみましょう。

src/main.rs

use argh::FromArgs;

#[derive(FromArgs, Debug)]
/// 
struct FooArg {
    /// hoge
    #[argh(option)]
    hoge: String,
}

fn main() {
    let a: FooArg = argh::from_env();
    println!("{:?}", a);
    println!("{:?}", a.hoge);
}

/// があるのは、descriptionを書くのが必須のようで、エラーになってしまうからこうしました。
argh(description= "...")とも書けるようですが、ドキュメンテーションコメントで書いても拾ってくれるみたいでした。
これを実行してみるとこんな感じになります。

$cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.22s
     Running `target/debug/argh_opt`
Required options not provided:
    --hoge

$cargo run -- --hoge fuga
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/argh_opt --hoge fuga`
FooArg { hoge: "fuga" }
"fuga"

これで--hogeが必須のオプションになりました。
--hogeを必須ではなく任意にしたい場合は下記のように型を Option[String] にするといいようです。

struct FooArg {
    /// hoge
    #[argh(option)]
    hoge: Option[String],
}

1.2 数字やbool値を引数に渡す

次は ./bin/foo --hoge bar -- fuga --piyo 100 みたいなものを目指します。
数字は型に数字系のデータ型を指定し、
boolはoptionではなくswitchを指定することで使えるようでした。

use argh::FromArgs;

#[derive(FromArgs, Debug)]
/// 
struct FooArg {
    /// hoge
    #[argh(option)]
    hoge: String,

    /// fuga
    #[argh(switch)]
    fuga: bool,

    /// piyo
    #[argh(option)]
    piyo: i32,
}

fn main() {
    let a: FooArg = argh::from_env();
    println!("{:?}", a);
    println!("{:?} {:?} {:?}", a.hoge, a.fuga, a.piyo);
}
$cargo run -- --hoge foo --fuga --piyo 10
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/argh_opt --hoge foo --fuga --piyo 10`
FooArg { hoge: "foo", fuga: true, piyo: 10 }
"foo" true 10

# 数字の部分に文字列を渡したらエラーにしてくれました
$cargo run -- --hoge foo --fuga --piyo bar
    Finished dev [unoptimized + debuginfo] target(s) in 0.35s
     Running `target/debug/argh_opt --hoge foo --fuga --piyo bar`
Error parsing option '--piyo' with value 'bar': invalid digit found in string

zsh: exit 1     cargo run -- --hoge foo --fuga --piyo bar

1.3 デフォルト値を設定する

default = "関数名"で指定してあげると良さそうでした。
ダブルクオートの中に文字列で関数を指定するのどことなく不思議な感じがしますね。

use argh::FromArgs;

#[derive(FromArgs, Debug)]
/// 
struct FooArg {
    /// a
    #[argh(option, default = "String::from(\"hoge1\")")]
    hoge1: String,
    /// a
    #[argh(option, default = "default_hoge()")]
    hoge2: String,
    /// a
    #[argh(option, default = "\"hoge\".to_string()")]
    hoge3: String,
}

fn main() {
    let a: FooArg = argh::from_env();
    println!("{:?}", a);
    println!("{:?} {:?} {:}", a.hoge1, a.hoge2, a.hoge3);
}

fn default_hoge() -> String {
    return "hoge2".to_string();
}

なお、関数の型があっていないときはコンパイルエラーになりました。
例えば上記のdefault_hogeをi32が返るように変更し、
コンパイルするとエラーになった様子です。

fn default_hoge() -> i32 {
    return 100;
}
error[E0308]: mismatched types
  --> src/main.rs:10:30
   |
10 |     #[argh(option, default = "default_hoge()")]
   |                              ^^^^^^^^^^^^^^^^- help: try using a conversion method: `.to_string()`
   |                              |
   |                              expected struct `String`, found `i32`

便利ですね〜

1.4 from_str_fnを使って文字列をstructに変換する

なんらかのフォーマットのデータを入力時に変換してもらおうと思います。
例えば 14:15 のような時間のフォーマットを変換します。
./bin/foo --time 14:15 みたいなコマンドのイメージです。
from_str_fnに、 &strを受け取りResult<T, String>を返す関数を渡すといい感じに変換してくれるみたいでした。

use argh::FromArgs;

#[derive(FromArgs, Debug)]
/// 
struct FooArg {
    /// a
    #[argh(option, from_str_fn(str_to_time))]
    time: Time,
}

#[derive(Debug)]
struct Time {
    _h: u32,
    _m: u32,
}

fn str_to_time(v: &str) -> Result<Time, String> {
    let x: Vec<&str> = v.split(":").collect();
    let h = match x[0].parse::<u32>() {
        Ok(x) => x,
        Err(e) => return Err(e.to_string())
    };
    let m = match x[1].parse::<u32>() {
        Ok(x) => x,
        Err(e) => return Err(e.to_string())
    };

    if h >= 24 {
        Err(format!("{} is too large", h))
    } else if  m >= 60 {
        Err(format!("{} is too large", m))
    } else {
        Ok(Time { _h: h, _m: m })
    }
}

fn main() {
    let a: FooArg = argh::from_env();
    println!("{:?}", a);
    println!("{:?}", a.time);
}

実行してみると

$cargo run -- --time 14:15
    Finished dev [unoptimized + debuginfo] target(s) in 0.05s
     Running `target/debug/argh_opt --time '14:15'`
FooArg { time: Time { _h: 14, _m: 15 } }
Time { _h: 14, _m: 15 }

# ResultのErr側に渡したStringをメッセージとして出してくれるようですね
$cargo run -- --time hoge
   Compiling argh_opt v0.1.0 (/Users/arata/Documents/Workspace/rust/argh_opt)
    Finished dev [unoptimized + debuginfo] target(s) in 0.52s
     Running `target/debug/argh_opt --time hoge`
Error parsing option '--time' with value 'hoge': invalid digit found in string

みたいな感じでした。

2.1 sub commandを使う

次はサブコマンドを実装してみます。
./bin/foo hoge./bin/foo fuga みたいなやつです。
これを実装してみます。
enumでコマンドを作成し、
それぞれarghのマクロにsubcommandと渡してあげれば良さそうでした。  

use argh::FromArgs;

#[derive(FromArgs, Debug)]
/// 
struct FooArg {
    #[argh(subcommand)]
    _command: SubCommand,
}

#[derive(FromArgs, Debug)]
#[argh(subcommand)]
enum SubCommand {
    Hoge(HogeCommand),
    Fuga(FugaCommand),
}

#[derive(FromArgs, Debug)]
/// h
#[argh(subcommand, name = "hoge")]
struct HogeCommand {}

#[derive(FromArgs, Debug)]
/// h
#[argh(subcommand, name = "fuga")]
struct FugaCommand {}


fn main() {
    let a: FooArg = argh::from_env();
    println!("{:?}", a);
}

実行してみるとこんな感じ

$cargo run -- hoge
    Finished dev [unoptimized + debuginfo] target(s) in 0.06s
     Running `target/debug/argh_subcommand hoge`
FooArg { _command: Hoge(HogeCommand) }

$cargo run -- fuga
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/argh_subcommand fuga`
FooArg { _command: Fuga(FugaCommand) }

$cargo run -- piyo
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/argh_subcommand piyo`
Unrecognized argument: piyo

2.2 sub command内でオプションを使う

サブコマンドにオプションをつけるのは、
サブコマンドのstructに、1.xでやったようにオプションを追加するだけでよかったです。
試しにhogeコマンドにpiyoというオプションを追加してみます。

use argh::FromArgs;

#[derive(FromArgs, Debug)]
/// 
struct FooArg {
    #[argh(subcommand)]
    command: SubCommand,
}

#[derive(FromArgs, Debug)]
#[argh(subcommand)]
enum SubCommand {
    Hoge(HogeCommand),
    Fuga(FugaCommand),
}

#[derive(FromArgs, Debug)]
/// h
#[argh(subcommand, name = "hoge")]
struct HogeCommand {
    /// piyo
    #[argh(option)]
    piyo: String,
}

#[derive(FromArgs, Debug)]
/// h
#[argh(subcommand, name = "fuga")]
struct FugaCommand {}

fn main() {
    let a: FooArg = argh::from_env();
    println!("{:?}", a);
    match a.command  {
        SubCommand::Hoge(x) => println!("{}", x.piyo),
        SubCommand::Fuga(_) => (),
    }
}

実行してみるとこんな感じ

cargo run -- hoge --piyo fooooo
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/argh_subcommand hoge --piyo fooooo`
FooArg { command: Hoge(HogeCommand { piyo: "fooooo" }) }
fooooo

感想

  • とりあえずこれ使っておけばやりたいことはできそうだなーと思った
  • google製だから安心かなと思ったけどREADMEの最後に↓って書いてあって少し不安になったw
    • NOTE: This is not an officially supported Google product.

  • Rust楽しい

モデルナ製ワクチンの3回目を受けたときの副反応体験の備忘録

職域摂取でワクチンの3回目を受けられたので、その時の体験をメモっておこうと思います。
色々な反応があるようですが、自分は今回かなり軽めでした。
1、2回目モデルナで、今回3回目もモデルナ製にしました。
理由はタイミングがよかったから以外特にありません。

2回目のときの備忘録はこちら arata.hatenadiary.com

ワクチン3回目摂取からの流れ

1日目(摂取日)

  • 15:15
    • ワクチン3回目摂取
  • 17:00
    • 36.5度
  • 19:00
    • 37.1度
  • 22:30
    • 36.6度
    • 注射した左腕を押すと痛くなった
  • 0:00
    • 36.5度

という感じで、左腕を押すと痛いくらいの症状で他はほとんどなにもありませんでした。

2日目

3日目

  • 8:00
    • 36.4度

その後体温が37度に上がることもなく熱などの副反応は落ち着いた。
ただ、注射した左腕が腫れ上がっていて痒かった。
痒みについては、下記を参考に冷やすと落ち着いたので、痒みがあるときは冷やすを繰り返した。
具体的には保冷剤?があったのでそれをタオルで包んで腕に当てて様子見るなどしました。

www.cov19-vaccine.mhlw.go.jp

左腕の腫れはだいぶ赤みを帯びていて、心配になるレベルだったが、
4日目には薄いピンク色くらいになり、5日目にはほとんど見えないくらいになり、6日目以降消えていき、
これを以て3回目の副反応は終わった。

振り返り

  • K
    • 保冷剤があってよかった
      • モデルナアームっぽくなって痒くなったときに使える
      • 熱冷まシート貼ると痒かった
    • ゼリーとは別にパンを買ったのはよかった
      • 前回死にそうになったときに食べるものがあった方がいいなとPに書いていたのでミニクロワッサンを買っていた
      • 腹が膨れるのでとても便利だった
      • 用意してくれた奥さんに感謝 :pray:
    • 2回目同様
      • ゼリー系の食べ物を用意しておいてよかった
      • バファリンプレミアムが効いてよかった
  • P
    • 症状が軽かったこともあり、特段困りごとはなかった