人の気持ちを考えるのって難しいですよね?
はじめに
少し偏見も入りますがプログラマーの方はコミュニケーションが苦手な方が多い気がします。知らないうちに相手に対して失礼な物言いをしてしまったりすることがちまちま。今回は部活のメンバと一緒に開発を行ったので主に私の担当したAndroidアプリの部分を中心に解説していきます。
このハッカソンは4人チームで取り組みました。主な私の担当はアプリ部分の作成と通信、内部処理の大枠作成で他のメンバはモデリングやハードウェアの制作に取り組んでいただきました。
背景
今回ハッカソンに参加する上で各自がアイデア出しを行いましたが、その中で私のアイデアで今回作成することになりました。実はこのハッカソン開始の前に僕は彼女に本当に唐突に振られました。そんな前兆がまったく掴めていなかった僕は今後の反省点として気づかないうちに相手からの好感度が下がらないように数値化やシステム化を通して良好な人間関係を築くことが便利だなと思ったのが始まりです。
アプリの開発環境(私の担当箇所のアプリ部分)
- OS: Windows11 Education
- 言語/フレームワーク: Kotlin,Java17
- エディタ: Visual Studio Code
- テスト環境 AQUOS wish(Android13)
Androidアプリの実装(私の担当箇所)
- GUI
- 入力例と出力例を示す
ハードウェア部分(私は携わってません)
- 使用センサ
脈拍センサ,ジャイロセンサ
-使用マイコン
RasberryPie pico w(Bluetoothに対応のため)
コード解説
今回、コードがとにかく巨大になってしまったのもあり要点だけを解説させていただきます。
- ディレクトリ構成
- 主要クラス/関数の説明
- 処理の流れの詳細
判定基準
今回の判定には身体データと会話内容の分析を基に行いました。
特に主に身体データ3割,会話内容7割の重みで判定を行っています。
- 声の大きさ(語気)
- 使った単語のポジティブネガティブ度(ここの判定はGeminiAPI)
- 心拍数とジャイロセンサによる身体データ
今後の展望
-
機能追加案
現段階では会話データを取得していますがどちらが今話していて、どっちが不快な気持ちになったのかなどが把握できないので、誰が今話しているのかを自動判定できるようにしたいと考えています。 -
改善ポイント
今回、バックエンドにGeminiのAPIを使用して単語の解析をしていましたがトークン節約(課金回避)のために一通り話終わった後にテキスト書き起こしをしたデータを送信する仕組みにしているので、リアルタイム性がとても劣っています。
正確性の向上のために使用したセンサを高性能化する。また処理部分を改善して高頻度でデータ取得と処理を行えるように変更する。
まとめ
私が個人的にハッカソンに出たいという気持ちで参加を持ち掛けた中一緒に参加してくださった後輩方には感謝しかありません。今年度で私は部活を引退しますので来年以降もプログラミングや電子工作が好きな部員が活動をしていってくれるのを期待しています。GitHub上にソースコードもAPkファイルも公開していますので興味ある方は遊んでみてください。「俺の方がもっといい実装できるぞ!」って方がいましたらpull requestを是非ともお待ちしております。

