この記事はwatnow アドベントカレンダーの24日目の記事です
はじめに
busdes!という立命館大学びわこ・くさつキャンパス、衣笠キャンパス向けのバス時刻表アプリbudes!を運営している、立命館大学B4のマーシーです。 watnow という学生IT団体に所属しています。
busdes!のiOSアプリのダウンロード数は約1万です。このアプリは、Backend,iOS,Androidで構成されていますが、自分はBackendの開発をしただけで,iOS,Androidに関しては先輩方や友達が開発したものを使用しています。
びわこ・くさつキャンパス向けのアプリは今のバージョンになってから既に3年以上が経過しています。
私は、昨年このアプリの運営を卒業された先輩から引き継ぎました。
現状
現状、追加の開発は一切行っておらず、宣伝も春にTwitterで少ししている程度です。アプリ自体は、口コミで広がりバス通学をしている学生のほとんどが使っているアプリになっています。
アプリの概要
京都産業大学の時刻表アプリでは、事前にバス会社から取得した時刻表を、表示しているようです。
busdes!も、バス会社が発表している時刻表を表示していることは同じなのですが、開発者がいなくてもサービスが継続できるように、バス会社の時刻表ページをスクレイピングすることで時刻表を表示しています。バス会社に確認を行った上で、1日1回のみスクレイピングを行なっています。
また、busdes!には、バスの遅れ情報を表示する機能もあります。これは、バス会社が提供している遅れ情報をスクレイピングし表示しています。これは、リアルタイムな情報更新が求められるので、リクエストごとに行っています。
運営の問題
サーバコストの問題
通常、学生が大量の人に使われるアプリケーションを運用しようと思うと少なくとも月数千円程度のサーバ代がかかります。busdes!も昨年までは、月1万円ほどのサーバ代がかかっていました。しかし、アプリからの広告収入では賄えないためサーバ代を下げる必要がありました。
元々、GCPのApp Enginを使用していましたが、Cloud Runに変更し、水平スケーリングするように設定することでコストを削減しました。結果的にサーバ代は月50円程度になりました。
サーバコストの問題は解決され運営しやすいアプリになりました。
開発コスト
京都産業大学の時刻表アプリは1時間できたようですが、busdes!は1時間とかでできるものではありません。
iOS,Android,Backendを合わせると100時間は余裕でかかっているようなアプリです。なかなか、追加機能を開発するにも先輩方が書かれたコードを読んで直すという大変な作業をしなければなりません。
リッチなアプリが逆にこのアプリの負債とも言えるかもしれません。課題解決のために必要以上にリッチなアプリを作ってしまうと、その後の運営が大変になるというのを肌で感じています。
学生の中での開発の流行りも今どちらかというと、iOSやAndroidアプリではなく、Next.jsなどのWebアプリです。また、Flutterなどのクロスプラットフォームも流行っています。busdes!はiOSはSwift storyboard、AndoidはKotlinとXMLで開発されています。2023年現在、iOSはSwiftUI、AndroidはComposeが主流になってきており、学生の興味もそっちに向いています。
フルリプレースはかなりコストが高く、レガシーのコードをやりたい学生も少ないです。学生が開発、運営するアプリでは、技術の移り変わりがかなりはやく、同じコードベースでの開発を長期間続けるのは困難です。
運営の面白さ
技術的な面白さ
このメトリクスを見て分かる通り、瞬間的には2req/sを超えるリクエストが飛んできます。Cloud Runの水平スケーリングが働いて、2台,3台とコンテナインスタンス数が増えていく様子が見れます。ただ、少しスクレイピングをするくらいでは、Goで作られたサーバはCPU,メモリへの負荷がかからず、瞬間的にコンテナが死んだ時にもう1台が立ち上がるくらいですが、、、。
リクエスト数の推移
コンテナ数の推移
運営者としての面白さ
運営者としては、大学にバスで通学している人なら大体の人がbusdes!を知っているので話の種になったりします。大学と連携したり、地域と連携したり色々話は広がるとは思うのですが、どうしても開発コストを考えると身動きが取りづらくなっているのが現状です。
アプリの今後
立命館大学びわこ・くさつキャンパスから、情報理工学部は移転することが決まっており、来年からは通学していないキャンパスのバスアプリを運営していくことになります。また、自分もあと2年すれば就職です。近いうちに後輩にバスの運営を交代して後輩たちに、busdes!をもっと良いものにしてほしいなと考えています。