Wenn wir bei unserer täglichen Arbeit auf etwas stoßen, das uns zu mühsam erscheint, um es weiterhin manuell zu erledigen, ist es mittlerweile üblich geworden, einfach ein kleines System mit Claude Code zu erstellen!
Diese Geschichte ist ein perfektes Beispiel dafür, und alles begann, als wir das Kapital des Unternehmens erhöhten.
Unser Geschäftsjahr beginnt im Februar, und auch die Kapitalerhöhung erfolgte im Februar. Aufgrund der Kapitalerhöhung müssen wir unsere Bestellprozesse bei externen Partnern und Kooperationsunternehmen nun jedoch sorgfältiger organisieren.
Dies ist der Bereich, der als Unterauftragsvergabegesetz bekannt ist und ab Januar 2026 im Rahmen des aktuellen Systems als „Unterauftragsvergabegesetz“ bezeichnet wird. Der Auftraggeber muss sich mit mehr Dingen auseinandersetzen, wie z. B. der klaren Angabe der Auftragsdetails, der Erstellung und Speicherung von Transaktionsdokumenten und der Festlegung von Zahlungsfristen.
Natürlich geht es hier nicht einfach nur darum, dass man es tun muss, weil es gesetzlich vorgeschrieben ist!
Bei der Auslagerung von Arbeiten an einen externen Partner ist es für beide Seiten – Kunde und Dienstleister – von entscheidender Bedeutung, die Auftragsdetails, den Preis, den Liefertermin und die Übereinstimmung mit dem Angebot klar zu definieren.
Diese Funktion war im Buchhaltungsprogramm nicht enthalten.
Unser Unternehmen nutzt die Tools von MoneyForward (nachfolgend MoneyForward genannt) für Buchhaltung, Angebotserstellung und Rechnungsstellung.
Für alltägliche Buchhaltungs- und Abrechnungsaufgaben ist es praktisch, aber dieses Mal wollte ich etwas anderes tun.
Auf Basis des vom externen Partner erhaltenen Angebots-PDFs erstellen wir ein Bestell-PDF für Liberogic.
Zumindest im Rahmen der Nutzung durch unser Unternehmen bietet MoneyForward nicht die passenden Funktionen, und es wäre Geldverschwendung, den Dienst nur für diesen Zweck zu abonnieren.
Wenn es manuell erfolgen würde,
- Erstellen Sie ein Bestellformular
- Die Informationen aus dem Angebot manuell in das Bestellformat übertragen.
- Bitte geben Sie das Bestelldatum ein.
- Notieren Sie die Angebotsnummer.
- Die Details transkribieren
- Bitte überprüfen Sie den Gesamtbetrag und die weiteren Details.
- Formatieren Sie die Dateinamen
- Sonstiges...
Diese zusätzliche Aufgabe ist lästig... deshalb habe ich beschlossen, sie zu erstellen.
Mit Hilfe von Claude Code lässt es sich in weniger als einer Stunde praktisch anwenden.
Auch das Timing war gut.
Der Beginn des Geschäftsjahres im Februar, die Kapitalerhöhung im Februar und die Veröffentlichung des Claude-Kodex sowie dessen Annahme durch unsere Mitarbeiter fielen alle zusammen.
Dies war ungefähr zu der Zeit, als innerhalb des Unternehmens eine Hackathon-ähnliche Bewegung entstand, bei der Mitarbeiter Tools wie Claude Code nutzten, um Werkzeuge zur Geschäftsverbesserung, kleine interne Anwendungen zu entwickeln und sogar spontane Ideen umzusetzen!
Von einer sehr grundlegenden Spezifikationsskizze bis hin zu Anweisungen für den Claude-Code und einschließlich Feinabstimmung...
Ich konnte es in knapp einer Stunde in einen brauchbaren Zustand versetzen.
Man kann natürlich nicht einfach alles der KI überlassen und erwarten, dass es erledigt wird, aber wenn man es richtig in Eingabeaufforderungen übersetzt, kann es schnell und bequem gehen!
Desktop-Anwendung fertiggestellt
Dies ist ein einfaches Tool zur Erstellung von Bestellungen, das auf dem Betriebssystem läuft, das Sie wahrscheinlich bereits verwenden.
Bitte senden Sie das Angebots-PDF an den zuständigen Ansprechpartner..appWenn Sie die Datei per Drag & Drop hinzufügen, wird ein Python-Skript ausgeführt, das den Inhalt der Angebots-PDF-Datei liest und eine Bestell-PDF-Datei im selben Ordner generiert.
Nach Abschluss des Vorgangs handelt es sich um einen einfachen Prozess, der eine Benachrichtigung auf macOS anzeigt und automatisch die generierte PDF-Datei der Bestellung öffnet.
Die Struktur ist wie folgt:
~/Desktop/Generate Purchase Order/
Angebot einfügen → Generate Purchase Order.app
_lib/
generate_purchase_order.py
liberogic_logo.png
liberogic_seal.png
purchase_order_counter.json
Um den Mitarbeitern der Buchhaltung und Verwaltung die Nutzung ohne Öffnen eines Terminals zu ermöglichen, verwenden wir ein AppleScript-Droplet als Einstiegspunkt, wobei der eigentliche PDF-Generierungsprozess von Python übernommen wird.
Kurz gesagt, fügen Sie einfach das Angebots-PDF bei.Eine Desktop-Anwendung, die per Drag & Drop eine PDF-Bestellung generiert.Es kann verwendet werden, ohne ein Terminal zu öffnen, was die Handhabung auch für interne administrative Aufgaben vereinfacht.
Das Erscheinungsbild der Bestell-PDF ist an das Rechnungs- und Angebots-PDF-Format angelehnt, das wir in unserem Unternehmen verwenden.
Im Abschnitt „Anmerkungen“ ist folgender Text enthalten:
Diese Bestellung stellt einen formellen Auftrag dar. Die Bestellung basiert auf der Angebotsnummer XXX.
Die Bestellnummer hatte folgendes Format:
{会社略称}様 発注書{YYYY}{MM}{3桁連番}
Wenn es sich beispielsweise um den ersten Eintrag für Herrn/Frau XX im Februar 2026 handelt,
Sehr geehrte/r Herr/Frau XX, Bestellung 202602001
Es wird so aussehen.
Die fortlaufenden Nummern nach Firma und Monat sindpurchase_order_counter.jsonDas System regelt dies automatisch, und das Bestelldatum wird automatisch auf 5 Werktage nach dem Datum des Angebots berechnet. (Dies ist nur eine vorläufige Festlegung! Sie wird später von der Geschäftsleitung geändert!)
Um nicht nur Samstage und Sonntage, sondern auch japanische Feiertage auszuschließen, hat PythonjpholidayIch habe es benutzt.
Nur ein paar etwas schwierigere Stellen
Die Angebote, die die Grundlage für die Bestellungen bilden, werden von externen Partnern und Kooperationsunternehmen eingeholt, daher variiert das Format von Unternehmen zu Unternehmen.
Es genügt nicht, einfach anzunehmen, dass sich der Firmenname an dieser Koordinate befindet oder dass sich der Gesamtbetrag an diesem Ort befindet.
Letztendlich beinhaltet der Prozess die Verwendung regulärer Ausdrücke, um Lieferantenname, Adresse, Telefonnummer, Angebotsnummer, Angebotsdatum, Betreff, Details, Zwischensumme, Verbrauchssteuer und Gesamtbetrag so flexibel wie möglich zu extrahieren, Unternehmen mit dem Zusatz „Attn:“ als unser eigenes Unternehmen und andere als Lieferanten zu behandeln sowie Probleme zu bewältigen, wie z. B. Informationen, die visuell getrennt erscheinen, beim Extrahieren von Text aus PDFs in den Text integriert werden.
Da es Fälle gab, in denen nach der Betreffzeile Gebäudenamen oder Stockwerksnummern angegeben wurden, haben wir einen Prozess hinzugefügt, der unnötige Adressinformationen mithilfe von Begriffen wie „Gebäude“ und „Etage“ herausfiltert.
Ob es nun an KI liegt oder an etwas anderem, dies ist immer noch ein häufiges Problem bei der PDF-Verarbeitung.
Eingabeaufforderung an Claude Code weitergeleitet
Ansondern ein eine vage Anfrage zu stellen, ist es wirtschaftlicher, Platzhalter zu verwenden, wenn Sie so präzise wie möglich schreiben, einschließlich Ordnerstruktur, Verarbeitungsablauf, Layout, Nummerierungsregeln, Berechnung der Werktage, PDF-Extraktionselemente usw.
Lasst sie auch die PDF-Beispieldatei lesen!
以下の条件で、見積書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行
- 合計エリア:小計・消費税・合計のみ
- 備考欄を枠付きで表示
- ページ番号なし
Obwohl es sich im Wesentlichen um ein vereinfachtes Spezifikationsdokument handelt, ist es wichtig, so viele Details wie möglich über die geschäftlichen Rahmenbedingungen und das gewünschte Endprodukt anzugeben, ansondern ein einfach nur zu sagen: „Es soll gut aussehen.“
Tja, letztendlich scheitert es, wenn ich versuche, ein anderes Format einzulesen, also muss Claude noch härter arbeiten, aber es ist immer noch schnell, also ist es wohl in Ordnung.
(Die Anzahl der externen Mitarbeiter und Kooperationspartner, mit denen wir zusammenarbeiten, ist nicht einmal zweistellig, also ist das keine große Sache!)
Weil es so bequem ist, müssen wir uns auch Gedanken um die Sicherheit machen.
Andererseits müssen bei der Nutzung von KI-Entwicklungsunterstützung nicht nur der Komfort, sondern auch die Sicherheit berücksichtigt werden.
Während Sie den Prozess durchlaufen und Claude Code Anweisungen geben, werden verschiedene Operationen in Ihrer lokalen Umgebung durchgeführt.
- Lesen und Schreiben von Dateien in ~/Desktop
- Zugriff auf ~/Library/Services/ prüfen
- Python-Bibliotheken mit pip install installieren
- AppleScript-Anwendungen mit osacompile generieren
- Schriftdateien in ~/Library/Fonts/ lesen
Das ist zwar keine besonders wichtige Geschichte, aber es ist trotzdem etwas beunruhigend, KI Ausführungsrechte in einer lokalen Umgebung zu geben, oder? 😨
Wenn Terminal- oder Dateivorgänge einem System anvertraut werden, besteht die Möglichkeit einer unbeabsichtigten Dateierstellung, -überschreibung oder -löschung.
- Prüfen Sie, was Sie zulassen!
- Erstelle ein Backup!
- Bei allem, was sich mit Git verwalten lässt, sollten Sie die Unterschiede überprüfen!
- Lasst uns separate Arbeitsordner erstellen!
Diese grundlegenden Maßnahmen sind wichtig. Wenn Sie es für Entwicklungsarbeiten verwenden, ist es möglicherweise besser, die .env-Datei über 1Password zu laden. Das ist zwar etwas umständlich, macht aber einen großen Unterschied. (vonUnser CTO)
Andererseits, wie in diesem FallWenn es nur für den Einsatz in einem lokalen Umfeld bestimmt ist, sind die Risiken relativ gering.In den meisten Fällen breitet sich der Einfluss selten über das Netzwerk nach außen aus und beschränkt sich im schlimmsten Fall darauf, das eigene Umfeld zu beeinträchtigen.
Es gibt noch viele weitere Punkte zu beachten, aber „etwas schnell erstellen zu können“ und „es sicher verwenden zu können“ sind zwei verschiedene Dinge. Bei der Entwicklung mit KI sollten Sie unbedingt die Ausführungsberechtigungen, Dateivorgänge, externen Bibliotheken und die Verarbeitung von Eingabedaten während des Entwicklungsprozesses überprüfen!
Zukünftig werden wir uns auf die gemeinsame Nutzung von Mitarbeitern und die Integration mit Supabase konzentrieren.
Dieses Mal habe ich also ein einfaches Tool zur Generierung von Bestellungen entwickelt, das in einer lokalen Umgebung läuft.
In der Anfangsphasepurchase_order_counter.jsonWir haben ein System eingerichtet, um fortlaufende Nummern nach Firma und Monat zu verwalten. Da wir dieses System aber zukünftig mit den Mitarbeitern teilen werden, führt die Verwaltung der fortlaufenden Nummern ausschließlich über lokale JSON-Dateien natürlich zu Problemen wie doppelten Bestellnummern.
Daher plane ich, auf der Supabase-Seite firmenspezifische und monatliche Zähler zu implementieren, damit es auch bei der Nutzung durch mehrere Personen keine doppelten fortlaufenden Nummern gibt, und außerdem Funktionen wie die Historie der Bestellausstellung, den Lieferanten, die Angebotsnummer, den Bestellbetrag, das Bestelldatum und den Speicherort für PDFs hinzuzufügen!
Obwohl er CEO ist, ist er stets ein Ansprechpartner für die Mitarbeiter. Er hat Freude daran, neue Technologien zu verstehen und praktische Verbesserungen mitzuerleben. Er ist ein engagierter und tatkräftiger Mensch, der sich voll und ganz seiner Arbeit widmet. Er ist begeistert von Zukunftstechnologien und möchte, unabhängig von seinem Alter, weiterhin neue Erfahrungen sammeln.
Morimoto
Projektmanager / Direktor / Gegründet 2007