IYOKAN - Institutional Repository : the EHIME area http://iyokan.lib.ehime-u.ac.jp/dspace/
This document is downloaded at: 2017-10-15 14:58:21
Title
授業評価アンケート集計プログラムについて
Author(s)
小西, 敏雄
Citation
松山東雲女子大学人文科学部紀要. vol.25, no., p.49-67
Issue Date
2017-03-31
URL
http://iyokan.lib.ehime-u.ac.jp/dspace/handle/iyokan/5159
Rights
授業評価アンケート集計プログラムについて
On a VBA Program Created for Generating Class Evaluation Questionnaires
小 西 敏 雄
Toshio KONISHI
(心理子ども学科子ども専攻) 要 約 2015 年度より授業評価アンケートが Web 化され、集計の担当者として VBA による集計プログラムを自 作した。 キーワード:VBA、アンケート集計[Abstract]
This paper introduces a VBA program created by the author for generating class evaluation questionnaires. Key words: VBA program, class evaluation questionnaire
1.授業評価アンケート集計について
文部科学省の平成 26 年度「私立大学等改革総合支援事業」の「私立大学等教育研究活性化設備 整備事業」が採択され、本学では授業評価システムとして「Limesurvey」を導入し、平成 27 年度 から授業評価アンケートの Web 上での実施を開始した。 「Limesurvey」は Linux 上で動作するフリーのアンケート集計ソフトウェアである。このソフト を Web サーバに設置し、公開することにより、不特定多数を対象としたアンケート調査と、Web 上でのリアルタイムな集計も可能になった。 本学では、従来より紙ベースでの授業評価アンケートを実施してきた。教員が調査対象として選 んだ授業科目について、学期の最終回終了間際のタイミングで、受講している学生にアンケート設 問用紙を配布し、回答を記入させ、その場で回収していた。その場で回収できるので、高い回収率 が期待できるのであるが、用紙で回収するため、必然的にデータは外部業者に委託して、手入力で 行っていた。文部科学省の調査などでは、全授業科目に対する実施を推奨する方向であり、本学で も全授業科目に対して実施する方向を数年前から模索していた。今回「Limesurvey」を導入したことで、設問用紙を印刷するための用紙代、印刷のインク代、デー タ入力に関する費用が削減でき、全授業科目に対して、より効率的な調査が期待された。 平成 27 年度前学期から、実際に「Limesurvey」を導入すると、ソフト自体で出力する様式が定 型化しており、本学で従来から実施している教員別に科目別の集計を行うことが困難であることが 分かった。従来から使用していた様式で出力するために、集計用の VBA プログラムを開発するこ とが必要となった。今回の論文は、この作成過程と最終的なプログラムを報告する。
2.出力形式の工夫
本学では、図 1 に示す授業評価アンケートの質問紙を従来から実施していた。集計結果は図 2 の ように、科目別に帯グラフで各要素と実数を表示し、担当教員に集計結果として配布されてきた。 図 1 2014 年度まで実施されていた授業評価アンケートの設問用紙以上の様式のものを、基本的な構造を変えないで同等の情報を提供できる様式を検討した。最初 の案は手書きで図 3 を構想した。この図を基に出力形式を設計した。
教員別に集計結果を配布する必要があるので、配布用のフォーマットを図 4 のように、エクセル で作成した。
開発開始直後は、配布用のフォーマットごと VBA プログラムで作成する予定であったが、全教 員分を集計するにあたり、教員ごとに実施するたび、一枚ずつ作成していくのは時間の無駄である ことに気が付いた。プログラム作成をできるだけ簡単にするために、配布用フォーマットの該当欄 に、カウントした数字を順次書き換えしていく方法を採用した。 事前作業として、先に教員コードを用いてアンケートデータを並べ替えし、教員ごとの塊に整理 する。そして、完成した配布用フォーマットを入力シートとして事前に作成しておき、別のシート にその表をコピーして、その下に各教員別データを記録する形で教員別シートを作成した。結果的 にこの方法で処理時間の短縮ができた。
3.データの文字化け対策
「Limesurvey」からアンケート結果を回収するためには、以下の手順が必要である。 1.サーバに接続し、「Limesurvey」に LDAP を使用してログインする。アンケートの作者であれ ば誰でもログインできる。 2.回収するアンケートを選ぶ。今回は「学生による授業評価アンケート」とした。これは、事前 に「Limesurvey」の設定方法に従って、調査票のデータを入力しておく必要がある。 3.「回答と統計」を選ぶ。 4.「結果をアプリケーションに出力」を選び、フォーマットを「CSV」、見出しを「質問コード」、 回答を「回答コード」とし、「データ出力」をクリックする。 この「データ出力」の結果は、文字コードの初期設定が「UTF-8」であるので、Windows の PC で開くと、回答データが文字化けして得られる。このため、Windows の「メモ帳」を開き、ダ ウンロードしたファイルをそこへドロップする。 ファイル→名前を付けて保存とし、文字コードを「UTF-8」から「ANSI」へ変更して保存する。 この操作で、エクセルで扱えるデータに変わる。 データの書式は、図 5 のように選択肢が A1、A2,・・・のように記述される。 図 5 Limesurvey から出力された結果これを通常の数値に変えるために、Value(Right(データ,1))、選択肢の値の大小が逆転する 場合には、5 − Value(Right(データ,1)) と変換する必要がある。これはデータ集計前に事前 に準備しておく。そして、科目コードから授業科目名と教員名を vlookup 関数でつないで、図 6 の ような集計用のデータが得られる。 図 6 科目コードと担当者コードをつないで得られた集計用データ
4.VBA によるアンケート集計プログラム
以上の準備の上で、2015 年 10 月に次のプログラムを作成した。2015 年度には、2010 年度以前 の旧課程の学生が存在したので、「心理専攻」「子ども福祉専攻」の項目がある。【リスト 1】
Attribute VB_Name = "Module1" Sub furiwake()
' 授業評価アンケート Limesurvey 用教員別集計プログラム (Ver.1) ' 2015.10.7 T.Konishi(c)
'
Dim X, Oldsheet As Worksheet Dim kstart As Integer
Dim jiyuuk, kubun As String Dim wa As Single ' n = Application.WorksheetFunction.CountA(Range(" 評価データ !a1:ag1")) a = Application.WorksheetFunction.CountA(Range(" 評価データ !d1:d10000")) ' j = 1 ' Worksheets(" 評価データ ").Activate i = 2
sname = Cells(i, 7).Value Set Oldsheet = ActiveSheet
Worksheets(" 集計結果 ").Copy after:=Worksheets(" 集計結果 ") ' ActiveSheet.Name = sname Oldsheet.Activate kstart = 100 idx = 1 ' For k = 1 To n
Worksheets(sname).Cells(100, k).Value = Worksheets(" 評価データ ").Cells(i, k).Value Next k
'
For i = 3 To a
sname1 = Cells(i, 7).Value If sname1 = sname Then
kstart = kstart + 1 For k = 1 To n
Worksheets(sname).Cells(kstart, k).Value = Worksheets(" 評価データ ").Cells(i, k).Value Next k
Else
sname = sname1
Set Oldsheet = ActiveSheet
Worksheets(" 集計結果 ").Copy after:=Worksheets(" 集計結果 ") ' ActiveSheet.Name = sname kstart = 100 idx = idx + 1 Oldsheet.Activate For k = 1 To n
Worksheets(sname).Cells(kstart, k).Value = Worksheets(" 評価データ ").Cells(i, k).Value Next k End If Next i ' ' アンケート集計処理 ' kstart = 100 ' For kkk = 3 To idx + 2 ' Worksheets(kkk).Activate
Cells(3, 2).Value = Cells(kstart, 7).Value
kk = Application.WorksheetFunction.CountA(Range("d100:d10000")) IY = 3 ' ist = kstart ' IYY = IY + 1 jiyuuk = ""
'
kamoku = Cells(ist, 5).Value Cells(5, IY).Value = kamoku kamokun = 1
'
For ii = 1 To kk
s = Cells(99 + ii, 8).Value
Cells(s + 5, IYY).Value = Cells(s + 5, IYY).Value + 1 '
s = Cells(99 + ii, 9).Value
Cells(16 + s, IYY).Value = Cells(16 + s, IYY).Value + 1 '
s = Cells(99 + ii, 10).Value
Cells(21 + s, IYY).Value = Cells(21 + s, IYY).Value + 1 '
s = Cells(99 + ii, 11).Value
Cells(23 + s, IYY).Value = Cells(23 + s, IYY).Value + 1 '
s = Cells(99 + ii, 12).Value
Cells(27 + s, IYY).Value = Cells(27 + s, IYY).Value + 1 '
For jj = 1 To 19
s = Cells(99 + ii, 12 + jj).Value If s = 0 Then GoTo tugi
Cells(2 * jj + 30, IY + s - 1).Value = Cells(2 * jj + 30, IY + s - 1).Value + 1 tugi:
Next jj '
kubun = "/"
If Cells(99 + ii, 32) <> "" Then jiyuuk = jiyuuk + CStr(Cells(99 + ii, 32)) + kubun '
If Cells(100 + ii, 5) = "" Then GoTo nxt If Cells(100 + ii, 5) <> kamoku Then Cells(70, IY).Value = jiyuuk
jiyuuk = "" IY = IY + 4
kamoku = Cells(100 + ii, 5).Value kamokun = kamokun + 1 IYY = IY + 1
'
Cells(5, IY).Value = kamoku ' End If Next ii ' nxt: IY = 3 For l = 1 To kamokun For ii = 1 To 19 wa = 0# nn = 0# For mm = 1 To 4 wa = wa + Cells(2 * ii + 30, mm + IY - 1) * mm nn = nn + Cells(2 * ii + 30, mm + IY - 1) Next mm If nn = 0 Then GoTo nxt1 scoave = wa / nn
Cells(2 * ii + 31, IY) = Application.WorksheetFunction.Round(scoave, 1) nxt1: Next ii IY = IY + 4 Next l ' Next kkk End Sub 上記のプログラムを実行した結果は図 7 である。
5.VBA によるアンケート集計プログラム(改良版)
2016 年度には、FD 委員会主導でアンケート項目の見直しが行われ、図 8 のような項目に変更さ れた。各設問の問いかけ方も学生主体のところを明確にした。 図 8 アンケート質問項目(2016)授業改善のためのアンケート
- 松山東雲女子大学・松山東雲短期大学 2016 年度 前学期 - 属性項目 F0 時間割コードを入力してください。 F1 あなたの所属学科・専攻について、あてはまる数字を1つ選んで下さい。 1.子ども専攻 2.心理福祉専攻 3.国際文化学科 4.保育科 5.秘書科 6.現代ビジネス学科 7.食物栄養専攻 8.介護福祉専攻 9.科目等履修生・SEC 生など F2 あなたの学年について、あてはまる数字を1つ○選んでください。 1.1 年 2.2 年 3.3 年 4.4 年 5.その他 あなたが受けたこの授業科目についてお答えください。(Q3 以外) 1.そう思わない 2.どちらかといえばそう思わない 3.どちらかといえばそう思う 4.そう思う Q1 あなたはシラバスを読んで理解した上で、この授業を履修しましたか Q2 あなたはこの授業に意欲的に取り組みましたか Q3 あなたはこの授業を何回欠席しましたか 「1.0 回」「2.1~2 回」「3.3 回以上」「4.わからない」 Q4 あなたは、スマホ、私語、飲食、居眠りをしないなど、教室でのマナーをきちんと守りましたか Q5 担当教員の話し方や態度、学生に対する接し方は適切だった Q6 担当教員は学生に質問や意見を求めたりするなど、学生の反応を確かめながら授業を進めてい た Q7 あなたは授業でわからないところがあったときなど、授業中あるいは授業時間外に担当教員に質 問あるいは相談をしましたか Q8 質問や提出物に対して、担当教員から適切なフィードバック(応答)が得られた Q9 この授業科目の目的(この科目を学修する意義)は担当教員により明確に示された Q10 この授業は全体として内容がよく整理され、まとまっていた Q11 この授業の毎回のテーマははっきりしていた Q12 この授業の進み方、時間配分は適切だった Q13 この授業では黒板や提示教材などが理解しやすかった Q14 この授業での教材(テキスト、参考文献、配布プリントなど)は適切であった Q15 この授業は、事前学習・事後学習(予習・復習)に必要な時間またはその学修内容が明確であった Q16 あなたは、この授業の事前学習・事後学習(予習・復習)を十分に行いましたか Q17 あなたは、この授業から刺激を受けて、関連する知識や学問にさらなる興味・関心をもつようにな りましたか Q18 この授業の成績評価に関しては、評価項目(学修過程や学修成果をどのような観点から評価する のか)や配点基準が明確である Q19 この授業は全体としてシラバス通りに行われていた Q20 総合的に判断して、この授業は満足できるものであった Q21 特に何かあれば、記入してください(自由記述) Q22 あなたは授業でのディスカッション(ゼミあるいはグループワーク等での討論・意見交換・質疑応 答)に積極的に参加しましたか Q23 あなたは授業でのプレゼンテーション(ゼミあるいはグループワーク等での発表)の準備に十分な 時間をかけて取り組みましたか Q24 授業でのディスカッションやプレゼンテーションにおいて担当教員から適切なコメントやアドバイス をもらえたさらに、前述の「心理専攻」「子ども福祉専攻」の学生が居なくなったので、この項目を削除して、 以下のプログラム(Ver.2)を作った。
【リスト 2】
Attribute VB_Name = "Module1" Sub furiwake()
' 授業評価アンケート Limesurvey 用教員別集計プログラム (Ver.2) ' 2016.10.12 T.Konishi(c)
'
Dim X, Oldsheet As Worksheet Dim kstart As Integer
Dim jiyuuk, kubun As String Dim wa As Single ' n = Application.WorksheetFunction.CountA(Range(" 評価データ !a1:ag1")) a = Application.WorksheetFunction.CountA(Range(" 評価データ !d1:d10000")) ' j = 1 ' Worksheets(" 評価データ ").Activate i = 2
sname = Cells(i, 7).Value Set Oldsheet = ActiveSheet
Worksheets(" 集計結果 ").Copy after:=Worksheets(" 集計結果 ") ' ActiveSheet.Name = sname Oldsheet.Activate kstart = 100 idx = 1 ' For k = 1 To n
Worksheets(sname).Cells(100, k).Value = Worksheets(" 評価データ ").Cells(i, k).Value Next k
For i = 3 To a
sname1 = Cells(i, 7).Value If sname1 = sname Then kstart = kstart + 1 For k = 1 To n
Worksheets(sname).Cells(kstart, k).Value = Worksheets(" 評価データ ").Cells(i, k).Value Next k
Else
sname = sname1
Set Oldsheet = ActiveSheet
Worksheets(" 集計結果 ").Copy after:=Worksheets(" 集計結果 ") ' ActiveSheet.Name = sname kstart = 100 idx = idx + 1 Oldsheet.Activate For k = 1 To n
Worksheets(sname).Cells(kstart, k).Value = Worksheets(" 評価データ ").Cells(i, k).Value Next k End If Next i ' ' アンケート集計処理 ' kstart = 100 ' For kkk = 3 To idx + 2 ' Worksheets(kkk).Activate
Cells(3, 2).Value = Cells(kstart, 7).Value
kk = Application.WorksheetFunction.CountA(Range("d100:d10000")) IY = 3
'
'
IYY = IY + 1 jiyuuk = "" '
kamoku = Cells(ist, 5).Value Cells(5, IY).Value = kamoku kamokun = 1
'
For ii = 1 To kk
s = Cells(99 + ii, 8).Value
Cells(s + 5, IYY).Value = Cells(s + 5, IYY).Value + 1 '
s = Cells(99 + ii, 9).Value
Cells(14 + s, IYY).Value = Cells(14 + s, IYY).Value + 1 '
For jj = 1 To 23
s = Cells(99 + ii, 9 + jj).Value If s = 0 Then GoTo tugi
Cells(2 * jj + 18, IY + s - 1).Value = Cells(2 * jj + 18, IY + s - 1).Value + 1 tugi:
Next jj '
kubun = "/"
If Cells(99 + ii, 33) <> "" Then jiyuuk = jiyuuk + CStr(Cells(99 + ii, 33)) + kubun '
If Cells(100 + ii, 5) = "" Then GoTo nxt If Cells(100 + ii, 5) <> kamoku Then Cells(66, IY).Value = jiyuuk jiyuuk = ""
IY = IY + 4
kamoku = Cells(100 + ii, 5).Value kamokun = kamokun + 1 IYY = IY + 1
Cells(5, IY).Value = kamoku ' End If Next ii ' nxt: IY = 3 For l = 1 To kamokun For ii = 1 To 23 wa = 0# nn = 0# For mm = 1 To 4 wa = wa + Cells(2 * ii + 18, mm + IY - 1) * mm nn = nn + Cells(2 * ii + 18, mm + IY - 1) Next mm If nn = 0 Then GoTo nxt1 scoave = wa / nn
Cells(2 * ii + 19, IY) = Application.WorksheetFunction.Round(scoave, 1) nxt1: Next ii IY = IY + 4 Next l ' Next kkk End Sub 上記のプログラムを実行した結果は図 9 である。