【PHP】【Laravel】laravel/duskで「php artisan dusk」 を実行すると「session not created」が出るときの対処法

はじめに

Docker上でLaravelのE2Eテストをするときに出たエラーがあったので対処法があるのでメモ書き。

前提条件

  • Docker for Macで実行されていること
  • Docker上でPHP8.0系, Laravel8系が動作すること

以下に検証用のリポジトリがあるので構成を参考にしてもらえればと思います。

github.com

原因

Chromeのバージョンが最初にインストールしたバージョンよりも新しくなっており
古いバージョンで実行しようとしていた。

現象

f:id:fujikawa-y:20220125095907p:plain

対応方法

duckでChromeバージョンを上げることで解決

php artisan dusk:chrome-driver

f:id:fujikawa-y:20220125100055p:plain

f:id:fujikawa-y:20220125100107p:plain

参考

stackoverflow.com

【AWS】AWSのメルマガを購読して$25クレジットコードをもらおう

はじめに

ここ数ヶ月で「これは結構お得だな」と思ったのでブログで共有します。

最近は会社の福利厚生で一定額までAWS費用を負担してくれるところもありますがすべての会社がそうではありません。
しかし、少しでもAWSを無料で試す方法はないのか?と考えていたところ「$25クレジットコード」がもらえる方法がありましたので共有します。

AWSウェブマガジン

2020年2月に創刊されたのが「builders.flash」です。

aws.amazon.com

創刊についてのお知らせは以下の通りです。

aws.amazon.com

ただし、ウェブマガジンだけではクレジットコードは受け取れません。

下記の画像を押して、メルマガ登録しないといけません。

f:id:fujikawa-y:20211104091045p:plain
メルマガ登録

やり方

メルマガを登録します。

builders.flash メールメンバー登録 | AWS

会社名など書きますが、会社に連絡は来たことありません。 特に利用目的では、「個人目的」にするといいと思います。

登録すると以下のようなメルマガが届きます。

f:id:fujikawa-y:20211104091444p:plain
メルマガ一部

記事の下に行くとキーワードとリンクがあり、リンクを押すと入力画面が出て入力していきます。

f:id:fujikawa-y:20211104091633p:plain

入力

条件は以下の通りのようです。

  • builders.flash メールメンバーに登録している日本に所在地を持つお客様。
  • AWS アカウントをお持ちのお客様(AWS アカウント ID の入力のない申請は無効となります。AWS アカウントの作成方法はこちら »)
  • メールマガジンに記載の今月のキーワードを正しくご入力いただいていることが必要です。
  • お一人様 1 回/月 の申請のみ有効です。同一のお客様からの複数の申請は全て無効となります。より多くのお客様へご提供するための条件となりますので、ご理解のほどお願い申し上げます。
  • builders.flash がご提供するクレジットコードは、年間合計 10 回まで申請が可能です。(毎月のキーワードでの申請は各 1 回までとなります) 10 回を超える申請はクレジットコードの仕様に伴い、利用ができない場合がございます。あらかじめご了承ください。

※上記は入力画面から引用しました。

後は下記の通り入力するだけです。

f:id:fujikawa-y:20211104092054p:plain

入力してから翌月の第1週目になるとクーポンコードがメールアドレスに届きます。

f:id:fujikawa-y:20211104092451p:plain

後は下記の手順通りクーポンを入力するだけで完了です。

aws.amazon.com

まとめ

AWSの書籍を買って「いざやってみよう!」と思ってもお金を取られるだけでモチベーションが下がります。 こういうのを使って上手に学習して仕事に繋げて行ければと考えています。

ちなみに自分が最近買ったAWSの書籍を貼っておきます。
コンテナ学習にはかなりオススメな一冊となっています。

【Miro】Miro Liteがリリースされたので試してみた

はじめに

コロナの影響でリモートワークが始まり自宅にホワイトボードがなく困っていました。
ホワイトボードの代わりとなるものを探していたところ見つけたのが Miro でした。

最初はフリープランで使っていたのですが、柔軟に使えるようにしたいと思い
「Consultant Plan」を契約しました。

miro.com

ホワイトボードの数も無制限に作れプライベートボードも作れる。
さらにパスワード付きで共有もできたりします。

また、ツールもかなり揃っておりこれだけでだいぶ捗るようなものになっています。

Miroとは?

はじめにに書いた通り、Miroはオンラインでコラボレーションとするホワイトボードプラットフォームです。
ディスカッションやブレインストーミングアジャイルワークフローなどの計画や管理まで可能なツールです。

詳しくは以下のページ、動画をご覧ください。

help.miro.com

問題点

通常のMiroには問題点がありました。

  • ログインしないと使えない

