スポンサーリンク

       

2022年07月15日

【プログラミング的?】『プログラマーは世界をどう見ているのか』西村博之


4815608229
プログラマーは世界をどう見ているのか (SB新書)


【本の概要】

◆今日ご紹介するのは、先日の「未読本・気になる本」の記事でも注目を集めていた1冊。

おなじみ西村博之さんによる、「実際に簡単なコードを書いて『プログラマー的思考』を理解する」という意欲作です。

アマゾンの内容紹介から一部引用。
イーロン・マスク(テスラ)、ジェフ・べゾス(Amazon)、ラリー・ペイジ(Google)…etc.
世界のトップはなぜプログラマーなのか?
文系出身のプログラマー・ひろゆきによる、知識ゼロから取り組める、プログラミング超入門書!
プログラミングの基礎とともに、プログラマーが手にしている「思考法」も、かんたんなプログラミングコードを書きながら、身につける!

なお、中古が定価を上回る一方で、Kindle版は「10%OFF」に値下げされています!





Code / jenwikehuger


【ポイント】

■1.プログラミングの第一歩
 早速なのですが、HTMLを書いてみましょう。Windowsの「メモ帳」アプリ(macOSなら「テキストエディット」アプリ)とWebブラウザさえあれば作れます。WebブラウザはEdgeでもChromeでも、何でもいいです。
 メモ帳を起動したら、試しに以下を入力してください。ただの文章なので、多少適当でもかまいません。
ひげおやじ物語
むかしむかしあるところに、死んだ魚の目をしている性格の悪いデブのおっさんがいました。
 入力したら、デスクトップに保存してください。名前も適当でいいのですが、名前の最後を必ず半角の「.html」にしてください。これだけ守ってもらえたら、あとは保存したファイルをダブルクリックしてWebブラウザで開くだけです。これでWebページのできあがりです。


■2.相手に合わせて指示を「最小単位」に分ける
次の指示書を見てください。
売れる商品の企画書を書け
 このようなざっくりした指示は、ベテランの主任クラスの人材に対してなら適切かもしれません。推測や忖度をしたうえで、実行できるからです。しかし、新人社員であったならば、期待した結果を出すのは厳しそうです。
 そこで、このざっくりとした指示を、新入社員でもできそうなものに変えてみましょう。具体的に何をするのか。指示を相手に合わせた「最小単位」に分けていくのです。
売れている商品をピックアップしろ
→売れている商品の特徴をまとめろ
→それを元に売れそうな商品を考えろ
→それが自社で実現可能か検討しろ
→企画書にまとめろ
 このように作業単位で分けてしまえば、入社1、2年目の社員でも対応できますね。


■3.最速化するには「ボトルネック」を見つけ出そう
 たとえば、夕食にお味噌汁とハンバーグ、野菜炒めを作るとして、コンロが1つしかなかったら同時に3つを調理することはできません。この場合、コンロの数がボトルネックといえます。また、食堂を例にすると、調理人がどんなに早く料理を作っても、配膳係が1人しかいなければ、お客に届けるのが遅れてしまうことがあります。この場合は、配膳係がボトルネックです。(中略)
 作業効率を上げるには、まずボトルネック部分を改善することが考えられます。先ほどのケースだと、「コンロを増やす」「配膳係を増やす」「高速回線を用意する」といった解決策です。
 また、ボトルネック以外の部分を工夫して解消することも考えられます。「ハンバーグを肉団子にしてお味噌汁に入れて野菜もそこに入れて調理する(鍋3つを鍋1つにする)」「食堂をセルフサービスにする」「通信するデータ量を可能な限り減らすよう工夫する」といったものです。
 いずれにしても、解消の第一歩となるのは「どこがボトルネックなのか」を探すことです。どうも効率が悪いなと思ったら、まず少し離れたところから作業を観察し、すべての手順とかかっている時間をピックアップして、ボトルネックを探してみましょう。


■4.仕事に熟練するとは、ループを見出すこと
仕事を覚えたての頃は、上から指示されたことをとりあえずこなしていくしかありません。しかし、それを続けていくうちにパターンが見えてきて先が見越せるようになって、気持ちがグッとラクになり、やがては指示されなくても仕事をこなせるようになります。それが「仕事に熟練する」ということです。
 これは、少し前に説明した、順次処理をループ処理にする話に似ていませんか? 順次では先頭から順にこなしていくだけですが、その中から繰り返しパターンを見出すことができれば、ループ処理に変えることができます。(中略)
 ループ処理とは、言い方を変えると、ルーチンワークのことです。ルーチンワークという言葉には、「仕事を機械的に流してやる」というマイナスイメージもありますが、仕事に熟練することとルーチンワークとしてこなすことは切り離せません。新たなことを生み出しているように見えるクリエーターも、実はたくみなルーチンワークをこなしているだけかもしれないのです。


