Lorsque nous rencontrons dans notre travail quotidien une tâche que nous trouvons un peu trop fastidieuse à effectuer manuellement, il est devenu courant de simplement créer un petit système à l'aide de Claude Code !
Cette histoire en est un parfait exemple, et tout a commencé lorsque nous avons augmenté le capital de l'entreprise.
Notre exercice fiscal débute en février, et cette augmentation de capital a également eu lieu en février. Toutefois, grâce à cette augmentation de capital, nous devons désormais être plus rigoureux dans l'organisation de nos processus de commande auprès de nos partenaires externes et entreprises collaboratrices.
Il s'agit du domaine connu sous le nom de Loi sur la sous-traitance, qui, dans le système actuel, sera appelé « Loi sur la sous-traitance » à partir de janvier 2026. Le donneur d'ordre devra s'occuper de davantage de choses, comme indiquer clairement les détails de la commande, créer et enregistrer les documents de transaction et fixer les délais de paiement.
Bien sûr, il ne s'agit pas simplement de « le faire parce qu'il y a une loi qui l'exige » !
Lorsqu'on sous-traite des travaux à un partenaire externe, il est crucial que le client et le prestataire de services définissent clairement les détails de la commande, le prix, la date et la correspondance avec le devis.
Ce n'était pas une fonctionnalité incluse dans l'outil comptable.
Notre société utilise les outils MoneyForward (ci-après dénommés MoneyForward) pour la comptabilité, les devis et la facturation.
C'est pratique pour les tâches quotidiennes de comptabilité et de facturation, mais ce que je voulais faire cette fois-ci était légèrement différent.
À partir du devis PDF reçu du partenaire externe, nous créons un bon de commande PDF pour Liberogic.
Du moins dans le cadre de l'utilisation que nous en faisons au sein de notre entreprise, MoneyForward ne possède pas les fonctionnalités adéquates, et s'abonner à ce service uniquement pour cela serait un gaspillage d'argent.
Si cela devait être fait manuellement,
- Créer un format de bon de commande
- Transcrire manuellement les informations du devis au format du bon de commande.
- Veuillez saisir la date de la commande.
- Transcrivez le numéro de devis.
- Transcription des détails
- Veuillez vérifier le montant total et les autres détails.
- Formatez les noms de fichiers
- Autres éléments divers...
C'est pénible d'avoir cette tâche supplémentaire... alors j'ai décidé de la créer.
Il peut être mis en pratique en moins d'une heure grâce au code Claude.
Le timing était également bon.
Le début de l’exercice fiscal en février, l’augmentation de capital en février et la publication du Code Claude, ainsi que son adoption par nos effectifs, ont tous coïncidé.
C’est à peu près à cette époque qu’un mouvement de type hackathon a commencé à se développer au sein de l’entreprise, où les gens utilisaient des outils comme Claude Code pour créer des outils d’amélioration des processus métier, de petites applications internes et même déployer des idées spontanées !
Depuis les spécifications de base jusqu'aux instructions pour Claude Code, en passant par le réglage fin...
J'ai réussi à le rendre utilisable en moins d'une heure.
Certes, on ne peut pas tout confier à l'IA et s'attendre à ce que le travail soit fait, mais si on le traduit correctement en instructions, cela peut être rapide et pratique !
Application de bureau terminée
Il s'agit d'un outil simple de génération de bons de commande qui fonctionne sur le système d'exploitation que vous utilisez probablement déjà.
Veuillez envoyer le devis au format PDF à l'adresse dédiée..appLorsque vous glisserez-déposerez le fichier, un script Python sera exécuté, qui lira le contenu du devis PDF et générera un bon de commande PDF dans le même dossier.
Une fois terminé, c'est un processus simple qui affiche une notification sur macOS et ouvre automatiquement le PDF du bon de commande généré.
La structure est la suivante :
~/Desktop/Generate Purchase Order/
Déposez le devis → Generate Purchase Order.app
_lib/
generate_purchase_order.py
liberogic_logo.png
liberogic_seal.png
purchase_order_counter.json
Pour permettre au personnel comptable et administratif de l'utiliser sans ouvrir de terminal, nous utilisons un droplet AppleScript comme point d'entrée, le processus de génération de PDF étant géré par Python.
En bref, il suffit d'inclure le devis au format PDF.Une application de bureau qui génère un bon de commande PDF par simple glisser-déposer.Il peut être utilisé sans ouvrir de terminal, ce qui facilite son utilisation même pour les tâches administratives internes.
L'apparence du bon de commande au format PDF est conçue pour ressembler au format PDF des factures et des devis que nous utilisons dans notre entreprise.
Le texte suivant figure dans la section des remarques :
Le présent bon de commande constitue une commande formelle. La commande est passée sur la base du devis numéro XXX.
Le numéro de commande était formaté comme suit :
{会社略称}様 発注書{YYYY}{MM}{3桁連番}
Par exemple, s'il s'agit du premier article destiné à M./Mme XX en février 2026,
Monsieur/Madame XX, Bon de commande 202602001
Cela ressemblera à ceci.
Les numéros séquentiels par entreprise et par mois sontpurchase_order_counter.jsonLe système gère cela automatiquement, et la date de commande est calculée à 5 jours ouvrables après la date du devis. (Il s'agit d'une spécification temporaire qui sera modifiée ultérieurement par la direction.)
Pour exclure non seulement les samedis et dimanches, mais aussi les jours fériés japonais, PythonjpholidayJe l'ai utilisé.
Quelques passages un peu difficiles seulement
Les devis qui servent de base aux bons de commande sont obtenus auprès de partenaires externes et d'entreprises collaboratrices ; leur format varie donc d'une entreprise à l'autre.
Se contenter de supposer que « le nom de l'entreprise se trouve à ces coordonnées » ou que « le montant total se trouve à cet endroit » ne suffit pas.
En définitive, le processus consiste à utiliser des expressions régulières pour extraire le nom du fournisseur, son adresse, son numéro de téléphone, le numéro de devis, la date du devis, l'objet, les détails, le sous-total, la taxe sur la consommation et le total avec la plus grande flexibilité possible, en traitant les entreprises avec la mention « À l'attention de » comme notre propre entreprise et les autres comme des fournisseurs, et en gérant les problèmes tels que les informations qui apparaissent visuellement distinctes et qui sont fusionnées dans le texte lors de l'extraction de texte à partir de fichiers PDF.
Comme il arrivait que le nom du bâtiment ou le numéro de l'étage soient inclus après l'objet du message, nous avons ajouté un processus permettant de filtrer les informations d'adresse inutiles en utilisant des termes comme « bâtiment » et « étage » comme indices.
Qu'il s'agisse d'IA ou autre chose, cela reste un problème courant avec le traitement des PDF.
Message transmis à Claude Code
Plutôt que de faire une demande vague, il est plus économique d'utiliser des jetons si vous écrivez aussi précisément que possible, en incluant la structure des dossiers, le flux de traitement, la mise en page, les règles de numérotation, le calcul des jours ouvrables, les éléments d'extraction PDF, etc.
Faisons-leur également lire l'exemple de PDF !
以下の条件で、見積書PDFを発注書PDFに自動変換するツールをmacOS向けに作ってください。
## 環境
- macOS / Python3(pip可)
- フォント:`~/Library/Fonts/NotoSansJP-Regular.ttf` / `NotoSansJP-Bold.ttf`
## フォルダ構成
`~/Desktop/発注書生成/
見積書をドロップ→発注書生成.app
_lib/
generate_purchase_order.py
liberogic_logo.png
liberogic_seal.png
purchase_order_counter.json`
## 処理フロー
1. `.app` に見積書PDFをドラッグ&ドロップ
2. Pythonスクリプトを実行し発注書PDFを生成
3. 完了通知(macOS通知)を出して発注書PDFを自動で開く
4. 発注書PDFは見積書と同じフォルダに保存
## 発注書の仕様
出力フォーマットは添付のMoneyForward形式のPDFに合わせること。
このPDFから以下を抽出して使う:
- ロゴ画像
- 押印画像
- レイアウト座標
- 列幅
- 余白
- フォントサイズ
## 自社情報
リベロジック株式会社
登録番号:T2010401081132
〒108-0073 東京都港区三田1-3-37 板金会館2F
TEL: 03-6809-4366 / FAX: 03-6809-4367
## 発注書番号
- 形式:`{会社略称}様 発注書{YYYY}{MM}{3桁連番}`
- 会社別・月別の連番を `purchase_order_counter.json` で管理
- 出力ファイル名もこの発注書番号に揃える
## 発注日
- 見積書の日付から5営業日後
- 土日と日本の祝日を除外する
## 見積書からの情報抽出
- どんな会社のフォーマットでも対応できる柔軟な正規表現で抽出
- 抽出項目:ベンダー名・住所・TEL、見積書番号、見積日、件名、明細、小計・消費税・合計
- ベンダー判定:「御中」の付いた会社=自社、それ以外=発注先
- 件名に住所の建物名が混入するケースに対応
## 発注書レイアウト
- タイトル「発注書」中央大文字
- 左:発注先の社名・住所・TEL
- 右:自社情報+ロゴ+押印+発注書番号・発注日・見積書番号・見積日
- 件名・発注金額を大きく表示
- 明細テーブル:品目/単価/数量/単位/価格
- 交互グレー背景
- 最低8行
- 合計エリア:小計・消費税・合計のみ
- 備考欄を枠付きで表示
- ページ番号なし
Bien qu'il s'agisse essentiellement d'un document de spécifications simplifié, il est important de fournir autant de détails que possible sur les contraintes commerciales et le produit final souhaité, mais une de simplement dire « faites en sorte que ce soit esthétique ».
Bon, au final, ça ne marche pas quand j'essaie de lui faire lire un format différent, donc il faut que Claude travaille encore plus, mais c'est toujours rapide, alors je suppose que ça va.
(Le nombre de collaborateurs externes et de partenaires avec lesquels nous travaillons ne dépasse même pas dix, ce n'est donc pas un problème majeur !)
Du fait de sa grande commodité, nous devons également nous préoccuper de la sécurité.
En revanche, lorsqu'on utilise un support au développement par IA, il faut prendre en compte non seulement la facilité d'utilisation, mais aussi la sécurité.
Au fur et à mesure que vous suivrez le processus et donnerez des instructions à Claude Code, plusieurs opérations seront effectuées sur votre environnement local.
- Lecture et écriture de fichiers sur ~/Desktop
- Prise en compte de l'accès à ~/Library/Services/
- Ajout de bibliothèques Python via pip install
- Génération d'applications AppleScript via osacompile
- Lecture des fichiers de polices situés dans ~/Library/Fonts/
Ce n'est pas une histoire particulièrement importante, mais donner des privilèges d'exécution à une IA dans un environnement local reste un peu inquiétant, non ? 😨
Lorsqu'on confie des opérations sur le terminal ou sur des fichiers à un système, il existe un risque de création, d'écrasement ou de suppression involontaire de fichiers.
- Vérifiez ce que vous autorisez !
- Faites une sauvegarde !
- Pour tout ce qui peut être géré avec Git, vérifiez les différences !
- Créons des dossiers de travail séparés !
Ces mesures de base sont importantes. Si vous l'utilisez pour du développement, il serait préférable de charger le fichier .env via 1Password. C'est un peu contraignant, mais cela fait une grande différence.Notre directeur technique)
En revanche, comme dans ce casSi son utilisation est limitée à un environnement local, les risques sont relativement limités.Dans la plupart des cas, l'impact se propage rarement à l'extérieur via le réseau et se limite, au pire, à affecter son propre environnement.
Il y a bien d'autres points à prendre en compte, mais « pouvoir créer quelque chose rapidement » et « pouvoir l'utiliser en toute sécurité » sont deux choses différentes. Lors du développement d'applications utilisant l'IA, veillez à vérifier les permissions d'exécution, les opérations sur les fichiers, les bibliothèques externes et la gestion des données d'entrée au fur et à mesure !
À l'avenir, nous nous concentrerons sur le partage du personnel et l'intégration avec Supabase.
Ce que j'ai créé cette fois-ci, c'est un outil simple de génération de bons de commande qui fonctionne en environnement local.
Dans la phase initiale,purchase_order_counter.jsonNous avons mis en place un système pour gérer les numéros séquentiels par entreprise et par mois, mais étant donné que nous partagerons ce système avec le personnel à l'avenir, la gestion des numéros séquentiels à l'aide de fichiers JSON locaux entraînera naturellement des problèmes tels que des numéros de bons de commande en double.
Par conséquent, je prévois de mettre en œuvre des compteurs spécifiques à l'entreprise et mensuels du côté de Supabase afin qu'il n'y ait pas de numéros séquentiels en double même lorsque plusieurs personnes l'utilisent, et d'ajouter également des fonctionnalités telles que l'historique d'émission des bons de commande, le fournisseur, le numéro de devis, le montant de la commande, la date de la commande et l'emplacement d'enregistrement du PDF !
Malgré son rôle de PDG, il reste toujours à l'écoute. Il prend plaisir à comprendre les nouvelles technologies et à constater les améliorations apportées au confort d'utilisation. C'est une personne très impliquée, qui aime se plonger dans le monde réel. Il est enthousiaste quant aux technologies futures et souhaite continuer à vivre de nouvelles expériences, quel que soit son âge.
Morimoto
Chef de projet / Directeur / Fondée en 2007