2013年1月10日木曜日

ソフトウェア工学実践研究において「巨人の肩に乗る」ということ

私の友達の,あるソフトウェア工学実践研究者の方が,次のようにボヤいていました。
(自分が考案したアイデアについて文献を調べていくと似たような技術がすでに提案されている状況に対し) こういうことの繰り返しなので、オリジナルの方法論を作るのは無理なんじゃ無かろうかと思う次第。
https://twitter.com/mkoszk/status/288920530625638400

このかたは実践経験豊富な実力あるソフトウェア工学実践研究者だと私は思っているのですが,そういう方でもこういうことを思うのだなと興味深く思いました。

もちろん私自身もこういう経験あります。修士論文を書く時に,一生懸命プログラムをいじりながら自分で考えていって,いざ論文を書こうという段階で関連研究調査を始めたところで既に類似の研究があることを見つけたときの無力感。

ちなみに私は研究者としては半端者なので,いまだにこの手の過ちを繰り返しています。なんて進歩がないのだろうか(苦笑)

さて本題です。真のソフトウェア工学者は,こういうとき「巨人の肩に乗る」アプローチを取るものです。「巨人の肩に乗る」ことで常人は自分の背丈以上に遠くを見渡すことができます。「巨人の肩に乗る」でいうところの巨人とは,既存の膨大な研究資産のことを指す比喩です。既存研究資産に乗っかる形で自分の研究を書くことで,その研究が既存研究資産を活用して大きな仕事を行うことができるということを意味しています。

私が修士論文を書いた後の話をしましょう。恥ずかしながら修士論文発表会では散々でした。だって,類似の研究があって,それに対する自分の研究のオリジナリティがどこにあるのかを明示できなかったのですから。でも,転んでもタダでは起きませんでした。発表会が終わった後,猛勉強して研究論文を読みあさり,ついに自分の研究のオリジナリティがどこにあったのかを見出すことができました。それだけでなく,そのオリジナリティの部分をきちんと実現するとどんな可能性がひらけるのか,展望を見出すことができました。そのアイデアを発表会を聞いた周囲の先生方に話したところ「それなら行けるかもしれない」とようやく認めてもらうことができました。そのアイデアを元に学会に論文を投稿することになります。

「巨人の肩に乗る」とは,つまり,こういうことなのです。まずとにかく,自分が思いついたアイデアが,世界の中でどういう位置づけにあるのかを明確にする。そのためには自分のアイデアに関連する研究論文を,とにかく読み漁る。そういうことをすると,真にオリジナルの部分は,ごくごく小さいかもしれない。「自分のしたことは,こんなちっぽけなことなのか」と悲嘆するかもしれない。
でも,むしろそれでいいのです。そこが問題なのではないのです。問題は,その小さな貢献によって,どんな価値が生み出されるか,なのです。「第1章はじめに」で書くべきことですね。




思えば,私は巨人の肩に乗ることが生来的には下手なのだろうと思います。だって,人の話を聞いたり文献を地道に調べたりするよりも,自分で一からアイデアを考えて妄想するほうが好きなんだもの。

こういうタイプの人でも,やりかた次第で巨人の肩に乗ることはできます。

  1. 先に自分のアイデアをひと通り書く。
  2. その中で重要そうなキーワードを抽出し,それを元に文献を探す。あるいは,アイデアを指導教員など先行する研究者に話し,何を探したらいいかキーワードを尋ねる。
  3. 文献を読み漁る。最初に書いた自分のアイデアを適宜書き換える。ただし,主旨を曲げないように! 新たに思いついたアイデアがあったら足してもいい。
  4. 自分のオリジナリティを抽出する。いくつかの構成要素に分解できるかもしれないので,それに合わせて論文や章立てを分割する必要があるかを検討する。
アイデア先行型の人は,こんな感じで研究を進めるといいですよ。