はじめに
NTTデータ先端技術株式会社にてアジャイル開発、ならびに技術調査業務に従事している志田です。IT業界に約20年近く在籍し、色々な開発の現場や手法を経験してきました。ちょうど私がキャリアをスタートした頃は、Webサイトを構築する場合今のような便利なツールが整備されていませんでした。本格的なWebアプリケーションを作る際はJavaでStrutsといったフレームワークを利用してMVCで構築するか、軽量なものであればPHPやASPなどのサーバサイドスクリプトを使って実装する方法が主流でした。コンテンツの公開などもまだまだCMSなどは普及しきっておらず、HTMLやCSSをそのままFTPで公開サーバにアップロードする方式が主流だったと記憶しています。
当時と同じようなサイト、アプリケーションを現在の技術を利用して実現しようとすると、何倍・何十倍も手間暇をかけずに構築できますし、手法についての情報も当時とは比較にならないほど蓄積され、すぐ手に届く方法で情報にリーチできるようになっています。当時と比較すると、個人ができる範囲は大きく広がり、実際に今私に依頼が来るプロジェクトでも開発から構築運用保守まで一人で実施できるものがあります。
今後、チームで開発や構築を進めていくというスタイルより個人での開発が増えていくかという問いに対しては、現時点では答えはNOになると考えています。これは技術の進歩により開発のコストが著しく減少したことと引き換えに、システムを開発する際に検討・考慮するべき事項も爆発的に増加しているためです。今回はシステム開発を行うチーム体制について言及し、どういった役割分担でプロジェクトを進めていくべきかを整理します。
システム開発における検討事項
-
-
例えば、弊社のコーポレートサイトを再構築するといったプロジェクトがあると仮定します。この時パッと思いつくだけでも以下のような技術課題を解決していく必要があります。
実際に検討するべき事項はこれだけではなく、もっと多岐にわたると思います。特別な機能を持たない、ただのコーポレートサイトでさえこういった内容を検討する必要があります。一言で「構築する」といっても、それをどこに構築するのか、構築後にどのような運用にするのか、システムが異常事態になった場合にどうするのか、そもそも異常事態をどうやって検知するのかなど、開発だけではなくさまざまなフェーズでの知見が必要となります。 また、サイトを閲覧してきた人の特性に合わせてコンテンツの内容を変えたい、ECサイトのようにコーポレートサイト上で何らかの取引をしたい、資材をダウンロード可能にしてダウンロードした方に何かコンタクトを取りたいといった単純なコンテンツ配信の枠組みを超えた要望があると、その都度多くの検討が必要です。 それぞれの要求、技術課題に対して答えるのはそんなに難しいことではありませんが、昨今のシステムはシステムとそれを取り巻く周辺技術が広く、またそれぞれの技術要素が日進月歩で変わっています。これに対し、一人が全ての課題に対して最適解を出すことは難しく、チームとしてプロジェクトを進めていくのが正しいあり方だと考えています。
今後のチームのあり方
システムを構成する要素が増加していくことに伴い、、システム全体の把握や課題の対応などを一人で実施するのはが難しくなっていくでしょう。これまでも複数人でチームを組んでプロジェクトを進める形式が一般的でしたが、今後はこのチームの組み方に関してスペシャリストとメディエータといった役割の分離が起こっていくのではないかと考えています。
システムに対して必要となる技術要素、知見は多岐に渡ります。それぞれの技術要素に対してスペシャリストを配置し、スペシャリストは主体的に担当する技術要素に対して問題解決につとめますが、これを単独で実施するのではなくメディエータと共に解決を実施していきます。ここでメディエータと命名している理由は、一般的なプロジェクトマネージャのようにプロジェクトリソースとしての人的リソースの管理を実施するわけはなく、各スペシャリストで検討した結果に対し、プロジェクト全体の方向性やそれぞれの検討結果の擦り合わせ、調整を行うためです。さらに、メディエータはそれぞれのスペシャリストと十分なコミュニケーションが取れるレベルでの技術理解が必要です。
前出のコーポレートサイト構築を例にとると、Webセキュリティに対して深い理解のあるスペシャリストと、クラウドサービスに関して知見を持つスペシャリストがいたとします。Webセキュリティのスペシャリストでコーポレートサイトに関わるさまざまな種類の攻撃と、その防御策を検討していきます。その結果、WAFやEDRの導入が必要という結果になった場合、メディエータはその結果をもとにクラウドサービスのスペシャリストとどのクラウドサービスであればコストをかけずに導入できるのかを考えます。導入が難しい、制限があるといった場合には、再度Webセキュリティのスペシャリストと検討する必要があります。
このような体制にすることで各スペシャリストは自身の専門外の分野についても知見を得ることができ、メディエータは広い範囲で薄く、その分野専門の知見を得ることができます。アジャイル開発の現場ではすでにそうなっている部分も多いのですが、今後の開発の現場は上から下に命令する階層型モデルではなく、エンジニア同士がフラットにつながるネットワーク型モデルに移行し始めています。 イノベーションは既存技術の組み合わせによって発生します。メディエータと共に、各スペシャリストがコミュニケーションを活性化させることで、スペシャリスト同士の刺激になり新しいイノベーションが生まれる可能性があります。だからこそ、今後システムに関わる技術要素が肥大化していくに従い、このメディエーターのロールで動けるエンジニアの需要は高まっていくと考えられます。
※本記事はエヌ・ティ・ティ・データ先端技術株式会社から提供を受けております。著作権は同社に帰属します。
[PR]提供:エヌ・ティ・ティ・データ先端技術