こんにちは、HackWeekにインターンチームで参加した井口です。ラクスルでは8/21から8/25にかけてHackWeek2023が開催されました。この記事では、その活動のレポートをお届けします。
イベント・インターン概要
HackWeekは、ラクスルで年1回開催されている、通常業務の開発から離れ、エンジニアが主体となって企画した開発を行う社内ハッカソンイベントです。 サマーインターンとしての側面も持っており、社内のエンジニアがメンターとなり、インターン生もチームで参加しました。 今回、私を含むインターン生13名が、エンジニアメンターのもと、フロントエンド・サーバーサイド・データサイエンスのチームに分かれて参加しました。 今回のHackWeekのテーマがUpgrade Ourselvesということもあり、それぞれ完全に自由な開発を行うというよりは、自分たち自身の生産性や効率向上にフォーカスしたテーマを設定して開発を行っていました。
開発テーマ: バージョン管理の超効率化
私達のチームでは、「バージョン管理の超効率化」と題して、EoL(End of Life)トラッカーをインターン生4名とメンター2名の計6名で開発しました。このトラッカーは、ラクスルの技術スタックのバージョンやEoL情報を効率的に管理するためのツールです。 (他のチームでも2~3名のインターン生に1名のメンターがつく形でした)
背景・課題
現在ラクスルでは、各プロダクトで用いている言語やフレームワークのEoLや現在のバージョンなどをスプレッドシートで手動で管理しています。
- 管理が手動であるため、作業ごとにスプレッドシートに追記していかなければならず、エンジニアにとって
めんど..負担になる作業となってしまっていました。一部形骸化してしまっている現状もあり、仕組み化が求められていました。 - バージョンアップを放置してしまい、後から最新版に対応しようとするとバージョンアップが影響する範囲が広がり、非常に重い作業になります。開発を行うエンジニアだけでなく、Directorなど管理側でも各プロダクト(リポジトリ)の対応状況を把握しておきたいというニーズもあります。
アプローチ・解決策
今回は1週間で開発を行うこともあり、上記の背景・課題を解決するため最低限必要な要件を定義しました。
- GitHubから管理しているリポジトリから言語やフレームワークのバージョン情報を取得する
- 言語やフレームワークのEoLやEoS(End Of Support)情報取得できるAPIから情報を取得する
- 一覧で表示できるようにする
まだまだすべての課題を解決することはできていませんが、「手動管理の自動化」は大分進んだと思います!
技術スタック
メインの言語・フレームワークとして、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ではエンジニア同士でのコミュニケーションの楽しさ、同じレベル感で目標に向かって団結して努力できるところ、プロダクトが完成して、評価されるところがとても魅力に感じました。
また、メンターが業務を止めてつきっきりで成長できるようにサポートしてくれます。実務での開発手法を学びながら、一歩先ゆくエンジニアを目指せます!是非興味を持った方はチャレンジしてみてほしいと思います。