RAKSUL TechBlog

ラクスルグループのエンジニアが技術トピックを発信するブログです

ラクスルのインターン体験!ハッカソン型と課題解決型、どちらを選ぶべきか?

修士1年生の平尾です。情報セキュリティを専攻しています。 今回、ラクスルの課題解決型インターンに参加してきました。これまでラクスルでは、ハッカソン型のインターンのみを実施していたため、課題解決型の実務に近いインターンは今年が初の試みになります。「ラクスルのインターンに行きたい!”ハッカソン型””課題解決型”があるけどどっちにしよう?」と迷っている方などに届くと嬉しいです!

目次

課題解決型インターンって?

今年は、前述の通り”ハッカソン型””課題解決型”の2つのコースでインターンの募集がされていました。前者は8/21〜25、後者は9/11〜15の各5日間で開催されました。待遇は双方とも100,000円/5日間の交通費・宿泊費支給で、対面実施の際にはお昼ご飯まで提供してくださいました。ハッカソン型インターンはテーマの自由度が広く、最新の技術を試して新しいシステムを作るなど普段の業務にすぐに使うことがなくとも中長期的な視野で技術的チャレンジをするテーマに取り組めるものです。一方今年から実施された課題解決型インターンは、業務で出てきた課題をインターン生がチームになって開発をすることで解決する、といったより実務に近い経験を積むことができる内容でした。今回私はどちらを志望するか考えた上で、ラクスルの社風や「課題解決」といった理念をより身近に体験できるインターンに取り組みたいと考え、課題解決型のインターンを選びました。

開発チームについて

今回はそれぞれフロントエンドチームバックエンドチームデータ活用チームの3種類のチームに分かれ、合計5チームでの開発でした。1チームは約3〜4人のインターン生、1人のメンターで構成されています。私はバックエンドチームとして参加し、チームは計5人でした。私自身今年の3月からモバイルアプリ開発のアルバイトをしているのですが、周りのインターン生の方々はその期間以上に開発経験がある方ばかりでとても恐縮でした。インターンの選考時に、「制限時間こそ決められていないが、精度や整った設計や可読性を求められるコーディング試験」が課されたからこその、技術力が高いメンバーだったのかなと思います。余談ですが、インターンの正式なオファーを受けた際にコーディング試験のフィードバックを頂けたため、かなり自身のコードを見直す参考になりました。インターン選考を受ける方は仕様を満たすことができたからとすぐに出すのではなく、せっかくフィードバックをいただけるので、「妥協せず全力を出しきった」「これが一番綺麗だ」と思えるコードを出すのが良いと思います(あまり選考時に妥協する人はいないと思いますが...)。もちろん選考期間にインターンの枠が埋まってしまう可能性もあるので、参考程度に頭の片隅に置いていただけると嬉しいです。

使用技術

実務課題に取り組んだ関係上、開発テーマについて具体的な話は書けないですが、使用技術については言及が可能なので、「どういう技術に触れられるか」が気になっている方に向けて書かせていただきます。 使用した技術は以下の6つです(直接的にテーマ推測が出来るものについては省略)

  • AWS Lambda
  • Amazon EventBridge
  • Amazon ECR
  • Amazon S3
  • Snowflake
  • OpenAI

特にAWSに関してかなり自由な権限が与えられ、「実装したいけど権限周りで申請などに時間がかかる」ことはほぼありませんでした。そのためインターン期間が5日と短い中でかなり有難く、のびのびと実装を進めることが出来ました。また、ラクスルはクラウドベースのデータ活用に際してSnowflakeを使用しています。私自身Snowflakeに触るのは初めてで、近年注目されているサービスを自由に使用できるのは良い経験になりました。ちなみに去年ラクスルでは、Snowflakeの社内勉強会も開催されていたらしいです。 インターン期間中は社内のリポジトリやNotion、Slackを自由に見ることが出来たため、過去の実装事例を参考にしたり設計図ややり取りを元にヒントを得たりと、実務により近い経験が出来たのでは無いかと思います。

苦労したことや工夫点

