# 「空き人」診断ツール ## 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" } }``` ```