ようへいの日々精進XP

よかろうもん

2022 年 01 月 10 日 (月)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

走りやすい気候だったので、20 キロ走をやった。

1 キロを 4'30" くらいのペースで走るつもりだったけど、靴のおかげでうっかりペースが上がってしまった。

レアジョブ

おやすみ。

夕飯

今宵も鍋。色々と味変をしてみようと思ってキッチンに立つけど、結局、いつもの味付けになる。

今日も終日頭痛

ストレッチやらお灸やら、色々とやってみたけど頭痛が継続。走った後、少し和らいだ気がしたけど、ボヤーッと頭痛が続く。

pre-commit

CircleCI や Github Action や CodeBuild 等の SaaS ツールや Jenkins 等が使いづらい状況ながら、チームで Terraform コードをイジらないといけない場合、どのようにコードの品質を保てば良いのか考えていたら、pre-commit という OSS を見つけた。

pre-commit.com

Git の pre-commit hook を管理するフレームワークで、色々な pre-commit hook のスクリプトをサポートしている。

Terraform 関連では、以下のリポジトリの hook スクリプトを利用すると良さそう。

github.com

2022 年 01 月 09 日 (日)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

エアロバイクを 70 分。

今日は休養デイなので、YouTube を見ながらエアロバイク。

レアジョブ

6:30 から正蔵先生だったので、頑張って起きたんだんけど、正蔵先生にキャンセルされてしまった。ワハハ。

昼食

壁紙を見た帰りに博多ラーメン、いちばん星。美味しゅうございました。

夕飯

今宵も鍋。俺たちの Sunny の PB 商品である鍋出しの素を使ってみたけど、量が少なくて、お湯を足したら味が薄くなってしまった。でも、最後のシメでちょうど良い感じになったのでヨシ。

終日頭痛

肩こりからくる頭痛が酷くて終日頭痛だった。とても辛い。

2022 年 01 月 08 日 (土)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

山王公園ランニング倶楽部のメンバーと 20 キロ走。

右足の状態は相変わらず...

レアジョブ

今日もお休み。明日は、6:30 から正蔵先生。

夕飯

今宵もお鍋。引き続き、冬はやっぱりお鍋ですなあ。

fitbit API

OAuth 認証のトークン取得方法が解らなくてアタフタしたのでメモした。

inokara.hateblo.jp

fitbit API の OAuth 認証手順

tl;dr

fitbit charge2 を使って活動量を可視化しているが、fitbit API の OAuth 認証トークンが切れてしまっていて、再度、認証トークンを再作成することになって、再作成の方法をすっかり忘れてしまっていたのでメモしておく。

inokara.hateblo.jp

未だに OAuth についてよく解っていないので、記載の内容に誤りがあれば、随時修正していく。

手順

1. dev.fitbit.com にアクセスする

https://dev.fitbit.com にアクセスする。

f:id:inokara:20220108172839p:plain

ユーザーID とパスワードを入力して Register An App にアクセスする。

f:id:inokara:20220108172910p:plain

2. アプリケーション一覧にアクセス

アプリケーション一覧から、認証トークンを取得したいアプリケーションをクリックする。

f:id:inokara:20220108173011p:plain

今回は、Run Activity というアプリケーションをクリックする。

3. OAuth 2.0 tutorial page にアクセス

アプリケーション詳細ページの下部に OAuth 2.0 tutorial page があるので、リンクをクリックする。

f:id:inokara:20220108173145p:plain

4. チュートリアルに従ってトークンを払い出す

チュートリアルに従ってトークンを払い出していく。

Authorization Code Flow にチェック。

f:id:inokara:20220108173318p:plain

authorization URL を生成する URL が掲載されているのでクリックする。

f:id:inokara:20220108173508p:plain

クリックすると、アプリケーションの Redirect URL で設定した URL にリダイレクトされる。

f:id:inokara:20220108173703p:plain