AWSに触るのはほぼ初めてだったので、まずは仕様書を読む段階から苦労しました。読めていたつもりでも上手く動かなかったり、環境依存のバグが発生したり......。そのたびにメンターの方への質問を繰り返すことで、段々詰まることが減り、作業の効率が上がるのを感じました。 私たちのチームでは「10分ルール」というWorking Agreementを設定しており、10分悩んでもわからなかったことは周りの方やメンターに即相談するようにしていました。そのおかげで、「1人だけ詰まっている疎外感」を感じることがなく、チームとして楽しく開発をすることができました。また、毎朝詳細な設計や優先順位について1時間チームのみんなで話し合ったおかけで、かなり工数のかかる開発テーマの中、無事にやり遂げることができたのでは無いかと思います。

業務外の話

開発テーマに触れられない関係上、写真とかを貼ることができず少し寂しいので美味しかったお昼ご飯や素敵なオフィスの写真を貼ります。

最終日に1チームに1プレートいただいたつきじ海賓のお寿司

この世の全ての美味しさを凝縮したお味でした。最終発表前だったので本当に原動力になりました。ありがとうございます。

ラクスルのオフィス

天井がとにかく高い。ミーティングルーム上に本物の木が植えてあり、オフィスとは思えないほど広々とした環境でチーム開発をすることができました。一般的なオフィスのような部屋ももちろんあり、適宜集中できる自分にあった場所をえらぶことができます。 また、無料のウォーターサーバーが設置されてあり、ノベルティでラクスルロゴの水筒をプレゼントしていただいたこともあり、かなりお世話になりました。他にも社内に珈琲を100円で1杯飲むことが出来るサーバーがあったり、オフィスグリコが設置されていたりと、かなり働きやすい環境だなぁと感じました。

感想

今回はラクスルの課題解決型インターンに参加させていただきました。インターンの業務を通して、ラクスルの実務のイメージがかなり明確に掴めたのではないか、と思います。また、情報セキュリティを専攻していることもあり、その関係の方ともお話させていただく機会をいただき、かなりモチベーションになりました。「技術スキルを伸ばしたい」「ラクスルが何をしているか知りたい」の双方を叶えることができる、とても良いインターンだったと思います。「ハッカソン型と課題解決型、どちらにしよう?」と悩んでいる方の一助になると有難いです。読んでいただきありがとうございました!

ラクスル「課題解決型」インターンシップの体験レポート

9月11日から9月15日までの間行われていた、ラクスルの課題解決型インターンシップに参加した三森です。今回参加したサマーインターンについて、概要や感想などをまとめられればと思います。

目次

課題解決型インターンの概要

ラクスルでは、サマーインターンとして、「ハッカソン型」と、「課題解決型」の二種類のコースのインターンが募集されていました。どちらも5日間で行われ 、課題解決型コースに関しては、今年初めて実施されました。 ラクスルという企業に興味を持ち、インターンを受けてみようと考えたときに、自分はラクスルの課題解決に興味を持っていたため、ラクスルの実際の課題に触れることができ、より実務に近い経験ができるだろうと思い、課題解決型インターンを選択しました。

選考について

課題解決型インターンでは、フロントエンド、バックエンド、データ活用のコースがあり、自分はこの3つの中で一番経験があるフロントエンドを選択し、フロントエンドチームの一員として参加しました。選考の流れとしては、技術課題、面接の順に行われ、技術課題は、(少なくとも自分が受けたフロントエンドの課題に関しては)難易度は高くなく、取り組みやすい課題だと感じました。しかし、締め切りまでの期間が長く、難しい課題ではないからこそ、実装の丁寧さが重要であると感じた技術課題でした。締め切りに追われているわけではない場合は、改善できる箇所がないか、よく確認して課題を提出するべきだと思います。 面接では、取り組んだ技術課題や、自分の開発経験について主に話して、カジュアルな雰囲気で楽しく面接を進めることができました。また、面接後に頂いた最終的なインターンのオファーの中で、技術課題のフィードバックを頂き、自分が技術課題を解いた際に意識していなかったことについても言及されていて、とても参考になりました。

取り組んだ内容について

