アルゴリズムとデータ構造をExcel VBAで学ぶ

アルゴリズムとデータ構造をExcel VBAで学ぶ

プログラミング能力向上の基盤となる知識をExcel VBA で学ぶことができる。

ジャンル
発行予定日
2025/08/下旬
判型
B5
予定ページ数
176ページ
ISBN
978-4-339-02952-9
アルゴリズムとデータ構造をExcel VBAで学ぶ
近刊出来次第出荷
発行出来次第どこよりも早くお届けいたします。予約受付中。

定価

3,300(本体3,000円+税)

カートに入れる

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • 著者紹介

【読者対象】
・プログラムを「書く力」,「読む力」を身につけたい初心者や経験者の方
・実務等でExcel VBAを使ってプログラムの開発・保守に携わっている方
・数理・データサイエンス・AIの分野に関心がある方

【書籍の特徴】 
・プログラミングの基礎力をつけるために必要な予備知識として必要とされる,ハードウェアの構成や基本動作,数値・文字・画像などのデータの表現形式,ソフトウェアの開発過程などの内容から学び始めることができる.
・実社会の業務のなかで利用される場面の多い Excel VBA を使って,プログラムを書く力・読む力の基礎となる「アルゴリズムとデータ構造」が学べる.
・「アルゴリズムとデータ構造」を理解する上で大切なことは,アルゴリズムによってデータ構造が更新されていく様子のイメージ化である.そこで,本書では,特定のアルゴリズム(リスト,木構造など)については,データ構造が更新されている様子を目視できるように, Excelのワークシートをメモリ(記憶装置)に見立て,データ構造をワークシート上に実装した.また,Excel VBAの開発環境である VBEのデバッグ機能を使ったメモリの参照方法についても詳しく述べた.
・数理・データサイエンス・AIの教育プログラムに関する文部科学省の認定制度であるMDASの応用基礎レベルの中の「アルゴリズム,データ表現,プログラミング基礎,ビッグデータとデータエンジニアリング,AIと社会」に対応する学習内容を本書では取り上げている.

【書籍の構成】
全14章は次の4つに分類される.また,読者に応じて3つの入口を想定している.
第1〜2章:プログラミングの予備知識←[プログラミング初心者]
第3〜6章:VBAの概要・開発環境・データ型←[プログラミング経験者(VBA以外)]
第7〜12章:アルゴリズムとデータ構造←[VBA経験者]
第13〜14章:データサイエンスとAI
VBA経験者でも,開発環境 VBE のデバッグ機能に詳しくなければ第3章も読んで欲しい.

【著者からのメッセージ】
今では,生成AIを使ってプログラムを作ることができる.このような時代に,自分でプログラムを作る(書く)ための学習をする理由は何だろうか.本書は,筆者らが大学で実践してきたプログラミング関連科目の講義内容をもとにしている.講義のなかでは,自ら作ったプログラムが初めて動いたとき「やったあ」と声を出したり,「やっとできました」と笑みを浮かべて報告してくれたりする学生がいる.生成AIに作らせたプログラムではなく,自分で書いたプログラムだからこその反応であろう.本書が,「やったあ」と声を出したくなるような感動を読者に与えられれば幸いである.

【キーワード】
アルゴリズム,データ構造,フローチャート,整列,探索,計算量,リスト操作,木探察,データ表現,プログラミング基礎,関係データベース,データサイエンス,ビッグデータ,生成AI

☆発行前情報のため,一部変更となる場合がございます

ディジタル時代に必要な素養として情報教育が重要視され,そのための基礎的一分野として,数理・データサイエンス・AIに関連した教育が活発化されている。なかでも「プログラミング」は小中高でプログラミング教育が導入されていることもあり,文系・理系を問わず大学の情報関連科目でも取りあげられている。プログラミング学習用の書籍も多く存在しているが,CやC++など,一般的な企業の日常業務ではあまり利用されていないシステム開発用のプログラミング言語によるものがほとんどである。

そこで,本書では,日常的な業務での活用につなげられるよう,企業や学校,官公庁などの業務で広く利用されている表計算ソフトの一種であるExcel(およびそのプログラミング言語VBA)を用いてプログラミングの基礎を学べる内容とした。プログラミングの学習は難しいと思っている読者も多いだろう。その要因の一つとして,プログラムが実行されている様子が目に見えないことがあげられる。もし,プログラムを実行したときにデータがどのように処理されていくのか,多少なりとも目視できれば,学習の助けとなろう。さらに,プログラムがデータを処理していく様子を頭のなかでイメージ化できるようになれば,正しいプログラム(望みの結果を出力できるプログラム)を作成する力の向上につなげられるだろう。

