24初年次演習メモ

自己紹介
「名前、出身地、自宅か一人ぐらしか、兄弟構成、中学・高校での部活、趣味、なぜ心理学科に入ったのか?どんな心理学に興味があるのか(ざっくりと)?」
これらの内容で各自自己紹介をメモ書きしてもらい、共有し、その後実際に口頭で自己紹介する。


図書館で本を借りる
来週は、読んだ本の内容を紹介していただきます。下記の注意点を参考に、メモをとっておきましょう。 

5分程度で図書館で借りた本を紹介する際に、以下のポイントに留意してください。

  1. タイトルと著者: まず、本のタイトルと著者名を明確に伝えましょう。
  2. ジャンルと対象読者: 本のジャンルや対象読者を簡潔に説明しましょう。これにより、聞いている人が自分に興味があるかどうか判断しやすくなります。
  3. 概要: 本の主題や内容を簡単に紹介しましょう。物語や議論の大まかな流れを把握できるように、要点を絞って説明してください。
  4. 引用と例: 本から興味深い引用や具体的な例をいくつか紹介することで、内容を理解しやすくなります。ただし、引用や例が多すぎると、紹介が冗長になるため注意してください。
  5. 評価と感想: あなたが本を読んだ感想や評価を述べましょう。これが他の人に読む価値があるかどうかを判断する助けになります。ただし、主観的な意見が多くなりすぎないように、客観的な観点からも評価しましょう。
  6. 時間管理: 5分の制限内に紹介を終えられるように、時間を十分に管理してください。事前に練習して、ポイントを簡潔に伝えられるように準備しましょう。
  7. 身振り手振り: 話す際に、適度な身振り手振りを使って、聞いている人が理解しやすく興味を持ちやすいようにしましょう。

最後に、紹介が終わったら、質問や意見があるかどうか確認しましょう。相手の関心を引くような紹介ができれば、本に対する興味を喚起できます。

その後2週間にわたり、各自が読んだ本を紹介してもらう。


心理学に関連する動画を視聴する
今日は、心理学に関する動画を視聴します。

ダニエル・ピンク: やる気に関する驚きの科学
ケン・ロビンソン: 学校教育は創造性を殺してしまっている
ケリー・マクゴニガル: ストレスと友達になる方法


新入生の面談をする
ひとりずつ、何回かに分けて面談する。


新聞を読む
今日は図書館で新聞をコピーして読んで、発表しよう(発表は来週)。発表のときは下記の点について述べるようにしてください。
1.どのような内容なのか?
2.なぜその記事を読んだのか?
3.記事を呼んだ感想は?


心理学ワールドを読む準備をする
来週は心理学ワールドを読もうと思います。軽く目を通しておいてください。
https://psych.or.jp/publication/world/


心理学ワールドのどの記事を読むのかを決める
来週は、下記の1~4をお話しいただきますので、来週話す事を想定し、メモを取りながら読むようにしてください。1.記事のタイトル2.なぜその記事を選んだのか?3.簡単な内容紹介4.感想 また、文中に出てくるキーワードについて、できるだけ調べて読むようにしてください。意味がわからないキーワードは、検索エンジンやChatGPTなどを使って調べるようにしてください。

今週は心理学ワールドのうち、どの記事を読むか決めていただきます。https://psych.or.jp/publication/world/ 心理学ワールドの各巻のうち、「特集」もしくは「小特集」のうちから、1本の記事を選んで読んでください。自分が読む記事が決まったら、この発言のあとに ///////////////////////////////////////////////////////////私は、「暴力」特集の中から、差別という暴力を読みます。https://psych.or.jp/publication/world077/pw05///////////////////////////////////////////////////////////
などのように書き込んでください。他の人と被った場合は、申し訳ありませんが別の記事を選んでください。読む記事は、「特集」もしくは「小特集」の中から選ぶようにしてください。


小論文を書く

小論文を「小論文(自分の名前)」というファイル名のワードファイルにまとめ、「ファイル>小論文フォルダ」に入れておいてください。この課題は本日中に完了してください。合計600字程度で、序論・本論・結論の3段落構成であることを確認してから提出してください。

以降小論文を発表してもらい、フィードバックを行う


プレゼンテーション

