主任指導教員 寺田実 准教授...

28
平成29年度卒業論文 正規表現のマッチングアルゴリズムの理解 支援 情報・通信工学科 コンピュータサイエンスコース 1411188 毛利 勇摩 主任指導教員 寺田 実 准教授 提出日 2018年 1月31日

Upload: others

Post on 03-Aug-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

平成29年度卒業論文

正規表現のマッチングアルゴリズムの理解支援

情報・通信工学科コンピュータサイエンスコース

1411188毛利勇摩

主任指導教員 寺田実 准教授

提出日2018年1月31日

Page 2: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

1

概要

目的

正規表現は昔から研究されている分野ではあるが,マッチングアルゴリズムについては様々なアルゴリズム

が研究されている.その中で,正規表現のパターンを非決定性有限オートマトンに変換するアルゴリズムは他

のアルゴリズムと比べて変換しやすい.しかし,そのアルゴリズムの内部のデータ構造や処理の流れというの

は理解が難しい.そこで,直感的に理解ができるよう手助けすることを目的とする.アルゴリズムを理解する

ことで,正規表現を利用する場合やシステムに組み込む作業を効率化することができる.

方法

正規表現のパターンを入力することで,そのパターンを非決定性有限オートマトンに変換させて視覚化する

システムを実装する.そして,そのパターンに対して文字列を入力することでマッチングを行うことができ,

その際のグラフ上の通るルートをハイライトさせる機能も実装する.

結論

提案システムは正規表現のマッチングアルゴリズムの理解支援のツールとして運用するには,いくつか改善

が必要だと考えられた.改善によって理解支援をより効果的に行うことができると思われる.

Page 3: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

2

目次

第 1章 序論 6

1.1 背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3 本論文の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

第 2章 準備 8

2.1 正規文法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 正規表現の構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 正規表現マッチング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.4 有限オートマトン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.5 マッチングアルゴリズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.5.1 NFAを用いるアルゴリズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.5.2 DFAを用いるアルゴリズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

第 3章 関連研究 11

3.1 A Compact Function for Regular Expression Pattern Matching[3] . . . . . . . . . . . . . . . . . 11

3.1.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1.2 本研究との関連 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2 アルゴリズムアニメーションを用いたプログラミング教育システム [4] . . . . . . . . . . . . . 12

3.2.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2.2 本研究との関連 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3 Debuggex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3.2 本研究との関連 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

第 4章 提案システム 15

4.1 設計方針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.2 提案システム概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.3 グラフ化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.3.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.3.2 リテラル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.3.3 AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Page 4: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

目次 3

4.3.4 OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.3.5 繰り返し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.4 可視化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.4.1 NFAの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.4.2 Graphvizの利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

第 5章 実装 20

5.1 実装環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.2 実装概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.3 グラフの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.4 マッチングの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.4.1 マッチングの強調 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.4.2 マッチングの失敗原因の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

第 6章 評価実験 23

6.1 実験概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6.2 実験手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6.3 実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6.4 考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

第 7章 結論 25

7.1 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

7.2 今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

参考文献 27

Page 5: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

4

図目次

2.1 NFAグラフの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 DFAグラフの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1 例となる NFAグラフ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.2 プログラミング教育システムのアニメーション例 . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3 Debuggex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.1 提案システムの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.2 Chara頂点の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.3 Split頂点の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.4 Accept頂点の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.5 頂点集合の概要図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.6 頂点集合を2つを ANDで繋げる例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.7 頂点集合を2つを ORで繋げる例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.8 頂点集合を 0回以上繰り返させる例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.9 NFAの最適化前の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.10 NFAの最適化後の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.1 実装したシステムの画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.2 ?を追加で入力した画面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.3 マッチング失敗した例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Page 6: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

5

表目次

2.1 正規表現の代表的なメタ文字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

6.1 7段階評価の実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6.2 7段階評価の実験結果の平均 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Page 7: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

6

第 1章 序論

1.1 背景

正規表現は古くから研究されている分野であり,マッチングの効率化や視覚化といった様々な方向からも研

