CAT GETTING OUT OF A BAG

What the tester is thinking.

しいばさんのこと

しいばさんに感じる「良いイメージ」は、いったいどこからくるのだろうと、前から思っていた。昨日おしゃべりしてわかった感じがする。いや、5年前にとちぎでお会いして、そのときからたぶんわかっていた。この感じを、忘れないうちに書き留めておこうと思う。

しいばさんは、より良い開発がしたくて、いろんな仕組みを取り入れながら、試行錯誤をくりかえし、チームや組織がいい感じになるようにサポートしている。また、アプリケーションアーキテクトとしても活躍している。

一緒に仕事したこともないし、しいばさんの職場を見学したわけでもないけど、ブログや講演スライドから伝わってくる「それ」から嫌な感じを受けないのは、なんでなんだろうと不思議に思っていたのだ。*1

良いイメージはどこから?

  • 周囲の人たちに気を配り、みんなが気持ちよく仕事ができるようにするには、どうしたらいいかなって、いつも考えてるところ。
  • じぶんの手柄にするみたいなの、まったく感じない(感じさせない)ところ。
  • かっこつけないところ。
  • どこかで見たようなフレーズではなく、自分の言葉で話してくれるところ。
  • むずかしい言葉を使わないところ。
  • 知ったかぶりをしないところ。
  • 人の話をそのまま聞いてくれるところ。
  • ほんとうに自分でやってるところ。(号令をかけるだけ、仕組みを用意するだけではない)
  • いつも穏やかそうなところ。
  • なんでもまず受け入れてくれそうなところ。
  • わからないことはわからないなーと言ってくれそうなところ。
  • 嘘がなさそうなところ。

わたしだって、周囲の人たちが嫌な気持ちにならないように言動には注意してる。たいていの場合はそのように行動できてると思う。しかし「前からそうなってます(だから直さなくていい)」などと言われると「なにーーー!!」(すべてのバグはだいたい前からそうなってるだろ!!!その論理が通るならすべてのバグは直さなくていいってことになるだろ!!そうじゃないだろ!!)という気持ちが溢れ出てしまう。言葉を発しなくても、まわりの人たちに伝わっていると思う。そういうダークな部分がしいばさんからは感じられない。はっ、もしかしたら単にこちらには見えてないだけなのかな。ということは、わたしももうすこし工夫すれば……と、考えてしまうあたりが、惜しいよね。

ラクティスありきではない

これはしいばさんご本人のことではなく、しいばさんがやってること、やろうとしていることについての感想。しいばさんの話は「プラクティスありきではない」と感じるから、気持ちいい。アジャイルアジャイルしてないし、スクラムスクラムしてないのがいい。しいばさんのブログを読むとアジャイルだしスクラムなので、なにを言ってるのか、わからないかもしれないが。

bufferings.hatenablog.com

普段やってることをブログにまとめたり、誰かに伝えるために、わざわざ書き起こそうとすると、どうしてもそういったプラクティス(名前)が前面に出てきてしまう。言葉にするとそうなってしまうのだ。*2

言葉としてのプラクティスは強すぎて、暴力的に感じることすらある。「うちも朝会やってますよ。同じですね!」とか。そうなんだけど、そうじゃないんだよな……同じではないと思うんだよ……と思っている。

「プラクティスありきではない」と感じるのは、どんなときも解決したいことに目が向いてるからだ。昨日聞いた話もまさにそうだった。「うちのチームも朝会をやってみよう。昨日何をやったか? 今日何をやるか? 困っていることは? を、ひとりずつまわして話してみよう」ではなく「開発で問題になる前の個人の気がかりを、なるべく早くみんなのものにしたいな。運用の問い合わせや調査の依頼、突発の対応もあるんだよ。チームとして今日1日をどう過ごすのかの計画を立てたいんだ。どうすればいいかな。エンジニアだけでなく、プロデューサーもいたほうがいいよね。それから……」これらの活動や仕掛けを全部ひっくるめて「朝会」とか「デイリースクラム」と呼んでいるだけに過ぎない。この違いは大きい。

おしゃべりのあと

うちのチームの @vestige_ が「しいばさんが眩しい」とツイートしていて、ほんとうにそうだなと思った。キラキラではないほうの眩しさを感じた。

使用したマイク

使用したマイクスタンド

テスト駆動開発

テスト駆動開発

  • 作者:Kent Beck
  • 発売日: 2017/10/14
  • メディア: 単行本(ソフトカバー)
Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち

Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち

  • 発売日: 2020/08/07
  • メディア: 単行本(ソフトカバー)
ソフトウェアテスト293の鉄則

ソフトウェアテスト293の鉄則

もしかして

druby.hatenablog.com

*1:会社員としてのわたしが「開発プロセス◯◯活動」や「なんとか推進ワーキンググループ」などに、これまであまり良いイメージを持ってこなかったのも影響していると思う。

*2:このへんは、ラムダノートの鹿野さん(編集者)のようなプロの手にかかれば、どうにかなるのかもしれない。

なにがうれしいんだっけ?

先日のテストラジオで「初めてやる機能のテストの話」を聴きながら、そのお題の「自動保存機能」で起きるかもしれない嫌なことを考えていたのですが、そもそもなんで自動保存したいのかな、それを解決できるようになっているのかな、と気になりました。