自分の興味があることについて紹介するプレゼンテーションを準備してください。題材は、好きな音楽や著作、ゲームなどの趣味に関するものの紹介、自分の出身地の紹介、ペットなどの紹介等、なんでも構いません。過去の事例では、部活で習ったスポーツの紹介(弓道と空手の場合は実演あり)、趣味のお菓子作りの紹介(試食用のケーキを持ってくる)、趣味の手品の実演などがありました。プレゼンテーションは5~10分程度の内容にしてください。当日はインターネットに接続したPCを準備するので、Youtubeで自分の好きな楽曲を流すなどの方法もありです。プレゼンテーションはパワーポイントで作成し、「プレゼンテーション(自分の名前)」というファイル名で、「ファイル>プレゼンテーションフォルダ」に7/18までに入れておいてください。長野が作成したサンプルをフォルダに入れておきましたので、参考にして作成してください。

上記課題を行う際は、必要に応じてコンピュータ室に移動して行っていただき構いません。

心理サイエンス基礎演習まとめ

12月18日が休校となったため,補講を行います。内容は心理サイエンス基礎演習のまとめで,来年の心理サイエンス応用演習の内容についても簡単に触れました。改めて見ると,心理サイエンス応用演習はAIやSTEM教育など,かなり高度な内容を扱っています。参加するのは,大変だと思いますが動画を見て興味が出た方は,ぜひチャレンジしてみてください。

上記の動画を見た感想と,授業を通した感想をリアクションのページから,1月29日までに登録してください。リアクションの登録をもって,出席とカウントします。

STEM教育まとめ

授業で扱った「生体計測をテーマにしたSTEM教育」について,どのようなことを行なってきたのかを以下の動画にまとめましたので,少々長いですがご覧ください。

「生体計測をテーマにしたSTEM教育」についてのアンケート調査にご協力ください。回答は2024年1月29日の深夜までにお願いします。今回の授業に関しては,このアンケート調査への回答を持って出席とします。皆さんお忙しいところすみませんが,よろしくお願いいたします。

23心理サイエンス基礎演習Ⅱ

授業の目的
本演習は心理学における実験研究に有用な、様々なテクニックを身につけることを目的とする。具体的には、従来の心理学に、プログラミング、CG、VR、電子工学、デジタルファブリケーション等の技術を組み合わせ、独創性の高い研究を実施する力を養う。

到達目標
1.プログラミングやデジタルファブリケーション、CGなどに関する各種ソフトウェア等に触れ、それらの技術を応用した実験刺激を作製できるようになる。
2.上記のスキルをベースに独自の研究アイデアを発案、他者にわかりやすく伝えることができるようになる。

授業コンテンツ
ガイダンス
VRゴーグルの使い方を知る
UnityでVRを使う
3Dプリンタの使い方を学ぶ
3Dデータの作成方法を学ぶ
Arduino入門(1)
Arduino入門(2)

1週間ぶんのHRを取得する

計測したデータはすべてクラウド上に上がっているので、1週間ぶんのデータを取得することも可能です。おおまかな手順は下記の動画をご覧ください。

下記スクリプトは、指定した日付から遡って3日ぶんのHRを取得するスクリプトです。

#getWeekHR.py
import sys
import fitbit
import gather_keys_oauth2 as Oauth2
from datetime import datetime, date, timedelta
    
print('Hello FitbitAPP4') 
USER_ID     = ""; CLIENT_SECRET = ""
    
def requestFitbit(DATE):
    rval=""
    global auth2_client,USER_ID 
   
    fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min')
    HRstats = fitbit_stats['activities-heart-intraday']['dataset']
      
    OUTPUT_FILE = USER_ID+"_HR.csv"
    csv_file = open(OUTPUT_FILE, 'a')
     
    csv_file.write(DATE+",")
    for num1 in range(24):
        for num2 in range(60):
            key='{:02}'.format(num1)+':{:02}'.format(num2)+':00'
            hr=""
            for var in range(0, len(HRstats)):
                if str(HRstats[var]['time']) == key:
                    hr=str(HRstats[var]['value'])
                    break
            csv_file.write(hr)
            csv_file.write(",")              
               
    csv_file.write("\n")
    csv_file.close()
    return rval
##################################################
   
def writeindex():    
    global USER_ID 
    OUTPUT_FILE = USER_ID+"_HR.csv"
    csv_file = open(OUTPUT_FILE, 'a')
       
    csv_file.write(",")
    for num1 in range(24):
        for num2 in range(60):
            key='{:02}'.format(num1)+':{:02}'.format(num2)+':00'
            csv_file.write(key)
            csv_file.write(",")              
               
    csv_file.write("\n")
    csv_file.close()
##################################################
   
"""Get tokens"""
server = Oauth2.OAuth2Server(USER_ID, CLIENT_SECRET)
server.browser_authorize()
ACCESS_TOKEN = str(server.fitbit.client.session.token['access_token'])
REFRESH_TOKEN = str(server.fitbit.client.session.token['refresh_token'])
    
