発表の難しさを知る 2022年10月20日

もうすっかり冷え込む季節になりました。研究室の新しい試みとして、ゼミのログをブログで残していきたいと思います!

目的

  • 記録を残すことで、今後のゼミの参考に
  • まとめる力をつける
  • 学びをアウトプットし、共有する

新しい試みであるので、紆余曲折があると思いますが、今は上級生である3年生が主体となり進めていきたいと思います!時間に余裕があれば2年生にも挑戦してほしいですね!


それでは、本編です!

おしながき

  • 2年生による夏休みの取り組みの発表
  • 今後のゼミの見通し

夏休みが明けてかなり時間が空きましたが、お互いの夏休みについて発表を行いました!

2年生による夏休みの取り組みの発表

2年は発表では個性が溢れていました。

  • 夏休みのスイーツめぐり
  • 自己研磨について
  • 留学で得た学び
  • 遊び尽くした夏休み

などなど、大学生らしい夏休みの発表を聞くことができました。3年生は夏休みの大半を教育実習を行っていたため、羨ましい限りです、、、

今後のゼミの見通し

後半では、ゼミの見通しについてお話をしました。次に何をやるかを知っていると、準備もできると思います。また、見通しを全員で共有することで、改善案なども出やすいと感じました。学生主体であるので、ゼミ長が一人で作るゼミではなく、同じ研究室全員で作るゼミでありたいと思います。

今回のゼミを経て

今回のゼミを経て、私はプレゼンは準備が大切であると再確認しました。

  • 誰に向けたプレゼンなのか(相手意識)
  • 適切な発表方法なのか
  • 話し方は場に適しているのか
  • プレゼンの資料は適切であったのか

を後輩の発表を聞いていて感じました。

ブログを書くときも意識しなければならないことであり、私も意識をしないとなと思わされました。また、発表の場というのは案外少なく、経験できる場がありません。1つ1つの機会を大切にし、真摯に取り組んでほしいなと思います。発表は準備が8割です。

これで、振り返りを終わりたいと思います。

話題の「Midjourney」を使ってみました!

みなさんは今話題の「Midjourney」をご存知でしょうか?

URL:https://www.midjourney.com/home/#about

Midjourneyとは、

Midjourney is an independent research lab exploring new mediums of thought and expanding the imaginative powers of the human species.

We are a small self-funded team focused on design, human infrastructure, and AI. We have 11 full-time staff and an incredible set of advisors.

だそうです。英語は苦手なもので、難しかったので、翻訳にかけると

Midjourneyは、新しい思考媒体を探求し、人類の想像力を拡張する独立した研究室です。

私たちはデザイン、ヒューマンインフラストラクチャ、AIに焦点を当てた小規模な自己資金によるチームです。11名のフルタイムスタッフと、素晴らしいアドバイザーを擁しています。

とのことです。

私が実際に使ってみた結論からいうと「とてもすごいAI」です。抽象的な表現になりますが、使ってみるとわかっていただけると思います。

使い方

手順

  • 「Midjourney」の公式サイトにアクセスします
  • Join the data をクリック!
  • Discordに招待がされるので、参加します
  • 「newbies-〇〇(番号)」の部屋があるので、移動します
  • 「/imagine prompt 〇〇(キワード)」を入力
  • そうすると自動で生成されます

使ってみました!

今回は「education」「education_technology」「technology_education」のキーワードで画像を生成してみました。

education
education_technology
technology_education

どれも「education」というキーワードで生成したため本の印象が強いように感じます。教育というのは明確な「モノ」ではないため、それぞれが抽象的な画像になっています。

番外として私の趣味である「nogizaka46」のキーワードで生成してみると

nogizaka46

グループカラーである紫をもとに、人の画像があるものもあるので、学習しているのを感じます。

権利的な問題は大丈夫?

「AIが生成した画像の著作権はどこに帰属するの?」という疑問は当然出てくると思います。私は法律の専門家ではないため、一度ニュース記事を調べてみました。

https://www.itmedia.co.jp/news/articles/2208/09/news162_3.html

上のサイトにはアメリカでの対応と、現在の日本での現状が記載されていました。気になる方は是非とも読んでもらいたいと思います!

まとめ

