プログラム/コーディングのその前に。。。#04
【動作を分解して考える。】
頭にあることを「紙」に出し、誰にでも(後々の自分にも^^;)わかるように「母国語で書く」必要性について書いてきました。
今回は「動作を分解して考える。」です。
前回晒した「画面遷移書」のように、作ろうとするものの動作や機能については一通り「紙」に「母国語」で書き出すことができたわけです。
しかしこの資料は「制作者以外の方でも読める」ということを念頭に置いていますので、「当たり前のことを当たり前」に書いています。
例えば、「ドラッグ&ドロップ」や「拡大/縮小」「ポップアップメニュー」などなど。。。
「専門用語は使わない」と前回に書きましたが「わかるだろう。^^;」と思われる専門用語はそれなりに使っています。そうしないと読み手に苦痛を与える冗長な文章になってしまい
「読みにくい」→「読まない」→「認識を共有できない」
という大変なことになるので、そこはバランスをとりながら書いています。
しかし、少しでもプログラムに挑戦したことがある方なら察しが付くと思いますが、
「実際の動作は細かい動作の積み上げの上に成り立っている」
ということに。。。
つまり、文章では一言で表現した「ドラッグ」や「ポップアップメニュー」「拡大/縮小」などというものは、細かな動作の集合の上に成り立っている動作であるということです。
そのため、本当に必要なベースとなる動作(=処理)を見極める必要がでてきます。
たとえば、一言で済むように
「珈琲を淹れてください。」
といったお願いだって。。。言われた人は「珈琲を淹れる」という認識でも。。。
「湯をわかす」
「カップ&ソーサーを用意する」
「インスタント珈琲の粉をカップへ入れる。」
「やかんの水は沸騰したかどうか?」
「沸騰したらカップにお湯を注ぐ」
「角砂糖の器とフレッシュとカップ&ソーサーをトレイに」
「依頼者へサーブ」
といった細かくわかれた処理を一つずつ積み上げながら「珈琲を淹れる」という動作を実現していますよね。^^
これが「動作を分解する」ということ。
もちろん書面や口頭で「珈琲淹れて^^」って一言で済むことを、ここまで「動作を分解」して伝える必要はないと思います。お互い人間同士なら。
それは前述したように「珈琲を淹れる」という大きな動作が「湯を沸かす」「入れ物を用意する」「珈琲豆を用意する」といった大きな動作を実現するための小さな動作を持っていて、その小さな動作を再構築することで大きな動作である「珈琲を淹れる」が実現できることを知っているから。
但し。。。「珈琲を淹れる」ために何の準備が必要で、どういう作業が必要で、そもそも珈琲が何かわからない人にお願いする場合はどうしますか?
そうですよね。
「珈琲を淹れる」という動作を事細かく説明しますよね。
説明するために「珈琲を淹れる」という動作を細かい動作に分割する筈です。
そうした行為がプログラミングには必要になります。
そうしたことが、#01で引用させてもらった
「プログラムとは、コンピュータへの命令ではなく、
コンピュータに何をしてほしいか、人に説明することだ」Donald E. Knuth, “Literate Programming”
(ドナルド E. クヌース 『文芸的プログラミング』)
ということだと自身では理解しています。
だって、コンピュータはあなたが依頼したい事柄の何一つも知らないんですから。
あなたが親切丁寧に細かい動作に分割して一つ一つ教えてあげる必要があるんです。
「コンピュータに何をしてほしいか、人に説明すること」のように。
そのために「動作を分解して考える」んです。
