はじめに
初めまして、ヤプリで2025年新卒サーバーサイドエンジニアとして4月から内定者インターンに参加している大学院修士2年生の籔本と申します。 普段は大学院で深層学習を利用したCGの研究をしています。
この記事では「なぜヤプリを選んだのか」「内定者インターンではどのようなことに取り組むのか」を書いていきます。 ヤプリに興味を持っている方々の参考になれば幸いです。
なぜヤプリを選んだのか
ヤプリを選んだ理由はたくさんありますが、その中でも特にヤプリに魅力を感じた点について話したいと思います。
プロダクトのロマン
ヤプリのカジュアル面談ではアプリプラットフォーム「Yappli」のデモをしていただけるのですが、デモを見た瞬間に「このサービスの開発をしたい!」と思いました。 Yappliは多くのリッチな機能を備えているだけではなく、アプリの見た目を柔軟にデザインできます。 アプリを見ただけではノーコード(プログラミング不要)で作られたクオリティのものとは思えませんでした。 ノーコードで立派なスマートフォンアプリを簡単に作れることに感動し、Yappliというサービスに一目惚れしました。
また、ヤプリのプロダクトの技術にも惹かれました。 Yappliはアプリを作るプラットフォームという性質を持つため、それぞれの機能は特定の用途に向けたものではなく汎用的でなければなりません。 そのため、一般的なスマートフォンアプリの機能よりも仕様の設計や実装が難しくなります。 各機能にどのような情報を持たせてどのような形式で保存するのか、データ構造をかなり工夫しなければなりません。 これらの開発における技術的なハードルの高さに魅力を感じました。
「裁量の大きさ」と「成長の早さ」
ヤプリはインターン生でもかなり主体的に行動できます。 私は就活中にもヤプリのインターンに参加したのですが、当時のメンターの方に「自分がやりたい内容を選んでいいよ」と言われてとても驚きました。 また、四半期ごとの目標設定も自分で行うので、自分の将来像に合わせて目標を設定し、業務内容を自分が伸ばしたい力にフォーカスできます。
後述しますが、インターン生でも仕様決定に関わることができます。 私の業務内容は開発がメインですが、すでに決められている仕様に対して疑問がある場合はディレクターやエンジニアに質問したり提案を投げかけたりして議論することができます。 自発的に部署を横断して連絡したりすることもできるので、スムーズにコミュニケーションを取ることができます。 仕事をする際のこの裁量の大きさが成長の早さにもつながると感じました。
プロダクトへの貢献を肌で感じられる環境
私はものづくりの根幹は「自分が作ったものを使った人が喜んでくれること」だと思います。 ただ実装してリリースするだけでなく、作ったサービスに対する利用者の声を聞いて開発に活かせるプロダクトに取り組みたいと思っています。
就活中にヤプリのインターンに参加した時に、Win SessionというエンジニアのWin(良かったこと・頑張ったこと)を発表する会に参加しました(後述)。 その会では、カスタマーサクセス部門(以下、CS)の方々がエンジニアが開発した機能や改善に対するクライアントからの声や、実装した機能に対するフィードバックを発表していました。 エンジニアの開発したものに対するCSやクライアントの方々からのレビューを直接聞ける環境にとても感動しました。 Win Sessionに限った話ではないですが、ヤプリではエンジニアがプロダクトを開発して終わりではなく、作ったものに対するフィードバックをしっかりと受け取り、それを開発に活かすことができます。
また、ヤプリにはクライアントや社内から出た要望を実現するIdeaboxというプロジェクトがあります。 実際にクライアントや社員が欲しい機能を開発するので、プロダクトを通じた社員やクライアントへの貢献度をかなり実感できます。
アットホームな雰囲気
ヤプリのエンジニアの職場環境はとにかくアットホームです。 開発でわからないことがあればSlackや通話ですぐに相談に乗っていただけます。 基本的にはメンターの方に質問することが多いですが、それ以外の方でも気さくに回答していただけます。 特にプレッシャー無く質問できるので、開発中困った時は非常に助かります。
余談ですが、私がSlackのインターン生用のチャンネルで進捗報告のスレッドを立てると、社員のみなさんがすぐにリアクションしてくれるので見守られている安心感があります。
内定者インターンで取り組むこと
話は急に変わりますが、ここからは内定者インターンでの業務内容について話していきます。 ヤプリのエンジニアの内定者インターンではプロジェクトに割り振られます。 私はYappli UNITEプロジェクトのチーム(以下、UNITE)の一員として働いています。
各種ミーティング
全社定例
- ヤプリでは毎週月曜日に全社定例を行います。
- 各部署からの連絡、新しいアプリのリリース情報、社内イベント情報など全社員向けの情報共有が行われます。
1on1
- ヤプリでは自分のメンターや上長の方と1on1と呼ばれる面談を定期的に行います。
- インターン生ということもあって、メンターの方とはほぼ毎日1on1をします。
- 面談といってもかなりカジュアルで、その日の実装の方針や進捗に関する相談、雑談をすることもあります。
UNITE 朝会定例 / 仕様決め定例
- UNITEでは朝会と仕様決め定例がそれぞれ週2回開かれます。
- ここでは各メンバーの進捗の共有や仕様等に関する相談・すりあわせを行います。
- インターン生でも仕様に関する相談や提案をできるので、主体的に参加することができて楽しいです。
UNITE 技術相談会
- ここではエンジニアが開発で困っていることを他のエンジニアに相談します。
- ヤプリのプロダクトは歴史が長く、フロントエンド・バックエンド共にかなり奥が深いです。そのため、自分で考えてもわからない場合は積極的に相談しています。
Win Session
- 私がヤプリを選んだ理由の一つでもあるWin Sessionでは、エンジニアが成し遂げた良いこと(Win)を報告します。
- 下の記事にも掲載されているように、Winに対して多くのエンジニアが反応してくれるので、モチベーションの維持につながります。
開発
今回は私が取り組んだYappli UNITEの開発に関する話をします。
背景
アプリプラットフォーム「Yappli」では「抽選機能」を提供しています。
- 抽選頻度を「1日に1回」「1週に1回」「1ヶ月に1回」の中から指定できます。
- 景品を作成することができ、各景品に対して設定した確率で抽選が行われます。
課題
既存の仕様では抽選頻度が最低1日に1回なので、景品作成時にデータが反映されているかを確認したくても1日に1回しか検証できません。そのため、すべての景品の演出等の検証に時間がかかってしまいます。
改善内容
今回の開発では、検証のために抽選回数の無制限モードを作成しました。 また、このモードは検証用なので、検証用アプリのみで利用できるように制限しています。
開発フロー
1. 仕様決定
今回の改善はIdeaboxでCSの方から投稿されたアイデアから始まりました。
仕様がまだ決まっていなかったので、私からCSの方(Ideabox投稿者)・開発ディレクター・UNITEのエンジニアに仕様の相談を持ちかけて、Slackやミーティングで話し合って仕様を決めました。 インターン生でも気軽に相談や提案できるので、積極的に仕様決定に関わることができました。
2. デザイン依頼
仕様が決まったらプロダクトデザイナーの方にUIデザインを依頼します。 私はこれまで個人開発しか経験していなかったので、UIデザインを依頼するという事が新鮮でした。
3. 実装
ヤプリでは機能や改善の内容単位でエンジニアを割り当てて開発するので、サーバーサイドエンジニアでもフロントエンドを触ることが多々あります。 今回はフロントエンド・バックエンドの両方とも修正する必要があったので、最初はUIデザインを待ちつつバックエンドの実装を進めます。抽選回数の無制限モード用のフラグを追加するための抽選機能のデータ構造の変更と、無制限モードを検証アプリのみに制限するための処理を実装しました。
デザイナーの方からUIデザインを頂いたら、それに合わせてフロントエンドの実装を進めます。 ヤプリのフロントエンドではVueを採用しており、多くの独自Vueコンポーネントがあります。 フロントエンジニアの方にコンポーネントの仕様を教わりながら実装しました。
4. プルリクエストを作成・コードレビュー依頼
実装が終わったらプルリクエストを作成し、コードレビューを依頼します。 基本的には同じプロジェクトのエンジニアの方にコードレビューしてもらいます。
ただし、フロントエンドはCSSやVueコンポーネントの使い方に問題がないかチェックするために、フロントエンジニアの方からもプルリクエストにApproveしてもらう必要があります。
Slack上でfr plz
と打つと、自動でフロントエンジニアの中からランダムで1人割り振ってメンションされるので、その方にコードレビューしていただきます(いつもありがとうございます🙇♂️)。
5. QA依頼
無事プルリクエストが通ったらQA (Quality Assurance)を依頼します。 QAチームの方に仕様通りに機能の挙動やレイアウトなどが実装されているか、実装した内容が他の機能に影響を及ぼしていないかをチェックしていただきます。
大変だったこと
今回はアプリの管理画面に「共通設定」タブを新しく作り、スイッチによって無制限モードを切り替えられるようにしました。
フロントエンドではVuexを使用してstoreの状態を管理しており、スイッチを切り替えたときにstoreを変更しなければなりません。 Yappliのアプリ管理画面ではアプリ内の全機能の状態を管理していて複雑な上に、私がVueとVuex初心者なこともあってstore辺りを理解するまでに結構時間がかかってしまいました。
さいごに
長くなりましたが、「なぜヤプリを選んだのか」「内定者インターンではどのようなことに取り組むのか」について書きました。 インターンを通じてヤプリの技術力の高さを実感しながら、自分の実力を底上げするために日々努力しています。
インターンに参加すれば、ヤプリの素晴らしい技術力やカルチャーを実際に体感することができます。 ヤプリに興味をお持ちの方は、まずはカジュアル面談を受けてみてください。