結論
東京工業大学デジタル創作同好会traPには、部内製のチャットアプリ traQ が存在します。このtraQでは、OAuth2.0の認可サーバーとしての機能が実装されており、部員は自由にクライアントアプリを作成することができます。
君もtraPに入って、自分だけのOAuthクライアントを作ろう!!!!!
はじめに
この記事はtraP新歓ブログリレー2023 45日目(4/22)の記事です。
こんにちは、@d_etteiu8383です。traPではグラフィック班でデザインや3DCGをやっていたり、ゲーム班でゲームを作る素振りを見せていたりしています。
本記事では、部内製OAuth2.0認可サーバーを使っていろいろ勉強ができたぜ!!!!という話をします。新入生向け記事ということで、技術的な話はほとんどしません。
(部内向けアプリについてブログで公開する機会があまりなく、ほぼ自分語りみたいになってしまった)
OAuth2.0とは
OAuth2.0、"オー オース"と読みます。誤解を恐れずに、ものすごくおおざっぱに言うと、下のような仕組みです。
この全体の流れの仕様がOAuth2.0です。特定のアプリケーションを指してOAuthだ、と言っているのではなく、この仕組み・形がOAuth2.0です(より正確にはRFC 6749という文書で定義されているフロー)。
もちろん、この例はかなり簡略化して一部のみを抜き出したものです。実際にはもうすこし複雑です。
詳細なOAuth2.0の仕様については猫でもわかる(諸説)OAuth 2.0【新歓ブログリレー2020 26日目】 | 東京工業大学デジタル創作同好会traPが詳しいのでこちらをご覧ください↓↓↓

実際に使ってみた
で、上記の例における"Twitter"側の機能が、traQにより提供されています。traQはtraP内で利用・開発されているチャットツールです。SlackとかDiscordみたいなそういうアレです。
上記の例における"あなた"が部員です。"ゲーム機"の部分を、自由に作成することができちゃいます。上の例での"ゲーム機"は、"Twitterと連携して画像の投稿"という機能を提供しているわけですが、traPでは"traQと連携して「traQへのメッセージ投稿」や「traP部員の情報の取得」"ができちゃいます。
これまでに私が作成した"ゲーム機"(クライアントと呼んだりします)の例を以下で紹介します。
部員の情報を取得する系
traP全員言えるかな?

traP部員はそれぞれがIDを持っているのですが(私は@d_etteiu8383
)、それを全部員分言えるかな?というゲームです。ポケモン全部言えるかな?ゲームのパクリです。
このような部員の情報を使ったアプリをスッと作れると、部員間の繋がりも増えて楽しい。
名札メーカー


traP部員の情報を取得し、名札を作成するアプリです。そのまま印刷して使えるようになってます。対面イベントが増えてきて役立つかなと思い作りました。団体の運営に役立つアプリを作るのってtraPぐらい大規模なサークルでないと経験できないかも...?
traQの機能を使う系
スタンプメーカー

SlackやDiscordと同様に、traQにもスタンプ文化が存在します。そのスタンプをブラウザ上で作成・投稿できるアプリケーションを作りました。
(実はtraP部員じゃなくても画像作成はできます https://trap.show/~d_etteiu8383/easy-stamp-v2/)
Spotify連携
Slackにおける"チャンネルの説明"やDiscordにおける"チャンネルトピック"と同様の機能が、traQにも存在します。
また、traQでは各部員が"times"と呼ばれるチャンネルを持っており(いわゆる分報チャンネル)、そこで各自が自由に投稿しています。
私は自分のtimesチャンネルのトピックに「Spotifyで最近聞いた曲」を表示するためのクライアントを作りました。1時間おきにSpotifyのAPIを叩いて最近聞いた曲を取得し、timesチャンネルのトピックに表示しています。Spotify上の情報を取得するために、Spotify側でもOAuth2.0を利用しています。


(トピック変更履歴で普段何聴いてるかtraP部員全員にバレる)
SpotifyのAPI利用についてはSpotify API を使ってみた | 東京工業大学デジタル創作同好会traPでも紹介されているのでぜひご覧ください。

まとめ
OAuth2.0を含むtraPの環境を利用して君もインターネットに詳しくなろう!!!!!!!!
TwitterやGoogleのアカウントなどを普段何気なく連携しているそこのあなた!!!その裏側で起こっているやり取りを知ることは、セキュリティ意識を高めることにもつながります。ぜひtraPでOAuth2.0を利用したアプリケーションを作ってみましょう!!
最後までお読みいただきありがとうございます。明日の新歓ブログリレー2023担当者は@H1rono_Kです。楽しみ~