これは自動保存に関わらずどんな機能でも同じで、仕様どおりに作れたのか?というよりも、作ったことで何がどう変わるのか、何ができるようになったのかということです。要件からブレイクダウンして仕様どおりに作ったのに、まったく役に立たなかったら悲しいですよね。誰も幸せになりません。

◯◯したいの裏側には◯◯できない以外の課題や問題が潜んでいます。開発のはじめの頃はそれをちゃんと意識していたのに、設計や実装やテストといった具体的なフェーズに移ると、だんだんとそれがあたまのすみに追いやられ、結果的にズレていってしまう。わりとよくあるのではないでしょうか。それが悪いことだとは思ってません。きっとそうなりやすい性質があるんだろうな。

なにがうれしいんだっけ?

こんなとき、わたしたちのチームでは誰ともなく「(これを作ると)なにがうれしいんだっけ?」と問いかけます。それまで技術的で熱いディスカッションをしていたみんなの意識を、もともとの課題や問題に急速に戻すことのできる便利なフレーズです。

似たような言葉で『顧客にとっての価値』がありますが、そんな言葉を普段の会話の中で使うと「また難しいことを言いやがったな…」と身構えてしまう人もいるので(わたしです)気をつけてください。


自動保存の例ですと、こんな課題や問題が潜んでいるかもしれません。

  • 保存操作が面倒くさい
  • 入力中に別の用事で席を外して戻るとタイムアウトになって入力し直しになる
  • 入力項目がめちゃくちゃ多くて保存にいくまでが大変
  • 仮保存したい
  • うっかり保存しないで終わりにしてしまうことがある
  • 書いてる途中、ごく稀にだがアプリケーションがクラッシュする
  • 書いてる途中の履歴も取っておきたい
  • ほんとうは版管理したい

完璧な自動保存機能を作っても、解決しないものがありますね。

何があなたをソフトウェアテストに導いたのか

Christin Wiedemann さんの記事(Why Are You a Tester?)を読みました。

thinktesting.com

What brought them into software testing?

何があなたをソフトウェアテストに導いたのか?という問いに対する、わたしの回答です。

140文字におさまらなかった部分を補足して英文にしてみました。(Google翻訳そのまま!)

I am developing a medical device.  One day I embedded a bug that causes serious problems.  Fortunately I was able to find it before it hit the market, but what if it wasn't?  At that time, I was a programmer.  I wanted to know more about software testing. At this very moment I was led to software testing. More than 15 years ago,  I still remember how I felt when this bug was detected late in development.  I was very scared.  When developing software, it's deep in my heart.

日本語訳

私は医療機器を開発しています。ある日、私は深刻な問題を引き起こすバグを埋め込みました。幸い、市場に出る前に見つけることができましたが、そうでなかったらどうなったでしょうか? 当時、私はプログラマーでした。ソフトウェアテストについてもっと知りたいと思いました。私がソフトウェアテストに導かれた瞬間です。15年以上前のことですが、このバグが開発の終盤に見つかったときの気持ちを今でも覚えています。とても怖かった。ソフトウェアを開発するとき、それは私の心の奥底にあります。

Why Are You a Tester?

タイトルにもあるように "あなたがテスターである理由" も問われています。テストの何が面白いのか。テストの何があなたを惹きつけるのか。なぜそれほどまでに熱狂的になれるのか。

前にだれかに聞かれたような気がするな。(あとで書く)

データ移行で起きるかもしれない問題

毎週楽しみにしているテストラジオデータ移行後に見つかったバグの話を聴き、わたしも「データ移行で起きるかもしれない問題」を考えてみました。メモ帳に書き出したものをツイートしたのですが、さらにいくつか追加(編集)したので、それもあわせて載せておきます。

逆引きテスト

今回は「データ移行で起きるかもしれない問題」をお題にしましたが、普段の開発でも "起きるかもしれない嫌なこと" を起点にした「逆引きテスト*1」をしています。それが本当に起きるとしたら原因は何が考えられるだろう。何をどうすればそれが起きるのかを想像し、嫌なことが起きそうな状況を実際に作り、動かして試すのです。

幸運なことに "起きるかもしれない嫌なこと" はモノをつくる前から想像できます。これをできるだけ早いうちにチームのみんなに伝えておくのがポイントだと思います。プログラマーは大きな構造(アーキテクチャ)を念頭に設計や実装面からそれが起きる可能性を探り、嫌なことが起きないような仕組みを入れてくるはずです。テスターはわたしとは違ったアプローチで試してみたいことを考えはじめるでしょう。

起きたら嫌なことや不安なことは思いつくけれど、それを誘発しそうな”何か”がわからなくても伝えましょう。プログラマーは現実の世界でそれが起きないことを理詰めで教えてくれるかもしれません。プロの無職*2やテスターの脳内配線に刺激をあたえ、奇妙な"何か"を提起してくれるかもしれません*3。わたしたちのチームではよく見る風景です。