今回は、ローカルホストに何も Web サービスが動いていないので、ページ自体は表示されないが、URL パラメータ code= の値を控えておく。尚、値は 7b64c4b088b9c841d15bcac15d4aa7433d35af3e#_=_ となっているが、#_=_ の部分を除いた値を控えておく。

f:id:inokara:20220108173941p:plain

控えたコードを 1A Get CodeCode テキストボックスに貼り付ける。

f:id:inokara:20220108174152p:plain

テキストボックスに貼り付けると、アクセストークンを取得する為の curl コマンドの実行例が出力されるので、これをコピーしてターミナルで実行する。正常にリクエストが終了すると、以下のようなレスポンスが返ってくる。

{
  "access_token": "xxxxxxxxxxx",
  "expires_in": 28800,
  "refresh_token": "xxxxxxxxxx",
  "scope": "activity profile heartrate weight settings nutrition social location sleep",
  "token_type": "Bearer",
  "user_id": "XXXXXXX"
}

f:id:inokara:20220108174415p:plain

レスポンスの内容を Parse response のテキストボックスに貼り付けると、Access tokenRefresh token を確認することが出来る。

以上

自分の為のメモでした。画面仕様が変わったりしたら、また、そのときに調査してメモることにする。

2022 年 01 月 07 日 (金)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

久しぶりに 60 分走った。

右足の状態は相変わらずなんだけど、やっぱり、走ると気持ちいいですなあ。

レアジョブ

今日はお休み。

夕飯

お鍋。冬はやっぱりお鍋ですなあ。

2022 年 01 月 06 日 (木)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

エアロバイクを 45 分ほど。

レアジョブ

今朝も val 先生だった。

通院

久しぶりの骨粗鬆症の通院。骨粗鬆症自体は、骨密度の測定をしない限り状況はわからないので、今日は、股関節やら足の痛みについて相談した。結局、股関節周りの骨には異常は見られないとのことで、大腿部や臀部の筋肉を鍛えるようにとのこと。もやっとした感じは残るけど、特に運動も制限無い (痛いと相談しながら) とのことなので、腰から下の筋肉を鍛えつつ頑張っていこうと思った次第。

iMac 2011

のハードディスクがとうとう壊れた。仕方がないので、外付け SSDmacOS をインストールしてあったので、そちらで起動して事なきを得た。

夕飯

湯豆腐とブリのお刺身。ブリのお刺身が美味しすぎて湯豆腐が霞んでしまった。

JAWS-UG 福岡もくもく会

jaws-ug-kyushu.doorkeeper.jp

ギョームにて AWS SDK for Ruby のスタブレスポンスを利用して minitest でユニットテストを書いたので、忘れないうちにブログにしたためた。

inokara.hateblo.jp

最近、テスト駆動開発 を会社の輪読会で読んでいて、コードを書くならテストも書かねばという機運が高まっているので、小さなアプリケーションでも、将来的に自分や自分以外が触る可能性があればテストを書いていこうと思った矢先のテストだった。

AWS SDK for Ruby でスタブレスポンスを利用して minitest する

tl;dr

AWS SDK for Ruby では、擬似的な値でレスポンスを返すスタブレスポンスがサポートされている。

docs.aws.amazon.com

度々、スタブレスポンスを利用したテストを書こうとすると、書き方を忘れて右往左往してしまうので、メモしておく。

サンプル

ディレクトリ構成

ディレクトリ構成は以下の通り。

$ tree . -L 2
.
├── Gemfile
├── Gemfile.lock
├── Rakefile
├── sample.rb
├── stub
│   └── route53.rb
├── test
│   └── sample_test.rb
└── vendor
    └── bundle

6 directories, 20 files

サンプルコード

サンプルコード (sample.rb) は以下の通り。

require 'aws-sdk'

def r53
  r53 ||= Aws::Route53::Client.new
end

def domain_name(hosted_zone_id)
  r53.get_hosted_zone(id: hosted_zone_id).hosted_zone.name