"""Authorization"""
auth2_client = fitbit.Fitbit(USER_ID, CLIENT_SECRET, oauth2=True, access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
    
"""request"""
   
writeindex()
today=date(2023, 6, 26)
for var in range(0, 3):
    stamp=datetime.strftime(today - timedelta(days=var), '%Y-%m-%d')
    print("target: " + stamp)
    requestFitbit(stamp)

無事に実行されると、「ID_HR.csv」のようなファイル名のデータが作成されます。エクセルで開くと、下記のような構造になっています。60(分)✕24(時間)=1440個のデータが3日ぶん格納されていることがわかります。

一週間ぶんのHRを取得して、平均HRのグラフをエクセルで書いてみましょう。

2要因参加者内計画の分散分析

ここでは2要因参加者内計画の分散分析の方法を解説します。データは、動画を見る際に、事前にネタバレを行った場合と行わなかった場合を比較したものです。分析には、JSSTARを用いています。

Pythonで音声合成してみる

今日はPythonから合成音声を操作します。

Anacondaのインストール
Python実行環境であるAnacondaのインストールを行う。とりあえずAnaconda3をダウンロードして道なりにインストール。終了すると、Anaconda PromptからPythonが実行できるようになる。インストールは、こちらのサイトが参考になる。インストールできたら、startメニューからAnaconda Promptを起動。Pythonコマンドで動作確認。Ctrl+Zで対話モード終了。

Anacondaで環境「INK」を作成する
Anacondaがインストールできたら、EnvironmentからINKを作成し、Open terminalを実行してください。

作業フォルダを作成する
「Windows+E」を押して、ファイルエクスプローラを出したら、Cドライブに入って、Cドライブ直下に「INK」フォルダを作成しましょう。作成したら、ターミナルから「CD c:\INK」と入力して、c:\INKに移動しましょう。「python –version」と入力して、Pythonのバージョンが表示されればOKです。

Coeiroinkを呼ぶためにライブラリをインストールする
下記のコマンドを順に打ち込んで、requests、pydub、pyaudioの3つのライブラリをインストールします。ライブラリはネットワークインストールされるので、インターネット接続が必須です。

pip install requests
pip install pydub
pip install pyaudio

Pythonから合成音声を鳴らしてみる
いよいよ鳴らしてみましょう。下記のプログラムをc:\inkフォルダに「ink01.py」という名前で保存し、ターミナルから「python ink01.py」と打ち込み、実行してみましょう。合成音声を鳴らすには、Coeiroinkを起動しておく必要があります。スクリプトの編集はnotepad++がオススメです。

import json
 
import requests
from pydub import AudioSegment, playback
 
# パラメータ
text = "こんにちは、つくよみちゃんです。よろしくお願いします。"
speaker_id = 0  # スピーカーID (0:つくよみちゃん)
 
# 音声合成のクエリの作成
response = requests.post(
    "http://localhost:50031/audio_query",
    params={
        'text': text,
        'speaker': speaker_id,
        'core_version': '0.0.0'
    })
query = response.json()
 
# 音声合成のwavの生成
response = requests.post(
    'http://localhost:50031/synthesis',
    params={
        'speaker': speaker_id,
        'core_version': "0.0.0",
        'enable_interrogative_upspeak': 'true'
    },
    data=json.dumps(query))
 
# wavの音声を再生
playback.play(AudioSegment(response.content,
    sample_width=2, frame_rate=44100, channels=1))

話者を変えるには、上記ソースコード中の「speaker_id 」を話者に応じた値に変更しましょう。各話者のspeaker_id は、coeiroinkのインストールフォルダの、speakerinfoフォルダの、各話者のフォルダ中にあるmetas.jsonに記載されています。

OpenAI APIを使う
APIのページにアクセスし、GoogleIDでログインする。API keysのページから、「+create new secret key」を押します。キーの名前を入力し、エンターを押すと、シークレットキーが発行されます。シークレットキーをメモしてください。シークレットキーは、誰にも知らせないようにしてください。また、Organization>Settingのページから、「Organization ID」をコピーしておきましょう。

ChatGPTとPythonで会話する
ChatGPTを使うには、OpenAIのライブラリが必要です。コマンドラインから「pip install openai==0.27.4」と入力し、ライブラリをインストールしましょう。下記のプログラムをGPT1.pyという名前で、INKフォルダに保存し、「python GPT1.py」で実行してみましょう。apikeyは上記でメモしたキーを使いましょう。

import openai
openai.organization = ""
openai.api_key      = ""
 
# =============================================================
# チャットボット関数
# =============================================================
 
def Ask_ChatGPT(message):
     
    # 応答設定
    completion = openai.ChatCompletion.create(
                 model    = "gpt-3.5-turbo",     # モデルを選択
                 messages = [{
                            "role":"user",
                            "content":message,   # メッセージ 
                            }],
     
                 max_tokens  = 1024,             # 生成する文章の最大単語数
                 n           = 1,                # いくつの返答を生成するか
                 stop        = None,             # 指定した単語が出現した場合、文章生成を打ち切る
                 temperature = 0.5,              # 出力する単語のランダム性(0から2の範囲) 0であれば毎回返答内容固定
    )
     
    # 応答
    response = completion.choices[0].message.content
     
    # 応答内容出力
    return response
 
# =============================================================
# チャットボット実行
# =============================================================
 
# 質問内容
message = "日本人の若者の特徴を教えてください"
 
# ChatGPT起動
res = Ask_ChatGPT(message)
 
 
# 出力
print(res)

上記プログラムは、適切に実行されると、しばらく待った後に下記のような結果が表示されるはずです。質問を変えて、実行してみましょう。

チャットをする
下記のコードを「GPT2.py」という生で保存しましょう。このコードを実行することで、OpenAIのAPIとチャットができるようになります。

import openai
openai.organization = "org-ほげ"
openai.api_key      = "sk-ほげ"
 
 
def main():
    amount_tokens = 0
    chat = []
 
    setting = input("ChatGPTに設定を加えますか? y/n\n")
    if setting == "y" or setting == "Y":
        content = input("内容を入力してください。\n")
        chat.append({"role": "system", "content": content})
 
    print("チャットをはじめます。q または quit で終了します。")
    print("-"*50)
    while True:
        user = input("<あなた>\n")
        if user == "q" or user == "quit":
            print(f"トークン数は{amount_tokens}でした。")
            break
        else:
            chat.append({"role": "user", "content": user})
 
        print("<ChatGPT>")
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",messages=chat
        )
        msg = response["choices"][0]["message"]["content"].lstrip()
        amount_tokens += response["usage"]["total_tokens"]
        print(msg)
        chat.append({"role": "assistant", "content": msg})
 
 