そこで,本書では,表計算ソフトのワークシートを記憶装置(メモリ)と見立て,プログラムの実行中にメモリが更新される様子を,ワークシートの内容が更新されることに対応させた説明やプログラム例を導入した。加えて,本書はつぎの特徴をもつ。


本書の特徴
・プログラミングを学ぶうえで,必要とされるハードウェアやソフトウェアの基礎知識か
ら,プログラミング能力向上のための基盤となる「アルゴリズムとデータ構造」を体系的
に学べる内容とした。これらは,文部科学省「数理・データサイエンス・AI教育プログラム
認定制度(MDASH)」のカリキュラムの一部(応用基礎レベルとリテラシーレベルのプ
ログラミング基礎関連項目など)に該当する。

・データサイエンスやAIの日常業務への展開を見据えて,データサイエンスとAIについて表計算ソフトを使ったプログラム例も交えながら説明した。

・プログラミングの初学者を想定しつつ,限られた機能だけを使ったプログラム作りから
始め,徐々に多くの機能を使ったプログラム作りへと発展していく内容とした。その過
程において,説明内容の理解を深めるための例を提示するとともに,理解度を確かめるた
めの章末問題を掲載した。なお,その解答例は本書のサポートページに掲載している。

・表計算ソフトは,Microsoft365(Windows版)とし,開発環境VBEのもとで,プログ
ラミング言語VBAを使ったプログラムの編集・実行・デバッグの方法について述べた。
特に,デバッグのための機能については,プログラムが実行されている様子を目で確かめ
るために有効であることから,本書の前半(第3章)で取りあげた。

なお,macOS版Microsoft365を利用する読者のために,本書のサポートページにおける付録にて,Windows版との違いについて説明した。

本書の第1章~第12章(担当 猪股)は,岩手県立大学全学共通科目『データサイエンス応用I』と岩手県立大学盛岡短期大学部生活科学科『情報処理演習』のために作成した講義資料を原案とし,これまでの講義実践をもとに書き直すとともに,新たに第13章と第14章(担当 呉)を加筆した。なお,『データサイエンス応用I』は岩手県立大学の「文理融合データサイエンス教育プログラム」の応用基礎レベル(令和6年度MDASH認定)対応科目の一つであり,『情報処理演習』は盛岡短期大学部の「文理融合データサイエンス教育プログラム」リテラシーレベル(令和5年度MDASH認定)対応科目の一つである。

末筆ながら本書の作成にあたっては,『データサイエンス応用I』や『情報処理演習』の受講生をはじめ,ご協力をいただいた方々に感謝する。特に,岩手県立大学ソフトウェア情報学部4年生の平彩斗氏,鷹觜陸氏,橋端瞭氏には,本書の内容を学生の目線で確認していただいた。さらに,出版にあたっては株式会社コロナ社の皆さまにご尽力いただいた。皆さま方にこの場をかりてお礼申し上げる。

2025年8月
猪股俊光
呉 書雅

☆発行前情報のため,一部変更となる場合がございます

1. コンピュータの世界
1.1 コンピュータはことばで動く
1.2 コンピュータの動き
 1.2.1 コンピュータの中身
 1.2.2 プログラムの実行とメモリ
 1.2.3 CPUの命令の種類
 1.2.4 命令実行サイクル
1.3 ディジタルの世界
 1.3.1 2進法によるディジタル化
 1.3.2 数のディジタル化
 1.3.3 文字のディジタル化
 1.3.4 画像のディジタル化
 1.3.5 音のディジタル化
章末問題

2. プログラムの世界
2.1 ソフトウェアの役割
2.2 アルゴリズムとプログラム
2.3 プログラムの変数とメモリ
2.4 プログラムの開発過程
2.5 オブジェクト指向プログラミング
 2.5.1 VBAとオブジェクト指向
 2.5.2 プログラムのなかのオブジェクト
章末問題

3. VBAと開発環境
3.1 表計算ソフトとマクロ
3.2 VBAの開発環境VBE
 3.2.1 Excelの構成要素
 3.2.2 プログラムの開発環境VBE
 3.2.3 プログラムの開発過程