■5.プログラムを学ぶメリットは何か
 第一に挙げられるメリットは、お金や人材がなくても、サービスを形にしてスタートアップできる点です。
 たとえばFacebookというSNSをご存じの人も多いでしょう。あれは、マーク・ザッカーバーグが大学生だった頃に、PHPというプログラミング言語を使って開発したサービスです。(中略)
 第二のメリットは、プログラミングを学ぶことでコンピューターという生き物の扱い方がわかるという点です。現代社会は、コンピューターなしでは仕事も生活も成り立たなくなりつつあります。ということは、コンピューターをただのブラックボックスと思って使うのと、どういう理屈で動いているのかを知っていて使うのとでは、大きな差が出てくるはずです。
 第三のメリットは、仮説→実践→証明という実験的思考を身につけられる点です。プログラミングは暗記だけでは学べないもので、エラーが出たらなぜ間違ったのかの仮説を立てて原因を探し、プログラムを少しずつ修正していくトライ・アンド・エラー(試行錯誤)が欠かせないからです。「日本は、失敗することを恐れて、トライ・アンド・エラーをする場があまりない」と思っている人も多いかもしれませんが、プログラミングは、そういうことが経験できる場でもあります。


【感想】

◆思った以上に、実際のプログラミングに沿った内容の作品でした。

実際、上記ポイントの1番目のコードの話は、第1章の初っ端をそのまま持ってきたもの。

「え?」と思いつつも、言われたとおりにメモ帳で書いてクリックしたら、Cromeで新しいタブが開けて、打ったテキストが表示されました(macOSの場合は設定が必要でその指示もアリ)。

ただし、メモ帳で表示されていたようには改行されておらず、ここからページが進むにつれて様々なタグを加えて、字の大小や太字、打消し線等も加えていく次第です。

もちろん、タグを間違えれば正しく表示されませんから、要はプログラミングを始めると、「正しく表示されるには、正しく指示する必要がある」という、「ごく当たり前でシンプルな思考の基礎」を身につけることができるという。


◆この辺までは、私がこうしてブログを書いている時に用いるタグのレベルと大差ないので理解できましたが、第2章に入るとJavaScriptが登場してきて、以降は未知の世界でした。

一応、本書ではコードと、それを動かした際の実際の表示が掲載されているのものの、すべて画像表示のためコードをコピペすることができず(すべてのサンプルコードがダウンロードできますが)。

もちろん本を見ながら手打ちで打てばいいのでしょうけど、ブログを書く時間だけでいっぱいいっぱいなので、こういった作業は割愛させてもらいました。

そして本書では、こうしたプログラミングの「指示」が、私たちの「仕事」にも活かせることを色々と解説してくれています。

たとえば上記ポイントの2番目の「最小単位」のお話もその1つ。

ただし、コンピューターへの指示だとすると、これでも曖昧です。
そこで、 売れている商品を表す指標 が必要になります。「売れている」ではなく「売上が1億円以上」といった具体的な数値に直してみましょう。
 また、「特徴をまとめろ」「考えろ」「検討しろ」などの意味もコンピューターは理解できないので、「特徴の最大値を求めろ」といった 計算処理に落とし込む 必要があります。
これはそのまま、人に対する指示でも適用できますよね。


◆さらに上記ポイントの3番目も、この第2章からのもの。

もっとも「ボトルネック」という概念自体は、プログラミングを持ち出さなくとも、私たちのビジネスシーンでもおなじみですが。
プログラミングの世界では、「ネットワーク通信」「巨大なデータの保存/読み込み」「アクセスの集中による負荷」「動画加工や3Dグラフィックス表示などの非常に重たい計算処理」などがボトルネックとなり、それを少しでも軽減するために多くのプログラマーが日々頭をひねっています。
そういえば昨今のコロナ禍で、ムスコがZoomの遠隔授業を受ける必要があり、通信が途中で落ちないよう久しぶりに有線LANケーブルを引っ張り出してきたのですが、それをゲームにも用いたところ、ムスコだけ反応速度が速かったとか。