このインターンでは、5日間のうち、最初の2日間がオンライン、残りの3日がオフィスで行われ、私達のチームは、最初の2日で環境構築やタスクの割り当てを行い、残りを実装という形で進めました。具体的に取り組んだ内容については割愛しますが、私達のフロントエンドチームが取り組んだ内容は、ラクスルの実際のコードに触れられるもので、主にVue.jsを使って開発を進めていきました。私達のチームは、インターン生が3人とメンターが1人のチームで、解決したい課題を細かいタスクに分割して、担当と期限を決めるといったように、実際の業務に近い形で開発を進めました。

苦労したことについて

自分たちのチームは、ラクスルの実際のプロダクトに関わるものを扱ったため、最初の環境構築や、実装を理解することが特に大変だったと思います。プロダクトの規模が大きく、最初はどのファイルに手を加えればよいのかといったことが全くわからない状態でした。しかし、メンターのサポートや、ラクスルのレポジトリのドキュメントがよく整備されていたこともあって、何とか実装を進めることができ、最終的には必要だった機能と、プラスアルファの機能まで実装することができました。 実装の工程では、フロントのデザインが難しかったです。ページのデザインをするにあたって、どんなに小さな変更でも、必ずチームメンバーに確認してもらってから変更を反映させることを徹底しました。また、チームメンバーやメンターさんだけでなく、ラクスルのデザイナーの方とも面談する機会を設けて、慎重にデザインを決めていきました。 また、これは自分が業務での開発の経験が無かったためかもしれませんが、自分たちが実装した機能を、実際にラクスルのプロダクトですぐ利用できるようにするために、既存のレポジトリのコーディングスタイルやファイル構成をよく見た上で、それに合うように新しくコードを書き加えていくことが個人的に苦労しました。

開発を通しての学び

チーム開発において、全員の認識を揃えることの重要性を再実感しました。特に上でも述べた通り、デザインに関しては、チームメンバー同士で考えが異なるものもあり、すぐに意見がまとまらないこともありましたが、しっかり議論して、全員の合意を得てタスクを実行していき、完成までたどり着くことができました。 また、チーム全員の認識に関して、同じ機能でも実装の方法が、チームメンバー間で異なる箇所があったということに、機能が完成してから気がつくということがありました。これに関しては、自分が普段行っている実装方法とは違う方法があるということは勉強になりましたが、業務として使われるコードとして、一貫性を持たせるために、事前にコーディングスタイルなどに関しては、実装の最初の段階でチームメンバー間で話しておいた方が良かったなと感じていています。 これ以外にも、Vue.jsの使い方や、プロジェクトのファイル構成などに関しても、とても勉強になりました。自分はVue.jsに関しては全くの初心者だったため(基本の書き方すら怪しかったため、インターンの前日に、ドキュメントを1から読んで書き方を思い出していました...)Vue.jsの機能の使い方を、コードを通じて具体的な例から学ぶことができ、今後インターン前よりも自信を持ってVue.jsのコードを書けるようになったと思います。

業務外のこと

インターン中は、業務だけでなく、ラクスルという企業についてより詳しく知るために、クロストークセッション、社員とインターン生の懇親会(そこで出されたラクスルビールがとても美味しかったです!)新卒で入社されたエンジニアとランチを食べながら話す機会などがありました。 また、3日間のオフィス出勤で、オフィス見学など、オフィスを見て回る機会がありましたが、オフィスには沢山の植物があり、開放感もあって、個人的に博物館のような印象を受けました。また、社員が集まってミーティングや作業をする場所がたくさんあり、そこで実際に社員が働いている光景を見ることができ、とても働きやすいオフィスだと感じました。基本的に業務中は、チームメンバーやメンターと話すことが多かったため、一つの場所で作業を進めていましたが、別の場所でも一度は作業すればよかったと少し残念に思っています。

全体を通しての感想

このインターンを通じて、実際にラクスルが抱えている課題に取り組むことや、ラクスルのオフィスを実際に訪れたり、社員の方々と話したりすることで、ラクスルという企業がどのようなことをしているのか、どのように課題を解決しているのかの理解も深まり、ラクスルで働くイメージを掴むことができたと思います。また、開発を進めていく中で、これから自分が何かを開発していくにあたって意識したいことや、活用できそうなことなど、大きな学びがあったと思います。 この課題解決型インターンは、ラクスルという企業について知りたい人や、短い期間で業務に関わる開発をしてみたいという人にとって、とてもおすすめできるインターンだと思いました。ご興味を持たれた方は、ぜひ来年応募してみてください。

