この記事はSFC-RG Advent Calendar 2016の18日目です。


卒論おーばーびゅー

何故卒論を書けないのか

書いた経験がなく、書き方を知らないから。
つまり書き方が1から10まで説明してあれば猫でも書ける!!!

概ね独断と偏見で書いてるので、反論とかツッコミとかあったら言って下さい。気分次第で謝ります。

そもそも卒論とは何か

色んな人が議論してると思うので省略。

全体的に気をつける事

  • 最初に最も大切な事を言います。卒論を書こうとすると
    • #突然部屋を片付けたくなったり
    • #便利なアプリや執筆環境を開発したくなったり
    • #面倒見が良いわけでもないのに後輩の進捗が気になったり します。そんな事をしているうちは卒論は進みません。気をしっかり持って下さい
  • 「自分のやった事自慢」だと思って下さい。ずっと書き続けるのは辛い物ですが、ちょっと緩和します。「やってる事自慢」や「頭の中身自慢」でも良いです。とにかく自慢だと思って下さい。
  • 一文で説明するのは一つだけにしましょう。一文に多くの意味を持たせると、文の構造が複雑になり難読化します。
  • 意味が一意になる表現を心がけましょう。汎用性のある意味が広い言葉よりも、意味の狭い言葉を用いると良いでしょう。意味の広い言葉を用いると、その言葉の持つ意味群のうちどの意味で使われているのか、読者は考えなければならなくなります。「あの子ヤバくない?」は、あの子が危険なのか、頭が良いのか、可愛いのか、等々複数の意味に取れて、発言者の意図が読み取りづらいですよね。これは極端な例ですが、小さな事例の積み重ねで、読みやすい文章と読みにくい文章の差が出てきます。実は、この記事の冒頭の「書いた経験がなく」は当初「書いた事がなく」となっていました。より狭い意味しか持たない、伝えたい意味を伝えやすい言葉があったので、後に書き換えました。とは言え、やり過ぎて滅多に使わない言葉ばかりになるとそれはそれで読みにくいので、やり過ぎには気をつけましょう。
  • 慣れないうちにやりがちなのが、「ついでにこれも言いたい!」で各章の内容を逸脱することです。適切な章が存在するはずなのでそっちに書きましょう。適切な章が存在しなければ、君の卒論で書くべき内容ではありません。
  • 図や表のcaptionでは、図や表の見方を完全に説明します。本文を読まずともcaptionだけで見方が分かるようにします。一方、本文でも、captionを読まずとも図や表の意味が分かるように書きます。本文とcaptionの内容が重複しても構いません。Captionでは見方を全部説明し、本文では研究ストーリーにおける意味を説明すると良いでしょう。

卒論の構成

卒論の構成は章立てと呼ばれます。章立てはまず最初に、8月や9月から考えさせられますね。何故最初に考えるか。章立てを作るには、君の研究のバックグラウンドに構成要素やその選択理由等々を正しく把握して研究ストーリーを考えなければならないからです。研究とは「流れ」の中にあるものです。研究とはフロンティアの開拓であり、常に進展し続けます。この進展により、研究フィールド/コミュニティには「流れ」が発生します。この「流れ」を正しく把握していれば、世界の研究の中での自分の研究の立ち位置を説明できるようになります。となれば、自分の研究の役立ちどころが分かり、如何に価値ある素晴らしい研究であるかを語れるようになるわけです。逆に言うと、この「流れ」の中で素晴らしさを説明出来ない研究はゲフンゲフン。

よくある卒論の構成はこんな感じ:

  1. 概要
  2. 序論
  3. 要素技術
  4. 問題定義
  5. 本研究の手法
  6. 実装
  7. 評価
  8. 結論

太字は仮綴じまでに絶対に完成させるべき部分です。この辺が完成していなかったら、仮綴じを提出して見てもらう意味はないです。理由は下で詳述しますが、要は、研究の意味や価値がこの辺に表れるからです。村井純はこの辺を考えるのがべらぼうに上手いので、仮綴じでちゃんと読んでもらえるよう、しっかり書いておきましょう。

余談ですが、論文誌に載せる研究論文では、読者は概要→序論→結論→評価の順番に目を通して中身をじっくり読み込むべきか否か判断します。


各章の内容

第零章(?)、概要

バンミーター博士がとても良いまとめを作ってくれています。
Abstracts for Systems Papers
“Systems Papers”って言ってるけど別にシステムに限らない話だと思う。一度は目を通しましょう。
日本語に訳せって?あー、後で気が向いた時にね。。

