メニュー

公開日:
6 min read
エンジニアリング

品質管理を放棄されたオフショア開発の実態

品質管理を放棄されたオフショア開発の実態のイメージ

よくある質問 (FAQ)

オフショア開発で発見された具体的な品質問題は何ですか?

ファビコン404エラーとAnt Design Form.Itemの誤用です。ファビコンが設定されておらず、HTMLのlang属性が日本語システムなのに「en」のまま、Viteのテンプレートをそのまま使用していました。また、Ant DesignのForm.Itemで「name」プロパティがない外側のコンテナに「required」属性を設定し、複数の子要素を持たせる矛盾した実装でした。

なぜファビコン404エラーが「バレなければいい」精神の表れなのですか?

これらのエラーは開発中にF12キーを押せば一目瞭然だからです。つまり開発者は1)エラーを認識していた、2)「動いているから問題ない」と判断した、3)「管理者はコンソールなんて見ない」と高を括った、という状況でした。ファビコンがないなら報告すればいいだけなのに、黙って放置したのは「バレないから」です。

Ant Design Form.Itemの正しい使い方は何ですか?

Form.Itemは2つの使い方があります。1)「name」プロパティがある場合はフォームフィールドとして機能し、直接の子要素は1つだけ、2)「name」プロパティがない場合はレイアウト用のコンテナとして機能し、複数の子要素を持てます。「required」はフォームフィールド(「name」付き)でのみ意味を持つ属性です。

なぜAnt Designの警告を修正しなかったのですか?

記事では4つの理由が考えられるとしています:1)「直すの面倒くさい」、2)「警告はエラーじゃないから無視していい」、3)「動いてるから問題ない」、4)「日本人の管理者SEはコンソール見ないからバレない」。AIに聞けば10分もかからず解決できる問題でした。

この問題に見られる「三重の欠如」とは何ですか?

1)エンジニアリング力の欠如:警告を無視することは将来的な保守性や拡張性を考慮していない証拠、2)AI活用力の欠如:2025年の今、AIという強力な開発支援ツールが存在するのに活用していない、3)プロ意識の欠如:「バレなければいい」という精神でクライアントを騙し、品質を偽装している。

これらの問題が示す根本的な課題は何ですか?

技術力以上に「職業倫理の欠如」を示しています。「バレなければいい」文化は、開発者としてのプロ意識の欠如を表しており、クライアントに対する誠実さがありません。これは単なる技術的な問題ではなく、開発パートナーとしての信頼性の問題です。

前回の記事で、Gitコミット履歴から見えたオフショア開発の問題点を分析しました。今回は、その同じプロジェクトで実際に起きた、さらに深刻な品質問題について共有します。

ブラウザコンソールに表示された現実

改修作業のためにブラウザの開発者ツールを開いた瞬間、目を疑いました。

   GET http://localhost:5174/favicon.ico 404 (Not Found)
Warning: [antd: Form.Item] `name` is only used for validate React element.
Warning: [antd: Form.Item] A `Form.Item` with a `name` prop must have a single child element.

いくつものエラーと警告。これが「納品」されたシステムの実態でした。

問題1:ファビコン404エラー - 「バレなければいい」の精神

何が起きていたか

ファビコンが設定されていない、HTMLのlang属性が日本語システムなのにenのまま、Viteのテンプレートをそのまま使用という状態でした。

なぜこれが問題なのか

これらのエラーは開発中にF12キーを押せば一目瞭然です。つまり、彼らは:

  1. エラーを認識していた
  2. 「動いているから問題ない」と判断した
  3. 「管理者はコンソールなんて見ない」と高を括った

ファビコンがないなら「ファビコンが設定されていません」と報告すればいいだけです。AIならそう答えます。しかし彼らは黙って放置しました。なぜなら「バレないから」です。

問題2:Ant Design Form.Itemの警告放置

❌ 実際のコード(誤用)

   // ❌ 実際のコード(誤用)
<Form.Item label="PIC名" required>
  <div className="flex gap-4">
    <Form.Item name="pic_first_name">
      <Input />
    </Form.Item>
    <Form.Item name="pic_last_name">
      <Input />
    </Form.Item>
  </div>
</Form.Item>

✅ 正しい実装

   <Form.Item label="PIC名">
  <div className="flex gap-4">
    <Form.Item name="pic_first_name">
      <Input />
    </Form.Item>
    <Form.Item name="pic_last_name">
      <Input />
    </Form.Item>
  </div>
</Form.Item>

この問題は、Ant DesignのForm.Itemの基本的なルールを理解していないことが原因です:

  • nameプロパティがある場合: フォームフィールドとして機能し、直接の子要素は1つだけ
  • nameプロパティがない場合: レイアウト用のコンテナとして機能し、複数の子要素を持てる

requiredはフォームフィールド(name付き)でのみ意味を持つ属性です。 外側のForm.Itemにはnameがないため「コンテナ」として扱われるべきなのに、required属性を設定している矛盾した実装でした。

「面倒だから直さない」という怠慢

この警告、AIに聞けば10分もかからず解決します。 しかし彼らは直しませんでした。 なぜか?恐らく、下記のいずれかでしょう。今までも何度も見てきた言い訳です。

  1. 「直すの面倒くさい」
  2. 「警告はエラーじゃないから無視していい」
  3. 「動いてるから問題ない」
  4. 「日本人の管理者SEはコンソール見ないからバレない」

三重の欠如

1. エンジニアリング力の欠如

警告は「今は動いているが、正しくない実装である」というフレームワークからのメッセージです。これを無視することは、将来的な保守性や拡張性を考慮していない証拠です。

2. AI活用力の欠如

2025年の今、AIという強力な開発支援ツールが存在します。使い方は簡単です。エラーメッセージをコピペして「どう直せばいい?」と聞くだけ。それすらしない、できない、知らない。

3. プロ意識の欠如

最も深刻なのはこれです。「バレなければいい」という精神。クライアントを騙し、品質を偽装し、プロとしての誇りがゼロ。

管理者SEは言った

以前、私が「なぜ日本で普及していないAnt Designを採用したのですか?」と管理者SEに質問したところ、 「開発速度優先で、彼らが使い慣れている環境で構わないと伝えたからです」と回答されました。

使い慣れている? 基本的な使い方すら理解せず、警告を放置しているのに?

まとめ

今回発見された問題は以下の通りです:

  1. ファビコン404エラー:基本的なサイト設定の放置
  2. Ant Design Form.Itemの誤用:フレームワークの基本理解不足
  3. 「面倒だから直さない」という怠慢:プロ意識の欠如

これらの問題は、技術力以上に職業倫理の欠如を示しています。

次回の記事では、この「バレなければいい」文化の深刻さと、AI時代における開発パートナー選定の重要性について詳しく分析します。