ごまなつ Blog

楽しく働ける世界を目指して

【健康】低コレステロールは何が問題なのか

TL;DR

コレステロールは肝臓の異常、甲状腺の異常、栄養障害が疑われる。

健康診断の結果が返ってきた

最近ではないですが、健康診断の結果が返ってきました。結果は「B」。まあ視力悪いしそうだよな、と思ってみていたら気になる点がありました。それは

LDLコレステロール:37(基準値:40~)

でした。低コレステロールという、聞いたこともない異常でした。これは2年前でしたが、現在は総コレステロール値が

コレステロール:137(基準値:140~)

になっていて、低コレステロールが心配になって調べました。すると、低コレステロールは肝臓の異常、甲状腺の異常、栄養障害が疑われる。とのことでした。

2年前は無理な生活をしていて(パスタ(ソースなし)、豆腐のみ)、これは栄養障害なのは考えればわかります。

現在は卵と鶏むね肉とブロッコリーカップ麺を食べてるので、栄養的には問題ない気がします。これは肝臓の異常を疑って病院に行かないとやばいかな、と思っているところです。肝臓が悪くなると、

  • お酒を美味しく感じなくなる
  • 食欲低下(特に脂っこいものを欲しなくなった)
  • 足がむくむ・お腹が張る

ようです。確かに酒はおいしいと感じなくなったし、脂っこいものは食べたくないんですよね。

病院に行くか行かないか、その判断基準を知りたいです。

【健康】外国産サプリメント、サイズも栄養素も大きい

TL;DR

国産は3食食べることを前提に、大体1/3日分の成分。外国産は1つで1日分を取ろうとすることが多い。摂り過ぎにならないように注意が必要。 外国産は国産と比べてサイズが大きいので飲みにくい

海外製サプリメント、どこで買うの?

海外製サプリメントは、今ならAmazonが一番手軽に買えます。会員登録に抵抗がないなら、MYPROTEIN、iHerbもあります。iHerbは楽天市場 店もあるので手軽かもしれません。関税は金額を抑えればかからないですし、簡単に買えます。

サプリメントは一般的になった

皆さん、サプリメント飲んでますか?いまではすっかり一般的になり、多くの人が飲んでいると思います。私はMYPROTEINのMultiVitaminとトレーニング前に飲むやつ(トレーニングしてないけど)、エビオス錠を飲んでます。何も考えずに買って飲んでいましたが、海外製のサプリメントを調べていると感じたことを書きます。

サイズが大きい

国産に比べてサイズが大きいです。飲みにくい。その代わり、栄養素も多く含まれているのは事実です。サプリメントの飲み方に慣れないと結構きついです。

一つの成分のサプリメントが一日分の摂取量に近い

例えばミネラルが足りないなと感じたときに、鉄や亜鉛サプリメントを飲むと思いますが、国産だと大体1/3~1/2日分の栄養素です。しかし、海外産は1日分に近い量含まれています。栄養素は摂り過ぎると悪影響を及ぼすものもあるので、気を付けましょう。

まとめ

海外産サプリメントは一日分の摂取量に近い量栄養素が含まれていることがあるので、一日分の推奨摂取量を確認して、どのくらい自分が栄養素を摂取しているのか管理する必要がある。摂り過ぎると体に悪影響があるため。

【なでしこ】グループに関する不思議な挙動

最近業務で日本語プログラミング言語のなでしこを触っています。業務自動化を始めた方がなでしこで行ったことにより、なでしこが伝わっているようです。よって、v3ではなくv1です。(なでしこv3がWeb環境で動作、なでしこv1がWindows向け)

なでしこは配列にあたるものがグループです。グループは、イメージ的には表です。

グループ1¥0=0
グループ1¥1=1
グループ1¥2=2

といった定義だと配列ですが、

グループ1¥0,0=0
グループ1¥1,1=1
グループ1¥2,2=2

というように2次元配列のようにもできます。このグループですが、なでしこは変数定義しなくても使えますし、型を宣言する必要がありません。

グループ1¥0,0=0

と書いた瞬間にグループ1というグループが作成されます。

問題

私は、ループを使ってケーブルがあるときとない時の値の差を計算しようとしました。