上述の通り、論文を読んでもらうために最も大切な章(?)です。気合いを入れて書きましょう。一度書いてから何日か放置すると、書いた時に自分が考えていた事を忘れます。すると、読者目線で読めるようになり、分かりにくい表現や説明不足の点・理解を妨げる余計な文章等が分かるようになります。概要は早目に書き、日を置いて何度も見直しましょう。

ありがちな間違いは、「研究目的」と「提案手法」を履き違えることです。ずっと実装をしていると、その実装内容や手法を研究目的と誤認してしまう事があります。僕の卒論を例にすると、目的は「数学的に証明された安全性で、インターネットの暗号化通信を実用可能にする事」です。量子鍵配送をInternet Key Exchange で利用出来るように拡張するのは手法であり、目的ではありません。

第一章、序論

研究フィールドの現状」や、「こんな事をしたらこういうインパクトがあって世界がこうなる」という事を説明する章です。歴史から何から書いても良い。とにかくまずは「研究フィールドの現状の全体像」を読者が分かるように書く事。研究フィールドというのはフロンティア開拓の現場ですから、未対決の問題や、まだやれていない事が必ずあります。もちろん君の研究は、そういう未解決の問題を解決したり、これまでやれていない事を試しているはずです。研究フィールドの全体像をきちんと説明して未解決の問題点を述べ、君の提案する解決手法を概説すると、君の研究の立ち位置や価値が明らかになり、重要性を理解してもらえます。前述の通り、研究フィールド全体の流れを概論して自分の研究の価値を説明する事は、しばしば「研究のストーリー」と呼ばれます。「研究のストーリーを考えろ」とよく言われるのは、自分の研究の価値で世界を殴れるようになれ、と言う事です。

研究フィールド全体を説明するので、参考文献の引用はこの章が最多になります。 参考文献数は、君が研究フィールドを理解していると説得する上で大きな戦力になります。 あ、俺の卒論23個しかねぇや。卒論での目安は50個くらいじゃないですかね。多分。勘ですけど。 僕の博論の参考文献数は180個です。けっこう多い方ですが、バンミーター博士の博論の参考文献数は363個でした。 まあ、研究フィールドや内容によって増減します。あまりにも少ないと、不勉強に思われます。 もしくは、関連研究がないくらいウルトラ最先端の新規フィールドを切り拓いた超絶優秀卒論かなって思われます。君はどっちですか?

第二章、要素技術

君の研究の要素技術を説明します。と言われても何をどこまで説明すれば良いのか分からなくて困るでしょう。 簡単です。「お前の研究に必要な技術をお前が理解していると分からせろ」です。 これが出来ないと、「あー、こいつ分かってね~や。1から10まで先生に全部考えてもらったんだろうなー、言われた通りやっただけなんだろうなー」となります。

正に研究対象の技術でも、君の研究に直接関係ない部分は詳述する必要はないです。そういう部分は概要だけ説明しておけば良いでしょう。 しかし、研究と直接関係ある部分は必ず詳述して下さい。 「詳細を分かってないけど研究で弄くりました」では、手法ひいては研究の妥当性が疑われます。

第三章、問題定義

正直な話、この章は独立して無くても良い。第一章で問題がはっきりしてて、この章で問題を定義しようにも特に新しい情報がないような事になるなら、第一章での説明を充実させた方が良い。僕の博論はこのパターン。まあ、博論と卒論は書き方がだいぶ違うのだけど。
とは言え、第二章の説明を踏まえて初めて問題を詳述出来る研究も多々あるでしょう。 その場合、この章があまりに短くなって格好悪くなってしまうくらいなら、次章「本研究の手法」とマージする手もあります。この手を採用すると、「本研究の手法」内で問題が定義される事になりタイトルと内容に一貫性がなくなるので、他のタイトルを付ける必要があります。僕の卒論はそのパターンで、提案技術名をそのまま章タイトルに用いて「IPsec with QKD」としました。

話を戻します。この章では問題を定義します。第一章で述べた研究フィールド概要を前提に、問題を一意になるように詳述し、定義します。「一意」である事のは重要です。読者に問題を勘違いさせてはいけません。

さて、問題を定義したら、解決するための要件が明らかになります。なりますよね。なるんだよ。なってねーならもっと考えろ。君の卒論がどうやって要件を満たすかは次章でOK。

