プログラミングは好きですか?
この記事では、ひろゆきさんの書籍「プログラマーは世界をどう見ているのか」を紹介します。本書は、
- 世界のトップ層のものの見方の基礎を知りたい
- プログラミングの初歩の考え方を身につけたい
という方におすすめです。ひろゆきさんは、有名な匿名掲示板2ちゃんねるの開設者で、プログラマーです。この本では、プログラミングの基本的な考え方を学びつつ、その考え方がプログラミング以外の仕事にも役立つことを教えてくれます。
ひろゆきさん曰く、プログラミングは単純にお金が稼げるだけでなく、論理的思考・創造性・問題解決能力も育むことができる。人に対しての指示が伝わらないときは、細分化・具体化が足りていないといったことを主張します。それではさっそく中身をみていきましょう!
1. プログラミングで得られる能力
まずは、プログラミングで得られる能力について、本書から2つのポイントを解説します。
世界のトップはプログラマー出身
2022年4月、アメリカの経済誌フォーブスが、2020年版の世界長者番付を発表しました。結果は、テスラ共同創業者のイーロンマスクがアマゾンドットコムの共同創業者ジェフベゾスを抑えて初めて1位になりました。
また、トップ10全員が資産10兆円を超えている大富豪です。最高額を更新した2022年度東京都の一般会計が7.8兆円ですので、この10人がいかに膨大な資産を形成しているかが分かります。
このリストに載っている世界のトップの多くは、プログラマー出身です。テスラのイーロンマスク、Amazonのジェフ・ベゾス、マイクロソフトのビル・ゲイツ、Googleのラリーページとセルゲイ・ブリン、オラクルのラリー・エリソンの6名が世界の長者番付トップ10の中でプログラマー出身者であることが知られています。
ほかにもFacebookの創始者であるマーク・ザッカーバーグもプログの初心者として有名ですよね。プログラマー出身者が、いま世界で大成功しています。
プログラミングをすることで得られる能力
プログラミングは、いま市場で求められている大きなスキルの1つです。また、プログラミングで得られるのは金銭的な恩恵だけではありません。
日本では2020年からプログラミング教育が必修化されましたが、そのスキルを身につけるだけでなく、その学習を通して論理的思考だけでなく、創造性、問題解決能力も育成できる側面にも注目していると、文部科学省は言っています。
世界のトップ層がプログラマー出身者で占められている一因に、こうした能力を伸びることがあるのではないでしょうか。実際、優秀なプログラマーはパソコンの前に座り、1日中キーボードを打っている時間よりも、どうしたらより効率よくプログラムできるか、今より短い手抜きのコードはないかと考える時間の方が多いそうです。
著者のひろゆきさん自身、自分の一番得意なことが問題解決をすることだと公言しています。本書ではプログラミング能力を身につけることで、副産物的に得られたり気づけたりする能力、具体的には
- 情報整理術
- 俯瞰で物事を見る力
- 相手に合わせて指示するやり方
- 物事を効率化・方法化する力
- 優先順位を見極めること
- 仮説を立てる癖
- 論破力シミュレーション力
- 仕事を熟練させる方法
- アイデアを形にする能力
- 模倣するショートカット術
などについて、言及されているので、これらの力を身につけたいと思っている方は、本書を読む価値がありそうです。
2. プログラミングの初歩
ここからは、プログラミングの初歩について本書から2つのポイントを解説していきます。
コンピュータはおバカで従順
プログラミングの第一歩としてHTMLを書いてみましょう。特別な準備は必要ありません。Windowsのメモ帳アプリとWebブラウザさえあれば作れます。ウェブブラウザは、エッジでもChromeでも何でもOKです。まず、メモ帳を起動し、本書から引用した図の通りに入力してください。
多少適当でも構いません。入力したら、デスクトップに保存。名前の最後の拡張子は、必ず半角の「.html」としてください。保存したファイルをダブルクリックし、Webブラウザで開いてみましょう。これで、簡単なWEBページの出来上がりです。
ただし、これだけだと入力した文章がそのまま表示されただけと思う人もいるかもしれません。それどころかよく見ると、元のテキストの改行が無視されています。
そこで、メモ帳を使って次のように変更してみましょう。タイトルの前後に<h1>を加えます。ファイルを上書き保存したら、Webブラウザをリロードしましょう。すると、タイトルのところが少し目立つようになったと思います。
先ほど付け加えた<h1>というのが、タイトルと認識し、目立たせろという指示になっています。これだけでプログラミングを理解できるわけではありませんが、これも一応コンピュータ向けの命令を書いたことになります。プログラミングの第一歩を、踏み出したと言えます。
さて、<h1>と入力することで、コンピュータに命令をしたわけですが、このような命令を“タグ”と言います。タグは英語で名札のこと。テキストの一部に、「ここはタイトルだよ」という札をつけたことになります。テキストの先頭に書くものを返しタグ、最後に書くものを終了タグと呼びます。終了タグにはスラッシュが付いています。
人間だと、文章ざっと読んで、最初の段落は多分タイトルだなと検討をつけることもできます。しかし、コンピュータにはそれができません。ここが見出し、ここが本文と印を付けてあげる必要があります。
コンピュータは、正しく教えないと正しく反応してくれない。融通が利かず意外におバカだと言えます。HTMLのタグは他にもたくさんあります。改行やマーカー表示、打ち消し線、小さい文字や太文字、段落などです。タグを増やしていくと、できることもどんどん増えていきます。
実際にこれらをやってみて、面白いなと感じられるかどうかが、プログラミングに最低限必要な素質だったりします。命令した通りの結果が出る快感。世界を動かすITサービスを作ったすごいプログラマーの人たちも、みんなそこから学んできたのです。
動かないのは命令が悪いせい
HTMLのタグは少しでも間違えるとうまく実行できません。例えば、h1をhl(エル)と書いたり、多少の打ち間違いをしたりしただけで正しく認識してくれません。
コンピュータは適切な命令を渡せば適切に動いてくれます。思うように動いてくれなかった場合は、十中八九命令しているプログラマー側に原因責任があります。
人ばかりを相手にしていると、こういう発想にはならないことも多いかもしれません。指示を出した部下や下請けの会社がと思うように動かない時、ついついあいつは無能だ、彼らは理解する能力がないなどと決めつけてしまいます。もしくはそういった態度を示して、決めたがられている上司や取引先が身近にはいないでしょうか。
一方で、プログラミングを始めると正しく指示すれば、正しく動くというごく当たり前でシンプルな思考の基盤を身につけることができます。
自分の指示した通りに人が動かなかったり、物事が進まなかったりした際も、プログラマー思考を身につけていれば、もしかすると自分の指示が間違っているのでは、自分の説明する能力がないのではと気づき、問題解決につながることもあります。
コンピュータと付き合うときは、宇宙人か謎の生物を相手に教えるくらいに思った方がいいのですが、人間に対してもそのような態度で付き合う方が、無駄な怒りのストレスを抱えないで済むようになります。
もし、他人に指示するとき怒りっぽくなってしまうなと感じているなら、プログラミングを学び始めるというのも一つの手かもしれません。他人への理解力が上がるとともに、周りからの評判も上がるからもしれません。
3. 物事を最小単位に分解する
最後に、物事を最小単位に分解することついて、本書から2つのポイントを解説していきます。
相手に合わせて指示を最小単位に分ける
プログラムは、コンピュータの指示書です。そういう点では、人間に指示を出すのと似たところがあります。注意が必要なのは、人間に通じる指示とコンピュータに通じる指示は結構違うということ。人は間違った指示をしても、忖度をし正しい対応していてくれることがあります。
一方、正しい指示を出したとしても、間違った対応をしてしまうこともあります。プログラミングでコンピュータに指示を出す場合は、間違った指示をしたら、忖度などしてくれません。
ただし、正しい指示を出せばその通りに対応してくれます。とはいえ人間においても、相手の能力によって支持が通じるかどうか、結構異なるでしょう。まずは、人の例で考えてみましょう。
「売れる商品の企画書を書け」という指示書があったとします。このようなざっくりした指示は、ベテランの主任クラスの人材に対してなら適切かもしれません。推測や忖度をした上で実行できるからです。
しかし、新入社員であれば、期待した結果を出すのは難しそうです。そこでこのざっくりとした指示を、新入社員でもできそうなものに変えてみましょう。具体的に何をすればいいのでしょうか。指示を相手に合わせた最小単位に分けていきます。
作業単位で分けてしまえば、入社1~2年目の社員でも対応できます。一方で、コンピュータの指示とするとこれも無理でしょう。コンピュータは売れている商品のような、曖昧な表現は理解できないからです。
そこで、売れている商品を表す指標が必要になります。売れているではなく「売り上げが1億円以上」といった具体的な数値に直します。また特徴をまとめろ、考えろ、検討しろなどの意味もコンピュータは理解できません。「特徴の最大値を求めろ」といったような、計算処理に落とし込む必要があります。
コンピュータに指示して結果を出力できれば、あとは人間が考慮し企画書にまとめるのが、コスパのいいやり方と言えるでしょう。このような具体的な指示は人に対しても有効です。売れている商品をピックアップしろと言っても、売れていると判断は人によってまちまち。
しかし大手量販店A社で売上高1億円以上の商品をピックアップしろであれば、どの人間がデータを集めても同じ結果が出てくるはずです。このように、プログラムを書くようになると、指示を細分化する指示を具体化するという思考法を手に入れることができます。
コンピュータに対する指示の最小単位とは
コンピュータへの指示の最初単位は、簡単に言うとそのプログラミング言語が持っている命令です。例えば、ロボットにプログラムで、じゃんけんのチョキを出すという指示をするとします。
そのプログラミング言語がチョキを出せという命令を持っていれば、プログラムに長期を出せと書くだけで済むでしょう。しかし、チョキを出せという命令がない場合は、処理をさらに細分化し、親指を曲げろ、人差し指を伸ばせ、中指を伸ばせ、薬指を曲げろ、小指を曲げろという命令を実行しなければなりません。
つまり、プログラミング言語がどんな命令を持っているかで最初の単位が変わってきます。プログラミング言語がどんな命令を持っているかは、考えるとプログラミング言語が何を得意不得意とするかです。
例えば、Javascriptという言語の場合は、Webページを動かすために必要な命令が最初から揃っており、それだけでプログラムを簡単に書けるようになっています。そのため、JavaScriptはウェブページを動かすのが得意と言われています。このように言語によりコンピュータに対する指示の最小単位は異なるのです。
今回紹介した、ひろゆきさんの書籍「プログラマーは世界をどう見ているのか」について、まだまだ紹介できていない部分が多いです。おすすめの本ですのでぜひ読んでみてください!