安心決済詳しく
- プランの範囲内の修正は無料です。
- 納品から3日以内にご対応がない場合、自動的に承認されます。
代金はお支払い時にお預かりし、納品を承認した時点ではじめて支払われます。

成果物の例
9店舗の月次売上ファイルを1つのExcelレポートにまとめる
実行の仕方
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO フォルダ:sales/2026-10、ファイル9件を検出
2026-11-02 09:14:03 INFO shop-01.csv:1,284行
2026-11-02 09:14:04 INFO shop-02.xlsx:967行
2026-11-02 09:14:04 WARN shop-07.csv:価格のない3行をスキップ(88行目、412行目、913行目)
2026-11-02 09:14:05 INFO 完了:10,412行 -> report-2026-10.xlsx(シート「売上」と「合計」)
コードではなく設定で
各店舗の列名は settings.ini にまとめてあるので、店舗が増えたり列名が変わったりしても、そこに1行加えるだけです。
[columns]
date = 日付, 販売日, 売上日
product = 商品, 品名, 商品名
quantity = 数量, 個数, 点数
price = 価格, 単価
コードの一部
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""1店舗分のファイルを読み込み、レポートの列名に合わせます。"""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}:'{name}' に当たる列がありません(探した列名:{', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
ファイル: merge_sales.py(310行)、settings.ini、requirements.txt、そしてPythonのインストール方法、スクリプトの実行方法、ログの各メッセージの意味を説明したREADMEを含むZIPファイル。お客様ご自身のパソコンで実行していただきます。
お客様: 9店舗を展開する小さな文具店チェーン。各店舗が月の売上をCSVまたはExcelファイルで送ってきますが、列名が少しずつ異なります。 ご依頼内容: フォルダ内のすべてのファイルを読み込み、列を1つの形にそろえ、全売上と店舗別の合計シートを含む1つのExcelレポートを書き出すスクリプト。
お客様とすべての情報は架空のものです。
このサービスについて
定期的なコピーのないデータベースは、一度の更新ミスやディスクの満杯で、注文、記事、顧客の記録を失いかねません。このスクリプトは、サーバーに合わせてBashかPythonで、MySQL、MariaDB、PostgreSQLのデータベースを、付属のツール(mysqldumpやpg_dump)でまるごとダンプし、圧縮して日付入りの名前を付け、ルールで決めた分だけコピーを残します。たとえば日次7つ、週次4つ、月次6つ。古いコピーはそのルールに従ってのみ削除されます。データベースのパスワードは、コードではなく、サーバー上でお客様が記入する標準のオプションファイル(.my.cnfや.pgpass)に入れます。インストールと実行はお客様ご自身のサーバーで行っていただき、こちらがログインすることはありません。まずテスト用のコピーで試し、バックアップを1つテスト用データベースに復元して、きちんと使えることを確認してください。
含まれる内容
- 納品物スクリプト、手順を一つずつ説明したREADME、スタンダード以上ではデータベース、フォルダ、残すコピー数を書いた設定ファイルを入れたZIPファイル。コードは注文ページでも確認できます。
- 標準のツールmysqldumpやpg_dump。特殊なものはインストール不要
- ルールどおりの世代管理古いコピーは設定どおりにのみ削除
- パスワードはコードの外にサーバー上の.my.cnfや.pgpassに
- 失敗に気づけるスタンダード以上で、失敗や空のダンプはログに残し、コピーとして数えない
- 読みやすいコードコメント付きで、あとからデータベースを追加しやすい
ご利用の流れ
- 1作業内容サーバー、データベース、残すコピー数をご説明いただきます
- 2コードスクリプトとインストールガイドを作成します
- 3お試しテスト用のコピーで実行し、バックアップを1つテスト用データベースに復元していただきます
- 4修正プランの範囲内で修正を依頼し、エラーメッセージがあればお送りください
ご用意いただくもの
データベース(MySQL、MariaDB、PostgreSQL)とそのバージョン、サーバーのOS(例:Ubuntu 22.04)とパッケージをインストールできるか、データベースのサイズ、コピーの保存先と空き容量。世代管理のルール:日次・週次・月次のコピーをいくつ残すか。プレミアムの場合は、2つ目の保存先と失敗時のメールの送り先。パスワードやサーバーへのアクセス情報は絶対に送らないでください。
お伺いする内容:
- どのデータベースで、サイズは?
- どんなサーバーですか?
- 残すコピー数は?
- コピーの保存先は?
- BashかPythonか?
プランを比較
| プラン | ベーシックデータベース1つ¥2,480 | スタンダード設定付きのバックアップ¥5,100 | プレミアムバックアップツール¥10,360 |
|---|---|---|---|
| 納期 | 1日 | 2日 | 3日 |
| 修正回数 | 1 | 2 | 3 |
| コード | 150行まで | 400行まで | 1,000行まで |
| コードのファイル数 | 1 | 最大3 | 最大8 |
| 設定ファイル | なし | あり | あり |
| わかりやすいエラーメッセージとログ | なし | あり | あり |
| 実行オプションと定期実行のガイド | なし | なし | あり |
| インストール・実行ガイド(README) | あり | あり | あり |
| 言語 | BashまたはPython | BashまたはPython | BashまたはPython |
| 注文する ベーシック | 注文する スタンダード | 注文する プレミアム |
安心決済
お支払いは注文時ですが、代金が支払われるのは承認された納品に対してのみです。
- 固定料金お支払い後にプランの料金が変わることはありません。
- 代金はお預かりお支払い時、代金はお預かりするだけです。納品を承認した時点でサービス側に支払われます。
- 納品前にチェックすべての成果物はお手元に届く前に品質チェックを受けます。承認前に注文ページで内容を確認できます。
- 無料の修正依頼内容の範囲内で、プランで定められた回数まで修正を依頼できます。
- 3日後に自動承認納品から3日以内に承認も修正依頼もない場合、自動的に承認されます。納品後に注文チャットでメッセージを送った場合、注文は保留されます。こちらから回答した後、3日間のカウントを再開することがあり、その際はチャットでお知らせします。
- やり直しまたは全額返金結果が依頼内容と合わず修正でも解決しなかった場合、または作業に納期の2倍を超える時間がかかった場合は、注文チャットでご連絡ください。作業をやり直すか、代金を全額返金いたします。
質問と回答
古いバックアップは削除されますか?
「日次7つ、週次4つ残す」のようにいただいたルールに従ってのみ、スクリプトが書き込むバックアップフォルダ内でのみ削除します。ルールを設定するまでは、すべて残します。
コピーをサーバーの外に保管できますか?
プレミアムでは、各バックアップを2つ目のディスクや、すでにお持ちのストレージにコピーします。そのストレージのコマンドラインツールと、ご自身で設定に入れたキーを使います。
実行中にサイトは止まりますか?
MySQLのInnoDBテーブルとPostgreSQLでは、サイトを止めずにダンプします。それでも非常に大きなデータベースではサイトが遅くなることがあるため、アクセスの少ない時間帯に実行してください。
サーバーへの設定もしてもらえますか?
いいえ。こちらがお客様のサーバーにログインすることはありません。スクリプトのコピーからcronへの登録(プレミアム)まで、すべての手順をREADMEで説明しています。
答えが見つかりませんか?