ちなみに、「問題解決に必要な要件」と、「達成している方が望ましい項目」は異なるものです。例えば空港の保安検査では、「危険物を持った人間を通してはならない」は「必要な要件」ですが、「検査速度が速い」は「達成している方が望ましい項目」でしょう。混同しないように気をつけて下さい。「検査速度が遅い」事によって入場者を捌き切れない問題は、「危険物」とは別問題として、レーン数を増やして並列処理する事で解決しています。

関連研究について述べても良いでしょう。同じ問題や似たような問題に対して関連研究はどのような手法を用い、どのような未解決問題が残ったのか。上述した要件をどう満たし、どう満たせていないのか。複数あってごちゃごちゃするなら、表にまとめると綺麗に表現できると思いますね。

「達成している方が望ましい項目」をまとめるのはこの章かなあ。第六章でも良い気がするけど、関連研究に絡めるなら間違いなくここかな。

第四章、本研究の手法

お待ちかね、本研究の問題解決手法です。多分皆ここを書きたくて仕方ないんじゃないですかね。他の章より書きやすいですからね。でも後回しにして下さいね。概要・序論・結論・評価が先ですよ。

さておき、前述の要件を満たす、君の研究が提案する問題解決手法を説明します。基本的には、第二章で説明した要素技術から出発するはずです。

君の開発したプロトコルとか、その他もろもろ、ここで説明します。図を最も大量に使う章はここでしょう。 システム概要もここかな。でも具体的な設計は次章よ。

第五章、実装

眠くなったんで今年の仮綴じの後に書きますね。。仮綴じではテキトーで大丈夫なんで・・・。

まあ、設計図とか。screenを使ってソースコードを貼り付けて説明したりとか。もちろん、ただファイルをfopenする部分なんかを書いても仕方ないので、本研究に特徴的な部分を説明するべきです。パケットなら、ペイロードを実装してる部分とか。俺こんなに上手くやったんだぜ、みたいな部分があると良い。こんなに便利でユーザフレンドリーなコマンドラインオプションを作りました、とかも格好良いと思う。

第六章、評価

君の卒論で提案する手法の評価項目、評価手法、評価結果について述べます。

まずは評価項目と評価手法について説明します。評価すべき項目は、研究内容によって異なります。共通して言えることは、客観性の担保できる評価項目群を考えましょう。自分の研究の良い所だけを見せつける評価項目や評価手法を作る事も可能ですが、欠点等も分かる客観的な評価でないと、この研究を本当に実用すべき場面が明らかになりません。偏った評価手法では、正しく評価出来ません。また、部分的な評価でも、正しく評価できません。妥当性のある網羅的な評価項目群/手法である事を読者に説得しましょう。あまりよろしくない評価結果が出ても、ポジティブに論じる事は可能です。後述します。まあ、読者も大抵プロなので、おかしな評価項目/手法はどうせバレます。

評価手法は定性評価と定量評価に大別されます。定性評価は「ある性質を持っているか否か」による評価です。 例えば、「このシステムの暗号化通信は、巨大数の素因数分解によって攻撃されうるか否か」は定性評価です。 定量評価は「数値」による評価です。例えば、「このネットワーク実装でどの程度のスループットが出るか、実験して計測してみた」結果は定量評価です。

定性評価と定量評価はどっちの方が良いと言う物ではありません。適切な方を利用しましょう。もちろん、両方使っても構いません。

評価手法が妥当で網羅的である事を示したら、いよいよ評価そのものについて書きます。定性評価では、要件に合わせて◯×表を作ると良いでしょう。上述の例について、公開鍵暗号を用いる既存システムの暗号通信は巨大数の素因数分解能力によって解読されてしまうが、提案システムは量子鍵配送を用いるので解読されない、という定性評価を表にすると表1のようになります。

| | 公開鍵暗号を用いる
既存の暗号通信 | 本研究で提案する
暗号通信
(XOR-OTPを用いない) | 本研究で提案する
暗号通信
(XOR-OTPを用いる)| |:—————:|:—————:|:——————–:|:——-:| | 巨大数の素因数分解への耐性 | × | ◯ | ◯ | | 暗号アルゴリズムへの攻撃への耐性 | × | × | ◯ |

表1: 各種攻撃への耐性についての定性評価一覧.XOR-OTPは,データ列と暗号鍵列をそれぞれ1bit毎にXOR演算して暗号化し,ワンタイムパッド(One Time Pad)を採用して鍵を再利用しない暗号アルゴリズムを指す.

