レバレジーズテックフェス 2023 春レポート

アイキャッチ

はじめに

こんにちは、レバレジーズ株式会社の堀本・中村です。本記事では私たち2人が運営側として参加したレバレジーズグループ全体のエンジニアが参加するテックフェスの様子をご紹介します。基調講演や、社員によるトークセッションなどについて書いていますので、ぜひ最後までご覧ください。

堀本自己紹介

私は2020年4月にレバレジーズへ新卒入社し、グループ会社であるレバテックでの法人営業を2年間経験したあと、レバレジーズのエンジニアに異動しました。現在は社内業務効率化のツールを開発しています。

中村自己紹介

私は2022年4月にレバレジーズに中途入社し、医療介護領域のオウンドメディアを中心に開発に携わってきました。現在は、レバウェル事業部にてSRE業務に取り組んでいます。

テックフェスとは

レバレジーズグループに所属するエンジニアを対象に、社内で半年に一度行われている技術の祭典です。エンジニアが新しい技術に興味を持ち、勉強をするきっかけを作ることを目的とし、グループ全体の技術力向上を目指します。6月7日に「急がば品質。ワンランク上のレバクオリティへ」というテーマでテックフェス2023春を開催しました。

基調講演

概要

基調講演については堀本がお話ししていきます。 「いかに開発効率と品質を高めるか:ドメイン駆動設計と組織パターンの視点から考える」という題名で、現代のソフトウェア開発に求められる効率性と品質の重要な要素である、ドメイン駆動設計(DDD)と組織パターンについて加藤潤一さんにお話しいただきました。

登壇者紹介

ドメイン駆動設計や関数型プログラミング、アクタープログラミング、OSGiなどのモジュラープログラミングを研究しており、執筆活動や講演、OSSの開発などに取り組んでいる。

  • Chatwork株式会社テックリード。ZOZO技術顧問。
  • 技術評論社 WEB+DB PRESS Vol.63~68 再考するJava 執筆。
  • 日経BP社 日経ソフトウエア 特集 特集2 〜5 執筆。
  • 日経BP社 Javaツール完全理解 第2部 最新Eclipseで良いJavaプログラムを書こう 執筆。
  • ライブラリ Baseunits for Scala 作者。

学んだこと

DDDについては、DDDの基本原則や主要な概念の説明から始まり、どのようにアーキテクチャのパターンに影響を与えるか、またDDDが開発の効率化と品質向上にどのように寄与するかを学びました。 その後の組織パターンについては、どのようにドメイン設計と相互作用し、開発効率の向上に寄与するかを詳しくお話しいただきました。 DDDのお話の際には、ユーザ側にとって重要な部分は必ずしもコアドメインに該当しないとおっしゃっていて、事業側とユーザの価値は別であることに気をつけなければならないと思いました。

内容についての感想

講演の終盤では実際の開発現場で、どのように適用して具体的な成果を出すかまで説明していただき、DDD と組織パターンの理解を深め、開発効率と品質の向上に役立てられそうな有意義な内容でした。 加藤さんがテックリードをされているChatworkでの取り組み事例まで知ることができ、具体的にイメージすることができました。

テックバトル

概要

テックバトルとは

テックバトルについては中村がお話ししていきます。 テックバトルとは、エンジニアがチームに分かれて共通の課題に取り組み、そのスコアで競い合うイベントです。テックバトルは以下を目的として実施します。

  • 楽しむこと
  • テーマを意識し、業務改善に活かすこと
  • チームワークの強化

舞台設定

今回は、「品質」をテーマとして課題を作成し、実務でもあり得そうな以下の舞台設定にしました。 ​

皆さんはSFA開発チームのエンジニアです。
流入求職者の情報をシステムへインポートしたいです。
しかし、そのままではインポートできず、変換が必要です。
​
必要な変換処理が他部署のAPIで実装されていたため、
他部署のAPIを利用して変換することにしました。
​
しかし、APIにはバグがありました。
バグにより出力データが意図しない結果となるため、
正しい形に変換するプログラムを作ることになりました。
​
また、APIにバグが多く他部署メンバーも困っているので、
いろいろな入力値でデバッグして協力することになりました。

課題の詳細

以下で、今回取り組んだ課題を紹介させていただきます。 取り扱うAPIは2種類存在しており、それぞれの出力結果に誤りがあります。

課題で扱うAPIの流れ 参加者が、それぞれのAPI出力を正しく修正するプログラムを作成して処理の中に差し込み、修正済み出力結果を回答として提出します。

課題で取り組むデータ補正の流れ また、それぞれのAPIに対して特定の入力値を与えると、あらかじめ用意された例外コードが返却されます。これをできるだけ見つけ出すのも課題の目的になります。

課題で取り組む例外コード調査の流れ 例外コード調査の具体的な例

運営側が用意していない例外を見つけた場合には、報告することでボーナス点が入ります。

想定外の例外提出方法のスライド

