シラバス
入学のご案内履修登録

科目の概要

この授業では、マルチスレッドによる並行処理の基本を学ぶ。最初に、スレッドやスレッドセーフという概念、そしてメモリの可視性と逸出という重要なテーマについて深める。その後は、Javaの並行処理の仕組みを学びつつ、他の言語(アセンブリ、C言語、Rust言語)における並行処理の取り組みも探求する。また、Akka Actorを利用したスケーラビリティと耐障害性を兼ね備えたプログラミングも理解し、一覧取得システムの開発に至るまでを学ぶ。

科目情報

履修想定年次
3年次
単位数
2単位
開講Q
2Q、4Q
科目区分
選択
授業の方法
オンデマンド科目
評価方法
確認レポート 50% , 単位認定試験 50%
科目コード
INF-3-C1-0204-006
到達目標
この授業を受けた後、学生は基本的な並行処理プログラミングを理解し、適切に使用することができるようになることを目標とする。具体的には、スレッドやスレッドセーフな設計、Javaの並行処理の仕組みを活用した実践的なプログラム作成能力を身につけ、更には他言語における並行処理の手法を理解する。最終的にはAkka Actorを利用した並行処理プログラミングのスキルを修得し、実世界の問題解決ができる力を身につける。
教科書・参考書
  • MartinOdersky著・LexSpoon著・BillVenners著『Scalaスケーラブルプログラミング第4版』2021年BrianGoetz(著)・JoshuaBloch(著)・DougLea(著)『Java並行処理プログラミング』ソフトバンククリエイティブ、2006年高野祐輝『並行プログラミング入門』オライリージャパン、2021年
授業時間外の学修
各回の授業内容は繰り返し見返し、各回二時間ほど復習を行ってください。また、次回の学修内容についてもあらかじめ不明な単語や前提となる知識をWebで調べるなどして各回三時間ほど予習を行ってください。
特記事項
順次公開予定

授業計画

1
スレッド

並行処理の歴史とスレッドについて学び、並行性と並列性の違いを理解する。

2
スレッドセーフ

スレッドやマルチスレッドにおける問題を身につけた上で、スレッドセーフの重要性を学ぶ。

3
メモリの可視性と逸出

メモリの可視性と逸出について学び、それらの問題を解決する手法を知る。

4
Java の並列コレクションとシンクロナイザ

Javaの並列コレクションとシンクロナイザについて理解を深め、並行処理を効率的に行う方法を学ぶ。

5
Executor フレームワーク

スレッドの生成コストと安全性を理解した上で、Executorフレームワークとスレッドプールを学ぶ。

6
Fork/Join フレームワークと実行性能

Fork/Joinフレームワークについて深め、並行処理の実行性能について理解する。

7
Future と Promise

FutureとPromiseについて学び、関数型プログラミングと並行処理の融合を理解する。

8
Akka とアクターモデル

Akkaとアクターモデルについて深め、並行処理の新たな可能性を知る。

9
Akka Actor の耐障害性

Akka Actorの耐障害性について学び、一覧取得システムの開発に取り組む。

10
ウェブサイト一覧取得システムの開発

アセンブリ言語とC言語の基礎を身につけた上で、それらの言語での並行処理プログラミングを学ぶ。

11
アセンブリ言語、C言語における並行処理プログラミング①

アセンブリ言語とC言語の基礎を身につけた上で、それらの言語での並行処理プログラミングを学ぶ。

12
アセンブリ言語、C言語における並行処理プログラミング②

C言語でのレースコンディションやアトミック処理など、より高度な並行処理のテクニックを理解する。

13
Rust言語における並行処理プログラミング①

Rust言語の基礎と型システムについて学び、所有権の概念を理解する。

14
Rust言語における並行処理プログラミング②

Rust言語でのライフタイムや借用、メソッド定義などについて学び、Rustでのスレッド利用を知る。

15
Rust言語における並行処理プログラミング③

Rust言語でのミューテックスや条件変数、セマフォなど、並行処理のさまざまな手法を学ぶ。

関連科目