仕事に効くコンピュータサイエンス
終章: CSという道具箱の持ち歩き方読了目安 10分

終章: CSという道具箱の持ち歩き方

この章は、困ったときに開く章です

12章を読み終えて、ここまでたどり着いたかもしれません。あるいは、目次からここだけ先に開いたかもしれません。どちらでも構いません。この章は、そういう使い方を想定して作ってあります。序章で触れたとおり、この本は最初から順番に読み切る前提では作っていません。

仕事の中で何かに詰まったとき、「これはどの章の話だったか」を思い出すのは、意外と手間がかかります。本を最初から読み返す時間は、たいていありません。この章では、よくある症状から、該当する章を逆引きできるようにしておきます。症状に心当たりがあれば、そのままその章のページを開いてください。

一つ注意があります。症状と章は、必ずしも一対一ではありません。一つの症状が、複数の章にまたがって起きていることもあります。たとえば「締め切りに追われる」という症状は、順番の決め方の問題であることもあれば、同じ作業を何度も繰り返している問題であることもあります。下の地図は出発点であって、答えそのものではありません。近い症状の章を開き、そこに書かれた場面が自分の状況と重なるかを確かめてください。重ならなければ、隣の章も試しに開いてみてください。症状の言葉は人によって少しずつ違いますが、根っこにある構造はいくつかの型に収まることが多いためです。

症状から章を引く

第I部 自分のOSに関わる症状

まずは、自分一人の作業の中で起きる症状です。誰かに相談する前に、自分の仕事の組み立て方を見直すと解決することがあります。他人を巻き込まずに今日から試せる、という意味でも取り組みやすい領域です。

  • 会議・メール・チャットを同時にさばこうとして、どれも中途半端になる

1章 マルチタスクの嘘 — プロセスとコンテキストスイッチ

  • 何から手をつけるべきか毎回迷い、着手そのものが遅れる

2章 どれからやるか — スケジューリング

  • 依頼してもよいはずの後回しタスクが、いつまでも手つかずのまま残る

2章 どれからやるか — スケジューリング(塩漬けタスクの救済)

  • 誰かからの返信待ちで手が止まり、何もできない時間ができてしまう

3章 待ち時間を設計する — I/Oと非同期

  • 同じ資料を毎回一から探し直している

4章 よく使うものは手元に — キャッシュとメモリ階層

  • 手元に置いていた情報が実は古く、それに気づかず使ってしまった

4章 よく使うものは手元に — キャッシュとメモリ階層(情報の陳腐化)

第II部 仕事のアルゴリズムに関わる症状

次は、一人で抱える仕事の進め方そのものに関わる症状です。人手を増やす前に、進め方の型を変えるだけで解決することがあります。新しい道具を増やす前に、まず型を疑ってみる価値がある領域です。

  • 関係者が増えるほど、調整にかかる時間が急に伸びていく

5章 頑張りはスケールしない — 計算量

  • 作業量を増やしても、締め切りへの余裕が一向に生まれない

5章 頑張りはスケールしない — 計算量

  • 急ぎの割り込み仕事と、順番待ちの仕事が同じ扱いになり、優先度がつけられない

6章 積む・並ぶ・引く — データ構造

  • 探し物のたびに、資料の山を端から確認する羽目になる

6章 積む・並ぶ・引く — データ構造(索引の欠如)

  • 大きな課題を前にして、どこから手をつければよいかわからず止まる

7章 大きい問題を小さく割る — アルゴリズム設計

  • 一度やった調査や検討を、似た案件のたびにゼロからやり直している

7章 大きい問題を小さく割る — アルゴリズム設計(部分結果の再利用)

第III部 チームのアーキテクチャに関わる症状

最後は、複数人が関わる仕事の設計に関わる症状です。特定の誰かの資質ではなく、仕事の組み立て方そのものに原因があることが多い領域です。関わる人数が増えるほど、この部で扱う考え方の出番も増えていきます。

  • 同じ説明・同じ資料作成を、相手を変えて何度も繰り返している

8章 同じ仕事を二度しない — DRYと共通化

  • 誰も使っていない報告書や手順が、惰性で作られ続けている

9章 業務の棚卸し — デッドコードと技術的負債

  • 昔の都合で決まったやり方が、今の実態に合わないまま残っている

9章 業務の棚卸し — デッドコードと技術的負債

  • 依頼のフォーマットが人によってバラバラで、毎回聞き返しが発生する

10章 会議と報告を設計する — インターフェースとプロトコル

  • 会議で合意したはずのことが、翌日には人によって解釈が違っている

10章 会議と報告を設計する — インターフェースとプロトコル

  • 特定の人が休むと、その人が担当する仕事全体が止まってしまう

11章 属人化という単一障害点 — 分散システム

  • 同じ情報の別バージョンが複数の場所にあり、どれが正しいかわからない

12章 情報は一箇所に — データベース

  • 複数人が同時に同じ資料を編集し、後から更新が消えてしまった