究されている.正規表現は文字列を柔軟かつ効率的に検索することができる方法の一つであり,様々なアプリ

ケーションやプログラミング言語に取り入れられている.例えば,LINUXの grepコマンドなどに正規表現が

使われている.そして,正規表現の構文を可視化するアプリケーションやサービスは Regexper*1や Regulex*2

など幾つか存在する.これらの可視化は正規表現のパターンをフローチャート図のように表し,インタラク

ティブにマッチングの検証を行うことができ,正規表現を理解しやすくする.しかし,マッチングアルゴリズ

ムを理解するための視覚化の研究やサービスは少ない.マッチングアルゴリズムは NFA(Non-deterministic

Finite Automaton,非決定性有限オートマトン)や DFA(Deterministic Finite Automaton,決定性有限オート

マトン)に変換することで効率的になることが知られているが,これらのアルゴリズムは正規表現の構文を理

解するよりも複雑である.

1.2 目的

正規表現の NFA変換を利用したマッチングアルゴリズムを理解したい人を対象とし,視覚化による理解支

援を提供することを目的とする.NFAを利用したマッチングアルゴリズムの理解は正規表現の利用や実装する

上で助けとなると考えられる.例えば,文字列が引き算の問題かどうか判定する正規表現のパターンを作成す

る場合に,以下のパターンを使用するとする.

. + −.+ (1.1)

判定させる文字列を「12-9」とする.すると,マッチング判定を行うと最初の「.+」が文字列「12-9」の全て

を読み込んでしまうため,余計なバックトラックが起きてしまう.しかし,以下のパターンを使用するとバッ

クトラックが起こらずに判定を行うことができる.

\d + −\d+ (1.2)

アルゴリズムを知ることで,こうした効率的なパターンの記述を可能にする.

*1 Jeff Avallone,”Regexper”, https://regexper.com/,(参照 2018-1-27)*2 Jex,”Regulex”,https://jex.im/regulex/,(参照 2018-1-27).

Page 8: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 1章 序論 7

1.3 本論文の構成

論文の構成を簡単に説明する.本章では,序論として研究の背景と目的について述べた.第 2章では,正規

表現やそれに関連する用語について述べる.第 3章では,関連研究について述べる.第 4章では,提案したシ

ステムについて述べる.第 5章では,実装したシステムについて述べる.第 6章では,評価実験について述べ

る.第 7章では,まとめと今後の課題について述べる.

Page 9: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

8

第 2章 準備

2.1 正規文法

正規文法とは,文字列変換規則の集まりで,変換前が1つの非終端記号だけが置かれ,変換後がひとつの終

端記号か,ひとつの終端記号とひとつの非終端記号の文字列,いずれかになる規則のみを持つと定義される.

例えば,{anb|n > 0

}(aが一文字以上続き,最後が bで終わる文字列)を定義する文法を考えると,非終端記号

の集合 N ={S , B},終端記号の集合Σ =

{a, b}として開始記号を S とし,以下の変換規則を定義することで,

その文法が得られる.

S → aS (2.1)S → aB (2.2)B→ b (2.3)

正規文法は全ての正規言語を記述することができ,正規表現のパターンを変換規則,マッチングを入力文字

列を変換規則によって変換することで使うことができる.

2.2 正規表現の構文

正規表現は 2種類の文字から構成されている.特殊な意味を持つ文字はメタ文字と呼ばれ,その他の文字は

リテラルと呼ばれる通常のテキスト文字である.また,メタ文字の表現力は高く,特に繰り返しを指定できる

ところが正規表現の強みである [1].正規表現の代表的なメタ文字については表 2.1に示す.

表 2.1: 正規表現の代表的なメタ文字

メタ文字表記 説明

* 直前のリテラルを 0回以上繰り返す

+ 直前のリテラルを 1回以上繰り返す

? 直前のリテラルを 0または 1回示す

| 前後のリテラルのどちらかを示す

. 全てのリテラル1文字を示す

\d 数字1文字を示す

() 括弧の中を先に計算する

これらを組み合わせることで,パターンを表現することができる.正規表現は数式が数,化学式が化学物質