end

これは、Route53 の Hosted Zone ID を引数に渡すと、ドメイン名を返す超簡単なコード。

サンプルのテストコード

サンプルのテストコード (test/sample_test.rb) は以下の通り。minitest を利用する。

require_relative '../sample.rb'
require_relative '../stub/route53.rb'
require 'minitest/autorun'
require 'minitest/reporters'
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]

class TestHandler < Minitest::Test
  def setup
    Aws.config[:stub_responses] = true
  end

  def test_domain_name
    expect = 'example.com'
    assert_equal expect, domain_name('xxxxxxxxxxxxxxxx')
  end
end

domain_name メソッドは、ドメイン名 (example.com) を返してくれることを期待したコード。

肝は以下の通り。

  • require_relative '../stub/route53.rb'
  • Aws.config[:stub_responses] = true

Aws.config[:stub_responses] = true はおまじない。require_relative '../stub/route53.rb' に、スタブレスポンスしたい内容を書く (後述) 。

スタブレスポンスの内容

そして、スタブレスポンスの内容 (stub/route53.rb) は、以下の通り。

Aws.config[:route53] = {
  stub_responses: {
    get_hosted_zone: {
      hosted_zone: {
        id: 'xxxxxxxxxxxxxxxxxx',
        name: 'example.com',
        caller_reference: 'xxxxxxxxxxxxxx'
      }
    }
  }
}

get_hosted_zone が呼び出すメソッド名で、値として、返却したいデータを定義する。

尚、hosted.id 及び hosted.namehosted.caller_reference は、スタブレスポンスでも必ずレスポンスとして返す必要のあるデータ。

一つでも欠けると以下のように ArgumentError となる。

ArgumentError:         ArgumentError: missing required parameter params[:hosted_zone][:name]

注意しよう。

動作確認

Rakefile は以下のように定義。

desc 'Execute Test'
task :test do
  Dir.glob('./test/*_test.rb').each { |file| require file }
end

以下の通り、rake コマンドを実行する。

$ bundle exec rake test
Started with run options --seed 6635

TestHandler
  test_domain_name                                                PASS (0.06s)

Finished in 0.06036s
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips

いい感じ。

以上

また、いつか、同じ内容を書くかもしれないけど、勉強になった。

2022 年 01 月 05 日 (水)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

今日も完全休養。

レアジョブ

今朝も val 先生だった。文法が Have you ever xxxx だったので、何となく会話が捗った。

夕飯

二日目のカレーが美味しゅうございました。

2022 年 01 月 04 日 (火)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

完全休養。

終日、右の股関節周りに強い違和感があって辛かった。明後日、通院なので、そこまでは安静にしておこうと思う。

レアジョブ

val 先生だった。終始グダグダで楽しくなかった...orz まあ、スロースタート、楽しむことを忘れずに。

仕事初め

股関節周りの違和感や、手足の冷えが強すぎて、体調がイマイチな中での仕事初め。集中力を欠いてしまった感。反省しつつ、スロースタートでやっていこうと思う。

夕飯

2022 年 01 月 03 日 (月)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

完全休養。

ずっと気になっていた股関節周りの違和感が痛みになってきた。そんな状態で箱根駅伝を見ていたら、股関節を疲労骨折してエントリーを外れたメンバーの話が流れてきたので、股関節の疲労骨折についてググってみると、長距離ランナーに股関節の疲労骨折 (大腿部頸部の疲労骨折) は度々あることらしくて、症例に関する論文も公開されていた。論文をななめ読みしてみると、現在の自分の症状にとても似ていて、「お、おう...」って気持ちになっている。

レアジョブ

明日は朝の 7 時から val 先生で肩慣らし (肩慣らしってw

夕飯

奥さんが、おせち料理のメインキャラクターだった海老のうま煮の煮汁を使って、ご飯を炊いた。それと、焼き鮭のセットでスペシャルディナー。美味しゅうございました。