2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なぜ、ローコード開発にこそ「厳密な設計」が必要なのか。実体験から学ぶリスク管理

2
Posted at

はじめに

「kintoneの開発だけお願いしたいです」

最初は、そう聞いていた。

既存の「基幹業務アプリ」を、新しい「顧客管理アプリ」「案件管理アプリ」へリプレイスする案件。

さらに、外部システムとの連携もある。

僕は、kintone側の実装担当として参画した。

話としては、

  • 要件定義は済んでいる
  • 必要な内容は整理済み
  • あとは実装中心

という前提だった。

しかし、実際に案件へ入ってみると、そこにあったのは「完成した要件定義」ではなく、

“まだ誰も全体像を整理できていないプロジェクト”

だった。

今回は、この案件で実際に起きていたことを通して、

  • PM不在案件で何が起きるのか
  • 要件定義不足が現場へどう影響するのか
  • データ移行を軽視すると何が起きるのか

について、実体験ベースで書いてみたい。


「要件定義済み」のはずだった

最初に共有された資料には、

  • 必要そうなアプリ
  • 必要そうなフィールド
  • 実現したい内容

は書かれていた。

しかし、実際には、

  • 現行アプリとの差分整理
  • 外部システム連携仕様
  • 主キー設計
  • データ移行ルール
  • 責任分界
  • 運用フロー

などの重要な部分が整理されていなかった。

つまり、「やりたいこと」は存在していたが、

“どう成立させるか”

が定義されていなかった。

そして、この状態のままプロジェクトは進み始めた。


タスクも指示も「空中戦」のまま

プロジェクトにおいて驚いたのは、明確な指示も、進捗を管理するためのタスク(チケット)も一切作られなかったことだ。

本来、これほど複雑なデータ移行やシステム連携が絡むなら、一つひとつのタスクを切り出し、誰が、いつまでに、何を行うかを可視化しなければならない。

しかし、そこにあったのは「なんとなく話が進んでいる」という空気感だけだった。

結局、僕は開発担当でありながら、自らBacklogを立ち上げ、散らばった情報を拾い集めてチケット化し、リスクを可視化する作業から始めざるを得なかった。

指示を待っていれば、プロジェクトは1ミリも前に進まない。

そんな状況だった。


フィールドを確認し始めて気づいた違和感

僕はまず、既存アプリと、新アプリ設計を見比べ始めた。

すると、すぐに違和感が出てきた。

例えば、

  • 現行アプリに存在する項目が新アプリにない
  • 外部システム連携に必要なフィールドが存在しない
  • フィールド名は同じでも用途が違う
  • データ型が合っていない
  • 必須条件が整理されていない

など。

さらに問題だったのが、「顧客管理」の概念だった。

元々の運用では、顧客マスタが存在していなかった。

つまり、

  • 顧客IDがない
  • 顧客を一意に識別できない
  • メールアドレス頼み
  • 同一人物判定が曖昧

という状態だった。

データ移行では、この“ID設計”が極めて重要になる。

しかし、この時点ではまだ、そこまで深く認識されていなかったように感じた。


PM不在案件で起きること

この案件で一番大きかった問題は、「誰も全体責任を持っていない」ことだった。

もちろん、個々の担当者は動いている。

しかし、

  • 誰が最終判断するのか
  • どの順番で進めるのか
  • 何を優先するのか
  • どこまでを今回やるのか

が曖昧だった。

すると、何が起きるか。

現場の技術者が、自然と“PM役”をやり始める。

例えば僕は、

  • フィールド差分確認
  • 外部システム連携の仕様確認
  • タスク分離
  • Backlog起票
  • 実装可否確認
  • 外部システム連携の技術的確認

などを行うようになっていた。

本来、僕は「開発担当」として入っていたはずだった。

しかし気づけば、

「このままだと危ない」

を検知する役になっていた。


「顧客ID」が消えた瞬間

この案件で象徴的だったのが、「顧客ID」の扱いだった。