Page 10: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 2章 準備 9

を表すように「文字列のパターン」で表現される.例えば以下のパターンを指定した場合,「0から 9までの数

字1文字」というパターンを表している.

0|1|2|3|4|5|6|7|8|9 (2.4)

2.3 正規表現マッチング

与えられた文字列が正規表現が表しているパターンに入っている場合,「正規表現は与えられた文字列にマッ

チする」と呼ぶ.上の例の正規表現ならば,文字列「3」や「7」にマッチするが,「10」や「A」にはマッチし

ない.また,正規表現がマッチするかどうかをチェックすることを「正規表現マッチング」と呼ぶ.

2.4 有限オートマトン

有限オートマトンは状態を変化させて行き,最終的に受理するかどうかを返す計算モデルである.そして,

状態の種類は有限であり状態間の遷移規則を持つ.これは正規表現のどんなパターンのマッチングでも有限

オートマトンとして表現することができる.

2.5 マッチングアルゴリズム

文字列の中から指定されたパターンにマッチするものを抽出するアルゴリズムは複数あり,おおまかに分け

て NFAを用いるアルゴリズムと DFAを用いるアルゴリズムがある.

2.5.1 NFAを用いるアルゴリズム

NFA は空文字遷移を含むことができ,遷移先が複数に分岐することを許容する有限オートマトンである.

これによって,NFA は正規表現の様々な構文を表現することが容易となる.正規表現のマッチングに用いる

NFAは,状態は正規表現のパターンの各リテラルやメタ文字に相当し,遷移規則の入力はマッチング対象の文

字列の先頭から1文字ずつ取り出したものになる.例として,正規表現のパターン「a(a|b)*b」を NFAとし

て表したものを図 2.1 に示す.図 2.1 において各頂点は状態を示し,2重円の頂点は受理可能な状態を示し,

点線の辺は空文字遷移を示し,実線の辺に書かれた文字はその文字の入力によって遷移することを示す.NFA

の正規表現構築された NFAに文字列を読ませて受理するかどうかを調べることで,マッチングを行うことが

できる.遷移先が分岐することがあるので,バックトラックの処理が必要となる.

このアルゴリズムの利点は,構築した際の内部状態が DFAと比べ消費するメモリが少ない点と DFAを構築

するための計算を省くことができる点である.

2.5.2 DFAを用いるアルゴリズム

DFA は空文字遷移を許容しない有限オートマトンのため,その状態において1つの入力に対して複数の遷

移先が存在することがない.そのため,DFAを構築するには NFAから空文字遷移を取り除く処理が必要とな

る.その方法として NFAの遷移状態の集合を一つの状態とみなし,部分集合構成法によって変換することが

できる.例として,正規表現のパターン「a(a|b)*b」を NFAとして表した図 2.1を DFAに変換したものを

Page 11: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 2章 準備 10

図 2.2に示す.図 2.2において各頂点は NFAの頂点番号の集合を示し,その頂点番号に「*」が付属している

ものは NFAにおいて受理可能な状態を示し,その受理状態が1つでも含まれている頂点は受理可能な状態と

なる.マッチングは遷移先が分岐することがないので,入力を順次処理することで結果を得ることができる.

このアルゴリズムの利点は,入力に対して遷移先が1つに決まるのでマッチング処理が高速となる.

図 2.1: NFAグラフの例

図 2.2: DFAグラフの例

Page 12: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

11

第 3章 関連研究

3.1 A Compact Function for Regular Expression Pattern Matching[3]

3.1.1 概要

正規表現で表されたパターンを有限オートマトンに変換させるコンパイラとインタプリタについての研究で

あり,作業スペースをあまり使用しない設計となっている.この研究では,NFAを使用しており,マッチング

アルゴリズムがバックトラックを用いた方法ではなく,独自のアルゴリズムについて解説している.アルゴリ

ズムが複雑なので例を追って解説するが,この論文中では正規表現の構文の表記が多少異なるので,表 2.1に

合わせることにし,構築される有限オートマトンをわかりやすいものにする.

