QCDの死角

失敗の正体

システムの失敗は見えないことがある。ブラックボックスであるがゆえに隠せてしまうからである。失敗かどうかの線引きができないところがシステム構築プロジェクトの難しいところである。

エンジニアの真実

もしかしたら、エンジニアが都合の悪いことは隠していることがあるかもしれない。しかし、決めつけてしまうとエンジニアはへそを曲げてしまう可能性がある。隠しているつもりはなくても隠れていることもある。

成功の境界

失敗の線引きは、納期が遅れることであろうか。バグが多いということであろうか。実は、状況によって一概に言えないのである。QCDという言葉があるが、品質と費用と納期のバランスを上手にとったとしても成功か失敗か、すぐにはわからないのがシステムという無形物である。

コスパの本質

コスパという言葉があるが、かけるコストに対して、どれだけのパフォーマンスが出せるかが問題となる。システム開発では、コストからやりたいことを計算するのではなく、やりたいことを明確にしたうえで、コスト内でリッチ度合いを調節することが重要である。

まとめ

システム開発においては、失敗が見えにくいため、失敗しないように見えるのかもしれない。失敗しないことは、成功であるということでもない。時間が経つにつれて失敗を感じることもあり得るのである。

関連記事

従来開発 vs ローコード開発比較

基本概念

企業のデジタル化が加速する中、システム開発手法の選択は事業成功の鍵を握る重要な決断となっている。従来開発は、プログラマーがコードを一から書き上げる伝統的な手法で、高い技術力と豊富な経験が求められる。一方、ローコード開発は視覚的なインターフェースを活用し、最小限のコーディングでアプリケーションを構築する革新的なアプローチである。両者の特徴を正しく理解することで、プロジェクトに最適な選択が可能になる。

費用対効果

従来開発では高度なスキルを持つエンジニアの確保が必要で、人件費が開発コストの大部分を占める。特に大規模プロジェクトでは、設計から実装、テストまで長期間の人的リソースが必要となり、総コストは数千万円規模に達することも珍しくない。対してローコード開発は、専門知識が少ない人材でも短期間でアプリケーション構築が可能で、初期投資を大幅に削減できる。しかし、プラットフォームのライセンス費用や将来的なカスタマイズ制約を考慮すると、長期的なコスト効率は慎重に検討する必要がある。

開発速度

開発期間において両手法の差は歴然としている。従来開発では要件定義から本格運用まで数ヶ月から数年を要するケースが一般的で、複雑な機能実装には綿密な設計と段階的な開発が必要である。一方、ローコード開発は既存のテンプレートやコンポーネントを活用することで、数日から数週間での迅速なプロトタイプ作成が可能である。特にビジネスアプリケーションや内部管理システムでは、従来開発の10分の1以下の期間で実装できる場合もある。ただし、複雑なロジックや高度な機能が必要な場合は、結果的に従来開発と同等の期間を要することもあるため、プロジェクトの性質を見極めることが重要である。

品質と制約

システムの品質面では、それぞれ異なる特徴がある。従来開発は細部まで制御可能で、パフォーマンス最適化や独自機能の実装において高い品質を実現できる。セキュリティ要件が厳格なシステムや大量データ処理が必要な基幹システムでは、従来開発の柔軟性が威力を発揮する。ローコード開発は標準化されたコンポーネントを使用するため、一定の品質は保証されるが、プラットフォーム依存による制約がある。また、複雑な業務ロジックの実装や外部システムとの高度な連携において、期待する品質レベルに到達できない可能性もある。品質要件と開発リソースのバランスを慎重に評価することが成功の鍵となる。

まとめ

最適な開発手法の選択は、プロジェクトの目的、予算、期間、品質要件を総合的に評価して決定すべきである。ローコード開発は迅速性とコスト効率に優れ、内部業務システムや簡易的なWebアプリケーション開発に適している。従来開発は高い技術的要求や独自性が必要なシステムに最適である。重要なのは、どちらか一方に固執するのではなく、各プロジェクトの特性に応じて柔軟に選択することである。

