石橋秀仁(zerobase)書き散らす

まじめなブログは別にあります→ja.ishibashihideto.net

アプリケーション・エンジニアリングの面白さはあまり語られない

404 Blog Not Found:プログラミングとアプリ開発の違い

プログラミングしたい人々は、物が出来るまでの過程を楽しみたい人である。だから、「DBにクエリーをかけてHTMLにぶちまけるだけの簡単なお仕事」が退屈で仕方がない。しかし、アプリ開発したい人々にとって、物ができるのは出発点にすぎない。彼らが楽しむ過程というのは、それを公開し、それを人々が使ってみるところにある。それがただのハッシュなのか人工知能なのかというのは、はっきり言っておもちゃの材質程度の意味しかない。

「DBにクエリーをかけてHTMLにぶちまけるだけの簡単なお仕事」と「コンピューター・サイエンス全開のハイソなプログラミング」の二択ではなくて、第三の道があります。

それは「モデルの持つ概念の力を活かしてビジネスをモデリングするアプリケーション・エンジニアリング」です。

『エリック・エヴァンスのドメイン駆動設計 ソフトウェアの核心にある複雑さに立ち向かう』より:

システムのそういう部分(※引用注:技術的なインフラストラクチャや、特別なドメインの知識がなくても理解可能な、うまく限定できるドメインに関する問題)は、コンピュータ科学者の関心を引くらしく、他でも使える専門スキルを構築して、履歴書を書く時のいい材料になると考えられている。特化したコアは、アプリケーションを実際に差別化してビジネスの資産とするようなモデルの部分であるのに、それほどスキルのない開発者によってまとめられることになるのが通例である。そういう開発者はデータベース管理者と協力してデータスキーマを作成し、モデルの持つ概念の力を一切利用することなく1機能ずつコードを書く。(p.408-409)

「コンピュータ科学者」は「コンピューター・サイエンス全開のハイソなプログラミング」に興じます。

「データベース管理者と協力してデータスキーマを作成し、モデルの持つ概念の力を一切利用することなく1機能ずつコードを書く、それほどスキルのない開発者」は、残念ながら、たしかに「DBにクエリーをかけてHTMLにぶちまけるだけの簡単なお仕事」をやってるに過ぎません。

しかし、第三の道があります:

純粋に技術的な課題は、通常、才能のあるソフトウェアエンジニアにとって最も興味深くやりがいがあるように見えるものだが、ドメイン駆動設計によって開かれる新しい挑戦の領域は、少なくともそれに匹敵する。ビジネスソフトウェアを作るのに、混沌としたものをボルトでつなぎ合わせるようにする必要はない。複雑なドメインと格闘して、わかりやすいソフトウェア設計にすることは、優秀な技術者にとって刺激的な挑戦なのだ。(p.511)

そのビジネス、そのドメイン(問題領域)、そのアプリケーションに固有の問題があります。それを「モデルの持つ概念の力」によって解きほぐしていくこと、つまり「ソフトウェアの核心にある複雑さに立ち向かう」ことの面白さというのは、ぜひ知ってもらいたいですね。