正規表現のパターンを「(A|B|.*:)(0|1)*」とし,マッチング対象の文字列を「AB:1」とした例を使用す

る.パターンを NFAのグラフに変換すると図 3.1のようになる.図 3.1の破線の辺は空文字入力を,二重円の

頂点は受理可能な頂点を表す.

図 3.1: 例となる NFAグラフ

まず最初にアクティブ状態かそうでないかを保持するスタックを用意する.スタックには頂点番号が記録さ

れ,記録されている頂点はアクティブ状態となる.NFAの初期状態である頂点 0だけをスタックに追加する.

次にクロージャ操作を行う.クロージャ操作はアクティブ状態である頂点が空文字遷移を持っている場合,そ

の遷移先もアクティブ状態にする操作を順に行っていく.この操作で新しくアクティブ状態になった頂点につ

いてもクロージャ操作を行い,これ以上アクティブ状態の頂点が増えなければそこでクロージャ操作を終了す

る.この例でクロージャ操作を行うと,頂点 0が頂点 1と 9をアクティブ状態にし,頂点 1が頂点 2と 8を,

頂点 9が頂点 10と 11をアクティブ状態にする.この時点でのアクティブ状態である頂点を列挙すると以下の

Page 13: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 3章 関連研究 12

通りになる.

0, 1, 9, 2, 8, 10, 11 (3.1)

次に,文字列から1文字取り出すと「A」が来る.これをアクティブ状態である各頂点について遷移可能か

判定し,遷移可能ならばその遷移先をアクティブ状態にし,遷移不可能ならばなにもしない.判定を行った頂

点はスタックから取り除き,判定によって新しくアクティブ状態として追加された頂点は判定を行わない.こ

の例ならば,頂点 2と 10が遷移に成功するので,この時点でのアクティブ状態の頂点は 3と 9となる.そし

て,クロージャ操作を行うことでアクティブ状態の頂点を列挙すると以下の通りになる.

3, 9, 7, 4, 10, 11, 5, 6 (3.2)

次に,文字列から1文字取り出すと「B」が来るので,同様に判定すると頂点 10だけが成功する.この時点

でのアクティブ状態は頂点 9だけとなる.そして,クロージャ操作を行うことでアクティブ状態の頂点を列挙

すると以下の通りになる.

9, 10, 11 (3.3)

次に,文字列から1文字取り出すと「:」が来るので,同様に判定すると頂点 11だけが成功する.この時点

でのアクティブ状態は頂点 3だけとなる.そして,クロージャ操作を行うことでアクティブ状態の頂点を列挙

すると以下の通りになる.

3, 7, 4, 5, 6 (3.4)

最後に,文字列から1文字取り出すと「1」が来るので,同様に判定すると頂点 6だけが成功する.この時点

でのアクティブ状態は頂点 3だけとなる.そして,クロージャ操作を行うことでアクティブ状態の頂点を列挙

すると以下の通りになる.

3, 7, 4, 5, 6 (3.5)

マッチング対象文字列が空になった時に,受理可能な頂点がアクティブ状態ならばマッチングは成功する.

この例では頂点 7がアクティブ状態なのでマッチング成功となる.

3.1.2 本研究との関連

正規表現のパターンを NFAに変換するアルゴリズムを使用するという点が関連している.また,視覚化は

してないもののアルゴリズムの解説をしている.

3.2 アルゴリズムアニメーションを用いたプログラミング教育システム [4]

3.2.1 概要

プログラムを入力することによりそのアルゴリズムにアニメーションを用いて視覚化を行う.これによっ

て,そのプログラムにアニメーションを用いて理解させること,論理的エラーを発見する手助けとなること,

Page 14: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 3章 関連研究 13

特定のアルゴリズムに限定されないことを実現している.このシステムにおけるアニメーションの例を図 3.2

に示す.

図 3.2: プログラミング教育システムのアニメーション例

3.2.2 本研究との関連

アルゴリズムの理解支援として視覚化を用いたシステムを提案していることである.

3.3 Debuggex

3.3.1 概要

