新しいブログサイト
tenkoma's blog に作りました。
【追記あり;不具合・修正されそう】PHPUnit 10 から、PhpStorm UIでテスト実行中の出力(echo, var_dump, etc...) が、テストログに出力されない
追記 2023/07/17 不具合としてレポートされ、議論が進んだ結果 10.2.6 (現時点で未リリース)で修正されるようです
- 報告されたPR: Proposal for progress output when using teamcity. #5367 by SakiTakamachi
- 実際に修正されたコミット: Closes #5445 by sebastianbergmann
追記前の本文
小ネタ。

PHPUnit 10.1 を利用したテストコードをPhpStorm から実行していて、上記の振る舞いの変化に気づいた。どのバージョンで変わったのか、どうすればいいのかを考えてみたい。
PHPUnit 9.6, 10.0 で振る舞いの違いを観察
検証環境は以下の通り
- PHP 8.2.6
- PhpStorm 2023.1.2
- PHPUnit 9.6.8 (9系の最新バージョン), 10.0.0 (10系の最初のバージョン)
サンプルのテストコードは以下である。
<?php declare(strict_types=1); namespace Tenkoma\VardumpDuringTestExec\Test\Unit\Case; use PHPUnit\Framework\TestCase; class IntegerTest extends TestCase { public function testVardump(): void { var_dump(['a' => 'b']); } }
PHPUnit 9.6.8では出力された。
PHPUnit 10.0.0では出力されなかった。
他の出力形式の場合 (10.0.0)
PhpStorm からPHPUnit を呼び出しているときって、--teamcity ってオプションついてたけど、他の出力形式だとどうなんだろう?

--teamcity オプションをつけてテスト実行した
--teamcity オプションでテキストで出力させてみた。var_dump() 出力されない。
オプション未指定の場合。

--testdox 形式の場合

--testdox オプションをつけてテスト実行した
var_dump() 出力されない。また、例外がスローされている。(こちらの例外については検証してない)
他の出力形式の場合 (10.1.3)
最新版でも確認してみた。

--teamcity オプションをつけてテスト実行した
--teamcity の場合、出力されない。

未指定だと出力された。(10.0.0 → 10.1.3 のどこかで振る舞いが変わった)

--testdox オプションをつけてテスト実行した
--testdox でも出力された。(10.0.0 → 10.1.3 のどこかで振る舞いが変わった)
ここまでのまとめ
- PhpStorm UI から PHPUnit テストケースを実行している場合、10.0以降、テスト実行中の出力(echo, var_dump, etc...)が出力コンソールに表示されなくなる (
--teamcityオプションの振る舞いが変わった) - オプション未指定、
--testdox指定の場合も 10.0.0 では出力されなくなっていたが、最新の10.1.3 では出力されるようになっている
どうすればいいか
いくつか考えてみた。
開発者テスト(Testing)で var_dump() を使いたくなるのを改善する
アサーションせずに var_dump()したくなるのは、
- プロダクションコードがテストし辛い状態である
- テストコードが理解しにくかったり実行し辛い状態である
- プログラマの実装スキルが不足している状態である
- プログラマのテストスキルが不足している状態である
などのうちいずれかの兆候もしくは全部の兆候の可能性があるので、開発プロセスやプログラミングに改善の余地がある。はい。 (自己ツッコミ)
Xdebugリモートデバッグ連携して、ブレークさせて、変数を確認する
準備の手間がありますが、便利。

出力をアサーションして、Diffウインドウで確認する
var_dump()などの出力が、実際にコンソールに出力されないのは、PHPUnitが出力バッファ制御を使っているから- 出力バッファ制御を使っている理由は、出力結果のアサーションで利用するため
なので、出力をアサーションすれば、間接的に結果が得られる。

expectOutputString() で、var_dump() 出力をアサーションし、エラー出力を見る
出力バッファに蓄積したデータを取得してアサーションする
前述の方法とほぼ同じ