HackWeek 体験記

こんにちは。私は、HackWeekに学生インターンチームとして参加しました。 今回はHackWeek体験記と題して、今後参加される方の参考となれば幸いです。

HacWeekとは

ラクスルで年に一回開催される社内ハッカソンで、期間中エンジニアは通常業務を止めて参加します。社員同士でチームを組んで実装を行い、最終日には成果発表と表彰が行われるといった流れです。

1. ガチすぎるアイディア

一般的なハッカソンへのイメージは、アイディア重視で面白いもの・作りたいものを作る(実用性は問わない)というものでしたがHackWeekは少し毛色が違いました。どのチームの発表を見ていても明日から実用的に使えそうなプロダクトになりうるレベルでした。

2. マネジメント力の高さ

5日間という短い期間の中で実装しなければならないにも関わらず、発表した20チームのほとんど全てが実装まで完了させていました。ハッカソンでアイディアを練る時はあれも欲しいこれも欲しいになった結果、構想だけが膨らんで実装できないという光景をよく見かけますが、ラクスルのエンジニアの方々は本当に必要な機能が何かを考えて作っているという印象を受けました。そして、ちゃんと発表までに完成させるために作業計画や分担などを上手くチーム内で回しているからこそ実現されているのだと思います。

3. エンジニアカルチャーへの理解

Hack Weekの目的の一つにエンジニアの抱えている課題感や考え方を共有するというものがあります。発表の内容を見ていると業務改善やといった直接ビジネスには繋がらないけれど必要なものが多く、普段の業務と切り離して考えるからこそ出てくるアイディアだと感じました。それらを積極的に取り込むことでエンジニアが働きやすい環境になっているのだと思います。

4. みんな楽しそう

ここまでの話を聞いていると、それって結局業務をしているのと同じではないかという印象を抱くのですが、どのエンジニアの人と話しても楽しそうに取り組んでいたのが印象的でした。ラクスルには課題解決に取り組んだり、考えたりすることが本当に好きな人たちが集まっているのだと実感しました。

インターンチームについて

概要

インターン生はフロントエンド・サーバーサイド・データサイエンスの3つの枠で募集され、同じ枠の人同士でチームが組まれます。1チームの人数はインターン生2~4人+メンター1~2人という構成です。今回は計4チームがインターンチームとして参加しました。自分のチームはサーバーサイド枠で、インターン生4人+メンター2人という比較的大人数なチームでした。

進め方

事前に顔合わせ+テーマ発表の日が設けられており、環境構築などは事前に終わらせた状態で臨みます。最初の2日間はリモートでの作業で3日目から目黒のオフィスに出社して対面での作業が始まるという流れです。私たちのチームは大人しい人が多かったので、リモートの最初の2日間は会話が弾まず、思うように進められていなかった部分もあったと感じています。出社してからはお互いのことも少しずつ分かるようになり、徐々に発言も増えて最終的にはインターン生だけでも自発的に進められるようになりました。

メンターのサポート

メンターさんのサポートはとにかく手厚かったです。スタンスとしてはコーディングをインターン生に任せて、タスクの振り分けや環境構築といった部分を担当するという感じでした。しっかりマネジメントしてくれるのでチーム開発の経験が少ない私でも問題なく作業に取り組むことが出来ました。書いたコードは、メンターが現場目線でレビューしてくれるので普段のプログラミングでは意識しないような部分の指摘も貰うことができ、非常にためになります。難しい実装の部分についてはペアプロやモブプロの形式で進めることもあり、開発の中で手が止まる場面というのはほとんどなかったと思います。

今回実装したアプリケーションについて

背景

ラクスルでは多くのGitHub リポジトリを抱えており、それぞれが異なる技術スタックを使用しています。技術スタック毎にバージョン情報とEoL(End of Life)情報を管理するとその量は膨大になります。従来はこれらの情報をGoogleスプレッドシートに手入力する形で管理していました。しかし、この方法では更新するのに手間がかかるため、更新が疎かになりやすいという問題があります。

