Twin:te

作品制作年:2018年

タグ:ReactTypeScriptiOS

work image

Twin:te (ついんて)は筑波大学生による筑波大学生のための専用時間割アプリです。

2018年末にプロジェクトの立ち上げを行いました。2019年2月に初版として公開され、現在ではバージョン3として公開されています。2022年7月の段階で延べ16,000人以上のユーザにご利用いただいています。運営メンバーは当初2人でしたが、現在は約10名ほどとなり、有志団体として活動しています。
代表を務めており、運営面でのメンバーの負担を減らせるようにしています。
技術面ではiOSアプリ全般(通知やウィジェット等)と各種WEBページ(寄付ページの一部等)の作成を主に担当しています。

iOSアプリ

Twin:teは当初WEBベースのアプリとして開発されていましたが、利用者を増やしたり柔軟な機能を追加したりするためにはやはりネイティブアプリの実装が必要でした。
そこで、WEBベースではあるもののウィジェット機能や通知機能等の機能を盛り込んだ各種ネイティブアプリを開発することになりました。このネイティブアプリでは共通の時間割機能の部分はWebViewを用いています。共通の時間割機能以外のウィジェット機能や通知機能などの部分はSwiftによって独自に実装しています。私がiOSアプリを担当した理由は、当初メンバー内にMacを所有しているのが私しかいなかったからです。ウィジェットは小・中・大 各種サイズや旧型のウィジェットが実装されています。

ウィジェット(Widget)

iOSのウィジェットには二種類あり、iOS13以前の旧型のウィジェットとiOS14以降の新型のウィジェットが存在します。
Twin:teのウィジェットはどちらも実装しています。
以下の画像は大・中サイズのウィジェット、もう一つは小サイズのウィジェットと旧型のウィジェットです。
サイズによって表示内容が異なりますが、ウィジェットでは今日の時間割や次の時間の授業、各授業の場所や時間を確認することができます。
もちろん、特殊日課(月曜日なのに水曜日授業など)にも対応しています。

苦労している点

Cookieの共有

WebViewとAPIを叩くために使用するURLSessionでCookieを共通化する方法に悩みました。
これは、Twin:teの各種API(ウィジェットや通知等に用いられる)は認証が必須なため、WebViewでの認証情報を使いまわす必要があったからです。
調べてもベストプラクティスが出てこなかったりと悩んでいましたが、以下のQiitaの記事のようにして解決する方法をとりました。
https://qiita.com/takonasu/items/80d9a7a60693c0e767e5
こちらの記事は当時私が書いたものになります。

その他

新しいiOSのバージョンが出る度にひやひやしています。(検証はしています)

寄付ページ

Twin:teは完全に無料な広告なしのアプリという思想の元で運営されています。そのため、当初運営費は完全にポケットマネーから支出していました。
しかしありがたいことに複数の利用者の方々から寄付をしたいとの意見をいただきました。そこで、寄付ページの作成を行い寄付を募ることとしました。寄付ページのリンクは以下の関連リンクの箇所に記載しています。私は主にマイページ周りを担当しています。
現在Twin:teは利用者の方々からいただいた寄付金にて運営しています。


これ以外にもバックエンドやランディングページ等で手が足りていないところの補助を行っています。

関連リンク

公式サイト:https://www.twinte.net
iOSアプリ:https://apps.apple.com/jp/app/twin-te/id1489274755?mt=8
寄付ページ:https://sponsorship.twinte.net
Twin:teのGitHub:https://github.com/twin-te