Slide 1

Slide 1 text

7VFKTͱ$IBSUKTͰ νϟʔτΛඳը͢Δ ϑϩϯτΤϯυ-5େձWPM 4"8

Slide 2

Slide 2 text

$(whoami) ๏ ࢯ໊Ճ౻फҰ࿠ ࡀ ‣ ϋϯυϧωʔϜ4"8 ‣ 5XJUUFS!B[VLJ@FBUFS ๏ ॴଐגࣜձࣾ.4&/ ೥໨ ๏ ओʹ৮Ε͍ͯΔݴޠ ‣ $ ‣ +BWB4DSJQU 7VFKT /PEFKT ‣ 1)1 -BSBWFM 5XJUUFSΞΠίϯ

Slide 3

Slide 3 text

+BWB4DSJQUͷνϟʔτඳըϥΠϒϥϦ ๏ ͞·͟·ͳνϟʔτඳըϥΠϒϥϦ͕ଘࡏ ‣ $IBSUKT ‣ )JHIDIBSUT ‣ (PPHMF$IBSUT ‣ %KT

Slide 4

Slide 4 text

$IBSUKTͱ͸ ๏ )5.-ͷCanvasཁૉʹνϟʔτΛඳը͢ΔϥΠϒϥϦ ๏ ๮άϥϑɾઢάϥϑɾԁάϥϑͷجຊతͳάϥϑ͕ඳըՄೳ ๏ Ϩʔμʔνϟʔτ΍όϒϧνϟʔτ΋ඳըՄೳ

Slide 5

Slide 5 text

WVFDIBSUKTͱ͸ ๏ 7VFKTͰ$IBSUKTΛѻ͏ͨΊͷϥΠϒϥϦ ๏ 7VFKTͷσʔλΛόΠϯυͯ͠νϟʔτʹඳը ๏ σʔλͷมԽΛνϟʔτʹ΋൓ө͢Δ͜ͱ͕Մೳ ϦΞΫςΟϒ

Slide 6

Slide 6 text

ಋೖํ๏ ๏ OQNܦ༝Ͱvue-chartjsͱchart.jsΛΠϯετʔϧ ‣ WVFDIBSUKT͕DIBSUKTYܥʹະରԠͷͨΊDIBSUKTYܥΛΠϯετʔϧ<> ๏ 7VF$-*Ͱ࡞ͬͨϓϩδΣΫτͰҎԼͷίϚϯυΛ࣮ߦ [1] https://stackover fl ow.com/questions/66940954/why-does-nuxt-give-me-this-error-with-vue-chartjs # npm の場合 $ npm i -S vue-chartjs [email protected] # yarn の場合 $ yarn add vue-chartjs [email protected]

Slide 7

Slide 7 text

WVFDIBSUKTͷجຊతͳ࢖͍ํ νϟʔτΛඳը͢ΔͨΊͷ.vueϑΝΠϧΛ࡞੒ ‣ this.renderChart()Ͱඳը ୈҾ਺ʹ͸ඳըσʔλɾୈҾ਺ʹ͸ඳըΦϓγϣϯΛࢦఆ ‣ ίϯϙʔωϯτʹtemplateλάΛؚ·ͳ͍ vueͷ୅ΘΓʹ.jsͰΦϒδΣΫτΛexportͯ͠΋ྑ͍ ඳըଆͷίϯϙʔωϯτ͔Βࢀর ‣ ඳըର৅ͷσʔλ͸propܦ༝Ͱ౉͢

Slide 8

Slide 8 text

WVFDIBSUKTͷجຊతͳ࢖͍ํ
import ChartSample from './chart-sample'; export default { data() { components: { ChartSample }, return { data: { ... }, }; }, }; import { Line } from 'vue-chartjs'; export default { extends: Line, props: ['data'], mounted() { this.renderChart(this.data); }, }; chart-sample.vue app.vue import ίϯϙʔωϯτΛtemplate಺ʹఆٛ͢Δͱ ͦͷҐஔʹνϟʔτ͕ඳը͞ΕΔ

Slide 9

Slide 9 text

ඳըσʔλͷࢦఆ ๏ σʔλνϟʔτʹϓϩοτ͢Δσʔλ΍ϥϕϧͳͲΛࢦఆ ‣ datasetsϓϩοτ͢Δσʔλ܈΍νϟʔτͷ৭ͳͲΛࢦఆ ‣ labelsσʔλ͝ͱͷϥϕϧΛࢦఆ ๏ Φϓγϣϯνϟʔτͷ࣠΍໨੝ΓͷִؒͳͲΛࢦఆ ‣ beginAtZero࣠ͷج४஋ʹΛར༻ ‣ stepSize࣠ͷ໨੝ΓִؒΛࢦఆ ๏ ৄࡉͳઃఆ߲໨͸$IBSUKTͷެࣜυΩϡϝϯτΛࢀর