アプローチ

手入力で行っていたワークフローを完全に自動化することで、能動的に管理する必要をなくすことを目標としました。これによってエンジニアがEoLを気にかけておく心理的コストが削減される。より確実にアップデート計画が可能になります。

実装した画面

技術選定と設計

開発のフレームワークにはRuby on Railsを使用しました。選定意図は、今後ラクスル社内で開発を継続することを見越して、最も浸透しているフレームワークに併せるというものでした。各種リポジトリの技術スタックとバージョン情報の取得はGitHub APIから取得できるソフトウェア部品表(SBOM)を使用しました。SBOMには、リポジトリが依存しているパッケージの情報が含まれています。EoL情報の取得にはendoflife.dateのAPIを使用しました。 言語やフレームワークの名前を渡すとバージョンとEoL情報を返してくれます。

アーキテクチャ

難しかった部分

1. 言語バージョンの取得

GitHub APIのSBOM生成機能ではライブラリの一覧とバージョン情報は取得できますが、言語のバージョン情報を取得できません。そのため、言語のバージョンは.node-versionなどのファイルを確認する必要があります。しかし、リポジトリ毎にディレクトリ構造が異なるため、ディレクトリの中までファイルを見に行く必要があります。

2. EoL情報のデータ構造の違い

endoflife.dateから取得できるデータの構造はフォーマットが定められておらず、技術スタック毎に異なる結果が返って来ます。そのため、欠損値に対して適切な処理を行う必要がありました。

3. バージョンの一致検索

リポジトリから取得されるバージョン情報はマイナーバージョンやパッチバージョンを含んでいますが、EoL情報はメジャーバージョンやマイナーバージョンまでしか定められていない場合があります。そのため、バージョンの対応付けを行う必要がありました。

ラクスルグループの社員さんの印象

1. 技術力がとにかく高い

個人個人の技術力が高いのは言わずもがなですが、会社組織全体での技術力を上げようという意識が強いように感じました。常に新しい技術にキャッチアップして、社内の技術力を高いレベルに保っておくことで、解決したい課題を見つけた時に技術が足枷になることなく速やかに取り組むことが出来る環境を用意しているのだと思います。

2. 価値創造に対する意識の高さ

課題ベース、顧客ベースでの課題解決というのをすごく意識していて、誰のどういう課題を解決したいかを常に考えながら仕事をしていると感じました。その過程でエンジニアだけでなくbizやデザインの方とも密に連携を取りながら課題解決に対して取り組めているのも印象的でした。ラクスルの掲げる「仕組みを変えれば、世界はもっと良くなる」というヴィジョンがしっかりと社内に浸透している証拠だと思います。

3. 穏やかなのに熱意を持った人が多い

社員さんはみんな穏やかで、普段の会話は緩い文化部の雰囲気に近いかなと感じました。でも、課題が見つかると運動部ばりの熱意を発揮し、チーム一丸となって取り組める行動力も兼ねそろえています。全員が強い思いを持って取り組んでいるけれど、全員が課題解決という方向性を向いて揃っているからこそ衝突することなく円滑に進めることが出来るのだと感じました。

これからインターンに参加する人へのメッセージ

今回のインターンに参加して感じた、学びを最大化するために意識するべきポイントをいくつか共有します。

1. 主体性を持って行動する

各チームにメンターがついてくれるのは非常に心強い存在になりますが、それゆえに頼りっぱなしにならないように意識する必要があります。話し合いの場で積極的に発言したり、自分から新たなタスクを見つけて行動するなどの能動的なアクションを増やすことでよりフィードバックを得られると思います。

2. どんどん質問をする

作業で困ったことがあったり、手が止まってしまった時は迷わずに相談してみましょう。メンターの皆さんが手厚くフォローしてくれます。色々な役職の社員さんと話す機会も設けてくれていると思うので、少しでも気になることがあれば質問して会社に対する解像度を高めて行きましょう。

3. 全力でやる

想像している以上に5日間はあっという間です。終わった後に振り返りをして後悔を残さない為にも、全てに全力で取り組みましょう。

まとめ