TestCase::output() で出力バッファのデータを取得してアサーション
PHPUnit 10.1.3 最新版だと、--teamcity 指定しなければ、出力されるので、シェルから実行する
前述の通り、検証した結果 PhpStorm 連携をあきらめれば、var_dump() 出力が得られることがわかったので、--teamcity を指定しなければOK。
ob_flush() を呼び出して、出力バッファに蓄積されたデータを出力する
テスト実行中のデータは出力バッファに蓄積されているので、それを出力させる。
この方法は、テストコードに expectOutputString() アサーションがあると、Failする可能性がある。
メールアカウントをGoogle Workspaceに移行して、1つに集約することにした
20年前からインターネット利用してて、メールアドレスが増えてきてそれぞれのアカウントを見に行くのが面倒くさくなったので、Google Workspaceに移行することにした。 スマホアプリの通知もそうだが、自分に不要な通知に煩わされる生活にならないようにしたい。
いままで以下のメールアドレスを使ってきた
- (1)
hotmail.comのメールアドレス- 2000年より少し前に取得したもの。ほぼ個人連絡用に使っていたが、いまはほぼ使わず
- (2)
tenkoma.netのメールアドレス- 2004年に使い始めた、さくらのメールボックスで3つのアカウントを作っていた。いまはネットサービス向けのもの以外はほとんど使っていない
- ネットサービス向けアカウント…AmazonやNetflixなどのオンラインサービス会員登録用。ずっと利用し続けていた
- 個人連絡用…2, 3年は使っていたが2010年からはまったく使わなくなった
- ウェブサイト管理者用…作ったけどほぼ使わず
- さくらのドメインで契約中
- 2004年に使い始めた、さくらのメールボックスで3つのアカウントを作っていた。いまはネットサービス向けのもの以外はほとんど使っていない
- (3)
gmail.comのメールアドレス- 2005年取得した。個人連絡とネットサービスの両方で使っているが日常的には見に行かない
- Google One ベーシック契約中
- (4)
me.com(icloud.com) のメールアドレス- 2009年頃、サービス名がMobileMeだったころに使い始めた。ネットサービスと個人連絡用に使っている。
- iCloud+ 50 GB ストレージ付き 契約中
ネットサービスと個人連絡用でいまでも使っているのは (2)-1, (3), (4)である。 移行を思い立ったのは、メインで使っていた(2)-1 のさくらのレンタルサーバのメールボックスに迷惑メールがくる頻度が増えてきて(1日平均5通以上) 振り分けが面倒くさくなったのも大きい。
Google Workspace にした理由
サービスをたいして比較検討したわけではなく、3つの選択肢から選んだ。
- Google Workspace
- 個人用Gmail…(3) に集約する
- iCloud メールアドレス(
me.com)…(4) に集約する
の3つを思いついた。 1,2,3 のどれでも独自ドメインでの運用はできるらしい。 しかし、1はキャッチオール機能があり、 ネットサービスを新しいメールアドレスに移行せずに使い始めて、あとからネットサービスの登録メールアドレスを変更していけるのが良かった。
キャッチオール アドレスを設定すると、ドメイン内の実在しないメールアドレスに誤って送信されたメールも受信できます。
Google Workspace でのメールのルーティングと配信のオプション
- 個人用Gmailで、デフォルトで広告が出ないのもよい
大まかな移行手順
ひとまず、管理者アカウント登録〜キャッチオール設定までやれば、独自ドメインメールアドレスをGmailで受信できるようになるので、それ以降のメールデータ移行や、Webサービスアカウントの切り替えは後でゆっくりできる
- 管理者アカウント登録
- ドメイン認証
- MXレコード設定
- キャッチオール設定
ここまでは約1時間でできた。 キャッチオール設定で、アカウントが存在しない場合、すべて管理者アカウントのGmailに届くので 移行後に「(2)の独自ドメインで作ったメールアドレス 3つ」に届いても、逃さずに済む。
SPF/DKIM/DMARC 設定
SPFの設定はすぐできた。 DKIM鍵の設定は、ヘルプだと24〜72時間でDKIM鍵が取得できるようになると書かれているが、 実際には5日以上経たないと取得できなかった。またさくらのドメインコントロールパネルの制限で2048bitの鍵は設定できず。(ドメインも移管したくなった)
重要: 組織で Gmail を有効にした後、24~72 時間ほど待ってから、管理コンソールで DKIM 鍵を取得してください。待ち時間が経過する前に鍵を生成しようとすると、[DKIM 認証の設定を更新できませんでした] というエラーが表示される場合があります。
ネットサービスのアカウント移行
アカウントの移行は、Google Workspace Gmail にメールが届いて、受信メールアドレスが古いメールアドレスだったら 古いユーザー名@ というラベルをつけるようにして、自分にアカウント移行を促すようにした。
メールデータの移行
- (1)
hotmail.com, (4)me.comのメールデータは メール(Mac App)のUI上でhotmailとGmailのアカウントを追加してコピーペーストした。 - (2)
tenkoma.netのメールデータはThunderbird(Mac App)のUI上でhotmailとGmailのアカウントを追加してコピーペーストした。 - (3)
gmail.comまだ移行してない
移行してどうだった?
2022/5/4に使い始めて2週間ちょっとになる。 (2)-1 に1日平均5通以上届いていた迷惑メール、フィッシングメールがほぼ届かなくなった。管理コンソールからメールログ検索してみるとまだちらほら送られてきて入るが、Gmail受信箱までは届かない。この2週間で1件だけGmailまで届いたが、迷惑メールとして振り分けられていた。
移行して、受信トレイに届いたメールは、用が済んだらアーカイブかゴミ箱に移動して空にする運用ができるようになった。
- ネットショップの注文履歴メールなどは即アーカイブ。
- ネットサービスのログイン通知は、見に覚えがあればすぐゴミ箱に捨てる
- その他、届いても数日中に見ればよいメールはラベルを付けて未読のままアーカイブするフィルタを追加
- 見なくてもよいメールマガジンは適宜解除するか迷惑メール行き(無料会員だとメルマガ解除できない某サービスのことよ…)
という感じ。メール通知を最適化していけそう。
空気清浄機と給気口フィルター
1年前にダイソンの空気清浄機を買った
稼働率は平均1日2時間くらい(目標値設定: ホコリや花粉に敏感)で、これくらいだったら不要だったな、と思ってたけど、2021年3月30日の黄砂飛来時は稼働音がずっとうるさくなっていた。