これは地味にハードルが高いものだと今回の件で改めて思ったことです。
サインアップ、サインインせずに気軽にオンラインホワイトボードを使うことはできないのか?と思ったこともありました。

そこでMiro Liteというのがリリースされました。

Miro Liteとは?

Miro Liteはサインアップ、サインインなしで使える無料のシンプルなオンラインホワイトボードとなっています。
ブレインストーミングや1on1で使えそうなものは一通り揃っていると書かれているので実際に触ってみました。

help.miro.com

使い方

まず http://miro.com/lite/ にアクセスします。

説明が出てきますがそのまま「Create a board」をクリックします。 f:id:fujikawa-y:20201118101341p:plain

そうするとURLにランダムな値が付与されたURLが作成されます。

f:id:fujikawa-y:20201118095142p:plain

サインインしていないブラウザだと説明が載ったホワイトボードが作成されます。 f:id:fujikawa-y:20201118101535p:plain

すでにサインインしているブラウザかつ1度でもMiro Liteを使ったブラウザだと画面はこんな感じでいつものMiroですね。 f:id:fujikawa-y:20201118095429p:plain

Chromeのシークレットウインドウで別ユーザーとしてアクセスしてみます。 f:id:fujikawa-y:20201118095508p:plain

ユーザーが2人いることになっています。

テンプレートやツールについて

通常のMiroとどのくらい機能の差があるか確認します。

Miro Lite f:id:fujikawa-y:20201118095720p:plain

かなりテンプレートが絞り込まれ必要なものだけになっているという考えでいいと思います。
ツールはペンや付箋、矢印があるのでこれだけあれば問題なさそうです。

比較としてMiroのテンプレートは以下の通りです。 f:id:fujikawa-y:20201118095950p:plain

使ってみた

動画を残せていないのですが、実際に操作した結果がこんな感じとなります。

f:id:fujikawa-y:20201118100554p:plain

残したい場合は画像かPDFに残すことができます。

f:id:fujikawa-y:20201118100758p:plain

サインアップ、サインインしていない場合はユーザー登録をして残す動線のようです。
なお、サインインした状態で Miro Lite のホワイトボードを見ると保存できるUIとなりました。

f:id:fujikawa-y:20201118100935p:plain

注意点

画像を見てわかる通り 24時間 は保持されるようですが、24時間経ったら消されてしまうようです。

まとめ

Miroは他のオンラインホワイトボードでも一歩先を行っていると思っているものなのでぜひ使ってみてはいかがでしょうか。

【Ruby】【Clean Architecture】オープン・クローズの原則をRubyで書いてみた

はじめに

最近、クリーンアーキテクチャの話が話題に上がっており
「理解したつもりでもコードで示さないと理解したことにならない」
という気持ちがあったので簡単ではあるが、Rubyで書いてみました。

環境

前提条件

ruby コマンドで実行できること

実行

オープン・クローズの原則に沿っていないコード

clean_architecture_ruby/order_service.rb at main · Y-Fujikawa/clean_architecture_ruby · GitHub

# frozen_string_literal: true

class OrderService
  # OCP(オープン・クローズの原則)に反したメソッド
  # 新たな条件が追加された場合、既存メソッドを修正しないといけない
  def order(order_type = nil)
    case order_type
    when 'eat_in'
      # 店内の処理
      p '店内'
    when 'take_out'
      # 持ち帰りの処理
      p '持ち帰り'
    when 'delivery'
      # 配達の処理
      p '配達'
    else
      # それ以外
    end
  end
end

order_type = 'take_out'
OrderService.new.order(order_type)

オープン・クローズの原則に沿っているコード

clean_architecture_ruby/ocp/after at main · Y-Fujikawa/clean_architecture_ruby · GitHub

# frozen_string_literal: true

require_relative './order/eat_in.rb'
require_relative './order/delivery.rb'
require_relative './order/take_out.rb'

class OrderService
  def order(order_type = nil)
    order_type.call
  end
end

order_type = EatIn.new
OrderService.new.order(order_type)

clean_architecture_ruby/ocp/after/order at main · Y-Fujikawa/clean_architecture_ruby · GitHub

# frozen_string_literal: true

class EatIn
  def call
    p '店内'
  end
end
# frozen_string_literal: true

class TakeOut
  def call
    p '持ち帰り'
  end
end
# frozen_string_literal: true

class Delivery
  def call
    p '配達'
  end
end

まとめ

文字で説明するよりもコードの方がわかりやすくていいですね。
これを機にコード化できるところはしていきます。

参考

【iOS】【2段階認証】iOSの2段階認証を「Google Authenticator」から「Microsoft Authenticator」にした

はじめに

新しいiPhoneが発売されました。
早速、移行しようとしたしたのですが、単純にやってしまうと移行しなくて積む可能性があったので念の為確認していました。

その結果、以下が1番気をつけなければいけないようです。

上記あたりが1番慎重にやらないといけないもののようです。

  • モバイルSuicaは一旦削除して、新しいiPhoneで登録すればいけそう。
  • LINEはバックアップの手順が公式で書かれているので問題なさそう。

問題なのは「二段階認証アプリ」でした。
もともと「Google Authenticator」を使っていたのですが
問題点として iCloudにバックアップが取れない というところです。

iPhoneXSにしたときよりも2段階認証するサービスの数が増えており
仕事でも使うようになり、かなりの数となりました。

環境

調査

入れ替える条件は以下の通りです。

  • Google Authenticatorと同等以上の機能があるもの
  • iCloudでバックアップできるもの
  • 2段階認証アプリ自体にもFaceIDなどをつけられること(つけられなくてもOK)

結果

Microsoft Authenticator にしました。

Microsoft Authenticator

Microsoft Authenticator

apps.apple.com

まず、条件に全て満たしておりマイクロソフトから出ているというのがあったからです。
バックアップ方法について、個人用 Microsoft アカウント の作成が必要ですが
Gmailアカウントを使って作成できるので手間ではありませんでした。

ドキュメントは以下の通りです。

docs.microsoft.com

まとめ

パスワードつきでiCloudにバックアップを取っておいて
そのまま2段階認証もすべて移行できるようになりとても楽になりました。

【CloudFront】【Lambda@Edge】オリジンレスポンスでリダイレクト処理を入れる方法

はじめに

AWSでSPA(シングルページアプリケーション)のインフラ部分を作っているときに
要件として
「トップページやその配下のディレクトリにもページがある。ただし、ないディレクトリが指定されたらリダイレクトする」
という話をもらいました。

それまではトップページしかなかったので、トップページ以外の場合はリダイレクトしていたが
配下のディレクトリにも気を配る必要があります。

それを解決するために Lambda@Edge を使って対応してしました。
すぐに忘れてしまいそうなので簡単にですが手順をまとめておきます。

環境

前提条件

  • AWSコンソールにログインできること
  • Lambda@Edgeを作成できるIAMユーザーであること ※CloudFrontが設定されていなくてもいいが、設定されていると検証しやすい

調査

CloudFrontは以下の順で処理されます。

  • ビューアーリクエス
  • オリジンリクエス
  • オリジンレスポンス
  • ビューレスポンス

今回、コンテンツが取れなかった場合なので オリジンレスポンス に対して処理を追加していきます。

対応方法

AWSのドキュメントにやりたいことが書いてあったので、手順通り作成します。

Lambda@Edge 関数の例 - Amazon CloudFront

新規にLambda関数を作成する。

f:id:fujikawa-y:20201022104505p:plain

雛形を修正する。

f:id:fujikawa-y:20201022104532p:plain

AWSのドキュメントに書かれいてたコードを記述する。
そのままだとクエリストリングがそのまま渡ってしまうので不要な処理を削除する。

f:id:fujikawa-y:20201022104550p:plain

$LASTETではLambda@Edgeが使えないのでバージョンを作成する。

f:id:fujikawa-y:20201022104617p:plain

バージョンの発行が行われました。

f:id:fujikawa-y:20201022104637p:plain

この後は、作成済みのCloudFrontに紐づけてあげれば完成です。 紐付けるのはCloudFrontのオリジンレスポンスとなりますので注意してください。

まとめ

これでエラーページではなく、トップページに戻れるようになりました。

参考

Lambda@Edge 関数の例 - Amazon CloudFront

【Datadog】【Rails】Railsのログを出力するとき「日付とプロセスID、リクエストID」を出力されないようにする

はじめに

Webサービスの開発でDatadogのLog Managementを使うときの小ネタ。

lograge というライブラリを使い、Datadog Logsにログを転送していたのですが
標準ログ+JSONという形になってしまいLogsで自動で解析してもらえなくなってしまった。

なので、標準ログも含めたい場合JSONの中に入れてやると良いです。

環境

前提条件

lograge を使って何かしらログが出力されていること。

調査

logrageJSON化したにも関わらず、日付とプロセスID、リクエストIDが出てしまう。

I, [2020-08-24T15:54:36.321933 #1]  INFO -- : [95a6f86c-c6ca-45fa-a9e9-1e6ee241d034] .... 以下略

原因と解決方法

制御しているのは /enviroment/production.log にありました。

# Prepend all log lines with the following tags.
config.log_tags = [:request_id]

# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new

これを無効にすれば出力されなくなります。

まとめ

これで本番環境で正常にDatadogでログが解析できるようになりました。

参考

Railsのログについて(Rails.logger) | 酒と涙とRubyとRailsと