ソフトウェア工学研究の日々

ソフトウェア工学の学術研究を紹介しています。ソフトウェア開発に関する調査と実験が大好きです。

論文の第1章の書き方

論文の第1章を書くのは難しい、そもそも何から書いていいか分からない、という話をよく聞きます。私はここ最近、学生の国際会議(ワークショップ)投稿を連続で指導する機会があり、だいぶ言語化できたところがあるので、簡単にまとめてみることにしました。ここに書く話は、ソフトウェア工学の論文で、何か新しい手法を提案するタイプの論文を念頭に置いたものです。調査研究型の論文には、それにふさわしい別の型があると思いますので、ご注意ください。

 論文の序章の役割は、一言で言うと「なぜその研究をしたのか」を理解してもらうことにあります。タイトルを見て、そのキーワードに心を惹かれたが、研究内容はまったく知らない読者に対して、取り組んだ研究の重要性や特徴を伝えることを目指します。その目的を果たすために、具体的な文章として何を書くべきか。私が基本構成として挙げるのは、以下の4点です。

  1. 研究の対象。ソフトウェア開発のどのような工程、活動を研究対象とするのか。
  2. 研究が解決する課題。その工程において、どのような問題があり、それを解決することはなぜ重要か。
  3. 既存研究の限界。その課題を解決するためには、既知の技術を単に適用するだけでは足りず、研究が必要であること。
  4. 研究の新規性。この研究ではどのような方法で問題を解決するのか。既存研究ではできなかった課題を、なぜこの研究成果だと解決できるのか。

 まず最初に、研究対象としたいソフトウェア開発の工程や活動の紹介から話を始めます。論文を読み始めた時点では、読者は研究についてタイトル以外の何も知りません。そこで、この研究が何に興味を持っているのかを説明します。たとえば、私たちの研究室で VISSOFT 2022 で発表した NIER Track 論文の書き出しは、日本語に直すと以下のような一文から始まっています。

オープンソースソフトウェアのリポジトリは、よくフォークされている。

これだけでは読者は間違いなく「本当?」「なぜ?」「どれぐらい?」などの疑問を持つので、後ろに具体的な証拠などの引用を伴う文章を書き足して、「フォーク」が研究対象であることを紹介して、1段落目を終わります。ここでは、ソフトウェア工学の国際会議の論文を読む人なら、オープンソースソフトウェア、リポジトリという概念は既知であることを仮定しています。

 2つめの段落として、研究対象とした工程や活動に潜んだ研究課題を提示します。先の例文の場合、フォークという活動の何が問題なのかを続ける必要があります。

フォークは新機能の導入やバグ修正に便利だが、有益な変更の情報が分散してしまう。

これだけだと、それがどれぐらい重要な問題なのかが伝わりません。なので、参考文献を引用しながら状況や事例を紹介します。以下は事例紹介の一例です。

たとえば、フォークリポジトリ間で共有されるバグ修正が、本家のリポジトリには入っていないという事例が報告されている[Stănciulescu, ICSME2015]。

ここまでで、読者が課題に納得したとします。しかし、技術情報に明るい読者であれば、「この問題は○○という既存の手法(ツール)が対応しているのでは?」と疑問を抱くことがあります。そこで3段落目では、既存研究の限界、つまり、この問題は解決されていないことを説明します。なるべく最先端の論文や、実際に利用可能な最新ツール群を持ち出して、「○○という手法で××まではできるが、この問題を解決してはいない」と述べます。以下、そのような文章の一例です(実際の論文では、ここからさらに複数の関連技術を引用して、1段落分説明を続けています)。

フォークを可視化する技術は存在するが、フォーク集合の中でソースコードの変更を比較することは難しい。たとえば、GitHub Network Graph は、GitHub上のフォーク群をすべて可視化しようとするため、多数のフォークに対しては機能しない[Zhou et al., ICSE2018]。

 4段落目で言うことは、未解決の問題を本研究では解決する、ということです。ただし、言うのは単純ですが、今まで解決されていなかった問題を、なぜ本研究では解決できるのか、理由が分からないと説得力がありません。そのため、この研究で提案する手法の特徴と、導入する工夫点を合わせて述べます。

本研究では、フォークリポジトリでの開発活動の概要を可視化する手法を提案し、有用なフォークを選べるようにする。自動的に少数のフォークを選択するため、本研究では各フォークに固有のコミットの数を使用する。バグ修正などを行ったフォークは、他のフォークには含まれない固有のコミットを含んでいる可能性が高いためである。

 導入した工夫、これがいわゆる「新規性」で、何がこれまでの研究と違うのかを明示的に述べることで、研究の位置づけが完了します。提案手法の核となるアイディア(上記の例では「固有のコミット」)を示したことで、あとは、そのアイディアが具体的にどのように使われるかを提案手法の説明の章で、その効果を評価実験等の章で、それぞれ読者に確認してもらえばよいことになります。

 5段落目以降に、提案手法がツールの形で提供されることや、評価実験の方法などを述べると、それがきちんと実現されていることまで確認できるので読みやすくはなります。一方で、これらは研究を行った理由ではないので、短い論文では割愛しても特に影響ありません。

 4段落目までの1章の内容は、論文として書こうとしている研究が始まるまでに行われている既存研究の話が占めています。提案手法の詳細を詰めていくのと並行して、これまでの論文をよく調査し、自分の研究と類似した問題を扱っている論文の研究動機や、問題を報告している調査研究の結論部分などを読み込んで、自分の研究が誰のためのものか、何が既存研究と違うのかをよく考えておく必要があります。今回は1つの型として書きましたが、歴史のある技術分野なら、「○○という技術がこれまで研究されてきた、しかし……」というように、いきなり課題意識から入ることもできますし、逆に1つの問題事例を詳しく説明して、一見簡単そうな課題が難しいことを力説する論文もあります。有名な技術、そうでない技術など、状況によっても書き方は変わってきますので、幅広く論文を読んで、色々な書き方があることを知ると、それだけ選択肢が広がります。

 研究によっては、個人の興味や思いつきから始まることもよくありますが、論文の1章は新商品(提案手法)の宣伝文句のようなものです。実際の発端や、裏に隠れた試行錯誤のことは隠して、誰のどんな状況で役に立つ、どこが新しい技術なのかを首尾一貫して説明する、読みやすい文章を書いてください。