データ移行で起きるかもしれない問題

  • データ移行処理に時間がかかりすぎる。
  • 少ないデータ数ならすぐに終わるが、データ数が増えれば増えるほど指数関数的に処理時間がかかる。
  • データ移行処理がいつ終わるのかわからない。*4
  • データ移行処理を途中でキャンセルできない。
  • データ移行処理を途中でキャンセルしたあとのデータ移行処理がうまく動かない。
  • データ移行処理がちゃんと動いているのかフリーズしてるのか見た目にわからない。
  • データ移行処理を流して終わる頃に見に行ったらエラーで止まっていた。
  • エラーに関する情報が乏しく原因解明に時間がかかる。
  • データ移行処理中は(インタラクティブが頻繁に発生するので)その場から離れることができない。
  • データ移行処理中は(いつエラーが起きて止まるかわからないので)その場から離れることができない。
  • データ移行処理中にセキュリティ機能が動いて自動ログアウトしてしまった。
  • 全ての項目にデータをきっちりぜんぶ埋めたらバッファオーバーフローで止まる。
  • 食わせるデータは同じなのにうまく動くときと動かないときがある。(e.g. 競合状態は起きないという思い込み)
  • 食わせるデータは同じなのに実行する装置によって失敗する。
  • ストレージが足りなくて失敗する。
  • データ移行が途中で失敗したのでいったんデータを元に戻そうと思ったが戻らない。
  • データ移行中に他の機能は動かない(動いたとしても悪さをしない)という思い込み
  • データ移行プログラムは正常終了したがシステムが動かない。または特定の機能が動かない。
  • データ移行は仕様どおりにできたが本来やりたかったことができない。(お客さまが本当にやりたいことは何なのでしょう?)
  • データ移行後、新しいデータと一緒に使うと動かない。または特定の機能が動かない。
  • データ移行後、システムが動くことは動くが全体的に遅い。または特定の機能だけ遅い。移行前のパフォーマンスがでない。
  • データ移行直後は動いたのに、翌日になったら動かなくなった。システムを再起動したら動かなくなった。
  • データ移行したらオプション機能が使えるようになってしまった。(使えなくなることは気づきやすいが、使えるようになるのは気づきにくい)
  • データ移行処理の際に生成した中間ファイルが残っている。
  • データ移行処理の際に(意識的か無意識かはわからないが)生成したログやファイルがリソースを圧迫。いつかシステムが動かなくなるが原因解明に時間がかかる。(1週間前に動かしたデータ移行処理のせいだとは誰も思わない)
  • 保護しないとならないデータ(個人情報など)がログやファイルに残っている。
  • これではまずいと削除するようにしたがゴミ箱に残っている。
  • 合否を判定するために処理結果を出力するようにしたが、大量に出すぎてまともに確認できない。
  • 上記、処理結果の出力自体を間違える。当然合否判定も間違える。
  • ある特定の項目の移行処理だけすっぽり抜ける。
  • 最後の文字が欠落する。(最大文字数を入れて確認しないと気づけない)
  • 奇数バイトだとおかしくなる。
  • 制御コードが入っているとおかしくなる。
  • 特定の文字が入っているとおかしくなる。文字化けする。途中で欠落する。
  • 同じデータを入れてテストしたので移行先が間違っている問題に気づけない。(e.g. 固定電話No.に"0123456789"、携帯電話No.に"0123456789"を入れてテストする)
  • ソースコードをコピぺしたあとに修正ミスが起きる。(e.g. PhoneNumber01、PhoneNumber02のような項目名)
  • データが改変されている。
  • 現行データの一部を上書きした。
  • 現行データが消えた。
  • 意図せずに整形してしまう。(e.g. データ移行処理を実行した装置(OS)の日付や通貨の表示形式などに引きづられる)
  • 先頭と末尾のスペースを勝手に削る。
  • 末尾に不要なスペースを埋める。
  • 処理の途中で数値型変換がはいり微妙なズレが生じる。
  • データ登録日時を登録すべき項目にデータ移行日時が(意図せず)登録される。(e.g. データを追加した日時が自動的に設定されるようになっている)
  • 移行元に無いデータは移行できない。
  • 移行前と移行後でデータ数が異なる。少ない。多い。
  • 重複したデータが登録される。移行元データにばかり注目していて現行データを気にしてなかった。
  • エラー時のリトライ処理で同じデータが複数登録される。
  • テストデータも一緒に登録してしまう。
  • 移行前と移行後でデータ数は同じなのに、移行前だと表示しないデータが表示される。(e.g. 論理削除データ)
  • 制約に引っかかり移行できない。データそのものに問題があるのかもしれないし、移行順の問題かもしれない。
  • 画面に表示されないデータ(内部的に使うデータ)が移行できてないことに気づけない。
  • データ移行テスト用のデータが作れない。
  • テスト用のデータを作るのに時間がかかるのに十分な時間を取っていない。
  • ずっと同じテストデータを使っている。(途中で入った機能追加や変更にハマるようなテストになっていない)
  • データ移行中に日を跨いだら止まった。移行テストは定時時間(9時〜18時)しかやってないから気づけない。
  • データ移行中に停電が起きた。
  • データ移行テストのために本物のデータを使ったら(こわくて書けない…)

厄介な問題

本番環境で本当に起きてしまう問題の多くは、ここにあげた問題以外で起きます。厄介ですね。問題はいつだってわたしたちの目の行き届かないところに潜んでいます。だから「他にもあるかもしれない」「きっとあるはずだ」と探し続ける必要があります。そうです。わたしごときがすこし考えたくらいで簡単に思いつくはずがないのです。本記事も不定期に追加(編集)することになるでしょう。

