南山の先生

学部別インデックス

理工学部・ソフトウェア工学科

吉田 敦

職名 教授
専攻分野 ソフトウェア工学
主要著書・論文 吉田敦,蜂巣吉成,「前処理指令に対する制約のない前処理前コードの構文解析手法」,情報処理学会論文誌,Vol.56,No.2,pp.593-610,Feb.2014
将来的研究分野 プログラム解析
担当の授業科目 情報倫理,ICTリテラシー,アルゴリズム研究

ソフトウェアを軟らかくする

私たちの生活を支える様々な機器においてコンピュータが使われ、何らかのソフトウェアが動いています。ソフトウェアは「ソフト」という名前が示す通り、後から修正や拡張が容易な「軟らかいモノ」です。機器を構成する物理的な部品や筐体は「ハードウェア」と呼ばれ、一度作ると形状や機能は簡単には変更できません。

では、本当にソフトウェアは「ソフト」なのでしょうか? 自動車でも携帯電話でも、その中で動いているソフトウェアのプログラム行数は数百万行から数億行もあると言われ、そのプログラムを理解して修正することは容易ではありません。たった 1箇所の間違いであっても、ソフトウェア全体が動かなくなることがあります。鉄道の自動改札システムの障害のように、単純なミスが私たちの生活に多大な影響を与えることも少なくありません。そのため、たった 1箇所の修正であっても、膨大な時間と労力をかけて作業をしなければなりません。

つまり、ソフトウェアが「ソフト」なのは、ハードウェアとの相対的な比較のうえでの話であって、実際にソフトウェアを作る立場から見れば、ソフトウェアの中身は部品の間に「依存関係」と呼ばれる糸が複雑に絡み合った、極めて固いモノなのです。その固いソフトウェアをどう軟らかくするか? が、「プログラム解析」と呼ばれる私の研究のテーマです。

プログラム解析の基本は細かく分解することです。ソフトウェアの最も重要な構成要素であるプログラムに限定して話をすると、その構成要素の基本単位は、単語や記号であり、「字句」と呼ばれます。さらに、その字句の並びに制約を与えるものが「文法」であり、文法によって構文要素と呼ばれる構成単位が与えられます。まずは、プログラムを字句や構文要素に分解し、文法による制約の糸を選別することで、プログラムを軟らかくします。

ただ、それだけでは、少し硬さが緩んだだけで、本質的な問題の解決にはなりません。語学の学習において、単語と文法を覚えても実践的な会話ができないことと同じで、構文要素群の持つ意味を考えながら、機能の固まりを見極める必要があります。ただし、「意味」を扱うことは簡単ではありません。そのため、プログラムのパターンとして意味を表現する方法などを研究しています。

また、制約の糸が解れたとしても、それは現状のプログラムの状態を理解できただけです。機能追加や改善を行うためにプログラムを変更することが、ソフトウェアを軟らかくすることの最終的な目的です。プログラムを変更するときには、切ってはいけない制約の糸もあれば、繋ぎかえなければならない制約の糸もあります。どのような順序でどう構成要素を取り出し、修正を加えていくのかを慎重に考え、実践しなければなりません。

さらに、人間は修正するときにミスを犯す可能性があります。そのミスを減らすには、プログラムの修正をプログラムとして記述することが効果的です。そのため、プログラムでプログラムを解析し修正するための仕組みを研究しています。もちろん、その仕組み自体もプログラムである以上、やはり解析や修正が必要であり、研究成果は再帰的に研究成果自身に適用できなければなりません。そのようなプログラムを書いていると、自分が何を書いているのかわからなくなることもあります。ソフトウェアを軟らかくするためには、まず自分の頭も軟らかくすることが求められます。