Hi ! 👋
皆さんこんにちは。VIVITA JAPAN メンターの @mixです。
VIVITA はVIVISTOPの運営以外にも、国内外で多くのワークショップやイベントを開催&サポートしており、時にはイベント専用のアプリを開発することがあります。
以前ご紹介したVIVITA ROBOCONの得点アプリもその1つです。
これらのアプリは、社内に専用の開発部署があるわけではなく、その時々の現場コミュニケーションベースで担当者が決められます。 業務としても、日頃抱えているメイン業務のスキマで行う個人開発のような扱いで、担当者は開発の全てを一任されます。
一見、非組織的な開発体制に見えますが、ここがイベントアプリ開発の面白いところで、個人のラーニングやトレーニングという一面を担っています。
今回は、先日僕が担当したイベントアプリの話です。
お題ジェネレーター
VIVIWAREを使ってお題に沿った機能をプロトタイピングする「超高速プロトタイピング千本ノック」というワークショップがあります。 今回開発したのは、その名の通り、お題を生成するアプリです。
要求はいたってシンプルで、「動作」「対象」「結果」の3つのキーワードをランダムに選定してお題を決定します。 以前はアナログでやっていたものを効率化のためにアプリ化したいという相談を受け開発しました。
アプリの完成度は自分次第。
依頼された機能はとても単純なもので、正直なところ、楽勝です。ですが、このまま作っても何も面白くありません。
冒頭で述べたように、イベントアプリ開発は個人のトレーニングを担っています。自分の作品として、余白部分は自分で考えて自由に作って良いのです。依頼されたのは、機能ではなくアプリケーションです。遊べる箇所は沢山あります。どんなアプリにするか主体的に考えていきます。
今回のケースでは、アプリを1つの独立したサービスとしてとらえた場合、いくつか足りない部分や疑問点が浮かび上がってきました。
例えば、
- 使用する端末は何か?
- キーワード候補は固定値で変更はないのか?
- 生成したお題のその後の扱いは?
などです。
こういった疑問をベースに、まずは要件を詰めていきます。要求を満たすことはもちろん、自分が満足する完成度を目指します。
- PC~モバイルまでレスポンシブに対応する。
- キーワードは管理者が変更できるようにする。
- 生成したお題はメモリに記録して、履歴として閲覧できるようにする。
要件さえ決まれば、この先は完全に自由な時間です。
開発の半分はラーニングとして使う。
イベントアプリ開発はラーニングも担っています。
スピードが速く変化の激しいアプリ開発界隈において、日頃気になっている技術やサービス、やりたい思っているアイデアを実際に試す機会は重要です。 ですが、その機会を自分で意識的に用意するのもなかなか大変です。イベントアプリ開発のような自由度が高いお題があるだけでラーニングは飛躍的に捗ります。
今回僕が試したことは次の通りです。
Next.js 13 の App Router を試す。
VIVITA ではこれまでに多くのWebサービスに Next.js を用いて開発してきましたが、いずれも Pages Router です。 今後、Next.js 13 から登場した App Router への切り替えを検討していきますが、大きな変更なためそれなりにラーニングコストがかかると感じていました。
そこで、お題ジェネレーターの開発の中で、
- App Router の仕組みや決まり事の調査。
- App Router での多言語対応。
- App Router での Recoil を使った状態管理。
など、気になることをどんどん試していきました。
Notion をヘッドレスCMSとして使う。
要件定義において、お題の元となるキーワードは編集可能とすることにしました。しかし、ワークショップ参加者をはじめ、誰でも変更できるようにするとチートが可能になってしまうので、変更できる人は絞らなければなりません。「アカウント認証機能を付けるほどのアプリか?」という疑問もあります。
そこで、VIVITA社員が普段社内ドキュメントツールとして使用している「Notion」でキーワードを編集できるようにしようと、Notion SDKを試してみました。
一番のメリットは振り返り。
イベントアプリ開発において、最大のトレーニングでありラーニングとなるのは、「振り返り」です。 冒頭で述べた通りほぼ個人開発のような体制となるので、アプリの結果は全て自分に跳ね返ってきます。
大勢で開発するサービスは組織的な判断や役割分担により、振り返りの中にぼやけて見える箇所が発生することがあります。
今回のような小規模開発では自分の想定と現実のズレが、ぼやけることなくはっきりと浮かび上がってくるため、自分のどこが正しくて、どこが間違っていたのかをしっかり振り返ることができます。
個人の成長は組織の成長。
このような経験は、日頃のチームで開発しているメイン業務にも活きてきます。自分の担当分野以外にも視野が広がるため、相手の意見が理解しやすくなり、先の計画やアイデアが生まれやすくなります。 何よりラーニングによって、担当業務がスムーズになります。故にVIVITAでは組織的な開発だけでなく、個人による開発を是としています。
とてもありがたい機会ですね。