What one likes, one will do well 〜好きこそ物の上手なれ〜

寄り道しながらも、最後は昔から好きな物理とプログラミングに戻ってくる。そんな男の思いをつづるブログです。

テストの重要性と失敗あるある

Qiitaに記事を投稿しました。

 テストの重要性のまとめです。

  • プログラムの品質を確保する上でテストは重要です。いくらコードレビューを十分にしたところで、間違えはあるもので、必ず最後はテストで確認しましょう。
  • テストの網羅度は最低限C0(命令網羅)100%が必須です。実行されていない部分にはバグが潜んでいます。C1(分岐網羅)、C2(条件網羅)は100%でなくとも考慮する必要はあります。必要な部分はテストに追加しましょう。
  • テストは単体テスト結合テストの順にやりましょう。結合テスト1発でオッケーならすぐに終わるかもしれません。しかし1発で終わることはまれだし、終われない場合は時間ばかり掛かってしまいます。
  • テストはテストコードを書いて繰り返しできるようにしましょう。テストは何度も繰り返すものです。単体テストで何度も実行し、その後のテストやリリース後でもバグが見つかったら再度テストします。さらにはリファクタリングする時にも必要です。
  • テストは自動化して毎日全テスト実行しましょう。日々修正しているモジュールは色んな要因でバグが混在します。テスト済みのテストコードは、毎日実行する事でデグレードを早期に発見できます。

自分が書いたコードは完璧だと思いがちで、テストは面倒だという気持ちが起こりがちです。でも実際は自分の書いたコードはバグばかりで、テストを何度も繰返して品質を向上させます。
面倒だと言う気持ちを捨てて、テストは重要だ、必要だという気持ちを持ちましょう。実際に経験して、失敗を繰り返さないとわからないのですが、やはりテストは重要なのです。

失敗あるあるの具体的な例は、Qiitaを見て下さい。

 

qiita.com

もしドラを読んでマネジメントの勉強をしました。

もしドラを読みました。

もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら」通称「もしドラ」を読みました。

きっかけは「数学ガール (数学ガールシリーズ 1)」。数学と小説が同時に楽しめて、とても面白かったからです。もしドラも小説でありながら、マネジメントを学べるということで楽しくマネジメントを学べると思ったからです。結果から言うともしドラも小説を楽しみつつ、マネジメントを学べてとてもオススメです。

以下はもしドラの小説の内容ではなくて、マネジメントを箇条書きでまとめた内容になります。

  • マネージャーの資質は、真摯さ
  • 組織の定義づけから。「われわれの事業は何か。何であるべきか。」を考えることが重要。上で顧客を考える。顧客は誰か。顧客によって事業は定義される
  • 企業の目的は顧客の創造。そのための基本的な機能は、マーケティングイノベーション
  • マーケティングは顧客からスタートする。顧客が何を買いたいかを考える
  • マネジメントは、働く人たちに成果をあげさせること。焦点は仕事。働きがいには責任。そのために生産的な仕事、フィードバック情報、継続学習が不可欠
  • 専門家にはマネージャーが必要。専門家にとってコミュニケーションが問題。アウトプットが他の者のインプットにならない限り成果はあがらない。専門家を理解し、アウトプットを顧客にわかる形で伝える
  • 成長には準備が必要。成長の機会はいつ来るかわからない準備してないと機会を失う
  • 人のマネジメントとは人の強みを発揮させること。人の弱みは中和する。人は最大の資産
  • 仕事を生産的にする4つのもの。分析、総合(プロセスとして編成)、管理、道具
  • 自己目標管理
  • イノベーションの尺度は、外の世界への影響
  • 既存のものは全て陳腐化すると仮定する。イノベーションの戦略の一歩は陳腐化したものを計画的かつ体系的に捨てること。昨日を捨ててこそ新しいもののために資源を解放できる
  • マネジメントは組織に特有の使命を果たすために存在する。働く人を活かすことが重要。社会の問題の解決に貢献
  • マネジメントの正統性。正統性の根拠は人の強みを生産的にすること。何らかの貢献を、行わせ自己実現させるための手段
  • 優れているほど多くの間違いをおかす。優れているほど新しいことを試みる
  • トップマネジメント。担当分野の最終決定。担当分野以外の意思決定を行ってはいけない。メンバ同士批判はダメ。褒めるのも避ける。トップマネジメントにもキャプテンがいる。ボスではなくリーダ
  • 組織は存続できない最小規模と繁栄を続けられなくなる最大規模がある。必要なのは最大ではなく最適。規模の問題は地域社会との関係において行動の自由が制約される所からくる
  • 成果や業績で評価される者の数を増やす。