12章 情報は一箇所に — データベース(編集権限の設計)

心当たりのある症状が複数あれば、複数の章を行き来して構いません。各章は独立して読めるように書いてあるので、順番を気にする必要はありません。気になった章から読み、必要なくなったらそのまま閉じてください。

学び続けるための入口

本書は、CSという広い分野のうち、仕事に翻訳しやすい部分だけを選んで扱いました。扱わなかった分野もたくさんあります。たとえば、機械学習、ネットワークの詳細な仕組み、セキュリティの理論などです。選ばなかった部分のほうがはるかに広く、本書はその入り口にすぎません。もっと先に進みたくなったときのために、探し方の目安を残しておきます。

まず、大学のCS入門で使われる教科書は、体系立てて学ぶのに向いています。専門用語が最初から出てきますが、本書で一度触れた概念であれば、読み進めやすくなっているはずです。気になった章のキーワードを手がかりに、教科書の目次を確認してみてください。同じキーワードが出ている教科書であれば、本書の続きとして読み進めやすいはずです。

次に、オンラインの講座は、手を動かしながら学びたい場合に向いています。実際に手を動かす学び方は、考え方の理解を深めるのに役立ちます。コンピュータへの指示を自分で書いてみると、これまで抽象的だった概念が急に具体的に見えてくることがあります。どの講座を選ぶかより、まず1つを最後まで終える方が力になります。途中でやめて別の講座に移ることを繰り返すより、多少合わないと感じても、一通り終えるほうが身につきます。

最後に、職場の中にも学びの入口はあります。社内でシステムを扱う担当者に、「これはCSでいう何の考え方に近いか」と聞いてみることもできます。本書で得た語彙があれば、そうした会話も始めやすくなっているはずです。専門家との会話は、独学だけでは気づけない視点を補ってくれます。

特定の教材や講座の名前をここで挙げることはしません。分野の変化が速く、良し悪しの基準も学ぶ目的によって変わるためです。選ぶときは、次の2点を目安にしてください。一つは、体系立てて基礎から積み上げる形になっているかどうか。もう一つは、自分の目的(仕事に活かす、資格を取る、趣味で学ぶ)に合っているかどうかです。目的に合わない教材を無理に続けるより、目的に合った教材に早めに乗り換えるほうが、結果的に遠回りになりません。

地図を使うときに気をつけたいこと

逆引き地図は便利ですが、使い方を一つ間違えると害にもなります。症状を見つけた瞬間に、章の内容をそのまま職場に当てはめようとすることです

各章の落とし穴の節でも触れているとおり、CSの工夫にはそれぞれ効く条件があります。たとえば「共通化」は便利な考え方ですが、性質の異なる業務を無理やり一つの手順にまとめると、かえって全員にとって使いにくい仕組みができあがります(8章)。「冗長化」も同様に、何でも二重に用意すればよいわけではありません。コストと、止まったときの影響の大きさを見比べる必要があります(11章)。

地図はあくまで出発点です。該当しそうな章を開いたら、まずその章の場面が自分の状況と本当に重なるかを確かめ、落とし穴の節にも目を通してから、職場への適用を考えてください。急いで結論に飛びつくより、遠回りに見えて確実です。

この本の先にあるもの

本書で扱った12章は、CSの中でもとりわけ「資源配分」に関わる部分です。限られた時間、限られた人手、限られた情報を、どう配分し、どう整理し、どう引き継ぐか。これは、コンピュータの中でも、職場の中でも、同じ形をした問題です。

コンピュータの世界でこの問題が扱われ続けてきたのは、利用者が増え、扱うデータが増え、関わる部品が増えるたびに、同じ種類の行き詰まりが形を変えて何度も現れてきたからです。職場でも、人が増え、扱う情報が増え、関わる部署が増えるたびに、似た行き詰まりが形を変えて現れます。本書で見てきた12の考え方は、その行き詰まりに何度でも使える道具です。

翻訳は、ここで終わりではありません。新しい種類の困りごとに出会うたびに、「これはコンピュータで言うと何の問題に近いか」と考える習慣そのものが、本書が持ち帰ってほしかった道具です。道具箱の中身は、この先いくらでも増やせます。ですが、使い方の型はもう手元にあります

持ち帰り

  • 症状に心当たりがあれば、対応する章に戻って読み直してよい。地図は出発点であり、答えそのものではない
  • 本書はCSの入り口の一部にすぎず、体系的な教科書や講座、職場の専門家との会話が次の一歩になる
  • 「これはコンピュータで言うと何の問題に近いか」と考える習慣が、本書の核心である

やってみる

この本を閉じたあと、今週一番手を焼いている仕事を1つ思い浮かべてください。上の逆引き地図から近い症状を選び、対応する章をもう一度開いてみましょう。その場で解決しなくても構いません。次に似た場面に出会ったとき、同じ章をもう一度開き直すだけでも、その考え方は少しずつ、確実に手になじんでいきます。