---
# System prepended metadata

title: 「空き人」診断ツール

---

# 「空き人」診断ツール

## input/output
input: 4段階のアンケート
output: レーダーチャート

## プログラム構成
- SPA(single page app)
- 設問DB
    - Googleスプレッドシートで管理できればGood
- 公開方法
    - github pageesで公開する
    - netlifyいいかも
    - WodrPressの固定ページに埋め込む
    - LINE chatbot検討
- Nuxt.js
- chart.js

## 軸をどうするか
現在考えられているのは 
- 時間がある【ゆとり】
- 体力【健康】
- お金【経済】
- コミュニケーション【人】
- 判断【精神】
- 情報

※コンテンツ作成参考資料
https://www.amazon.co.jp/dp/B08MTM65TT/ref=cm_sw_r_tw_dp_x_nO11FbG1PPB1M
https://www.doubutsu-uranai.com/


## 今後の流れ
1. 12/17 CTS Meetup　空き人作戦会議@zoom
2. 12/22 空き人Vol3 
　　「空き人（メインで発表）」「路上イベントマップ」「ひまアプリ」
4. 12/24 おじさんあるある
5. . 12/28 のら街歩き
6. . まずは、各軸は独立として、アンケート答えてレーダーチャート表示するまでは作成する　太田
7. . アンケート100件集める（1回目のデータ収集）　史織
8. . コンテンツ制作　6軸に対するコメント作成　桑
（12月はここまで）

（1月から）
1. 設問が複数の軸に絡む場合も考える
1. 軸とは違うパラメータを設定することになるかも
1. 設問増やす、軸も検討
2. シルバー人材センター、りとらいふ窓口、未来大学でテスト運用（WEB、紙、両用判断）（2回目のデータ収集）
（1月UDC最終応募はこのくらいかな） 
6. ユーザー認証いれて、過去の履歴を把握（ここまで来るとDB含めシステム再検討かな）
7. いっそLINEアプリにできないか(chatbot)
  
-
ストーリー
0.　埼玉県、さいたま市の高齢化について
1.　『ホンネ会議』2019年8月　シニア男性の活用について
2.　毎月「学習会」シニア男性の活用について検討
3.　アイデアがでた「SHOW&TELL」「空き人アイデアソン」「おじさん受け入れマニュアル」「ひまマッチングアプリ」
4.　『ホンネ会議』の実施　8/10
5.　空き人　アイデアソンの実施　10月～12月
6.　空き人診断アプリ
7.　シルバー人材センター、りとらいふ窓口（高齢福祉課）、未来大学（埼玉県いきいき財団）との連携

## 技術面
### SpreadSheet

以下3つできれば文句なし
他で応用きく

1. アンケート項目を取得
    - できればjsonで->OK
1. アンケート結果を記入
1. アンケート結果の平均値とかを取得

### GAS(Google Apps Script)について
- スプレッドシートのツール>スクリプトエディタから
- 取得系はdoGet()
- 更新系はdoPost()
- それぞれ一つのスプシに1個ずつらしい
- パラメータで細かく分ける事もできそうだが
- 一回Getして一回Postするくらいに設計したほうが良さげ
- JSON形式で返せる

### GASでとりあえず書いた
- 使用したスプレッドシートは
- https://docs.google.com/spreadsheets/d/1Ws6PabuiaDpsafy83i4wnHezEW7TWKu3TUzQSpyx3IM/edit?usp=sharing
- 動作確認にせよひどい書き方ではある
```javascript=
// 結果を投稿する
function doPost(e) {
  var params = JSON.parse(e.postData.getDataAsString());

  // 投稿するパラメータは
  var name = params.name; // 名前
  var age = params.age; // 年齢
  var sex = params.sex; // 性別
  // 以降は各軸の数値
  var axis1 = params.axis1;
  var axis2 = params.axis2;
  var axis3 = params.axis3;
  var axis4 = params.axis4;
  var axis5 = params.axis5;
  var axis6 = params.axis6;

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("answer");
  var sheetData = [name, age, sex, axis1, axis2, axis3, axis4, axis5, axis6]
  sheet.appendRow(sheetData)

  // レスポンスの定義
  var response = {
    sheet: sheetData,
    meta: { status: 'success' }
  };
  return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}

// 最初にアンケート項目とレーダーチャート用に今までの平均値持ってくる
function doGet(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // アンケート項目持ってくる
  var sheet = ss.getSheetByName('enquete');
  var sheetData = sheet.getRange('A2:C' + sheet.getLastRow()).getValues();

  // データの成形
  var responseList = [];
  sheetData.map(function (d) {
    responseList.push({ id: d[0], axis: d[1], enquete: d[2] });
  });

  // 回答項目持ってくる
  var answer = ss.getSheetByName('answer');
  var answerData = answer.getRange('A2:I' + sheet.getLastRow()).getValues();
  var count = 0; // 項目数カウンター
  // 以下は合計入れる変数
  var axis1 = 0;
  var axis2 = 0;
  var axis3 = 0;
  var axis4 = 0;
  var axis5 = 0;
  var axis6 = 0;
  // ループ処理で合計出す
  answerData.forEach(function (d) {
    if (d[0]) {
      axis1 += parseFloat(d[3]);
      axis2 += parseFloat(d[4]);
      axis3 += parseFloat(d[5]);
      axis4 += parseFloat(d[6]);
      axis5 += parseFloat(d[7]);
      axis6 += parseFloat(d[8]);
      count++;
    }
  });

  // レスポンスは回答の平均とアンケート項目と成功フラグ
  var response = {
    average: [
      axis1/count,
      axis2/count,
      axis3/count,
      axis4/count,
      axis5/count,
      axis6/count,
    ],
    enquete: responseList,
    meta: { status: 'success' }
  };
  return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}
```

- 結果の例(GET)
- doGet()で返ってくる内容
- https://script.google.com/macros/s/AKfycbyh37wIFctpfKQisDew1lLBwt-UB7nVMQL2qY0qL-XDEImlI-4IbXYH4g/exec
- URLはデプロイ時に変わることがあります
```json=
{
average: [
1.8888888888888888,
2.6666666666666665,
2.6666666666666665,
2.7777777777777777,
2.888888888888889,
3.111111111111111
],
enquete: [
{
id: 1,
axis: 1,
enquete: "Q1"
},
{
id: 2,
axis: 1,
enquete: "Q2"
},
{
id: 3,
axis: 2,
enquete: "Q3"
},
{
id: 4,
axis: 2,
enquete: "Q4"
},
{
id: 5,
axis: 3,
enquete: "Q5"
},
{
id: 6,
axis: 3,
enquete: "Q6"
},
{
id: 7,
axis: 4,
enquete: "Q7"
},
{
id: 8,
axis: 4,
enquete: "Q8"
},
{
id: 9,
axis: 5,
enquete: "Q9"
},
{
id: 10,
axis: 5,
enquete: "Q10"
},
{
id: 11,
axis: 6,
enquete: "Q11"
},
{
id: 12,
axis: 6,
enquete: "Q12"
}
],
meta: {
status: "success"
}
}```
```