この空気清浄機は風量が10段階あって、ずっと4〜7で稼働していて空気質が下がらない状態。 仕事するのにこの騒音はつらいなと思って、給気口につける静電フィルターを導入してみた。
これを導入したあとは、空気清浄機が稼働することが減った。 昨日から今日にかけても黄砂が来ているらしいけど、グラフは以下の通り。

黄砂濃度が前回と同じ条件ではないし、比較テストしているわけではないので、意味のある比較では全くないけど、気密性の高い部屋では、空気清浄機を買うより、給気口フィルターを改善したほうがいいこともあるかもしれない。
今契約しているサブスクリプションまとめ
今までまとめて把握できてない状態だった。 使わなくても良くなったATOKと、あまり使っていなかったesa.ioを解約したけど、サブスクリプション把握できてないなぁ、と思ったのでまとめてみた。
2020/09/16 現在 (過去1年の実績なので、ドル払いなどで変動もあります)
娯楽系
- Spotify Premium(年間契約 ¥9,800) ¥9,800
- Amazon Prime (年間契約 ¥4,900) ¥4,900
- Netflix (スタンダード 月 ¥1,320) ¥15,840
- Nintendo Switch Online (個人プラン 12ヶ月 ¥2,400) ¥2,400
生活ツール系
- マネーフォワード (プレミアム ¥500) ¥6,000
- Sleep Cycle (年間 ¥240) ¥240
開発ツール系
- GitHub (sponsor 含む ¥1,452) ¥17,424
- さくらのVPS ¥43,560
- tenkoma.net ドメイン(年間 ¥1,886) ¥1,886
- tenkoma.devドメイン (年間 ¥1,540) ¥1,540
- JetBrains All Products Pack (3年目以降 ¥18,920) ¥18,920
- DeepL Pro (Starter 年払い ¥9,000) ¥9,000
寄付系
- Rebuild.fm スポンサー ¥10,332
- Wikimedia への寄付(秘密)
その他
- はてなブログ (はてなブログPro 2年コース¥14,400) ¥7,200
Work from homeが始まってから買ったもの
3月から1度もオフィスに行ってないです。
もとからデスク・オフィスチェアや外付けモニタはあったので、自宅で仕事出来る環境はありましたが、より快適にしたかったので半年でいろいろ買った。
EIZO FlexScan 27.0インチ ディスプレイモニター EV2785-BK

EIZO FlexScan 27.0インチ ディスプレイモニター (4K UHD/IPSパネル/ノングレア/ブラック/USB Type-C搭載/5年間保証&無輝点保証) EV2785-BK
- 発売日: 2018/01/30
- メディア: Personal Computers
2台目のEV2785-BK。
2台あっても生産性は2倍にはならない。
右側にエディタを表示して左側にそれ以外を表示して使ってます。
Amazonで買った。
エルゴトロン MXV デュアル デスクモニターアーム

