-
Jest再入門 - マッチャー編
Jestはオールインワンのテストフレームワークです。 テストランナーだけでなく、各種マッチャーもJest内でExpect APIとして提供されています。 利用方法はJasmineとほとんど同じで、こちらの利用経験があれば戸惑うことはないはずです。 ここでは、よく利用するものについて筆者の独断でピックアップして、カテゴリ別にまとめます。 全てのマッチャーは以下公式ドキュメントを参照してください...
記事を読む -
Jest再入門 - 導入編
JestはMeta(旧Facebook)社によって開発されたJavaScript向けのテストフレームワークです[1]。 Jestは、テストランナーからマッチャー、カバレッジ等のテストに必要な一連の機能が備わっています。また、それらのセットアップが非常に簡単であることから、現在のJavaScriptで最も多く利用されているテストフレームワークです...
記事を読む -
第4回 ドメイン層の実装とサービスの完成
シリーズ4回目は Spring Integration を使うドメインイベントの発行 (publish) について説明します...
記事を読む -
OpenID Connect でパスワードレス認証を使う
「WebAuthn でパスワードの無い世界へ」に続く「Envoy Proxy による HTTPS Proxy」の記事でプライベートネット内にパスワードレス認証ができる環境構築の方法を説明しました。この記事では、OpenID Connect の Code Flow を使ってパスワードレス認証を説明します。 サービスの概要 # 題材は宇宙船の冬眠ポッド (hibernation pod) です...
記事を読む -
ベイズ統計をお手軽に、統計解析ツールJASPの紹介
近年ベイズ統計学が注目されています。 ネットでも書店でもベイズ統計学やベイズの定理、ベイズ推定に関する情報が増えたと感じています。 ベイズ統計学を「体験してみたい」「ちょっと使いたい」と思った時に統計解析に強いプログラミング言語Rを使ってコードをガリガリと書いていくのは入門者にはかなり敷居が高いと思います...
記事を読む -
統計学で避けて通れない自由度の話
”自由度”…統計学を勉強したことがある人なら、誰でも一度は耳にしたことのある言葉でしょう。 ”自由度”を教科書通りに説明すると「自由に決めることができる値の個数」ですが、何度聞いても何度考えてもピンときません。 統計学を勉強していて”自由度”で躓いた人も多いのではないでしょうか。 今回はそんな”自由度”についてお話したいと思います...
記事を読む -
Envoy Proxy による HTTPS Proxy
「WebAuthn でパスワードの無い世界へ」の記事では、AWS Fargate を使って Keycloak を起動してデモンストレーション環境を構築しました。 記事で説明した環境は、Keycloak のための AWS Fargate 以外に、ロードバランサ (ALB) など時間課金のリソースも含んでいました...
記事を読む -
GitHub の脆弱性検出機能 Code scanning alerts と CodeQL について
GitHub の public リポジトリでは、Settings の Security タブから Code scanning alerts を有効化できます。 Code scanning alerts は、コード分析エンジン CodeQL を使用してコードをスキャンし、検出したコードの脆弱性をアラートとして表示します。対応しているプログラミング言語は以下です...
記事を読む -
GitHub の Dependabot version updates で依存ライブラリを継続的に更新する
開発しているソフトウェアのコードベースを久々に変更しようとすると、使用しているライブラリのバージョンが古くなっていて、そのままだと作業継続できないという状況に陥ります。最新、またはメンテナンスされているバージョンを取り込んで動作確認するのに時間が取られてしまい、肝心のコードにたどりつかず、「明日から本気出す」ということよくありますよね...
記事を読む -
第3回 OpenAPI Generator 利用時の Generation Gap パターンの適用
前回はドメイン駆動設計の話題を中心に説明しました。 今回は OpenAPI Generator の使い方について説明します。 説明する OpenAPI Generator のバージョンは 6.0.0 です。 OpenAPI Generator はさまざまな言語とフレームワークに対応したクライアントサイド、サーバーサイドのコードを生成します...
記事を読む -
何となくは通用しない(カイ2乗適合度検定)
取り得る状態が「はい・いいえ」など2つのみのデータの検定(2項検定)を以前のブログで扱いましたが、今回は「多値」データの検定についてご紹介します。 カイ2乗検定とは # 取り得る状態が「はい・いいえ」など2つのみの場合は「2項検定」を使用しましたが、状態が3つ以上の「多値」データである場合の検定は「カイ2乗検定」を使用します...
記事を読む -
WebAuthn でパスワードの無い世界へ
複数のサービスにアクセスするための異なるパスワードを記憶しておくことは困難で、結果としてパスワードを使いまわすといったセキュリティリスクの高い行動パターンをとりがちです。 最近のスマートフォンやPCでは指紋認証や顔認証のような生体情報を用いた認証が可能になっています。このようなデバイスを活用してより安全性の高い認証の仕様として、FIDO2 (WebAuthn) があります...
記事を読む -
Java17にBump upしてみた - 使った/使わなかった新機能(後編)
Java17にBump upしてみたの後編の今回は前編で紹介できなかった3つの機能を紹介していきます...
記事を読む -
君子は豹変すべし(ベイズ更新)
「君子は豹変す」という諺があります。 ”豹変”という言葉を聞くと「考えをコロコロ変えて主義主張が無い」ような悪いイメージがあるかも知れませんが、諺の本来の意味は「(出来る人は)過ちを速やかに改め、自らを一新する」であり良い意味で使われるものです。 昔のドキュメンタリー番組で優秀なプロジェクトマネージャが「決断しないで後悔するよりも、決断して後悔する方を選ぶ」とおっしゃっていました...
記事を読む -
Cypress Component TestingでVueコンポーネントの単体テストをする
E2Eテストのフレームワークとして有名なCypressですが、コンポーネントテスト(Component Testing)機能もあります。 このコンポーネントテストは2021-04-06にアルファ版として導入されていましたが、2022-06-01のCypress v10のリリースでベータ版に昇格しました...
記事を読む -
Spring Boot と Apache Camel の統合
2002年の「Patterns of Enterprise Application Architecture (エンタープライズアプリケーションアーキテクチャパターン)」と2003年の「Domain-Driven Design: Tackling Complexity in the Heart of Software (エリック・エヴァンスのドメイン駆動設計)」...
記事を読む -
GitHub Actions - 再利用可能ワークフローと手動トリガーで入力値の扱いを統一
これまで、GitHub Actions の手動トリガー(workflow_dispatch)では、入力値を扱う際、github.event.inputs.foo のように event コンテキストから値を取り出す必要がありました。 以前紹介した再利用可能ワークフロー(workflow_call)では、入力値を inputs.foo のように inputs コンテキストから取得します...
記事を読む -
選択された結果を分析する(2項検定)
皆さんは仕事やプライベートで「アンケート」への回答を求められた経験をお持ちだと思います。 アンケート回答方法としては複数の選択肢から選ぶもの、点数を付けるものなど様々でしょう。 回答する側から言わせてもらえれば、手間のかかるアンケートだと回答する気力が失せるので、回答の選択肢が「はい・いいえ」くらいの簡単なアンケートの方が応えやすいですね...
記事を読む -
第2回 イベントストーミングとドメイン駆動設計の戦略的設計
この記事は、「第1回 OpenAPI Generator を使ったコード生成」の続編です。 この記事のコードは、GitHub リポジトリに置いています。 前回の記事では、簡単に Spring Boot アプリが作成できるということを強調するためにシンプルな構成のコードにしていました。 ここで、少し現実感を持つために、このアプリケーションを利用するストーリーを描いてみます...
記事を読む -
Amazon ECRのライフサイクルポリシーで開発環境向けのイメージのみ削除する
つい先日、EKSを利用している社内システムで、とあるPodが起動できない障害がありました。 単純な原因でしたが、恥ずかしながらECRのライフサイクルポリシーに関して理解できていなかったので、ここでは自戒の念を込めて投稿します。 原因 - ライフサイクルポリシー # 問題のPodの状態を探ってみると、PodからコンテナイメージのPullに失敗しているようでした...
記事を読む