シンプルなように見えて、中身は複雑
はじめに
私たちがブラックボックス的に使っているものって、実は「シンプルそうに見えて、めちゃくちゃ複雑」なものが多い。
例えば、以下のYouTubeで作っている投稿編集画面。

ユーザーからすると直感的で簡単そうに見える。
でも、Reactなどのいろんな技術が組み合わさって動いている。
今、自分が取り組んでいる搬送システムもそう。
見た目は単純で、「倉庫にある商品を、A地点からB地点に運ぶだけの仕組み」に見える。
でも、Pythonで書かれたソースコードを一行一行見ていくと、関数、クラス、エラー処理、環境変数、API連携、SQLの操作など、さまざまな要素が絡み合っていて、決して一筋縄ではいかない。
その前段階にある設計書ですら、複雑な構成になっている。
設計書やソースコードが複雑に見えるのは、「人間にとってのシンプル」をコンピューターに伝えるために、細かく翻訳しているからだと思う。
つまり、コンピューターはめちゃくちゃお馬鹿で、でもとても従順。だからこそ、細かく細かく教えてあげないと動いてくれない。
たとえば「A地点から商品をB地点に運んで」と人に言えば、ざっくりとした指示でも伝わる。
でも、コンピューターには「どの商品を、何時何分に、どうやって、どのルールで、エラーが出たらどうするか、他の搬送システムとぶつからないための実行順など」まで詳細に伝えないといけない。
だから、シンプルに見える機能を実装するだけでも、その裏側には信じられないほどの「論理」と「ルール」が詰め込まれている。
プログラミングを学ぶことは、「シンプルの裏にある複雑さ」を読み解く力を養うことでもあると思う。
見た目は軽やかで直感的でも、その土台には多くの人の知恵と時間が積み重なっている。モジュールを読み込んで利用したり、DjangoやWEB APIの仕組みを利用したりしている。
そうすることで、車輪の再発明をすることなく、過去の人たちの努力の恩恵に預かることができている。
それを使うことすら難しいと思ってしまうが、昔の人からしてみればかなり簡単になっているだろう。
ホリエモンが「今は飽食の時代だよ」と言っていたのを思い出す。

今もホリエモンほどプログラミングができない人にとっては、十分複雑で難しいと思う。
徐々に今取り組んでいるソースコードがわかるようになってきた(ほんの一部)。
これからも複雑さと向き合い、一個一個理解していきたい。
コメントを残す