1

目次
P.3……SLP の活動
P.7……学生の成果物
P.14……アドベントカレンダー

2香川大学 KBIT
学生プログラミング研究所 SLP
Tel ：087-864-2284
Web：https://poulenc.eng.kagawa-u.ac.jp/Pub/KBIT/
Mail：slp.kbit@gmail.com
所在：香川大学 創造工学部 １号館 9F 演習室
Twitter：@KbitSlp

3

4

LT

SLP では毎年、新入生も含めて自己紹介 LT を行います。
その他、参加したインターンシップやイベント、学習した技術についての LT も行っています。

ICPC
ICPC（国際大学対抗プログラミングコンテスト）に参加しました。
３人一組のチームを作り、チームで協力しプログラミングと問題解決の能力を競いました。

複数ある問題のどこにどれだけ時間をかけるかなど、各チームで工夫して取り掛かっていました。

5

技術書展
技術書展 13 にサークルの書籍「Technologics Vol.1」を出展しました。
技術書展マーケットでオンライン販売しています。
https://techbookfest.org/product/paU7Rsg13FdKz
d62n0wWvy?productVariantID=r7bL8g9czxd02P2
tRQT43K

サークルメンバーそれぞれが、興味のある技術について自由に記事を書いています。
今回は、サーバ構築、画像認識、ブロックチェーン、ゲーム、LaTeX 等々、総勢１７名が参加した大ボリュームの内容です。

6

簡易バ美肉
香川大学 創造工学部２年 谷﨑勇太

1. はじめに皆さん、バ美肉をしてみたいと思ったことはありませんか。バ美肉をご存じない方もいるかもしれないので説明します。２D、３D のキャラクターを自身の動きにリンクさせ配信している人を Vtuber と呼びます。
その中でも、美少女のアバターを纏うことを、バーチャル美少女受肉（バ美肉）といいます。
Zoo などでの顔出しって恥ずかしいですよね。そういったときにも使用できるシステムになっています。

2. 使用するもの➢Python 3.10.2➢OpenCV

➢

Dlib➢

PIL➢

イラスト

3. 仕様
カメラで取得した画像を編集し表示するシステムです。編集内容は、顔の位置にイラストを重ねるというものです。また、目の開閉や笑顔の状態に応じたイラストを表示するようになっています。

7

図 1 目が開いているとき

図 2 目を閉じているとき

図 3 笑顔4. 目の開閉判定
目の開閉判定は Dlib で検出されるポイントの距離を利用しています。

図 4 Dlib で検出されるポイント8

図 4 では Dlib で検出されるもののうち、目の付近のポイントになります。
３７番と４０番の距離と、３８番と４２番、３９番と４１番の距離の比率で目の開閉を判定しています。
5.

笑顔の判定
笑顔の判定には唇の両端の距離で判定しています。通常時よりも口角が上がると笑顔判定になるようにしています。

6. イラストの表示
OpenCV を使用して顔の位置情報を取得し、その位置にイラストを重ねて表示するようにしています。各判定で別々のイラストを表示することにより、表情が現実と同じになるようにしています。

7. 最後に現段階では表情が少ないため、表情のパターンを追加することを考えています。
このシステム単体ではパソコン上に顔をイラストに置き換えた画像が表示されるだ
けですが、VirtualCam というプラグインを使うことで Zoom などでの使用ができるようになります。詳しくは、[2]を見てください。
コードは GitHub に載せています。良ければ見に来てください。
https://github.com/tus18/vtuber

8. 参考文献[1]https://qiita.com/satsukimain/items/ddc3e0f5bcf88f47e8cf[2]https://loumo.jp/archives/24912

9Google カレンダーに提出物や出席の予定を自動追加
香川大学 創造工学部 2 年 坂東恭幸

はじめに皆さんは大学の提出物をちゃんと出していますか。GPA に関わることなので出すに越したことはありませんが、ついうっかり存在を忘れていたなんてこともあります。今回はそれを防ぐために Google カレンダーに提出物や出席の予定を自動追加するシステムを制作しました。

