ランサーズ(Lancers)エンジニアブログ > イベント/登壇 > [Lancers x dip]第1回 Engineer Meetup を開催しました!

[Lancers x dip]第1回 Engineer Meetup を開催しました!

ohira.koki|2022年07月01日
イベント/登壇

プロダクト開発部所属の22卒エンジニアの大平 紘基(@kokitecture)です。今年はじめに開発言語を Rails から CakePHPに変更して最近やっと慣れてきました。

この記事では、6/29 (水)に行ったdipさんとのコラボイベントの様子をご紹介したいと思います!

dipさんとランサーズは両社とも「仕事」を一つの軸に、長年ご利用いただいているプロダクトを運用している企業です。今回のイベントでは、そんな開発組織の生産性やコードの品質管理など、プロダクト開発の土台に関するテーマが発表の中心になっています。

それではよろしくお願いします!

タイムスケジュール

今回のイベントは、以下のようなタイムスケジュールで実施しました。

企業紹介(10分)

  • dip について
  • ランサーズ について

勉強会(15分 × 6)

開発組織の生産性を可視化する。State of DevOpsとFour Keysとは ランサーズ / 三宅 勇魚
CakePHPの内部実装から理解するPSR-7 ランサーズ / 久保 路
Lancersをコンテナへ本番移行する取り組み ランサーズ / 安達 涼
大規模プロダクトにLinterを導入し運用している話 dip / 大塚 裕紀
バイトルPROソフトウェアアーキテクチャ再設計の取り組み dip / 米田 宏
適正企業を見つける思考術 dip / 戸村 裕樹

クロージング(10分)

以下でそれぞれの詳細を紹介していこうと思います!

企業紹介

はじめにdipさんとランサーズ、両社の会社説明をしていただきました。

dipとは

まずはdipさんの システム開発2部の部長 山本 直希さんから、サービスと会社の概要を説明して頂きました。

ビジョンに関しましては以下のように掲げており、労働力における課題解決に強く情熱を持ったメンバーが在籍しているそうです。

サービスに関しましては、労働力のマッチングサービスに加え、労働環境の改善に向けAIやRPAサービスも提供されています。

ランサーズとは

次にランサーズのプロダクト開発部 部長/VPoE の倉林さん (@terukura) から、サービスと会社の概要を説明して頂きました。

ビジョンに関しましては以下のように掲げており、「個のエンパワーメント」というMissionに向け、企業様と個人に向けてそれぞれ定義しています。

サービスに関しましては、「働く」という営みを切り口に、プラットフォームやエージェント業に加え、最近では学び・教育という観点からLancers Digital AcademyやMENTAも提供しています。

勉強会

いよいよメインである、それぞれの発表のスタートです!

  • 開発組織の生産性を可視化する。State of DevOpsとFour Keysとは

https://speakerdeck.com/yfcgpsebp/deep-dive-into-state-of-devops

1人目は、Lancersのプロダクト開発部 Q/Aチームから、三宅 勇魚さん(@isanasan_)に登壇頂きました。

登壇内容としましては、毎年世界中から組織のパフォーマンスデータを収集・分析したレポートである State of DevOps を参考に、開発組織の生産性のモニタリングする方法についてお話されていました。

Four Keys とは上記スライドにある4項目であり、これらは組織のパフォーマンスと相関関係があることが証明され、組織の生産性を可視化におけるデファクトスタンダードとなりつつあるそうです。

発表後半では「Four Keysを利用した生産性改善をどうやって運用に乗せるか」について、「信頼貯金」と話されているのが印象的でした。現在社内では指標が可視化され始めており、これらの改善について自分も少しずつ意識していこうと思いました。

組織の生産性において大事なのは、どれだけ開発フローがスムーズに流れているのかということ、デリバリと組織のパフォーマンスには因果関係にあるということ。この発表を聞いて、これまで部会などで話されている生産性改善の試みに関して、改めて背景や目的について知ることができ、とても腹落ちしました!

  • CakePHPの内部実装から理解するPSR-7

2人目は、Lancersのプロダクト開発部 Q/Aチームから、久保 路さん (@amamanamam)に登壇頂きました。

登壇内容としましては、CakePHPにおける$this->request への疑問をきっかけとして、フレームワークにおけるHTTPメッセージの仕組み理解と、その過程における内部実装の深掘る面白さについて話されていました。

今回のスライドの中心になっているPSRは、フレームワークの相互運用性を高める為に定義された規約であり、中でもPSR-7はHTTPメッセージのインターフェースについて定められているそうです。

PSR-7についての詳細はスライドに記載されてありますが、スーパーグローバル変数の変更危険性やオブジェクトを利用するメリットなどについて説明されており、オブジェクト思考への理解が深めまるような内容でした!

いつもなんとなく使っている変数やメソッドに関して、その内部実装の理解を進めるのは、アプリレイヤーより上位の理解に繋がり面白いなと感じました。また久保さんが今回のテーマ選定理由に関して「知的好奇心から」と説明されているのが素敵だなと思いました! (次はPSR-15だそうです!)

  • Lancersをコンテナへ本番移行する取り組み

3人目は、Lancersのプロダクト開発部 SREチームから、安達 涼さん (@adachin0817)に登壇頂きました。

