Kengo's blog

Technical articles about original projects, JVM, Static Analysis and TypeScript.

質問力以前の前知識

中学校で英語を学んだときは驚きの連続でした。疑問文を作るときは動詞を最初に書くとか、シャープペンシルをsharp pencilとは言わない*1とか、1人称の人称代名詞が1種類しかないとか。


中でも道案内で使う「ブロック」という概念に驚いたことを覚えています。「3ブロック直進して左に曲がる」という感じで使うのですが、地元は道が入り組んでいるので、とても「ブロック」と呼べる状態ではなかったのです。「外国はどこも区画整理がきちんとされているのかなぁ」と感心しました。
もし「ブロック」の概念を知らない人が米国などで迷ったら、道を尋ねることが少しだけ難しくなってしまうのでしょう。他にも道を尋ねるためには

  • 方向(左右前後)
  • 数字
  • 距離
  • 建物など目印の名称

など、多くの概念をあらかじめ知らなければなりません。道を尋ねるという行為は思いのほか高度です。


このように、質問には質問者と回答者の間に「共通の知識」が必要です。どちらかがこの知識を持たない場合、質問者・回答者ともに苦労をすることになるでしょう。
そしてこれはシステム開発に関しても同じことが言えます。開発を進めるに従って生じた疑問や問題点を解消するには質問や検索が有効ですが、どちらも適切な用語を選択できなければならないのです。しかもプログラミングやPCに関する用語は数が多く、一般にはあまり知られていません。個人の予想ではありますが、各用語の浸透度はおおむね次のようになるのではないでしょうか。

  • よく知られている用語
    • マウス
    • マウスポインタ(マウスカーソル)
    • キーボード
    • ディスプレイ
    • クリック
    • ダブルクリック
    • ボタン
    • ファイル
    • インターネット
    • 掲示板(BBS)
    • ウィンドウズ(Windows)
  • あまり知られていない用語
    • ドラッグ・アンド・ドロップ(D&D
    • 全角・半角
    • 拡張子
    • 関連付け
    • キャレット
    • CGI
    • サーバ
    • クライアント
    • 基本ソフトウェア(OS)
    • データベース*2
  • まず知られていない用語
    • ダイアログボックス(ダイアログ)
    • 文字コード
    • 標準入力・標準出力

中でもサーバやデータベース、文字コードなどはシステム開発に頻繁に登場する用語でしょう。これらを知らないことは問題をスムーズに解消できないことを意味します。そして結果的に開発効率の低下へとつながるでしょう。


では質問者(初級者)がよりスムーズに用語を習得するために、何ができるでしょうか?私は次の2つであると思います。

質問者自らが知識の習得を心がけること
これはさほど難しいことではありません。意識せずとも読書や日頃の会話で補完されるためです。もちろん読書量を増やして「知識との接触」を増やす努力は有効です。Codezineのようなサイトを定期的に読むこともオススメできます*3
すでに知識を持っている人が、知識の習得をしやすい環境を構築すること
企業が意識的に取り組めるのはこちらでしょう。FAQの形でまとめる・用語集を作成する・講習会を開く……など、やり方も様々です。


道に迷うことで得る発見があることも事実ですが、迷ってばかりでは遠くに行けないこともまた事実。
みんなで遠くに行こうと思うなら、基礎知識の共通化を図る必要がありそうです。

*1:mechanical pencilと言うらしいです

*2:用語は知っていても実態を知る人は少ないと思われます

*3:というか自分で実行しています