【Miro】Miro Liteがリリースされたので試してみた
はじめに
コロナの影響でリモートワークが始まり自宅にホワイトボードがなく困っていました。
ホワイトボードの代わりとなるものを探していたところ見つけたのが Miro でした。
最初はフリープランで使っていたのですが、柔軟に使えるようにしたいと思い
「Consultant Plan」を契約しました。
ホワイトボードの数も無制限に作れプライベートボードも作れる。
さらにパスワード付きで共有もできたりします。
また、ツールもかなり揃っておりこれだけでだいぶ捗るようなものになっています。
Miroとは?
はじめにに書いた通り、Miroはオンラインでコラボレーションとするホワイトボードプラットフォームです。
ディスカッションやブレインストーミング、アジャイルワークフローなどの計画や管理まで可能なツールです。
詳しくは以下のページ、動画をご覧ください。
問題点
通常のMiroには問題点がありました。
- ログインしないと使えない
これは地味にハードルが高いものだと今回の件で改めて思ったことです。
サインアップ、サインインせずに気軽にオンラインホワイトボードを使うことはできないのか?と思ったこともありました。
そこでMiro Liteというのがリリースされました。
Miro Liteとは?
Miro Liteはサインアップ、サインインなしで使える無料のシンプルなオンラインホワイトボードとなっています。
ブレインストーミングや1on1で使えそうなものは一通り揃っていると書かれているので実際に触ってみました。
使い方
まず http://miro.com/lite/ にアクセスします。
説明が出てきますがそのまま「Create a board」をクリックします。
そうするとURLにランダムな値が付与されたURLが作成されます。
サインインしていないブラウザだと説明が載ったホワイトボードが作成されます。
すでにサインインしているブラウザかつ1度でもMiro Liteを使ったブラウザだと画面はこんな感じでいつものMiroですね。
Chromeのシークレットウインドウで別ユーザーとしてアクセスしてみます。
ユーザーが2人いることになっています。
テンプレートやツールについて
通常のMiroとどのくらい機能の差があるか確認します。
Miro Lite
かなりテンプレートが絞り込まれ必要なものだけになっているという考えでいいと思います。
ツールはペンや付箋、矢印があるのでこれだけあれば問題なさそうです。
比較としてMiroのテンプレートは以下の通りです。
使ってみた
動画を残せていないのですが、実際に操作した結果がこんな感じとなります。
残したい場合は画像かPDFに残すことができます。
サインアップ、サインインしていない場合はユーザー登録をして残す動線のようです。
なお、サインインした状態で Miro Lite のホワイトボードを見ると保存できるUIとなりました。
注意点
画像を見てわかる通り 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
まとめ
文字で説明するよりもコードの方がわかりやすくていいですね。
これを機にコード化できるところはしていきます。
参考
Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ)
- 作者:Robert C.Martin,角 征典,高木 正弘
- 発売日: 2018/08/01
- メディア: Kindle版
【iOS】【2段階認証】iOSの2段階認証を「Google Authenticator」から「Microsoft Authenticator」にした
はじめに
新しいiPhoneが発売されました。
早速、移行しようとしたしたのですが、単純にやってしまうと移行しなくて積む可能性があったので念の為確認していました。
その結果、以下が1番気をつけなければいけないようです。
- モバイルSuica
- LINE
- 二段階認証アプリ
上記あたりが1番慎重にやらないといけないもののようです。
問題なのは「二段階認証アプリ」でした。
もともと「Google Authenticator」を使っていたのですが
問題点として iCloudにバックアップが取れない というところです。
iPhoneXSにしたときよりも2段階認証するサービスの数が増えており
仕事でも使うようになり、かなりの数となりました。
環境
- 移行元
- 移行先
- iPhone12 Pro
調査
入れ替える条件は以下の通りです。
結果
Microsoft Authenticator にしました。
apps.apple.comまず、条件に全て満たしておりマイクロソフトから出ているというのがあったからです。
バックアップ方法について、個人用 Microsoft アカウント の作成が必要ですが
Gmailアカウントを使って作成できるので手間ではありませんでした。
ドキュメントは以下の通りです。
まとめ
パスワードつきでiCloudにバックアップを取っておいて
そのまま2段階認証もすべて移行できるようになりとても楽になりました。
【CloudFront】【Lambda@Edge】オリジンレスポンスでリダイレクト処理を入れる方法
はじめに
AWSでSPA(シングルページアプリケーション)のインフラ部分を作っているときに
要件として
「トップページやその配下のディレクトリにもページがある。ただし、ないディレクトリが指定されたらリダイレクトする」
という話をもらいました。
それまではトップページしかなかったので、トップページ以外の場合はリダイレクトしていたが
配下のディレクトリにも気を配る必要があります。
それを解決するために Lambda@Edge
を使って対応してしました。
すぐに忘れてしまいそうなので簡単にですが手順をまとめておきます。
環境
前提条件
- AWSコンソールにログインできること
- Lambda@Edgeを作成できるIAMユーザーであること ※CloudFrontが設定されていなくてもいいが、設定されていると検証しやすい
調査
CloudFrontは以下の順で処理されます。
今回、コンテンツが取れなかった場合なので オリジンレスポンス
に対して処理を追加していきます。
対応方法
AWSのドキュメントにやりたいことが書いてあったので、手順通り作成します。
Lambda@Edge 関数の例 - Amazon CloudFront
新規にLambda関数を作成する。
雛形を修正する。
AWSのドキュメントに書かれいてたコードを記述する。
そのままだとクエリストリングがそのまま渡ってしまうので不要な処理を削除する。
$LASTETではLambda@Edgeが使えないのでバージョンを作成する。
バージョンの発行が行われました。
この後は、作成済みのCloudFrontに紐づけてあげれば完成です。 紐付けるのはCloudFrontのオリジンレスポンスとなりますので注意してください。
まとめ
これでエラーページではなく、トップページに戻れるようになりました。
参考
【Datadog】【Rails】Railsのログを出力するとき「日付とプロセスID、リクエストID」を出力されないようにする
はじめに
Webサービスの開発でDatadogのLog Managementを使うときの小ネタ。
lograge
というライブラリを使い、Datadog Logsにログを転送していたのですが
標準ログ+JSONという形になってしまいLogsで自動で解析してもらえなくなってしまった。
なので、標準ログも含めたい場合JSONの中に入れてやると良いです。
環境
- macOS Sierra
- Docker(docker-compose)
- Ruby 2.6.3
- Ruby on Rails 5.2.2
- lograge 0.10.0
前提条件
lograge
を使って何かしらログが出力されていること。
調査
lograge
でJSON化したにも関わらず、日付とプロセス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でログが解析できるようになりました。
参考
【AWS】Amazon QuickSightでS3へアクセスできないときの対処法
はじめに
AppFlowを使ってSlackの発言回数を可視化させるために
Amazon QuickSightを使ってみることにした。
その際にハマったところをメモする。
前提条件
- AppFlowを使ってS3にデータが保存されていること
- Athenaでデータが取得できること
原因
Amazon S3への許可設定をしていなかった。
現象
対応方法
以下のドキュメント通りにやったらできた。 https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/troubleshoot-connect-S3.html
データが入っているバケットを選択する。
【Ruby】RubyMineでrbenvでインストールしたRubyを指定する
はじめに
RubyMine(以下、IDE)
をJetBrains経由で新しくダウンロードして
IDEの設定を設定していたところRubyのバージョンを指定する必要がありました。
筆者は rbenv
でRubyをインストールしていたため指定方法に
手間取ったので記録として残しておきます。
前提条件
環境
やり方
command と ,
を押して設定画面を開く。
+
を押して New local...
を選択する。
/Users/{ユーザー名}/.rbenv/versions/2.7.0/bin/ruby
を指定する。
※自分の設定がここなので、個々によって違うかもしれません。
指定したバージョンが表示されればOK
まとめ
~/.rbenv
にあるはずなのですが New local version manager...
で指定しても反映されず
その調査をするより直接Rubyのバージョンを指定する方が早いと思いこの通りにしました。
もし、バージョンマネージャーを指定できてる人がいたら教えてもらえると嬉しいです。
参考
https://www.jetbrains.com/help/ruby/configuring-language-interpreter.html