戻る

最も難しかった開発経験

Baseconnectで、データの修正方法を再利用できるツールにまとめ、本番パイプラインを改善した経験

BaseconnectでAIエンジニアのインターンとして、データ生成パイプラインの改善と、S3に保存された本番データの修正を担当しています。顧客に直接提供するデータを扱うため、修正の対象と結果を慎重に確認します。繰り返す誤りの修正方法を、再利用・改善できるtransformにまとめ、本番パイプラインにも対応する修正PRを作成し、発生源から同じ誤りを減らしています。

成果

3か月、約320時間で190件のPRを作成しました。これらのPRは、同僚のレビューを経てマージされました。この3か月のうち、後半の1.5か月(約180時間)はデータ修正に集中的に取り組み、38件のタスクを解決しました。個別の依頼に対応しながら、自分の作業の流れをあらかじめ設計し、AIによる調査と自分の判断を記録しました。修正方法をツールにし、本番パイプラインの改善にも反映しました。取り組みの中で、特定のデータ項目では、精度が40%台から85%に、データカバー率が30%台から75%に改善しました。

3か月・約320時間
190 PR38精度40%台 → 85%データカバー率30%台 → 75%

うち後半1.5か月・約180時間・38件のタスク

2026年6月初旬〜9月初旬、担当した企業の部署・組織情報の項目で、人による作業とAIの支援を組み合わせて改善を進めました。この期間に、精度は40%台から85%、データカバー率は30%台から75%へと変化しました。

精度=正しく抽出できた件数 ÷ 抽出した総件数。データカバー率=抽出した総件数 ÷ 正解データの件数。

業務と役割

技術・ツール

Python、SQL、AWS S3、LLM API、自動テスト、GitHubのPR・レビューを利用しています。S3では顧客に直接提供する本番データを扱い、LLM APIは情報の抽出・検証に使います。調査・実装はClaudeの支援を受けて進めています。自分用のダッシュボードは、Python標準ライブラリのHTTPサーバー、ローカルデータベース、HTML/JSで構成しています。

チームでの進め方

アルバイトのインターンとしてチーム開発に参加し、データチームや顧客からの指摘をもとに調査しています。コードの変更は、調査、修正案の作成、PR、同僚のレビュー、マージ、検証環境での確認、本番反映の順に進みます。既存データの修正は、私が本番環境で直接実行します。dry-runで差分を確認し、実行後にも結果を確かめています。

私・Claude・同僚の役割

私が担当するのは、課題と目標の定義、AIの調査結果の評価、修正方針・対象範囲の決定、リスクの高い箇所の確認です。PRの作成、受け入れ基準の記載、マージ後の検証と記録、本番データの修正も行います。Claudeには、調査と再現、原因候補の切り分け、コード案・テストコードの作成、対象リストやコマンドの整理を依頼します。同僚は、性能・境界条件・集計基準のコードレビュー、元の課題や業務上の定義の共有、既存の作業フレームワークの保守を担当しています。

開発内容

①入力・前処理・モデルによる抽出・検証・保存の各段階を調べ、抽出漏れや誤抽出、データの誤りに対する修正PRを作成。②行単位の評価、反例を含む検証、変更前後の2組のサンプル比較など、評価方法を設計。③再利用できるtransformで既存データを修正し、同じ方針のPRで本番パイプラインも修正。本番環境でのデータ修正を実行。④タスク、処理バッチ、検証結果、次の作業、ログを管理する自分用のダッシュボードを作成。

参考資料

インターンで扱うコードは社内リポジトリにあるため、このページでは調査方法、判断の根拠、検証の進め方を紹介します。個人開発については、CorpLink-AIのソースコード(GitHub)、運用中の三つのWebアプリを紹介するポートフォリオ、職務経歴書(PDF)を参照できます。リンクはページ末尾にまとめています。

Baseconnectの事業と担当業務

Baseconnectは、企業情報のデータベースを提供しています。WebページやPDFなどの公開情報から、企業、部署、人物、連絡先の情報を抽出・構造化し、顧客に届けています。本番パイプラインは収集、抽出、検証、保存の工程から成り、モデルを使う抽出処理も組み込まれています。

2026年からAIエンジニアのインターンとして、企業情報の抽出品質の改善に携わっています。抽出漏れや誤抽出、データの誤りの原因を調べ、データ生成パイプラインのコード修正、評価方法の設計、既存データの修正を進めています。S3に保存されたデータは、顧客に直接提供する本番データです。このデータを使ってパイプラインを調査・修正するため、自分用の作業環境も整えました。コードを変更した際は同じデータで検証し、PRを作成します。既存データの修正も、私が本番環境で直接実行しています。

インターンの初めに、作業の手順と分担を決める

インターンを始めた当初は、稼働中の本番パイプライン、初めて扱う業務データ、大量の既存コードを理解する必要がありました。Claudeで調査・開発を進める中で、会話が終わると調査結果を引き継ぎにくく、コード案が業務の要件に合わないこともありました。そこで作業を九つの段階に分け、各段階で誰が何をするかを決めました。