正規表現を可視化させるWebサービスの一つであり,入力された正規表現のパターンからその内容を示す

図を表示する.また,マッチングの検証を行うことができ,マッチングの成否だけでなく各文字がどのパター

ンと対応しているのか表示することができる.Debuggexの全体像を図 3.3に示す.入力ごとにグラフとマッ

チング結果を更新するため,正規表現のパターンの変化を直感的に理解しやすい.また,正規表現のメタ文字

の説明表があるためユーザーに配慮されている.

3.3.2 本研究との関連

正規表現のパターンをグラフ化し,マッチングテストを行うことができる.そして,マッチング失敗時にど

の文字列の位置で止まっているかを示すことができる.このWebサービスは正規表現のパターン自体の理解

を支援している.

Page 15: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 3章 関連研究 14

図 3.3: Debuggex

Page 16: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

15

第 4章 提案システム

4.1 設計方針

正規表現のマッチングアルゴリズムや内部構造を理解したい人に向けて,理解支援を行いたい.しかし,ア

ルゴリズムを理解するためには NFAのデータ構造がどのようになっているか,マッチングの際にどのような

挙動をするのかがブラックボックスとなっている.そこで,NFAのデータ構造や挙動が直感的に理解できるよ

うに NFAをグラフとして可視化し,マッチングの挙動をグラフ上でどのようなルートを辿ったかを示すこと

で理解支援になると考えられる.

4.2 提案システム概要

入力した正規表現のパターンから非決定性有限オートマトンのグラフを出力し,マッチングの検証を行うこ

とができる.プログラムの流れとしては図 4.1の通りとなる.

図 4.1: 提案システムの概要

Page 17: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 4章 提案システム 16

4.3 グラフ化

4.3.1 概要

非決定性有限オートマトンは 3種類の頂点の組み合わせで,メタ文字を表現することができる.3種類の頂

点の説明を以下に示す.

1. Chara頂点.1文字と次の遷移先を持つ頂点で,その文字と一致した入力で遷移する.図 4.2の赤線に囲

まれた頂点が Chara頂点の例となる.また,矢印の横の「n」は文字「n」によって遷移することを示す.

2. Split 頂点.2 つの遷移先を持つ頂点で,どちらも空入力で遷移する.図 4.3 の赤線に囲まれた頂点が

Split頂点の例となる.また,矢印の横の「ε」は空文字遷移であることを示す.

3. Accept頂点.遷移先を持たない頂点で,ここに遷移して来たら受理されたことを示す.図 4.4の赤線に

囲まれた頂点が Accept頂点の例となる.

図 4.2: Chara頂点の例 図 4.3: Split頂点の例 図 4.4: Accept頂点の例

また,頂点を1つ以上含めた頂点集合を新しく定義する.頂点集合は,その頂点集合の先頭を表す1つの頂

点とその頂点集合から出発し到着点が定義されていない1つ以上の辺を持つ.それぞれ,先頭と端辺と呼ぶこ

とにし,図 4.5に概要図を示す.この頂点集合を成長させたり,複数の頂点集合を繋げたりすることで,最終

的に1つのグラフとなる.

4.3.2 リテラル

正規表現のパターンを読む場合,リテラルが来たら単純に Chara頂点を1つだけ持つ頂点集合を形成する.

4.3.3 AND

正規表現のパターンにおいてリテラルが2つ連続で並んでいる場合等には,それぞれ2つのリテラルが持つ

条件を順に満たす必要がある.前後の頂点集合を1つに纏めて条件を満たすようにするには,前の頂点集合の

端辺の到着点を後ろの頂点集合の先頭にすることで満たす.その操作の概要を図 4.6に示す.前後の頂点集合

全体を1つの頂点集合とみなし,先頭を前の頂点集合の先頭,端辺を後の頂点集合の端辺とする.

Page 18: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 4章 提案システム 17

図 4.5: 頂点集合の概要図

図 4.6: 頂点集合を2つを ANDで繋げる例

4.3.4 OR

正規表現のメタ文字の1つである”|”は,これで前後に区切られたリテラルのどちらかを示すパターンとな