準備したもの・Edge
・Ｍoodle (大学のサイト)
・Google App Script（JavaScript）
・Google Calendar

手順1.

Moodle のカレンダーからソースを取得する

2.

取得したソースから必要な情報を抽出する

3.

抽出した情報を元に Google カレンダーにイベントを作成する

1. 大学のサイトにログインして必要となるページのソースを取得
ログイン処理を行うために、その流れを知っておく必要があります。今回はログイン処理の仕組みを解説することがメインではないため割愛しますが、やることとしては Web ブラウザが行っている通信の内容を GAS に実装して再現するといった感じです。
まず、ブラウザの開発者ツールからネットワークを開いた状態でログインを行います。開発者ツールの画面からリクエストやレスポンスの通信内容が確認できるため、これをもとに以下の a から c までのプログラムを書いてしまいます。

10a. ログイン画面表示のリクエスト
まずはログイン処理のリクエストに必要な Cookie を取得するため、ログイン画面表示のリクエストを行い、そのレスポンスから Cookie を取得します。ログイン処理のリクエストに必要な Cookie は全て必要というわけではなく、特定の情報だけで OK でした。今回、必要な Cookie は“MoodleSession”のみであったため、リクエストヘッダーの“Set-Cookie”から値を取得しました。

b. ログイン処理のリクエストレスポンスは POST となっており、Payload に”username”、 “password”、 “logintoken”がありました。“logintoken”は先ほどのログイン画面表示のレスポンスの HTML タグ内にあったため、cheerio と呼ばれる、スレイピングなどで利用される GAS 特有のライブラリを使って値を取得しました。では先ほど取得した Cookie を含め、これらをもとにログイン処理を実装していきます。
ここでの注意点として、１つ目はブラウザからのアクセスであると偽装するために、送信元のユーザーエージェントを指定しておくこと、２つ目はリダイレクト処理を行ってしまうと取得される情報がログイン処理のレスポンスではなく、ログイン画面のレスポンスになってしまうため“followRedirects”は false にしておきます。

無事、レスポンスが返ってきました。次のカレンダー画面表示のリクエストに必要なCookie を取得したいのですが、レスポンスヘッダーを確認すると“Set-Cookie”が２つありました。そのため、その２つの中に“MoodleSession”があるかどうかを解析し、取得しました。

11

c.

カレンダー画面表示のリクエスト
最後にカレンダー画面表示のリクエストヘッダーにログイン処理後の Cookie とユーザーエージェントを指定し、GET メソッドでレスポンスを行います。URL はカレンダーのページを指定しておきます。

これでようやくカレンダーのソースページを取得できました。

2. 取得したソースを元に必要な情報を抽出し、整理する
必要な情報は先ほども登場した cheerio で取得していきます。抽出する情報はイベントの概要、説明、期限、教科名、URL などがあります。また Google カレンダーに自動追加を行うときにイベントの重複確認を行う必要があるため、運よくソース内にあった ID も抽出しておきます。抽出が終わったら、Google カレンダーにきれいに落とし込めるように、抽出した情報を結合などして、最終的にはタイトル、時間、色、説明といった感じに整理します。
このように分けた理由としては次の節で後述しています。

12

3. Google カレンダーに追加する
Google カレンダーに追加する前に重複確認を行っておきます。Google カレンダーのタイトルを取得し、タイトル内にある ID と Moodle から取得した ID を比較し、同じであればスキップ、そうでなければ追加していきます。次に、先ほど整理したイベントの情報を以下のコードのように書いていきます。これを実行することで、右の図のように Google カレンダーとして追加できました。あとは GAS のトリガーで一日一回、更新する時間を指定しておくことで今後自動的に提出物のイベントが追加されます。

最後に今回作ったカレンダー自動化は、便利すぎて非常に満足しています。Google カレンダー
はスマホにもインストールでき、締め切りの１時間前に通知が来たり、今後の予定を一目で確認したりできるため、このシステムを開発してから提出物の出し忘れがありません。欠点
としては導入方法が少しめんどくさいため、今後はだれでもできるように、アプリ化して簡単に導入できるようにしていきたいです。

