The jonki

呼ばれて飛び出てじょじょじょじょーんき

HHKB Professional Hybrid Type-Sを手放した

HHKB Professional Hybrid Type-SからKeychron K2を使っていたのは下記の通り.すっかりHHKBを使わなくなっていたので手放しました.戻らなかった決定的な理由について書いておきます.ちなみにこれはあくまで個人の感想ですので,優劣をつけたいわけではありません.

www.jonki.net

手放した理由

単3電池は面倒くさい

HHKBでは省エネモードがあるのですが,30分以上キー操作を行わない場合,スリープモードになってしまいます.ここから復帰するためには電源ボタンを長押しする必要があり,キー入力できるまで10秒ぐらいかかり面倒です.静電容量式でなければ適当にキー入力すれば再接続となる場合が多いので(たとえばThinkpad BTキーボード)これは痛い.省エネモードを切るとスリープモードにならずに済みますが1ヶ月程度しか電池が持ちません.単三電池をわざわざ外して入れ替えて...というのは面倒です.一方でUSB-Cでさくっと充電できるKeychronはやはり便利です.リチウムバッテリーが10年以上持つか?というと多分NOなんですが,新しいキーボードを使ってるだろうし,耐久性は犠牲にできるかなと思っています.

キーが少ない

やっぱりキーが少ないです.特にファンクションキーと矢印キーを直接打てないのが厳しいです.個人的には最近VS Codeデバッグにファンクションキーをよく使うので指1本で打てた方が指の疲れが少なく嬉しいです.Keychron K2はHHKBより気持ち大きいぐらいでこれらのキーがつくので大分便利です.

Win/Macの切り替えには工夫がいる

上の2つほどクリティカルではないですが重要です.KeychronにはWin-Alt / Cmd-Optの位置を入れ替えられる物理スイッチが付いており簡単に切り替えられます.在宅勤務だと会社のWindowsと家のMacの切り替えが必要になるのでこの機能はありがたい.キーバインドを変えるソフトでWinかMacをいじれば良いんですが,最近はデフォルト設定厨なのでなるべく何もやりたくないのですよね.

次のキーボード

Realforce R3のUSキーボードが出たので気になるところですが,これも単三電池式でバッテリーが1ヶ月程度ということでHHKBと同じ感じかなぁと思ってます. セパレートキーボードも探していますが,キーがみんな少ないんですよね.Ergodoxは一方でデカすぎなのでちょっと邪魔.Keychronが気に入ったので80%キーボードで赤軸以外を触っても良いかなと思っています.

オチはありません.

PyQtGraphでソフトウェア・シンセサイザーを作って遊んでみた

f:id:jonki:20220220215242p:plain

ピアノは弾けないのに最近シンセサイザーに興味があり,KORG Volcaシリーズで遊んでいました.今年は勉強がてら遊びも入れたコードを書きたいなと思っていたので,どうせなら勉強がてらソフトウェアシンセサイザーを書いてみようと思い書き始めました.できたのがこんなアプリで,MIDIキーボードから操作しています.

github.com

www.youtube.com

やったこと(やりたかったこと)

今回やりたかったのはこんなところです.ステップ・シーケンサまで出来ると良かったのですが,GUI含めてかなり大変そうだったので今回はやっていません.シンセのフィルター機能も無限に色々あるのですが,かなり単純なところを実装しました(といっても後述紹介するブログのシンセコードをほぼそのまま使っています).またPyQtやPyQtGraphのGUIコーディングや信号処理周りに不慣れだったので中々大変でした.

  • 信号処理周りのコーディング
  • インタラクティブに音を鳴らして楽しくシンセ遊びができる
    • 基本的な信号波形の選択と再生
    • エンベロープ・ジェネレータ(Attack Decay Sustain Release)を可視化しつつ反映
    • Low Frequency Oscillator で信号を揺らす
  • ステップ・シーケンサ機能(音楽上のステップのシーケンスと音の記録による簡易的な作曲機能のようなもの) // 今回断念

ざっくりと振り返り

ちなみに実は今回のコードのシンセ部分は下記の素晴らしいブログを使っているだけです.全3回ですが,かなり読み応えあって面白いのでおすすめです.細かい解説はそちらにゆずるとして,ざっくりとここでは開発経緯やシンセの内容に触れます.書いといてなんですが,エンベロープジェネレータやLFOのコードに関してはここの記事だけをみても多分よく分からないかなと思います.

