夜食のラーメン作りはどう説明されるべきか
料理に喩えればこういうことだ。
あなたが夜食に食べるためのラーメンを作ったとする。その時のあなたの役割がソフトウェアに当たる。大概のラーメンの袋の裏にはこんな風に書いてあるはずだ。「鍋にお湯を沸騰させ、麺袋から麺を取り出してお湯に入れて、3分間お好みの硬さになるまで茹(ゆ)でてください」みたいな感じだ。フィールディングが否定しているのは、ここであなたがやっていることを、ある意味で厳密そうに見える「100℃のお湯で3分間茹でる」という言い方で表現することだ。そうではなくて、あなたがやっていることは「袋の中の麺を熱湯で茹でて好みの硬さにすること」だと表現すべきだ、とフィールディングは言っているのだ。つまり、「具体的な解決策」ではなく「抽象的な課題」で表現しろ、と言っている。(あなたにとっての課題は、3分間茹でることではなく、好みの硬さにして食べることのはずだ。)
この話は、フィールディングが否定しているもう一つのことと関係している。それは、アーキテクチャを表現するときよく見かける、四角い箱と線でダイアグラムを描くというやり方だ。その箱の中に入るのは、上記の例でいうと「鍋で100℃に沸かしたお湯で3分間茹でる」である。それではなぜダメなのか。「お湯を100℃に沸かす」「3分間茹でる」、さらにはもやしを「中火で2分間炒める」等々とずっとつなげていくと、ダイアグラムに出てこないものがある。それは料理であり、その状態・質である。同様に、フィールディングは、箱と線というかたちでアーキテクチャを表現すると、肝心なものが登場しないと言っている。データとその状態だ。
つまり彼はソフトウェア・アーキテクチャとはデータを変換するものであり、その事前事後の状態の差分(あるいはその差分をもたらす変換機能)として表現すべきだと言っている。同書、本章の冒頭で紹介した中西会長の講演のエッセンスは「膨大なデータを価値に結びつけることが、ソサエティー5.0の核心だ」ということだ。フィールディングは、ソフトウェア・アーキテクチャを正しく理解するには、ソフトウェアに書かれたプログラムとしてではなく、それを使ってデータをどういう状態に変換しているのかを見ろ、と言っている。同様に、本書で繰り返し使ってきたレイヤー構造をやや厳密に表現すると、モノ自体(生麺、茹で麺)ではなく、この変換を行うこと(生麺を適度な茹で麺にすること)を一つのレイヤーとしてみるべきだ、ということになる。だからこそ、ソフトウェア・アーキテクチャで捉えたレイヤー構造全体が、データを価値に転換するシステムを表現し、設計することに寄与できるのである。
【続きを読む】“古いビジネスは一瞬にして消えてしまう” 冨山和彦氏が明かす「デジタル敗戦」しないための“思考法”
INFORMATION
『DXの思考法 日本経済復活への最強戦略』刊行記念講演会のお知らせ
【日時】4月16日(金)19:00-21:00
【登壇者】西山圭太(東大客員教授)、冨山和彦(IGPIグループ会長)、松尾豊(東大大学院教授・人工知能研究者)
【定員】 300名(Zoom使用/無料)
主催 資本主義の教養学講演会
運営協力 文藝春秋