*1:わたしがそう呼んでるだけでJSTQBの用語だと「エラー推測」が近いかな。開発やテストに関わる多くのエンジニアが同じようなことを(意識せずに)やられていると思います。

*2:@m_seki

*3:誰かの不安や心配ごとが引き金となり全く別の課題や問題が見つかることがあります。ここにあげた問題のいくつかは他の機能開発(e.g. インストーラアンインストーラ開発)でも起きそうです。

*4:https://twitter.com/akiyama924/status/1359773775772852225

2020年7月〜12月に買ったもの(自宅のパソコンまわり)

自宅のパソコンまわりがこの半年間でかなり変化しました。買ったものを記録しておきます。(貰ったものもあります)

Apple Magic Keyboard

今年はCOVID-19の影響で在宅勤務にシフトされた方も多かったと思いますが、わたしの場合はそれがきっかけではなく、誕生月にApple Magic Keyboard - 日本語(JIS)をプレゼントしてもらったのがはじまりました。

Apple Magic Keyboard - 日本語(JIS)

Apple Magic Keyboard - 日本語(JIS)

  • 発売日: 2015/10/14
  • メディア: Personal Computers
 

 

MacBook Proと自分の間にMagic Keyboardを置いて使うことで、ディスプレイの位置が10cmほど遠くなりました。たったそれだけのことだけど老眼に優しい。 

togetter.com

よろこんでいたのも束の間、この配置で使い続けていると手元に窮屈さを感じるようになります。机の奥行きが物理的に足りないんですね。長年愛用している白いスチール机を買い替える気はさらさらなかったのでMacBook Pro用のスタンドが欲しくなりました。

またちょうどこの頃、某オンラインイベントに登壇しDiscordとZoomとKeynoteを一度に使う体験をしました。Macbook Proの13インチのディスプレイでは土地が狭すぎる…。「Sidecar」を使えば手持ちのiPadMacBook Proのサブディスプレイになると教えてもらったのですが、わたしのこころは4Kモニタにありました。

support.apple.com

AmazonMacBook Pro用のスタンドと4Kモニタを調べたのですが、商品が多すぎて選べない。こういうときは知ってる人のPC環境を参考にしよう!ということで、櫻井さんちの作業環境を見たけどプロ仕様すぎて参考にならなかったです。一品一品がちゃんとしてて憧れる。

fjord.jp

MacBook Pro用のスタンド

Amazonのレビューを読んで良さそうなスタンドを「ほしい物リスト」に入れておいたら、池澤さんが贈ってくださいました。

とにかく頑丈でしっかりしたものが欲しかったので満足しています。デザインもシンプルで気に入ってます。高さや角度は変えられませんが問題なかったです。机の奥行き問題も解消し、ディスプレイの位置が高くなり身体的にずいぶん楽になりました。これまでと比べて眼球の移動量が減り、それに伴い頭部や頸部への負担も軽減されたのではないでしょうか。

27インチの4Kモニタ 

EIZOのモニタは高級すぎるのでそれよりは低価格でまあまあ良いやつはどれか?と @m_seki(以降、プロの無職)に相談したらLGの新型と旧型をおすすめされました。旧型にしました。プロの無職と同じものを買っておけば、何か困ったことがあってもサポートしてもらえるからです。

モニタとしての基本的な性能については何も問題ありません。素晴らしいです。特筆すべきはこのモニタ、給電サポート付きなんですよ。付属のUSB Type-CケーブルでモニタとつないでおくだけでMacBook Proがいつも充電100%になってるの。メニューバーのバッテリーアイコンを見て残量何%だとか、もうすぐ赤くなるかなとか、そろそろ充電しなきゃとか考えなくていいのが本当に楽です。変化を監視して行動を変えていくの、自分が思ってる以上にストレスかかっているんだな。

在宅勤務のときはDynabookを付属のDisplayPortケーブルでつないで使っています。快適です。

USBコンデンサーマイク

これまではiPhoneについてきたおまけのイヤホンを使っていたのですが、オンラインでのコミュニケーションは音声品質がとても大事!と実感し、某シンポジウムの参加に合わせて購入しました。自分で自分の声を聴くことはできないのだけど、何名かの方から「とてもクリアに聴こえましたよ」と教えてもらって満足しています。というか、この商品がどうやって選ばれたのかを遡ると酒匂さんのYetiに行き着くので間違えようがないのだけど。

本題とは関係ないけど、酒匂さんが翻訳した本で所有しているものを貼っておこう。 

Apple AirPods Pro

Yetiのマイクと同時にイヤホンも買いました。プロの無職にAirPodsをおすすめされて他のイヤホンを調べるのが面倒だったので「じゃあそれでいいわ」と秒でProを買ったら泣いてました。

Apple AirPods Pro

Apple AirPods Pro

  • 発売日: 2019/10/30
  • メディア: エレクトロニクス
 

Apple Magic Trackpad 2

MacBook Proをスタンドに乗せたので、地上(机上)ではMagic KeyboardとMagic Mouseを使っていました。 

