なぜ最近のWEB開発は毎回アプリケーション基盤を作り直してしまうのか
30年近くWEB開発の現場にいます。
HTMLベースで、ページ単位の見積もりが行われる時代に、PHPを用いてヘッダやフッタ、メニューを強化しつつ、DBと連携して一気に開発スピードが上がり、保守工数が減りました。
30年ほど前、趣味でビリヤードの対戦記録を残すサイトを作った時に、同じような表を<TABLE><TR><TD>・・・と書くのが面倒でした。
なので、全てデータ化しました。
ユーザが増えたときはボタン1つで各自のページが作られるようにしました。
そういった経験から、如何に楽して手間のかからないWEBシステムを作るかを考えて来ました。
最近のWEB開発に違和感がある件
実現するページや機能に対して開発速度が遅くなってますよね。
npmの依存関係は数百を超え、
会員管理も権限管理もworkflowも毎回スクラッチで作る。
そしてプロジェクトが始まるたびに
まるで前のシステムが存在しなかったかのように
新しい「基盤」が作られる。
求人票には
「Typescriptベースの開発経験者」とだけ書かれている。
これは本当に進化なのか?という疑問に対して整理してみました。
WEBには最初から2つの進化系統があった
実はWEB開発には歴史的に異なる2つの潮流が存在していると思います。
① WEBページ制作の系統
こちらは一貫して
効率化と構造化の歴史
でした。
- CMS
- テンプレート管理
- コンポーネントやモジュール化
- コンテンツモデル
- Workflow
- 権限
- Plugin
- CCK(Contents Construction Kit)※カスタムフィールドの構造的管理
つまり
「どうすれば構造的に量産できるか」
を考え続けてきた世界。
Joomla
Drupal
WordPress
は長年その構造化をシステム工学的な標準に基づいて行って来ました。
② WEBシステム開発の系統
こちらは全く違う進化を辿った。
- 業務画面のWEB移植
- 画面単位開発
- UI中心
- フレームワーク中心
もともと
- C/S開発者
- Java業務系
- SIer
などがWEBに参入した流れが強い。
結果として
WEBの構造化思想は十分に継承されなかった
WEBの基本を理解しない、画面を作ればWEBという考えのもとで、アーキテクチャを考えずにいきなり作る開発が増えたきっかけでもあると思います。
今は大分改善されて来ましたが、行政のWEBサイトのUIが残念な時期が続いてたのもそういう理由かと思います。
Headlessは進化だったが、基盤思想が疎かになった
Headlessは確実に進化です。
- API境界の明確化
- 分散実行
- Edge Runtime
- Streaming SSR
- 高度なキャッシュ戦略
しかし同時に
アプリケーション基盤としてあるべき姿が見えなくなった。
プログラム言語のスキルと、アーキテクチャ設計のスキルの違い抜きに、
後者を深堀りしないまま、とにかくその言語が使えるという人がシステム開発する機会が増えたように思えます。
その結果、
- 会員管理 → 自作
- 権限 → 自作
- workflow → 自作
- plugin機構 → 自作
- cache整合性 → 自作
が当たり前になったように思えます。
PHPの頃には無数に溢れていた、会員管理基盤、EC基盤、テンプレートフレームワーク等々が一から作り直しされている様子を目にします。
「AIに作らせればいい」がWEB開発を壊す理由
〜毎回アプリケーション基盤を作り直す現場から〜
最近よく聞く言葉があります。
「AIに都度作らせればいいじゃないですか」
確かにAIは
- UI生成が得意
- Reactコード生成が得意
- API呼び出し生成が得意
しかし
アプリケーション基盤は局所最適で作れるものではない。
AIは独自構造を、
より標準的な構造に書き換えようとする。
つまり
俺流の基盤はAIに破壊されやすい
と言えます。
逆に、
- RBAC
- Clean Architecture
- DDD
- OpenAPI contract
- Event駆動
といった 普遍構造を持つ基盤はAIに強い です。
基盤はビジネス資産になる
例えばリクルート社のホットペッパーは、最初はコンテンツの代理入力で運営されてました。
しかしCMS化により、顧客自身にコンテンツ投入させる事で爆発的にサービス規模が大きくなりました。
しかもアプリケーション基盤を整備する事で、簡単に類似サービスを作れるようになりました。
つまり
コンテンツ事業は基盤事業へ進化した。
これは、
- Shopify
- Salesforce
- Notion
などにも共通します。
WEB開発は今、再統合期にある
WEB開発は退化したのではありません。
- runtimeは進化した
- execution modelは進化した
しかし
設計文化は分断された。
今後求められるWEB開発思想
これから必要なのは
ページ制作思想とシステム開発思想の融合であると思います。
つまり
アプリケーション基盤開発
です。
AI駆動開発への適用
アプリケーション基盤、つまりWEBシステムの土台が盤石であるならば、
AIが意識するのはその上で動く個々のロジックで済むことになります。
何なら、別にAI等使わなくても良いローコード・ノーコード開発に落とし込めます。
本来目指すべきは、AIの活用ではなく、自社独自のアプリケーション基盤の構築だと思います。
そのためのノウハウは前世代の開発資産の中に埋もれています。
残念ながらそのアーキテクチャ設計をドキュメントに落としていない例が多いです。
先人の工夫を設計に起こし、それを新たな言語で再設計する。
そんな流れを作れる会社がこの先数年もAIに振り回されないで効率的なWEB開発を進める事が出来ると思います。
最近シニア層としての助言が求められるのも、このあたりの話が多いです。
Discussion