if __name__ == "__main__":
    main()

プログラムが起動すると、起動するとAIのキャラ設定を聞かれるので、yを押して、「20歳の女性として話してください」などの設定を記入してください。正しく動作すると、会話できるようになります。APIページのUSAGEから、残り金額を確認しながら会話してください。

CoeiroInkで会話内容を音声化してもらう
下記コードは、ChatGPTからの回答を音声化するものです。Coeiroinkが起動した状態で実行してください。ちなみに、Windows11の場合は「Windowsキー+H」で音声認識入力が可能です。音声会話を楽しんでみてください。

import openai
import json
import requests
from pydub import AudioSegment, playback

openai.organization = "ほげ"
openai.api_key      = "ほげ"
speaker_id = 0  # スピーカーID (0:つくよみちゃん)  
  
def main():
    amount_tokens = 0
    chat = []
  
    setting = input("ChatGPTに設定を加えますか? y/n\n")
    if setting == "y" or setting == "Y":
        content = input("内容を入力してください。\n")
        chat.append({"role": "system", "content": content})
  
    print("チャットをはじめます。q または quit で終了します。")
    print("-"*50)
    while True:
        user = input("<あなた>\n")
        if user == "q" or user == "quit":
            print(f"トークン数は{amount_tokens}でした。")
            break
        else:
            chat.append({"role": "user", "content": user})
  
        print("<ChatGPT>")
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",messages=chat
        )
        msg = response["choices"][0]["message"]["content"].lstrip()
        amount_tokens += response["usage"]["total_tokens"]
        print(msg)
        playsound(msg)
        chat.append({"role": "assistant", "content": msg})
  
def playsound(text):
    # 音声合成のクエリの作成
    response = requests.post(
        "http://localhost:50031/audio_query",
        params={
            'text': text,
            'speaker': speaker_id,
            'core_version': '0.0.0'
        })
    query = response.json()
     
    # 音声合成のwavの生成
    response = requests.post(
        'http://localhost:50031/synthesis',
        params={
            'speaker': speaker_id,
            'core_version': "0.0.0",
            'enable_interrogative_upspeak': 'true'
        },
        data=json.dumps(query))
     
    # wavの音声を再生
    playback.play(AudioSegment(response.content,
        sample_width=2, frame_rate=44100, channels=1))


if __name__ == "__main__":
    main()

会話用修正プログラムその1

import openai
import json
import requests
from pydub import AudioSegment, playback

