temp image

Pythonでオリジナルの質問票を作成!データ収集を効率化する完全ガイド

Pythonで質問票作成!データ収集の自動化と効率化

確定申告の時期に会計事務所から質問票に記載してと依頼がくると思います。大体がエクセル、ワード、PDFの入力となっており、毎年同じことを入力するのが面倒だと思います。しかし、Pythonを使えば、独自の質問票をWEB上で簡単に作成・管理することができます。

この記事では、プログラミング初心者の方でもPythonを使ってコマンドラインベースの質問票を作成する方法を、具体的なコード例を交えながら徹底解説します。

なぜPythonで質問票を作成するのか?

  • 柔軟性とカスタマイズ性: 市販のツールでは難しい、独自の質問形式やロジックを実装できます。
  • データ処理との連携: 収集した回答データをそのままPythonで分析したり、CSVなどの形式で出力したりと、次のステップへの連携がスムーズです。
  • 自動化: 定期的なアンケートの実施や、特定の条件に基づく質問の分岐などもプログラムで自動化できます。
  • 学習コストの低さ: Pythonは文法がシンプルで読みやすく、初心者でも比較的短期間で習得できます。

基本的な質問票の作成ステップ

Pythonで質問票を作成する主なステップは以下の通りです。

  1. 質問内容と形式(自由記述、選択式など)を定義する。
  2. ユーザーに質問を表示し、回答を入力させる。
  3. 入力された回答を保存する。
  4. すべての質問が終了したら、結果を表示または保存する。

ステップ1: 質問リストの定義

まずは、質問内容と回答形式をPythonのリストと辞書を使って定義します。これにより、複数の質問を効率的に管理できます。

questions = [
    {"question": "お名前を教えてください。", "type": "text"},
    {"question": "性別を選択してください。", "type": "choice", "options": ["男性", "女性", "その他", "回答しない"]},
    {"question": "今日の気分は? (例: 良い、普通、悪い)", "type": "text"},
    {"question": "このツールの満足度を5段階で評価してください。(1:不満〜5:満足)", "type": "choice", "options": ["1", "2", "3", "4", "5"]}
]

answers = {}

ステップ2: 質問の表示と回答の収集

定義した質問リストをループで処理し、質問を表示してユーザーからの回答を`input()`関数で受け取ります。選択式の質問には、選択肢を表示して番号で選ばせるロジックを追加します。

for i, q_data in enumerate(questions):
    print(f"\n--- 質問 {i+1}/{len(questions)} ---")
    print(q_data["question"])

    if q_data["type"] == "text":
        answer = input("あなたの回答: ")
    elif q_data["type"] == "choice":
        for j, option in enumerate(q_data["options"]):
            print(f"{j+1}. {option}")
        while True:
            try:
                choice_index = int(input("番号で選択してください: ")) - 1
                if 0 <= choice_index < len(q_data["options"]):
                    answer = q_data["options"][choice_index]
                    break
                else:
                    print("無効な選択です。もう一度入力してください。")
            except ValueError:
                print("数字を入力してください。")
    
    answers[q_data["question"]] = answer

ステップ3: 回答結果の表示

すべての質問が終了したら、収集した回答結果を表示します。今回は辞書に保存した内容を出力します。

print("\n--- 質問票の回答結果 ---")
for q, a in answers.items():
    print(f"{q}: {a}")

完全なコード例

これらを組み合わせた完全なコードは以下のようになります。

questions = [
    {"question": "お名前を教えてください。", "type": "text"},
    {"question": "性別を選択してください。", "type": "choice", "options": ["男性", "女性", "その他", "回答しない"]},
    {"question": "今日の気分は? (例: 良い、普通、悪い)", "type": "text"},
    {"question": "このツールの満足度を5段階で評価してください。(1:不満〜5:満足)", "type": "choice", "options": ["1", "2", "3", "4", "5"]}
]

answers = {}

print("Python製カスタム質問票へようこそ!")

for i, q_data in enumerate(questions):
    print(f"\n--- 質問 {i+1}/{len(questions)} ---")
    print(q_data["question"])

    if q_data["type"] == "text":
        answer = input("あなたの回答: ")
    elif q_data["type"] == "choice":
        for j, option in enumerate(q_data["options"]):
            print(f"{j+1}. {option}")
        while True:
            try:
                choice_index = int(input("番号で選択してください: ")) - 1
                if 0 <= choice_index < len(q_data["options"]):
                    answer = q_data["options"][choice_index]
                    break
                else:
                    print("無効な選択です。もう一度入力してください。")
            except ValueError:
                print("数字を入力してください。")
    
    answers[q_data["question"]] = answer

print("\n--- 質問票の回答結果 ---")
for q, a in answers.items():
    print(f"{q}: {a}")

print("ご協力ありがとうございました!")

さらに発展させるには

上記のコードは基本的な機能ですが、Pythonの強力さを活かせばさらに高度な質問票を作成できます。

  • 回答の保存: csvモジュールを使って回答結果をCSVファイルに保存したり、jsonモジュールでJSON形式で保存したりすることで、データを永続化できます。
  • 条件分岐ロジック: 特定の質問への回答に応じて、次の質問の内容を変えるロジックを実装できます。
  • バリデーション: 数字入力の際、特定の範囲内であるか、メールアドレスの形式が正しいかなどをチェックする機能を追加できます。
  • GUIアプリケーション: TkinterPyQtなどのライブラリを使えば、コマンドラインではなく、より視覚的なユーザーインターフェースを持つ質問票を作成できます。
  • Webアプリケーション: FlaskDjangoといったWebフレームワークを使えば、Webブラウザからアクセスできる質問票を作成し、オンラインでデータを収集できます。

まとめ

Pythonを使えば、初心者でも簡単にオリジナルの質問票を作成し、データ収集プロセスを効率化することができます。今回紹介した基本的なコードをベースに、ぜひあなた自身のニーズに合わせて機能を拡張してみてください。Pythonの力を借りて、手間のかかる作業から解放され、よりクリエイティブな活動に時間を使いましょう!