続きを見る >

リーダーの多忙による弊害

危険な繁忙化

なぜか忙しくしているPMやリーダーとなるSEがいれば危険信号である。リーダーが忙しくなると全体的な最適化や効率的な運用ができていない可能性がある。結果として、無駄に費用がかかったり、技術的負債が大きくなったりする。

役割分担の歪み

システムのユーザー側から見ると、SEという見え方しかしないと思われるが、実際はシステムの運用や開発には細かな作業分担が発生する。この作業分担ができていない場合は窓口のSEが余計な作業を行っている可能性がある。役割分担の不均衡がもたらす忙しさではなく、まったく仕事としてやらなくてもよいような事に時間を使っていて忙しい場合がある。

プロセスの確立

たとえば、プログラムが解析できる人をリーダーとしてしまうと、開発者に手取り足取り指示をしてしまうことがある。もし、リーダーがプログラムレビューなどの作業や、開発者にプログラム上の細かな指示をしている場合は注意が必要である。何を基準にプログラムレビューや指示を行うのか、という仕事を見える化し、仕組化することがリーダーの務めである。

俯瞰的視点

木を見て森を見ずという言葉があるように、リーダーとなる人は指針を作ったりメンバーをプロジェクト成功へ導く役割がある。リーダーが開発メンバーと同じように木ばかりを見ているようであれば、森を見る人が非エンジニアであるユーザー側となってしまうことが考えられる。

まとめ

誰が森を見るのか、リーダーやPMが常に忙しそうにしている場合は、何に時間を使っているのか調査する必要がある。実はここがボトルネックになっていてプロジェクトの進行が思うようにいかなかったり、頻繁にリスケが発生していることも多くある。しかし、これは本人にヒアリングするだけでは表面化しないため、ユーザー側の担当者やプログラマーなどの周辺人員から浮き彫りにすることが望ましい。

続きを見る >

業務データ資産の発見と活用

AI活用の第一歩

AI活用による生産性向上のためのシステムツール構築では、過去データの利用が必要不可欠である。しかし、過去データが整備されていない場合の対処法を考えてみたい。多くの企業がAI導入を検討する際、まず直面するのがこのデータ品質の問題である。完璧なデータセットを求めがちだが、実際には現実的なアプローチで進めることが成功への鍵となる。

目的の明確化

まず「何に使いたいデータなのか」を明確にする必要がある。目的に応じて、必要なデータの「粒度・項目・量」が変わるため、いつも扱っている部門ではない人が客観的に整理するのがよいかもしれない。例えば、生産管理の異常検知であればセンサーデータの時系列とアラート履歴が必要になり、顧客離反の予測であれば購買履歴と問い合わせ履歴が必要になる。このように具体的な用途を定めることで、収集すべきデータの方向性が見えてくる。

データの現状把握

やりたいことを整理すれば、次に足りないデータなどが見えてくるはずである。このとき、データが重複していたり、欠損していたり、バラバラであったりというのも、すべてデータはあるものと考える。形式としては、Excel、CSV、紙、システム内に点在などを把握して、データの棚卸を行う。完璧でないデータでも、適切な処理を施すことで価値ある情報源に変わる。重要なのは、現在持っているデータ資産の全体像を正確に把握することである。

データ整備の実践

データの棚卸が終われば、データクレンジング(整備)の作業方針を立てる。手動で整えるのか、何らかのツールを使うのか検討が必要である。また、このツールはExtract(抽出)、Transform(変換)、Load(読み込み)の頭文字をとってETLツールと呼ばれている。Power Queryなどがその代表例である。作業量と精度のバランスを考慮し、コストパフォーマンスの高い整備方法を選択することが重要になる。自動化できる部分は積極的にツールを活用すべきである。

まとめ

データを整えていく途中で足りないデータが発見されることもあるだろう。しかし、ここからがAIの使い様である。ファインチューニング(学習させていく)ことや、生成AIやRAG(Retrieval-Augmented Generation)を利用して補完するなどが考えられる。

続きを見る >