参考文献
https://developers.google.com/calendar/api/v3/reference13自作シェル「sijimi」を作ってみた
URL

https://zenn.dev/higuruchi/articles/142b613eb1e650

概要 sijimiに実装されて る

能でる コマ ドパイ

ダイレト

スマホで家電操作
URL

https://qiita.com/Gomatamago_/items/8585dfdd38a93e41cecf

概要 HomeBridgeとマ トコ

使って家14

家電操作する方法。

説明。

rubyでアプリつくる
URL

https://qiita.com/hishibiro/private/2c6a9e891ea0c750f9b0

概要 Ruby on Rails

設定につ て説明。

リア充を
URL https://cd-donkigorira.hatenablog.com/entry/2021/12/04/194637?_ga=2.38574053.751180675.1638610243359943590.1630585542
概要 画像解析 勉強がて充てみた。

15

クリーンアーキテクチャ 依存関係逆転の法則
URL
概要

https://zenn.dev/higuruchi/articles/58a766398b9336
キテ チャと依存関係逆転

法則につ て説明。

word2vec実装
URL

https://qiita.com/g75hca/items/507a557f10d6133a699a

概要 Word2vecによる 散表現可視化。

16

ブログ開設しました
URL

https://blog.yamakenji.com/blog/first-post

概要 Remix

用 て 自身 ブロ構築する。

Quest2で移動した軌跡を取りました
URL

https://cnaan.hatenablog.com/entry/2021/12/10/070000

概要 VR空間で歩た軌跡

ロ

とって見てみる。

17ゲームエンジン プログラミングでゲー
ム作成
URL
概要

https://qiita.com/asn407/items/329345e5c943b149d2d2
ロ

ミ

で イワナ

作ろ！

GASでNatureRemoのデータ取得や信号の送信
URL

https://qiita.com/tsukasa0220/private/0b0ec63b9e26614d4f3a

概要 GAS

使ってNatureRemo

APIに

セ

18

セ サ

情報取得や赤外線信号送信。

プログラミングのおすすめの勉強法
URL
概要

https://qiita.com/g75hca/items/eaa08ebbc0b1af896396
ロミ

おすす①作 た も決 る

⑥自レにジ

勉強法につ② ロて説明。
ミ③使 言語 基本

言語 決 る⑤動たコ
ド 構造 析

Unityで3Dゲームを作りました
URL

https://qiita.com/tus18/items/e8e3c61a096404cab5a6

概要 Unityで 障害物 よける簡単 ３Dゲ ム

19

作成方法。

的 構文 確認④他人 コ ド動てみるキーボード入力で動く四角形
URL

https://qiita.com/yuukichi1397/items/eeab4a6b3ebd2ebacf3c

概要 Java 使って画面に映た図形

キボ

ド

で動

WordPressで役立つHTMLタグ
URL

https://qiita.com/sujimi/items/984fdb763280a6dc71bf

概要 WordPressでよく使 HTMLにつてまと てみた。

20

す処理

作成。

で動物の判別
URL

https://qiita.com/nagotta/items/c79adf6a95c9b9110121

概要 python標準 イブ

で るturtle

使用てイト描画する。

簡単な対話botを作りましたURL

https://qiita.com/tom140425/items/5a118407d930e0a7406d

概要 Python

チュ トとて簡単

21

対話bot 作成。

有馬記念を全力で予 する
URL

https://qiita.com/SSK_Ayagawa/private/952c2c4ace101d8aa374

概要 Python

用 て2021年有馬記念

想する。

Rustでシェル書く
URL

https://yassi.hatenablog.com/entry/2021/12/25/011106

概要 OpenWrt

イッチ化 てWireGuard

れた。

22

指パッチンカメラを作ってみた
URL

https://qiita.com/Gomatamago_/items/afc908e22a227e765f77

概要 Swift用 て

指パッチ でシャッが切れるカメ

23

作成。