最初に共有されていた資料には、顧客ID項目は存在していた。

つまり、本来は、

  • 顧客ID
  • ログインID
  • メールアドレス

は別概念として扱われる前提だったはずだ。

しかし、プロジェクトが進むにつれて、いつの間にか、

「ログインID(メールアドレス)=顧客ID」

という認識に置き換わっていた。

明確に誰かが決めたわけではない。

ただ、会話や運用イメージの中で、徐々にそうなっていった。

しかしこれは、データ移行やシステム連携では非常に危険だった。

メールアドレスは、

  • 変更される
  • 家族共有される
  • 同一人物で複数存在する
  • 空欄がある

など、“識別子として不安定”だからだ。

一方、顧客IDは本来、

「システム内で顧客を一意に識別するためのキー」

として存在する。

つまり、

  • ログインID
  • 連絡先
  • 顧客識別子

は、本来別管理すべきものだった。

しかし、全体設計を整理する人が不在だったことで、

“概念そのもの”

が徐々に崩れていった。

そして僕は、

「メールアドレスを主キー扱いすると危険ではないか」

と確認することになった。


一番危険だったのはデータ移行

特に危険だったのが、データ移行フェーズだった。

今回の移行は、単純なCSVインポートではない。

  • 複数システム間
  • 旧アプリ → 新アプリ
  • 顧客データ
  • 案件データ
  • 見積データ
  • 注文データ
  • 添付ファイル
  • コメント
  • 外部システム連携

などが絡む。

つまり、

“全部つながっている”

状態だった。

しかも、

  • 名寄せルール未確定
  • クレンジング基準未確定
  • マッピング変更発生
  • 仕様変更継続
  • テストデータ変化

という状況。

データ移行は、「最後にやる作業」に見えやすい。

しかし実際には、かなり早い段階から設計しておかないと危険だ。

なぜなら、

“運用設計そのもの”

が出るから。


「やるしかない」は危険な言葉

案件中、何度も出てきた言葉がある。

「やるしかない」

確かに、現場では必要な場面もある。

しかし、この言葉は時々、

“未整理のリスクを現場へ押し込む言葉”

にもなる。

例えば、

  • スケジュール未整理
  • 責任未定義
  • 手順未確定
  • データ未確認

でも、

「なんとか進める」

になってしまう。

すると最終的に、負荷は現場へ集中する。

特に、

「問題に気づいてしまう人」

ほど負荷を抱えやすい。


それでも、整理は必要だった

僕は途中から、

  • 移行手順書
  • クレンジングルール
  • マッピング整理
  • 作業ディレクトリ整理
  • チケット化
  • リスク共有

などを進めていた。

これは、「完璧にしたかった」わけではない。

最低限、

“何をやっているのか分かる状態”

にしたかった。

データ移行は、勢いでやると事故が起きる。

特に、

  • 誰が
  • 何を
  • どの順番で
  • どのデータを
  • どこへ入れるか

が曖昧なまま進むと、後から復旧できなくなる。

だからこそ、整理が必要だった。


最後に

今回の案件で強く感じたのは、

「PMがいるかどうか」

よりも、

“誰が全体を見るのか”

が重要だということだった。

特に、

  • ローコード
  • SaaS連携
  • データ移行
  • 外部システム連携

が絡む案件では、

「なんとなく進める」

が一番危険になる。

開発だけなら、後で修正できることも多い。

しかし、データ移行や運用設計は、後戻りコストが大きい。

だからこそ、

  • 要件整理
  • 責任整理
  • 優先順位整理
  • 手順整理

は、本当に大事だと思う。

今回の経験はかなり大変だったが、同時に、

「プロジェクトが崩れる時、現場では何が起きるのか」

を、かなりリアルに学んだ案件でもあった。


補足

ローコードだから簡単になるのではなく、

「設計を曖昧にしたままでも動いてしまう」

からこそ、むしろ全体設計が重要になる。

今回の案件は、それを強く実感した経験だった。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?