かくいう私も、日頃からゲームも映像も無縁なため、低めのスペックの同じノートPCを家と職場で問題なく用いていたのですが、知り合いからアドバイスを受けて、SSDとハードディスクを併用するタイプに変えたところ、文字通り「爆速」でビックリしました。

パソコンの立ち上げやシャットダウンからしてスピードが全然違いましたから、自分の考える速度や、タイピング速度が変わらなくとも、ブログを書く時間をガッツリ節約できたワケですから、コスパ最高。

ライフハック系の書籍で、「PCやスマホは最新のものを」と言ってる意味がようやく分かりましたわ(遅過ぎ)。


◆一方、第3章では「『if』思考」がテーマということで、「if文」や「if-else文」が登場。

具体例として、テストの点数で学生をランク付けするプログラムを検討するのですが、これらはフローチャートを書いて整理されていて分かりやすかったです。

もちろん対応するコードも掲載されていますから、本来は実際に打って検証するのが「身につく」ための最善策なんでしょうね。

なお、こうした「分岐処理」の考え方は、ひろゆき氏が「論破」にももちいる考え方とのこと。
「もし相手がAと主張してきたら、Xと返そう。Bと主張してきたら、Yを攻めよう。それ以外なら、Zという対応をしよう」といった具合に考えていくのですが、プログラミングの条件処理っぽいといわれれば、たしかにそういう対応だったりします
なるほど「論破王」と言われる裏には、こういった思考プロセスがあったのですか。


◆さらに続く第4章では「ループ」がテーマ。

いわゆる「反復処理」の考え方であり、例題として「『3の倍数と3がつく数字でアホになる』プログラム」のコードが出てくるのですが、意外と面倒な処理が必要なのだな、と(あくまで素人の私の考えです)。

また、「アイドルの握手会のプログラム」では、基本ループ対応しつつも、「ひげおやじさん」が並んだら対応を変えたり、子どもが並んだらスタッフに写真を撮ってもらったりと、対応を変えるのにはワロイました。

もっとも大半は「同じことの繰り返し」ですから、上記ポイントの4番目にあるように、その繰り返しパターンを見出すのが大事なワケです。

そして上記ポイントの5番目は、第5章のほとんど最後にでてくる「まとめ」のようなもの。

米国のスタートアップやGAFAMの多くのトップが、プログラマー経験者であるのは、ある意味必然でしょうし、これからの必須スキルとして、プログラミングは英語並みに重視されても不思議ではありません。

……相変わらず選挙が電子化される以前に、候補者の名前を自書させてる時点で、日本という国自体は、まだまだ迷走しそうですが。


プログラマー的思考を身につけるために!

4815608229
プログラマーは世界をどう見ているのか (SB新書)
はじめに なぜ世界のトップはプログラマー出身者なのか?
第1章 「ツリー思考」で整理する
第2章 物事を「最小単位」に分解して並べる
第3章 最強の能力は「if」思考で身につける
第4章 「仕事が早い人」はループを見つけている
第5章 プログラミングを学べば、アイデアを形にする力を得られる


【関連記事】

【文系必読?】『教養としてのプログラミング講座』清水 亮(2014年03月11日)

【オススメ】「ニコニコ動画が未来を作る」佐々木俊尚(2009年12月09日)

【プログラミング】『子どもを億万長者にしたければプログラミングの基礎を教えなさい』松林弘治(2015年02月27日)

【オススメ!】『ULTRA LEARNING 超・自習法 どんなスキルでも最速で習得できる9つのメソッド』スコット・H・ヤング(2020年03月06日)


【編集後記】

◆本日の「Kindle日替わりセール」から。

B07B7JFKL2
カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで (ブルーバックス)

ちょうど今日の本にも関連する1冊は、Kindle版が300円強お得。

B08M39G7TG
承認欲求女子図鑑 〜SNSで出会ったヤバい女子たち〜

「ヤバい女子」に話を聞いたというこちらの作品は、Kindle版が1500円以上お得な計算です!


人気blogランキングご声援ありがとうございました!

この記事のカテゴリー:「ITスキル」へ

この記事のカテゴリー:「子育て・教育」へ

「マインドマップ的読書感想文」のトップへ
Posted by smoothfoxxx at 08:00
ITスキルこのエントリーを含むはてなブックマーク

スポンサーリンク