まとめ

上記は書いてある事をおおむねピックアップしたあるのですが、実践するうえでまずは以下のことを考えて実践していこうかと思っています。

  • 組織の定義
  • 顧客は誰で何を求めているか。そのために何をするか
  • メンバに成果をあげさせる。フィードバックする。継続的に学習させる
  • 成果を外部にわかりやすく伝える
  • 成長の機会に向けて準備する
  • メンバの強みを最大化し、弱みを最小化する。そのために分析、プロセス、管理、ツールが必要
  • 既存のものは全て陳腐化すると考え、既存を計画的に捨てる。そして新しいものにリソースを割当てる
  • 優れているほど新しいことに挑戦して、間違えをおかすことを理解する

書いてある事はなるほどと思いますが、結構抽象的で実践するのは難しいと思います。考えることが必要だと思います。もしドラの中で、実践していたこと、考えていたことを参考に自分自身考えていきたいと思います。

 

 

育休を2年間とってみて~子育て期は自分の時間をとれない~

育休中にやろうと思っていたこと

育休を開始して思っていた事は、これを機に色々やろうという事。子育て中心なのは当然なのですが、休んでいて時間があるだろうと思い、育休のブログ、料理、新しい技術の勉強、プログラミングで開発などなど。

現実はそれどころでない

しかし実際に育休で子どもの面倒をみていたら、それどころではありませんでした。
出産すぐは奥さんも身体を休める必要があるため、家事を全て1人でやります。朝起きて朝食の準備、子どもを送り出したら洗濯、掃除。終わった頃に真ん中の子が帰ってきます。

昼食の準備して食べさせて、その後放って置くことは出来ないので、遊びに連れて行ったり、泣いているのを抱っこであやしたり。そうしている内に上の子が帰ってきます。真ん中の子をあやしながら宿題を見て、終わったら夕食の準備です。夕食食べさせて、お風呂に入れたら寝る時間。寝かしつけると1日くたくたなので一緒に寝てしまいます。

子どもがいる間は、基本的にずっとみていないといけないので、何もできません。出来るとしたら何か出来るのは子どもが学校等に行っている間か寝てる間。土日はずっと
子どもがいるので、自分の事はできず、ずっと子どもの面倒でした。

この頃はまだ下の子が寝ているだけなので、いま思えば楽でした。

ハイハイをはじめる

下の子がハイハイをはじめると大変になります。特に気を使うのが誤飲。ちゃんと掃除して、小さいおもちゃとかが落ちてないようにしないといけません。でもお兄ちゃん2人は遊び盛りで色んなおもちゃで遊びます。真ん中の子はまだ言うことを聞けないので、何でも出して散らかし放題。散らかしては片付けを繰り返しくたくたでした。

それでも片付けが追いつかない事も多々あるので、誤飲の危険がある小さなおもちゃは全て取れない場所に片付けました。

たっちをはじめて(1歳頃)

たっちをはじめるとさらに、大変です。この頃は真ん中の子よりも下の子が、あらゆる所のものを出し始めます。おもちゃだけでなく、扉を開いて書類を出す。机の上のものを取ってなげる(ご飯とかジュースとか)

扉は開けれないように扉の前にものを置いたり、机の上のものは取れないように真ん中に置いたり、一瞬でも気を抜くと大変な事になります。

我が出て来る

成長に伴い自分の意思がはっきりしてきて我が出てきます。そうなると大変。気に入らない食べ物や飲み物だと投げ捨てる。気を損ねるといきなり泣き出す。着替えをさせてくれない。

大きくなればなるほど大変

産まれたばかりでも、ミルクをあげたり、頻繁にうんちを変えたり、首がすわってなくて気を使ったり、大変な事は多いですが、大きくなればなるほど動きが激しくなり大変です。2,3歳ぐらいがギャングエイジと言われる意味がわかります。やれる事が多くなっているけど、まだ言う事がわからなかったり、聞けなかったりで、好き放題やるから大変です。

お兄ちゃん達は少しずつ成長

