MasaoApril's Library.

Software Testingなネタを書いてみた。

「ルビィのぼうけん」を読んでみた

 2016年5月に翔泳社から発売された「ルビィのぼうけん」がネット上で話題になっていたので、購入して読んでみました。
 内容はまだ読んでいない方もいらっしゃると思いますので伏せますが、「コードは出てこないプログラミングの絵本」ということで、大人な方も楽しめる内容です。

 私が学んだことを以下に書いてみます。

(1)段取りを決める

 プロジェクトを進めるためには、ゴールを明確にすると共にゴールまでの過程を図(例:PFD)で可視化してメンバーと共有できるようにすることです。

(2)要求が抽象的だと実現したいことができない

 ざっくりな要求では目的を果たせなくなります。要求から目的が分かれば、要求を実現するための手段を検討できるので、分析の切り口を変えたり分類して本質を捉えられるようにします。

(3)タスクを実行できる段階まで分解&論理的に組み立てる

 (1)や(2)が実現できるように本質的なところ(素材)まで分解して、目的を果たすための段取りや確認することが明確になり、プロジェクトのゴールへ向かって進めることができます。

(4)条件を明確にする

 世の中、一方向ではなく枝分かれしたり、繰り返したり、飛んだり、戻ったりします。目的を果たためには、段取りの途中に判断することが必要なことがありますので、○○の場合は□□を行うというように条件を挙げます。挙げた条件は、デジションテーブルで表現してMECEを確認することも大切です。

(5)再現できるように形にする

 同じ入力を処理をして同じものを出力するためには、再現性が必要です。そのためには、アルゴリズムとして第3者に伝えることが求められます。ドキュメントを作成する目的の1つは、誤りなく再現できることですので、再現が必要なものを見極めて書き残すことは大切です。

(6)数学の集合論や論理学を学ぶ

 ソフトウェアは、数学なんだなと改めて思いました。私がデジションテーブルを書き始めたとき、条件の抜けが多々ありました。何故、条件の抜けがあるのか原因を考えたとき、「条件を洗い出すときにベン図で書くと条件の抜けがみえるのでは?」「論理回路の授業のときに真理値表をたくさん書いて理解を進めていたなぁ...」ということに気付き、大学時代に授業で使用した集合論や論理学の教科書とデジタル回路設計の教科書を読み直し、業務でデジションテーブルを何度も書いたら、条件の抜けに気づくことができました。
 数学に限らず、大学で学んだ学問を業務で応用できると、楽しくなると実感しました。

最後に

 久々に夢中になって読んだ書籍でした。業務で課題を見つけたら、解決するための手段が世の中にどれだけあるかを知り、社外勉強会や自学で素振りをガンガンにやってみて気付きを得て、課題を解決できるかチャレンジすることで業務の幅が広がったと実感しています。学びの楽しさを若手からベテランのメンバー伝えることも開発課に所属している私の役割かもしれません。
 書籍に戻りますが、本書のサイトも楽しいですが、原書:Hello Rubyのサイトのコンテンツが知的好奇心をくすぐるので、時間があるときに見てみようと思います。