見出し画像

チーム「カルボナーラ暴風雨」メンターによる成果物紹介jig.jpサマーインターンシップ2024

この記事は、jig.jpサマーインターンシップ2024 リアルの振り返り記事最終回です。
今回はチーム「カルボナーラ暴風雨」の成果物紹介になります。

こんにちは、カルボナーラ暴風雨のメンターを担当したダイスです。
業務では、ふわっちのアプリ開発を担当しています。
エンジニアブログでは、UnityでECSマインスイーパーを作って腕試しなどの記事を執筆しました。

さて、チーム「カルボナーラ暴風雨」のメンターとして、開発を振り返っていきます。


さわやかコミュニケーションについて

インターンシップでは、Webアプリを作成していただきました。
作成したアプリの名前は、さわやかコミュニケーションです。
このアプリは、新入社員が「さわやかポイント」を贈り合うことで承認欲求が満たせる交流アプリです。

このアプリは以下のリンクから利用できます。ぜひ体験してみてください!

https://sawa-communication.deno.dev/ 

ここでは基本となる利用の流れを紹介します。

さわやかコミュニケーションの利用の流れ

さわやかコミュニケーションやってみない?と誘い、アプリを使ってもらいます。
これで、2人の新入社員がこのアプリを起動しました。
アプリを開いたら、それぞれ相手のIDを入力して、相手のさわやかだと感じたポイントを書きます。

さわやかなポイントを入力!

贈るボタンを押すと、相手のプロフィールが表示されます。
こうして、さわやかポイントを贈ることで互いに承認しあえるのです。

プロフィール画面

また、このアプリは1日1回誰かにさわやかなポイントを書かないと他の機能が使えません。
さわやかポイントを贈りあうことで、承認欲求を満たせるアプリになっています。

技術構成

このアプリの技術構成は以下の通りです。

  • クライアントサイド: HTML/CSS/JavaScript

    • スワイプ制御: Swiper

  • サーバーサイド: Deno

  • データベース: DenoKV

この構成にした理由として、インターンシップ内で開催した勉強会があります。
勉強会で取り扱った内容が、開発に活かせるような技術構成になっています。

クライアントとサーバそれぞれの構成について、詳しく紹介します。

クライアントの技術構成について

HTMLは、ページごとにフォルダとファイルを分けて開発しました。対してCSSは、共通して使うためstylesフォルダにまとめています。

JavaScriptは、Web開発に初めて触れるチームメンバーもいたため、TypeScriptやフレームワークは採用せずに進めました。Swiperパッケージは、さわやかポイントのカードをスワイプする動きにこだわりたかったため採用しました。

SwiperのCard Effectを使うことで、実現したいアニメーションが簡単に実装できました。

https://swiperjs.com/swiper-api#cards-effect 

サーバの技術構成について

DenoについてもJavaScriptで開発しました。エンドポイントごとにファイルを分けることで見通しをよくしています。

DenoKVは、データをKeyValueで管理します。
Keyは配列で保存するため、このKeyを工夫してRDBのような使い勝手を目指しました。

さわやかポイントとユーザのKeyはそれぞれ以下のように保存しています。

["SP", 送信先のユーザID, SPのID]
["User", ユーザのID]

配列の最初の要素でデータの種類を表すことで、関連したデータを取り出しやすくしています。
例えば、この方法で保存したKeyのリストは以下のようになります。

["User", 100]
["User", 101]
["User", 102]
["SP", 100, 1]
["SP", 100, 2]
["SP", 101, 3]
["SP", 102, 4]

DenoKVは、インターンシップ期間時点ではベータ版でした。開発中にリクエスト過多でエラーになることがありましたが、十数人規模の実用には耐えうる性能をしていました。

開発を振り返って

初日は、メンターがあまり介入せず、困った時だけサポートする形で進めようと考えました。 ですが、今回が初めてのチーム開発というチームメンバーが多かったため、初日の途中から積極的にサポートする形を取りました。

APIの仕様など、理解が曖昧に見えた箇所は解説しつつ、進めていきました。 コードの書き方が身につくように、メンターが直接コードを書くことは避け、説明した内容から実装してもらうようにしました。

初めは解説することも多く、正直大変でした。それでも、数日経つとサポートなしで実装できるようになっていました。 説明した内容を理解して、成長した姿を見ることができ、とても嬉しかったです!

チームメンバーの頑張りのおかげで、チームで決めた計画を超えて進捗することができました。 コア機能を実装した後も、デザインの調整や新しい機能の提案やその実装など、燃え尽きることなく開発を続けてくれていました。

最後に

計画していた目標を超えて、300%のアプリが完成してよかったです。
インターンが終わった後も、GitHubでIssueを立てていたり、PullRequestを送っていたりと開発が続いていたことが印象的でした。

これからも継続して開発していきましょう!

いいなと思ったら応援しよう!