初案件は取れた、レビューも★5。けれど2件目・3件目が単発で終わって収入が安定しない——副業半年〜1年でよく聞く悩みです。単発と継続を分けるのは技術力ではなく、「依頼内容そのものをどう設計するか」=要件定義のフェーズです。私が初案件3,000円を半年で5〜6回のリピート(累計15,000円)に育てられたのは、「データを納品する」のではなく「ツールを納品する」という発想転換が効いたからでした。
この記事でわかること(3部作の継続案件化編):
- クライアントの「真因」を引き出すヒアリング術
- 単発を継続に変えるツール化提案の伝え方
- 非エンジニアでも使えるEXE+Excel+マニュアルの作り方
まだ初案件を取っていない方は先に入門編からどうぞ。
ヒアリングで「真因」を掘る
依頼文はほとんど表層のニーズです。「AサイトのデータをCSVで欲しい」の奥に別の動機があります。
- 表層:CSVが欲しい
- 真因A:競合の価格を毎週チェックして自社の値付けを調整したい → 定期実行が必要
- 真因B:自社サイトに在庫を反映する手作業が辛い → インポート形式が重要
- 真因C:取引先の納期管理が破綻しそう → 通知や自動連携が刺さる
同じ「CSVが欲しい」でも真因で最適な納品物が変わる。ここに気づけるかが単発と継続の分岐点です。私の最初の案件も、依頼文は「毎月CSVで送って」でしたが、往復の中でクライアントが「自分の好きなタイミングで取れたら一番ありがたい」と漏らした。真因は「自分の判断で実行したい」だったわけです。
以降、初回ヒアリングで必ず5問を聞くようにしました。
- このデータを最終的に何のために使いますか?(用途を聞くと真因が出る)
- 取得頻度はどれくらいの想定ですか?(毎月/週次/不定期で要件が変わる)
- 最終的に操作するのはどなたですか?(本人/チーム/非エンジニアで難易度が変わる)
- サイトの仕様が変わったときはどう対応したいですか?(保守の必要性が見える)
- データを最終的にどんな形で見たいですか?(Excel/自社システム/メール通知 等)
1〜2問だけでも真因が掘れることが多く、「ではこういう納品形態はいかがですか」と提案に転換する流れがテンプレ化しました。
ツール化提案の伝え方
真因を引き出した後、私が実際に送ったメッセージ:
1点ご提案です。データを毎回お送りする形だけでなく、ご自身でいつでも実行できるツールとしてお渡しすることもできます。ダブルクリックで起動するWindowsアプリで、Excelファイルが結果として出てきます。今回のサイト構造であれば追加費用なしで対応可能です。いかがでしょうか?
返信は「そんなことができるんですか!?ぜひお願いします!」。最も効いたのは「ダブルクリックで起動」という一言だったそうです。コマンドラインでPythonを実行する前提は彼らの世界に存在しないので、「PCを使ったことがある人なら誰でもできる操作」に翻訳するだけで価値の伝わり方が変わります。
非エンジニアへの提案で避ける用語と置き換え:
| NG用語 | 置き換え表現 |
|---|---|
| 実行ファイル / バイナリ | Windowsアプリ/ダブルクリックで起動するソフト |
| 引数 / オプション | 設定項目/チェックボックス |
| ターミナル / コマンドライン | (触れない。GUIで完結させる) |
| ライブラリ / 依存関係 | 必要なものはすべて中に同梱しています |
| デバッグ / リファクタ | 不具合の修正/中身の整理 |
| Git / リポジトリ | (触れない。Google Drive等で配布) |
非エンジニアに優しい納品形態
継続案件につなげる三種の神器、EXE化・Excel出力・操作マニュアルです。
EXE化(PyInstaller)
非エンジニアのPCにはPythonが入っていません。インストールしてもらうとPATH設定・依存衝突などサポートコストが跳ね上がる。これをPyInstallerのEXE化で一発解決します。
pip install pyinstaller
pyinstaller --onefile --noconsole main.py
--onefile:1つの.exeにまとめる(配布が楽)--noconsole:黒い画面を表示しない(GUIアプリのとき)
進捗を見せたいCLIツールなら --noconsole を外す。クライアントは進捗が見えた方が安心するので、進捗ログは出した方がいいです。落とし穴は3つ:
- Defenderの警告:署名なしだと「不明な発行元」警告が出る。マニュアルに「警告が出たら『詳細情報』→『実行』」とスクショ付きで明記すると問い合わせがほぼゼロに
- ファイルサイズ:
--onefileは20〜80MB、pandas/Selenium込みで100MB超も。Google Drive配布なら問題ないがメール添付は厳しい - 一部ライブラリの追加設定:Selenium/Playwrightのドライバはデフォルトで同梱されないことがある。
--add-dataで同梱するか自動DL方式に。納品前に必ず別PC(理想はクライアントと同じWindows環境)で動作確認
Excel出力
受け皿はCSVではなくExcel(.xlsx)が私のスタンダード。非エンジニアの業務はExcelで完結しているからです。注意点は、列名・並び順を固定すること(クライアントのVLOOKUPやコピペ先が列位置に依存している。追加要望は末尾に追加で統一)。ファイル名に取得日時を入れると履歴管理が自動化されます(products_20260505_1430.xlsx)。
from openpyxl import Workbook
from datetime import datetime
wb = Workbook()
ws = wb.active
ws.title = "商品一覧"
# ヘッダー行
ws.append(["商品名", "価格", "在庫", "取得日時", "URL"])
# データ行(取得結果をループで追加)
for item in scraped_items:
ws.append([item["name"], item["price"], item["stock"],
datetime.now().strftime("%Y-%m-%d %H:%M"), item["url"]])
# 列幅の自動調整(簡易版)
for col in ws.columns:
max_length = max(len(str(cell.value or "")) for cell in col)
ws.column_dimensions[col[0].column_letter].width = max_length + 2
wb.save(f"products_{datetime.now().strftime('%Y%m%d_%H%M')}.xlsx")
列幅の自動調整を入れるだけで、ファイルを開いた瞬間の印象がぐっと良くなります。
操作マニュアル
EXEとExcelを揃えてもマニュアルが無ければ問い合わせは止まりません。私は4枚のスクショを軸にします。
- 配置:ファイルをデスクトップに置く図
- 起動:ダブルクリックする図(赤丸でクリック箇所を強調)
- 実行中:進捗が表示されている図(黒画面でも安心してもらえる)
- 完了:Excelファイルが生成された図
「何をすれば終わるか」が画像だけで完結しているのがポイント。テキストだけのマニュアルは非エンジニアにとって「読まないもの」と割り切ります。動画にするならLoom/OBS Studio/Windows標準のXboxゲームバー(Win + G)で、3〜5分に収めるのが鉄則。末尾に「うまく動かないとき」セクションを置き、起動しない(Defender警告の手順)/結果が空(ネット接続・対象サイト表示の確認)/文字化け(UTF-8設定)の3項目をカバーすると一次サポートの半分以上が減ります。
💡 2026年現在の補足:マニュアルの初稿はAIエージェントに作らせ、スクショだけ自分で差し込むと作成時間が半分以下に。線引きは別記事【AI活用編】で扱う予定です。
検収を明確化する
揉める典型は「これは仕様通り」「いや想定と違う」の押し問答。最も効く対策は検収基準を出品段階で文章化することです。私が標準で入れている4項目:
- 取得件数:想定の目安(例:100件以上)/極端な乖離は事前合意
- 列の網羅性:出品ページ記載の取得項目が全て埋まっていること
- サンプル一致:指定の3〜5件で目視一致を確認
- 再取得条件:軽微な不具合(列名間違い・パース漏れ)は7日間内なら無償
納品時に「以下の検収基準で確認をお願いします」と一行添えるだけで、感情的なトラブルがほぼ消えます。
スコープ管理 — 「ちょっと追加で…」を防ぐ
継続案件が育つと必ず「ちょっと追加で◯◯も」が来ます。善意で全部請けると単価が崩壊する。境界線を最初から見せます。
| カテゴリ | 内容 | 対応 |
|---|---|---|
| 軽微修正 | 列名の誤字・取得漏れの再取得 | 7日以内なら無償 |
| 仕様変更追随 | サイト側のHTML変更によるツール改修 | 月額保守 or 都度見積もり |
| 機能追加 | 別サイト追加・スケジュール実行・通知機能 | 追加見積もり |
「これは軽微修正の範囲です/こちらは追加見積もりになります」と即返答できる枠組みがあると、クライアント側も合理的に判断してくれます。
受け渡し方法の標準化
毎回違う方法はトラブルの温床。私の標準はGoogle Driveに統一です。パスワード付きZIPの添付は廃止(セキュリティ議論で非推奨)、共有リンクで配布(権限はクライアントのGoogleアカウントに限定)、バージョンが上がったら同じフォルダにv1.1/v1.2と並べる。これで「どのバージョンか」「ファイルが見つからない」系の問い合わせがゼロになりました。
結果として5〜6回のリピートに
最初の3,000円・時給58円が、ここまでの手順で半年で合計約15,000円に育ちました。
| 回数 | 内容 | 単価 |
|---|---|---|
| 1回目 | 初回スクレイピングツール納品 | ¥3,000 |
| 2回目 | サイト仕様変更への追随 | ¥2,000 |
| 3回目 | 別商品ジャンルの追加 | ¥3,000 |
| 4回目 | CSVフォーマットの調整 | ¥1,500 |
| 5回目 | 取得項目の追加 | ¥3,000 |
| 6回目 | スケジュール実行のオプション化 | ¥2,500 |
単価は大きくありませんが、2件目以降の作業時間は1〜3時間に圧縮でき、時給ベースで10倍以上の改善。さらに信頼関係が別案件の紹介や★5レビュー追加に間接的に効きます。継続案件は単発の積み重ねより複利で効くタイプの収益構造です。
まとめ — 単発を継続に変える3つのコア
- 真因ヒアリング:「データが欲しい」の奥の動機を質問で引き出す
- ツール化提案:単発のデータ納品でなく、自分で実行できるEXE+Excelを提案する
- 検収・スコープの構造化:揉めない仕組みを最初に文章化する
技術力を上げる前に、依頼内容そのものを設計し直す方が早く効きます。
次のステップ
次は継続案件を育てて単価を上げるフェーズ。技術改善の5軸(再利用性・例外処理・ログ・出力・変更耐性)とパッケージ価格戦略を解説します。
👉 次の記事:副業プログラミングで単価を上げる技術投資 — 5つの改善軸&パッケージ価格設計
まだ出品していない方は入門編を先にどうぞ。