ソフトウェア情報学研究科に社会人入学した大学院生が独断と偏見で選ぶおもしろかった講義ベスト3


こんにちは @isseium です．
この記事は，岩手県立大学ソフトウェア情報学部 Advent Calendar 13日目の記事になります．

今回の記事では，独断と偏見で選ぶ大学院のおもしろかった講義ベスト3を書こうと思います．


## 「おもしろいとは，自分の知識から少しはみ出した知識を知ったときである」

研究室の大先輩であり @otukutun が私に残した名言です．（意訳）
彼は，今年の春まで資格・検定の出題に関する研究をしており，「受検者の知識にあった問題を提示することによって，受検者はおもしろいと感じる」いいかえれば「パーソナライズした問題の提示によって，対象領域の検定をおもしろく感じさせることができる」（以下，otukutun予想）ということを提言した偉大なる研究者になります．


さて，今回おもしろい講義を選ぶにあたって， **おもしろい** を定義する必要があります．
私は，otukutun予想に従い，私の知識・経験をベースに「少しはみ出た知識」を知ることができた講義を紹介したいと思います．

すなわち，私が知っていた内容を取り扱った講義，もしくは私が知らなすぎてついてけなかった講義はランキング上位に含まれないことになります．

つきましては，ベスト3に入らなかったからといって「つまらない・ためにならない」とかいう意味にはなりません．

さて，これまでの説明によって，今回の記事で扱う「おもしろい」とはなにか，そしてなによりも **ランキングを発表しても科目の担当教員との人間関係が悪化しないようになった**と思いますので，次に進みたいと思います．

## 私のプロフィール

@otukutun予想によると，受検者のプロフィールが「おもしろい」を左右することになります．
すなわち，今回のランキング発表においても私自身のプロフィールを明らかにしなければいけません．

otukutunモデルが発表された修士論文をさきほど熟読しました．パーソナライズには，次の3つのプロフィールを用いていたので私のプロフィール情報と合わせて示します．（正確には6つだったけど省略）

性別: 男
出身地: 秋田県
住所: 岩手県在住



## 大学院講義の概観

ソフトウェア情報学研究科博士前期課程では，修了条件として次のなかから8科目16単位取得する必要があります．
（修了には，これ以外に修論を進めるゼミ・演習科目の履修が必要です．）

```
基盤情報特論
基盤構築特論
情報認識特論
感性情報特論
知識処理特論
知識基礎特論
認知情報特論
高速処理特論
知的設計特論I
知的設計特論II
知能システム特論
知識システム開発特論
知能メディア総論
知覚情報処理特論
プログラム言語特論
企業情報システム特論
基盤ソフトウェア特論
情報システム基盤総論
情報システム管理特論
情報システム評価特論
情報システム企画・設計特論
情報システム戦略特論
情報環境デザイン特論
情報ネットワーク特論I
情報ネットワーク特論II
情報ネットワーク特論III
社会情報システム特論I
情報セキュリティ特論I
情報セキュリティ特論II
情報セキュリティ特論III
社会情報システム特論I
社会情報システム特論II
組織システム分析特論I
組織システム分析特論II
コンピュータグラフィックス特論
```

## 今回の対象科目

今回のランキングの対象となる科目は私が受講した次の8科目です．
一言講義の説明も添えています．

```
高速処理特論			: すげー速い！（GPGPU）
ソフトウェア設計特論	: どうやってつくる？（設計）
情報システム企画・設計特論: なにつくりたいの？（要件定義）
知識基礎特論			: 論理の世界からこんにちは！
情報環境デザイン特論	: ユーザ体験（UX）とか
基盤ソフトウェア特論	: セマンティックWeb/Linked Data とか
知能システム開発特論	: 遺伝的アルゴリズムとかSVMとか
組織システム分析特論II: 質的研究と量的研究とか
```

講義は **年間56万円で受け放題** なので，受けまくりたかったのですが，いろいろ事情があって最低限の数になってしまいました．

## おもしろかった講義ベスト3

それでは，本題に入りましょう．
私の知識から少しはみ出た知識を知ることができた講義です！

### 第3位「組織システム分析特論II」

組織システム分析特論IIは，研究の評価に用いられる，質的手法（いわゆる定性評価），量的手法（いわゆる定量評価）とそれらを融合して用いるミックス法の3種類について学びます．

クロスウェル著の「RESEARCH DESIGN」を輪講形式で進めていく形式です．英語だったので辛かったです．

この講義で学んだおもしろいことを少し書きまとめます．

#### おもしろポイント1: 4つの世界観
まずこの本では研究を4つの世界観に大別していました．

1. ポスト・実証主義
2. 構成主義
3. アドボカシー
4. プラグマティズム

物事は，その物事を見る立場や世界観によって変わるのです．視座というやつに近いのですかね．この本では，レンズといっています．

立場が異なると話しがかみ合わないのです．相手の立場を知ったうえ，もしくは自分の立場を表明したうえで研究を進める．これは研究に限らずあらゆる人間関係で大事なことだと思いました．

#### おもしろポイント2: 質的アプローチの見直し

続けて，この本では，さらに質的アプローチ，量的アプローチについてそれぞれ論じていきます．

情報工学に限らず理工系の研究は量的アプローチが評価される傾向があります．第三者が再現可能な量的な評価が法則性の価値を高めるのも事実でしょう．ただ，情報工学，特に情報システム領域は人間とのインタフェースになる部分も多く，質的アプローチを評価すべきという意見もあるそうです．