る.この条件を満たすように前後の頂点集合を1つにまとめるには,新しく Split頂点を作成しその頂点から

伸びる2つの辺をそれぞれの頂点集合の先頭に繋げる.その操作の概要を図 4.7 に示す.そして,追加した

Split頂点と前後の頂点集合全てを頂点集合とみなし,先頭を Split頂点,端辺を元々の前後の頂点集合の端辺

を合わせたものとする.

4.3.5 繰り返し

正規表現のメタ文字の1つである”*”は,直前のリテラルを 0回以上繰り返すパターンとなる.この条件を

満たすようにするには,新しく Split頂点を追加し,その頂点から出る辺を1本だけ対象の頂点集合の先頭に繋

げる.そして,対象の頂点集合の端辺を追加した Split頂点に繋げる.その操作の概要を図 4.8に示す.Split

頂点と対象の頂点集合を纏めて1つの頂点集合とみなし,先頭を Split頂点,端辺を Split頂点の余っているも

う1本の辺とする.

Page 19: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 4章 提案システム 18

図 4.7: 頂点集合を2つを ORで繋げる例

図 4.8: 頂点集合を 0回以上繰り返させる例

4.4 可視化

4.4.1 NFAの表示

NFAの可視化として,頂点と辺のデータを最適化させずにそのまま表示することで,内部構造がより分かり

やすくなると考えられる.例えば,正規表現のパターン「a|b|c」を NFAのグラフにすると図 4.9となる.そ

れを最適化させたグラフが図 4.10となり,こちらの方が頂点が少なくなるのですっきりする.しかし,このア

ルゴリズムでは 3 種類の頂点だけで NFA が構成されており,最適化させると図 4.10 の頂点 0 は新しい頂点

として定義し直す必要が出てくる.3種類の頂点の組み合わせだけで正規表現のパターンを表現できるという

のは,NFA のデータ構造を簡易にし理解しやすくなると考えられるため,グラフの最適化は行わないように

Page 20: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 4章 提案システム 19

する.

図 4.9: NFAの最適化前の例

図 4.10: NFAの最適化後の例

4.4.2 Graphvizの利用

Graphviz*1は dot言語と呼ばれるグラフ構造を記述する言語を使用することで,任意のグラフを任意の画像

形式で出力することができるツールである.ここでは,構築した NFAの頂点と辺の情報を dot言語に書き換

えたファイルを作成し,それを Graphvizに読み込ませることで頂点と辺の配置を任せている.これにより,頂

点や辺が被らなく描画することができ,グラフが崩れたり見にくくなることを防ぐ.

*1 ”Graphviz - Graph Visualization Software”, https://www.graphviz.org/,(参照 2018-1-27).

Page 21: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

20

第 5章 実装

5.1 実装環境

言語は Java使用し,開発環境は eclipseを使用して実装した.グラフの生成には Graphviz 2.38を利用して

いる.

5.2 実装概要

実装したシステムの全体図は図 5.1に示す.画面上部にある2つのテキストボックスに上から順に正規表現

のパターンとマッチング対象の文字列を入力する.正規表現の1文字入力または削除ごとにパターンの NFA

を構築し,グラフがインタラクティブに再描画される.左が現在のパターンのグラフで,右が1手前入力した

時のグラフである.正規表現のパターン「ab*c」と入力された図 5.1の状態から,パターンに「?」を追加で入

力した画面を図 5.2に示す.

図 5.1: 実装したシステムの画面

図 5.2: ?を追加で入力した画面

Page 22: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 5章 実装 21

5.3 グラフの表示

グラフは頂点と有向辺で構成される.有向辺に記述されている文字は,その文字の入力によって辺の指す頂

点に遷移されるという規則を示す.その文字が「ε」の場合は空文字であることを示し,その辺は点線で描画

される.青色の頂点は始点を示し,二重円の頂点は受理可能な頂点を示す.そして,赤色の頂点および辺は直

前のパターンの入力によって追加されたということを示す.つまり,右のグラフとの異なる箇所を示すという

