Instiq
第3章 · テクノロジ系·v1.0.0·更新 2026/7/16·読了目安 約13分

変更要約: 初版(テクノロジ系・基礎理論〜ハードウェア)

3.2アルゴリズムとプログラミング

この節の要点

処理の手順を図で表す流れ図、データの持ち方であるデータ構造配列リスト・後入れ先出しのスタック・先入れ先出しのキュー・階層構造の)、目的のデータを見つける探索アルゴリズムと順序を整える整列アルゴリズム、処理の効率を表す計算量プログラム言語マークアップ言語HTMLXML)・APIローコード開発を学びます。

プログラムは「何を、どういう順番で処理するか」という手順そのものです。この手順をアルゴリズムと呼び、図で見える化する流れ図、データの持ち方を工夫するデータ構造、目的のデータを効率よく見つける探索・並べ替える整列を組み合わせることで、コンピュータに意図通りの仕事をさせられます。

3.2.1流れ図とデータ構造

  • 流れ図(フローチャート)=処理の順序を矢印と記号(開始/終了・処理・判断の菱形など)で表した図。プログラムを書く前に手順を整理するのに使う。
  • 配列=同じ種類のデータを連続した箱に並べて格納する構造で、番号(添字)で直接アクセスできる。リスト=データ同士がつながりで結ばれた構造で、途中への挿入・削除が得意。
  • スタック=最後に入れたものを最初に取り出す構造(LIFO:Last In First Out。積み重ねた皿のイメージ)。キュー=最初に入れたものを最初に取り出す構造(FIFO:First In First Out。窓口の行列のイメージ)。木(木構造)=親子関係で階層的にデータをつなげる構造(フォルダの階層など)。

3.2.2探索・整列アルゴリズムと計算量、言語・API

  • 探索アルゴリズム=目的のデータを見つける手順。先頭から順に調べる線形探索や、範囲を半分ずつ絞り込む二分探索(対象は事前に整列済みである必要がある)などがある。整列アルゴリズム=データを昇順・降順に並べ替える手順。
  • 計算量=処理に必要な手間(時間・記憶容量)の目安。データ件数が増えたときに処理時間がどれだけ増えるかを表す指標で、同じ結果を得るアルゴリズムでも計算量が小さいほど効率が良い。二分探索は線形探索よりデータ件数が多いときに効率が良い。
  • プログラム言語=コンピュータへの指示を書くための言語(Python・Java等)。マークアップ言語=文書の構造や見た目を指定する言語。HTML=Webページの構造を記述、XML=データの意味を自由なタグで表現しデータ交換等に使う。
  • API=あるソフトウェアの機能を、別のソフトウェアから呼び出して使えるようにする窓口(Application Programming Interface)。ローコードノーコード)=プログラムのコードをほとんど(または全く)書かずに、部品を組み合わせて画面や処理を作る開発手法。専門知識が少なくても開発に参加しやすい。
試験ポイント

「スタック=LIFO・キュー=FIFO」「二分探索は整列済みデータが前提で線形探索より効率的」「計算量が小さいほど効率が良い」「HTML=構造記述・XML=データ交換」「APIは他ソフトの機能を呼び出す窓口」が最頻出です。流れ図の記号(処理・判断)の意味を問う設問も定番です。

窓口業務のシステム開発を例に、これらの要素がどうつながるかを見てみましょう。まず処理の手順を整理するために流れ図を書き、「受付番号を発行→順番を待つ→呼び出す→対応する」という一連の流れを、開始・終了の記号や条件分岐の菱形記号で表現します。この「順番を待つ」部分は、先に来た人から先に呼び出す必要があるため、データ構造としてはキュー(FIFO)が向いています。逆に、直前の操作を1つ取り消す「やり直し」機能を実装する場合は、最後に行った操作を最初に取り消す必要があるためスタック(LIFO)が使われます。受付済みの人の氏名を検索窓口番号から即座に引きたい場合は、番号(添字)で直接アクセスできる配列が向いており、途中で予約をキャンセルした人の情報を柔軟に挿入・削除したい場合はリストが扱いやすいという判断になります。1日に処理する件数が少ない小さな窓口なら、氏名を先頭から順に探す線形探索でも実用上問題ありませんが、全国規模で数百万件の顧客データから特定の1件を探す場合は、あらかじめ整列済みのデータに対して範囲を半分ずつ絞り込む二分探索を使うことで、計算量を大きく減らし応答時間を短縮できます。このシステムをWebブラウザから使えるようにする画面はHTMLで構造を組み、他社の地図サービスの機能を呼び出して店舗の場所を表示したい場合は、その地図サービスが提供するAPIを利用します。近年は、専門のプログラマーでなくても、部品を画面上で組み合わせるだけでこうした業務アプリを作れるローコードツールも普及しています。

構造出し入れの順序身近な例
スタック(LIFO)最後に入れたものを最初に出す積み重ねた皿・元に戻す操作
キュー(FIFO)最初に入れたものを最初に出す窓口の待ち行列
木構造親子の階層でたどるフォルダの階層
注意

ひっかけ: 「スタックは先に入れたものから先に取り出す」は誤りです。先入れ先出し(FIFO)はキューの特徴で、スタックは逆に後入れ先出し(LIFO)です。また「二分探索は整列されていないデータにもそのまま使える」も誤り=二分探索は対象データが事前に整列済みであることが前提で、整列されていないデータに使うと正しい結果が得られません。

アルゴリズム=データ構造・探索/整列・プログラム言語の図。
スタック=LIFO/キュー=FIFO

3.2.3この節のまとめ

  • 流れ図で手順を可視化。スタック=LIFO・キュー=FIFOは階層構造
  • 二分探索は整列済みデータが前提で線形探索より効率的。計算量は小さいほど良い
  • HTML=構造記述・XML=データ交換。APIは他ソフトの呼び出し窓口、ローコードは少ないコードで開発

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 直前に行った操作を1つずつ取り消していく「元に戻す」機能を実装したい。この用途に最も適したデータ構造はどれか。

Q2. 事前に昇順に整列された100万件のデータから、特定の1件を効率よく探し出したい。最も適した探索方法はどれか。

Q3. 自社のWebサイトに、他社の地図サービスが提供する地図表示機能を呼び出して組み込みたい。このために利用する仕組みとして最も適切なものはどれか。

理解度を確認第3章「テクノロジ系」の問題を解く