こんにちは!11月から1ヶ月間FEエンジニアとして就業型インターンに参加させていただいた大学院1年の野口と申します!
1ヶ月という短い期間だったのですが、ヤプリでのインターンで取り組んだこと・感じたことを共有しようと思います😊
インターンに参加した理由
私がヤプリの就業型インターンに参加させていただいた理由は、「プロダクトの価値を最大化できるエンジニア」という自身の目指すキャリア像に、ヤプリの環境が深く関わっていると感じたからです。
私が目指すのは、単にコードを書くだけでなく、常にプロダクトと顧客に向き合い、その価値を言語化し、関係者と密にコミュニケーションを取ることで、事業貢献を実現できるエンジニアです。
ヤプリはノーコードでアプリを作成できるプラットフォームを提供しています。ノーコードであるからこそ、エンジニアリングチーム外からも、顧客や市場に対する多様な意見が集まりやすい環境にあると考えていました。
こうした環境こそが、顧客に対する本質的な価値提供を行うための最適な土台であり、プロダクトの価値を最大化するための思考と経験を得る上で最良の場所だと感じ、今回インターンへ参加させていただきました!
入社して感じたこと
今回のインターンでは、業務をしつつ、バトンランチという取り組みを行っていました。
バトンランチとは、入社時に交流を増やすために、紹介形式で繋いでいく取り組みです。
この取り組みの中で、私は幅広い職種の方とランチをさせていただきました🍙
一貫して感じたことなのですが、とにかく喋りやすいと思いました!
自身がオンラインで勤務していたこともあり、全てオンライン上でさせていただいたのですが、全ての回で真面目な話や、趣味の話などで楽しくお話しさせていただきました!
特にエンジニア以外の職種の方と話をできる貴重な機会なので、たくさんの方とランチすることをお勧めします👍
インターンで取り組んだこと
インターン期間中はYappli CRMのフロントエンド改善業務に携わっていました!
Yappli CRMとは
業務は以下のサイクルで進めました。
チケットの内容を確認→実装→レビュー→QA依頼→リリース
FE改善として、私は以下の2つのチケットをリリースまで担当させていただきました。
- 旧画面用コードの削除: 移行が完全に終わった旧画面に関する既存コードを削除し、技術的負債の解消と保守性向上に貢献。
- リストの0件表示バグ修正: ページング処理において、リストの最終要素を削除した際に表示が0件となる不具合を解消。
技術的課題と解決
ここでは、私自身が上記の2つのチケットを取り組む上で直面した設計のトレードオフと、最終的な意思決定のプロセスを紹介します。
旧画面用コードの削除
旧顧客画面のコード削除は、単なるファイル削除ではなく、コードベースのアーキテクチャルールをどう守るかという課題を含んでいました 。
当初の解決策と課題: 当初は、型定義を最新の顧客画面用のフックと同じものを使用しようと考えましたが、これにより同一の型情報が複数箇所に存在することや、依存関係のルール違反が課題となりました 。
依存関係のルール違反: 既存のコードをそのまま利用しようとすると、Domain層がApplication層の型情報に依存するという、レイヤーのルール違反が発生することが分かりました 。
検討した二つの解決策と意思決定:
| 解決策 | メリット | デメリット | 採用理由 |
|---|---|---|---|
| 問題となるコードを移行中のAPI v2へ移行することで、依存関係の問題解消 | Domain層からApplication層への依存を解消 |
インターン期間(1ヶ月)では工数超過のリスク大 | 不採用:期間内に間に合わない可能性があった |
型定義のみをDomain層に移し、todoコメントを残す |
最小工数で実装可能 、現在の動作阻害リスクが低い | 将来的に再度移行タスクが必要になる(技術的負債の一部先送り) | 採用:期間内に確実にリリースするため、最小工数で進めることを優先 |
この経験を通じて、理想的なアーキテクチャの実現と、限られた期間内でのビジネス貢献という現実的なトレードオフに直面し、その意思決定の重要性を学びました。
ページングバグの解消
リストの0件表示バグは、BEからページを指定してデータを取得しているにも関わらず、該当ページの情報がなくなった際に、ページ番号を更新せずに再取得してしまうために発生していました 。
当初の選択肢と最終的な変更: このバグ修正では、実装中により良い解決策を発見し、方針を途中で変更しました。
検討した二つの解決策と意思決定:
| 解決策 | メリット | デメリット | 採用理由 |
|---|---|---|---|
(初期採用): useEffect内でページ調整+キャッシュクリア |
リストデータ取得ファイル内で処理が完結するため、責務の配置が一貫する。 | – 副作用(useEffect)による依存配列の複雑化 – キャッシュクリアの確実性が低い |
途中不採用: データ取得時の画面のチラつきが発生しやすく、ユーザー体験を損なうため。 |
| (最終採用) 削除操作側でページ遷移を行う | – 削除直後に遷移するため、キャッシュ問題が発生しにくい 。 – ロジックが単純で分かりやすい 。 |
削除以外の操作(アーカイブなど)でも同様の問題が発生する可能性があり、共通処理化が難しい。 | 採用: ロジックの堅牢性とユーザー体験(チラつき防止)を最優先 。 |
このバグ修正は、「一度決めた実装方針でも、より良い技術的知見が見つかれば柔軟に変更する勇気」の重要性を教えてくれました。OSSのディスカッションを参考に、堅牢で分かりやすいロジックへ切り替えられたことは、大きな成功体験となりました。
実際に参考にしたディスカッション
開発プロセスから得た学び
これらの改善業務を行う上で、私は実装に取り掛かる前段階で、メンターの方と共に設計の議論と実装方針の共有を徹底しました。このプロセスを通じて、私は単なる実装者から、設計意図を深く考察するエンジニアへと成長することができたと実感しています。
1. 実装方針のなぜを考える
実際に自身が企業で働いたことがなかったため、当初は実装方針のメリット・デメリットを提示できず、実装後に「やっぱりもう一方の方が良かった」となることがありました。
しかし、この経験が私にとって最も大きな成長ポイントとなりました。
メンターである平川さんは、真摯に自分の方針に対して意図を把握しようとしてくれました。その議論の中で、単に「動くコード」を書くのではなく、「保守性」「将来の拡張性」「パフォーマンス」といった多角的な視点から設計を評価し、なぜその方針を選ぶのかという技術的な根拠を持つことの重要性を学びました。
2. チーム開発におけるコミュニケーションの重要性
1ヶ月という短いインターン期間中に、実際に大きな成長を感じることができたのは、自身の学びの意識と、チームからの手厚いフォローがあったからだと痛感しています。
-
ドキュメントを通じた合意形成の徹底: 実装前に Google Docsやslack上で方針を共有し、事前にレビューやフィードバックをもらうプロセスを徹底しました。これにより、手戻りを最小限に抑えることができました。特にリモートワーク主体の環境において、非同期コミュニケーションにおけるドキュメントは、認識のズレを防ぐ上で極めて高い価値を持つことを痛感しました。
-
メンターの傾聴と成長への伴走: メンターの平川さんは、私が未熟な設計を提案しても、まずは私の意図を真摯に把握しようと努めてくださいました。その上で、私の成長につながるように適切な技術的な論点とビジネス上の制約(例:期間、工数)を示してくれました。単に答えを教えるのではなく、「なぜその設計が良いのか」を自ら考えさせる指導のおかげで、短期間で深く思考する習慣を身につけることができたと感じています。
これらの経験から、「動くコードを書くスキル」だけでなく、「チームで最大の価値を出すためのコミュニケーションスキルとプロセス」こそがプロのエンジニアに不可欠な要素だと学びました。
最後に
メンターをしていただいた平川さんをはじめ、フロントエンドチームの方々には特によくしていただきました!
出社の際にはご飯に行くことで交流を持つことができ、とても楽しかったです!
今回のインターンを通して、当初私が目指していた「プロダクトの価値を最大化できるエンジニア」というキャリア像に対する解像度が格段に上がりました。
🌟 チームでの価値提供とマインドセットの獲得
業務内では、Yappli CRMのFE改善業務に加え、定例会議に参加させていただきました。一連のプロセスを通じて、企業でエンジニアとしてチームで価値を出していくための具体的な取り組みを深く理解することができました。
特に印象的だったのは、ヤプリのエンジニアリングチームが、常に顧客に価値を提供するためのマインドセットを持って動いている点です。それを特に感じたのは、チケットベースで実装を進める中でも、新たな考慮すべき点が発生した際には、該当者やプロダクトマネージャー(PdM)がすぐに議論を行い、「より顧客にとって価値あるもの」を作るための軌道修正が行われていました。
この「プロダクトと顧客に向き合い続けるプロセス」を体感できたからこそ、1ヶ月という短い期間でしたが、エンジニアとして学ぶべき点が多く、自身の成長に大きく繋がったと実感しています。
時期的に11月ということもあり、他社選考と被りつつ大変だったことも多く、研究との両立にハードな場面もありましたが、それ以上にたくさんの学びを得ることができたので、非常に充実した1ヶ月でした😄
ヤプリでのインターンは、技術力だけでなく、ビジネスと顧客の視点を身につけたい方には特におすすめです。ぜひ参加してみてください!