そんな中、お兄ちゃん達の面倒もみるからなお大変です。でも救われるのは、お兄ちゃん達は少しずつ成長して落ちついていくこと。上は小学生だから自立していくし、自分の事は出来るようになっていきました。

真ん中の子も自分でトイレにいけるようになったり、自分でご飯を食べれるようになったり、言えば片付けをしてくれたりと少しずつ手がかからなくなってきました。

それでも自分の時間が。。。

お兄ちゃん達は成長し、日中は学校等に行っているので、大分楽になりましたが、下の子がいるとどの道大変です。産まれたばかりは、食事、洗濯、掃除と上手く順に片付けていけたのですが、下の子が成長するに連れて、食事の準備中は抱っこ、掃除中も離れると泣く、洗濯を畳んでいるとちらかして最初から。。。今までより家事が進まなくなりました。

結局、自分の時間はなかなか作れなく、やりたいと思っていた事が何もできず育休が終わってしまいました。

今しか味わえない子育て期

しかし産まれてから大変な時期を経験できた事はとても大きな財産です。まず大変さを妻と共有出来ることは大切な事だと思います。上2人は妻に任せっきりだったので、大変な事を理解できてなかったと思います。パパの「休みの日ぐらいゆっくりさせてくれよ〜」は、とんでもありません。子育てしていたら休みなしです。しかも仕事より大変だと感じる事はたくさんありました。

体験したからこそ理解し、仕事をはじめても子育てに積極的になれます。その結果として子どもがパパに懐いて、抱きついて来てくれるのが、何よりの喜びです。

ウッドデッキをDIY~組み立て~

ウッドデッキの組み立てを始める

設計、木材の購入が終わったらいよいよ組立です。ウッドデッキが出来上がって行くところなので、一番楽しい所です。組み立てていった順番に説明していきます。

束石を置く

設計時にすでに仮置きしておいた束石を穴を掘り、水平を取ってちゃんと置きました。実際に穴を掘ってみると枕木があった場所や道路の際は、コンクリートがありました。削ったり、違う大きさの束石に変更したりして対応しました。コンクリートを削った場所は水平も取りにくかったりと苦戦しました。設計段階で束石をしっかり置いておけばよかったなと思いました。

置いたら設計と寸法が違わないか再度確認します。実際に置いてみると多少ズレがあります。特に直角を取るのが難しく直角のとり方でズレの大きさが随分違います。
また別の棒を束石の近くに立て、水糸を引いて水平をとりました。水糸の水平をとってから水糸と束石の高さを測って水平を確認します。

私の工法では根太で最終的な水平をとるので、そこまで厳密にはとってません。なるべく水平がとれていた方があとが楽ですが、ほどほどで次に進みました。

木材に防腐剤を塗る

束石を置いた後は、木材に防腐剤を塗っていきました。すぐに腐ってしまったら悲しいので、ここはしっかりやります。

私はまず木材を切る前に全体に防腐剤を塗りました。まとめて塗れるのでやりやすい方法だと思います。防腐剤をたっぷりつけて塗り、1日以上乾かしてから、2度塗りしました。切る前なので、切ってから切り口に塗り忘れないことが大切です。

木材を切りながら組立

束石を置いて、木材に防腐剤を置いたら木材を切って組み立てていきます。切った後に防腐剤を塗るのを忘れずに、しっかり2度塗りしました。組み立ててみて、ズレていたらいやだったので、束柱を切って組立、根太を切って組立と少しずつ寸法を測りながら組立ました。

実際に組み立ててみると直角が上手く取れてなくて、ズレていました。寸法を測り直して束石の場所を調整して対応しましたが、束石を置くときに何度も寸法や直角を確認しておけば避けられたと思います。

固定はコースレッドで

木材の固定はコースレッドで行いました。柔らかい木材を選んだので、初心者の私でもインパクトドライバーで簡単に固定できました。固定するときは1箇所につき4本で固定しました。

根太で水平を取る

根太を取り付けるときに水平をとりました。片方を束柱にコースレッド1本で固定し、逆側を固定する時に水平器を乗せて水平を確認しながら固定しました。この方法だと簡単に水平がとれとても助かりました。

長い柱の取付

パーゴラやフェンスを作ったので、長い柱がありました。柱だけ取り付けると倒れてしまうので、柱を取り付けた後すぐに根太で固定しました。2500mmの柱がありましたが、根太で固定すれば安定しました。

床板の取付