YoutubeのおすすめやGoogleの検索予測などAIは私達の身近なものになっています。「Midjourney」は絵を描くという。文化的な創作活動を行うAIになります。パラメータを変化させるとキーワードの強弱もつけることができます。色々試してみると、人間が絵を描く意味を考えさせられます。

このAIは今後の技術科にも入ってくる分野であるともうので、教材の一つとして使うのもいいのかもしれません!

 研究室紹介 2022年Ver

こんにちは、今回は今月の上旬に行われた、1年生に向けての研究室紹介の報告と紹介を行おうと思います!

やったこと

  • 小倉研究室の紹介
  • マシュマロタワー対決

を行いました。

今回の研究室紹介では、2年生を中心に活動を行いまいた。資料作成から、アイデア出しまで全て行っているのを見て、自分の研究室への理解も深まったと思います。

実際に作成したパワーポイント↓

研究室の概要について綺麗にまとめてくれました!

マシュマロタワー対決では、1年生VS上級生という構図ではありますが、上級生も本気で対決しました。

概要は下のTedTalkから見ることができます!

マシュマロ・チャレンジについて

時間の都合上、小倉研究室オリジナルルールで実施し、大変盛り上がりました。

作品の一例

学年を超えての交流や、下級生となかなか接点がない中で緊張しましたが、一年生に楽しんでもらうことができました!

8月の上旬には信州大学教育学部のオープンキャンパスも実施されます。小倉研究室も楽しみに皆さんをお待ちしております!

YouTube Data API v3 使ってみた!②

