ようへいの日々精進XP

よかろうもん

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

夕飯

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

2022 年 01 月 02 日 (日)

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

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

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

ジョギング

箱根駅伝往路を観戦しながらエアロバイクを 70 分。

レアジョブ

久しぶりに val 先生。あけましておめでとうございますをちゃんと英語で言えなくて凹んだけど、今年も楽しんでいこう。

夕飯

おせちの残りやら、豚ハラミやら納豆キャベツ。そろそろ、通常のご飯モードに戻していく感じ。

今年の目標

をざっくりと書いた。

inokara.hateblo.jp

2022 年の目標 〜 2022 年にやりたいこと等 〜

tl;dr

2022 年の目標を書いておきます。

仕事・エンジニアリング

2021 年に引き続き、最強の登山地図アプリサービス YAMAP を支えるインフラの運用を頑張っていきます。

そして、エンジニアとして、非常に力不足を感じているので、エンジニアとしてのインプットとアウトプットを頑張っていきます。

具体的には、以下のような内容に取り組みます。

  • mizzy さんのノウハウを出来る限り吸収する
  • 技術ブログを月に 1 記事以上
  • 今まで作った OSS ツールのメンテナンスを継続する
  • AWSGCP の資格を 1 つ以上取得する

読書

引き続き、積読を処理することが出来ませんでした。本を読んでいないので、随所で語彙力の無さを痛感しました。そして、インプットが減るとアウトプットも減る傾向があり、日記以外のブログ記事を書くことも減ってしまいました。

ということで、2022 年は、昨年に引き続き、「本を月に 1 冊 (雑誌も可) 以上読む」ことを目標にしたい...のですが、「出来るだけ毎日、10 〜 15 分本を読む」ことを目標にしたいと思います。そして、日記の中で、「今日の読書」というコーナーを設けて、読んだ内容をまとめるようにします。

まずは、iPad mini の中に積読となっている書籍から読んでいこうと思います。

英会話

引き続き、会社の福利厚生でレアジョブを利用した英会話レッスンを受けていますが、英会話が楽しいと思えるレベルに成長出来たと思います。

引き続き、「英会話を楽しむ」ことを継続出来ればいいなあと考えています。

ラン

とにかく怪我の多い一年でした。

2022 年も各所に痛みを抱えたままのスタートなりましたが、メリハリを付けながら、怪我とうまく付き合いながら走っていこうと思います。