#### おもしろポイント3: そもそも質的アプローチってなに
最後に質的アプローチの5つ手法の概観を述べて終えましょう．

1. ナラティブ・リサーチ: 研究対象の個人の視点に着眼して論じる
2. 現象学: 研究対象の個人が，どのような経験・経過たどって進化・成長・変化していったかを論じる
3. エスノグラフィー: コミュニティを観察しその特性を論じる
4. グランデッド・セオリー: 社会現象などを分析し，理論を作ることを目的とする
5. ケーススタディ: ある事例のある期間のプロセス・活動を深く調査・分析する．複数の事例から原理・法則なども見いだそうとする

余談になりますが情報処理学会では，[質的評価ガイドライン](http://ipsj-is.jp/%E9%96%A2%E9%80%A3%E6%B4%BB%E5%8B%95/%E6%83%85%E5%A0%B1%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E6%9C%89%E5%8A%B9%E6%80%A7%E8%A9%95%E4%BE%A1%E6%89%8B%E6%B3%95%E5%88%86%E7%A7%91%E4%BC%9A/%E8%B3%AA%E7%9A%84%E8%A9%95%E4%BE%A1%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3/)というものを昨年作成しています．


### 第2位「高速処理特論」

高速処理特論では，GPGPUの原理の概観を学び，そのうで，CUDAを利用したGPGPUプログラミング演習を行います．講義で利用した資料は，[Cuda Proguramming Guide](http://docs.nvidia.com/cuda/cuda-c-programming-guide/#axzz3LksvNaZ0) です．これも英語だったので辛かったですが，プログラミング用語は万国共通なのでなんとかなりました．

GPGPUは手軽に利用できる時代になっているので，わかる人には初歩的な内容なのかもしれません．私にとっては，はじめてのGPGPUの利用だったので，仕組みやプログラミングの仕方などとても刺激的でした．

#### おもしろポイント1: そもそもGPGPUってなによ

もともとはグラボなどに利用されるグラフィック演算向けのCPUでした．CPUほど汎用的な命令セットを持っておらず，グラフィック演算に特化したCPUが数百個レベルで取り付けられているのが最近のグラフィックボードです．

シンプルで，レジスタ容量も少ないGPUですが，数百個レベルで1台のボードに搭載されることによって，強力なパワーを発揮します．特に，ベクトル演算などのような単純な演算を並列して実施できるようなときに威力があります．

#### おもしろポイント2: GPGPUプログラミングってどうやるのよ

CUDAでは，nvcc というccコンパイラ拡張を利用します．
処理のベースはC言語で実装し，kernel という概念をプログラムにも記述することで実行します

```
// カーネル関数: 並列で実行される関数．GPGPUで処理される
__global__ void
kernelFunc(int* arg1)
{
    int x = threadIdx.x;  // カーネル内では実行しているスレッドやブロックなどのIDを参照できる
    int y = threadIdx.y;
    :
}

// C言語と同じくここからスタート
// ここは並列で実行されず，CPUで処理される
int main()
{
    // カーネルの実行，2つのブロックを256コアで実行する
    kernelFunc<<<2,256>>>(A,B);
    :
    :
}
```


アルゴリズム次第でその速度が10倍，100倍も変わってくるのを間近でみて衝撃が走りました．
前職で「SQLは書き方で100倍かわるから」というのを間のあたりにしたとき以来の衝撃です．

また，一般のプログラミングのいまの風潮としては，なるべくキレイに，なるべく見やすくなるべく保守性，なるべく再利用性を高めていくというのがものだと思っていましたが，この講義でGPGPUに触れることで世界観が変わりました．処理が速い = 正義という世界に触れられてよかったです．

### 第1位「情報環境デザイン特論」

情報環境デザイン特論では，利用者や社会を取り巻く情報システムや情報サービスを，テクノロジだけでなくコンテキストも考慮していかに設計するかということを学びました．

講義では，オライリー刊Peter著「Subject To Change（予告なく変更される）」を輪講形式で実施しました．原著ではなくて翻訳本を読みましたが，若干訳がわかりにくかった気がします．

#### おもしろポイント1. 未来など予測できない

必要なのは紆余曲折に対応できる方法である．

```
新しい正確な予測を探究するか，どの予想が当たっても続けられるアプローチを探すか，問題はそれだけだ
```

#### おもしろポイント2. アートとデザインの違い

アートは表現，デザインは設計．デザインには，人に役立つための設計者の意図がある．
人のためのサービスにはアートだけではなくデザインが必要である．

#### おもしろポイント3. 科学的管理法の終焉

フレデリックテーラーが提唱した理論「科学的管理法」というものを初めて知りました．

いわゆる「最適化」です．この流れは21世紀までずっと続いています．しかし，時代も進み情報産業の台頭によって最適化に限界があることが見えてきたといっています．1つ目の理由は，測れるものしか管理できないことです．2つ目の理由は，費用の削減，節約には限界があるということです．

#### おもしろポイント4. 体験

ユーザが欲しがっているのは，テクノロジーや機能ではなく体験である！

サービスにはユーザとコンテキストを分かち合い，気持ちに共感し，問題を解決することこそが必要とされている．そんなサービスをつくり，コミュニティを作り，次の体験を提供していくことこそが必要なのですよということでした．


## おわりに

この記事では，otukutun予想の定義にある「おもしろい」のもと，おもしろかった講義ベスト3を紹介した．