iで0から7まで繰り返す//for(i=0;i<7;i++)と同じ。かっこはなくインデントで範囲を表現
   ケーブルあり値¥i=ケーブルあり値取得()
   ケーブルなし値¥i=ケーブルなし値取得()
  「{ケーブルあり値¥i}-{ケーブルなし値¥i}」を言う//メッセージボックスで指定文字列を言う

とすると、すべて0が出てきます。調べてみると、ケーブルあり値とケーブルなし値は全く同じ値になっていました。グループを定義して、何も代入していないとグループ名が文字列として要素になります。そこで確認すると、どちらも「ケーブル値」になっていました。どうりで差分が0なわけですね。似ていないグループ名に変更しました。

まだ言語仕様を理解しきれていないのが問題なのかもしれないですが、ちょっと不思議な挙動に遭遇した記録でした。

Google Cloud Vision APIのOCRを触ってみた

画像からテキストを読むことで、データを効率よく取得できるのではないかと考えGoogle Cloud Vision APIOCR機能を触ってみました。公式ページのチュートリアルとほぼ同じです。go言語でやってみました。

まず最初に、Vision APIを使用するための設定を行います。 クイックスタート: クライアント ライブラリを使用して画像内のラベルを検出する  |  Cloud Vision API  |  Google Cloud

今回はローカルの画像を対象としました。

ctx := context.Background()

    // Creates a client.
    client, err := vision.NewImageAnnotatorClient(ctx)
    if err != nil {
        log.Fatalf("Failed to create client: %v", err)
    }
    defer client.Close()

    filename := "Image.jpg"//対象とする画像ファイル名

    file, err := os.Open(filename)
    if err != nil {
        log.Fatalf("Failed to read file: %v", err)
    }
    defer file.Close()
    image, err := vision.NewImageFromReader(file)
    if err != nil {
        log.Fatalf("Failed to create image: %v", err)
    }

    texts, err := client.DetectTexts(ctx, image, nil, 10)//OCRなのでDetectTexts。ラベル検出だとDetectLabels
    if err != nil {
        log.Fatalf("Failed to detect labels: %v", err)
    }

    for _, text := range texts {
        fmt.Println(text.Description)   
    }
}

これで取得したテキストを表示します。テキストは、1行ごとに検出されるというよりはテキストの空白が文章の文字と文字の空白より大きいと判断されたら分割されます。例えば画像中に「弁当 400」があったとしたら、「弁当 400」で読まれるのではなく、「弁当」と「400」で読まれます。

位置はtext.BoundingPoly.String()で取得します。以下の文字列が返されます。

{vertices:{x:205  y:24}  vertices:{x:210  y:24}  vertices:{x:210  y:29}  vertices:{x:205  y:29}}

これはテキスト領域を4角形で検出した4つの頂点の座標を表しています。対象画像のサイズが決まっていたり、テキストに目次がついていれば位置や取得結果からデータを取得できそうだな、と感じました。

Amazon Rekognitionはどうなのか

画像認識サービスとしてもう一つ上げられるのがAmazon Rekognitionです。こちらは、日本語に対応していません。今回対象とした画像は日本語だったため、Google Cloud Vision APIを採用しました。

精度

大方読めていました。ですが、「!」が「i」になったり、半角アルファベットが記号になったりと、文字と文字の間隔が狭かったり似ている記号や文字はミスすることがあるようです。

まとめ

これを使って何か作ってみようと思います。多くのデータを取得するのであれば、手打ちよりも早くできそうですし。

【Go】Goで作ったアプリをHerokuにデプロイするときにハマった

Goのginを使ってtodoアプリにログイン機能とログインセッション、パスワードをハッシュ化して保存など、機能を拡張したものを作りました。

デプロイしてみるか、ということでherokuにデプロイしてみようと思ったのですが、そこで何か所かハマりました。

sudo付け忘れ

Windows環境で、開発はwsl2で行っていました。Linuxなので当然ですが、sudoをつけないとエラーになるコマンドがあります。

バージョン

herokuにpushしていると、

vendor/gorm.io/gorm/utils/utils.go:46:30: reflect.ValueOf(val).IsZero undefined (type reflect.Value has no field or method IsZero)

が出ました。バージョンが足りてなさそうです。開発は1.13で行っており、go.modにもgo 1.13とありましたが、