ということで、以下のような目標を持って、走っていこうと思います。

  • 怪我とうまく付き合う (準備運動、整理運動、日頃のストレッチを念入りに)
  • 補強を必要に応じて行う
  • 走行距離に拘らず、一回、一回のランニングの質を高める
  • 練習の中でフルマラソンと同じ時間だけ走る (3 時間とか
  • フルマラソンサブスリーに返り咲く

家族

今年の元旦で、結婚 11 年目に突入しました。これからも奥さんと二人、手を取り合い、笑いの絶えない毎日を送ります。時間があれば、奥さんとの時間を大切にしていきます。そして、10 周年を記念して、自宅を購入しました。四十代半ばを過ぎて、多くの借金を抱えることになりましたが、仕事を頑張って一日でも早く借金返済に向けて頑張っていきます (笑

奥さんは、書家として少しずつお仕事を頂いていて、自分の好きな書に向き合っている奥さんを見ていると、出会ったころ以上に魅力的な女性に見えていて、この女性と結婚出来て本当に幸せだなと感じています。

www.hiromi-oshinagaki.com

f:id:inokara:20220102185241p:plain https://www.instagram.com/hiromi_oshinagaki/

f:id:inokara:20220102185336p:plain https://www.instagram.com/hiromi_oshinagaki/

これからも自分の目標に向かって邁進して欲しいと思います。

奥さんのお義母さんや鹿児島の両親は、大きな病気もなく元気でいてくれるだけで、本当に感謝しかありません。コロナの影響で、なかなかリアルに会う機会に恵まれませんが、これから、どれだけ親孝行出来るかわかりませんが、時間がある限り、親孝行していきます。

以上

2022 年の目標的なものをダラリと書いてみました。

今年の年末に、どのくらい目標を達成出来ているか不安ではありますが、マイペースで頑張っていきます。

ということで、本年も宜しくお願い致します。

2022 年 01 月 01 日 (土)

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

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

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

ジョギング

レアジョブ

今日もお休み。

朝から

おせちやらヒレステーキやらで胃袋はヘトヘト、でも、美味しゅうございました。

2021 年 12 月 31 日 (金)

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

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

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

ジョギング

レアジョブ

今日もお休み。

夕飯

「年越しそば」ならぬ「年越しパスタ」の納豆パスタを作って食べた。美味しゅうございました。

ふりかへり

毎年恒例のふりかへりをギリギリで書ききりました。

inokara.hateblo.jp

初老丸を支えた技術 2021 〜 2021 年の振りかへり、結婚 10 周年に寄せて 〜

tl;dr

2021 年を振り返ってみたいと思います。

ちなみに、去年の振り返りの記事は以下の通りです。

inokara.hateblo.jp

コロナ禍

こんなにも続くとは思っていなかったコロナウィルス感染症の影響。多くの人達の命を奪い、今も尚、新たな変異株が世界に猛威を奮っています。ただ、この一年で、多くの人達の努力によって、少しずつ世界は明るい方に進んでいるような気がします。まだまだ、予断は許さない状況ですが、うがい、手洗い、密を避けるといった、我々でも出来る小さい努力を重ねていきながら、この未曾有の事態を乗り越えていきたいと思います。

骨粗鬆症

骨密度も危険水域を超えて、介抱に向かっていて、副作用の強い薬は飲む必要がなくなりました。引き続き、骨を強くする薬は飲み続けていますが、年明けの診察で、良い結果を聞けるといいなあ。

ケガとランニング

今年一年の Fitbit で計測しているアクティビティは以下のような感じでした。

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

Strava で計測しているアクティビティは以下の通りです。

f:id:inokara:20211231222739p:plain

年間で 2,040 キロくらい走ったことになります。これが多いのか少ないのかは分かりませんが、年間を通してコンスタントに走ることが出来なくて本当に残念でした。もちろん、レースにも出ることもなく、怪我ばかりしていました。振り返ってみると、走行距離にこだわるばかりに、20 キロ走を連続していれたり、休みなく、毎日走ることを自分に課していました。

そりゃ、怪我しますよね...

そんな中で、毎日走っている山王公園で、一緒にトレーニング出来る仲間との出会いがありました。一人で走るよりも、一緒に走ってくれる人がいることが、こんなにもランニングを楽しいものにしてくれるんだなと痛感しました。

ということで、来年は、走行距離に拘らず、メリハリのあるランニング生活を送りつつ、ランニングなコミュニティ活動を活性化しつつ、サブスリーランナーに返り咲けるように努力を重ねていきたいと考えています。

仕事

YAMAP 三年目。引き続き、素晴らしいメンバーに支えられて走り切ることが出来たと思います。

継続して、リモートでも特に不都合なく業務が行えたことは本当に良かったですし、リモートということで、お昼ごはんは奥さんと一緒に食べたり、気分転換に洗濯物干しや取り込みや掃除等、仕事と家事 (の手伝い) のバランスをうまくとりつつやっていけたかなと思っています。

大胆なチャレンジは出来ませんでしたが、YAMAP インフラの安定稼働に対して、多少の失敗はありつつもアグレッシブに取り組めたかなと自負しています。

そして、10 月から、Serverspec に出会ってからの憧れの存在だった mizzy さんと一緒に仕事をさせて頂くことになり、日々、Infrastructure as code の様々なノウハウのシャワーに圧倒されています。mizzy さんの 1 コミット、1 コメントを一生に一度あるか無いかの贅沢だと思って、必死に吸収していきたいと思います。

英会話

なんとか一年続けることが出来ました。しかし、なかなか上達しません。本当にセンスが無いのかもしれません。ただ、今年になって出会った講師 (正蔵先生) とのレッスンが、最近の楽しみの一つになっています。

教材のレッスンよりも雑談の方が長いという...

ただ、英語で「あなたの頭は美しい、どうやって剃っているんだ」とバンバン英語でのイジりを聞き取ることが出来るようになったことは大きな進歩かもしれません。

家族

奥さんのお品書きは継続しています。

www.hiromi-oshinagaki.com

一年間、本当に続けられることは尊敬しかありません。そして、それらの作品を通して、陶芸家の方や、海外の方との出会いがあったりして、コロナ禍とは思えないくらいに多くの人との出会いがあり、本当に羨ましい限りです。

去年も書きましたが、控え目に言っても、奥さんがしたためる文字には力があり、優しさがあり、心が籠もっていると思います。そして、毛筆綴る食事のメニュー、どれもこれも美味しくて、骨粗鬆症を患ってしまった自分の為に、骨の為になるようなメニューを色々と考えて作ってくれて本当に感謝しかありません。

ありがとう。

我々夫婦は結婚 10 周年、来年からは 11 年目に突入します。今日も鍔迫り合いのようなケンカをしながら年末の大掃除を頑張りました。鴨池小学校 6 年生の同級生だった憧れの女の子と結婚出来たという幸せを噛み締めつつ、これからも自分たちなりの歩幅で楽しく暮らしていきたいと思います。そして、結婚 10 周年にかこつけて、ビックな買い物をしちゃいましたので、これからも体に気をつけて借金を返していく所存です 😂

これからもよろしくお願いします。

以上

そろそろ 2021 年が終わろうとしています。

こうやって大晦日を迎えることが出来たのも、奥さんをはじめ、父や母、会社のメンバー等の支えがあったからだと思います。

本当にありがとうございました。

良いお年をお迎えください。

2021 年 12 月 30 日 (木)

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

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

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

ジョギング

走り納めをしてきた。

レアジョブ

今日もお休み。

ランチ

久しぶりに俺たちの玄海丸でお寿司ランチだった。美味しゅうございました。寿司やお刺身の盛り合わせの予約を承っていて、年末年始感が高まった。

夕飯

久しぶりのお鍋。お出汁の素が無かったので、創味シャンタンを使って出汁を取った。まあまあ美味しゅうございました。

JAWS-UG 福岡もくもく会 #56

jaws-ug-kyushu.doorkeeper.jp

申し込んでいたのに、参加するのをすっかり忘れてしまっていた...アタタタ.... 最後の最後にやらかした。お恥ずかしい限りです。