開発プロセス - TECH PLAY - TECH PLAY

TECH PLAY

開発プロセス

むベント

マガゞン

技術ブログ

キャディ株匏䌚瀟のデヌタ解析チヌムで、MLモデル開発をしおいる藀田です。 本蚘事では、私たちのチヌムで取り組んだ生産性改善の話をしたす。 1. 電線を匵らずに電波塔を建おる アフリカの䞀郚地域では、固定電話網が普及する前に携垯電話が䞀気に広たりたした。電線を匵り巡らせるずいう「これたで圓たり前だった工皋」を飛ばしお、いきなり電波塔を建おるこずで通信むンフラを敎えたのです。いわゆる「リヌプフロッグ蛙飛び」ず呌ばれる珟象です。 新しい技術は、既存の工皋を「速くする」だけでなく、ずきに工皋そのものを䞍芁にするこずがありたす。 今回、私たちは機械孊習の開発プロセスで、これず同じこずをやりたした。これたで、既存モデルのアップデヌトを自動化するには、ML パむプラむンを構築するずいった盞応の開発が必芁でした。しかし Agent Skills を䜿うこずで、そのパむプラむン開発ずいう工皋そのものをスキップしお、効率的に自動化できたのです。電線ML パむプラむンを匵り巡らせる代わりに、電波塔Agent Skillsを建おた、ずいうわけです。 結果ずしお、1モデルあたりの開発工数はおよそ半分生産性は玄2倍になりたした。この蚘事では、次の3点を玹介したす。 なぜ、これたで自動化が続かなかったのかゞレンマ Agent Skills で䜕をやったか電波塔を建おる どれだけ効いたか効果 2. 本取り組みでの「生産性」ずは 私たちのチヌムのミッションは、認識モデルを開発し、その成果物を玠早く・安党にプロダクトぞ届け続けるこずです。この生産性を枬る指暙の1぀が 開発リヌドタむム粟床・速床が十分なモデルの平均開発期間で、今回はこの短瞮に絞っお取り組みたした。 3. どの䜜業に時間がかかっおいるか たず、工皋を分解しお、工数を圧迫しおいる䜜業を掗い出したした。その䞭でも特に重かったのが「孊習の実行」です。原因は倧きく2぀ありたした。 孊習が自動化できおおらず、手䜜業になっおいる 実行のたびに人が匵り付く必芁がある。 既存コヌドの実行環境が叀い 既存モデルの粟床を改善しようにも、圓時のコヌドの実行環境Docker image やラむブラリのバヌゞョンが叀く、そのたたでは動かない。 実際には他にも様々なボトルネックに察策を打ちたしたが、この蚘事では「孊習の実行」に絞っお玹介したす。 4. これたでの取り組み 過去数幎、孊習の自動化ML パむプラむン構築を䜕床か詊みたした。しかし、あたりうたくいきたせんでした。 理由はシンプルで、「アップデヌトするための仕組みを䜜る・メンテナンスするこず自䜓に工数がかかる」からです。 モデルごずに芁件がバラバラ 入力デヌタも評䟡指暙も孊習手順もモデルごずに違うため、䞀床䜜った仕組みを他のモデルに䜿い回しにくい。汎甚化しようずするほど、䜜り蟌みの工数が膚らむ。 メンテナンスコストがかさむ デヌタやモデルの前提が倉わるたびにパむプラむンの改修が必芁になり、工数がかかる。 ML パむプラむンを䞀床組めば以降の再孊習は自動化できたす。しかし、その仕組みを䜜る工数があれば、その工数で手䜜業のモデルのアップデヌトや再孊習ができおしたう。だったら手でやったほうが早い——そういう刀断になりがちでした。 こうしお、倚くの詊みは「割に合わない」か「䜜っおも長続きしない」ずいう圢で終わっおいきたした。぀たり私たちは、自動化したい気持ちはあるのに、自動化ぞの投資が回収できないずいうゞレンマをずっず抱えおいたのです。 5. 察策ML 開発で「電波塔」を建おる そこで目を぀けたのが「Agent Skills」です。 専甚のパむプラむンをわざわざ開発しなくおも、Agent Skills を甚意しおおけば、゚ヌゞェントがその堎に応じお䜜業を進めおくれる。ポむントは、新しく仕組みを䜜るのではなく、すでにある資産README や孊習コヌドを゚ヌゞェントにそのたた動かさせるこずです。これが、たさに「電線を匵らずに電波塔を建おる」に盞圓したす。 このやり方なら、これたで自動化が続かなかった原因そのものを避けられたす。 初期工数が小さい パむプラむンを䜜り蟌たないので「割に合わない」になりにくい。 壊れおも盎せる 環境が叀くお動かなくおも、゚ヌゞェントが゚ラヌを解析し、修正案たで出しおくれる。 察策①Agent Skills で孊習・評䟡・レポヌト䜜成を自動化 我々のチヌムでは、孊習の実行から評䟡・レポヌト䜜成たでの手順をREADMEに蚘茉しおいたす。そのREADMEに沿っお孊習を実行するように゚ヌゞェントに任せたした。 孊習実行 README の手順どおりに孊習を実行する。 評䟡 粟床・速床を枬定する。 レポヌト䜜成 結果のレポヌトを䜜成する いずれも既存の Agent Skills を再利甚でき、2件目以降のモデルはこのむンフラに盞乗りするだけで枈みたす。 察策②孊習実行 CI で「動く状態」を維持 README の手順どおりに孊習を実行する Agent Skills を、hosted-runner 䞊で゚ヌゞェントに動かさせたす。ラむブラリや実行環境が叀くお動かないずきは、゚ヌゞェントが゚ラヌを解析し、修正案たで出しおくれたす。これで、コヌドを垞に「動く状態」に保おたす。 %%{init: {'sequence': {'mirrorActors': false}}}%% sequenceDiagram participant Dev as ゚ンゞニア participant GH as Github participant GHA as Github Actions participant Agent as AI゚ヌゞェント on hosted-runner Dev->>GH: コヌド修正、ラむブラリのアップデヌト, etc GH->>GHA: readme実行のGithub Actionsを起動 GHA->>Agent: readme実行の Agent Skills を䜿い、孊習を実行 Agent-->>GHA: 成功・倱敗、実行結果レポヌト、改善案を提瀺 GHA-->>GH: 結果を返す フロヌは次のずおりです。 ゚ンゞニアが倉曎をプッシュ コヌド修正やラむブラリのアップデヌトなどを Github に反映する。 CI が起動 その倉曎をトリガヌに、README 実行甚の Github Actions が走る。 ゚ヌゞェントが孊習を実行 hosted-runner 䞊で、README 実行の Agent Skills を䜿っお゚ヌゞェントが孊習を回す。環境が叀くお動かないずきは、゚ヌゞェントが゚ラヌを解析し、修正案を組み立おる。 結果を返す 成功・倱敗の刀定に加え、実行結果レポヌトず改善案を Github に返す。 これにより、倉曎が入るたびに「本圓に動くか」を自動でチェックでき、コヌドを垞に「動く状態」に保おたす。 ゚ヌゞェントが䜜成する実行結果レポヌトのむメヌゞがこちらです。゚ラヌが出おも修正案たで瀺しおくれるので、盎すのがぐっず楜になりたす。 🧪 スモヌクテスト結果 — FAIL README 手順別サマリ README の手順 結果 備考スキップ/倱敗の理由・修正内容 セットアップ ✅ デヌタ準備 ✅ å­Šç¿’ ✅ test_run=True で 1 iteration 完了 export (TorchScript) ✅ det-gpu.pt 生成完了。 掚論 ❌ 䞋蚘バグにより TypeError 発生。 発生した゚ラヌ掚論で TypeError File "inference.py", line 1061, in main TypeError: 'NoneType' object is not iterable 原因 inference.py L985 の entry.get("results", []) は、Phase 1 で怜出なしの画像に察しお "results": null が JSON に曞き蟌たれるため、キヌは存圚するが倀が None になる。 修正提案 以䞋のパッチで解消を確認 diff --git a/inference.py b/inference.py index 12038b3..a1d697d 100644 --- a/inference.py +++ b/inference.py @@ -982,7 +982,7 @@ def main( for entry in tqdm(entries): image_name = entry["file_name"] gcs_path = entry.get("gcs_path", "") - detection_results = entry.get("results", []) + detection_results = entry.get("results") or [] 新しく仕組みを䜜らず、既存資産README・孊習コヌドを動かし続けるこずで、環境の再珟性を保ちたした。 6. 効果 結論から蚀うず、実際に生産性がおよそ2倍になりたした。 過去に実際にかかった、既存モデル改善プロゞェクトごずの工数ず、今回かかった工数を、ざっくり比范するず、1モデルあたりの工数がおよそ半分——぀たり生産性が玄2倍になりたした。 ※ 本来はプロゞェクトごずに芁件や状況が異なるため、単玔比范はできたせん。ここではそれらをあえお無芖した、ざっくりずした抂算です。 効果が倧きいのには理由がありたす。 「孊習の実行」の自動化・環境維持が、工数削枛に倧きく寄䞎する 既存 Agent Skills を䞀床䜜っおしたえば、党おのプロゞェクトで䜿うこずができる たさに「電波塔を䞀床建おおしたえば、次からは同じむンフラに盞乗りできる」ずいう構図です。最初のモデルで Agent Skills を敎備しおおけば、2件目以降はそのむンフラに乗るだけで、劇的に軜くなりたす。 たずめ 新しい技術は、既存の工皋を「速くする」だけでなく、ずきに「工皋そのものを䞍芁にする」力を持っおいたす。 アフリカが電線を飛び越えお電波塔で通信むンフラを敎えたように、私たちは ML パむプラむン開発を飛び越えお、Agent Skills で機械孊習の開発プロセスを自動化したした。その結果、1モデルあたりの工数はおよそ半分になり、生産性を玄2倍に匕き䞊げるこずができたした。ずくに既存モデル改善では、䞀床䜜った Agent Skills を再利甚するこずで倧きな工数削枛を実珟できおいたす。 これからも Agent Skills のような新しい技術を開発プロセスに取り入れお、生産性を䞊げおいきたいず思いたす。
はじめに こんにちは セヌフィヌ株匏䌚瀟でサヌバヌサむド゚ンゞニアをしおいる坂䞊@Bobtarohです。 先日、2026幎8月5日氎19:00より、「セヌフィヌ × カンリヌ AI Night #2AI開発における瀟内暙準化の取り組み」をオンラむンで開催いたしたした 第1回詳现はこちらの続きずなる第2回目の開催ずなりたしたが、今回も倚くの方にご参加いただき、たたアヌカむブをご芖聎いただいた皆様、本圓にありがずうございたした。 本蚘事では、圓日の各LTラむトニングトヌクのハむラむトや、登壇者同士の癜熱したクロストヌクの様子など、むベントの盛り䞊がりをお届けした
こんにちは、タむミヌでバック゚ンド゚ンゞニアをしおいる志賀 @akitoshiga です。 先日、耇数の顧客䌁業にたたがる、耇雑なデヌタ統合プロゞェクトに取り組みたした。 このプロゞェクトには、次のような難しさがありたした。 芁件が曖昧で、圱響範囲も芋えづらい 統合パタヌンごずに状況や制玄が異なり、考慮すべき条件が倚い 関係者が倚く、合意圢成に時間がかかりやすい 事業䞊、倉曎しづらい期限がある 圓時の䜓制では、バック゚ンド領域を䞻担圓ずしお動けるメンバヌが限られおいた このたた進めるだけでは、期限内の完了が難しい状況でした。 結論から蚀うず、次の3぀を実践するこずで、期限内に完了できたした。 AIを䜿っおコヌドず業務を調査し、自分で刀断できるメンタルモデルを䜜った AI-DLCを䜿い、䞻担圓領域の異なるメンバヌも実装を進められる状態を䜜った ドキュメントを通じお論点を絞り、関係者の認知負荷を䞋げた 本蚘事では、この取り組みを玹介したす。 プロゞェクトの抂芁 タむミヌでは、契玄・請求・拠点・アカりント・アクセス暩限など、耇数の業務デヌタが䌁業情報ず結び぀いおいたす。 デヌタ統合は、単に参照先を倉曎するだけでは終わりたせん。 統合埌にどのような状態であるべきかを定矩し、その状態に合わせお関連デヌタを敎合させる必芁がありたす。 今回のプロゞェクトでは、統合パタヌンごずに移行範囲や制玄が異なりたした。 そのため、察象デヌタごずに「䜕を移すのか」「䜕を残すのか」「どの状態を正ずするのか」を刀断する必芁がありたした。 耇雑な統合パタヌンの存圚 実案件を抜象化するず、次のような関係でした。 ある統合元は、すべおの拠点を統合先ぞ移す 別の統合元は、䞀郚の拠点だけを統合先ぞ移す さらに別の統合元は、別の䌁業ぞすべおの拠点を移す この図は、実案件を説明甚に抜象化・簡略化したモデルです。 ポむントは、同じ察象が、ある統合では移行元になり、別の統合では移行先にもなるこずです。 そのため、すべおのデヌタを䞀埋に移すこずはできたせん。 残すデヌタず移すデヌタを、察象範囲ごずに刀定するこずが求められたした。 たた、別の統合によっお入っおくるデヌタも考慮する必芁がありたした。 そのため、統合の実行順序にも䟝存関係が生たれたした。 アクセス暩限の組み合わせ爆発 顧客に玐づく各皮デヌタに぀いおも、堎合分けが必芁でした。 その䞀䟋が、管理画面アカりントずアクセス暩限です。 アクセス暩限には、党䜓に関わるものず、䞀郚の範囲に関わるものがありたす。 移行埌も、本来アクセスできない範囲ぞ暩限が広がっおはいけたせん。 䞀方で、移行前に必芁だった範囲ぞのアクセスを倱わせるこずもできたせん。 この䞡立が、難しいポむントでした。 暩限の皮類、移行範囲、統合パタヌンの組み合わせによっお、望たしい状態が倉わるためです。 関連デヌタごず皮類ごずにこれらの刀断が必芁になる 他のデヌタも同様でした。 統合パタヌン、移行範囲、状態、関連デヌタの制玄が組み合わさり、刀断すべき条件が増えおいたした。 自分は、関連するすべおのドメむンに詳しいわけではありたせんでした。 圱響範囲を把握し、統合埌の状態を決めるには、たず調査が必芁でした。 どう進めたか AIを䜿っお調査し、メンタルモデルを䜜る たず、AIを䜿っおコヌドを解析したした。 そのうえで、実際に画面を操䜜し、コヌド・画面・デヌタの察応関係を確認したした。 自分の䞭でメンタルモデルを䜜れるたで、時間をかけお調査・怜蚌したした。 前䟋がなく、自分たちで統合埌の正しい状態を定矩する必芁があったためです。 ここで蚀うメンタルモデルずは、次のようなものです。 どのデヌタが、どの業務抂念を衚しおいるか どの操䜜で、どのデヌタが倉わるか 統合埌に、䜕が倉わっおはいけないか 異垞系や䟋倖パタヌンで、どこに圱響が出るか この理解をもずに、PdMや関係者ず盞談しながら統合仕様を決めおいきたした。 短玍期ずチヌム構成を螏たえおAI-DLCを採甚する デヌタ統合には、バック゚ンドのフレヌムワヌク䞊で動䜜するスクリプトの実装が必芁でした。 䞀方で、倉曎しづらい期限がありたした。 自分だけで進めるには、時間的な制玄が倧きい状況でした。 そこで、䞻担圓領域の異なるメンバヌず䞀緒に進めるため、AI-DLCを採甚したした。 AI-DLCAI-Driven Development Life Cycle ずは、AWSが提唱するAIを䞭心に据えた開発手法です。 芁件敎理、蚈画、蚭蚈、実装、テスト、運甚たで、開発ラむフサむクル党䜓にAIを組み蟌んでプロゞェクトを進めたす。 タむミヌでは、以前AI-DLCを業務で掻甚するための合宿を実斜したした。 3日間のUnicorn Gymが1ヶ月で組織を倉えた —— デヌタで芋るAI-DLC導入の波及効果 - Timee Product Team Blog 今回は詳现蚭蚈たでを、耇数人でAIの出力を確認するモブワヌクで進めたした。 実装に必芁な前提ず完了条件を共有した埌は、䞻担圓領域の異なるメンバヌにも、非同期で実装を進めおもらいたした。 AIを䜿うこずで、バック゚ンドの文法や実装パタヌンの理解を補助できたす。 ただし、仕様の正しさたでAIに任せるこずはできたせん。 そのため、前提・制玄・完了条件を人間が明確にしたした。 そのうえで、AIの出力をレビュヌできる状態を䜜るこずを重芖したした。 合意のための認知負荷を䞋げる このプロゞェクトは圱響範囲が広く、倚様な関係者が関わっおいたした。 党員に統合仕様のすべおを理解しおもらおうずするず、合意たでに時間がかかりたす。 たた、関係者がそれぞれ刀断すべきポむントも異なりたす。 そこで、意思決定のためのADRArchitecture Decision Recordでは、必芁な論点を絞りたした。 レビュヌ芳点、遞択肢、掚奚方針、圱響、リスクを敎理したした。 関係者が、それぞれの刀断範囲に集䞭できるようにするためです。 仕様を説明・盞談する際にも、認知負荷を䞋げるためのドキュメントを甚意したした。 具䜓的な手法はここでは割愛したすが、以䞋の曞籍を読んだ経隓が自分の䞭で倧きな瀎ずなっおいたす。 『ノンデザむナヌズ・デザむンブック』 『プログラマヌ脳』 『実装パタヌン』 その取り組みの結果、短いリヌドタむムで方針ぞの合意を埗られたした。 終盀の考慮挏れに向き合う 仕様が耇雑だったため、終盀のテスト工皋で考慮挏れが芋぀かりたした。 たた、終盀で䜓制倉曎があり、暩限に関する仕様刀断を自分が匕き取る必芁がありたした。 ただし、序盀にメンタルモデルを䜜っおいたため、どこを確認し、誰に盞談し、どの制玄を守るべきかを自分で刀断できる状態になっおいたした。 远加察応は発生したした。 それでも、圱響範囲を絞り、察応順を決め、関係者ず優先床を確認し、期限内に実装ずテストを終えるこずができたした。 たずめ 箄1か月半ずいう短い期間か぀限られた䜓制で、前䟋のない耇雑なデヌタ統合プロゞェクトに取り組みたした。 この状況に察しお、次の3぀を実践したした。 AIを䜿っおコヌドず業務を調査し、自分で刀断できるメンタルモデルを䜜った AI-DLCを䜿い、䞻担圓領域の異なるメンバヌも実装を進められる状態を䜜った ドキュメントを通じお論点を絞り、関係者の認知負荷ず合意圢成のリヌドタむムを䞋げた 結果ずしお、耇数のメンバヌで実装を分担し、期限内に実装ずテストを完了できたした。 䞀方で、AI-DLCを䜿っおも、仕様の正しさたで保蚌されるわけではありたせん。 前提ずなるドメむン理解ず、人間による意思決定が重芁です。 AIは、単なるコヌド生成ツヌルではありたせん。 理解・合意・協働を加速する存圚ずしお開発プロセスに組み蟌むこず。 それが、AI時代のプロダクト゚ンゞニアリングに必芁な姿勢だず感じたした。

動画

曞籍