FLIR ONE Gen 3レビュー(with Pixel 7a)

FLIR ONE Gen 3 夜間 屋外 エアコン室外機
エアコン室外機を撮影した様子。
日没後の撮影で可視カメラは機能せず、赤外線カメラのみの映像となっている。
室外機が熱を持っている様子、排水で周囲の地面が冷えている様子が確認できる。
*1

FLIR ONE Gen 3 夜間 屋外 草むらの中の猫
周囲と温度差の有る物はかなり目立つ。恒温動物、稼働中の機械、濡れた物等は一目瞭然。

FLIR ONE Gen 3 電気ポットと氷水の入ったマグカップ
明るい所で撮影すると可視カメラの映像と合成処理が行われ、物体のエッジが強調表示される。
電気ポットの印字まで読み取れる性能が有る事が確認出来る。

パッケージ・付属品

パッケージは本体サイズの割にはかなり大きく、頑丈な箱に入っている。相当雑に輸送されても耐えられると思われる。
付属のケースもしっかりしている。大抵の用途に実用的な強度が有りそう。

Pixel 7aとの相性

ハードウェア的な相性

問題なし。挿せば繋がる。
幅はケース無しのPixel 7aより若干小さく、厚みは若干厚い。
コネクタをきちんと調整すれば、軽く押したり振ったりしてもグラつかない。
撮影中FLIR自体は若干の熱を持つが、Pixel 7aの発熱は特に感じなかった。

ソフトウェア的な相性

問題なし。挿してFLIRの電源ボタンを押せば繋がる。
設定変更も必要無かった。
(アプリをインストールする必要はある。サーモグラフィーの撮影や保存にはアカウント登録不要。)

*1:室外機カバーを設置しているので室外機の上部は写っていない

DayOneのJSONデータをテキスト形式に変換した(PowerAutomate デスクトップ フロー)

DayOneのエクスポートデータ(JSON形式)をテキスト形式に変換した。

内容はテキストのみで、写真等の添付ファイルは一切なし。

日付表記がUTCで格納されていて、PowerAutomateにタイムゾーンを扱う機能が見当たらなかったのは困ったが、JST以外で生活してないので全て+9時間するだけで解決した。

DayOne JSONをテキスト形式に変換するPowerAutomate デスクトップフローのSS

File.ReadTextFromFile.ReadText File: $'''C:\\Users\\noname\\Desktop\\ジャーナル.json''' Encoding: File.TextFileEncoding.UTF8 Content=> FileContents
Variables.ConvertJsonToCustomObject Json: FileContents CustomObject=> JsonAsCustomObject
LOOP FOREACH CurrentItem IN JsonAsCustomObject['entries']
    DateTime.Add DateTime: CurrentItem['creationDate'] TimeToAdd: 9 TimeUnit: DateTime.TimeUnit.Hours ResultedDate=> ResultedDate
    File.WriteText File: $'''C:\\Users\\noname\\Desktop\\ジャーナル.txt''' TextToWrite: ResultedDate AppendNewLine: True IfFileExists: File.IfFileExists.Append Encoding: File.FileEncoding.Unicode
    File.WriteText File: $'''C:\\Users\\noname\\Desktop\\ジャーナル.txt''' TextToWrite: CurrentItem['text'] AppendNewLine: True IfFileExists: File.IfFileExists.Append Encoding: File.FileEncoding.Unicode
END

思っていたより簡単に出来てしまって拍子抜けした。
こういう処理は何らかのスクリプトでこなすのが最も手っ取り早いと思っていたが、PowerAutomateの方が楽かも知れない。

PowerAutomateで複数Excelファイルを処理する際のExcel起動処理高速化(デスクトップ フロー)

PowerAutomateでExcelファイルを複数生成する、もしくは複数のExcelファイルからデータを読み込む等する際、Excelの起動にかかる時間が響いてくる。

例えば「Excelファイルを開いて内容を編集、保存して終了」という処理を100ファイル分行う場合、単純に組むと100回Excelを開く時間がかかってしまう。
根本的には処理の方法自体を改善する事で解決すべき事かも知れないが、一応Excelの起動処理自体を高速化する方法が有るのでここで述べておく。

方法

適当なExcelインスタンスを一つ開きっぱなしにしておく。

これだけ。冗談みたいな話だが、実際にこれで起動が速くなる。

ベンチマーク

実際に、次のような処理を行うフローで検証してみる。

  1. Excelを新規に開く
  2. 何もせず保存する
  3. 1, 2を30回繰り返す *1

PowerAutomateで空のExcelファイルを30個生成するベンチマークのSS
2行目の「Excelの起動」が高速化用のダミーのインスタンス
これを「有効にしたまま実行」と「2,7行目を無効化して実行」を交互に繰り返し、実行時間を計測する。

結果

ダミー有り ダミー無し
1回目 11.3秒 41.7秒
2回目 12.0秒 43.1秒
3回目 12.0秒 42.7秒

ダミー有りの方が明確に速く実行されている。

*2

*1:このパターンならば、内容を上書きしつつ別名保存の方が速いと思われるが、あくまでベンチマークという事で。

*2:小数点第二位以下切り捨て

ExcelでBOM無しUTF-8のCSVファイルを化けずに開くPowerShellスクリプト

ExcelUTF-8(BOM無し)のCSVファイルを開くと文字化けしてしまう。

テキストエディタUTF-8(BOM付き)に変換すれば化けずに開けるのだが、面倒なので自動変換するPowerShellスクリプトを作成した。

挙動

スクリプトへのショートカット(後述)にCSVファイルをドロップすると、一時ディレクトリにUTF-8(BOM付き)版のコピーが作成され、関連付けされたアプリで開かれる。*1

コード

$srcFilePath = $args[0]
$srcFileName = Split-Path $srcFilePath -Leaf

# テンポラリディレクトリ作成
$tempDirName = "TempDir_$(Get-Date -Format 'yyyyMMddHHmmss')"
$tempDirPath = Join-Path -Path $env:TEMP -ChildPath $tempDirName
$tempFilePath = Join-Path -Path $tempDirPath -ChildPath $srcFileName
New-Item -ItemType Directory -Path $tempDirPath

# 読み込み
$content = Get-Content -Path $srcFilePath

# BOM付きUTF8で保存
Set-Content -Path $tempFilePath -Value $content -Encoding UTF8BOM

# オープン
Start-Process $tempFilePath

上記のスクリプトを適当な場所に保存し、次のようなパスでショートカットを作成する。*2

pwsh.exe -ExecutionPolicy RemoteSigned -File "ここにps1ファイルのパスを入れる"

作成したショートカットにCSVファイルをドロップすると、UTF-8(BOM付き)に変換されたファイルが自動で生成され、開かれる。

*1:CSVの閲覧が目的で、更新は考慮していない。

*2:WindowsプリインストールのPowerShellでは無く、ストア等から導入する新しいバージョンのPowerShellで動かす必要が有る。