自分にとっては学びながら楽しく成長できる最高の5日間でした。最後まで一緒に駆け抜けてくれたチームの皆さん、本当にありがとうございました。ラクスルは課題解決に真剣に向き合いたい人にとっては最高の環境が整っていると思います。もし、この考えに共感したのならばぜひインターンに参加することをおすすめします。

RAKSUL Summer Internship 2023 体験記

はじめに

私は、大学院で自然言語を対象にデータマイニングの研究をしています。 今回、ラクスルの2023サマーインターン生としてHackWeekに参加させていただきました。本記事は、ラクスルのインターンに興味を持っている方の参考になれば嬉しいと考え、自身の振り返りのためにもHackWeekに参加した経験を記録しました。

HackWeekとは

ラクスルの社内ハッカソンです。このHackWeekでは技術主導のもと、参加チームがアイデアを形にし鎬を削ります。 各年テーマがあるそうで、今年のテーマは「Upgrade Ourselves」でした。 今回は全20チームが参加しており、そのうちインターンチームは4チームありました。 インターンチームは、フロントエンドが1チーム、バックエンドが2チーム、DSが1チームという比率でした。各チーム2〜4人のインターン生と1〜2人のメンターで構成されており、私が参加したDSチームはインターン生2人とメンター1人という最も機動力に優れたチーム構成でした。 ハッカソンではインターン賞を含む合計6つの賞が用意されており、HackWeek参加者だけでなく、ビジネス職を含めたラクスルグループ全体による投票をもとに決定されました。

成果発表会

成果発表会では、ほぼ当たり前のように「明日から使える」レベルの成果発表が行われていました。CPOのコメントも「むしろなぜこれまでやってなかったのか」という半分冗談のコメントが飛び交うほどでした。5日間のハッカソンで、このレベルなら普段はどんなことやってるんだ?(笑) 最終日、CEOがふらっとカジュアルなスタイルでイベントに参加していました。その姿にこのイベントが特別なものであることを感じ、私は信頼感を抱きました。

インターンの感想

インターンに参加して強く感じたのは、悔しさでした。 やりたいこと・取り組みたいことをまだ残した状態で発表を迎えてしまったからです。ちょうどアニメ「進撃の巨人」を1話から見直しているタイミングでもあったためか、最強の戦士たちの活躍に感銘を受けた感覚をインターンでも体験したように思います。また、ラクスルでは、”GOOD”と”MORE”という二つの観点から取り組みを振り返る文化があるそうで、それに則ってメンターからフィードバックをいただきました。そのフィードバックは非常に適切で、このインターン期間中しっかりと見守ってくださったことを感じることができる内容でした。また、伝え方の力の高さにも驚きました。 担当メンター以外にも、懇親会やランチ会などで、CTOをはじめ、入社1年目の方までいろいろな方と話す機会をいただきました。皆さんビジネス意識が高く、コミュニケーションにおける波長が心地よい方々で、インターン閉会式で他チームのメンターが口にされていた、「こんなに気持ちのいい仲間達と一緒にプロダクトを作りたい」という感情が私の中にも芽生えました。また、ここにいる方たちに、そう思われるような仲間になりたいと感じました。

これからインターンに参加する方へ

インターンシップを有意義に過ごすためには、自分から積極的にアクションを起こすことが不可欠です。 また、メンターとのコミュニケーションを積極的に取り、困難や疑問を率直に共有することで、助言とサポートを得られますし、他の参加者との対話を通じてアイデアの交換や新たな視点を得ることが成長の鍵になると思います。 ぜひこの記事を参考にインターンシップを充実させていただけると嬉しいです。

HackWeek 2023 インターンレポート

こんにちは、HackWeekにインターンチームで参加した井口です。ラクスルでは8/21から8/25にかけてHackWeek2023が開催されました。この記事では、その活動のレポートをお届けします。

イベント・インターン概要

HackWeekは、ラクスルで年1回開催されている、通常業務の開発から離れ、エンジニアが主体となって企画した開発を行う社内ハッカソンイベントです。 サマーインターンとしての側面も持っており、社内のエンジニアがメンターとなり、インターン生もチームで参加しました。 今回、私を含むインターン生13名が、エンジニアメンターのもと、フロントエンド・サーバーサイド・データサイエンスのチームに分かれて参加しました。 今回のHackWeekのテーマがUpgrade Ourselvesということもあり、それぞれ完全に自由な開発を行うというよりは、自分たち自身の生産性や効率向上にフォーカスしたテーマを設定して開発を行っていました。

