TECH PLAY

M&Aクラウド

M&Aクラウド の技術ブログ

151

こんにちは。エンジニアの塚原(@AkitoTsukahara)です。 今回は弊社の内部資料として使っている「コードレビューの型」を紹介します。 個人的にエンジニアにとって、コードレビューは福利厚生だと思っています。快適な開発現場を共有できるようにコードレビューについて考えていきましょう! PHPカンファレンス2021で発表させていただいた「【IMO】コードレビューって難しいよね」の内容とほぼ同じものになっております。スライド資料で確認したい方はこちらをご覧ください。 これはなに M&Aクラウドにおけるコードレビューの型です。 新しく入社されたメンバーに「コードレビューで何をするのか、どのように…
アバター
こんにちは。エンジニアの鈴木(@yamotuki)です。 今回は、弊社の内部資料として使っている「プロジェクトマネージャーの型」を紹介します。 この資料は、今までの1~3ヶ月程度のプロジェクトを進める過程で得た知見を、個人の暗黙知ではなくチームとしてPMの役割を担える人を増やそうという目的で作りました。 PMができる状態のエンジニアであればメンバーとしても効率よく仕事を回せるのではないかという仮説のもと、PMの役割をやってもらう人以外にも展開しています。 以下はほぼ原文ままです。 これは何 プロジェクトマネージャ(PM)・リーダ業務の型をできるだけ明文化して、新しいPMやリーダ業務の助けになる…
アバター
こんにちは久保田(@kubotak_public)です 2021/09/08 19:30よりNuxt道場 弐面を開催いたしました。 弐面は第二回という意味です。 記念すべき第一回の様子は以下です。 tech.macloud.jp 今回は弊社の津崎が登壇しました。 弊社のエンジニアはもともとフロントエンドを書いて来たエンジニアではなく、どちらかというとインフラやバックエンドがキャリアとしては多いです。 そんな我々も今ではNuxt.jsをTypeScriptを用いて開発しています。 今ではゴリゴリにTypeScriptを書いている津崎の発表を是非御覧ください。 以下イベント配信のアーカイブ動画です…
アバター
こんにちは、M&Aクラウドのかずへいです。 先日、PHP Conference Japan 2021 のプロポーザル当落が発表されましたね! 今回、弊社はゴールドスポンサーもしております。 株式会社M&Aクラウド さまから ゴールドスポンサー のお申込頂きました!ありがとうございます!https://t.co/CFcK2z2a9L@macloud_news#phpcon #phpcon2021 #php— PHPカンファレンス2021 (@phpcon) 2021年6月25日 スポンサーでもトークでも盛り上げていくぞ! 全員インフルエンサー 弊社のエンジニアチームでは「全員インフルエンサー」と…
アバター
こんにちは。エンジニアの濱田( @hamakou108 )です。 今回は Vue.js で作成した入力フォームに Google reCAPTCHA v2 を埋め込むコードを書く機会があったので、その実装例を紹介します。 またその際に利用した vue-recaptcha というライブラリについても軽く紹介します。 はじめに 本記事執筆時点では vue-recaptcha は v2 のみ対応しています。 reCAPTCHA へのサイトの登録、サーバーサイドでのトークンの検証に関しては本題から逸れるため割愛します。 背景 M&Aクラウドの幾つかの入力フォームでは、スパムなどの不審なリクエストへの対策…
アバター
どうもこんにちは、エンジニアの津崎です。 梅雨が明けて、モワっと蒸し暑くて気が狂いそうですね。 夏といえば、海。 海といえば「開発大臣制度」と、「MACテック勉強会」でございます。(?) そんなわけで今回は、今年から実験的に開始された「開発大臣制度」と、「MACテック勉強会」についてご紹介したいと思います。 テクノロジーの力でM&Aに流通革命を 弊社のエンジニアチームでは、全ての作業を全員ができるように専門分野というものをあえて作らずにタスクを分配しています。 今までのフェーズでは「他のWebサービスにあるような便利な機能」をいち早く作ることが求められていました。 そのため、特別何かに詳しい必…
アバター
不具合対応中 こんにちは、塚原(@AkitoTsukahara)です。 サービス開発を続けていると対策していても大なり小なり不具合が発生してしまいます。そのため、早期に不具合を発見して、少ない被害に抑えることが大切になります。(もちろん、不具合が発生しないことが一番!) 弊社では不具合を早期発見できるように2つの仕組みを用意しています。 1つは以前もご紹介したRollbarを利用したアラート検知する仕組みです。 Rollbarについて詳しく知りたい方は、こちらの記事をご覧ください。 tech.macloud.jp もう1つは、非エンジニアでも不具合をSlackから報告できる仕組みです。今回はこ…
アバター
こんにちは久保田(@kubotak_public)です 先日の2021/06/23にNuxt道場というオンライン勉強会を開催しました。 macloud.connpass.com この勉強会は弊社でも扱っているフロントエンドのフレームワークであるNuxt.jsをテーマとした勉強会で、 株式会社Hajimariの三宅様、株式会社レアジョブの田原様を師範(登壇者)としてお迎えいたしました。 Nuxt道場はYoutubeLiveで配信したため、アーカイブとして現在でも視聴することができます。 Nuxt道場って何?という方はぜひご視聴ください。 www.youtube.com 今回の勉強会はM&Aクラウ…
アバター
こんにちは。エンジニアの鈴木(yamotuki)です。 今回は本番や開発環境でエラーが起こったときに、効率よく対応ができるように Rollbar というツールを導入した話です。 Rollbar とは 公式はこちら JavaScriptやPHPで発生したエラー詳細をSlack通知してくれます。 通知や画面詳細ページは後述してあります。 導入目的 導入目的としては、フロントエンドのエラー検知とバックエンドサーバのエラー対応の簡素化の二つがあります。 1. フロントエンドのエラー検知 Universalモード(SSRとCSRでシームレスに動作する仕組み)で動いているNuxt.jsによるアプリケーショ…
アバター
こんにちは、久保田(@kubotak_public)です 今回は弊社で運用しているサービスであるM&Aクラウドのフロントエンドの実行環境をAWS LambdaからECS Fargateへ移行した話です。 まずは弊社のサービスが動いている環境は次のようになっていました。 フロントエンドにNuxt.js(JavaScript)、バックエンドにLaravel(PHP)を利用しています。 LaravelはAWS ElasticBeanstalkで作成されたEC2インスタンス上で動作しています。 そしてフロントエンドのNuxt.jsはAWS Lambda上で動作し、API Gatewayを利用してHTT…
アバター
こんにちは、M&Aクラウドのかずへいです。 弊社のサービス「M&Aクラウド」では、ビジネスキーワードと呼ばれるキーワードを使って買収・出資企業様と売却・資金調達企業様のマッチングを行っております。 ビジネスキーワードを入力している様子 このビジネスキーワードというものは、ユーザー様が自由に入れられるものなのですが、その分表記ブレが発生したり、キーワードとして使えない文章だったりといった事が起きていました。 今回は簡易的に、キーワードではないものを判別して除外する、という条件で進めることにしましたので、MeCabを使って品詞からキーワードではないものを判別し除外していくことにします。 MeCab…
アバター
こんにちは。エンジニアの濱田( @hamakou108 )です。 数ヶ月前にM&Aクラウドの feature toggles の仕組みを刷新したので、今回はその内容について紹介したいと思います。 Feature toggles とは? Feature toggles はアプリケーションのビルド時または実行中に機能の切り替えを行う仕組みです。 Feature toggles はいわゆる feature branches の戦略とは対照的に、メインのブランチに頻繁にコードを統合します。 こうすることで CI/CD による早期のフィードバックと開発中の個別機能へのアクセスを両立します。 詳細について…
アバター
はじめに こんにちは。エンジニアの鈴木(@yamotuki)です。 今回はエンジニアの生産性向上の施策として、Jiraを用いた計測手法と、やってみた施策について書こうと思います。 背景 ストーリーポイントの計測 ”ストーリーポイントとは?”についての詳細は他の記事にお任せします。 弊社ではスプリントを採用しており、毎スプリントで消化しているストーリーポイントを計測しています。 エンジニアが特定の一つのタスクに詰まってしまって、なかなか終わらせることができなければストーリーポイントの合計は当然低くなってしまいます。 スプリントで消化したストーリーポイントが高いからといって、優先度の低かったり不要…
アバター
はじめに こんにちは、エンジニアの津崎(@820zacky)です。 今回は、先日実装したLaravelでのメールのプレビュー表示、テスト送信機能についてご紹介します。 「メールプレビューはあると便利そうだけど、 メールごとにプレビューのための処理を追加する必要があるんじゃない? すでにたくさんの種類のメールがあるし、メールを追加するのも大変になるからやりたくないよ」 と思ったエンジニアのあなた。 まさにその通りです。私たちも同じ気持ちだったので、最小限の労力でメールプレビューができる仕組みを目指して機能を作りました。 私たちが開発・運用しているマッチングプラットフォームでは、ユーザへの通知やメ…
アバター
こんにちは。エンジニアの塚原(@AkitoTsukahara)です ECサイトや自社サービスを運用していると、サービスを一時停止しなければならないケースがあります。そのためにはサービス形態やインフラ構成に適したメンテナンス運用方法を事前に用意しておく必要があります。ほとんど利用することはありませんが、サービス信頼に関わる仕組みになります。 M&Aクラウドでは2通りの方法でメンテナンスページを表示する仕組みを準備しております。 今回の記事では運用方法とその運用に至った経緯をご紹介させていただきます。 メンテナンスに切り替える方法 切り替え手法 操作ページ メリット デメリット 1 管理ページから…
アバター
Nuxt.js化計画vol.6 第6弾です。 Nuxt.js化計画の概要についてはvol.1を参照ください。 また、過去のシリーズも通してリンクしているのでぜひ御覧ください。 tech.macloud.jp 今回はリプレースではなく、新規機能に伴う新しいページをNuxt.jsで構築しました。 かんたんM&A診断という機能です。 macloud.jp 7つの設問に答えることで売却したい会社・事業に対してマッチする買い手企業をレコメンドするという機能です。 今回はNuxt.js側では初の試みとしてABテストを行っています。 ABテストについては次の記事で紹介しています。 tech.macloud.…
アバター
ログハウス こんにちは、かずへいです。 M&Aクラウドサービスで管理画面に監査ログの記録機能を追加しましたので、その実装方法について紹介致します。 監査ログとは 実際の監査ログ画面 監査ログは監査証跡として、システム監査人が追跡するために、操作内容やそれに伴うデータの移り変わりが時系列に沿って記録されているログのことです。 システム監査人とは、システムが正しく動いているか、問題が合っても追跡できるか等を確認する人で、公民情報システム監査人という資格もあるようです。 cisa.jp.net Laravel Auditingの活用 Laravelでの監査ログの記録にはLaravel Auditin…
アバター
こんにちは。エンジニアの濱田( @hamakou108 )です。 今回は開発チームのバリューの一つ「ナナメウエをいく」について紹介したいと思います。 開発チームのバリュー M&Aクラウドの開発チームでは行動指針として以下の三つのバリューを制定しています。 ナナメウエをいく レバレッジ指向 全員インフルエンサー 「レバレッジ指向」と「全員インフルエンサー」の二つについては過去の記事で紹介していますので、是非そちらも読んでいただければと思います。 tech.macloud.jp tech.macloud.jp 今回は最後の一つ、「ナナメウエをいく」について紹介します。 「ナナメウエをいく」とは? …
アバター
こんにちは。エンジニアの鈴木(@yamotuki)です。 今回はRepositoryパターンの設計方針を維持しながらSQLのN+1問題を起こさないようにする方法論について書いていきます。 前提 レイヤードアーキテクチャについて 弊社では、DDDの考え方を取り入れたレイヤードアーキテクチャが使われています。 GET処理に関わるコードですと、具体的には以下のようなレイヤに別れています。特に今回のお話に関わる部分は太文字にしておきます。 Controlller Scenario Service Query Service 画面やコマンド出力に必要な Data Transfer Object (以下D…
アバター
こんにちは、エンジニアの津崎( https://twitter.com/820zacky )です。 最近は燻製作りにハマっていて、よくベーコンを作っているのですが、 ベーコンの食べ過ぎでいよいよ自分が🐷ちゃんになりそうなフェーズに突入しております。 ぶたちゃん Laravel Meetup Tokyo Vol.13 Online 先日「Laravel Meetup Tokyo Vol.13 Online」というイベントに参加させていただきました。 「Laravel Meetup Tokyo」は、PHPフレームワークLaravelで開発を行うエンジニアを対象としたmeetupです。 今回およそ1…
アバター