openai.organization = "org-ほげ"
openai.api_key      = "sk-ほげ"
speaker_id = 0  #つくよみちゃんれいせい
speaker_id = 90  #リリンちゃん
  
def main():
    amount_tokens = 0
    chat = []
          
    option="敬語は使わず、馬鹿っぽい話し方をしてください。回答は50文字くらいで行ってください。ネガティブで攻撃的な性格です。「えーそんなんあったかなぁ」、「だめじゃん、もうやめればいいのに」、「いいかげんにしろよ」といった口調で話してください。一人称は「アタシ」でお願いします。";    
  
    print("チャットをはじめます。q または quit で終了します。")
    print("-"*50)
    while True:
        user = input("<あなた>\n")
        user2=user+option
        if user == "q" or user == "quit":
            print(f"トークン数は{amount_tokens}でした。")
            break
        else:
            chat.append({"role": "user", "content": user2})
  
        print("<ChatGPT>")
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",messages=chat
        )
        msg = response["choices"][0]["message"]["content"].lstrip()
        amount_tokens += response["usage"]["total_tokens"]
        print(msg)
        playsound(msg)
        chat.append({"role": "assistant", "content": msg})
  
def playsound(text):
    # 音声合成のクエリの作成
    response = requests.post(
        "http://localhost:50031/audio_query",
        params={
            'text': text,
            'speaker': speaker_id,
            'core_version': '0.0.0'
        })
    query = response.json()
     
    # 音声合成のwavの生成
    response = requests.post(
        'http://localhost:50031/synthesis',
        params={
            'speaker': speaker_id,
            'core_version': "0.0.0",
            'enable_interrogative_upspeak': 'true'
        },
        data=json.dumps(query))
     
    # wavの音声を再生
    playback.play(AudioSegment(response.content,
        sample_width=2, frame_rate=44100, channels=1))


if __name__ == "__main__":
    main()

情報処理基礎演習 情報リテラシー講座

情報リテラシー講座
学内のコンピュータを利用する上で、最低限理解していただきたいことを学習するために、下記の講座を用意しております。今週は、これらの動画を視聴することを授業の課題とします。

【情報系授業用①】学内でPCを利用する
【情報系授業用②】 パスワード管理
【情報系授業用③】セキュリティ基礎
【情報系授業用④】 著作権の考え方
【情報系授業用⑤】メールの使い方
【情報系授業用⑥】 データの管理
また、動画視聴後、効果測定(テスト)も受けるようにしてください。動画視聴、効果測定、リアクションの回答は今週末までに行うようにしてください。
 
Officeの申請について
 本年度からOfficeのライセンスを、申請者だけではなく付与することになったようです。近日中に情報センターから案内が出る予定なので、お手数ですが、それまでは大学内のコンピューター室を利用して課題を行うようにしてください。
 
リアクションの回答
 リアクション(感想)は、出欠記録を兼ねていますので、こちらも今週末までに送信するようにしてください。
AクラスリアクションBクラスリアクション

↑クラスを間違えないようにご注意ください

OBS Studio入門

OBS Studioとは
 OBS Studio(Open Broadcaster Software Studio)は、オープンソースの無料ビデオ録画およびストリーミングソフトウェアです。このソフトウェアは、ユーザーがデスクトップ画面の録画やライブストリーミングを簡単に行うことができます。また、様々なビデオソースやオーディオソースを組み合わせて、カスタマイズされた映像を作成できます。OBS Studioは、YouTubeなどのプラットフォーム用に動画を撮影したり、ライブストリーミングを行う際にも非常に便利です。

なぜOBSを学ぶ事が大事なのか?
 現代の教育やビジネス環境では、デジタルメディアやオンラインプレゼンテーションの使用が不可欠です。OBS Studioを使いこなせることで、プレゼンテーションやチームプロジェクトを効果的に行えるようになります。また、将来的にさまざまな職種や業界で働くことになるため、OBS Studioのようなビデオ録画およびストリーミングツールを使いこなす能力は、就職やキャリアアップにも役立ちます。さらに、OBS Studioを使って自分自身のチャンネルやコンテンツを作成することで、創造力やコミュニケーション力を向上させることもできます。

リンク集
 基本的な使い方を学んだら、必要に応じて作業動画などを作成しYouTubeにアップロードし、ブログに投稿していきましょう。分かりやすい動画付きで、必要な情報が整理されたブログは、それだけで作成者が「価値のある人間である」ことを他の人に知らせることができます。

図解優しいOBSの使い方 かなり詳しい使い方が解説されている
OBS Studio初心者向け使い方解説 個別に準備されておりより詳しく解説