開発テーマ: バージョン管理の超効率化

私達のチームでは、「バージョン管理の超効率化」と題して、EoL(End of Life)トラッカーをインターン生4名とメンター2名の計6名で開発しました。このトラッカーは、ラクスルの技術スタックのバージョンやEoL情報を効率的に管理するためのツールです。 (他のチームでも2~3名のインターン生に1名のメンターがつく形でした)

背景・課題

現在ラクスルでは、各プロダクトで用いている言語やフレームワークのEoLや現在のバージョンなどをスプレッドシートで手動で管理しています。

  1. 管理が手動であるため、作業ごとにスプレッドシートに追記していかなければならず、エンジニアにとってめんど..負担になる作業となってしまっていました。一部形骸化してしまっている現状もあり、仕組み化が求められていました。
  2. バージョンアップを放置してしまい、後から最新版に対応しようとするとバージョンアップが影響する範囲が広がり、非常に重い作業になります。開発を行うエンジニアだけでなく、Directorなど管理側でも各プロダクト(リポジトリ)の対応状況を把握しておきたいというニーズもあります。

EoLトラッカーによって解決したい課題

アプローチ・解決策

今回は1週間で開発を行うこともあり、上記の背景・課題を解決するため最低限必要な要件を定義しました。

  • GitHubから管理しているリポジトリから言語やフレームワークのバージョン情報を取得する
  • 言語やフレームワークのEoLやEoS(End Of Support)情報取得できるAPIから情報を取得する
  • 一覧で表示できるようにする

まだまだすべての課題を解決することはできていませんが、「手動管理の自動化」は大分進んだと思います!

EoLトラッカーの構成図

技術スタック

メインの言語・フレームワークとして、Ruby on Railsを利用しました。HackWeek以降のメンテナンス性も考え、社内で触れるエンジニアが多いことから、メインの言語・フレームワークとして採用しました。

難しかったところ

  • リモート作業のコミュニケーション

私達のチームは自分を含め大人しい人が多く、リモートで作業する前半2日間は思っているよりも受動的になってしまい作業がうまく進められてませんでした。しかし、2日目でチーム内でさらに2チームに分かれて作業することで能動的に作業ができるようになり、出社してからは相互理解によって自分たちだけで作業を進めることができるようになりました。

  • バージョン情報の取得

現在のプロダクトのバージョン情報をGitHub APIから取得します。 その時、フレームワークのバージョン情報はSBOM(リポジトリのソフトウェア部品表)情報を取得することで確認することができますが、言語のバージョン情報がこれに含まれておらず、.node-version.go-versionといったファイルから直接読み込まなければならず、ハードコーディングになってしまいました。

  • EoL情報の取得