意味にもなる.これにより,入力したパターンがどういう風にグラフを変化させるのかを把握する手助けとな

るだろう.

5.4 マッチングの表示

5.4.1 マッチングの強調

入力した正規表現のパターンを NFAに変換し,入力文字列によって NFAの状態を遷移させてマッチングを

行う.その状態遷移の際に通ってきた状態(頂点)に対応するグラフ上の頂点と辺を太線で強調させる.

5.4.2 マッチングの失敗原因の表示

マッチング失敗時はその入力で状態遷移が行けるところまでを全て強調させ,マッチング失敗原因を頂点の

下に表示する.失敗原因は2種類あり,STOPと表示されているならば現在の入力文字と状態ではこれ以上遷

移できないことを示し,OVERと表示されているならば受理状態において入力文字が残っていることを示す.

そして,左下に入力文字列の改善案を表示し,その対象箇所にあたるテキストボックスに黄色でハイライトす

る.マッチング失敗の例を図 5.3に示す.

Page 23: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 5章 実装 22

図 5.3: マッチング失敗した例

Page 24: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

23

第 6章 評価実験

6.1 実験概要

本実験では提案システムと類似サービスである Debuggexを評価する実験を行った.本学の学生8名に提案

システムと Debuggex を使用してもらい,それぞれに対して以下の3種の項目について 7 段階で評価しても

らった.

1. 正規表現を学ぶ上で優秀、適切なツールであるかどうか

2. 操作性や反応性はどうか

3. ユーザーへの配慮(グラフの図形が一見してわかりやすいかどうか等)

6.2 実験手順

関連研究である Debuggexと比較してもらうことを目的とする.評価項目は 3種類あり,それぞれ 7段階で

評価する.数字が高いほど高品質であることを示す.

1. 被験者に Debuggexを使用してもらい,その評価を行う

2. 次に提案システムを使用してもらい,その評価を行う

6.3 実験結果

得られた実験結果を表 6.1に示す.適切度は正規表現を学ぶ上で優秀、適切なツールであるかどうかを示し,

操作性は操作性や反応性はどうかを示し,ユーザーへの配慮はユーザーへの配慮(グラフの図形が一見してわ

かりやすいかどうか等)を示す.

そして,それぞれの結果を平均した値を表 6.2に示す.平均値を比べると提案システムよりも Debuggexの

方が操作性とユーザーへの配慮が高く,適切度は同じという結果が得られた.

6.4 考察

表 6.2を見ると Debuggexの方が操作性とユーザーへの配慮が上回っていることがわかる.まず操作性と反

応性に注目する.提案システムの方は入力する正規表現のパターンにもよるが Graphvizに処理を必ず投げる

ので,反応性が低下していることが挙げられる.また,操作性に関しては提案システムが1入力ごとに処理の

ために僅かに画面が止まるため快適ではないと考えられる.Debuggexの方はそういった点がないため,操作

Page 25: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

第 6章 評価実験 24

表 6.1: 7段階評価の実験結果

Debuggex 提案システム

適切度 操作性 ユーザーへの配慮 適切度 操作性 ユーザーへの配慮

6 7 6 6 3 4

4 7 6 5 4 6

4 6 4 5 6 4

4 6 6 3 3 5

5 6 4 4 6 4

4 6 4 3 3 4

4 6 6 4 5 5

4 7 6 5 5 5

表 6.2: 7段階評価の実験結果の平均

Debuggex 提案システム

適切度 操作性 ユーザーへの配慮 適切度 操作性 ユーザーへの配慮

4.375 6.375 5.25 4.375 4.375 4.625

性と反応性は高評価だと考えられる.次にユーザーへの配慮に注目する.提案システムの方は画面の説明が少

なく不親切な部分が多いが,Debuggexは正規表現のメタ文字の解説ページを用意されており,グラフも分か

りやすい図形で描画されているため,Debuggexの方がユーザーへの配慮が高いと考えられる.最後にツール

としての適切度に注目する.両者ともに同じ評価を得ている理由としてはよくわからなかった.順当に考える