3.3 プログラムの編集
3.4 ファイルの保存・読み込み
 3.4.1 ファイルの保存
 3.4.2 ファイルの読み込み
3.5 プログラムの実行
 3.5.1 VBEのもとでの実行
 3.5.2 ワークシートのもとでの実行
3.6 VBEによるデバッグ
 3.6.1 デバッグの概要
 3.6.2 実行時エラーのときのデバッグ
 3.6.3 計算間違いのときのデバッグ
3.7 デバッグをするときのポイント
章末問題

4. ワークシートの基本操作
4.1 Excelのオブジェクト
4.2 オブジェクトのプロパティの利用
 4.2.1 プロパティの形式
 4.2.2 セルへの入力
 4.2.3 オブジェクトの省略
 4.2.4 複数のワークシートのセルの計算
4.3 オブジェクトのメソッドの利用
 4.3.1 メソッド
 4.3.2 マクロの記録
4.4 VBAの組込み関数
 4.4.1 関数
 4.4.2 数値関数
 4.4.3 文字列関数
 4.4.4 Excelの関数の利用
4.5 イミディエイトウィンドウの使い方
 4.5.1 プログラムの実行中の利用
 4.5.2 対話形式での利用
章末問題

5. プログラムの構造とデータ型
5.1 VBAのプログラムの構造
5.2 データ型
 5.2.1 データ型の値の範囲
 5.2.2 配列
5.3 変数の宣言と利用
 5.3.1 宣言された変数
 5.3.2 宣言なしの変数(Variant型)
 5.3.3 変数の明示的宣言:Option Explicit
5.4 データ型と計算
 5.4.1 Integer型やDouble型の計算
 5.4.2 Boolean型の計算
 5.4.3 String型の計算
 5.4.4 データ型と演算や代入
5.5 関数の定義と呼び出し
 5.5.1 ユーザ定義の関数
 5.5.2 関数呼び出しの実引数
章末問題

6. プログラムの実行制御
6.1 実行制御の種類
 6.1.1 逐次処理
 6.1.2 実行制御の種類
6.2 流れ図
 6.2.1 流れ図のブロック
 6.2.2 流れ図と実行制御
6.3 条件分岐
 6.3.1 If文
 6.3.2 Select文
6.4 繰り返し処理
 6.4.1 For文
 6.4.2 While文
 6.4.3 繰り返しの強制終了
6.5 関数呼び出しによる繰り返し処理
 6.5.1 プログラムの強制終了
6.6 プログラムのなかのプロシージャと変数
 6.6.1 プロシージャの集まりとしてのプログラム
 6.6.2 引数をもつプロシージャの定義と利用
 6.6.3 大域変数と局所変数
章末問題

7. アルゴリズムと計算量
7.1 アルゴリズムの評価
7.2 アルゴリズムの複雑さ
 7.2.1 計算量
 7.2.2 最悪計算量と平均計算量
 7.2.3 オーダ記法O
7.3 計算量の改善策
 7.3.1 総和計算の時間計算量
 7.3.2 べき乗計算の時間計算量
 7.3.3 再帰関数の領域計算量
 7.3.4 末尾再帰呼び出しによる領域計算量の改善
章末問題

8. 探索のアルゴリズム
8.1 探索の概要
 8.1.1 探索の成功と失敗
 8.1.2 VBAでの実装法
8.2 線形探索
8.3 2分探索
8.4 探索プログラムの実行
8.5 ハッシュ法による探索
 8.5.1 概要
 8.5.2 開アドレス法
 8.5.3 連鎖法
章末問題

9. 整列のアルゴリズム
9.1 整列の概要
 9.1.1 順序関係による並び替え
 9.1.2 実装上のテクニック
9.2 バブルソート
 9.2.1 基本的なアイディア
 9.2.2 バブルソートのプログラム
9.3 クイックソート
 9.3.1 基本的なアイディア
 9.3.2 クイックソートのプログラム
9.4 特色のある整列法
 9.4.1 バケットソート:O(n)
 9.4.2 マージソート:大規模データ
章末問題

10. リスト構造とアルゴリズム
10.1 データ構造の必要性
 10.1.1 これまでのデータ処理の課題
 10.1.2 ワークシートを使ったデータ構造の実現