こんにちは。小倉研3年のpeaceです。
大変お待たせしました! 2ヵ月ぶりですね( ´∀` )
「YouTube Data API v3 使ってみた!」の第2弾です!

「まだ第1弾を見てない!」という方はこの記事を読む前にこちらを↓
https://www.mogura-lab.com/783

それでは第2弾スタート!

やりたいことの全体の流れ(超ざっくりとおさらい)

1.Google Cloud Platform への登録
2.APIキーの取得
3.信州大学公式YouTube【shinshuweb】のチャンネルIDの取得
4.信州大学公式YouTube【shinshuweb】のいろんなデータ取得

今回の投稿の内容

2.APIキーの取得
3.信州大学公式YouTube【shinshuweb】のチャンネルIDの取得

2.APIキーの取得

今回は、前回登録した「Google Cloud Platform」から「APIキー」を取得していきます。

APIキーの取得

「APIとサービス」という場所から「認証情報」を選択するとAPIキーが取得できる画面にすすめます。
ここでAPIキーを取得するときに、画面下側の「APIの制限」で有効なAPIキーを今回利用する[Youtube Data API v3]のみに設定しておくとGoodです!

3.信州大学公式YouTube【shinshuweb】のチャンネルIDの取得

ここからは、信州大学の公式YouTubeである[shinshuweb]のチャンネルIDを取得していきたいと思います。

YouTubeのチャンネルIDとは?

どのYouTubeチャンネルにも設定されている識別子(多くの対象の中から特定の1つを識別・同定するため用いられる名前や符号、数字等)のことです。

今回は、大量にあるYouTubeチャンネルの中から[shinshuweb]を見つける際にチャンネルIDが必要となります。

それでは、チャンネルIDの取得に使用したコードを載せておきます。
詳細は、コード中のコメントアウトを見てください。

次回からは、いよいよデータの取得をおこなっていきます!
しかし、Google Cloud Platformの体験期間が残り10日!
そして、今週末の3連休(7/16~18)が授業で全部つぶれるといった過酷なスケジュールなので、できたところまで載せる形になるかもしれません…
とりあえず、がんばるので次の投稿を待ってていただけたらと思います!

皆さんも、Google Cloud Platformの体験期間を使うときには計画的にご利用ください(笑)

最後までご覧いただきありがとうございました!

YouTube Data API v3 使ってみた!①

お久しぶりです。peaceです。
今回は、「YouTube Data API v3」を利用し、
信州大学公式YouTube【shinshuweb】https://www.youtube.com/user/shinshuweb
のデータを取得しようと思います!

今回やりたいことの全体の流れ(超ざっくりと)

1.Google Cloud Platform への登録
2.APIキーの取得
3.信州大学公式YouTube【shinshuweb】のチャンネルIDの取得
4.信州大学公式YouTube【shinshuweb】のいろんなデータ取得

今回の投稿の内容

1.Google Cloud Platform への登録

1.Google Cloud Platform への登録

 今回使用する「YouTube Data API v3」は、「Google Cloud Platform」への登録が必要とです。登録には、Googleアカウントとクレジットカード、電話番号、インターネット環境が必要となります。
 「YouTube Data API v3」と「Google Cloud Platform」については↓をご覧ください。

YouTube Data API v3 とは?

Youtube動画を取得できるAPI(API=プログラムとシステムを繋げる仕組み。今回の場合はプログラムとYouTubeの動画。)です。
特定のキーワードやチャンネルの動画を取得することや、動画の統計情報を取得することができます!

Google Cloud Platform とは?

Googleがクラウド上で提供するサービスの総称です。
データ分析や機械学習、コンピューティングなど、様々なサービスが利用できます!

 

PythonでWebスクレイピング(後編)

おしながき

  • 今回やりたいこと
  • 作る順番
    1. ライブラリのインストール
    2. コーディング
    3. Pandasを使って、CSV形式での保存
  • まとめ

今回やりたいこと

今回やりたいこととしては、

学校情報サイトから、「学校名」「生徒数」「住所」をスクレピングしていきたいとおもいます。そして、最後にはPadansを使って、CSV形式で保存するところまでやっていきたいと思います。

順序は

  • ライブラリのインストール
  • コーディング
  • Pandasを使って、CSV形式での保存

大まかに分けてこの3つになります。少し長くなってしまうかもしれませんが、ゆっくりやっていきましょう!

作る順番

1.ライブラリのインストール

今回使用するライブラリは「requests」「Beautifulsoup 」「pandas」「time」の4つです。webスクレイピングというと「selenium」もBeautifulsoup と同様に人気で使われていますが、今回は使用しないです。

インストールを行っていない方は

pip install requets
pip install pandas
pip install Beautifulsoup

をコマンドプロンプトでやっていただければインストールをできます。

2.コーディング

下のものが本編になります

#今回使うライブラリ
import time 
import requests
from bs4 import BeautifulSoup
import pandas

#スクレイピングをするサイト
#URLは今回は伏せておきます
url='@@@@@@@@@@@@@@@@@@@@@@@@@@@'

#requestsを使って、URL先の情報を取得
res=requests.get(url)
soup=BeautifulSoup(res.text,'html.parser')
school_list=soup.find_all('li',attrs={'class':'school_list_city'})


for details in school_list :
    school_details={}
    sdd=details.find('div',attrs={'class':'school_detail_data'})
    school_name=sdd.find('p',attrs={'class':'school_name'}).find('span').text
    shcool_item=sdd.find('p',attrs={'class':'item'})
    total_students=shcool_item.find('span',attrs={'class':'border_underline'}).text
    ads=sdd.find('p',attrs={'class':'item position'})
    ad=ads.find('span',attrs={'class':'small'}).text

    school_details['学校名']=school_name
    school_details['生徒数']=total_students
    school_details['住所']=ad
    data.append(school_details)
    time.sleep(2)

コードがきれいに書けていないかもしれませんが、まだまだ勉強中の身なので、ご容赦していただければと思います

少し解説をさせていただくと

ところどころに「~.find(‘@@’),attrs={‘class’:’%%%’}」と言った記述がたくさんあると思います。これを抑えることができたら簡単なスクレイピングは可能かと思います。

これを日本語変換してみると「~の中の一番最初の@@タグのclassの%%%を指定します!」といった感じです。HTMLというデータはとても大きいものなので、一気に操作を行うのではなく、少しづつ絞っていくとやりやすいのではないかと思います。

3.Pandasを使って、CSV形式での保存

スクレイピングをしたデータをpandasを使って、DataFrameに格納し、それをCSV形式で保存することは一見難しそうに見えますが、案外簡単です。

#pandasを使って、DataFrameに格納
df=pd.DataFrame(data)
#CSV形式で保存
df.to_csv('学校の情報.csv',index=False,encoding='utf_8_sig')

この2行だけで終わりです。少し解説をさせていただくと、「index=False」というのは、DataFrameに格納した際にインデックス番号が同時に付与されるのですが、「CSV形式で保存するときにそのインデックス番号はいらないよー」ということです。

まとめ

かなり駆け足でBeautifulsoup を使ったWebスクレピングを紹介していきました。高校情報Ⅱの教員研修資料にも今回のBeautifulsoup を使ったWebスクレイピングは紹介され、今後必要なスキルの一つになるのではないかと思います。

また、プログラミングは様々な勉強ツールがあります。今回は私が勉強するときに使用したYouTubeの動画のURLを載せておきたいと思います。勉強するときの助けになればいいなと思います。

PythonでWebスクレイピング(前編)

おしながき

  1. Webスクレイピングとは?
  2. Webスクレイピングを行うときに注意すべきこと
  3. まとめ

1.Webスクレイピングとは?

Webスクレイピングの定義を調べてみると、、、

Webスクレイピング(Webデータ抽出、スクリーンスクレイピング、Webデータ収集とも呼ばれる)は、Webサイトから大量の情報を自動的に抽出するコンピュータソフトウェア技術のことです。データの多くはHTML形式の非構造化データで、これをスプレッドシートやデータベースの構造化データに変換することで、さまざまなアプリケーションに利用することができます。Webスクレイピングの主な使用例としては、価格監視、価格情報、ニュース監視、リードジェネレーション、市場調査などが挙げられます
引用:https://www.octoparse.jp/blog/web-scraping/#div1

といったように、インターネット上の情報をプログラムを使って、大量に抽出することを指します。抽出されたデータは「.xlsl」や「.csv」の形式で出力され、市場調査やデータ分析等に使われます。今回行うことは、Pyhtonでwebスクレイピングを行いますが、最近では、ノーコードでもWebスクレイピングを行うことができます。一例ではありますが「Octoparse」といといったサービスもあります。興味がある方はぜひともチェックしていただきたいと思います。

2.Webスクレイピングを行うときに注意すべきこと

 Webスクレイピングはとても便利な反面、注意すべき点ももちろんあります。それは

  • サーバへの負荷をかけすぎない
  • そのサイトがスクレイピングをしても問題ないか

これらのことを最低限注意しなければなりません。

 1つ目のサーバへの負荷については「間隔を開けてアクセスする」ことが一番手っ取り早いと思います。Pythonであれば

import time
for i in range(5):
    print(i)
    time.sleep(1.0)

のように、1秒ごとの間隔をあける工夫をすることで、負荷を減らすことができます。難しいことではないと思うので、思いやりの心を持ってやっていただけたらと思います。

 2つ目の「そのサイトがスクレイピングをしても、問題がないか」についてはしっかりと確認する必要があります。今回は有名なスクレイピングを行ってはいけない代表的なサイトを紹介したいと思います。

  • Amazon
  • Rakuten(楽天)
  • Twitter、Instagram、FacebookなどのSNS

これらのサイトの他にもスクレイピングを行ってはいけないサイトはたくさんあります。なので、行う前に対象のサイトの「利用規約」をしっかりと確認することが大切です。これら無視した場合「偽計業務妨害罪」に問われる可能性があります。更に細かいことは下のリンクに書いてあったので、気になる方はスクレイピングを行う前に確認してもらうといいと思います。

3.まとめ

Webスクレイピングは大変便利な半面、怖い観点もあります。なので、サイトに迷惑をかけない範囲で行うことが重要なのかと思います。後編では実際にどうやってスクレイピングを行うのかを解説をしたいと思います。

新しい年がやってきました

あけましておめでとうございます。新しい年がやってきました。小倉研究室にとっては今年は重要な年になりそうです。2021年4月に発足したこの研究室ですが、喜ばしいことに2022年4月には新しい仲間がやってきます。

それではこの研究室でこの年にやろうかなと考えていることをここに書いておきます。

今年の野望

1.ホームページのクオリティの向上

2.研究室としての何かしらの作品の製作

3.個人のスキルアップ

4.健康維持

この感じで頑張っていきたいなと思います。しかし、これらはすべて漠然としたものであって、具体的ではないです。これからゆっくりとそれぞれが考え、行動しこのブログに報告・記録をしていきたいと思っています。

このホームページもどんどん新しくなっていきます。

定期的なチェックをお願いします!!!

善光寺で写真を撮ってきたよ

こんばんわ、もうすぐクリスマスでもあり、お正月でもあるこの季節。子供のころはこの季節が一番楽しみでした。最近は秋と春が恋しいです。

現在(2021年12月22日)、善光寺ではライトアップや街頭のイルミネーションを行っています。さらに、同じコースである、信州大学の村松研究室の活動に参加させていただき、ライトアップの活動を一緒にさせていただきました。いつもありがとうございます。

村松先生の研究室のホームページです。いつもありがとうございます。

今回はそんなこともあり、写真をいくつか撮ってきたので、紹介したいと思います!

城山公園からの善光寺
ド派手にライトアップされている善光寺

善光寺の正面ではプロジェクションマッピングを行っていてとてもきれいでした。音楽と光、色も多彩で二回も立ち尽くしてみていました。時間は19時頃でもかなり人も多かったです。

今回は普通に写真を撮影するのではなく、スマートフォンと私が高校生から使っているまだ現役と信じている一眼レフカメラの比較を行いたいと思います。

頑張ってる一眼レフ
現役のiPhone11

同時刻にほとんど同じ位置から撮影したのにも関わらず、見え方がかなり違いますね。一眼レフでは、黒色がはっきりしているのに対して、iPhone11ではかなり鮮やかに見えます。これが補正です。色鮮やかな風景を綺麗に撮りたいときはスマートフォンで、しっかりと黒を出したいときには一眼レフという使い分け方もいいですね。

最後に今回撮影した写真をスライドにして、今回は終わりたいと思います。

新しい一眼レフがさしぶりに欲しくなりました。ありがとうございました。

授業で作ったWebアプリケーション②

こんにちは、今回は前回の続きとして、私が作ったWebアプリケーションの簡単な解説を続けようと思います。

前回からの続きになるので、まだ見ていない方は下のリンクから見てみてください!↓↓

前回までは、GooglebooksAPIについて初学者ながら解説を行いました今回はAPIを使う上で必然的に出てしまうエラーに対処する方法について考えてみたいと思います。

まず、今回作りたいプログラムのおさらいをしたいと思います。

今回作りたいアプリケーションの条件

言語:python3.8.8

やりたいこと:GoogleBooksAPIを活用して、検索ツールの作成

ほしい検索結果:本の題名・本の著者・発売日・ページ数・紹介文・購入まで飛ぶことができるURL・検索結果の本の画像

前回は、GoogleBooksAPIの使い方について扱いました。今回は、APIを経由して検索をかけた際に、エラーが出てしまうときがあるのでそれの対処について扱いたいと思います。

考えられるエラー

検索をかけた時、GoogleBooksにない書籍を検索をかけた場合、KeyErrorと出てきます。これをそのままにしておくのは利用者の立場からすると、使いにくいと思われます。

それに対処するために、try~exceptを使いたいと思います。(Python公式の解説はこちら

この関数はわかりやすくすると、「エラーが起きた時にする動作を決める」ことができます。

使い方は、「tryの中に、errorが起きなかった時の動作」「exceptの中に、errorが起きた時の動作」を書くだけです。難しい定義も必要ないので、簡単に実装することができます。

for i in range(0,1) :
   url = 'https://www.googleapis.com/books/v1/volumes?q='+tool+want  #GooglBooksAPI
   response = requests.get(url).json() #情報の取得,json変換
   totalitems = response['totalItems'] #件数1
   try :
       items_list = response['items'] #items リストデータ
       items = items_list[i] #items
       info = items['volumeInfo']
       print(response)
       title = info['title']
       pagelink = info['canonicalVolumeLink']
       description = info['description']
       print('紹介文が見当たりません')
       print('タイトル:', title)
       print('URL',pagelink)
       print('~~~~~~~~~~紹介文~~~~~~~~~~~~~')
       print(description)
       print('')
       print('')
       pic=info['imageLinks']['thumbnail']
       print(pic)
   except KeyError:
       print('検索結果がみつかりませんでした')
       print('もう一度試してください')
       sys.exit()
       pass

こんな感じで、検索結果が見つからない場合には「KryError」が出た場合の動作を決めることができました。

これでほとんどの難しい箇所が終わったと思います。

では次のWebアプリケーション③に続きます

ありがとうございました。