ツイートによると2011年7月にMagic Mouseを購入したようです。当時マインドマップ(XMindだったかな)を描くのにトラックパッドだと操作しづらくて買い求めたと記憶してますが、結局あまり使いませんでした。ようやく日の目を見ることになったMagic Mouseですが、あれから10年くらいの月日が流れ、今度はわたしがトラックパッドの操作に慣れすぎてしまってMagic Mouseが使いづらい事態に…。今回Magic Trackpadを購入したことで、Magic Mouseは再びお蔵入りとなってしまいました。

Magic Trackpad、めっちゃいいです。MacBook Proについてるトラックパッドよりひとまわり大きく、角度(傾き具合)が絶妙で使いやすい。押し込だときの感触も好き。最高。

Apple Magic Trackpad 2 - シルバー

Apple Magic Trackpad 2 - シルバー

  • 発売日: 2015/10/14
  • メディア: Personal Computers
 

クリップライト

2台購入しました。机の両端に1台ずつ置いてあります。使う機会はほとんどありませんが、オンラインで顔出しするときは「3段階調色/10段階調光」で最高に明るくして、気になるところを全部飛ばしてやろうと思っています。

アルミ製のiPad用スタンド

iPad用スタンドは必要に迫られてというよりは、配置してみたくて購入しました。左側にMacBook Proのスタンド、真ん中に4Kモニタ、右側にiPadのスタンドがあると見た目のバランスがよく収まりがいい感じしませんか?

iPad用スタンドはある程度自由に角度を調節できるものが欲しかったのでこれにしました。ぐらつきもなく安定しています。折りたためないタイプです。

iPadの主な用途は読書です。後述するBluetoothスピーカーとつないで音楽プレーヤーとしても使い始めました。Apple Pancilでアイデアをメモしたり、気軽に持ち運べてインターネットできるのが良いです。それだとスマートフォンと変わらないのでは?と思うかもしれないけど、大きな画面で見れるのはぜんぜんちがうんですよ…。

iPadApple Pencilは昨年のクリスマスシーズンに自分へのプレゼントとして買いました。

ケーブル収納ボックス

それまであまり気にならなかった机の上のケーブル類が目につくようになりました。ずっと前からぐちゃぐちゃだったのに面白いよね。このケーブルたちをどうしたらいいものか?とインターネットで調べて見つけた記事がこれです。

note.com

このデスクをすっきりさせるマガジンに載ってるデスク環境は全部読みました。テーマや求めるものはみなさん違いますが、理想のデスク環境に近づけるための思いと工夫と努力と1mmたりとも妥協しないその姿勢が素晴らしい。だが、知っているぞ。そこは沼だ。

note.com

最高峰のケーブル隠しテクニックを目の当たりにして早いうちに諦めがつきました。諦めたというか見極めた。わたしにはケーブル収納ボックスくらいがちょうどいいな、と。

小さいサイズ(4個口電源タップ用)と大きいサイズ(6個口電源タップ用)があります。工夫すれば4個口用でもいけるかなと思ったのですが6個口用にしました。机の上に置いて使ってます。意外とかさばる4KモニタのAC-DCアダプタや太くて長い電源コードなども箱の中に入れてます。大きいサイズを購入してよかったです。サイドのスリットからLightningケーブル(0.9m)を出しておき、iPhoneAirPodsなど適宜充電しています。

電源タップ

いつ買ったのか覚えていないくらい前(おそらく15年以上前)の電源タップを使っていたのですが、よく見たらスイッチランプの光が点滅とまではいかないけど弱々しく揺れていることに気づきました。特に問題なく使えているのですが、古いタップだし漏電して火事にでもなったら大変だと思い、収納ボックスを買うついでに新調しました。収納ボックスと同じエレコム製です。

購入してからわかったことですが、スイッチランプの点滅はランプ自体の寿命が原因で起きているとのこと。コンセントの機能とは独立して動いているのでランプが点滅していてもコンセント側には影響はないみたい。(新調しなくてもよかったってこと)

絵 

那須の山奥にあるBar+Gallery 殻々工房で開催された佐藤陽香さんによる作品展で二点購入しました。朝、目覚めたときにこの絵が視界に入ってきたら気持ちいいだろうなと思って。

f:id:miwa719:20200724162213j:plain

「 窓を開けたら鳥の声が聞こえた。7 」

f:id:miwa719:20200724162148j:plain

「 薫風の庭で 1 」

Olasonic ハイレゾ対応高音質 Bluetoothスピーカー

数年前からBar+Gallery 殻々工房で展示、販売をしていてずっと気になっていた製品ですが(スピーカー持ってるしな…)と我慢していたのに、先日プロの無職が買ってしまい「すごくいいよ!」と自慢してきたのだ。

f:id:miwa719:20201228024534p:plain

ついカッとなって

www.olasonic.jp

現在、iPad + OlasonicでAmazon Music(無料お試し)を流してます。ジャズやピアノは生演奏を聴いてるみたい。臨場感ってこういうのを言うんだと思いました。音に奥行きを感じます。これまで聴こえなかった繊細な音色や響き、音にならない空気感や息遣いまでちゃんと聴こえる。すごくいいってわかるんだけどうまく説明できません。