エルゴトロン MXV デュアル デスクモニターアーム マットブラック 45-496-224
- 発売日: 2019/06/20
- メディア: Personal Computers
定評があるらしかったので。 机を壁に付けて使っているとアームの可動範囲がせまく、モニターが大分前面に来てしまうので調整したい。モニタと同じくAmazonで買った。
YubiKey 5Ci
Work from homeとは関係ないけど、GitHubフィッシングが話題になったときに、Amazonで買った。
吸気口フィルター
ずっと家に居るので、空気質が気になりはじめた。 空気清浄機を買おうと思ったが、24時間換気システムの吸気口フィルターを交換すれば改善できそうと思い、適合するフィルターをAmazonで買った。

ユニックス 差圧式給気口 PDG(F)150シリーズ用 外気浄化フィルター PDG PDFフィルタセット φ150 3枚入
- メディア: Tools & Hardware
買ったあとで、もっと性能の良いフィルターがあることを知った。
新フィルターTF-A-PG/PF<トレフィン>登場!! | 高品質フィルターのユニックスストア
ダイソン 空気清浄機能付 ファンヒーター Dyson Pure Hot + Cool Link HP03WS ホワイト/シルバー
結局空気清浄機をヨドバシで買ってしまった。
温風送風機能が付いているので、エアコンが故障したときのバックアップだよ(言い訳)

ダイソン 空気清浄機能付 ファンヒーター Dyson Pure Hot + Cool Link HP03WS ホワイト/シルバー
- 発売日: 2017/04/26
- メディア: ホーム&キッチン
1日12時間稼働で1年でフィルター交換らしいが、 空気質が悪くなったら稼働するオートモードがあり、平均2時間も稼働してないので、 4年くらいは持ちそう。 アプリをインストールすると、稼働時間・空気質・湿度・温度のモニタが出来るので、むしろその機能をよく見ている。
掃除機も持ってるけど、ダイソンは使いたくなるデザインが上手いと思う。
ヨドバシ.com - ダイソン Dyson HP03WS [空気清浄機能付ファンヒーター Dyson Pure Hot+Cool Link ホワイト/シルバー] 通販【全品無料配達】
ロジクール HD プロ ウェブカム フルHD 1080p C920S

Logicool(ロジクール) ロジクール HD プロ ウェブカム フルHD 1080p C920S
- メディア: エレクトロニクス
プライバシーシャッターつきなので。
ヨドバシ.comで買いました。
ヨドバシ.com - ロジクール Logicool C920s [ロジクール HD プロ ウェブカム] 通販【全品無料配達】
AKG LYRA USBマイク

AKG Lyra-Y3 コンデンサーマイク USB接続対応 ヒビノ扱い 3年保証モデル
- 発売日: 2020/01/24
- メディア: エレクトロニクス
配信とかはしない。
サウンドハウスで買いました。
AKG ( アーカーゲー ) >LYRA USBマイク 送料無料 | サウンドハウス
サンワサプライ エルゴノミクスフットレスト MR-FR1
足への負担が気にならなくなったので、効果あるんだろう。
ヨドバシ.comで買った。
ヨドバシ.com - サンワサプライ SANWA SUPPLY MR-FR1 [エルゴノミクスフットレスト] 通販【全品無料配達】
ロジクール Logicool MX Master 3
ヨドバシ.com - ロジクール Logicool MX2200sGR [MX Master 3 アドバンスド ワイヤレス マウス グラファイト] 通販【全品無料配達】
ヨドバシ.comで買った。
MX Master 2sにくらべると、スクロールが快適になった。
ノートPCクーラー
ヨドバシ.com - ミヨシ miyoshi NSF-03 [ノートPCクーラー スタンダードタイプ] 通販【全品無料配達】
ヨドバシ.comで買った。
7月に私物のMacbook Pro 2016モデルをバッテリー膨張で有償修理した。
底が熱くなるけど使えるか、と思っていたのを考え直して冷却台を導入。
光らなくても良いのに、と思ったが、ノートPCを載せればほぼ塞がるし、付けっぱなしで気づかないことが防げるかもなのでいいのかもしれない。
電源タップ 3m
サウンドハウスで2つ買った。
CLASSIC PRO ( クラシックプロ ) >電源タップ PDS8 3m 送料無料 | サウンドハウス
電化製品増えて足りなくなってきたので。
チェアマット
ヨドバシ.comで買った