九つの段階のうち、五つは私による判断・実行、二つはAIへの依頼、二つは記録に当たります。AIが調査と実装を支援し、私が課題を定義して、妥当性やリスクを判断し、最終的に結果を検証します。その後の開発、レビュー、検証も、この手順に沿って進めています。

作業の進め方
  1. 1私の判断・実行課題・目的・目標を私が定める
  2. 2AIへの依頼調査をClaudeに依頼
  3. 3私の判断・実行調査結果の妥当性を私が判断
  4. 4AIへの依頼コード案の作成をClaudeに依頼
  5. 5私の判断・実行リスクと業務上の妥当性を私が確認
  6. 6私の判断・実行修正案を調整してPRを作成
  7. 7記録受け入れ基準をMarkdown(.md)に記載
  8. 8私の判断・実行マージ後、基準に沿って検証
  9. 9記録PRのコメントに検証結果を記録

調査の根拠と判断を残す

記録は三か所に残します。まず、変更前に受け入れ基準をMarkdownファイル(.md)へ書きます。対象、比較用サンプル、保護する正常データ、新しい処理の動作をログで確認する方法を定めます。次に、検証結果をPRのコメントにまとめます。変更前後の比較、正常データへの影響、処理が動いた記録を、レビュー担当者と後から読む自分が確認できるようにします。さらに、調査、dry-run、本番実行、実行後の確認をダッシュボードとログに記録し、新しいAIセッションの開始時に読み込んで作業を続けます。

先に基準を決めておくと、検証で確かめることが明確になります。経緯をまとめておけば、次の会話で説明し直す手間も減らせます。レビュー担当者が根拠を確かめられ、新しいセッションでも作業を再開できるように、記録の残し方を整えました。

タスクに根拠と検証結果を記録
受け入れ基準(.md)PRとコードレビュー基準に沿った検証PRコメントに結果を記載作業ログ次のセッションで続行

これまでの経験を生かし、進捗を追える単位に分ける

旅行会社では、業務要件を整理し、開発担当者と日程を調整してテストを進めました。自分のスタジオでは、繰り返す業務を手順にまとめ、カスタマーサポート担当者と分担しました。こうした経験を生かし、インターンでも一つのチケットを「タスク → 処理バッチ → 各段階の実施記録」に分けています。進行中のバッチには、次の作業、担当者、関連PR、資料のパスを記録します。コードのマージ、dry-run、本番実行、実行後の確認を別々の段階として管理し、どこまで進んだかを把握しています。

データの比較では、同じ対象を安定した業務上のキーで結び、バッチごとの結果を追えるようにしています。比較の前に対象範囲と環境がそろっているかを確認し、条件が異なる結果は分けて扱っています。

自分用の作業ダッシュボードをつくる

AIと長期の作業を進めるうちに、四つの課題が繰り返し現れました。過去の判断や手順が抜けること、調査・検証結果が会話ごとに散らばること、人が経緯を覚えて説明し直す必要があること、文脈が増えるほどコストと不要な情報も増えることです。そこで、データベースを備えた自分用のダッシュボードをつくりました。タスクと処理バッチの状態、PRの受け入れ状況と基準のチェックリスト、検証結果と問題分類、作業ログ、誤りを検出するルールの状態と推移、新しいセッションで再開するための情報を保存しています。

AIの支援を受け、Python標準ライブラリのHTTPサーバー、ローカルデータベース、HTML/JSの画面で実装しました。判断や統合の支援には高性能なモデル、調査や繰り返し作業には軽量なモデルを使っています。人とAIが同じ記録を参照しながら進められるよう、毎日使って改良を重ねています。

自分用ダッシュボードのイメージ図

表示内容はすべてサンプルです

タスク段階次の作業担当者
A種別データを修正実行結果を確認中正常なサンプルを確認私
役職の分類を確認dry-runの結果確認待ち修正対象の範囲を確認私
PRの受け入れ確認項目

✓ 対象

✓ 比較用サンプル

✓ 処理が動いた記録

検出ルールの状態

ルール A · 12 → 8 → 3

ルール B · 9 → 5 → 2

修正方法を再利用し、本番パイプラインにも反映する

S3に保存され、顧客に直接提供する本番データには、部署名の混在、人物と所属の対応誤り、役職分類の不一致などが生じることがあります。既存データを修正するとともに、パイプラインのどの処理で誤りが生まれたかを調べ、同じ問題が繰り返される原因にも対応します。

既存データと、誤りの発生源をそれぞれ修正しました。既存データについては、誤りの種類ごとに修正処理をtransformへまとめ、再利用・改善できるようにしました。dry-runとバックアップを備え、修正するデータと、一見不自然でも業務上正しいため残すデータを区別しています。発生源については、同じ修正方針を本番パイプラインの抽出・検証・保存の該当箇所に反映するPRを作成しました。新しい形の問題が見つかった際も、既存のtransformにルールを追加し、検証しながら改善できます。