床板の取付は、ウッドデッキが出来ていくのが確認できて1番楽しい所です。隙間はコースレッドを1本はさみながら等間隔になるようにしました。

私はウッドデッキの床板をすのこの様にして、開け閉めできるようにしました。ものが落ちた時にとれるようにするためです。

パーゴラとフェンスの組立

最後は、パーゴラとフェンスの組立です。ここまで来たら後は、取り付けるだけでとても簡単です。完成していくので、達成感もあります。
束石、束柱、根太が構造で大事な部分なので、そこが出来たら完成したのも同然です。

まとめ

初めてのDIYでウッドデッキを作ったのですが、ネット等で調べながらでも、やれば出来るんだと感じました。実際に立派なウッドデッキが完成しました。

難しかったのは設計、特に強度は大丈夫なのかと言うこと。また構造部分の束石、束柱、根太を組立てるときに水平や直角をとるのも難しかったです。

苦労しましたが、その分の達成感は格別です。ハンモックもかけて子どもも大喜びです。

 

f:id:takus4649:20160904174643j:plain

機械学習を学んで、基本的な考え方をまとめました

Qiitaに機械学習の記事を投稿しました。機械学習の基本は以下だと思います。

  • 説明変数から目的変数を予測
  • データ収集、データクレンジング、モデルの生成、モデルの評価の順番で実施
  • モデル導出の基本は、尤度関数と最尤法

詳しくはQiita記事も読んでください。

qiita.com

数学ガール フェルマーの最終定理を読みました。

数学ガール フェルマーの最終定理を読みました。数学ガールに続きとても面白く、学びが多かったです。読んで特に心に残ったことをまとめます。

原始ピタゴラスの問題

整数問題は、聞けばわかるけど、テトラちゃんと一緒で「絶対思いつきませんよ」です。「僕」が言うように森をふらふら歩いてる感じで、途中で帰りたくなります。
整数問題は、面白いんだけど、難しく奥が深いです。
整数問題のコツは、「偶奇を調べる」「整数の構造は素因数」「積の形」「互いに素」なるほどって感じでした。

素数指数表現

ベクトルと対応付けて考えるのが面白いです。

ガウスの整数と素数因数分解

4で割って3あまる素数ガウスの整数で因数分解できないところが数字の不思議です。

群論

群論は何度か勉強しているけど、断念しています。数学ガールで理解が進めばと思いました。群環体が出てきました。群は知っていましたが、環と体は理解していませんでした。

環は群の演算を加法として、もう一つの演算乗法を定義したものです。

体はさらに除法(乗法の逆元)を定義したものです。

群環体の定義がやっと理解できました。具体的な既約剰余類群、剰余環、有限体が理解の助けになりました。

無限下降法

物語を読みながら同じような計算、式を繰り返すので、この式はボツになるオチかと思っていたら、無限下降法というのが出てきました。自然数には最小値があるから矛盾が導かれ、背理法によって証明していました。そんな方法があるんだとびっくりしました。

さらに無限下降法によって、フェルマーの最終定理の4乗の場合を証明していて、さらにびっくりしました。

抽象化と汎用化

本の中で出てくるわけではないけど、読んでいる途中で抽象化と汎用化が重要だと再認識したので、思ったことを書きます。

数学や物理をやっていて、群論が必要になって勉強したことがあります。そこで感じたのは抽象化が重要といういことです。数学は群論だと四則演算のように具体的な計算というより、定義された演算になっていて、とても抽象的です。さらに最近プログラムの勉強し直して、アジャイルオブジェクト指向、抽象化の重要性を再認識していたところです。

twitterで抽象化は汎用化の意見があり、ハッとしました。

プログラムでの汎用化は何となく理解していたけど、数学、物理も同じであることがわかりました。定理や公式は汎用化の一種かなと思いました。FLT(4)の証明でミルカさんが「最後のピースを埋めただけ」といっていました。証明が簡単に終わったけど、それは「僕」の公式があったためで、これが抽象化、汎用化の利点だと思いました。プログラムで言うとライブラリや汎用的なモジュールだと思います。

最近の数学や物理はとても抽象化されていたり、何十次元とか、素粒子とか宇宙とか、直感的にわかるものでなくなってきている気がします。その中で定理や公式の組み合わせで何かを証明していく、という形になっているのかなと感じました。

