はじめに
こんにちは!今回ラクスルのエンタープライズで2名の24新卒内定者が内定者インターンをさせていただいたため、インターンを通して行ったことや、学んだことなどを振り返っていきたいと思います。
ラクスルに興味がある学生にとって参考になれば幸いです。
ラクスル エンタープライズについて
ラクスル エンタープライズは、企業向けに印刷の管理や販促業務の生産性向上を支援するサービスです。
https://enterprise.raksul.com/
木下
こんにちは、ラクスルのエンタープライズでサーバーサイドエンジニアとしてインターンさせていただいている木下です。内定者インターンは、2023年8月から週2,3ペースで参加しています。
インターンで行ったことを振り返っていきます!
管理画面上での管理者権限の管理機能
エンタープライズにはオペレーター用の管理画面があり、その管理画面にアクセスしたり、情報を変更できる管理者権限をYAMLファイルにユーザ名を書くことで管理していました。
しかし、この運用では新しくメンバーが増えて権限を付与する際に、都度エンジニアに依頼し、エンジニアがYAMLファイルを変更したPRを作成するという手間が発生していました。
そのため、YAMLファイルで管理していた権限をデータベースに入れて、管理画面上で権限を変更し管理することができるようになったことで、セールスの方々で管理できるようになり、エンジニアの手間を減らすことができました。
カタログサイトのリプレイスのRPCのproto定義、RPC作成
エンタープライズのサービスには、カタログサイトという機能があり、これがRailsのviewで実装されていたのですが、機能が大きくなるとともにviewでの限界を感じたため、フロントエンドをNext.js、通信にRPCを使うアーキテクチャにリプレイスしています。そのリプレイスで、いくつかのProtocol Buffersの定義やRPCの実装に関わりました。
Ruby on RailsはAPIモードではREST APIの開発は経験していましたが、RPCを使った開発は初めてだったため、RESTとRPCでの通信の違いや、Rails側ではどのようにリクエストが来てレスポンスを返すのか経験することができ、学びになりました。
カタログ商品の並び替え機能
カタログ商品という機能があるのですが、カタログ商品の一覧画面で商品を前や後ろに移動してほしいという要望があり、その都度オペレーターさんでわざわざ商品を入れ直すなど手間がかけていました。そのため、カタログ商品の並び順を変更する機能を実装しました。
実装に関しては、仕様や実装方法を最初から自分で決める必要があったため、どのように運用したり並べ替えたいのかをPdMの方に質問したりしながら仕様を決めていきました。
その際、複数案を考えた時は、それぞれのメリットデメリットであったり、考慮すべき点を出しながら、どの案にするかを考えて決めていきました。gemを使うことを検討した際には、似た動作をするgemが複数ある中で、どのgemが1番適しているかをドキュメントやソースコードを見たり、実際に触ってみたりして決めていきました。
結果的に、実装はオペレータ用の管理画面上で並び番号を入力することで更新できるように実装しました。また、今後ユーザ側の画面で変更ができても対応できるような設計になるように考慮したので、今後の拡張性もある実装にできたのではないかと思います。
仕様や実装方法を自分で1から考えていき、PdMや開発メンバーにフィードバックやレビューをもらいながら決めていくことが大変でしたが、とてもやりがいがあり、楽しかったです!
その他の学び
検証環境で動作確認すること
本番環境では、開発環境で考えていなかったデータが入っていることがあり、検証環境で確認すると予想外の動作になってしまうということがありました。
あまり検証環境やQAの大切さがわからなかったのですが、今回検証環境で動作検証をして発見した事象があったため、大切さを身をもって知りました。
頻繁にレビューをもらったり質問すること
仕様や実装方法を決める際に、まずコードを書くのではなくNotionにドキュメント化してレビューをもらうことで、不安点や懸念点を解消することができ実装後の手戻りが少なくなったため、実装フェーズに入ってからはスムーズに実装を進めることができました。
また実装中も仕様やドメインについて疑問点があった際には、都度メンターさんやチームメンバーの方に聞くことで、後から聞いて修正することになったなどの手戻りがなく、不安なく進めることができました。
そのため、方針が定まってないことは一旦チーム内で理解を得たあとに実装することが大事だと学びました。
進捗や考えていることをアウトプットすること
インターン中に今やっていることや詰まったこと、疑問に思ったことをSlackのスレッドや日報に書くと、メンターさんやチームメンバーの方がアドバイスを教えていただけて、疑問や問題を解消できたり新しい知見を得られたりしました。
まとめ
インターン期間を始めて5ヶ月ほどですが、いろいろ経験できてとても学びのある楽しいインターンでした。
ラクスルの事業に関する解像度も上がり、入社がとても楽しみになりました。技術的にもエンジニアとしても成長できるようにこれからも頑張っていきたいです。
池原
初めまして!ラクスル24新卒内定者の池原です。ラクスルのエンタープライズで、フロントエンドエンジニアとしてインターンしています。2023年の8月から週2日フルリモートで勤務しています。そのインターンも12月末で終了することになったので、振り返りの意味も込めて、やったこと・学んだことを紹介できればと思います!
サービスサイトの機能追加
私は、主にサービスサイトの機能追加・修正を担当しました。サービスサイトは、顧客がラクスル エンタープライズを知ろうとしたとき、Web検索などを経由して最初に訪れる場所です。サービスの概要、ご利用事例、セミナー開催情報などのコンテンツを提供しています。
技術スタックとしては、Nuxt.jsとmicroCMSを用いた静的サイトであり、一般的なJamstackの構成です。Nuxtは使用経験があったので、とりあえず手を動かしてタスクを進めることはできました。具体的には、導入企業ロゴ一覧の追加などのタスクについて、UIマークアップからCMSの繋ぎ込みまで一気通貫で任せていただきました。
HTML/CSSの基本を抑えていたことで、UIマークアップはスムーズにこなすことができました。JavaScriptでロジックを書いていくと、非同期関数や変数の命名などでつまずいたり、指摘をいただくことが多く、プログラミングの基本的な部分を理解していた”つもり”になっていたことに気づきました。
記事のページネーション機能の実装
一番時間をかけて取り組んだのが、記事一覧のページネーションの実装です。ページネーションとは、多量のコンテンツを複数ページに切り分けて表示することで、ユーザーがコンテンツを探しやすくする機能です。
実装方法の調査から任せていただき、いくつかのアプローチの中から、メリット・デメリットや今後追加する機能への影響等を考慮して、設計を行いました。
その後、とりあえず動くものをコーディングしてから、コードレビューで次のような指摘がありました。「あるべきものが、あるべきところに置いてないよね」というクラスや関数の責務に関する指摘でした。SOLID原則等は書籍で読んだことのある知識でしたが、ここについても分かっていた”つもり”だったのだと思います。
しかし、メンターの方と何度も修正とレビューを繰り返すことで、プログラミングの概念的な部分の理解が少しずつ深まり、コードも最終的にアクセプトをいただくことができました。このページネーション実装は、プラクティスの題材として自分を成長させてくれたと思いますし、最後まで、フィードバックや相談に応じてくださったメンターの方にとても感謝しています。
まとめ
5ヶ月のインターンで、チームでの開発やセールスメンバーとのやり取りなど、普段できない様々な経験をすることができました。また、自分の利点、欠点に新しく気づいたところもありました。
入社に向けて、また入社後も、より良いエンジニア像に近づけるように、研鑽を続けたいと思います!
ラクスル エンタープライズのここがイイ!
ここでは、ラクスル エンタープライズでインターンして感じた魅力をお伝えしていきます!
どんどん大きくなる開発を経験できた
ラクスル エンタープライズは他のチームに比べるとサービスが比較的新しく、ソースコードも比較的綺麗でした。
しかし、サービスに対して事業がどんどん拡大していき、顧客のニーズにサービスを対応させるために新しい機能を追加していたり、初期の実装で対応できなくなってきた機能をリプレイスしたりしています。
そのスピード感のある開発と、非連続的に成長する事業に参加することができ、とても学びも多く、楽しいインターンでした!!
気軽に相談できる環境
今回、リモートでのインターンだったのですが、勤務中はDiscordで繋がっていて、声かけしたり、Slackでメンション飛ばすと割と即レスで返信が返ってきます。
実装や仕様のことで相談や気になったことがあっても、気軽に解消できる環境だったので、メンターさんやチームメンバーの方々にはとても感謝しています。
また、ペアプロやモブレビューなども気軽に行えるため、新しい知見やドメインの知識をたくさん得られて、ペアプロの素晴らしさに気づきました!
今回は、エンタープライズでインターンをしたため、エンタープライズでの話を中心に書きましたが、ラクスル全体でも共通することも多く、どのチームも心理的安全性の高い素晴らしいチームだと思います!
おわりに
以上、木下・池原のエンタープライズでのインターン体験記でした。受け入れをしてくださったエンタープライズ開発チームの皆さまありがとうございました。
toCのイメージが強いラクスルですが、ラクスル エンタープライズをはじめとするtoBサービスの開発にも携わることができます。興味のある方は、お気軽にカジュアル面談や座談会にお申し込みください!