remote:  !!    The go.mod file for this project does not specify a Go version
remote:  !!
remote:  !!    Defaulting to go1.12.17
remote:  !!
remote:  !!    For more details see: https://devcenter.heroku.com/articles/go-apps-with-modules#build-configuration
remote:  !!

とあり、1.12.17で動作しているようです。調べた結果、go.modの内容を以下のように変更しました。

// +heroku goVersion go1.13 <----これを足す
go 1.13

これで1.13で動作するようになり、エラーが消えました。

警告

remote:  ! ## Warning - The same version of this code has already been built: bbad49b00710bedfaf2440742a213671e7f4f418
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version bbad49b00710bedfaf2440742a213671e7f4f418
remote:  ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote:  !
remote:  ! If you are developing on a branch and deploying via git you must run:
remote:  !
remote:  !     git push heroku <branchname>:main

すでにそのコミットでのデプロイは試みてるよ、という確認メッセージでした。

【健康】「沼」の簡易版を3か月食べ続けた結果

たまには健康に関する話をしようと思います。

皆さんはYoutuberのマッスルグリルさんをご存知でしょうか? ボディービルダーの方と、格闘家の方がやっているYoutubeチャンネルです。 トレーニングの動画もありますが、料理の動画もあります。 その中で、炊飯器で料理をするシリーズがあります。 「沼」「マグマ」「セメント」です。(ほかにはジャガバード、ジャンピラフなど)

共通点は鳥の胸肉と米で、ほかに入れるもので味をつけています。 私は共通点のみに着目して、鳥の胸肉と米を炊飯器で炊いたものを食べています。

それを3か月続けた結果、60前後だった体重が2kg減りました。周りからは引き締まったねと言われるようになりました。

デメリット

一応デメリットを挙げておくと、これだけを食べていると、やわらかいのであごの関節が壊れ始めます。また、味をつけていない自分が悪いですが味が無すぎてつらいです(ですが、たまに食べる普通の食事がすごくおいしいです)。また、太っていなくてもやせてしまいます(人間は基礎代謝前後のカロリー摂取量では痩せてしまうため)。ですので自分はより食べるよう心掛けています。

まとめ

痩せる必要がないのに痩せようとするのはやめよう!

カフェインとスポーツ

この記事はCoffee Advent Calendar 2020の3日目の記事です。

カフェインの効果

カフェインはコーヒーに多く含まれているといわれています。カフェインの効能は、

眠気覚ましなどの興奮作用や尿の排出を促す利尿作用などが広く知られていますが、このほかにも「自律神経の働きを高める」 「集中力を高め作業能力を向上させる」 「運動能力を向上させる」など、様々な効果が明らかになっています。 http://coffee.ajca.or.jp/webmagazine/library/caffeinecoffee.ajca.or.jp

と言われています。

カフェインとスポーツ

カフェインはドーピング検査に引っ掛かっていた過去があります。2004年以降、禁止薬物のリストから外れ監視対象となりました。監視対象は、禁止に戻る可能性があるものです。よって、カフェインの効果を受けながらスポーツできます。ボディービルダーの中には、トレーニング前やトレーニング中にコーヒーにプロテインを溶かしたものを飲む人もいます。高重量を用いるトレーニングでは、少しの気の緩みで大怪我をしてしまう可能性があります。よって、コーヒーで集中力を上げるそうです。また、体も動くようになります。 私自身はスポーツ前にコーヒーを飲むと、60分後くらいからいつもより体が動くようになり、周りがよく見えるようになります。

摂りすぎは禁物

とはいえ、カフェインをとりすぎるとカフェイン中毒になります。欧州食品安全機関(EFSA)によると、健康を維持するために望ましいカフェイン摂取量を以下のように提言しています。 - 1日当たりカフェイン400mg未満 - 1回あたりカフェイン200mg未満 これより多くカフェインを摂取し続けると依存に陥りやすくなります。

また、近年ではエナジードリンクや眠気覚まし薬など、カフェインを簡単に大量に摂取する方法がたくさんあるため、カフェイン依存症になってしまったり急性中毒を引き起こすことがあります。摂り過ぎには気を付けましょう。

私自身はスポーツ中にエクセラを450mlほど飲むんですが、気を付けたほうがよさそうですね......。(だってそのほうが体が動くんだもん)