さっき、スピーカー持ってるって書いたけど、これは15年前くらいにプロの無職が譲ってくれたONKYO WAVIO ル・シータ アンプ内蔵スピーカー 6W+6W GX-R3X(W) /プラチナホワイトなの。スピーカーもらっておいて新しいのなんて買えないよね。(買ったけど)

こちらは今も現役で4Kモニタにつないで使っています。普通によいです。スピーカーの側面についてるつまみでボリュームと低音が調節できるのが便利。

ホット脚入れヒータ

もうこれがないと冬場のデスクワークは無理だと思います。買ってよかった。 

小さな加湿器

適応畳数がプレハブ洋室で約3畳の小さな加湿器です。机のそばに置いて蒸気を感じながら作業したくて購入しました。小さくても約11時間連続加湿できます。夜、寝る前に給水タンクを満タンにしておけば朝まで使えます。タイマー機能はついてません。電源プラグをコンセントに差し込み、電源スイッチをONにすることで動き出します。運転時はリセットボタンのランプが点灯します。電源スイッチをOFFにすると停止します。

運転中にタンクの水がなくなったときどうなるか気になりますよね。実験しました。水がなくなるとリセットボタンのランプが消灯し、運転を停止しました。そう!電源スイッチがONの状態を保ったままちゃんと停止しました。期待どおりです。引き続き、給水したタンクを本体にセットしリセットボタンを押し込むと、ランプが点灯し運転を再開しました。よし!

基本動作の確認ができたので、次回はリセットボタンを押し込む前に電源スイッチをOFFにしておこうと思います。この操作手順は取扱説明書に載ってません。

アイリスオーヤマ 加湿器 加熱式加湿器 ピンク SHM-120R1-P

アイリスオーヤマ 加湿器 加熱式加湿器 ピンク SHM-120R1-P

  • 発売日: 2019/09/17
  • メディア: ホーム&キッチン
 

番外編

社内で『熊とワルツを リスクを愉しむプロジェクト管理』の読書会をすることになりました。参加者は全員紙の本を持っているのですが、プロジェクターに映すためのKindle版、iPadとプロジェクターをつなぐためのLightningケーブル、iPad用スタンドを買いました。 

Apple Lightning - Digital AVアダプタ 

Apple Lightning - Digital AVアダプタ

Apple Lightning - Digital AVアダプタ

  • 発売日: 2015/04/16
  • メディア: Personal Computers
 

プラスチック製のiPad用スタンド

読書会は週1回なのでスタンドを持ち運ぶことを考えて軽いもの(200g)を選びました。問題なく使えてます。自宅ではスマートフォン置きとしても使ってます。高さの調整は二段階、角度の調整はできません。厳選した機能で勝負してきたそんな製品です。こういうの好き。

 

無意識なテスト

ソフトウェアテストの小ネタ Advent Calendar 2020 - Qiita 11日目の記事です。

qiita.com

はじめに

私は医療機器(自社製品)の開発者です。開発の現場で感じるちょっとした違和感を大切にし次の行動に移るためのシグナルとして使う、そんなお話を2年前のソフトウェアテスト #2 Advent Calendar 2018 - Qiitaに投稿しました。『違和感のつかまえかた』は多くの方に読んでいただき、これがきっかけで登壇したりと印象深い記事のひとつになりました。今でも覚えているコメントがあります。


この人、無意識を使おうとしてる。

開発やテストで無意識を使おうとする意識は無かったのですが、そう言われてみればそうかもしれません。無意識が教えてくれることは意外に多くバグも出せます。何を言ってるのかわからないかもしれませんが、毎日のことなので偶然ではなさそうです。この記事では ”意識して触っているわけではないのにバグを出せてしまうテスト” を「無意識なテスト」と呼ぶことにして、この伝わりそうにない無意識なテストについて書いてみようと思います。

無意識:国語辞典的な意味

土曜日の午前中、愛車で近所のスーパーへ買い物に行くときに左折しなければならない道を直進してしまい、あわててUターンしました。なぜ直進したのかはすぐにわかりました。そう。平日の通勤経路が直進だったのです。会社に行こうなんてこれっぽっちも思ってなかったのに無意識に直進してしまいました。

む-いしき【無意識】

1. 意識がないこと。正気を失うこと。「無意識の状態が続く」

2. 自分のしていることに気づいてないこと、また、そのさま。「無意識に足が向く」

3. 精神分析学で、意識下の領域、種々の人間現象の背後にあって影響を与える混沌としたもの。催眠・自由連想・投影検査、麻酔などの薬物作用によってのみ表出が可能となる。潜在意識。

さすがに正気は失ってなかったので 1. ではありませんね。直進したその一瞬だけを切り取ると 2. の「自分のしていることに気づいてないこと」ですし、直進した=表出したのは 3. の「潜在意識のなせるわざ」とも言えそうです。無意識なテストも 2. または 3. に当てはまります。

無意識なテストの特徴

  • こんなことをしたらこういう問題が起きるかもしれないと狙いを定めてやるテストとはちがう(そういうテストは毎日やってるけどそれとはちがう)
  • 気がついたらやっていた
  • 頭で考えるというより身体が勝手に動いている
  • なぜそんなことをしたのか聞かれたら意図や理由を答えることができる
  • 当てずっぽうにやっているわけではなさそう
  • 思考のスピードに自分のテストが間に合ってないと感じる
  • 脳内に広がる情報量が多すぎて取りこぼしていると思う
  • 取りこぼさないように脳内に浮かんだことを言葉にしようとした瞬間に無意識なテストではなくなる
  • 脳内にあるのはこんなこと