登壇内容としましては、Lancers本番環境のコンテナ移行までの経緯とそのノウハウについてです。コンテナ移行は1年かけての大プロジェクトであり、MENTAやLancers Agencyなどのグループのプロダクトにて試行錯誤の結果、集大成のプロジェクトでもあります。

Terraformによる本番環境のIaC化 → インフラをCIrcleCIでCI/CD → EC2をAmazon Linux2化 → ログサーバーのKinesis化 = 単一障害点の撲滅 → 開発環境の修正 → フロントエンドのビルド方法最適化 → ☆ 本番環境のコンテナ化 ☆ (改めて見るとすごい工数ですね、、)

ここでは詳細について説明できていないですが、他にもBatchサーバーのECS Scheduled Task化や独自デプロイシステム deploy-sanの廃止など、実際に日々開発しているエンジニアとしては、本当に快適な開発環境へ進化しており、日々恩恵を受けています。

それぞれの工程に関してはスライド内に安達さんが執筆したブログやスライドのリンクが記載されていますので、気になる方は是非チェックしてみてください。以下に今回のコンテナ化に関するエンジニアブログの記事を貼っておきます。

> Lancers本番環境のコンテナ化が完了しました

  • 大規模プロダクトにLinterを導入し運用している話

4人目は、dipさんのシステム開発1部 から大塚 裕紀さんに登壇頂きました。

登壇内容としましては、10年近く運用されている「はたらこねっと」の大規模システムリプレイスに合わせて、PHPのLinterである「PHP Insights」を導入したコードの品質担保についてお話しされていました。

PHP Insightsは設定を柔軟に変更することができ、導入コストも高くないそうです。運用に関しては、Githubへのpushをフックとして、AWS CodeBuildを用いてテストとLinterを実行されているそうです。(実行結果画面がめっちゃ見やすい!)

PHP Insights導入後は、レビュアーの負担も減り、開発体験が向上されているそうです。今後の方向性として、Linterのルールの厳密化と自動修正を掲げられていました。

勇魚さんのメタ的な生産性改善も、Linterを用いたデティールのコード管理、どちらも開発の品質担保には重要ですよね。ちなみに今回のリプレイスに合わせて開発言語をJavaからLaravelに移行されたようで、言語のリプレスってできるんだ、と衝撃を受けました。

  • バイトルPROソフトウェアアーキテクチャ再設計の取り組み

5人目は、dipさんのシステム開発1部 から米田 宏さんに登壇頂きました。

登壇内容としましては、Laravel6で構成されている「バイトルPRO」のアーキテクチャの課題に対して、「オニオンアーキテクチャ」と「戦略的DDD」をによるアーキテクチャの再設計により、それぞれの役割と責務を明確化したお話しされていました。

バイトルPROのアーキテクチャ課題は、ディレクトリやコンポーネントの責務が曖昧であり、新規参画者のオンボーディングに時間を要する点にあったそうです。その解決策として広く知られた構成を採用することで、責務を明確化し、共通の語彙の導入によりコミュニケーションコストも軽減できたそうです。

オニオンアーキテクチャに加え、戦術的DDDのコンポーネントを各ディレクトリに対応させることで、ディレクトリの責務と格納されるコンポーネントの責務を一致させる構成にしたそうです。それにより各コンポーネントの責務や実装指針も明確に定義できたそうです。

こちらのテーマもだいぶ濃密で、大規模なプロジェクトであったことが容易に予想できます。実際に課題に対してアーキテクチャで解決するといった実例を聞けたのは貴重な体験で、アーキテクチャや設計に関する興味が加速しました!

  • 適正企業を見つける思考術

6人目は、dipさんのシステム開発1部 から戸村 裕樹さんに登壇頂きました。

登壇内容としましては、「自分に合った会社が見つからない」と感じがちなエンジニアの課題に対して、仕事・キャリアチェンジへの捉え方や考え方、そのきっかけについて、一般とは少し違った視点でお話しされていました。

キャリアチェンジする際の企業の見極め方について、「営業とエンジニア比率」「主要取引先」「損益計算書 (P/L)」を確認すると説明されており、その理由や意図を聞いていくと、なるほど…と納得させられました。

「企業から選ばれるようなスキルセットの準備」「年収を棚卸し・逆算して方向性を定める」といった話をされており、相手の視点から考える・結果から逆算する、といったことは何においても大切なのだな、と改めて感じました。

こちらの発表は他とは少し毛色の違うテーマでしたが、仕事を軸に扱うdipさんならではの角度の意見で、内容にとても説得力がありました。エンジニアとして、社会人として常に付き添う課題であり、当日のコメント欄でも視聴者の方にとても刺さってました (笑)。

おわりに

今回のイベントでは、両開発組織の生産性やコードの品質管理といった観点について、直近の学びについて共有できた良いイベントでした!

またdipさんとランサーズ、両社ともにミッションやサービスに共感頂けるメンバーを募集しております!一緒に働きたい、話を聞いてみたいという方は、是非カジュアルにお声がけ下さい!

dipさんの採用サイト:https://www.dip-net.co.jp/recruit/top/

ランサーズの採用サイト:https://www.lancers.co.jp/careers/

最後までお読みいただき、ありがとうございました!

今回イベント: https://lancersrecruit.connpass.com/event/248522/