と Debuggexの方が他の項目で提案システムよりも勝っているため,Debuggexの方が適切度も高くなると思

われるが,他の要素によって差がつかない程度になっていると考えられる.または,正規表現を学ぶうえでは

操作性やユーザーへの配慮は重要ではないと考えられる.これらの結果から踏まえると提案システムには改良

点がいくつも出てくる.改良点を以下に列挙する.

1. 正規表現のメタ文字の解説シート等を追加する.

2. マウスカーソルを乗せることでテキストボックスやグラフがどういう役割を持っているのか表示する.

3. NFAの構築の処理速度を向上させる.

4. マッチング失敗時の表示内容をより具体的に示す.

Page 26: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

25

第 7章 結論

7.1 まとめ

本研究で行った実験結果から,提案システムの改良点がいくつか見つかった.まず,システムの説明不足等

によるユーザーへの配慮が欠けていること.そして,操作性と反応性が Debuggexと比べて悪いこと.これら

を踏まえると,提案システムは既存の正規表現可視化サービスである Debuggexを超えるものではなかったと

いうことが判明した.

他にも実験内容が少々的外れな点も考えられる.正規表現のマッチングアルゴリズムの理解支援を目的とし

た提案システムが正規表現の理解支援を目的とした Debuggexと比較することが正しい実験ではないと考えら

れる.また,評価対象の項目が不適切あることも考えられる.「正規表現を学ぶうえで適切なツールであるか

どうか」という質問は本研究の目的と少々ずれていると考えられる.これらから,実験が不適切であると考え

ることもできる.

7.2 今後の課題

提案システムの改善点として,システムの説明不足を解消する必要があることが挙げられる.Debuggexの

ように正規表現のメタ文字解説表を載せたり,マウスカーソルを乗せることで乗せた対象がどういう役割を

持っているのか表示したりすることを実装することで,改善させられると考えられる.他の改善点として,操

作性と反応性の改善が挙げられる.入力スペースの高さを伸ばして視認しやすくしたり,パターンを入力した

際の処理速度の改善が考えられる.

実験内容が正しくない可能性については,以下の内容で再実験することで改善される可能性がある.

1. 最初にマッチングアルゴリズムの解説ページを読み,理解度の評価 (7段階)する

2. 次に,提案システムを使用しながら解説ページを読み,再評価する.

この理解度の変化が大きいほど理解支援として効果的なシステムであることが判明する.

Page 27: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

26

謝辞

本研究は,電気通信大学大学院情報理工学研究科情報・通信工学専攻の寺田研究室において,寺田実准教

授のご指導のもと行われました.

寺田実准教授には,本研究を進めるにあたり様々なご指導を頂きました.また,本論文の作成においても数々

のご指導を頂きました.ここに感謝の意を表します.

また,寺田研究室の仲間である修士課程 2年の安部文紀さん,山本愛美さん,渡邊裕貴さん,修士課程 1年

の佐々木透さん,藤本明優さん,村松啓寛さん,学部 4年の飯尾直樹さん,前田喜洋さん,三谷将大さんに

は, 研究や論文についてのたくさんのアドバイスを頂き,大変お世話になりました.寺田研究室の皆様に感謝

いたします.

Page 28: 主任指導教員 寺田実 准教授 提出日2018年1月31日sp.cei.uec.ac.jp/thesis/2017-grad-mouri-submit.pdf · 2018. 10. 9. · Finite Automaton,非決定性有限オートマトン)やDFA(Deterministic

27

参考文献

[1] FriedlE. F.Jeffrey,詳説正規表現第 3版, (高弘長尾,訳) O’REILLY,(2008).

[2] 新屋良磨,鈴木勇介,高田謙,正規表現技術入門 最新エンジン実装と理論的背景,技術評論社,(2015).

[3] Martin Richard,A Compact Function for Regular Expression Pattern Matching,Software Practice and Ex-

perience, Volume 9, Issue 7, July 1979, Pages 527-534.

[4] 大森康正,上野晴樹,「アルゴリズムアニメーションを用いたプログラミング教育システム」,情報処理学

会第 53回全国大会,(1996).