判定基準_x個、評価基準_y個、選択肢_z個で意思決定をサポート

# 0. はじめに
### 概要
日々の業務の中で「どの選択を取るべきか？」という意思決定に迷う場面があると思います。

状況や目的によって選択は変わりますが、「判断基準を明確にし、数値で評価し、選択肢を整理すること」により、最適な選択にたどりつく確率が高まると考えます。

今回は「判定基準_x個」「評価基準_y個」「選択肢_z個」を組み合わせた意思決定をサポートする簡単な仕組みを考えてみました。

ChatGPTでPythonのソースコードを作成し、「業務マニュアルの整備」を例に「どの形式のマニュアルが適切か？」を判定する流れをご紹介します。

### 注意点
  - ChatGPTにプロンプトを入力する際は、個人情報や機密情報を含めないよう十分注意してください
  - 機密情報を含めずに、汎用的な内容でプロンプトを作成し、活用してください


# 1. 基準と選択肢の検討
ここでは、業務マニュアルの形式を判定する為の基準や選択肢を検討します。

## 1-1. 判定基準（x個）を決める
どのような判定基準（x個）を用意するかを検討します。
業務マニュアルの例では、以下の5つの判定基準が考えられます。

 | No | 判定基準 | 説明 |
 | --- | ---------- | ------------- |
 |1|マニュアルの更新頻度|頻繁に更新が必要か？|
 |2|視覚的な理解の重要度|文章よりも動画や画像が必要か？|
 |3|即時アクセスの必要性|すぐに情報を取得できる形式が良いか？|
 |4|初心者の研修資料として使用|初心者向けにわかりやすくする必要があるか？|
 |5|デジタル化の推進度|DX推進の仕組みに使いたいか？|

※この基準そのものをChatGPTで生成することも可能です
※生成する際のプロンプトに「判定基準の例」を含めることをおすすめします


## 1-2. 評価基準（y個）を決める
各判定基準を評価する基準（1〜yのスコア）を検討します。
業務マニュアルの例では、以下の5つの評価基準が考えられます。

 | スコア| 説明| 
 | --- | ---------- | 
 |1|ほぼ重要でない|
 |2|あまり重要でない|
 |3|どちらとも言えない|
 |4|やや重要|
 |5|非常に重要|

※この基準もChatGPTを活用して生成可能です
※生成する際のプロンプトに「判定基準の例」を含めることをおすすめします


## 1-3. 選択肢（z個）を決める
選択肢（z個）を検討します。
業務マニュアルの例では、以下の4つの選択肢が考えられます。

 - ドキュメントで作る
      - 文書として残るため、後から編集・更新しやすい
      - 詳細な業務フローを記載できる
 - WEBで作る
      - どこからでもアクセス可能で、リンクや検索機能を活用できる
      - 画像や表を使って視認性を向上できる
 - 動画で作る
      - 直感的に理解しやすく、新人研修にも向いている
      - 実際の作業手順を視覚的に伝えられる
 - チャットボットで作る
      - ユーザーが知りたい情報を即座に検索できる
      - 業務効率化にも貢献する

※この選択肢そのものをChatGPTで生成することも可能です
※生成する際のプロンプトに「選択肢の例」を含めることをおすすめします


# 2. ソースコードの生成
ここでは、プロンプトを作成した後、Pythonのソースコードを生成していきます。

## 2-1. プロンプト作成
検討内容をもとにChatGPTに入力するプロンプトを作成します。

 ```
# 業務マニュアルの最適な形式を判定するPythonのソースコードを作成してください。

## 条件
 - 5つの判定基準を用意
 - 5段階の評価基準（1〜5）
 - 4つの選択肢を提示
 - ユーザーが入力したスコアに応じて、最適な選択肢を提案する
 - 提案する選択肢は、5つの判定基準と5段階の評価基準をもとに判定
 - Pythonのソースコードには適宜コメントを追加
 - 回答結果に対して適切なコメントを追加
 
 ## 判定基準
 1. マニュアルの更新頻度
 2. 視覚的な理解の重要度
 3. 即時アクセスの必要性
 4. 初心者向けの研修資料としての適用性
 5. 業務のデジタル化の推進度

 ## 選択肢
 1. ドキュメントで作る
 2. WEBで作る
 3. 動画で作る
 4. チャットボットで作る
 ```

