DDDを開発現場に落とし込む

Webアプリの開発現場において、Spring Bootを使っていわゆるMVCの三層モデルで構築してきました。
最近流行りのドメインモデルをきちんと理解してオブジェクト思考で開発することのメリットを最大限に生かしたいなと。

DDD本といえばまずはこの2冊。
“エリック・エヴァンスのドメイン駆動設計”

“実践ドメイン駆動設計”

実践ドメイン駆動設計の方がより具体的にイメージがしやすいので読みやすいが、それでもなかなか理解するのが難しい部分も多い。

そこで合わせて読みたいなと思ったのがこちら。
“現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法”

一見、DDD本には見えない題名ですが、ドメインモデルを駆使した設計の話が全体で説明されており、難解なDDD本の理解を助けてくれるものと思いました。
これだけを読むというよりはこの本を読み進めつつ、”実践ドメイン駆動設計”の該当する章も参照するなどすると理解が深まると思います。

最近、読んだ本では結構オススメです。

Dash Buttonの新規登録ができない

以前にミネラルウォーターと洗濯用洗剤のDash Buttonを買って使っています。

つい先日、オールフリーのDash Buttonを購入しました。これです。

オールフリー Dash Button

新品価格

¥500から
(2018/7/16 22:39時点)

最近は炭酸水やオールフリーなどのノンアルコールビールにはまっています。
暑くなってきたのでオールフリーを切らさないように購入しました。

以前にもDash Buttonは設定したことあったので何気なく設定を始めたのですがなんかエラーが出て設定が完了できません。。

たまたまかなと思って、端末を再起動したりルータの再起動したりしながら10回くらい試してみましたが全然解決できません。
そこでサポートにチャットお問い合わせをしてみました。

始めは普通のトラブルシューティングを案内されます。
1、 Dash Buttonがお使いのスマートフォンの近くにあること
2、Wi-Fiネットワークの接続範囲内であること
3、Dash Buttonのセットアップ時に使用したAmazonアカウントで Amazonショッピングアプリにサインインしていること

また、「他のスマートフォンを使用して、再度接続を試していただけますでしょうか。」ということで手元の他のiPhoneでやってみましたがだめ。

そうするとサポートは言いました。

上記のトラブルシューティングを行って問題が改善できなっかたので、恐らくネットワークの不具合可能性が高いです。
お客様はプロバイダーまたはネットワーク管理者にお問い合わせいただけますようお願い申し上げます。

ん?なんとネットワークの問題!
いやいや、他の機器は同じネットワークで問題なくインターネットに接続できているし、別のダッシュボタンは動いてますよ、と伝えたところ別の部署へエスカレーションされました。

そちらの担当者いわく

お調べしましたところ、お客様は、Amazon.comのアカウントと結合されていることがわかりました。
大変申し上げにくいのですが、アカウントを結合されている場合、Dash Buttonの登録ができない問題が発生しております。

きたーー
またこの問題ですね。

また「調査中ではございますが、長期間未解決の状況でして、今すぐに解決することが難しい状況です。」とのことで解決の目処が立っていない模様。

ということで返金手続きを取ることになりました。

“Amazon.comのアカウントと結合” しているユーザはダッシュボタンの新規導入はできない状況のようです。
ヘルプや購入ページにそういった記載は一切ありませんでした(2018-07-16現在)ので該当する方は気をつけましょう!

追記
Wifi設定だけでもできていれば別の用途に使えるかな?と思ったけれどできなそうだった。
macアドレスが拾えない。。

サントリー オールフリー 350ml×24本 ノンアルコールビールテイスト飲料

新品価格

¥2,299から
(2018/7/16 22:38時点)

AWS API Gateway & Microservices on ECS

こういう構成のシステムを構築したいのだけどAPI Gatewayで認証をかけてもALBをpublicにしないといけないとかでそれも考慮が必要。
良いやり方がないか色々と試行錯誤をしてようやく1つできそうな方法を思いついたけれどこれがベストなのか不明。

figure1

今回、認証したいのはエンドユーザではなくAPIを利用するサーバ。
IP制限とかできれば良いのだけれど、それは難しいという要件。

その方法というのは以下の通り。
1. APIを利用するサーバはCognitoからtokenを取得
2. そのtokenをHTTPヘッダに付与してAPIをリクエスト
3. APIサーバ側ではそのトークン(JWT)の署名検証を行う

これをnginxのモジュールとして実装するか、Webアプリ側のfilterとして実装する想定。

イメージ図

署名検証用のlambda
https://github.com/awslabs/aws-support-tools/blob/master/Cognito/decode-verify-jwt/decode-verify-jwt.py

署名検証用のlambda functionの呼び出しサンプル

参考にした資料

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

新品価格
¥3,672から
(2018/7/16 22:10時点)

6ヶ月で英語を身に付けたい

このTED観ました。

たくさん聞いてリズムをつかんでコミュニケーションツールとしてとにかく使うって感じか。

visual code studioを改めて使ってみる

しばらくAtomを使っていたのだけれど、やはりなんか動作が重い気がするしvisual studio codeにしてみる。

まずはAtomでやっていたようにgistで設定の同期ができるようなのでプラグインを入れてみました。

細かいやり方はこの辺のサイトを参考に。

あとはpythonとgolangあたりの環境を整える

PlantUMLも使えるようにしておこう。

node.jsなんかも書けると捗るかなあ。

AWSのsdkはどの言語が一番良いのだろう?
なんか言語によって機能の開発速度に差があるようなことを聞いたことあるのだが、、

KyashのApplePay対応は誤報

日経の飛ばし記事だったようです。

この報道につられてかいくつかApplePay対応しているかのような記事がありますが実際は登録できませんでした。
一応、サポートに聞いてみました。

誠に恐れ入りますが、KyashカードはApple Payにご登録いただくことがができません。
なお、実現性の可否や時期につきましても現状ではお答えすることができません。

とのことで記事については”Kyashの公式のご案内ではございません”ということなのでiPhoneしか持っていない場合はSuicaのチャージに利用するのが唯一の実店舗での使い方になりそう。

Google Payへの対応はホンモノ。

嘘の記事が出回っているので否定するコメントはしておいて欲しかったなあ。

Tim Cook の式辞 in Duke University 2018

クック船長のありがたいお言葉。

ここの部分が好きです。
既成概念にとらわれていては、よくならない。

Don’t just accept the world you inherit today. Don’t just accept the status quo. No big challenge has ever been solved, and no lasting improvement has ever been achieved unless people dare to try something different. Dare to think different.

Finally

安室ちゃんのライブに行ってきました!

学生の頃によく聴いていたなと。

セットリストは色々なブログで予習した通りの構成でした。

25thでの引退を発表して始まったファイナルツアー。

42歳だなんて思えないパフォーマンス。

同年代としてパワーもらえました。

二階席三塁側からのステージ。