教科書一覧へ

コーディング規約と構造化

低頻約 21 分プログラム言語

概要

本ユニットでは、プログラムを「どう書くか」の作法と構造を学びます。字下げ・命名規則といった可読性を高める書き方から、プログラムを部品に分けるモジュール分割、メインルーチンとサブルーチンによる処理の組み立て方までを扱います。読みやすく保守しやすいコードの基礎であり、構造化の考え方は試験でも問われます。

用語7

字下げ

行の先頭に空白を入れ、処理のまとまりや階層を見やすく整える書き方。

字下げは、行頭にスペースやタブを入れて、条件分岐や繰り返しの中身を一段ずらして書く整形の作法です。同じ深さの処理を縦にそろえることで、どこからどこまでが一つのまとまりかが一目で分かります。 プログラムの動作そのものは変わりませんが、可読性が大きく上がり、誤りも見つけやすくなります。試験では、字下げが処理の階層構造を見やすくするための書き方であること、後述のインデンテーションと同じ意味であることを押さえておきましょう。

たとえ文章の段落で、話のまとまりごとに行頭を一文字下げて書くのと同じ。見た目で「ここは一つのかたまり」と伝わるようにする工夫です。

記憶フック字下げといえば行頭をずらして階層を見やすくする整形

インデンテーション

字下げの英語表現。行頭に空白を入れて階層を表す整形手法のこと。

インデンテーション(indentation)は「字下げ」の英語名で、まったく同じ概念を指します。プログラムの入れ子構造を、行頭の空白の量(インデント幅)で表現します。 スペース何個分で一段とするかをそろえることが大切で、これがばらつくと逆に読みにくくなります。試験では、字下げとインデンテーションが同じものを指す用語であること、可読性向上のための整形手法である点を理解しておけば十分です。

たとえ「字下げ」という和語に対する「インデンテーション」という外来語の関係。日本語と英語で呼び名が違うだけの、同じ一つの作法です。

記憶フックインデンテーションといえば字下げの英語表現で同じ意味

ネストの深さ

条件分岐や繰り返しが入れ子になっている段数(階層の深さ)。

ネストとは、if文やループの中にさらに別のif文やループが入っている入れ子の構造のことです。ネストの深さは、その入れ子が何段重なっているかを表します。字下げの段数として目に見える形で現れます。 ネストが深くなるほど処理の条件が複雑になり、読みにくく間違えやすいコードになります。そのため、深いネストは避け、浅く保つのが良いとされます。試験では、ネスト=入れ子であること、深いほど可読性が下がるという点を押さえましょう。

たとえ箱の中にさらに小さい箱、その中にまた箱…と入れ子になっている状態。段が深くなるほど中身を取り出すのが面倒になるのと同じです。

記憶フックネストの深さといえば入れ子の段数で深いほど読みにくい

命名規則

変数や関数などの名前の付け方をあらかじめ統一して定めた取り決め。

命名規則は、変数・関数・ファイルといった識別子に名前を付けるときのルールです。「単語の区切りは大文字にする」「意味の分かる英単語を使う」など、付け方をチームで統一しておきます。 名前から中身の役割が推測でき、誰が読んでも理解しやすいコードになります。整形が「見た目の作法」なのに対し、命名規則は「名前の付け方の作法」という別の観点です。試験では、命名規則が可読性・保守性を高めるための取り決めであることを理解しておきましょう。

たとえ会社で書類のファイル名を「日付_案件名_版数」と決めておくのと同じ。名前を見ただけで中身が分かり、皆が同じ流儀でそろえられます。

記憶フック命名規則といえば名前の付け方を統一する取り決め

モジュール分割

プログラムを機能ごとの部品(モジュール)に分けて構成する手法。

モジュール分割は、大きなプログラムを、機能のまとまりごとに小さな部品(モジュール)へ分けて作る考え方です。一つのモジュールは一つの役割を担い、部品同士を組み合わせて全体を構成します。 分けることで、修正範囲が局所化されて保守しやすく、部品を別の場所で再利用しやすくなります。整形・命名から一歩進んだ構造化の中心概念で、後のメインルーチン・サブルーチンの前提にもなります。試験では、モジュール分割が保守性・再利用性を高めるための分割手法であることが問われます。

たとえ料理を「下ごしらえ」「味付け」「盛り付け」と工程ごとに分担するようなもの。役割を部品に分ければ、一部を直すときも全体を作り直さずに済みます。

記憶フックモジュール分割といえば機能ごとに部品へ分ける構造化

プログラム全体

モジュールA

モジュールB

モジュールC

メインルーチン

プログラムの起点となり、全体の流れを制御する主たる処理。

メインルーチンは、プログラムが実行されたときに最初に動き出す中心の処理で、全体の流れを取りまとめます。必要に応じてサブルーチンを呼び出し、結果を受け取りながら処理を進めます。 主処理としての司令塔の役割を持ち、細かい個別処理は下位のサブルーチンに任せます。試験では、メインルーチンが処理の起点・全体制御を担うこと、そこから呼び出される従属処理がサブルーチンであるという関係を理解しておくことが重要です。

たとえ料理の段取りを指揮する「主担当のコック」。自分で全部をやらず、下ごしらえなどを担当者(サブルーチン)に頼みながら全体を進めます。

記憶フックメインルーチンといえばプログラムの起点で全体を制御する主処理

メインルーチン

サブルーチン1

サブルーチン2

サブルーチン

メインルーチンなどから呼び出される、特定処理をまとめた従属部品。

サブルーチンは、特定のまとまった処理を一つにまとめ、呼び出して使えるようにした部品です。メインルーチンや他のサブルーチンから呼ばれて実行され、終わると呼び出し元へ戻ります。関数やメソッドと呼ばれることもあります。 同じ処理を何度も書かずに済み、繰り返し使える(再利用できる)のが利点で、モジュール分割を実現する具体的な仕組みです。試験では、サブルーチンが呼び出される従属部品であること、メインルーチンとの呼ぶ・呼ばれるの関係を押さえておきましょう。

たとえ主担当のコックから「野菜を切っておいて」と頼まれる担当者。頼まれた仕事だけをこなして報告し、別の場面でも同じように呼ばれて働けます。

記憶フックサブルーチンといえば呼び出されて使う従属部品

まとめ

要点

  • 字下げ(インデンテーション)は行頭に空白を入れて処理の階層を見やすくする整形で、両者は同じ概念を指す。
  • ネストの深さは入れ子の段数を表し、深いほど可読性が下がるため浅く保つのが望ましい。
  • 命名規則は名前の付け方を統一する取り決めで、可読性・保守性を高める(整形とは別の観点)。
  • モジュール分割はプログラムを機能ごとの部品に分ける構造化手法で、保守性・再利用性を高める。
  • メインルーチンは処理の起点・全体制御を担い、そこから呼び出される従属部品がサブルーチンである。

記憶フック一覧

  • 字下げ: 字下げといえば行頭をずらして階層を見やすくする整形
  • インデンテーション: インデンテーションといえば字下げの英語表現で同じ意味
  • ネストの深さ: ネストの深さといえば入れ子の段数で深いほど読みにくい
  • 命名規則: 命名規則といえば名前の付け方を統一する取り決め
  • モジュール分割: モジュール分割といえば機能ごとに部品へ分ける構造化
  • メインルーチン: メインルーチンといえばプログラムの起点で全体を制御する主処理
  • サブルーチン: サブルーチンといえば呼び出されて使う従属部品

関連の過去問演習は今後のアップデートで追加予定です。