python.plainenglish.io

プログラミング言語及びGUIの選択

これは結構悩んだのですがPythonPyQtPyQtGraphという構成にしました.実は今回の勉強を除く用途だとWebが最も適しています.GUIの自由度は高いし,Web Audio APIがかなり優秀なのでこれを使ったほうが絶対に良いです.今回は直接信号を生成したり編集したかったので使わなかったので書き慣れたpythonを選択しました.が,やはりGUIpythonだと厳しいです.そもそもGUIライブラリが充実しておらず,高フレームレートで複雑な描画ができるのはPyQtGraphぐらいしか見当たりませんでした.今回Qtベースにしましたが,Webに比べるとGUIパーツの選択肢の狭さや使い勝手の癖など個人的にはあまり楽しい感じのものではなかったです.ただ見た目はさておきGUIとして求められる基本的な機能は十分でした.1点注意として,PyQtはソフトウェアライセンス的にはGPLでコードの公開が必要とのことで,その問題を回避したPySideというのが機能がほぼ同じ?であるようです.今回はプライベートなのでフル公開でまったく問題ないですが,企業などで使う場合は注意が必要です.

ソース波形の生成

Oscillatorが基本となる波形を生成します.学校だと普通勉強するのはsin波だと思いますが,これは単一周波数成分しか乗っておらず聞いても面白くないです.音楽的にはのこぎり波,矩形波三角波のような倍音が多く乗った成分の方が派手で楽しいです.

これは最終的に使っているコードではないのですが,仕組みとしてはここのsinオシレータがわかりやすいです.物理現象としては分かっていてもコードにどう落とすんだ?となるところですが,pythonだとitertools.countが無限にステップを刻んでくれるところを値を指定個数分yieldする形で実装します.

def get_sin_oscillator(freq, amp=1, phase=0, sample_rate=44100):
    phase = (phase / 360) * 2 * math.pi
    increment = (2 * math.pi * freq)/ sample_rate
    return (math.sin(phase + v) * amp for v in itertools.count(start=0, step=increment))

osc = get_sin_oscillator(freq=1, sample_rate=512)
samples = [next(osc) for i in range(512)]

エンベロープ・ジェネレータ

エンベロープ・ジェネレータとは波形の概要を形成するものです.Attack時間,Decay時間,Sustainレベル,Release時間が決まれば,音の鳴り始め〜鳴り終わりを定義できます.今回は最も単純なエンベロープを適用していて,GUIと連動して分かりやすくしています.ちなみにSutainだけは時間でなく相対的な音量レベルです.鍵盤をどれぐらい押し続けるかは分かりませんからね.

f:id:jonki:20220220221650p:plain
ADSR

エンベロープ・ジェネレータは Envelopeクラスで実装されています.ads_stepperr_stepper というのが肝です.ここでもitertools.count を使うことで.指定したAttack/Decay/Releaseの時間を刻むフレームを作っています.ここではads_stepperのコードを持ってきました.Attack → Decayへとwhileループとyieldを使って切り替えています.

    def ads_stepper(self):
        attack_stepper = itertools.count(
            start=0, step=1 / (self.attack_duration * self.sample_rate))
        decay_stepper = itertools.count(
            start=1,
            step=-(1 - self.sustain_level) /
            (self.decay_duration * self.sample_rate))
        while True:
            if attack_stepper:
                val = next(attack_stepper)
                if val > 1:
                    attack_stepper = None
                    val = next(decay_stepper)
            elif decay_stepper:
                val = next(decay_stepper)
                if val <= self.sustain_level:
                    val = self.sustain_level
                    decay_stepper = None
            else:
                val = self.sustain_level
            self.val = val
            yield val

LFO

Low Frequency Oscillatorと言われるもので,ベースの波形に対して時間的な変化(振幅や周波数)を与えるものです.LFOが出来ると所謂シンセっぽい音になるので,ここが一番楽しいかもしれません.例えば振幅をsin波で揺らせば「ホワンホワンホワン」という音になり,矩形波で揺らせば「ピーポーピーポー」とサイレンっぽくなります.更に周波数も何らかの波で揺らせばかなり複雑な音に変化します.これは ModulatedOscillatorクラスが担当します.指定したモジュレーション関数に対して値を投げて波形を変化させています.

    def _modulate(self, mod_vals):
        if not mod_vals:
            return
        if self.amp_mod is not None:
            new_amp = self.amp_mod(self.oscillator.init_amp, mod_vals[0])
            self.oscillator.amp = new_amp

        if self.freq_mod is not None:
            if self._modulators_count == 2:
                mod_val = mod_vals[1]
            else:
                mod_val = mod_vals[0]
            new_freq = self.freq_mod(self.oscillator.init_freq, mod_val)
            self.oscillator.freq = new_freq

