アダコテック技術ブログ

アダコテックのエンジニアが発信する技術ブログです

中途入社オンボーディング ‐GUIアプリ開発記‐

こんにちは!2025年3月に中途入社した山本です。
この記事では、ひよっこ中途入社社員である私がオンボーディング期間中に画像オーギュメンテーションを学びつつ作成したGUIアプリケーション「AugmentApp」の開発過程を振り返ります。

はじめに

私は現在「POKAMIRU」の開発チームに所属しています。

POKAMIRUは製造現場の検査担当者を支援する、外観検査のポカヨケAIです。
現場で撮影された少量の良品画像から学習モデルを構築し、異常個所を検出します。担当者の経験や感覚に頼った目視検査をAIがサポートすることで、検査品質の安定化と見逃しの防止を実現します。

 

先日WBSで紹介いただきました!^^

adacotech.co.jp

POKAMIRUでは、データオーギュメンテーション技術を活用して少ないデータ(※最小10枚)から高精度なモデルを構築します。オーギュメンテーションの効果として、例えばエッジ付近での過検出を抑制した事例があります。

※2025年7月時点の仕様になります。

オーギュメンテーション有無の比較結果

しかしオーギュメンテーション処理はアプリケーション内部で行われているため、担当エンジニア以外が結果を確認できない、他プロダクトでのオーギュメンテーション効果検証に流用しづらいといった問題があります。これらを解決するため、誰でも使えるGUIアプリケーションの開発に着手しました。

 

前提:オーギュメンテーションとは

既存データに軽微な加工(回転・色調変更・文言差し替え等)を施し、データ量を人工的に増やす手法です。追加収集なしで多様なパターンをモデルに提示できます。

主な利点

  1. データ不足の解消
    少量データでも学習が安定し、精度向上が期待できます。
  2. データ偏りの緩和
    希少ケースを拡張して過検出や見落としを抑制します。
  3. 実環境への適応力向上
    照明変化やノイズを再現し、運用時の性能低下を防ぎます。

製造現場では、照明条件の変化、製品表面の汚れ、位置ずれなど、多様な変動要因が存在します。これらの変動を適切にシミュレートすることで、実用に耐えうる頑健なAIモデルの構築が可能となります。

参考:データ拡張とは| IBM

※ 良品のレンジを拡大する際には、異常品の特性と重ならないよう、パラメータ調整に十分注意する必要があります。

それではいざ!

アーキテクチャ設計

プロダクト開発部部長である植草さんにサポートいただき、レイヤードアーキテクチャを採用しました。

アーキテクチャ図

各層の責務を明確に分離することで、保守性と拡張性の高いシステムを目指しました。ドメイン層にはビジネスロジックを、インフラストラクチャ層には外部リソースへのアクセスを、アプリケーション層にはユースケースを、プレゼンテーション層にはUIを配置しました。

前職ではアーキテクチャ設計の経験が浅かったため、実践的に学べる貴重な機会となりました。

参考図書は下記2冊。

www.kadokawa.co.jp

www.oreilly.co.jp

アダコテックでは先輩に質問すると懇切丁寧な回答とともにおすすめの本が自席に積まれます。

おかげさまで現在10冊以上の本が積まれています。とてもいい先輩方ですね^^^^^

 

技術スタックの選定

開発環境として以下を選定しました

基盤技術

  • Python 3.12 + Poetry:パッケージ管理
  • NumPy + OpenCV:画像処理

開発支援ツール

  • Ruff:フォーマッター・リンター
  • mypy:静的型チェック

GUIフレームワーク

  • Flet:Pythonのみで完結するクロスプラットフォーム開発

AIアシスタント

  • Cursor

C++をメインに使用していた私にとって、Pythonエコシステムを学ぶ良い機会となりました。

Fletはフロントエンド経験がなくても直感的にGUIを構築できる点が魅力的でした。

アダコテックのFlet事例はこちら

techblog.adacotech.co.jp

techblog.adacotech.co.jp

 

実装ざっくり

ドメイン層:オーギュメンテーションの核

製造現場で発生する様々な変動を再現するため、以下の変換処理を実装しました。

ぼかし処理:カメラのフォーカスずれや振動による画像のブレを再現。ガウシアンフィルタを使用し、カーネルサイズをランダムに変更することで多様なぼかし効果を生成。

明度変換:照明条件の変化をシミュレート。ガンマ補正により現実的な明るさの変動を再現。

拡大縮小:サイズにばらつきがある製品に対応。アスペクト比を保ちながら、指定範囲内でランダムにスケーリング。

並進移動回転:製品の配置ずれを再現。X軸・Y軸方向にはランダムな移動量を与え、さらにθ方向の回転ずれも加える。

 

インフラストラクチャ層

画像の入出力処理では、パフォーマンスを重視した実装を心がけました。ファイル読み込みは非同期処理で実装し、大量の画像を扱う際のボトルネックを解消。対応フォーマットはPNG、BMP、JPEG、WebP。

バッチ処理機能も実装し、フォルダ単位での一括処理を可能にしました。

 

アプリケーション層

基本的な使用方法を想定して、一連の処理を実装します。

①指定されたフォルダから画像を読み出し

②一定の範囲からパラメータを設定

③オーギュメント実施

④指定ファイルに保存

またGUI上ではサンプル表示も行いたいため、

ランダムに選んだ1枚の画像をオーギュメント実施するケースも実装しておきます。

 

プレゼンテーション層

pptで描いたざっくり構想を元に実装。

 

完成品がこちら。

AugmentApp

プレビュー機能ではパラメータを調整しながら即座に結果を確認できるため、最適な設定を効率的に見つけることができます。

 

開発プロセスと学び

AIアシスタントの活用

久しぶりのPython開発でしたが、Cursorなどのツールを活用することで効率的に開発を進められました。設計などの相談をChatGPTの賢いモデルを使用し、実装をCursor上のClaudeに任せる使い方が気に入っています。

スクラム開発の経験

アダコテックではスクラム開発を採用しており、2週間スプリントで開発を進めています。定期的なレビュー会には事業部、コーポレート、デザイン部門も参加し、多角的なフィードバックを得られました。

初めてのレビューでAugmentAppを発表した際は緊張しましたが、温かいフィードバックをいただき大きな自信になりました。

 

活用事例と成果

POKAMIRU性能評価での活用

開発したAugmentAppは、早速POKAMIRUの性能評価に活用されています。特に、どの程度の位置ずれまで正常に検出できるか、といった定量評価に役立っています。

他プロダクトへの展開

位置補正機能の検証に大変有用でした。位置補正機能とは、対象物や機器が本来あるべき位置とのズレを検出し、その位置を正しい状態に補正するための機能です。

角度や位置のズレた画像を簡単に生成できるため、どれくらい補正能力があるのか把握するデータセット作成に使用しました。

チーム全体の生産性向上

これまでエンジニアしか確認できなかったオーギュメンテーション結果を、営業チームも確認できるようになりました。顧客への説明資料作成にも活用され、技術の見える化に貢献しています。

 

まとめ

オンボーディング期間中に実用的なツールを開発できたことは、技術者として大きな自信になりました。C++からPythonへの技術スタックの変化、アーキテクチャ設計の実践、スクラム開発への参加など、多くの新しい経験を積むことができました。

製造業のDXは、まだまだ発展途上です。AIとものづくりの融合により、日本の製造業がさらに発展することを願いながら、日々の開発に取り組んでいきたいと思います。

最後まで読んでいただき、ありがとうございました!