プログラムはライブラリが充実して、色んな事が簡単にできるようになっていて、抽象化、汎用化のメリットを最大限に享受できるように進化しているのかなと思います。私もその一助になっていきたいと感じます。

well-defined

数学や物理で定義を一般化して、定義し直すときがあります。まさにその時感じるのがwell-definedです。本当に元々の性質を満たしているのか、その証明や理解がないと先に進んでもイマイチ納得感がありません。well-definedかどうかを考えることはとても重要なことだと思うけど、教科書では触れられても1行なんだと思います。

フェルマーの最終定理の歴史

定理の証明の歴史が書かれていて、楽しく感じました。初等整数論の時代、代数的整数論の時代、幾何学的数論の時代、数学の進化を感じることができました。

フェルマーの最終定理

フェルマーの最終定理は、すべての証明は書かれていなかったけど、証明するための道筋と必要な定理がしっかりと書かれていました。フェルマーの最終定理を証明するために必要な定理がかかれていて、その定理を使ってどう証明するかがわかりました。(ユーリが道筋を自分で考えて導き出してました。)

ワイルズがどのような理論で証明したかがわかりました。まさにパズルのピースを埋めているような感じでした。定理の一つ一つは難しく詳しく証明は書かれていませんでしたが、定理の概略と定理を使った道筋は書かれていました。複数の定理が関わり証明されていることがわかり、知識が蓄積された結果で証明が可能となったと感じました。

本当に理解するには一つ一つの定理を理解し、証明する必要があると思いますが、大枠の全体像の理解も大切だと感じました。

まとめ

数学ガールフェルマーの最終定理を読んで、抽象化、汎用化が重要だと再認識しました。プログラムの世界でも抽象化、汎用化の重要性に最近気づいたのですが、数学や私の好きな物理も同じだと感じました。

抽象化や汎用化を考える上で大切になってくるのが全体像だと思います。大枠で理解をして、その上で詳細を理解する必要があると思います。本当の理解のためには詳細を理解することが必要ですが、全体像を理解することの方が大切だと思います。全体像がわからなくて、一部の定理だけ理解していても意味がないからです。

まさか数学ガールを読んで、物理やプログラムの世界にもつながるとは思いませんでした。

 

数学ガール/フェルマーの最終定理 (数学ガールシリーズ 2)

数学ガール/フェルマーの最終定理 (数学ガールシリーズ 2)

 

 

育休を2年間とってみて~パパでも子どもが懐く~

パパでも子どもが懐く

育休を2年間とって1番嬉しかった事は、子どもが懐ついたことです。上2人のときは仕事が忙しく子どもと過ごす時間が少なかったです。そのためパパよりママが好き。
一方育休を取って産まれてからずっと一緒にいる1番下は完全にパパっ子です。パパと遊びに行く事は大好きですし、ずっとパパの膝の上に座っています。泣くような事があったらパパに抱っこを求めてきます。
上2人の子の時はやっぱりママには敵わないんだなと思っていたのですが、一緒にいる時間が多ければパパにもしっかり懐くことが分かりました。

懐いたと思ったら。。。

子どもがパパっ子になってくれて嬉しく感じていた中、とてもショックなできごとがありました。

泊まりで忘年会に行ったときのこと。遠い場所だったので夜行バスで行って、さらに1泊してきたため子どもとは2泊離れた状態でした。家に帰って子どもと再会したら喜んで抱きつきに来てくれると思ったら。。。

 

「このオジサン誰?」

 

的な視線を送り、ママにしがみついて離れない。。。たった2泊だったのに、パパのことを忘れてしまったようです。
しばらくしたらいつも通り抱っこできるようになりましたが、かなりショックでした。

子どもとのスキンシップを大切に

仕事復帰して子どもとのスキンシップが減るとまた同じことになってしまいます。なので、子どもとの時間を大切にしています。一緒にお風呂に入ったり、ご飯をあげたり、休日は一緒に遊びに行ったり。やはり子どもとのスキンシップの時間が多ければ多いほどいいと思うので、仕事が忙しくなっても時間を見つけて子どもとの時間を大切にしたいです。

でもやっぱりママ

と、一緒にいる時間が増えることでパパっ子になってきましたが、夜寝るときだけはママです。おっぱいをのんでるせいだと思います。お兄ちゃんたちもおっぱいをやめるまでは、ママがいないと寝れませんでした。ママというより、おっぱいには敵いません。