## 2-2. プロンプト実行 → ソースコード生成
ChatGPTにプロンプトを入力し、Pythonのソースコードを生成します。
以下、生成されたソースコードのサンプルです。

 ```
def determine_best_manual_format(scores):
    """
    業務マニュアルの最適な形式を判定する関数
    :param scores: 5つの判定基準のスコア（1〜5）のリスト
    :return: 最適な選択肢と理由
    """
    
    # 選択肢とスコアの基準を設定（重み付けは必要に応じて適宜調整）
    options = {
        "ドキュメント": scores[0] * 2 + scores[3] * 3 + scores[4] * 2,
        "WEB": scores[0] * 3 + scores[2] * 3 + scores[4] * 3,
        "動画": scores[1] * 4 + scores[3] * 3,
        "チャットボット": scores[2] * 4 + scores[4] * 4,
    }
    
    # 最適な選択肢を決定
    best_option = max(options, key=options.get)
    
    # 判定結果のコメント
    comments = {
        "ドキュメント": "ドキュメント形式は、頻繁に更新が必要なマニュアルや研修資料に適しています。", 
        "WEB": "WEB形式は、即時アクセスが重要な業務やデジタル化を推進したい場合に最適です。", 
        "動画": "動画形式は、視覚的な理解が重要なマニュアルに適しています。", 
        "チャットボット": "チャットボット形式は、デジタル化が進んだ業務環境や即時回答が必要な場合に適しています。"
    }
    
    return best_option, comments[best_option]

if __name__ == "__main__":
    print("業務マニュアルの最適な形式を判定します。各基準に対して1〜5のスコアを入力してください。")
    criteria = [
        "マニュアルの更新頻度",
        "視覚的な理解の重要度",
        "即時アクセスの必要性",
        "初心者向けの研修資料としての適用性",
        "業務のデジタル化の推進度"
    ]
    
    user_scores = []
    for criterion in criteria:
        while True:
            try:
                score = int(input(f"{criterion} (1〜5): "))
                if 1 <= score <= 5:
                    user_scores.append(score)
                    break
                else:
                    print("1〜5の範囲で入力してください。")
            except ValueError:
                print("数値を入力してください。")
    
    best_format, comment = determine_best_manual_format(user_scores)
    print(f"\n最適な業務マニュアルの形式: {best_format}")
    print(f"理由: {comment}")
 ```


# 3. 実行
ここでは、判定基準に対してスコアを入力した後、判定結果を確認します。

## 3-1. ソースコードの実行
生成されたソースコードを実行すると、コンソール画面で以下のような入力を求められます。
それぞれ判定基準のスコア（今回であれば1～5）を入力していきます。
```
基準に対して1〜5のスコアを入力してください。
マニュアルの更新頻度 (1〜5):　　←　ここにスコアを入力する
```

## 3-2. 判定結果の確認
入力例
```
基準に対して1〜5のスコアを入力してください。
マニュアルの更新頻度 (1〜5): 3
視覚的な理解の重要度 (1〜5): 4
即時アクセスの必要性 (1〜5): 3
初心者向けの研修資料としての適用性 (1〜5): 4
業務のデジタル化の推進度 (1〜5): 3
```

出力例
```
最適な業務マニュアルの形式: 動画
理由: 動画形式は、視覚的な理解が重要なマニュアルに適しています。
```

実行結果が想定する内容と異なる場合は、【2-1】に戻ってプロンプトを調整し、【2-2】で再度ソースコードを生成してください


# 4. 最後に
本記事では、意思決定をサポートする仕組みを「業務マニュアルの整備」を例にして紹介しました。

今回の仕組みは、あくまでサポートを目的としているため、最終的な判断は自身で行う必要がありますが、意思決定を行う上での一助になれば幸いです。

最後まで読んでいただき、本当にありがとうございました！