ついつい勉強中にスマホを触ってしまう人へのスマホアプリ「スマホを閉じただけなのに」の紹介

勉強を始めようと思ったのに気が付いたらスマホに手が伸びてしまっている。

勉強に関わらず誰しもが同じような経験をしたことがあると思います。

私たちはそれを解消するべく開発をしたのが「スマホを閉じただけなのに」です。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/b34dec18-b065-694a-d613-8aa0bb819d2a.png">

# はじめに
このアプリは私の所属する団体で12月初旬から中旬にかけて行われたハッカソンで作られました。このハッカソンではピクシブ株式会社様の協賛や団体のOBの皆様のご協力によって今年も開催することができました。

https://www.pixiv.co.jp/

このハッカソンで私たちの作った「スマホを閉じただけなのに」はpixivでiOSエンジニアをされている方から賞をいただくことができました。

この記事では、そんな「スマホを閉じただけなのに」の概要や簡単に使用した技術を説明したいと思います。
# 「スマホを閉じただけなのに」の概要
:::note warn
以下で出てくるアプリの画像は最後のものを除いてすべてAndroid版のものです。
また、開発中のため実際の仕様とは異なる場合があります。
:::
このアプリではdiscordチャンネルをチャンネルIDを使い設定することで、勉強中のスマホの使用を検知したときにそのチャンネルで公開処刑することによって、勉強中のスマホ使用を防ぎます。
このアプリはiOSとAndroidの両方作成しました。公開をしようと考えているので少々お待ちください。
## アプリの設定
まず、公開処刑するdiscoroチャンネルを設定しなければいけません。ホーム画面から歯車の形を押すことで設定画面に移ることができます。
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/e76acc39-04e9-e354-4f50-6ae6590da109.png)
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/f747190d-f188-1c2d-57a2-651fda0888f0.jpeg">


ここでユーザー名とチャンネルIDを設定することができます。
>チャンネルIDの確認方法は少し複雑なので下にあるリンクから確認できるようになっています
## 使用法
まず勉強を始めるときにスタート画面のスタートボタンを押します。
すると、カウントアップが始まります。この画面の状態でほかのアプリを起動したり、スマホを持ち上げてしまうと、次の画面のように怒られてしまいます。~~必ず謝らなければいけません~~
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/4def60ad-84d6-063a-7c68-bdd9ecd20aea.png">

 設定したdiscordチャンネルでは次のようにbotにばらされてしまいます。
 この時のテキストはchatGPTに生成してもらってます。
 
<img width="500"src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/512a920e-409b-cb7d-10de-be5c986a1acb.jpeg">

ホーム画面の時計のマークを押すとタイマー設定画面に移ることができます。
デフォルトで30分、１時間、２時間が用意されています。右下のプラスマークから新しくタイマーの時間を設定することができます。

![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/56dc1e08-768e-8b48-d2a6-5e908a5b2551.png)
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/425f0275-ac8e-3cff-5dda-3f85b7f8e7d7.png)

画像にあるタイマーのUIは[h_ryo][link-1]君が頑張って自作してくれました。

[link-1]:https://x.com/ryo_hamag/

タイマーをオンにしてホーム画面に戻るとタイマーがセットされています。スタートすると次の画面のように残り時間のみが表示されるようになっています。
あえて一時停止できなくすることで後戻りはできないようになっています。
~~頑張りましょう()~~
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/5864e714-5754-ded4-c0a1-2a3689a622bb.jpeg">

ただ勉強中のスマホの使用を見張ってチクるだけがこのアプリではありません。このアプリではスマホを禁止することができるとほめてくれます！
discordでもchatGPTによって生成したメッセージによって自身の頑張りを知らしめることができます。

<img width="100000" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/81b9de5e-58ab-2ebe-2aa3-ae3e39898f74.png">

## 記録機能
勉強時間を記録する機能も付いています。ホーム画面のResultというボタンを押してみると記録画面に移ることができます。
グラフには過去３０回分まで表示されるようになっています。
成功と失敗も色分けされているので一目でわかります。
![画像6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/59dd1b89-c9a7-da54-40e2-3db879f5e797.jpeg)

ハッカソン中に実装できた機能は以上です。

# 技術紹介

簡単に使用した技術を紹介させていただきたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3977749/0225ef4b-d10f-8dc7-30b5-6cdc2668dfe8.png)

Androidの方がKotlinとJetpackComposeを使ってかかれています。
iOSではSwiftとSwiftUIを使っています。
AWS上のサーバーにJSON形式のデータを送ることでOpenAi APIとデータの受け渡しを行いメッセージを取得してそれをそのままAWS上のサーバーからDiscordBotに送っています。
# メンバー紹介

https://x.com/ryo_hamag

Androidを担当してくれたh_ryo君です。私の所属する団体の副部長を務めてくれています。Androidが初めてだった私にいろいろ教えてくれました。

https://github.com/dogofsunrising

iOSのアプリ開発とAWSのサーバーに関してすべて一人でやってくれたいぬしば君です。
彼のおかげでAndroid版もiOS版も両方完成させることができました。

https://qiita.com/ty0kun

最後に私 ちょーくんです。Androidは初めての中、仲間に支えてもらってなんとか頑張ることができました。

# 感想
今回、こちらのハッカソンに参加することができて本当に良かったと思います。関係者方全員に改めて感謝申し上げます。一からAndroidアプリのつくりかたを勉強するのは学校もある中でかなり忙しくも充実した日々であったと思います。また、このような機会があれば頑張っていきたいと思います。

最後にここまで読んでくださってありがとうございます。初めて書く記事なので読みにくかったとは思いますがここまで読んでいただけてうれしく思います。