分12「いろいろ学んだけど浅い気がする」という不安の声をよく聞きます。観察していると,この悩みには2通りのタイプがあります。「⁠深い理解」軸の知識が足りていないタイプと,「⁠抽象化」フェーズのやり方に慣れていないタイプです。「深い理解」方向の知識が足りない一つは,ある程度経験を積んだプログラマによく見られるものです。いろいろなことを学んで,それを応用して成果も出している,なのになんだか不安,というものです。このタイプの人は,自分の中では抽象化を行ってモデルを作ることができているのですが,その理解に名前が付いていません。そのため,自分で気付けなかったり,他人に説明できなかったりします。そのモデルが世間でどう呼ばれているのかを知らないため,本当は理解できているのにそのモデルについての会話についていくことができず,「⁠自分は理解できていない」と感じてしまいます。この症状は「深い理解」軸の語彙(ごい)が足りていないことが原因です。意識して「深い理解」軸の知識収集を行うことが必要です。知らずに使ってた!」とか,「⁠あー,なんか言語によって違いがあるなーと思ってたけど,『⁠静的型付け』と『動的型付け』の違いだったのか!」というように理解が整理されます。「抽象化のフェーズ」に慣れていないもう一つは,「⁠抽象化のフェーズ」に慣れていないタイプです。抽象化のフェーズでは,自分でモデルを生み出さなければいけません。「正解のモデルが本に書いてあって,それを見つけて読めばよい」と勘違いをして,片っ端から本を読んだりと「情報収集のフェーズ」ばかりを行ってしまいます。情報収集にはゴールがないので,いくら情報収集を繰り返しても不安が解消されません。不安を解消し,自信を持つには,学んだことを成果につなげる必要があります。「⁠情報収集」だけでは成果は出せません。得た知識を自分の中で「抽象化」してモデルにし,自分の問題に応用して,はじめて成果が出ます。抽象化が必要?なぜ抽象化が必要なのでしょうか。高校数学の問題を解くときのことを考えてみましょう。ある問題Q1を読んで,あなたは解き方がわからなかったとします。しかたがないので解答A1を読み,理解できて,Q1は解けるようになったとしましょう。解けないかもしれません。似た問題をいくつも解いているうちに,この種の問題の「解き方」をあなたは体得します。すると,類似の問題Q3がテストに出たときに,あなたは正解できるわけです。このたとえ話で,A1を丸暗記していても,Q3を解けるとは限りません。A1は「抽象化されていない具体的な知識」だからです。「解き方」を理解したあなたは,Q3を解くことができます。「⁠解き方」は,より一般的な対象に応用できる知識だからです。抽象化によって応用範囲が広がります。抽象化は一般化・汎用化なのです。高校までの数学では,「⁠一般的な知識」を「具体的な問題」に応用して「具体的な答え」を出すことが多く,その「一般的な知識」をどうやって作るかについてはあまり時間が割かれていないように思います。抽象化・一般化は帰納によって行われます。数学的帰納法では,n=1のときに命題Xが成立することを示し,n=2のときにもXが成立することを示し......と任意の自然数で成り立つことを示すことで,「⁠任意の自然数kについてXが成り立つ」という一般的な知識を導きます(図1・注1⁠)⁠。注1)無限にある自然数一つ一つの証明文を書く代わりに,「⁠n=k-1のときに成り立つならn=kのときにも成り立つ」を示すことで,無限回のステップを1回に圧縮してしまうテクニックが使われますが,ここでの本題ではありません。間違えてでも抽象化するメリットみなさんは,普段の生活ではここまで厳密な証明をしていないことでしょう。かわりに,2~3個の事例を見てそこから帰納をしています。Q1とQ2の解き方から「この手の問題はこうすれば解ける」と考えたり,ハトやスズメやツバメが飛ぶことから「鳥は飛ぶものだ」と考えたりします。やって作られる抽象的な知識は,間違っていることもあります。鳥類でもペンギンは飛ばないですね。間違えてでも抽象化は必要です。抽象化をしないと,ウグイスを見たときに「ウグイスが飛ぶかどうかはわからない」と考えることになります。論理的には正しくても,実用的にはどうでしょうか。間違えることのコストが低い場合には,間違えるリスクよりも抽象化によって得られるメリットのほうが大きいでしょう(注2⁠)⁠。第1章では,Windowsにもlsがあるという間違いの例を見ました。学びのきっかけになったのではないでしょうか?(注3)注2)ケーブルを直列でつなぐ場合は1つでも壊れていると全滅なので,間違わないことを強く求められます。並列でつなぐ場合には1つでも動いていればよいので,質が低くてもたくさんあることが重視されます。数学的なきっちり詰めていく考え方と,ブレスト的な数を求める考え方があるのは,求められることに違いがあるからです。間違いに対するリスク許容度で適切なバランスが変わります。注3)この話をもっと詳しく知りたい人は,次の書籍を参照してください。仮説』岩波書店,1959年どうやって抽象化するか抽象化の確率を高めるツール抽象化はどうすればできるのでしょうか。これは難しい問題です。正直なところ,「⁠確実に抽象化を行う方法」はまだ知られていません。「⁠情報を集めて,それからヒラメキを待つ」といった運頼みの方法しかありません。同じ運頼みでも,確率が高まるとされる方法は,KJ法(注4⁠)⁠,思考関連図(注5⁠)⁠,グラウンデッド・セオリー(注6)などいくつか考案されています。これらの方法の共通点を簡単にまとめると次の3点になります。情報をたくさん収集する情報を一覧できるようにする関連のありそうなものを見つけて集め,ボトムアップで構造を作る何がモデルを作るために有益な情報であるかは,モデルを得る前に知ることはできません。そこで,まず関係あるかもしれない情報をたくさん収集します。これが最初の一歩です。人間が頭で考える場合,同時に検討できることはあまり多くありません。ふせんに書き出して机の上に並べれば,100個ぐらいは同時に扱うことができます。机という「仮想記憶」を使うことで,人間の認知能力を底上げするわけです。100枚のふせんを整理する際に,ボトムアップで構造を作ることはなぜ大事なのでしょうか。トップダウンで分類してしまう間違いがよくあるのですが,それは「すでに脳内にあるモデル」に合わせてふせんを並べているだけです。この作業の目的は「モデルを作ること」つまり「未知の構造を発見すること」です。ボトムアップでまとめていく過程で,予期しない構造を発見することが目的なのです。トップダウンで分類するとこのチャンスを失ってしまいます(注7⁠)⁠。筆者は2013年に『コーディングを支える技術』(⁠注8)という本を書いたのですが,このときにKJ法がとても役に立ちました。1,000枚以上のふせんを作り,それをボトムアップで構造化し,その結果としてこの本があるわけです。今回,KJ法について詳しく解説するには誌面が足りません。2013年夏に筆者が「京都大学サマーデザインスクール」で行った講義資料が公開されていますので,そちらを参考にしてください(注9⁠)⁠。Straussにより考案されました。次の書籍に詳しく書かれています。注7)第2章で学んだことを別の言葉で表現すると「既存の構造は大まかにトップダウンで読むと効率が良い」となります。トップダウンとボトムアップの使い分けが重要です。著者プロフィール西尾泰和(にしおひろかず)サイボウズ・ラボのエンジニア。個人やチームの生産性をどうすれば高めることができるかを研究し,未来のグループウェアの研究開発をしている。プログラミング言語の多様性と進化にも強い関心があり,2013年に出版した『コーディングを支える技術』はベストセラー,重版を経て,韓国語版が出版された。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。