AWSはじめに次世代プロダクト開発のエンジニアのなべやです。今回、チームでの悩みを起点に、シャッフル1o1のスケジュール作成サービスを作ってみました!▼シャッフル1on1とは?という方は以下記事をご覧くださいtech-blog.yayoi-kk.co.jpサービスを作成してみて、学びがたくさんありました。開発初心者で何か作りたい!けど何を作ったらよいかわからない作りたいものはあるけれどどこからはじめてよいかわからないという方の参考になれば嬉しいです。改めまして、簡単に自己紹介です。CONNECT」の推論部分の研究開発とAPIの実装をしています実は今までバックエンドのAPIばかり実装してきてあまりフロントエンドには触れていませんでした。作成したサービス以下のようにシャッフル1on1のスケジュールを作成できるサービスを作成しました。不要な組み合わせの表示を「-」に切り替えまだまだ発展途上感はありますが、いったん使えるものにはなったかなと思っています。サービスを作った経緯チーム会のなかで、チームリーダーのカトさんからシャッフル1on1のスケジュールを考えるのが大変という悩みの共有がありました。アプリかなにかを開発して楽にできたらよさそう、開発練習にもなりそうということで、Webサービスを作成することにしました。要求を明確にするチーム会や1on1の場でカトさんにお話を訊き、実現したいことを具体化していきました。今回は以下のような要求がありました。日数で全組み合わせを網羅できるようにしてほしい日数は最短でなくてもよい異常に非効率なスケジュールになることは避けたい「面談をやらないペア」を選べるようにしてほしい人数が増えても問題なく動くものにしてほしい15人くらいメンバーがいても動く設計としてほしい同時に複数のリーダーが使用しても困らないものだと嬉しい「最大でどれくらいの規模で使用したいのか」といったところは、あとあとアルゴリズムを考える際にも重要な指標となりました。ある種非機能要件的で漏れやすい観点ではありますが、ここを詰めておくことの重要性を体感しました。すれば実現できるかロジックを考える要求がわかったところで、どのようなロジックを使えばよいかを考えていきました。以下のように試行錯誤しながら、アルゴリズムを考えていきました。ロジックが実現可能なものなのか簡単に試してみる2と並行でCodePenを使用して簡単に各ロジックを試しました。この際合わせて15人程度の負荷に耐えきれるものとなっているかも確認しました。机上で考えていたロジックの中には「すべての組み合わせを出したあとで、各日で残り面談数が少ない人から順に面談を配置していく」というものもありましたが、実際に動かしてみると計算量が爆発的に増えて使い物になりませんでした。ある程度計算量を考えるのは重要ですね。最終的には以下のようなロジックを採用しました。メンバー数にあわせて、以下のように斜めに同じ数字を並べた形の表を作りますスケジュール表のもととなる形あとからいらないところを「-」にします対角成分は絶対にいらないので「-」固定にしますその他いらないところは手動で「-」にし、逆側の部分も「-」に自動で変わるようにします出来上がったスケジュール表このロジックだと以下のように要求を満たせます。利用する技術を決めて実装する作りたいものが見えてきたところで、利用する技術を決めて本実装を進めていきました。使ったことがないものを使おう!ということでReactとAmplifyを使って動くサービスを作ってみることにしました。Studioのテンプレートを改変しながらサービスを作成しました。公式チュートリアルで実際に手を動かしながら学ぶと概念を理解しやすく、また実際に物を作っていくときの参考にもなりました。beta.reactjs.orgある程度動くものになったところで、以下手順を参考にAmplifyにサービスをデプロイしました。環境構築という環境構築はなく、本当に10分でデプロイできる...!とその便利さに感動しました。実運用にあたってはもう少し制限を付ける必要がありそうですが、シンプルなページを素早くデプロイしたい!という需要にはかなり便利な気がしました。作成したアプリを見ていただく要求元のカトさんに作成したサービスのデモを見ていただき、以下のようなコメントをいただきました。今回やりたかったことは現在のサービスで実現できる以下のような機能も欲しい作成した表をコピーしてペーストできるようにする作成した表を画像化して保存する追加フィードバックでいただいた機能についても今後実装を進めていこうと思います!また、社内で本格的に運用開始するにはセキュリティ周りの構成を見直す等課題も残っているので、今後そのあたりは詰めていきます!サービス作成してみて今回サービスを作成してみて、一から個人で開発を進めることの学びの多さや楽しさを再認識しました。以下のような点がやってよかったな、と思っています。要求を受けて一からサービスを作る体験ができる失敗が許容されるので普段触れない技術を学ぶきっかけになる個人で開発練習をしたいけれど何を作ったらよいかわからないという方は、身近な悩みから作ってみるというのもよいかもしれません。私も引き続き頑張ります。一緒に働く仲間を募集しています!弥生では一緒に働く仲間を募集しています!弥生で働くことに興味がありましたら、求人一覧をぜひご覧ください。11:00関連記事2023-01-25チームでシャッフル1on1をやってみましたこんにちは、カトです。弥生でQAエンジニアをしています。2022の12日目の記事です。は...2022-03-03もくテク「弥生って、実は機械学習もやってるんです!」を開催しました!こんにちは。弥生でエンジニアをしている、たけです。2022年2...2021-12-23マイクロサービスのAPIをRESTからGraphQLへ段階的に移行した話こんにちは。弥生は第23回Quesに協賛します。引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。