Slide 10

Slide 10 text

ඳըσʔλͷઃఆྫ this.data = { labels: [ // データごとのラベル 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', ], datasets: [ // 実データの設定 (複数指定可能) { label: 'Monthly Average Temperature', data: [ // 実データ群 4, 6, 13, 18, 19, 24, 30, 34, 27, 20, 15, 9, ], borderColor: 'rgba(255, 180, 180, 1)', fill: false, lineTension: 0, }, ], }; this.options = { scales: { // x 軸に関する設定 xAxes: [ { scaleLabel: { display: true, labelString: 'Month', }, }, ], // y 軸に関する設定 yAxes: [ // 軸を 0 基準に設定 { beginAtZero: true }, ], }, }; σʔλͷઃఆྫ Φϓγϣϯͷઃఆྫ

Slide 11

Slide 11 text

ྫ๮άϥϑͷඳը BarΛvue-chartjs͔ΒಡΈࠐΈ ๮άϥϑඳըίϯϙʔωϯτͷextendsϓϩύςΟʹBarΛࢦఆ mountedͳͲͰthis.renderChart()Λهड़ import { Bar } from 'vue-chartjs'; export default { extends: Bar, props: ['data', 'options'], mounted() { this.renderChart(this.data, this.options); }, };

Slide 12

Slide 12 text

ྫઢάϥϑͷඳը LineΛvue-chartjs͔ΒಡΈࠐΈ ઢάϥϑඳըίϯϙʔωϯτͷextendsϓϩύςΟʹLineΛࢦఆ mountedͳͲͰthis.renderChart()Λهड़ import { Line } from 'vue-chartjs'; export default { extends: Line, props: ['data', 'options'], mounted() { this.renderChart(this.data, this.options); }, };

Slide 13

Slide 13 text

ϦΞΫςΟϒͳνϟʔτͷ࣮ݱํ๏ ๏ reactivePropΛಡΈࠐΜͰmixinsʹࢦఆ ‣ σʔλͷมߋΛݕ஌ͯ͠νϟʔτͷඳը΋ϦΞΫςΟϒʹ൓ө ๏ propʹ͸chart-dataͰσʔλΛ౉͢ ‣ this.renderChart()ͷୈҾ਺ʹ͸propͷthis.chartDataΛࢦఆ import { Line, mixins } from 'vue-chartjs'; const { reactiveProp } = mixins; export default { extends: Line, mixins: [reactiveProp], mounted() { this.renderChart(this.chartData); }, };

Slide 14

Slide 14 text

reactivePropͷσϞ ๏ ϦΞϧλΠϜʹ౤ථσʔλͷ൓ө ๏ ϘλϯΛԡͯ͠σʔλΛ௥Ճ ‣ ԡ͞Εͨࡍʹνϟʔτ΋ߋ৽

Slide 15

Slide 15 text

WVFDIBSUKTͷར༻ྫ ๏ େࡕ෎৽ܕίϩφ΢Πϧεײછ঱ରࡦαΠτ< > ‣ ཅੑऀ਺΍ݕ࣮ࠪࢪ਺ɾ૬ஊ݅਺ͳͲΛՄࢹԽ [2] https://covid19-osaka.info/ [3] https://github.com/codeforosaka/covid19

Slide 16

Slide 16 text

WVFDIBSUKTͷར༻ྫ ๏ େࡕ෎৽ܕίϩφ΢Πϧε౷ܭ৘ใ< > ‣ ཅੑऀ΍ݕࠪ਺ͳͲͷਪҠΛ೔ผɾ݄ผʹՄࢹԽ [4] https://covid-19.azuki-penguin.org [5] https://github.com/azuki-penguin/osaka-covid-19-statistics

Slide 17

Slide 17 text

૯ׅ ๏ 7VFDIBSUKTͷجຊతͳ࢖͍ํΛ঺հ ๏ σʔλͷมߋΛݕ஌ͯ͠νϟʔτΛϦΞΫςΟϒʹඳը ๏ ࣮ࡍͷར༻ྫΛ঺հ

Slide 18

Slide 18 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