ブログ

  • 6月16日 嫌だったけれど、得たものはあった

    6月16日 嫌だったけれど、得たものはあった

    今日は暑かった。
    数日ぶりの出社だったけれど、会社までの道が暑かった。
    梅雨の中休みとでもいうべきか。

    今日は、自分で動かせるものの限界について考えていた。
    自分で動かせるものって案外少なくて、世の中のほとんどのことは自分では動かせないものということになる。
    それだけではない。
    自分の過去も、それがあった事実というものは動かせないのだ。
    だけど、解釈は違う。
    自分が過ごしてきた過去は、そのこと自体は動かせないけれど、それに起因する自分の解釈は、言い換えると考え方みたいなものは、変えることができる。
    いやだった過去の出来事は、もしかするとこの先、どっかで、嫌だったけれど、得たものはあった、と考えることだってできるのではないだろうか。

    それを日々、暮らしていく中で、鍛錬しているのかもしれない。
    過去と現在、未来は一本の線で結ばれているのかもしれないけれど、そこから生まれる自分の解釈は、改めることができるかもしれないのだ。
    だけどそれもいいことばかりではなくて、過去、良かった思い出が、悪かった思い出に変わることだってあるのだろう。
    だけど、それが自分の糧になるのであれば、ながーい目で見ると、良いことになるのかもしれない。それも解釈。

  • 6月15日 それが欲しい、という

    6月15日 それが欲しい、という

    久しぶりにJavaの勉強に手を出している。
    久しぶり、というのは数日ぶりくらいの間隔、感覚で、私みたいにおじさんになってからは記憶することの劣化が激しいから、こういうのはこまめにやっていかないとすぐに忘れてしまう。

    何かを作りたいと思っているわけではないのだから、そういう点でモチベーションになりづらい。
    強いて言えば、仕事で使うことがありそう、という点だけで、果たしてそれが強いモチベーションになるかというと、そこまでではない。現状、できていなくても仕事は回せているのだから。

    だけど、私の心のどっかにエンジニア志向のようなものがあり、プログラムをかける人ってカッコ良い、みたいなところがあるのは確かだ。
    今、机の隣にある本棚にはJava入門と、Python入門が鎮座している。

    人は、何かに強く興味を持つと、「ただそれを深く知りたい」というのがシンプルにモチベーションとなり、それこそ寝る間を惜しんで学習したりする。
    時には寝食を忘れるほどで、それが良いことなのか悪いことなのか私には分からないけれど、少なくとも「昨日の自分より成長している」という点では、良いことのように思う。健康を損なわない程度であれば。
    私にはそんな機会、しばらく訪れていないのではないだろうか。
    別にそれが欲しい、というわけではないが、それほどの情熱を注げるような物事にここ数年、出会っていないかもしれない。
    それにはなにか理由があるように感じる。
    学習であれば、自分の時間を優先するという点で、家族と過ごす時間が減るというデメリットがある。まずそこが頭に浮かんだ。
    家族と過ごす時間はもちろん優先されるべき事項だ。それは私の価値観になっているから。
    つまりそれに勝るような物事に、出会っていないというべきか。
    いや、待て、去年までハマって行ってたソロキャンはそれに該当するだろう。家族と過ごす時間を割いてまでも、行ってたのだから。抗うつ剤を飲むようになってから、なぜかそちらに気持ちが向かなくなってしまい、行っていないのだけれど。
    または、ランニングとか。これも自分一人で過ごす時間である。

    こうして考えてみると、家族との時間を割いてまでやりたいようなことがあまりないんだなー、と思う。良いことなのか、悪いことなのかは分からないけれど。
    そこまで情熱を注げることのできるような、Javaを使ったプログラムがあると良いのだけれど。

    あとは小説とかね。最近書いてないなぁ。ここで日記を書いているせいか、アウトプットするカロリーがここで使い果たされている気がするんだよなぁ。

  • JavaでTDDに挑戦してみる(N+2回目

    JavaでTDDに挑戦してみる(N+2回目

    前回の記事はこちら

    参考にさせてもらってるのはこちら


    さて、前回はテストケースNo.3まで進むことができました。

    No.クラス名ピックアップした数字期待結果
    115, 5, 330FizzBuzz
    215, 545FizzBuzz
    315, 315FizzBuzz
    45, 360Buzz
    51575FizzBuzz
    6510Buzz
    739Fizz
    8上記以外7171
    9111
    10100100100
    FizzBuzzのテストケース。期待値含む

    今日はNo.4から進めてみたいと思います。

    No.4 60でBuzzと表示させる

    No.1, 2, 3まで全てFizzBuzzと表示させるところまできました。
    こんどは初めて、Buzzと表示させるところまで進めてみたいと思います。

    変更を加えるまでのコード

    本コードはこちら

    まずはテストコードを加えてみます。テストコードの一番下に変更を加えてみました。

    もちろんレッドです、が、ここで大きな問題があることに気づきました。
    60でBuzzを表示、と思っていたのですが、よく考えてみたら60は15の倍数ではありませんか。
    テスト結果で、それが分かりました。

    いかんいかん、慌ててテストケースを変更します。60ではなく、50にしてみましょう。

    No.クラス名ピックアップした数字期待結果
    115, 5, 330FizzBuzz
    215, 545FizzBuzz
    315, 315FizzBuzz
    45, 360 –> 50Buzz
    51575FizzBuzz
    6510Buzz
    739Fizz
    8上記以外7171
    9111
    10100100100
    テストケースNo.4のテスト条件を、60から50に変更した

    テストコードを変更します。

    テストを走らせると、相変わらず赤いバーが表示されますが、ある意味で正解ということに。

    さて、それでは本コードに変更を加えてみます。

    テストを走らせると、緑のバーになりました。

    5の倍数が正しいんだけどなー、と思いつつ、次へと向かいます。

    No.5 75でFizzBuzzと表示させる

    これはすでに、15の倍数でFizzBuzzを表示させるように本コードを作っているので、テストコードを加えるだけで緑になるはず。

    テストコードはこちら

    この状態でテストを走らせると、はい、ちゃんと緑になりました。

    レッド→グリーン→リファクタリングの精神に則ると、少々気持ち悪いのではありますが、ここではリファクタリングを不要とするのかな、と思います。
    なぜなら「15の倍数はFizzBuzzと返す」ところはすでに完成しており、これ以上リファクタリングする要素が見当たらないからです。
    こちら。

    もしかすると、テストケースが過剰なのでは?という思いに駆られます。
    テストケースを見てみるとNo. 1, 2, 3, 5の4つのケースでFizzBuzzを期待結果とおいているのですが、これがやりすぎなんじゃないかと。
    組み合わせを推測して、そっち目線だと適切だと思うのですが、ここは実際のシステム開発では予算が十分にあり、テストを実行するためのリソース(要員)が足りているという前提であれば、この4ケースは活かしても良いのでしょう。ただ現実的にはギリギリの予算でQA分を積んでいることもあるので、ここは優先度をつけて、例えばNo.5だけ優先度を下げ、時間があればやる、みたいな方法を取っても良いのかもしれません。

    No.6 10でBuzzと表示させる

    ここもNo.5のように、No.4のBuzzと同じ期待値を取ることが見えています。
    一方、まだここでは本コードに「5の倍数の時はBuzzとする」とは書いていないので、リファクタリングの機会が訪れているように思います。

    早速テストコードを。

    だいぶテストコードが長くなってきました。

    赤いバーが出ます。

    本コードを変更してみます。とりあえず5の倍数という形ではなく、10の場合に限定して書いてみます。

    テストを走らせてみると、はい、緑のバーになりました。

    それではここで、リファクタリングをしてみたいと思います。
    赤い枠で囲んだところを、5の倍数という形ですね。

    変更してみます。

    テストを走らせてみます。緑のまま。よかった。

    これで、5の倍数に関するリファクタリングは終わりです。

    No.7 9でFizzと表示させる

    さぁ、今度は初めてFizzと表示させるものです。この辺まで来ると細かな説明は不要ですね。

    テストコード

    実施結果

    本コードを変更

    テスト結果は緑。気持ちが良い!

    Fizzはリファクタリングしなくて良いのかな、と少し悩みます。経験則として「2つ目のFizzが来た時に、合わせてリファクタリングすれば良い」とBuzzの時に覚えました。
    が、残念なことに、テストケースでは2つ目のFizzがありません。
    これでは、9以外の、3の倍数の時にはFizzではなく、その数字をそのまま返してしまうことになります。
    つまりバグ。しかも残念なことに、テストケースからは発見されません。上記の、10個のテストケースしか用意していないから。

    テストケースには無いのですが、試しに、12を入力した時のバーを見てみましょう。

    テストコード

    テストした結果

    赤いバーが出ます。12を入れたら、Fizzではなく12が返ってきてしまっています。
    これでは要件通りの仕様にならず、です。
    しょうがないのでテストケースに追加します。

    No.クラス名ピックアップした数字期待結果
    115, 5, 330FizzBuzz
    215, 545FizzBuzz
    315, 315FizzBuzz
    45, 360 –> 50Buzz
    51575FizzBuzz
    6510Buzz
    739Fizz
    8上記以外7171
    9111
    10100100100
    111212Fizz
    テストケースNo.11を追加した

    No.7からNo.11に飛んでしまいました。が、これは必要なことです。
    前回の記事では、期待結果が同じものは、1つにまとめられるんじゃない?説がありましたが、こんな落とし穴があるとは。QAを数十年やってる身として、身に染みる思いです。

    さて、気を取り直して、No.11を完成させてみたいと思います。まずは緑にしてみましょう。

    本コード

    テストを走らせた結果

    そしてリファクタリング。Fizzとなっている2箇所(上記参照)を、3の倍数に置き換えてみます。

    実際にはここで、本コードは完成ですね。以下、No.8〜No.10を一気に進めてみたいと思います。

    No.8 71で71を表示させる

    テストコード

    テスト実施前の赤いバーを、と思いましたがこちらはすでに本コード内で処理ができるようになっているため、緑のバーは出てきません。いきなり緑。

    No.9 1で1を表示させる

    ここもNo.8と同様、すでに処理ができるようになっています。ただここは境界値として、一応テストコードを作ってみます。

    テストコード

    緑のバー

    つぎはいよいよ最後です。

    No.10 100で100を表示させる

    テストコード

    緑のバー、と思いきや!テストケースにミスがありました。

    100で100を、ではなく、これは5の倍数になるため、Buzzが表示されるということです。

    またしてもテストケースにミスがありました。。カッコ悪い。。100を境界値としてテストをするのであれば、これは100ではなく、Buzzが返ってくるのが正しいですね。

    修正したテストケースはこちら。

    No.クラス名ピックアップした数字期待結果
    115, 5, 330FizzBuzz
    215, 545FizzBuzz
    315, 315FizzBuzz
    45, 360 –> 50Buzz
    51575FizzBuzz
    6510Buzz
    739Fizz
    8上記以外7171
    9111
    10100100100 –> Buzz
    111212Fizz
    テストケースNo.10の期待結果を変更した

    100でBuzzと返ってくるように変更したテストコードはこちら

    最後の、緑のバー。

    なにはともあれ、これで全部のテストケースをクリアすることができました。

    振り返り

    途中、冗長な説明になってしまいましたが、これで全てのテストを実施することができました。
    こうやって見てみると、最初に考えていたテストケースに間違いがあったり、足りない部分があったりして、要件だけを見てみても、抜けるところがあるんだなー、という印象です。
    Fizzを期待値とするテストケースは、2つ以上必要ということも分かりました。これは意外。
    テストの現場にいる身としては、なるべく少ないケース数をこなすように鍛えられているため、今回のように実際の本コードを見ながらテストしてみると、その、なるべく少なく、というところはきちんと確認をして作り上げるべきなんだなという気持ちにさせられました。

    一方、TDDの入り口をこの一連の活動を通して見ることができたのは、とても有意義でした。
    私にJavaのスキルがもっとあれば、もうちょい複雑なプログラムを書くことができるんだろうなと思いつつ、Cucumberを使ってテストコードを書き、それに合わせて本コードに追加、そしてリファクタリングという流れが見えたのは、大きな一歩です。ケント・ベックさんの本を何度か読んではみましたが、ただ読むだけではなく、実際にやってみることで、それが実感できた印象です。
    ここで終わりにするのではなく、もうちょい複雑なJavaのコードを使いつつ、また改めてTDDをやってみたいとおもいます。

    ご参考まで、コードはこちらです

    本コード

    public class FizzBuzz {
    	public String response(int num) {
    		if(num % 15 == 0) {
    			return "FizzBuzz";
    		}
    		else if (num % 5 == 0) {
    			return "Buzz";
    		}
    		else if (num % 3 == 0) {
    			return "Fizz";
    		}
    		else return String.valueOf(num);
    	}
    }

    テストコード

    import static org.junit.jupiter.api.Assertions.*;
    
    import org.junit.jupiter.api.Test;
    
    public class FizzBuzzTest {
    	@Test
    	public void 引数に30を与えたらFizzBuzzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("FizzBuzz", fizzbuzz.response(30));
    	}
    	
    	@Test
    	public void 引数に45を加えたらFizzBuzzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("FizzBuzz", fizzbuzz.response(45));
    	}
    	
    	@Test
    	public void 引数に15を加えたらFizzBuzzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("FizzBuzz", fizzbuzz.response(15));
    	}
    	
    	@Test
    	public void 引数に50を加えたらBuzzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("Buzz", fizzbuzz.response(50));
    	}
    	
    	@Test
    	public void 引数に75を加えたらFizzBuzzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("FizzBuzz", fizzbuzz.response(75));
    	}
    	
    	@Test
    	public void 引数に10を加えたらBuzzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("Buzz", fizzbuzz.response(10));
    	}
    	
    	@Test
    	public void 引数に9を加えたらFizzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("Fizz", fizzbuzz.response(9));
    	}
    	
    	@Test
    	public void 引数に12を加えたらFizzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("Fizz", fizzbuzz.response(12));
    		
    	}
    	
    	@Test
    	public void 引数に71を加えたら71を返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("71", fizzbuzz.response(71));
    	}
    	
    	@Test
    	public void 引数に1を加えたら1を返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("1", fizzbuzz.response(1));
    	}
    	
    	@Test
    	public void 引数に100を加えたらBuzzを返す() {
    		FizzBuzz fizzbuzz = new FizzBuzz();
    		assertEquals("Buzz", fizzbuzz.response(100));
    	}
    	
    }
  • 6月14日 人生なんて晴れたり曇ったりなんだから、

    6月14日 人生なんて晴れたり曇ったりなんだから、

    雨が、降ったりやんだりを繰り返している。
    近くの道路を走る車の音。果たして今日は、どんな思いを抱くだろうか。

    今日は偉い人とのミーティングで、私が主役になり説明する機会があった。
    こういう時になるといつも緊張してしまう。

    緊張とは。

    何度かこのブログでも書いているけれど、緊張は「いつもとは違う自分、ちゃんとしてるところを見せたいという思い」から生まれるのだそう。
    私にはそういう思いが強いということなのだろうか。
    もうちょっと考えてみると、私は、他人からの承認欲が強いということなのかもしれない。
    承認欲求を他人に求めるというのは、終わりのないスパイラルで、たとえばSNSでいいことを言おうみたいなのもその一つ。
    いいねをもらうために努力するのは、自分を磨くという点では良いのかもしれないけれど、そのために自分の気持ちを蔑ろにしてしまったり、無理をしちゃったりするので、いったん深呼吸をしてみて自分の気持ちに寄り添ってみたりすると良いのだろう。

    それは仕事だけではなく、日常生活のすべてにおいて言えること。

    どちらかと言えば悪く言われることの多い他人からの承認欲、考えるべきは自分からの承認欲を強くもつこと。
    昨日の自分よりも成長することで、自分で自分を承認してあげること。
    泡沫の夢のように、キラキラした自分を見せることも良いことではあるのだけれど、それよりも自分で自分の味方になってあげて、応援する姿勢を持つことが良いだろう。

    って、言うのは簡単なんだけどね。
    他人と触れ合う前提で成り立っているこの社会で、私はどっちを向いて生きていけば良いのだろうか。
    少し立ち止まって、そんなことを考える。人生なんて晴れたり曇ったりなんだから、曇った時にこそ自分で自分の味方になってあげるべきだ。

  • 6月13日 自分の好きな時に、好きなものを、好きなだけ楽しみたい、っていうのから、少しずつ遠ざかっていく

    6月13日 自分の好きな時に、好きなものを、好きなだけ楽しみたい、っていうのから、少しずつ遠ざかっていく

    私の低血糖による症状の話。

    もしかすると前日の飲酒ではなく、当日の昼食が関係しているのかもしれない、と気づいたのは、今日の症状から。
    今日も17時くらいから、耳周辺がこわばるというか、痺れるという感覚が。
    そこから、昨夜、お酒はちょっと飲んだけど、酩酊するほどではないよなぁ、と思い至り(ビール、350mlを1本とウイスキーをロックで1杯)、となると、昼食、今日は出社して近くの中華料理店でレバニラ炒めを食べたんだよな。中華料理ってご飯は多めだよな。そこでたくさん白飯を食べたんだよなぁ、と。
    となると、昼食時に炭水化物をなるべく摂らないほうが良いのでは?とか。
    そもそも血糖値が低くなるのが悪くて、その前に血糖値が高くなるのが悪いんだから、というか血糖値をなるべく上昇させないようなご飯が良いのではないかと思っていて。

    はぁ。

    こういうところに頭を悩ませる世代に入ってきたんだなぁ、とぼんやり考える40代中年男。

    食の楽しみとは。
    自分の好きな時に、好きなものを、好きなだけ楽しみたい、っていうのから、少しずつ遠ざかっていく。
    まぁ、ここで気持ちを切り替えて、健康的な食事を追求するっていう考え方になっていけたら良いのかもしれないけれど。
    まだ、もうちょいこのアンニュイな気分に浸っていたい。

  • 6月12日 「自分は我慢している」というマインド

    6月12日 「自分は我慢している」というマインド

    昨日お酒を飲んでないおかげか、身体が軽い感覚。
    お昼を少ししか食べなかったので、夕方になりお腹が空いてきた。
    血糖値が下がっているんだろうなぁ。
    お腹に溜まった脂肪を分解して栄養に使ってくれたら良いと思っているのだけれど、なんともはや、脂肪を分解するのにも糖質が必要らしい。
    *参考になるのはこの辺り

    今日はジムで5kmランニング。その前に肩周りを筋トレした。
    市でやってるジムなので、300円で使えるの、すごくありがたい。
    それくらいの金額だったら、多少時間が短くても割り切れるから(1時間しか使えない)。

    今日の飲酒量は、ビール1本と、ウイスキーをロックで1杯。
    ビールはご飯を食べながら、ウイスキーは食後にいただいた。

    今はまだ楽しんで節制できているけれど、これがもうちょい経ってみると物足りないんだろうなぁと思う。
    そこで、「自分は我慢している」というマインドでやるとダメになっちゃいそう。
    けど、改めて自分のお腹を見てみて、このお腹を凹ませるというモチベーションを手に入れつつ、もうしばらく頑張ってみようと思う。

    レイソルはとうとう最下位に。
    ここがちょうど折り返しというところ。
    日本代表戦があるということで、すこーしだけおやすみ期間に入るので、ここからまた昇ってってもらいたいと思う。

  • 6月11日 楽しい思い出だけ抱えて、生きていけたら

    6月11日 楽しい思い出だけ抱えて、生きていけたら

    今日は夜ラン。聖地、日立台のスタジアムを折り返し地点とした11km。
    すこーしだけ霧雨が降っていて、それが逆に心地よかった。

    今日は何か考えごとをしながら走ったかな、と思っても、特に思い当たるものはなし。
    深く考えずに、自分の走るペースと、心肺機能が限界を迎えないようにすることをずーっと考えていたような気がする。
    耳には2020年の私のプレイリスト。当時は長男がある日本のバンドにハマっていて、その曲がたくさん流れるようなプレイリストに仕上がっていた。
    あれから3年。そうか、2020年といえばやはりコロナウイルス最盛期だった頃じゃないか。
    私はずっと在宅勤務になり、生活がガラッと変わった。
    私なりに考えてみて、大きな変化は、通勤がなくなったことで本を読む時間がガクンと減った。当時はよく、朝と夕方にモラトリアムみたいな時間を設け、その時間にウォーキングをしたり、読書したりすると良いみたいな記事がたくさん目についた。
    私はそんなふうに時間を使うことはなく、仕事を長めにしたり、早く仕事が終わった時にはお酒を飲む時間にしたり、あまり特定の物事に決めることなく時間を使っていたように思う。
    いや、というか、2020年は私史上、一番やばいプロジェクトのQAをやっていたんだった。当時は21時からミーティングがあったり、朝も8時くらいから仕事したりなど、通勤時間がなくてよかった、なぜなら仕事ができるからみたいなマインドで生きていたのを思い出した。
    レイソルはどんな年だったっけか。J1に戻ってきた年だったよな。ミカがいたり、江坂がいたり、クリスがいたりした年だったか。何度かスタジアムに足を運んだような気がするけれど、ごめん、あんま覚えていないな。

    2020年なんて、つい最近のことなように思う。
    けれどそれから3年、きちんと地に足をつけて、生きてきたんだよなぁ。
    あの頃は楽しかった?と自問しても、あんま覚えてないんすよね、くらいしか返す言葉が見つからないんだけどね。
    過去、楽しかったかというと、その都度つらかったようなことがあったんだと思う、だけどそういうのって昇華してしまう気がするんだよな。
    楽しい思い出だけ抱えて、生きていけたら良いのかもしれないけどね。

  • 6月10日 Stay hungry, Stay foolish

    6月10日 Stay hungry, Stay foolish

    久しぶりに朝ランした。暑くて5kmしか走れなかったけど。
    自宅近くに流れる川沿いの、遊歩道をゆっくりと走った。
    いや、ゆっくりではないか。自分の中ではいつものペース、キロ5分40秒くらいの速さで、5km。
    こんな季節になってくると、だんだん虫が増えてくる。
    夜走っていたりすると、たまに、口や目の中に入ったりして難儀。
    彼らも生きてるんだよなぁ、一生懸命生きているのに、こんなよくわからない動物の口や目に入って、一生を終えるってどうなんだろうなぁ、とたまに思う。

    今日は走りながら、スティーブ・ジョブズが遺した言葉、「Stay hungry, Stay foolish」ってどっちが先だっけ、と考える機会があった。
    並びはどっちでも良くて、彼は、hungryとfoolishという二つの姿勢を述べたかったんだよなぁ、と考えた。
    hungry、つまり空腹な人、飢えた人を想像してみる。
    私がそういう状況になったら、どんな行動をとるであろうか。
    お腹が空いているんだから、その欲求を満たすために行動を起こす。
    その時に、めんどくさいなぁ、とか、きっと考えないだろう。
    お腹が空いているんだから、その行動を制限してしまうような「めんどくさいなぁと思う気持ち」は、その先には死を意味するからだ。
    貪欲であれ。
    私はITの世界で働いていて、それはもう日進月歩で技術が進化していく。
    私が今持っている知識は、すでに遠い昔の時に得たものばかりで、だんだん、取り残されていくのかもなぁ、と思ったりする。
    取り残されていくということは、上述した「めんどくさいなぁと思う気持ち」に近いのかもしれない。
    技術を身につけないと、いつかどこかでお前はクビだ、と言われてしまうかもしれない。
    それはジョブズが伝えたかった2つ目の、foolishにも通じるものがあるだろう。
    自分は何も知らない人間と当てはめてみることで、新たな知識を欲するという欲求が生まれるから。
    ジョブズもまた、ITの世界で生きる人だった。彼とウォズで作り上げた数台のMacで名を馳せ、その後も輝かしい製品を世に送り出した超人。
    そう、超人。もしかすると人間というレベルを脱していたのかもしれない。
    超人という言葉はまた、ニーチェが遺したものでもあったね。
    私はまだ、ニーチェがどんな背景をもたせたのか、よく知らない。
    これもまたfoolishという精神に基づき、近いうちにその意味を調べたいな、と思う。

  • 6月9日 お酒と私と低血糖

    6月9日 お酒と私と低血糖

    健康には常に気を配っておきたい。
    最近気づいたのだけれど、お酒をちょっと多めに飲んでしまった翌日、耳周りや指先が痺れるような感覚。あと急激な眩暈など。
    あまりにも頻繁に起きるよな、と気づいて、調べてみると、どうやら機能性低血糖というものらしい。
    らしい、だけでまだ病院とかに行ってないからなんとも言えないのだけれど。

    それが仕事中に起きたりすると、仕事に集中することなんてできないし、しばらくすると耐え難い空腹と発汗などの症状が出てきて、居ても立っても居られなくなってしまう。
    で、ゆっくりと私の過去を辿っていくと、どうやらお酒を飲みすぎた翌日に起きるような。
    そのまま知らないフリして過ごしていくと、たぶん、この先に糖尿病が待っているような気がしている。
    十分に運動しているのに?!とか思ったりもするんだけど、それよりもまずこのイヤな状態を脱するには、お酒を控えることが頭に浮かんだ。
    お酒を控えると言っても。うちにはたくさんのお酒があるんだよ。
    ついこの間買った知多なんて、まだ1杯しか飲んでないんだぜ。
    こりゃ困った、とは言いつつも、私には守るべき家族がいるのだから、そこは心を鬼にして、気持ちを切り替えようと思う。
    ちょうど良かったよ、痩せたいなと思ってたから、とかね、ポジティブに考えると、悪いことばかりではないと思うんだ。むしろ、お酒を飲んだせいでたくさんの時間を失ってきたんだから、お酒を飲まないことで得られるいつも通りの思考、それは飲んでるときと比較するといくらか正常な思考だと思うんだけど、それをうまく利用して読書したり、なにか書いたりすればいいと思うんだ。

    とは言っても、どうしても飲みたいときってあると思う。
    今日はその日だった。ということで、いきなり話の腰を折ってしまうのだけれど、缶ビールを1本だけ飲んだ。350mlの。
    いつもの私だったらここからワインとか、ウイスキーをロックで、といくところなんだけど、今日はなんとか踏ん張ってる。私にとって缶ビール1本ってのはほろ酔いにもならないレベルなので、飲んだうちには入らない!と自分で自分に言い聞かせている。
    健康第一だよね。なにはなくとも、健康第一。

  • JavaでTDDに挑戦してみる(N+1回目

    JavaでTDDに挑戦してみる(N+1回目

    前回の記事はこちら

    参考にさせてもらってるのはこちら


    さて、前回までは、テストケースを作るところまで来ました。
    前回の参照

    No.クラス名ピックアップした数字期待結果
    115, 5, 330FizzBuzz
    215, 545FizzBuzz
    315, 315FizzBuzz
    45, 360Buzz
    51575FizzBuzz
    6510Buzz
    739Fizz
    8上記以外7171
    9111
    10100100100
    FizzBuzz問題の同値分割(1と100を追加、そして期待結果も追加

    さてここで、私はちょっと考えました。

    期待結果が同じものは、省いちゃっても良いんじゃないか説

    どっかで過去に学んだ説

    つまりNo. 1、2、3、5は、一つのケースにまとめてしまっても良いのではないか。
    クラス名のところ、組み合わせが、含まれているからです。

    • No.1は15, 5, 3
    • No.2は15, 5
    • No.3は15, 3
    • No.5は15

    これらが、細かな組み合わせによって出力するという設計になっているのであれば、それぞれ別のケースとして成立させる必要があるような気がしますが、今回はそんな設計にしていない(要件から、3の倍数はFizz、5の倍数はBuzz、15の倍数はFizzBuzzとするだけ)ので、端折っても良いのかなと思います。
    ただ、TDDという観点では、途中でリファクタリングを挟むことが一つのステップになっているので、まずは愚直に上記の10ケースを組んでいきたいと思います。

    No.1 30でFizzBuzzと表示させる

    前回の記事を見るとわかりますが、本プログラムの方では、現状ではまだ「入力した数字をそのまま返す」状態にしかなっていません。

    これで、テストコードのほうを、30を入力したらFizzBuzzと表示させる、のところまで持っていってみたいと思います。

    で、実行した結果がこちら。予想通り失敗しました。30を入力したら、30を出力する、ってプログラムなので当然ですね。

    さて、この赤いバーを、緑に変える必要があります。

    まずはシンプルに、30を入力したら、FizzBuzzを返す、としてみます。

    この上なくシンプルなコード。IF文で、30を入れたらFizzBuzzを返すというコードを追加しました。

    結果はこちら。緑になりました。そりゃそうだ。

    これでNo.1は完了です。

    No.2 45でFizzBuzzと表示させる

    これもNo.1と同様に、45と入れたらFizzBuzzと返すようにするだけですね。

    まずテストコードを先に。

    実行、そしてエラー。ですが、一方で「入れた数字はそのまま返す」という要件のテストができていることを横目に感じつつ。

    では本プログラムの方を修正してみます。No.1と同様に、45をIF文で。

    else if がちょっと増えて、めんどくさいプログラムになってきたなー、と感じます。リファクタリングしたい欲がこうやって増えていくんでしょうか。
    バーはめでたくグリーンに。

    そりゃそうだ。
    まぁ、けど、これでNo.2は終了ですね。

    No.3 15でFizzBuzzと表示させる

    これもまた同様ですね。まず失敗コード、で本プログラムを修正という流れかと思うんですが、さすがにめんどくさくなってきました。ので、ここで、本プログラムの方にリファクタリングをしていきたいと思います。やり方としては、

    1. 現状:30でFizzBuzz、45でFizzBuzzとなっている
    2. リファクタリングの内容:15の倍数を取る場合は、FizzBuzzと表示させる

    こうすることで、本プログラム自体がすっきりするはずです。

    試しに15でFizzBuzzと出力するのを書いてみました。else if が2つ続いてて、しかもreturn がFizzBuzzと同様となっていて、効率的ではないように見えますね。

    まず、テストコードのほうは愚直にやっていく、と宣言した手前、こっちは整理せずに追加すべきだろうと考え、15でFizzBuzzを追加しました。

    そして、本プログラムのほう。
    こちらは、「15で割り切れる場合はFizzBuzzと表示させて」というプログラムにしてみました。

    テストを実行させてみます。見事、緑のバーになりました。

    これで、FizzBuzzと表示させるところは完了したように思います。