企みや企てや期待する結果や期待しない結果や起きたら嫌なことや前にこんな問題があったとか昨日のプロダクトの様子とか同僚がこんなことを気にしていたとか処理は一瞬で終わるけど内部的にはこんな風に動いているはずだとか自分が作るとしたらどう作るかとかその作り方だとこんな風に間違えるかもしれないとか実装中に話題になったことやプログラマーの表情やチケットに書いてあった断片の文字やいま目の前で起きていることや指先から伝わってくる感触や視神経に残るコンマ何秒か前の残像(はあはあ)

  • QuestionとAnswerのセットが一瞬のうちに大量に処理されるイメージ
  • ものすごく繊細なときもあれば大胆なときもある
  • わずかな綻び(設計や実装が破綻する前触れのようなもの)を肌感覚や手触りで感知する
  • 出したバグをあとから思い返すとロジカルに見つけているのがわかる
  • 息を吸って吐くように自然にできる
  • 属人性が高い
  • プログラマーSさんの感想:"こわくて見てられない"
  • プログラマーFさんの感想:"落ち着きがない"

f:id:miwa719:20201210194446p:plain

バグの原因調査で動作ログからShiftキーを押していたことをプログラマーから告げられたときの私

なぜこんなことができるのか

私たちのチーム(以下、咳チーム*1)の製品開発のやりかた(チーム全体がひとつの生き物のように見えます。その生命体がやっていることすべて)に秘密があると思います。なぜなら咳チームにJoinする前は無意識なテストなんてできなかったし、第一そんなテストが有るなんて知らなかったから。ちょうどよい媒体がたまたま私だっただけで、無意識なテストは宿るべくして宿ったチームの成果物のようにも思えます。再現性のないおとぎ話のようですが、無意識(意識下)に強い影響を与えてそうな2つの習慣を紹介します。

1. どういう仕組みで動いているのか想像しながら触っている

ボタンを押すと画面が切り替わり○○が表示される、のような人間の目に見える変化だけでなく、たったそれだけのことを実現するためにソフトウェアがどういう仕組みで動いているのか想像しながら触っています。たとえばこんな感じです。

ボタンを押すということはどういうことか。どのイベント(MouseDown、MouseUpのような)に反応するのか。イベントを感知するプロセスと○○を取ってくるプロセスは同じなのか。○○はどこからどうやって選ばれ、どのようにしてデータを受け渡しているのか。その中間データはそのあとどうなるのか。受け取ったデータはそのまま使うのか、加工するのか。その時点ではたしかに存在してる○○を選ぼうとした直前に○○が消えていたらどうなるのか。画面の初期化はどのタイミングで行うのか。毎回やるのか。初期値はどこから持ってくるのか。画面のその位置に○○を表示すればいいことをプログラムはどうやって知るのか。

このように想像しながら触っていると「たったそれだけのこと」なんて思わなくなります。1秒で終わる処理がとてもとても長いものに感じます。ソフトウェアの隙間に気づき、試したいことがどんどん出てきます。画面を眺めているだけでは目に映らなかった問題や課題が見えてきます。新しい疑問がわいてきます。

どういう仕組みで動いているのかイメージできるようになると、自分の頭の中にピタゴラ装置NHKの番組『ピタゴラスイッチ』に登場するからくり装置)のようなものが組み上がってきます。実際のソフトウェアと同じかどうかはわかりませんが(たぶん違うがそのズレは悪いものではない)脳内でそのピタゴラ装置を動かしながらプロダクトを触ります。ときにはピタゴラ装置のある部分に障害物を置いてどう反応するのか観察します。プロダクトを動かしながら自分の理解をテストし続けるのです。

仕組みを知るにはどうしたらよいか

ソフトウェアがどういう仕組みで動いているかは、それを実装したプログラマーから教えてもらうのが一番良いです。またはその仕組みを知っている人。教えてもらうタイミングは何か不具合が見つかったときがおすすめです。"この状況でこんなことをするとこういう風におかしくなる" という物語を使って仕組みをトレースすると頭に入ってきやすいです。またこのときに仕組みの中のどこをどう直そうとしてるのかも併せて教えてもらうとよいでしょう。私は自分の頭の中にポンチ絵が描ければヨシ!(ひとまず理解できた)としています。不具合が直ってきたらどこをどうテストしようかな?と考えたり作戦を立てるときに、解像度が上がっているのを実感すると思います。

f:id:miwa719:20201210031531j:plain

100msecの間にソフトウェアの内部では何が起きているのか*2

2. 圧倒的な練習量

無意識なテストは身体的な反応(脊髄反射)に似ています。脳みそと感覚器を使って毎日プロダクトを触り続けていたら自然とそうなっていました。