10.2 リスト構造
 10.2.1 リストと操作
 10.2.2 リストのためのデータ構造
 10.2.3 ワークシート上での実装法
10.3 スタック
 10.3.1 データの追加:push
 10.3.2 データの削除:pop
10.4 キュー
 10.4.1 データの追加:enqueue
 10.4.2 データの削除:dequeue
10.5 リスト構造のもとでの探索と整列
 10.5.1 リスト構造のもとでの探索
 10.5.2 リスト構造のもとでの整列
章末問題

11. 木構造とアルゴリズム
11.1 2分木とデータ構造
 11.1.1 2分木の概要
 11.1.2 2分木の実装法
11.2 2分木の操作と整列
 11.2.1 データ追加の方法
 11.2.2 データ追加のプログラム
 11.2.3 データ削除の方法
 11.2.4 2分木の整列と探索
11.3 木の探索
 11.3.1 探索の方法
 11.3.2 迷路の探索の実装法
 11.3.3 深さ優先探索
 11.3.4 幅優先探索
章末問題

12. ファイルとデータベース
12.1 ファイル操作の準備
 12.1.1 ファイルの構造
 12.1.2 CSVファイル
12.2 ファイルの基本操作
 12.2.1 ファイルのパス
 12.2.2 ファイルの基本操作
 12.2.3 CSVファイルの読み込み
 12.2.4 CSVファイルへの書き込み
12.3 ワークシートの操作
 12.3.1 レコードの整列
 12.3.2 ワークシートへの分配
 12.3.3 データの分析
12.4 関係データベース
 12.4.1 関係データベースの演算
 12.4.2 レコードの射影
 12.4.3 レコードの選択
 12.4.4 シートの結合
章末問題

13. データサイエンスの世界
13.1 データサイエンス
13.2 ビッグデータ
 13.2.1 ビッグデータの定義と特徴
 13.2.2 データの構造
13.3 ビッグデータの収集と蓄積
 13.3.1 データ収集の方法
 13.3.2 データ蓄積の方法
13.4 クラウドサービスとその役割
 13.4.1 クラウドの基本概念
 13.4.2 ビッグデータ処理における利点
13.5 ビッグデータの活用事例
13.6 オープンデータ
13.7 表計算ソフトとデータサイエンス
章末問題

14. AIの世界
14.1 AIとプログラミング
 14.1.1 AIの歴史の概略
 14.1.2 旅行先案内システム
 14.1.3 コンピュータとの対話システム
14.2 AI活用の留意事項
14.3 生成AI
 14.3.1 生成AIの基盤モデル
 14.3.2 生成AIの応用分野
 14.3.3 プロンプトエンジニアリング
章末問題

引用・参考文献
索引


猪股 俊光

猪股 俊光(イノマタ トシミツ)

大学でコンピュータ科学や数学に関する科目を担当しつつ、高性能なソフトウェアを開発するための設計法・実装法について研究をしています。学生時代に工学を学ぶための基礎トレーニングを受けたこと、「書く」ためのトレーニングを積んだことが、講義や研究で活かされています。科学技術の発展はめざましく、先端技術といえども時間とともに陳腐化していきます。先端技術ばかりを追いかけ続けることなく、科学技術の基礎を学ぶことこそ、社会の発展につながるものとの思いから、その一助となるべくコンピュータ科学や数学に関する専門書を書いています。

呉 書雅(ウ シュウヤ)

専門は高等教育論、教育経済学、政策科学です。特に、教育政策の効果を統計的因果推論の手法を用いて検証する実証研究に取り組んでおります。これまでに、奨学金政策の効果検証、高等教育の機会均等、データサイエンス教育に関心があります。勤務校の岩手県立大学では、情報リテラシーやプログラミングなど、データサイエンスの基礎教育に関する授業を担当しており、全学的なデータサイエンス・AI教育プログラムの運営や推進にも携わっています。こうした研究経験・教育経験をベースに、現代社会においてデータサイエンスを学ぶ意義を実感できるような教科書を目指してこの本の執筆に取り組みました。特に、大学生を含む若い皆様には、AIの意義や限界、今後の展望をきちんと理解し、「AIに振り回される」のではなく「AIを使いこなす」姿勢を身につけてほしいというメッセージも本書に込めています。

関連資料(一般)

関連資料ダウンロードはこちら