真実32 充分テストをしたとプログラマが自信を持つソフトウェアでも、全パスの50〜60%程度しか網羅していない。 パス・カバレージ・アナライザのような自動化ツールを使うと、網羅率が85〜90%に上がる。しかし、100%のパスを網羅するのは不可能だ。
真実34 ツールを使わないと、不良除去はうまくいかない。デバッガはみんな使うが、カバレージ・アナライザは、ほとんど使わない。
ということで、Perl 用のカバレッジ分析ツールを探してみる。 CPAN にある Devel::Cover が良さそげ。
apt-get install libtest-differences-perl \ libpod-coverage-perl \ libtemplate-perl
してから Devel::Cover をインストール
dh-make-perl --cpan Devel::Cover --build dpkg --install libdevel-cover-perl_0.45-1_i386.deb
WiKicker はExtUtils::MakeMaker を使ってパッケージ化しており、テストは t/*.t を使用するようになっているので、そのまま分析をする事ができる。
perl Makefile.PL make cover -delete HARNESS_PERL_SWITCHES=-MDevel::Cover make test cover
出力はこんな感じ
Reading database from /path/WiKicker/source/cover_db ---------------------------- ------ ------ ------ ------ ------ ------ ------ File stmt branch cond sub pod time total ---------------------------- ------ ------ ------ ------ ------ ------ ------ blib/lib/WiKicker.pm 100.0 n/a n/a 100.0 n/a 0.0 100.0 ...cker/App/Configuration.pm 44.1 0.0 n/a 62.5 n/a 0.0 41.7 ...icker/App/MarkUpAsHtml.pm 38.1 0.0 0.0 66.7 n/a 0.0 34.8 ...CGI/AbstractController.pm 24.8 0.0 n/a 47.4 n/a 0.0 23.6 [snip] ...ageHtmlFragmentVisitor.pm 100.0 n/a n/a 100.0 n/a 0.0 100.0 ...icker/WikiPage/WriNode.pm 96.4 83.3 n/a 88.9 n/a 0.9 93.0 .../tDiaryFragmentVisitor.pm 32.3 0.0 n/a 33.3 n/a 0.0 29.8 Total 59.2 41.3 31.4 67.5 100.0 100.0 56.7 ---------------------------- ------ ------ ------ ------ ------ ------ ------ Writing HTML output to /path/WiKicker/source/cover_db/coverage.html ... done.
cover_db/coverage.html に各モジュール毎のコードカバレッジが表示される。 また、各モジュールファイル毎のレポートもHTMLで作成され、プログラムの各行毎のカバレッジがプログラムとともに表示される。
なかなかいい感じ。さすがにパスカバレッジはサポートしていない。
コードカバレッジを上げてもバグ0にはなるとは全然言えないのは承知しているが、テスト漏れを減らすための情報として結構使えそうだ。
1週間前のとは別のプロジェクトで「すごい会議」を開いてみた。 といっても参加者は、前回のメンバとほとんどかぶっていて、新たに一人加わった4人。 3人はすでに前回途中まで「すごい会議」をやっているので、勝手がある程度つかめているかなといった感じ。
最初の手順であるが、これが意外と時間がかかる。 4人で30分弱。 ただ、雰囲気作りと書いてから発表するという手順に慣れるという効果を得るにはそれぐらい費すべきか。
前回もそうだったが、本の通り「〜(精神的意味合い)となる」という形で考えるとなかなか困ってしまうようである。テンプレートを再考した方がよさそう。
それぞれの立場が列挙される。 「自分自身が一番影響を与える」という意識に参加者を導くという意味合いがある手順であるが、ここであげられた各人のテーマを司会者としてどう組んでいくべきのか悩む。 前回と同様の悩み。
これが今回一番ブレイクした手順。 今回は以下のルールのもと進めてみた。
このルールによって、面白いようにホワイトボードにアイデアが書きこまれていく。 「どのようにすれば〜」は分割統治法で問題を解くエンジンではないかとこの間ちょっと思ったのだが、今回それを実感。
残り時間が少なくなってきたので、忙がなければならない解決策は担当決め。 後できちんとコミットメントリストに入れる必要あり。
結局ここまでで、今日の予定2時間が経過したので、終了。 やはり、最低もう倍ぐらいの時間はないと最後までまとまらなさそうだ。
そういえばこのまえ雑談で「1人1台PC + プロジェクタ + Wiki」を使うことで、ホワイトボードに書く時間を減らして効率的にできるのではという話が出た。
1度はそいういう形式でやってみたいのだが、ホワイトボードに手を動かして書いていくというのも捨てがたい。
それから、噂のポスト・イット イーゼルパッドもぜひ使ってみたい。 ホワイトボードだと、先に書いた手順は消していってしまうから後で参照できない。 巨大ポスト・イットに書き込んでいって、会議の後の方でも壁に貼っていつでも参照できるようにするといった進めかたをしてみたい。
全員がそれぞれノートを取るのはちょっともったいないかも。 ミーティングのテンションが上がって、ホワイトボードへの書き出しが多くなるほどノート取りが大変になって、アイデア出しに使う頭が奪われてしまう。
あたりのルールを決めて始めた方が良いかもしれない。
そうそう自分は FreeMind でノートを取ってみた(結局自分も皆と同様ノートを取っていたのである)。 どんどん追記されていくホワイトボードをメモるのは、紙に書くより圧倒的に楽(紙だと書くところがなくなる)。 図がででくると困りそうだけれど。 やはりその時は手書きやデジカメ併用で、後で清書するしかないかな。
常時携帯メモ帳 RHODIA No11 用にロットリングのエスプリムーブを使っている。 伸縮するボディを持ち、携帯するときは短いのに書く時には十分な長さになる便利なミニボールペンだ。
このエスプリムーブ、携帯にはいいのだがボールペンの書き味は自分にはどうもしっくりこなかった。 ちょっと太めで、黒くない黒なのでメモ書きにはイマイチな感じだ。
ということでリフィルを交換することにした。 エスプリムーブのリフィルは 4C 互換リフィル (D型)である。 ちょうど「ステーショナリーマガジン No.002」に、4C ボールペン替え芯記事があり国内外のリフィルの一覧が載っているので、これを見つつ候補をチョイス。
今回は人気の高いパイロットのハイテックC ゲルインクボールペンにしてみることした。
4C 互換リフィルを使っている「ハイテックCスリムス」用のリフィル LHRF-20C4-B (0.4mm) を買ってきて交換。
お、これは書き易い。黒も締まっているしいい感じだ。 油性ボールペンと違って書いた線も安定しているし、満足満足。
リフィルは高めで210円(税込)。ハイテックCはインクの減りが早いということなので、コストパフォーマンスは悪いのがちょっと辛いが、しばらくはこの「エスプリムーブ + ハイテックC」で使ってみることにしよう。
メンテナンス等のため社内 Web サイトを社外から閲覧する必要がある場合 SSH の port forwarding を使ってアクセスしていたのだが、その都度 Firefox の proxy を変更したりするのが面倒だった。
そんな折 FoxyProxy という Firefox 拡張機能があることを知った。 これは登録された URL パターン毎に、自動的に proxy を切り替えてくれるという優れもの。 これは便利。
autossh で port forwarding (SOCKS サーバ)を開いておくようにして、社内のホスト名/IP アドレスのURLの時はそこを経由するようにしておくと、いつでも Firefox から閲覧できるようになる。
autossh -N -f -D8090 <中継するホスト名>
いわゆる情報系の仕事をしている人で、プログラマからアーキテクトやプロジェクトマネージャーを経て、コンサルタントへというキャリアプランを持っている人は少なくないと思う。 また特にそう考えていなくても、気がつけばやっている仕事がそのような流れでシフトしていると感じている人も多いのではないか。
また明確に「コンサルタント」を目指していなくても、結局のところ計算機屋の仕事には多かれ少なかれはコンサルティングの要素が含まれている場合がほとんどであろう。
本書はG・M・ワインバーグ氏による、コンサルタントに関する有名な本である。日本語訳の本書が出たのは1990年なのでもう定番書の域に入っている本だ。 コンサルティングを行う上で、理解していなければならない要素が沢山つまっている。
文章はシニカルで、単純なハウツー本とは違う。読者がよく考えながら言わんとしているところを読み取り、会得する必要がある。
随所に書かれている法則につけられている法則名がワインバーグ氏の体験にもとづく名前で他の人(私)には覚えにくいのと、訳が直訳気味のせいかすらすらと読めなかったという点はあるものの、書かれていることは非常に核心をついたものばかりである。
「コンサルタント」「コンサルティングをする人」「コンサルティングっぽいことをちょっとでもする人」は読んでおいて損のない1冊である。
今週の月曜日に健康診断結果報告書が届いたんだけれど、なんと初の「D 判定(要治療)」! ちょうど保険見直しているところでこれはマズい。もちろん健康的にもマズい。 とはいえ発見できたのでツイてる。
潜血は一昨年に + が出ている。血色素量・クレアチニン・尿酸値もここ数年同じ傾向。 一時的なものではなくて、やはり何かあるのかなあ。
ということで早速今日かかりつけのお医者さんへ。
ただクレアチニン・尿酸値は高いとまずいけれど低くても特に問題なく、足の浮腫みなどもないようなので、腎臓系で問題はなさそうとのこと。 潜血が出ても原因が特にない体質の人もいるのだとか。
貧血もその先生的には全然問題ない数値とのこと。うん一安心。
一応採血して、先の健康診断ではしなかった腎機能系の項目について血液検査しておくことに。結果はまた来週。
とりあえず酷い事にはなっていないようで、ちょっと安心。
6月から自分のとこの開発グループのメンバ体制が変わったので、前チーム・リーダーのチームビルディング方法を今回ありがたくパクらせていただいた(前回)。以下自分の分。
(変更無し)
上がるとき
下がるとき
(変更無し)
ミッション・ビジョン・バリューを常に意識しつつ、開発グループとして最大のパフォーマンスを発揮できるようにマネジメントする。
[ 仕事に対するスタンス共有 ]
今日はオフィスの入っているビルに献血車が来る日だというのを失念していて、献血カード持参するの忘れてた。去年の12月に献血断わられたので今度こそはと思ったんだけれどなーと思いつつ、忘れた時にどうすればいいのかチェックしてたら「出血を伴う歯科治療後3日間はご遠慮」って書かれてた。土曜日に麻酔打ってるので止めておくことに。次回までに血色素量上げとく!
あとは今度の有給休暇の話とか、バーベキューの話とか(都合が悪くていけなさそう)、保養施設の申し込み(多ければ抽選)とか、なんか「レジャーする?」的な事柄の多い1日だった。レジャーが呼んでいる。
comm 初めて使った。 DeNA のじゃなくて coreutils 的な。
Linux 上で2つのテキストファイルの両方に含まれる行を抽出したい。それぞれが各行に ID が書かれた ID リストファイルで、両方に該当する ID リストファイルを作りたいとか。Perl でさくっとやってもいいのだけれど2つのファイルオープンするの手間だし、絶対ありそうなので探したら普通に coreutils に comm というのがあった。
ファイルは sort されていることが前提。sort -n だと駄目なのでファイルによってはちょっとめんどい。
sort (sort -n は駄目)してあるリストを比較。 # 両方にあるものを抽出 $ comm -12 1.txt 2.txt # 1.txt にあるものだけ抽出 $ comm -23 1.txt 2.txt # 2.txt にあるものだけ抽出 $ comm -13 1.txt 2.txt # どちらかにだけあるものを抽出 $ comm -3 1.txt 2.txt
今朝、玄関の壁の上部に据え付けてある靴箱(収納棚)が開かないことに気がついた。この間の地震で耐震ロック(耐震ラッチ)が作動したみたい。初めて稼働したので今回はやはりかなり揺れたんだな(家にいなかった)。パナソニックのサイトを見たら「扉の上部を強く押すか叩く」でロックが外れるということなのでやってみたらアンロックできた。
へーと思って家の中の他の扉を確認したら、キッチンの上部の収納棚にはこのロックはなかった。むむむ。こっちこそあった方が良かったな。
ちなみに去年買った綾野製作所のキッチンキャビネット(キッチンボード)にもちゃんと開き戸感知式耐震ラッチがついていた。こっちはロックされていないなと思ったら「揺れが泊まるとロックは自動的に解除される」タイプらしい。へぇ(今回動作してくれたのかどうかは不明)。
歩く会が終わった後には Google マップの経路検索を使って歩いた距離を積算しています。あとで歩いた道を思い出せるように歩いている途中に交差点名をメモしたりしているのですが、やはりここは自動的に経路を記録しておきたいところです。とはいえ道中写真を撮ったり SNS をチェックしたりするのでバッテリ的にスマートフォンで GPS ロガーを動かしっぱなしにしておくのは厳しいので今まで利用を見送ってきていました。
しかし今はメインの Xperia Z5 以外に iPhone 5c があるので、これなら1台は GPS ロガーを動かしっぱなしにしても大丈夫。iOS 用の GPS ロガーアプリをチェックしてみることにしました。アプリはメジャーっぽい ZweiteGPS をチョイス。
機能的には必要十分。試したところバッテリについてはかなりざっくり1時間に10%とかそんな感じかなと。朝から晩まで出掛けるのだと1回は途中モバイルバッテリで充電する必要があります。デフォルトのログ記録間隔3秒だと iPhone 5c がずっとホカホカになりますが10秒や15秒にするとそれほど気にならないぐらいになり電池の減りもいくぶん遅くなります。徒歩の経路をあとで確認するなら10秒や15秒で十分。今度この設定で使ってみようと思います。
現在休園中の大井町自然再生観察園ですが、ホタルの夕べに合わせて今年も特別に開園してくれるということで、ホタル鑑賞に行ってきました。一昨年にきて以来2度目です(一昨年の様子)。
場所も場所なのであまり早めに着いてもと思いつつ、10分ぐらい前に到着したのですがすでに近くの駐車場に行列が出来ていました。早い人は7:00ぐらいから並び始めているという声も聞こえてきました。40分ぐらい待って入園。
5分入れ替えのあいだ、数は多くないですが点滅するホタルを見ることができました。ふわっと光るのやはりいいですね。
一般向けに開園してくれて感謝です。
昨日注文したプレゼントの配送日が今日ということもあり1日中家にいる日でした。
ヨドバシ・ドット・コムと Amazon.co.jp の2箇所に注文していて、前者は 12:00 までのところが 12:00 少し過ぎに到着。 Amazon.co.jp の方は注文する時に商品ページに確か午前中に配送のような表示だったと記憶していたのですが、届いたのは夕方でした。
見返してみてもしかしたら「お届け日時指定便」にしないとその時間に届かなかったのかもと気が付きました。デフォルトの「お急ぎ便」の方が早いわけではなかったのかも。最速でなければ困るという訳ではないのですが、勘違いしやすい表現だと期待値と離れた結果で満足度下がっちゃうものだなぁと思ったりしていました。
でも今日届いて良かった良かった。
最近使っていなかったデジタルハリネズミを出してきたら電池が無くなっていたので交換。朝出勤時にパシャパシャ。
それから今使っているロルバーンポケット付メモLのページが無くなったので、4月に買ったロルバーン ポケット付メモカバー ポケットM をついに投入。表側ポケットに名刺入れがすっと入っていい感じ。ペンホルダーは細めでスーベレーン M400 だとちょっときつめ。伸びるゴムバンド製なので挿しちゃえば落ちる心配等も無くいいんだけどね。
勤務先の東京オフィスの全従業員は6月1日からリモートワーク原則からリモートワーク推奨に変更になったが必要がなければ引き続き在宅勤務。今日はオフィスに行かないとできない仕事があるので出社にした。5月18日(月)以来、間に11日の在宅勤務を挟んでの16日ぶりの出社。あっという間に2週間経ったな。
先週月曜日の緊急事態宣言解除を受けて人出も戻ってきているけれども、それでもまだ往復の通勤電車はまだまだ空いていてリスクは感じなかった。電車内でマスクをしていると汗が流れてくる。冷房が少しかかっていたようだけれど、窓も開いているしね。
昼休みに買い物幼児に渋谷ロフトに言ったら入口で検温され消毒を促された。新型コロナウイルス感染拡大防止で検温を受けるの初めてだ。店内はガラガラで落ち着いて買い物ができ、こちらもリスクを感じなかった。
今日一番混んでいたのはお昼ご飯を買った渋谷スクランブルスクエア 17F のローソン。買って帰って食べるのが接触が少ないかなと思ったら、わんさか人が買いに来ていた。
夜に窓の外を眺めたら、昨日発動した都内の感染状況を知らせし警戒を呼び掛ける「東京アラート」で赤くライトアップされた東京都庁がぼんやりと見えた。
帰りには6月1日始発からの渋谷駅の新埼京線ホームをちょっと見てきた。旧大山街道の上の宮益架道橋近くまできたのでハチ公改札で出入りするのメチャ便利になった(埼京線を使うのは山手線が運転見合わせの時ぐらいだけど)。
[ COVID-19 ]
いつも使っているカシオの腕時計 F-91W-1JF のベルトの遊環が朝に切れた。電池が切れる前にやはりベルトが先に切れたか。ベルト交換の方が高いだろうから新しい同じのに買い替えかな。
5月23日 (月) に目覚めた時に頭が痛いなと感じた。その日は動けなくなると厳しいなと思い朝にタイレノールA (アセトアミノフェン錠) を1回服用した。しばらくして5月27日 (金) の夕方にまた痛くなったので、同じくタイレノールAを1回服用した。
それから1日あいだをあけて5月29日 (日)・5月30日 (月) に2回、5月31日 (火) 〜6月2日 (木) に3回と、痛みの波に合わせてタイミングと回数を調整しつつ服用して痛み止めしていたのが、今日になってようやく痛くなってきた。昼に1回服用したのを最後に痛みが収まった。
今回は普通の頭痛と違い、右耳の上や後ろ、あるいは後頭部がピリピリしたりズキンズキンしたりする痛みだった。数十秒感覚で強くズキンと来ている時は、痛みのたびに思わずうなずくように頭を前に揺らせてしまう感じだった。
症状からすると後頭神経痛だったのだろうか。最初の痛みから12日間、痛みが強くなって2回以上薬を飲むようになってから6日間であった。
ずっと続くようであれば原因不明のまま解熱鎮痛剤で抑え続けるのは良くないのでいつか通院と思っていたのだけれど、治ってくれてなにより。
まちかど books#photography
— Naney (@Naney) June 3, 2022
RICOH GR III #GR #GRIII #GR3 pic.twitter.com/I7INNNpwTt
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。