余談ですが、この例は僕の卒論からの引用です。「巨大数の素因数分解能力」とは量子コンピュータを指します。量子コンピュータによって既存の暗号通信システムは脅威に晒されるので、巨大数の素因数分解に耐性のある暗号通信システムが必要だ、量子鍵配送をインターネットでちゃんと使えるようにすれば良いじゃん、プロトコル考えた、物を作った、評価見ろ耐性あるだろ、インターネットドラフト書いて標準化活動もしてるぜ、本研究によって皆の秘密通信がこれからもずっと守られるぜ、やったぜ、と言うストーリーです。まだ標準化されてないけど。

話を戻します。定量評価では、物を作っての実測値なりシミュレーションなりで数値を取得します。面倒臭いのでここではグラフを例示しませんが、自分の研究の計測値と関連研究の計測値の両方を1つのグラフに入れると比較しやすいでしょう。グラフを示した上で、数字で殴って評価します。「ほら俺の手法は既存手法の二倍のスループットが出るぜ」みたいな。

既存手法に対して特定の条件下では勝つけどそうでなきゃ負ける、みたいな結果になっても、怖がらずにちゃんと説明しましょう。勝てる条件を活かすための議論を次章で行えば良いだけです。どんな状況下でも負ける、みたいな結果なら、そうなった原因をしっかり究明しましょう。その原因を回避する事で、更なる発展が見込めます。とは言え、この章では評価結果から推察される原因の究明までで、その後の議論は次章で行います。

提案手法が、第三章で述べた要件を満たしているか確認するのもこの章ですね。定性評価や定量評価の結果を元に、要件を満たしている旨を説明すると良いでしょう。

第七章、結論

この章では、君の卒論全体を改めて俯瞰してまとめます。第一章では研究フィールドでの位置づけに重点を置いて研究ストーリーを語りましたが、ここでは君がやった事に重きを置きます。

前章で様々な評価結果が出ていると思います。この章では、その評価結果が研究フィールドにどのような影響を与えるかを論述します。俺の研究結果でこうすればこうなる事が分かったから、あの話はこうなるし、応用すればあっちの話もこうなるし、となれば世界はこんなに便利になるぜ、みたいな話を複数議論します。

芳しくない評価結果が出ていても、ポジティブに書く事は可能です。特定の条件下で望ましい結果が出るなら、その条件が満たされるのはどういう状況なのか。もっと積極的に、どうすればその条件を満たす状況を作れるかを考察する事も出来ます。

どんな状況下でも芳しくない評価が出たなら、そうなった原因をしっかり考察しましょう。その原因を回避する事で、更なる発展が見込めます。原因を回避する方法まで議論出来ると万々歳です。もちろん、「今後の課題」と銘打って下さい。でないと、「何故その方法を卒論でやらなかったの?もう一年卒論やる?」とヤラれます。

いずれにせよ、「やったことのまとめ」パートと、「やってない今後の展望」パートみたいになります。「今後の課題」は「展望」の中ですね。

謝辞

卒論を書く上でお世話になった方に感謝を述べましょう。鈴木博士の博論の謝辞が4ページくらいあったかな。僕の卒論の謝辞は2ページ。1ページは真面目に、もう1ページは冗談半分で。え?「恋人の名前を書いて結局別れてしまった場合どうするのか」って?別にどうもしないでしょ。過去の恋人の名前を今の人に見られる?それでごちゃごちゃ言う人は恋人にも嫁にも旦那にも向いてねーよ。

仮綴じや、先輩や教員に見てもらうドラフトの段階では謝辞を入れません。感謝すべき相手に謝辞を確認して赤入れしてもらうのはおかしいですよね。コメントアウトしておいて、最終版をコンパイルする時に入れて下さい。

とりあえず、この記事のURLを貼って感謝しとくと良いんじゃないですかね。

参考文献

僕の卒論の23個を超えてたら良いっすよ。

上述の通り、50個くらいは欲しいですね。

本を参考文献に入れる事もあるけど、大抵の場合は、その本以外の論文が情報の初出だと思います。そういう場合は元論文をciteしましょう。例外もあるけどね。白書とか。

付録

卒論本文に入れるには余計だけど、書いておきたい物を書きます。グラフの生データとか。僕の卒論では、インターネットドラフトをそのままコピペしました。博論ではグラフの生データを入れました。


というわけで

いかがだったでしょうか。自分の研究を当て嵌めるだけで、卒論を書ける気がしてきたでしょう。
「これで勝てねば貴様は無能だ」って誰のセリフだったっけ。シャア・アズナブルだ。

###これで書けねば貴様は無能だ!!!!!!!

誰も書けねば僕が無能だ。はい。