UoPeople AY2022-Term4 の振り返り。ウェブとソフトウェアエンジニアリングとちょっと疲れた
UoPeopleで CS 2401 Software Engineering 1 と、CS 3305 Web Programming 2 を履修したので振り返ります。
CS 2401 Software Engineering 1
その名の通りソフトウェアエンジニアリングについて学んだ。ソフトウェアの難しさの正体を考えるところから始まって、その困難にアプローチするための手法やツールがひたすら紹介され、ひたすら読んで覚えるコースだった。
- 要求工学
- ユースケースとシナリオ
- アジャイルとウォーターフォール
- OOD
- TDD
- ドメインモデル
- デザインパターン
- テスト計画、カバレッジ
- セキュリティリスクマネジメント
- 測定と見積り
- リエンジニアリング
- ドキュメンテーション
- UML図
などなど。
課題は、架空のシステムの仕様をもとにシーケンス図・クラス図・ユースケース図を描いたり、プログラムからフローチャートを起こして循環的複雑度を求めたり、ユースケースをもとに受け入れテストを書いたり、UTを書いたり、仕事っぽい内容。コードを書くことはなくて、デザインパターンやTDDなども教科書を読むだけ。教科書にはたくさんのコンセプトが登場するが、半分くらいはアウトプットを求められない(だがQuizには出る)ので、教科書を適当に読んでいると中間試験と最終試験前の復習が大変だった。
個人的にはデザインパターン、セキュリティ、テストの章をもっと知りたかったので、各1Unitまるまる使って掘り下げてくれてもよかったのにな、という気持ちがあるが、このような勉強方法なら自分で本を読めばいいのかもしれない。この本とか。
The "Software Engineering at Google" book is now free to read online: https://t.co/cqX79uZNFK. Great insights on improving code quality & scaling engineering teams. pic.twitter.com/JPbNfEewfk
— Addy Osmani (@addyosmani) May 1, 2022
コースを通して、今まで何となくやっていた現場のノウハウには実は名前があって理論もあったのだと知れたことがよかった。それから、ドキュメンテーションもかなり雰囲気でやっていたなと…。UMLの正式な記法とか読んだことなかったし、テクニカルライティングの文体のルール、「能動態を使う」などを部分的には知っていたが、IEEE standards、Process standardsなどの汎用規格があることを初めて知ったり。
また、ソフトウェアは人の問題を解決するために人が作るから難しくて、思想を形式言語に落とし込むのだからそれはむずいよな、と分かった。だからMATHのコースで学んでいる事象の一般化も、ここに効いてくるのだな〜と腑におちた。
CS 3305 Web Programming 2
Webアプリケーションと周辺技術の基本を学んだ。
- Web1.0と2.0の違い
- スクリプト言語とコンパイラ言語の違い
- サーバーサイド言語の種類
- Apache、MySQL
- PHPの基本的な記法
- eコマース
- CMS
- Webパフォーマンス
など。
プログラミング課題では phpinfo() を出力したり、外部のプログラミング学習サイトでPHPのチュートリアルを行ったり、ウェブサイトビルダーで架空のウェブサイトを構築したり、CMSにプラグインを組み込んだり。ディスカッション課題では、PHPのサードパーティーライブラリにはどのようなものがあるか調べたり、ECサイトを運営する際のセキュリティ対策やパフォーマンス改善を調べたりした。
難易度と課題の量は軽めだったが、3xxx系のコースにもなるとクラスメイトのレベルが上がっていると感じた。例えばApacheについて調査する課題であれば、要件には無くても自ずとNginxと比較してC10K問題にも触れているような投稿がいくつもあったし、自分で探した資料を5つくらい引用しているのが当たり前で、今まで1xxx系のコースしか取ったことがなかった自分には新しい体験だった。そんな感じで、クラスメイトの投稿からは毎回得るものがあり、参考にさせてもらっていた。
ただ、指定の読み物の情報が古かったり、リンクが切れてたり、最近のPHPではもはや削除されているmysql系関数の問題が出たり、JoomlaというCMSの最新バージョンを答える問題が出たり、「😇」となることは多々あった。(やたらとJoomlaが推されていたけど何か政治的な事情があるのかな...)
ともあれ、このコースでは、ホームページを初めて作ったときの気持ちを思い出せたことと、Indeedで求人を探す課題を行った際に、どの求人の応募資格にも「コンピューターサイエンスの学位」と書かれていたのを見て、未来に希望を持てたことがとてもよかった。
まとめ
学習時間はCS 2401が5.3時間/週、CS 3305が7.2時間/週くらい。
前期に一年やり遂げたことで若干燃え尽きて、今期は内容に親しみのあるコースを取って楽しようと思っていたのだけど、どちらも仕事っぽい内容だったために夜も休日も永遠に仕事が終わらないような感覚に陥って*1、疲れがとれずインターネットから遠ざかりたくなってしまっていた。課題をさっさと終わらせて昔の大河ドラマばかり観ていたので、学習時間は過去最短。日本史に詳しくなってきた。
この感じを引きずって来期やっていけるかわからないが、無理ならdropすればいいし気楽にやってみるかの精神で、引き続きがんばります。
*1:仕事に対しての不満はありません、ありがたいことに