初案件は取れた、レビューも★5。けれど2件目・3件目が単発で終わって収入が安定しない——副業半年〜1年でよく聞く悩みです。単発と継続を分けるのは技術力ではなく、「依頼内容そのものをどう設計するか」=要件定義のフェーズです。私が初案件3,000円を半年で5〜6回のリピート(累計15,000円)に育てられたのは、「データを納品する」のではなく「ツールを納品する」という発想転換が効いたからでした。

この記事でわかること(3部作の継続案件化編):

  • クライアントの「真因」を引き出すヒアリング術
  • 単発を継続に変えるツール化提案の伝え方
  • 非エンジニアでも使えるEXE+Excel+マニュアルの作り方

まだ初案件を取っていない方は先に入門編からどうぞ。


ヒアリングで「真因」を掘る

依頼文はほとんど表層のニーズです。「AサイトのデータをCSVで欲しい」の奥に別の動機があります。

  • 表層:CSVが欲しい
  • 真因A:競合の価格を毎週チェックして自社の値付けを調整したい → 定期実行が必要
  • 真因B:自社サイトに在庫を反映する手作業が辛い → インポート形式が重要
  • 真因C:取引先の納期管理が破綻しそう → 通知や自動連携が刺さる

同じ「CSVが欲しい」でも真因で最適な納品物が変わる。ここに気づけるかが単発と継続の分岐点です。私の最初の案件も、依頼文は「毎月CSVで送って」でしたが、往復の中でクライアントが「自分の好きなタイミングで取れたら一番ありがたい」と漏らした。真因は「自分の判断で実行したい」だったわけです。

以降、初回ヒアリングで必ず5問を聞くようにしました。

  1. このデータを最終的に何のために使いますか?(用途を聞くと真因が出る)
  2. 取得頻度はどれくらいの想定ですか?(毎月/週次/不定期で要件が変わる)
  3. 最終的に操作するのはどなたですか?(本人/チーム/非エンジニアで難易度が変わる)
  4. サイトの仕様が変わったときはどう対応したいですか?(保守の必要性が見える)
  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枚のスクショを軸にします。

  1. 配置:ファイルをデスクトップに置く図
  2. 起動:ダブルクリックする図(赤丸でクリック箇所を強調)
  3. 実行中:進捗が表示されている図(黒画面でも安心してもらえる)
  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つのコア

  1. 真因ヒアリング:「データが欲しい」の奥の動機を質問で引き出す
  2. ツール化提案:単発のデータ納品でなく、自分で実行できるEXE+Excelを提案する
  3. 検収・スコープの構造化:揉めない仕組みを最初に文章化する

技術力を上げる前に、依頼内容そのものを設計し直す方が早く効きます。


次のステップ

次は継続案件を育てて単価を上げるフェーズ。技術改善の5軸(再利用性・例外処理・ログ・出力・変更耐性)とパッケージ価格戦略を解説します。

👉 次の記事:副業プログラミングで単価を上げる技術投資 — 5つの改善軸&パッケージ価格設計

まだ出品していない方は入門編を先にどうぞ。

👉 入門編:ココナラでプログラミング副業を始める方法|Pythonスクレイピングで実績ゼロから1案件目を取るまで