やり残していること

これもシンセによくあるローパスフィルター(LPF)を実施したのですが,フィルター適用により結構ノイズが乗ってしまっています.周波数特性を考えるにあたりノイズや計算量のバランスなど考えてフィルタを設計する必要があると思うのですが,今回はそこまで時間が取れず次回の課題にしようと思っています.LPFといってもいろいろなフィルターがあり奥が深いです. - Python NumPy SciPy : デジタルフィルタ(ローパスフィルタ)による波形整形 | org-技術

まとめ

中々不慣れなことが多く大変でしたが,1つキリが良いところでまとめられてよかったです.シンセサイザーモジュレーションに関しては組み合わせは無限にあり,そのコーディング部分などなかなかトリッキーに実装していて面白かったです.

MacBook Pro(M1 Pro)とColab Proでディープラーニング

はじめに

年末年始に少し時間があったので,趣味で書いているコードを動かすGPUインスタンスについて調べていました.以前はちゃんとGPU持っていたのですが,あまり使っていなかったので全部売っていました.買い直しも検討しましたが,未だにGPUは高いですし,我が家の冬は暖房等の使いすぎでブレーカーがよく落ちるので,何か適当なクラウドサービスを使おうかなと思っていました. AWSの安いGPUインスタンスであれば1時間100円ぐらいなので悪くはなさそうでしたが,時間課金はソワソワしちゃうので辞めました.そこで日本でも使えるようになった月額1000円程度のColab Proを使い始めました.

この記事ではMacbook Pro (M1 Pro)とColab Proを使ったディープラーニングの開発に関して,そのワークフロー,ベンチマーク,Tipsを簡単にまとめたので共有します. Colabはこれまで簡単なpythonのコードチェックぐらいでしか使ったことないですが,今回本格的に使い始めたので共有します.もっといい方法あるよ!という方はぜひコメント下さい.

Colab Proについて

Colab Proは最近日本で使えるようになったGoogleのサービスです.詳しくは下記の記事が詳しいです.月1000円程度で通常のColabよりGPUインスタンスが長く使えるのが特徴です.Pro+にすればGPUがP100からV100と更に良くなり(RAMは16GB → 32GB!),バックグラウンド実行もできるようになります,月5000円ぐらいかかるので本格的な人向けです.

atmarkit.itmedia.co.jp

ベンチマーク(M1 Pro vs Colab vs Colab Pro)

結局一番気になるのは学習速度.実はM1 Pro,素のColab (K80)より早いやんという話もあり調べてみました.ちなみに私のM1 ProはM1 Proの中でも最弱です(コア数という意味で). Colab上で試したのはTPUでなくGPUインスタンスです.計測のためのコードはpytorchの公式例をそのまま使い,MNISTの分類と言語モデルを試しました.Linear, CNN, RNN系のコードです.計測では1つのミニバッチの処理時間をまとめてみました.M1 Pro比でどれぐらい早いかカッコ内に書いてあります.

モデル M1 Pro (8 cores) Colab (Tesla K80, 12GB) Colab Pro (Tesla P100, 16GB)
MNIST, batch_size=64 0.028s 0.007s (4x) 0.003 s (9.3x)
LM (RNN, batch_size=20) 0.113s 0.006s (18.8x) 0.003s (37.7x)
LM (RNN, batch_size=100) 0.449s 0.162s (2.8x) 0.044s (10.2x)
LM (Transformer, batch_size=20) 0.103s 0.009s (11.4x) 0.005s (20.6x)
LM (Transformer, batch_size=100) 0.432s 0.160s (2.7x) 0.044s (9.8x)

M1 Proはこの中だと一番遅いですが,意外と早いですね.本格的な学習には厳しいですが,動作確認程度なら全然問題なさそうです.K80はM1 Proより遅いと思っていましたが,意外と奮闘していますね.P100はちゃんと早いですね.P100は2080Tiにやや劣るぐらいのFLOPSだけどメモリは多い,というものなのでなかなか悪くないと思います.RAM 16GBというのは中々絶妙で昨今では10GBぐらいでは足りないケースも増えてきたので16GBはありがたいです.これぐらいメモリが載ってるものってコンシューマー向けには3090とかになってしまうので中々手が出ません.一方でColab Proは実行制約等があるものの,電気代気にせず1000円というのは趣味用途では全然ありだと思いました.まず素のColabで運用して物足りなくなったらProにするというのもアリだと思います.

ベンチマーク等についてはこちらもご覧ください.

開発構成について

次はColab Proを使った際の開発構成の紹介です.以下のようにして落ち着きました.Colab上では学習したモデル等のデータは自分で保存する必要があるため,Google Driveとの連携は必須です.またノートブック上で本格的なコーディングはかなり辛いので,Google Drive上でコードを管理し(github),通常時はローカルのマシン(Macbook Pro)上でVisual Studio Codeで開発,というのが良さそうでした.

  1. Google Drive上を作業スペースとし,ここに自分のプロジェクトをgit cloneする.
  2. 通常開発時はMacbook Pro上で作業し,学習コードがちゃんと動くかM1 Proでチェック(私はVisual Studio Code使ってます).
  3. 学習を本格的に開始する段階で,Colab ProでGPUランタイムのノートブックを作成する.
  4. Colabのノートブック上でGoogle Driveをマウントし,プロジェクトディレクトリにchange directoryする.
  5. Colab上で学習を開始する.(例:! python train.py
  6. tensorboard等を使っている場合は,ノートブック上でtensorboardを使うか,ローカル側で自分でtensorboardのサーバーを立ち上げる.Google Drive上で作業しているのでログもsyncしており,ローカルでtensorboard立てられる(私はこれ).
  7. コードに修正があれば,手順2に戻る.

開発Tipsについて

いくつか覚えていて損がないことを書いておきます.

Google Driveのマウント

これはGUIとプログラムの2通りでマウントできます.GUIから行く場合は,左のサイドメニューのフォルダアイコンをクリックしてから辿れます.プログラムから行く場合は下記のような形でいけます.

from google.colab import drive
from pathlib import Path

def mount_drive():
    drive_path = Path('/content/drive')
    if not drive_path.exists():
        drive.mount(str(drive_path))

mount_drive()
 

Githubからprivateなリポジトリをcloneする

GithubのPersonal Access Tokensを使えば,自分のprivateリポジトリであっても簡単にcloneできます. Githubのページで Settings → Developer settings → Personal access tokens で full control of private repositoryトークンを生成しておきます. Creating a personal access token も参考にしてください.

そしてノートブック上で以下のようにしてcloneできます.簡単ですね.

import os
os.chdir('<your_work_space>')
%env TOKEN=<YOUR_TOKEN>
!git clone https://$$TOKEN@github.com/<user_name>/<repo_name>.git
 

実行環境がColab上かどうか判定する

これはローカルでの開発とノートブック上での開発で処理を切り替えたいときに便利です.

import sys
is_colab = 'google.colab' in sys.modules
 

ローカルとノートブック上でのファイル同期について

基本はGoogle Drive上で作業しているので,ファイルは勝手に同期されます.ただ手元で編集してすぐに反映,というわけにはいかないです.感覚的なものですが,数分ぐらいラグがある気がします. また同期されているつもりでノートブック上で実行したところ,古いコードが動いていた,ということもあるのでノートブック上でのコード確認は重要です. ただ結構面倒なので変更はすべてgit commit & pushしておき,ノートブック上ででgit pullしてから実行するようにした方が便利です.

Terminalどう?

Colab Proの目玉機能の1つではあると思うのですが,遅延が結構ひどく,インスタンスが再生成される度にルートディレクトリにcdしてしまい,正直使い勝手はよくないです.psnvidia-smiなどのプロファイル系のコマンド実行には良いかもしれませんが,思ったより使わないです.デフォルトでtmuxが動くのは良いのですけどね.重要な処理やノートブックのセル上で書いたほうが確実に実行できます.

ノートブックはターミナルのように利用する

ノートブック上でのpythonコードもかけるのですが,基本的に私は書いていないです.普通に.pyをVisual Studio Codeでコーディングしておき,ノートブック上はひたすらgit,前処理,学習の実行といった適当なファイルの実行を行っています.データ分析等の可視化をする場合は便利だとは思います.

自動接続

これはabuse感あるのですが,よくあるTipsとして紹介されています.ブラウザのDeveloper consoleを開き,以下のように再接続ボタンを継続的に押すようにスクリプトを仕掛けておきます.

function KeepClicking(){
    console.log("Clicking");
    document.querySelector("colab-connect-button").click() }
setInterval(KeepClicking,60000)

実行時間と再学習について

Colab Proでは最大実行時間は無料プランの倍の24時間になっていますが,通常のColabを常用していた訳ではないので体感的に伸びているかはよく分かりません.基本的には寝る前,起きたとき,午後,でノートブックをチェックして実行が止まっていたらノートブックのセルをRun allする感じです.特定のディレクトリの最新チェックポイントを自動でresumeするようなコードにしておくのが良いと思います(例: python trainer.py --resume ./your_exp_dir).ただ面倒であることは変わりないので,ある程度学習がうまくいくことが分かっている場合は,AWS等で専用のGPUインスタンスを立てても良いかなと思います.

まとめ

M1 ProとColab Proを使ったディープラーニング開発についてまとめました.Colab Proを単純なGPUインスタンス的に扱う,という用途でも使い物になりそうです.趣味でこれは結構良いと思いました.自前のGPUを使う場合,そのためのマシンを用意する必要がありますし,電気代も場所も取ります.GPUもそもそも毎年新しいものが出てくるので,サブスク性や従量課金制の方が今どきは良いなと思いました(もちろん用途によります).そういう意味ではColab Proはランチ1回分と考えるとかなりお買い得だと思いました. またM1 Proがまぁまぁ早いのも想定外でした.このMacbookで本格的な開発をする予定はなかったのですが,これならM1 Pro Maxを視野に入れてよかったなとちょっとだけ思いました.

2021年にやってよかった技術書(数学,機械学習関連)と読書習慣について

今年もこの季節... www.jonki.net

今年は子供も生まれて本を読む時間もないか...と思いましたが,時間的制約が加わることでむしろ例年より読んだかなという気がします(それでも多くはないんですが). でも継続的に読むという習慣はできた気がします.

個人的に良かった読書習慣のコツ

  • ちょっとずつで良いので毎日同じ本を読む(ただし体調不良のときはちゃんと休む).
  • 読むページ数は安定している方が良い(一気に読もうとしない.ページ数は本の難易度に合わせて調整すれば良い).
  • 習慣記録系のアプリを使わない.連続読書記録を作ることが目標でないし,記録が切れると燃え尽きて戻れない可能性がある.
  • 同時に読む本は1冊で良い.増やすならいずれもバランス良く読む.
  • 紙媒体で読んだほうが読み進めるほどに達成感が増して良い.
  • 本の評価が高くても自分に合わないと感じたら無理せず諦める(大丈夫,他にも良い本はいっぱいある).

以下いくつか読んだ中でおすすめしたい本だけ紹介します.正直ほとんど有名な本なので特に新しい情報はないですが.

ストラング:線形代数イントロダクション + MIT 18.06 Linear Algebra, Spring 2005

線形代数まるでわからん状態が続いていたので,色々読み漁った結果これが良いと判断しました.巷には色々教材が溢れていますが,小手先の計算テクニックとかでなく,体系的に学ぼうとするならこのGilbert Strang先生のMITの授業が無料で公開されていて内容は素晴らしいと思います. ちなみに第1回の講義は87万回再生されていて,一番少ない回でも5万回程度あるので数万人が通しで見ているんだと思います. 動画見て頂くと分かるんですが,Andrew Ng先生とはまた異なる形で引き込まれる授業です.具体的な事例に対して自問自答して解き明かしていく形でかなり分かりやすいです.英語も字幕が丁寧についていますし,先生の英語はかなり聞き取りやすいです. ちなみに書籍の方は600ページを超える鈍器なのですが,一般的な数学の教科書というよりは,授業のライブ感をうまく書籍に対応させたものになっています.動画をいくつか見る→本の対応するところを見る,という形で進めていくと読みやすいと思います. 部分空間に対する重きの置き方など,この授業はよくある線形代数の教え方とは異なる視点で授業を展開している気がします.なので書籍だけを読んで勉強する場合は若干とっつきづらいかもしれません.ただ翻訳書にありがちな直訳英語は特に感じず,脳内でストラング先生が喋ってる声が聞こえるぐらい邦版は素晴らしい出来だと思います.また100ページ以上は問題演習なのも面白いです.個人的には全部やりたいと思いつつ,まじめに100%読もうとして途中で頓挫するのも嫌だったので,練習問題は飛ばして例題までにして読むようにしました.かなり分厚い本ですが,見た目ほど苦労はせず読める本だと思います.

www.youtube.com

ちなみに同じくストラング先生の18.065というデータ分析向けの授業(2018年)も公開されているので次はこれを見ようと思っています.日本語版の書籍も今年の10月に出たばかりのようですね.

これなら分かる最適化数学,金谷健一

昔買って積読していたのですが,数学力上げたくて読み始めました.極値と勾配,最小2乗法,最尤推定など全般的に事例と説明が秀逸でした.学部の頃に読んでおきたかった超絶良書です.Andrew Ng先生のCS229に近いカバー範囲だと思いますし,いわゆる機械学習に関する数学力を上げたいのであれば今回紹介する中では間違いなく一番オススメです.

これなら分かる応用数学教室,金谷健一

上述の金谷先生の本がめちゃくちゃ良かったので同じく積読していたこの本も読みました.最適化数学と被るところもありますが,フーリエ変換固有値問題が追加・充実していてよいです.何より同じ著者なので説明方法や式展開の癖が同じなので連続して読みたいところ.

情報理論のエッセンス,平田廣則

マシンラーニング系の論文などを読んでいるとエントロピーの話がよく出てきます.情報の数量化,つまり情報量に関する知識は一度振り返ってもよいかなと思い読みました.後半は符号化の話などが多くなってきますが前半だけでも読む価値はあると思います.今回紹介する本の中では一番サクッと読める本です.

続・わかりやすいパターン認識教師なし学習入門―,石井 健一郎, 上田 修功

これも積読していた有名本です.ひたすらサイコロを振ってその過程をベイズで捉えていた気がします笑.須山さんのベイズ本等と合わせてこの本を読んでも良いかもしれません.個人的にはHMM,EMアルゴリズム,前向き・後ろ向きアルゴリズムあたりの説明がかなりしっかりしている本でした.私の中で殿堂入りしている高村先生の「言語処理のための機械学習入門」でも言語ドメインにおけるこのあたりの説明があるのですが,この本ではそれを一般化して説明しており,合わせて読みたいところです.

まとめ

以上,前年度に続いて基礎的なところが多かったなという印象です.ほぼ毎日本読む習慣ができたのも良かったですね.ただ本を読むときは紙とペンを持って自分でも手を動かして確認することが大事なんですが,結構サボった気がします.来年はもうちょっと丁寧に読んでいきたい. ちなみにストラング先生の授業,学部向けで2005年なんですが,私もこの頃大学1年生なので感慨深いものがありました(線形代数の授業を何も覚えていない悲).

2021年に買ってよかったもの(在宅勤務に役立つガジェットや日用品編)

今年もこの季節... 今年は子供も生まれて中々に刺激的な一年でした.仕事は相変わらず在宅勤務で特に不満なく働けました.技術書編は別記事ですぐに出す予定です.

www.jonki.net

在宅勤務のお供

モノクロのレーザープリンターです.職業柄,論文を印刷することが多くあるのですが,家でも安くきれいに論文を印刷したいなと思い購入しました. インクジェットと異なりレーザープリンターなので文書がきれいに印刷できます.両面印刷も自動で早いのに1万円ちょっとはかなり安いと思いました.こういうのはトナー商売なので公式なトナーは高いのですが,怪しい安い互換品でもまったく問題なかったです.バッテリーの互換品は事故が怖いですが,インクトナーはまぁ良いかなと思いました. ちなみにレーザープリンターをカラー対応にすると一気に高くなるのですが,私が読む論文で色を多用する場合ってあまりないですし,PCと合わせて論文を読むのでモノクロでまったく問題ないです.早く買えばよかったです.

有線タイプのヘッドセットを使ってましたが,ケーブルが煩わしいので無線版に.BluetoothでなくUSBのワイヤレス子機と合わせて使うタイプなので安定していると思います.気が向いたときに充電するだけで良いので楽ちんです.特に音質に関しては有線版と大差なかったです.

リビングの作業机として買いました.手動ですが机の高さが買えられて良いです.仕事の時以外はリビングにいるときが多くなったので,子供を見つつちょっと作業,みたいなことに便利です.また足にM8ネジの適当なキャスターをつけることで移動が楽になります.

これは夏に活躍したものですが,私は夏はひたすらペットボトルの炭酸水を飲んでいます.夏だとペットボトルがビショビショになり温度もすぐ下がるのでこのケースを入れてずっと飲んでました.冷やさが長引くしビショビショにならないのはナイス.

ずっと欲しかった加湿器です.昨今,いろいろなタイプの加湿器がありますが,どれも威力が弱かったり,衛生的に不安がありますが,これはただの電気ポットで電気料金以外の不安はまったくないです.湯気もホワホワでてしっかり加湿されます.乾燥は体調も悪くなるので毎日活躍してもらっています.

エアコンの風って乾燥するし嫌いなのですが,オイルヒーターは純粋にその場を風無しであっためる優れものです.時間はかかりますが,在宅勤務の部屋に1つ置いて付けっぱなしにしています.これをするとエアコンを使うことなく,部屋が暖かくなり快適でおすすめです.こちらも電気を喰うタイプのものですが,お金でこの辺は解決したい.

CO2モニターです.M5 Stackを使って自作もしてましたが,実運用ではちゃんとしたメーカーの買ったほうが安心感があり結局こちら.怪しい中華メーカーのものが多い中で安心感ある商品だと思います.部屋を締め切ってるとすぐに赤いランプが点灯するので換気を良くするようになりました.

チョコ.いまお菓子って高いですよね.在宅でひたすら何か食べているので,業務用チョコをひたすら食べています.至って普通のどこにでもあるチョコの味ですが,味音痴なので全然これで満足しています.安い.

日用品

布団乾燥機.以前持っていたものは親にあげてしまったので再度購入.寝るときに布団が冷たくてしばらく不快なのが,これで一気に解決.感覚としてはお風呂に入るぐらいな気持ちよさに似てます.今はふとん乾燥機も小さくて良いですね.

味噌汁.これも楽ちんシリーズ.いつも同じ味だと飽きるので,具材と味噌が自分好みで選べて楽しい.これも安い.

水筒.冬のちょっとしたお出かけのときなどに活躍.わざわざペットボトル買ってたんですが,これにしてからは家で入れたお茶を持ち運んでます.

トートバッグ.子供と出かけることが多くなり,買い物した際などにそのままなんでも突っ込めるので便利です.

ガジェット

こちら高いんですが,AirPods proも未だ現役なので購入.充電がスッキリと楽になりました.

掃除ロボットは半信半疑だったのですが,子育てであまり余裕がなくなってきたので購入しましたが大正解.マッピング機能もあり我が家の部屋すべてを正確に認識していて驚きました.掃除も人より丁寧なのでゴミももっさり取れます.

食洗機も導入.在宅勤務で洗い物も増えたので購入.アメリカにいたころもあったのですが,やはり子供がいると時間が惜しいので,食洗機あるだけでかなり助かります.一日2回がっつり動いています.これも人より丁寧できれいになる笑

40mmという絶妙な焦点距離,近接24cm,361gという軽さ,そして圧倒的な描写力... Alpha 7Cに基本的にずっと付けて子供撮ってます.お高いですが,かなり万能なレンズで使い勝手がよいです.

Macbook Pro 2017 15-inch,Macbook Air 2019 13-inchを持っていましたが,売り払ってApple Siliconの世界にやってきました.夏になるといつもアツアツのMacbookでしたが,M1 proはヒヤヒヤなのが一番気に入っています.これで重いコーディングをすることもなく,iMovieが一番重い処理ぐらいなので,メモリ16 GBのSSD 1TBにしましたが満足しています.ガッツリ開発やビデオ編集等に使いたい人はメモリ32GB〜でも良いかなと思いますが,お値段と電力消費は上がるのでそのへんの見極めは悩みどころかもしれません.iMovieで4Kの動画を編集しましたがほんのり温かくなる程度で早く書き出しできたのは感動.

iPhone 11からiPhone 13 miniに乗り換えました.小さい画面でも十分に使えるしMagsafeが便利なのでMagsafeだけ目当てで買い替えても良いと思いました.

私はスマフォは指を引っ掛けるタイプでないと不安なのでQi充電とずっと相性が悪かったのですが,MagsafeになったことでPopSocketもMagsafe化して取り外しが便利になりました.磁力も強いので安心.

明日は技術書などを共有します.