EoL情報はEoL情報を配信しているAPI(https://endoflife.date/api/)から取得します。 取得できるデータが言語やフレームワークごとに形式が異なっており、正規表現による解析を行う必要がありました。

  • 初めてのRuby on Rails

今回、私達のチームのインターン生は全員、Ruby、Railsを触ったことがありませんでした。 当初は慣れない形式に四苦八苦していましたが、メンターのサポートの元、HackWeek期間中に全員慣れていきました(多分)。

プロダクトの今後の展望

最初の設計の段階で、次のような機能があればいいなと話しており、今回の開発ではまだ実装できていないところになります。

  • EoL情報のSlack通知
  • ラクスルの技術スタック以外の言語・フレームワークへの対応
  • EoLやプロダクトのバージョン情報をcronなどで自動取得
  • Directorやマネジメント向けにアップデート計画を設定・表示
  • アップデートで注意する点や作業内容をAIで教えてくれる機能
  • OSS化

このプロダクトは、ラクスルのエンジニアにとどまらず、社外のエンジニア全員に役立つ可能性が秘められています!

結果

ハッカソンイベントということで、参加したエンジニアや経営陣からの投票によってアワードがあります。 私達のチームは、インターン生のチームの中で、プロジェクトの完成度が評価されるINTERN AWARDというアワードの受賞を逃してしまいました。 しかし、"CPO AWARD"というアワードをいただくことができました。 この賞は「テックカンパニーを体現するようなアイデアであるか」という観点で評価されます。 今回のプロジェクトでは、

  • ラクスルのエンジニアにとどまらず、社外のプロダクトを持つエンジニア全体に役立つ可能性が秘められている
  • 広く利用してもらうことで、『ラクスルさんのお陰でバージョン管理が楽になりました!』となり、テックカンパニーとしてアピールできる

という点が評価されました。 今回のHackWeekは全チームのプロダクトの完成度が高く、テーマ・目標で終わらせることなく、実際に実装までできていました!ラクスルのエンジニアの技術力が高いことを象徴している結果となりました。

感想・学び

私は今回初めてRuby on Railsを触りました。MVCアーキテクチャを利用しているため、それぞれの機能ごとにファイルが分かれています。後からシステムを確認したり、初めてシステムを見たとしても処理の中身がわかりやすいと感じました!また、Rubyという言語も直感的に記載できると感じました。 Webアプリケーションの開発に長けていると聞いていましたが、今回のプロダクトも最初の開発に取り掛かるまでに確かに爆速でプロジェクトを立ち上げることができました。

また、実務に携わっているエンジニアは利用者のことを考え、どのように実装すれば価値を届けられるか、ベストプラクティスなコードになるのかということを意識していることを学びました。自分も個人・業務での開発では、このような点を意識しているつもりでしたが、まだまだ全然足りないと感じたので今後研鑽していきたいと思います。

これからHackWeekに参加しようと考えている方は、全力で、能動的に開発できるとさらに良い成果・成長を生み出してくれると感じています!

ラクスル・HackWeekについて

ハッカソン型のイベントに初めて参加しましたが、ラクスルのエンジニアや技術に対してイメージが変わりました!

  • ラクスルのエンジニア

印刷業界に対してアクションを取っているため、どうしてもレガシーなイメージが強く、クールで真面目な印象を強く持っていました。 しかし、実際には専門的な質問だけでなく、日常会話を取ってみてもキーボードの宗派の話で盛り上がれるなどプライベートな話でもコミュニケーションが取りやすいエンジニアが多いんだなと感じました。良い意味でギャップを感じたところです。

  • グローバル化

ラクスルでは日本だけでなく、インドやベトナムなど海外にも拠点があります。HackWeekにもベトナムチームが参加したり、スライドを英語で作成したり、Slackに日本語と英語が併記されていたりと思っていたよりもグローバル感が強いと感じました。

  • テックカンパニー・経営陣の方針

CPOの水島さんもイベント中に仰っていましたが、実はラクスルはテックカンパニーです。自分も面談や逆求人のイベントで「ラクスルってテックカンパニーなんだ!」と深く感じませんでしたが、今回のイベントで新たな技術を用いて積極的に開発を行い、技術に貪欲なエンジニアを見て確かにテックカンパニーだと感じる機会になりました。 また、今後の経営陣の投資方針なども一部聞かせていただき、ラクスルのこれからに期待が持てました!

ラクスルの理念に「仕組みを変えれば、世界はもっと良くなる」というものがありますが、これは経営陣だけでなくビジネス・エンジニアの社員も深く浸透しています。 ハッカソンのテーマも70近く提案されており、それだけテーマが出てくるということはそれだけ日々の現状を良くしていきたい、仕組みを変えてよりよい環境・世界を目指したいという気持ちを持っているからだと感じています。

まとめ

なかなかこのような記事を書いたことがなく、読みにくい部分もあったと思いますが、最後まで読んでいただきありがとうございました!

ラクスルのHackWeekではエンジニア同士でのコミュニケーションの楽しさ、同じレベル感で目標に向かって団結して努力できるところ、プロダクトが完成して、評価されるところがとても魅力に感じました。

また、メンターが業務を止めてつきっきりで成長できるようにサポートしてくれます。実務での開発手法を学びながら、一歩先ゆくエンジニアを目指せます!是非興味を持った方はチャレンジしてみてほしいと思います。