私の1日(8時間勤務)の時間割りは、朝会と夕会で1時間半(内容は設計レビューのようなものです)、残りの時間はプロダクトを触ったり同僚のプログラマーやテスターと製品について具体的な話をしています。製品と向き合う時間の長さというよりはその時間をどう過ごしているかがポイントだと思いますが、仮にプロダクトを触る時間は1日1時間、残りの時間はずっと製品に関する会議をしていたとしたら無意識なテストは今も身についてないんじゃないかな。プロダクトの出来栄えや手触りや速度感を身体のすみずみまで染みわたらせるにはちょっと短いような気がします(個人の感想です)。

おわりに

意識して触っているわけではないのにバグを出せてしまう「無意識なテスト」について書きました。普段の開発では作戦としての無意識はありません。あてにしてないのでバグが出せたらラッキーくらいに思っています。無意識=気づかない、という側面もあるのでこわいですよね。

お客さまが想い描いている理想の世界や解決したい課題を自分たちの製品でどう表現するのか。ソフトウェアの仕組みを想像しながら動かし、お客さまが本当に望んでいるものは何かを問い続けています。このような毎日の営みが私たちのこころや身体となり、無意識の領域に働きかけるのでしょう。

鋭い読者は気づいたと思いますが、この記事を読んで無意識を意識してしまったら「無意識なテスト」になりません。私自身も今回これを書いたことで無意識に無意識を意識してしまいそうでちょっと後悔しています。

*1:世界一長生きのXPのチーム。@m_seki がプロの無職をロールプレイしている。

*2:話を聞いても複雑すぎて理解できないときもある。これはプロの無職に解説を求めて描いてもらったポンチ絵

N's YARD に行ってきた

那須の森の中にある奈良美智さんの私設アートスペース N's YARD に行ってきた。*1

f:id:miwa719:20201024144953j:plain

Thinking Time 2020 Yoshitomo Nara

展示室は room 0 から room 5 の6つ。room 0 には奈良さんの好きなレコードジャケットやミュージシャンの写真やオブジェが展示してあった。こういう音楽やモノたちに囲まれながら奈良さんは生活(創作)しているのね…。受付で展示マップを頂いたときに「room番号はゼロオリジンなのか。なんだかプログラマっぽいな」と思ったんだけど、room 1〜5 とは流れる空気がまったく違う(好きが溢れ出ている)から1ではなく0にしたのはそういうことなんだろう、と思うことにした。

f:id:miwa719:20201024144845j:plain

room 0

奈良さんの絵はなにかに不安や不満を抱いていて(でもそれらの想いを自分の言葉でうまいこと変換できない)どこか挑戦的でもある子供の表情が印象的で可愛い。君が何を想い何を考えているのか知りたいけど、何も聞かずにそっと見守ってあげたいとも思う。

f:id:miwa719:20201024150239j:plain

Tear 2019 Yoshitomo Nara

今回の展示作品の中で特に面白いなと思ったのは『旅する山子』。文字どおり『山子』が全国各地を旅する。room 2 には旅先でのスナップ写真がたくさん展示されていた。

f:id:miwa719:20201024145606j:plain

Traveling Yamako 2019 Yoshitomo Nara
f:id:miwa719:20201024145712j:plain
f:id:miwa719:20201024145727j:plain
f:id:miwa719:20201024145736j:plain
f:id:miwa719:20201024145815j:plain

 

単純だけど「背景を差し替えることができる」のが面白いのと、そこに吹いている風や湿度や匂いや音が『山子』がいることで、さらに色濃く感じられてすごい。あとぜんぶ同じはずの『山子』の表情が行く先々で違って見えるのが不思議。なんでそう見えるのか考えたんだけど、その背景から物語を(自分勝手に)作り『山子』に投影しているのかもって思った。キャンバスが段ボール(!)なのでいつでもどこにでも行ける自由な『山子』だけど、この作品から軽快さはそれほど感じられない。これを見た人のいろんな想いが『山子』に宿っているような気さえしてくる。

f:id:miwa719:20201024145552j:plain


他にも段ボールを使った作品があった。こちらのギターを弾く女の子なんかは目を細めながら見て「奈良さん amazon で何を買ったんだろう…」と下世話なことまで考えてしまった。

f:id:miwa719:20201024160605j:plain

Guitar girl 2020 Yoshitomo Nara

併設のショップでポストカード*2を1枚購入し、こならカフェで豆乳のカフェオレを飲みながら一休みしたあと、 room 0 からもう一巡した。今年制作した作品も置いてあったので定期的に入れ替わるのかな。次回は room 0 に展示してあった奈良さんの好きなレコードからプレイリストを作って、ロックやパンクを聴きながら鑑賞するのも良いかもしれない。*3

f:id:miwa719:20201024145906j:plain

Miss Forest/Thinker 2016 Yoshitomo Nara

www.nsyard.com

*1:撮影可能な展示品が多くてびっくりしました(フラッシュ使用と動画撮影は不可)。あとから写真を見て楽しむことができるから嬉しい。最近は日本でもそういう流れなの?

*2:娘ちゃんによく似ている女の子のポストカードを買いました。奈良さんの描く子供はどこか娘ちゃんに似ているんだよな。本人もそれは自覚していて彼女は数年前に青森県立美術館(奈良さんの常設展示がある)を訪ねている。

*3:奈良さんセレクトおすすめの3枚!みたいなの、どこかで紹介されてないかな