[準備編]実装技術を決めようシステムアーキテクチャと、その次の層の個別の実装技術を決めていく章のようです。要件定義は合意事項を洗い出したら終わりというわけじゃなく、次の工程、つまり後工程に必要な情報を定める工程とあります。最終的にプログラミングまで繋いでいくわけです。プログラミングとは言ってしまえばゼロイチに落とし込む仕事、白黒はっきりしてないと実現できないし、はっきりしないまま進めた実装は機能ではなく勝手な行動で、成果を伴うのが仕事であることを考えれば、はっきりしないまま進めるのは仕事とは言えばいはずです。プログラミングで実現可能な要件にする必要がある本来、アーキテクチャ設計と呼ばれる作業で、実施時期はプロジェクトマネジメントに基づくとあります。方式の方針決定(Webなの、スマホからなの、などかな)実現する道具を探すことでもあり、道具を探すなら、先に要件を定義してからアーキテクチャを決めるべきだという論調もあるのは僕にもわかります。要件が決まらないと採用する技術も決められないよ、と。実装の都合がわからないとソフトウェアの要件が決められないのも事実とあります。この行間がわかりにくかったんですが、先に出てきた通り「何を使ってプログラミングするのかを決定」する必要、ここでいうとプログラミング言語とかではなく、ユーザーは何を使うのかスマホなのかPCなのか専用端末なのかどんな通信手段なのかWebだったらインターネットだろうクライアントサーバ型?社内の独自基盤?これは要求を聞いた時点でわかりそうだけど...散々言うように「当たり前を定義する」必要があるということなのかな、と思いつつ読み進めます。大きく2段階あるとのこと。第一段階:基本的なシステムアーキテクチャを決める第二段階:各部の個別の実装技術を決定するなるほど大きく間違ってがいなかったようです。基本的なシステムアーキテクチャを決める第一段階に、もう少し細かい解説がなされ、以下の選択肢から組み合わせで決めるとあります。端末:プレゼンテーション・アプリケーション層サーバ:データベース層つまりビジネスロジックを端末のアプリ側に持つということ情報処理試験以外であんまり見たことないなーもう1ついうと、三層(プレゼンテーション・アプリケーション層が分かれていて、アプリケーション層をサーバ側に持つのも選択肢に入るような気がします。Webブラウザ型インターネットを使った三層って解釈でいいのかな一般的なPCサイトってこれでしょうねモバイル端末+Webサーバ型スマホのネイティブアプリ決めることサーバの置き場所(オンプレ、クラウド)の検討が必要ではありますが、まずは利用者がどこでどのような機器を使いソフトウェアを利用するのかを決める必要があります。各部の個別の実装技術を決定する上述のように、基本的なシステムアーキテクチャを決定したら、第二段階として、システムアーキテクチャを構成する各部に対し、どんな言語?どんなフレームワーク?を使って開発を進めるのかを決めていく、とあります。書籍ではこの後に詳細な図が続くのですが、本日はここで力尽きたので明日続きをやります。可能性の低い内容は、ともすれば書籍や講義では略されたり飛ばされたりしがちだな、と思うんですが、例えばメインフレームなど、Web全盛時代に詳しく語るものに触れなくなってきたことも、きちんと触れています。徹頭徹尾丁寧で、諦めずにコツコツ積み重ねた結果、合意できる。これは本当にずっと忘れないように今後も進めたいと思います。ことも続けていかなくちゃなってことに気づいたりしました。結局、要件定義から失敗しているプロジェクトは、どこかで軽視した忖度がプロの仕事だと勘違いし空気を悪い意味で読んだ決めてかかったモダンにこだわり過ぎたそもそもの本質を見極められなかったってことなんだろうなって思います。それらをしないためにも、今後も丁寧にやっていきたいと思います。21日目のエントリーです。いうことで12月21日のエントリーです。完全に余談ですが、今日は研修最終日。