C言語学習ポータル(無料版) 学習コンテンツ プログラミング的思考 抽象化——捨てる勇気

🧭 プログラミング的思考

抽象化——捨てる勇気

無料公開版に収録・読む目安 10分

🎯 目的に必要な情報だけを残し、残りを捨てる「抽象化」の考え方を理解する

電車の路線図を思い浮かべてください。あの図には、実際の距離も、線路の曲がり具合も、川も山も描かれていません。それなのに——いや、描かれていないからこそ、乗り換えが一瞬で分かります。

これが3つ目の道具、抽象化です。一言でいえば、いまの目的に関係ない情報を捨てることです。

目的が変われば、捨てるものも変わる

同じ「東京」を表すのでも、

どれが正しい地図か、という問いは意味がありません。目的に対して適切かどうかだけが基準です。抽象化は「情報を減らす技術」ではなく、「目的に照らして残すものを選ぶ技術」なのです。

ビット全部描いた地図がいちばん役に立たない、っていうのが面白いところだね。

名前を付けることは抽象化そのもの

「野菜を切る」という言葉には、包丁の握り方も、まな板の位置も入っていません。それでも私たちは通じ合えます。名前を付けた瞬間、中身の細かさを一段隠せるからです。

プログラムでも同じことをします。

つまり良い名前を付けられる人は、抽象化ができている人です。逆に名前が決まらないときは、その部品の役割がまだ1つに定まっていないというサインでもあります。

抽象化には階段がある

もう一つ、抽象化には「高さ」があります。同じ料理でも、

どの段で話すかは、相手と目的で決まります。友達には「夕食作っといて」で通じますが、料理をしたことがない人には低い段の説明が要ります。プログラムを書くときも同じで、上の段から下の段へ降りていくように設計します。上の段だけ見れば全体の流れが分かり、必要なときだけ下を覗く。この構造ができていると、あとから読み返しても迷いません。

捨てすぎの危険

抽象化には失敗もあります。必要な情報まで捨ててしまうと、あとで困ります。

捨てる前に「この目的で、本当にこれは要らないか」と一度だけ問い直す。それが安全策です。

この道具の効き目

分解で細かくし、パターンでまとめ、抽象化で名前を付けて隠す。この3つが揃うと、大きなプログラムでも頭の中に収まるようになります。人間が一度に考えられる数はせいぜい5個か6個。だから隠すのです。抽象化は、人間の記憶力の限界に対する対策だと考えると腑に落ちます。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

変数へんすう

値を入れておくための名前付きの箱のこと。名前をつけることで中身を自由に出し入れできる、プログラムの記憶場所にあたる。変数名は自由に付けられるが、意味の分かる名前にすると読みやすいコードになる。

同じトラックのほかの項目

問題を分解する(Decomposition)大きな問題を、手が動く大きさの小問題に分ける考え方を身につける パターンを見つける(Pattern Recognition)分解した作業の中から共通点・繰り返しを見つけ出せるようになる アルゴリズム——手順を組み立てるアルゴリズムの条件を理解し、順次・分岐・反復の3つの型で手順を組み立てられる 擬似コードで書いてみる擬似コードの書き方を知り、日本語まじりで手順を表現できるようになる フローチャート入門フローチャートの基本記号を覚え、処理の流れを図で読み書きできる 日常の問題をアルゴリズム化する身近な問題を、抜けのない手順として書き下せるようになる 良い手順・悪い手順——効率の予感同じ結果でも手順によって手数が大きく変わることを、探索の例で実感する
‹ パターンを見つける(Pattern Recognition) アルゴリズム——手順を組み立てる ›

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH