以下の内容はhttps://hiroblogdesu.hatenablog.com/entry/2025/04/14/165455より取得しました。


自作npmパッケージ「METs-Advisor」を公開しました

こんにちは、ひろきです。

フィヨルドブートキャンプ(以下、FBC)ではJavaScriptのカリキュラムの一つに、「npm パッケージの作成」があります。
npmパッケージを自作しnpmに公開するというプラクティスです。
私が作成したものは、「METs-Advisor」というnpmです。

身体活動量に関する質問に答えることで、理想の身体活動量を算出するアプリです。 理想の身体活動量に達していない場合、必要な活動量を提案してくれます。
以下の画像は、1日平均3000歩で週2日20分ほどの早歩きをしている人の結果です。

Mets-Advisorの画像

意外と理想の運動量に達するのは大変そうです。

作成した理由

せっかく作るならば、1回くらいは使ってもらえるようなものがいいなと思いました。
npmパッケージを扱うのは基本プログラマーだと思ったので、プログラマーが困っていそうなことを考えた結果、腰痛や運動に着目しました。
FBCに入会してから、自分自身がそれを痛感していました。

このプラクティスは合格していなくても、受講生は他の人の作品を見ることができるので、今後、npmパッケージに取り組む方達にも使ってもらい運動不足を客観的に実感してもらうことで、実際に気分転換に運動をしてもらえたらいいな〜とも思ったからです。

METs-Advisorについてもう少し詳しく

METsとは、身体活動の強度を数値化したものです。
厚生労働省のものを参考にしています。
健康づくりのための身体活動・運動ガイド 2023 (案)

METsは日本で定義されたものではないようです。
Metabolic equivalents (METS) in exercise testing, exercise prescription, and evaluation of functional capacity - PubMed

アプリの流れです。
全ての回答は大体の数値でOKです。

1週間の1日平均の歩数を答えます。

1週間の運動日数を答えます。

運動強度を大中小3つから選びます。

運動のレベルに合うものを選びます。
小:ヨガ〜やや早い徒歩
中:かなり早い徒歩〜ゆっくりなジョギング
大:サイクリング〜かなり激しい運動

その運動の1日合計を「分」単位で答えてください。

運動量が理想値を超えている場合、褒めてもらえます。

理想のMETsを超えた結果画面
35METsは理想とかなり上回っているので、かなりの猛者です。
21−22METsが健康維持に適した運動量で23METsからが理想の運動量となります。
上記の結果を歩数だけで出すならば、毎日13500歩が必要となります。

1日8000歩で運動なしだと、21METsとなります。

健康維持に適した運動量の結果画面

ちなみに、1METsは安静にして座っている状態です。
座ってるだけで23METs行くじゃん!と思われるかもしれませんが、3METs以上の身体活動をすることが推奨されているので、やはり身体は動かさないといけません。
最近はスタンディングデスクが流行っていますが、立位は約2METsです。   ただ、長時間の座位は健康寿命を縮めるという研究があるので、運動ができない場合は、立つだけでもしてほしいです。

苦労した点

  • 選択肢の分岐をどう作るかで困りました。
    Enquirer.jsを使用しましたが、似たものにInquirer.jsがあったので、そちらも参考にしました。READMEを読み込んでも分岐の書き方が書いていなかったので、どうしたものかと思いました。
    英語で紹介されていたものだったので、英語で調べたり色々したところ、Issueがに方法があったので参考にしました。
    multiple questions with same name, hydrating an array as answer · Issue #1086 · SBoudrias/Inquirer.js
    Issueに解決策があるかもということを学びました。
    また、英語の情報量が多いというのも事実だと体験できました。

  • 数値の表示がうまくいきませんでした。
    質問文と数値をハッシュで管理していたのですが、動くものを作った後に プロンプトをasyncにまとめたら、数値の取り出しでハマったらしいです。(すぐにブログを書かなかったので、FBCの日報から遠い記憶を呼び起こしたため伝聞)
    結果が数値でなく、NaNが続き、分岐部分の出力が間違っていると思いハマり続けました。 全ての数値結果をconsole.logで表示することで間違っている部分を可視化しました。
    how to access to 'value' in choices? · Issue #51 · enquirer/enquirer
    ハマった時ほど、その部分に大恋愛をしてしまい俯瞰的に見れなくなるので、大好きになってしまったコードから一旦離れる癖を身につけたいです。
    FBCで書いている日報を読み返したら、上記を何度も何度も書いていて自身の学習能力の低さに震えています😇(一途やめたい(?))

  • 作っていく内にあれやこれが欲しくなる
    作っていく内に、せっかくならば「最初に言語選択をして英語バージョンもほしいな〜」や「結果画面に消費カロリーの結果が出たら便利だよな〜」とか色々考えてしまい、終わりが見えなくなると感じました。
    そういった意味でも学びが多いプラクティスでした。
    一旦リリースして、新しい機能をガンガン追加できるところがソフトウェア開発のいいところというのもまたまた実感できました。

おわりに

海外生活をするようになってから立ち仕事ばかりしていたので、FBCで学習を始めてから、自身の体力や姿勢、筋肉だったりがみるみる低下していくことをじわじわと感じていました。
過去にも仕事や趣味でPCを長時間触ることはありましたが、プログラミングは1回の没入している時間が長いような気もします。
そのため、知らぬ内に身体に負担をかけていて、体調管理をより気にしないといけないのかなと思いました。

npmパッケージの作成はFBCで初めて、作るものを自由に考えることができるプラクティスでした。
FBC最後のプラクティスが自作サービスを作ることですが、今回はその練習試合みたいな感じがして楽しかったです。
自作サービスは作り始めるまでに、やることが山ほどあるみたいで大変だと思いますが(まだ辿り着いていないので知らない)、自信を持ってリリースできたらなと思います。




以上の内容はhttps://hiroblogdesu.hatenablog.com/entry/2025/04/14/165455より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14