かんがえる、かがんでいる人

考えたことをまとめます。

教養としてのプログラミングの土台を考えた

f:id:ton96O:20180614004710j:plain

現代、プログラムは一種の基礎知識・一般教養として認知されているようです。

確かに起業するにしてもWEBサービスは必須でしょうし、論理的な思考力を体現するプログラムは、その技術を上げるにあたって当事者がロジカルに考えるよう強いるのかな、と思います。

何より、目に見える天才たちが多いので、天狗になることはない。(と思います。天狗が出てくると嬉しいな。)(ソースコードは国境を超えて読める、サービスの実装は国境を越えて体験できるから、「目に見える」です。)

さらには、ポーターのvalueChainでいえば、ITは主活動でも支援活動でも使われます。応用範囲が広いのですね。社会で生きていかねばならない以上、コミュニケーション能力や人とうまくやっていく能力、勉強し知識を研鑽する能力と同じく基礎能力になるのでしょう。

一般教養としてのプログラム。わかります。

 

では、その認識で本当にいいのか?というのが今回の記事です。

 

プログラムで何らかの製品を作る際には、大なり小なり実運用の分析を行います。

目的を達成するために、どういう手順で、何をきっかけとして、どういう判断で条件分岐が起こるのか、その流れをチェックします。

そして、大部分、高速に大量の単純な処理をプログラムが担当することになります。最近ではこの「単純な」という部分が広がってきており、かなり複雑な事もできるようになっています。しかし最後には人が解決しなくてはいけないことも多く、最後の受け皿は考慮しておくことが大切です。

意外と見落とされがちなのが、同時に複数のプレイヤーが動く点です。

アロー・ダイヤグラム法|PERT図

道順が分かれていることがご理解いただけるかと思います。

その際、お互いの進捗報告をしたり、全体を管理する管理者が進捗状況をこまめにチェックするなどの工夫が必要になります。

プログラムでいえば、そのような支援機能があればベターということになります。

フローチャートで見るのもわかりやすいです。

フローチャート - Wikipedia

上記をクリックすると最初に目に入る画像に「ウッ」となってしまうかもしれません。

こちらはいかがですか?

【理系必見】料理をフローチャートにしたらこんなに分かりやすい! | feely[フィーリー]

料理をフローチャートで整理すると、こうなる、という記事になります。

これを業務で行うことを想像すると、とてもいいですね。

最終的に、おいしい晩御飯、という目標があり、それに合わせて全体をおいしく食べられる適温で食卓に出すための工夫です。

目標からさかのぼって、ここに至るまではどうすればいいのかな?と考えるとうまくいくことが多いです。

先ほどの、業務上の同時並行処理時に発生する連絡・全体の進捗状況の把握を料理で言い換えます。家庭料理だと多分想像しずらいので、大人数の料理人が働く、ホテルの調理場のようなところを想像するとわかりやすいかと思います。お客様に提供する一つのご膳には、ご飯が必要だし、おかずも数種類必要だし、小さなお鍋もデザートも必要です。それらを調理するのは、一人が全てを調理するのでなく、ご飯担当、おかず担当などが分かれているでしょう。その際にトラブルが起こったりするとリカバーしなくてはいけませんし、順調に進んでいることも確認しなければいけません。このようなご膳は一回で何十も用意しなくてはいけないのです。

 

さて

ここで、プログラムというのは大事そうだがそれは手段としてではないか?

という話をしたとしても、多くの方のご納得を頂けるかと思います。

そうなのです、プログラム(機械での処理)は、高速で大量の簡単な処理を行うのに適しています。その前段階があるのです。

 

それは、段取りです。

それよりも前に、何をするのかを決める力、というものが必要だと思います。 

ton96o.hatenablog.com

しかし、それは、学生の方やサラリーマンが意識的にやるのはなかなか難しい事です。

多くの場合、何をやるべきかは「正しく」決まっているからです。

(もちろんその点を考える事を否定はしません。むしろ推奨、です。)

 

段取りは、現状から最終目標に至る線分。と考えていただければと思います。

線分とは始点と終点がある直線です。

今回では直線であるという点が重要です。

それは、最短距離である、という事を意味します。

 

そのためにフローチャートを書くことができる能力が必要とされます。

それがあるから、どこに重複作業があるのか、ボトルネックはどこか(ザ・ゴール)、どこに単純作業があり、プログラムや機械で効率化が可能なのか。

それを考える事ができるのです。

 

プログラムは現在の一般教養として大切なものです。

しかしそれ以上に、どこにプログラムを使うのか、という判断をするためにも大局観を持つことは重要です。

教養としてのプログラミング」でアマゾンを検索すると複数書籍が出てきました。

興味がある方は、フローチャートの勉強をしつつ、自分に合いそうなものを読んでみてはいかがでしょうか?

?