授業の目的
システム構築とは,ソフトウェアやハードウェアなどを開発あるいは調達し,それらを組み合わせて動作する仕組みを作ることである.システムに組み込まれた各要素は相互に作用し合うことで振る舞いが変わりやすいため,全体として優れた性能を発揮でき,かつ時代の変化にも柔軟に対応できるようなシステムを構築する必要がある.この授業では,近年のインターネットやクラウドの普及によって一般企業にも利用が急速に広まりつつある情報システムを題材とし,要件定義,設計,テスト,デプロイといった構築の基本から,時代の要請によって誕生した最新の構築技術までを学ぶ.具体的には,1)ビジネスチャンスを逃さぬように短期間でシステムを構築するテスト駆動型開発,2)ビジネスの成長段階に応じてシステムの処理能力も容易にスケールさせる疎結合設計,3)システムの運用を通じて得られたデータから有用な知見を得る分析手法,4)有用な知見を踏まえてシステムを動かしたまま改良を続ける開発と運用の一体化,について学び,時代の変化に合わせてビジネスとシステムを成長させることで,産業と社会の発展に寄与できるようになる.
到達目標
- 短期間でシステムを構築して,ビジネスチャンスを捉えられるようになる
- ビジネスの成長段階に応じてシステムの処理能力をスケールさせ,運用で得た知見を活かし,ビジネスとシステムを共に成長させられるようになる
授業の概要
情報システムに求められる要件は機能要件と非機能要件に大別される.前者はシステムの目的に応じて定められるが,後者はユーザビリティ,処理速度,拡張性,セキュリティなど広範に渡る.システムの質を左右する後者の向上には際限が無いため,開発着手段階において達成すべきレベルを決めるのが難しいという課題がある.
一方,海外ベンチャーなどがインターネットやクラウドを上手く活用し,明確な要件を満たすテスト駆動型開発で素早くマイクロサービスを立ち上げて成功している.彼らは,ビジネスで成功して得られた利益から,必要に応じて非機能要件を高めていくという戦略をとっている.これまで,日本のSIerが得意としてきたウォーターフォール開発で完璧なシステムを作ってからリリースするという進め方ではこれに太刀打ちできない.
そこで,本講義ではビジネスとシステムを共に成長させてゆくという戦略に立ち,1)テストに着目した要件定義とプログラミング,2)疎結合を重視する外部設計,データ構造,内部設計,3)統計処理,機械学習や人工知能を活用したデータ分析,4)分散データベース,継続的インテグレーション/継続的デリバリー,セキュリティ,個人情報保護,社会に受容される情報システム,について学ぶ.この授業で学んだマイクロサービスアーティクチャを駆使して,学生自身が独創的な仮想サービスを作り,作成した仮想サービスに関するプレゼンテーションとデモンストレーションを行う.