本番環境でのデータ修正は、私が実行しています。dry-runで差分を確かめ、バックアップを取ってから本番で実行し、結果を確認します。検証結果はPRとタスクの記録に残します。この手順で、1.5か月に38件のデータ修正タスクを解決しました。

チームでは誤りを分類し、同じ種類の誤りを検出すると、アラートとタスクが生成されます。私は既存のtransformをそのまま使えるか、改善してから実行するかを判断し、本番パイプラインの該当箇所も修正します。実行前にはバックアップを取ります。失敗時はバックアップから復元する想定ですが、これまで復元が必要になる失敗は発生していません。

既存データの修正 / 本番パイプラインの修正
既存データの修正

再利用可能なtransform

本番パイプラインの修正

同じ修正方針を反映するPR

次のバッチで再利用し、検証・改善

データを変更せずに確認dry-runバックアップ本番環境で実行実行結果を確認

開発で難しかった点と、そのときの判断

同じ誤りの発生源を調べる

出力で見つかった誤りの原因は、入力、前処理、モデルによる抽出、その後の検証のいずれの段階にもあり得ます。私は処理ごとの結果を比べ、原文の情報が失われた段階や、原文にない情報が加わった段階を特定します。必要な情報がモデルに届いていることを確認したうえで、モデルの処理も調べています。

実データで原因を確かめてから修正する

PDFから抽出した部署名に同じ文字が繰り返し現れ、実在しない部署名になったことがありました。まず、HTML変換時の並べ替えや、資料に記載された人事異動の影響を考えました。これらの仮説を元のPDFで確かめるため、私はClaudeに実データでの再現を求め、PDF内の文字座標を調べてもらいました。その結果、太字を表すために、同じ文字を少しずらして重ねて描いていたことが原因だと分かりました。こうして原因を確かめてから、修正方法を決めています。

正常なデータを保護しながら修正する

データ修正では、誤りと、一見不自然でも業務上正しいデータを見分ける必要があります。確実に判断できないものは、上流の処理や人による確認に回します。バッチごとにdry-runの差分を確認し、バックアップを取ってから本番で実行します。実行後には、正しく修正できた件数と新たな誤りが生じた件数をそれぞれ数え、両方を確かめています。

修正の結果を、基準とログで確かめる

マージ前に、受け入れ基準をMarkdownファイル(.md)に記載します。問題のデータが出なくなったかを調べるとともに、ログで新しい処理が実際に動いたことを確認します。変更前後で同じ比較用サンプルを使い、正しい結果と誤った結果を分けて集計します。検証結果はPRのコメントに残し、レビュー担当者が直接確かめられるようにしています。

レビューを受け、性能と境界条件を見直す

異常なページに対応するコードのレビューで、通常のページが最も遅くなる実装だと指摘されました。そこで、先に異常の有無を判定し、異常がなければ従来の処理へ進むように変更しました。短い文書や文字の正規化に関する境界条件も検証しました。同僚の指摘は受け入れ基準に反映し、修正案の弱点を早い段階で確認するために役立てています。

業務の条件に照らし、別の視点から反例を探す

Claudeには、方針と選んだ理由を平易な言葉で説明してもらいます。私はその説明を業務の制約に照らして確認し、疑問点を掘り下げます。前の議論を引き継がないエージェントにも、反例の検討やレビューを依頼します。前提が成り立たないと分かった場合は、方針を変えるか対象を絞ります。判断のつかないデータは元の値を保ち、修正を保留して確認を続けます。

結果

3か月、約320時間で作成した190件のPRが、同僚のレビューを経てマージされました。このうち後半の1.5か月、約180時間はデータ修正に集中的に取り組み、38件のタスクを解決しました。取り組みの中で、特定のデータ項目の精度は40%台から85%に、データカバー率は30%台から75%に改善しました。修正の根拠と検証結果は、ダッシュボード、受け入れ基準を記したMarkdownファイル(.md)、PRのコメントから確認できるようにしています。

3か月・約320時間
190 PR38精度40%台 → 85%データカバー率30%台 → 75%

うち後半1.5か月・約180時間・38件のタスク

数値は、2026年10月時点の本人の業務記録をもとに集計しています。

繰り返す仕事を、改善を重ねられる仕組みにする

この経験では、繰り返す作業の進め方を整え、使いながら改善できるツールにまとめることを大切にしました。九つの段階で作業を進め、判断と検証を記録し、タスクを進捗の追えるバッチに分けました。データの修正方法はtransformにまとめ、本番パイプラインにも反映しました。CorpLink-AI、自分用のダッシュボード、日常で使う三つのアプリも、同じ考え方からつくっています。過去の記録や判断を次の作業に生かし、繰り返す手間を減らしたいと考えています。

関連リンク

インターンで扱うコードは社内リポジトリにあります。このページでは、仕事の進め方、判断の根拠、検証方法を紹介しています。