上記のルールで、1チーム3〜4人の制限時間2時間で開催しました。

バトル中の様子

各チーム、活発にコミュニケーションをとりつつ、役割分担をして課題に取り組んでいました。修正プログラムの実装とエラー調査で分けているチームが多く、全体統括に人員を割いているチームもありました。

テックバトルに取り組むエンジニアたち 上位のチームは、作業内容の認識合わせを丁寧に行いつつ素早く役割分担をすることでタイムロスを削減していました。これは実務でも活かされる動きですね。

セッション

セッションについては堀本がお話ししていきます。 今回のセッションでは3名の方が、幅広い分野の発表をしました。

speakerdeck.com speakerdeck.com speakerdeck.com

最優秀の発表について

最優秀の発表は Nalysysグループの桐生さんの「その処理、本当に遅いですか? ~無駄を省く達人になろう~」でした。問いかけられる題名から興味を惹かれます。

発表内容

処理高速化のアプローチを下記4段階に分けて説明しました。 「無駄」のニオイを感じ取る 処理の遅い原因を特定する(計測) 高速化のための手段を考え、実装する 実装した高速化の効果を測定する

感想

処理を高速化する方法は原因や状況に応じて異なるため泥臭くやっていく必要があるとした上で、実際に桐生さんが関わった高速化の事例を紹介してくれました。発表で特に印象に残ったのは、無駄を感じ取るためには処理時間の予測精度を上げることが必要で、計算量について学ぶのと、より細かい内部の仕組みを学んで予測するセンスを磨くことでした。もちろんこの後に予測だけで終わるのではなく、計測までするようにとおっしゃっていました。この2つを勉強して、まずは無駄を感じ取る嗅覚を磨いていきたいと思います。

LT

LTについては中村がお話ししていきます。

発表一覧

今回のLTでは6人の方が、幅広い分野の発表をしました。 speakerdeck.com speakerdeck.com speakerdeck.com speakerdeck.com speakerdeck.com speakerdeck.com

最優秀の発表について

品質よりリリース優先した末路 (山城 直輝さん)

概要

こちらの発表では、品質よりリリースを優先して実装すると何が起こるのか3つのケースで紹介いただきました。具体的に紹介されていたケースは、以下の通りです。

  • 不具合修正のために本番環境のコードを直接いじる
    • 過去に修正した不具合が再発する
  • インフラ環境構築をIaC使わずにGUIで作成
    • 手順も残してないため、環境が壊れても再現できない
  • エラーレベルを考えずにエラー通知を設定
    • 通知が多すぎて重要エラーに気づかない

実際にやってしまったり見かけたことがあったりと、身に覚えのあるエンジニアは多かったようです。

学んだ/考えたこと

初めて使用するインフラリソースだと、まずGUIで作ってみてからIaCで再現するという手順を踏むこともあると思います。できることなら一からIaCで頑張るか、GUIでの設定を並行してIaCで書いていくのも一つの対策になると考えました。全体を通して、 「一旦〜」「とりあえず〜」「後で〜」は封印しなければならないと感じました。

DRY原則を誤った結果生まれた技術的負債 (野中 柊さん)

概要

こちらの発表では、「teratail」での事例を元に、単一責務を考慮せずに誤ったDRY原則に従って実装した際の問題点と改善方法を紹介いただきました。 具体的には、一つのコンポーネントに<a>タグと<button>タグを出し分けさせていた事例でした。これにより以下の問題点が生じます。

  • 内部コンポーネント制御用のPropsが際限なく追加される
  • 制御変数が多くなりすぎて内部実装が複雑になる
  • 他のライブラリの組み込みがしづらくなる
学んだ/考えたこと

以前Atomic Designで実装していたプロジェクト参画時に、大量のPropsを持っているボタンに遭遇しました。どこが再利用したい部分なのか分かりづらく、Propsでの制御量が多すぎて一から定義しても変わらないのでは・・・と感じるほどでした。今回の発表に照らして考えてみると、

  • 実は<a>タグなどの別タグとして切り出すべき機能を持っていた
  • ボタンとしても単一責務を考慮してコンポーネント分割できた

という可能性があります。DRYと単一責務はあらゆるところについて回るので、注意して実装を進める必要性を感じました。

懇親会

テックフェス終了後は、懇親会も開催。ピザやお寿司、ケーキを食べながら発表者へ話を聞きに行ったり、他チームの方と交流を深めている様子が見られました。

最後に

今回の記事では、テックフェスから学んだことや感想を書かせていただきました。加藤潤一さんの貴重なお話を聞けたり、社内のエンジニアから普段は聞けない話を聞けて非常に面白かったです。 社内で技術ノウハウの共有を行なうイベントがあったり、外部から著名な方をお呼びして貴重な話が聞ける環境のレバレジーズで皆さんも一緒に働いてみませんか? レバレジーズに少しでも興味を持っていただけた方は、こちらからエントリーをお願いします!