Commune Engineer Blog

大規模リファクタリングを加速するためにAPIスナップショットテストを作りました

コミューン株式会社の土佐(@whale9490)です。

私たちは現在、溜まった技術負債を一掃するため、大規模リファクタリングプロジェクトを進行しています。

大規模リファクタリングを安全かつ高速に行うには、できるだけ網羅的な自動テストがあることが望まれます。私たちのバックエンドコードは、E2Eテスト・APIテスト・ユニットテストなど様々なレイヤのテストを持ってはいましたが、それらいずれも網羅的ではありませんでした。

そこで、APIテストを網羅的に書こう、ということに決まったのですが、すべてのAPI(数百エンドポイントあります)に対して手でテストを書いていると、私たちの望む短期間では到底終わらないことがすぐに分かりました。

この問題を解決するため、APIスナップショットテストを作ることにしました。

  • 目指した着地点
  • 方針
  • Jestのスナップショットテスト機能を使う
  • テストデータは、データジェネレータにより自動生成して全テストで共通のものを使う
  • テストのインプットはHTTPリクエストとし、実際のリクエストのパターンを基に自動生成する
  • テストのアウトプットはHTTPレスポンス・DBデータ差分・外部依存モックへのアウトプットとする
  • テストコードは、ts-morphで自動生成する
  • 結果
続きを読む

単純な実装でみんなの負担を減らした話 〜サイトカスタマイズ機能の開発物語〜

こんにちは、Webエンジニアの野川(@chan_naru_way)です。趣味は、Perplexity AIを触ってなんでも知った気持ちになることです。(最近はGensparkも面白い!)とはいっても、回答を鵜呑みにせずに自分の頭で考え続けたい、まだまだAIに使われたくない所存です。

徐々にパソコンのファンの風が心地よく感じる季節になってきました。季節の変わり目なので、みなさん体調に気をつけてくださいね〜。

今回は、Communeで提供している機能のひとつ「カスタムブロック」が、どんな課題を解決するために、どんな判断や開発を経て作られたのかを紹介します。ひとつの事例ですが、私たちの開発の雰囲気が伝われば幸いです。

続きを読む

Google Cloud に機械学習 API をデプロイするとき、Cloud Run と Vertex AI Endpoint のどちらを選ぶべきか?

こんにちは。2024年6月に中途入社した機械学習エンジニアの深澤(@fukkaa1225)です。新しいエキサイティングな環境を毎日楽しんでます!

本記事では機械学習 API をデプロイする際、コストの観点からどのようなサービスを選ぶべきかについて述べたいと思います。

続きを読む

Communeの社内コミュニティのデータを使ってネットワーク分析の基礎を学ぶ

こんにちは、Communeのデータサイエンティストの樋口です!

Communeでは、"あらゆる組織とひとが融け合う未来をつくる"のミッションのもと、組織とひととのつながりを支えるコミュニティサクセスプラットフォーム「Commune」を開発しています。

Communeでは人のつながりを科学し、プロダクトを利用するお客さんが再現性を持って活発なコミュニティを作れるように尽力しています。

本ブログではその取り組みの一環として、表形式よりも人のつながりを柔軟に表現できるネットワークを用いて、オンラインにおけるコミュニケーションパターンの分析を実施したので、記事にしてみました!

Communeのデータを使った具体的な分析事例を元に、ネットワーク分析の基本的な知識を学び、コミュニティサクセスに役立つ洞察を探っていきます。

今回のブログに利用したコードはクエリなどを除き、Gistに公開しているので、併せて参照ください。

続きを読む

【イベントレポート】TypeScript Developers Meetup 〜フロントからバックまでTypeScript〜

はじめに

こんにちは。コミューンDevHRのあらです。 この記事では2024年5月8日(水)、コミューンのオフィスで開催された4社合同イベント「TypeScript Developers Meetup〜フロントからバックまでTypeScript〜」の様子を紹介します。

  • はじめに
  • イベント概要
  • 会場の様子
  • Lightning Talk発表
    • コミューン 角田 武蔵さん「Compiler APIを利用してTypeScriptのAPI型定義からOpenAPI.jsonを作成する」
  • 他社登壇者のみなさんのLT発表
    • ケップル 芹田 悠一郎さん「nullとoptionalとundefind TypeScript統一による型の互換性」
    • X Mile 蛯名 潤さん「TypeScriptでフルスタックな開発体験をとことん追求してみる
    • Helpfeel 秦 友幸さん 「TypeScriptに頼りながら作るバリデーター」
  • 懇親会
  • 最後に
続きを読む

1人目のQAがQAチームの活動を振り返ってみた(2022年7月〜12月編)

はじめに

コミューン株式会社でQAチームのマネージャーをやっている須賀(@kawabeaver)です。

今回の記事は前回の記事の続編で2022年後半の振り返りです。本記事は前回の記事が前提となっていますので、ぜひ前回の記事も読んでみて下さい。

QAエンジニアの方やQAチーム立ち上げを考えている方の参考になれば幸いです。

  • はじめに
  • 今までのおさらい
  • 7月〜9月(オンボーディング体制構築、共通認識作りなど)
    • オンボーディング体制の構築
    • QAチームの方向性の決定
    • 開発者向けにテスト技法の学習資料・試験問題を作成
    • テストの十分性に関する共通認識作り
      • テストの7原則を用いて説明
      • コードカバレッジや機能カバレッジ等の長所、短所の紹介
      • テストの費用対効果の考え方の紹介
      • カバレッジ以外の納得感を醸成しやすくするための工夫の例を簡単に紹介
      • 統計的手法の運用が難しい話を紹介
    • QAチーム内で不具合分析の開始
    • テストケースのレビューをスキップできる運用ルール作成
    • E2Eテスト拡充計画の立案
  • 10月〜12月(イベント登壇、Gherkin記法の活用)
    • イベント登壇
    • Gherkin記法を用いたテストケース作成
  • We are Hiring!
続きを読む

1人目のQAがQAチームの活動を振り返ってみた(2022年1月〜6月編)

コミューン株式会社でQAチームのマネージャーをやっている須賀(@kawabeaver)です。
私が2022年1月に1人目の社員QAエンジニアとして入社してから2年経過し、今ではQAチームのメンバーは私含めて3名になりました。本記事ではQAチームの今までの活動を振り返ってみたいと思います。今回の記事は2022年前半の振り返りです。後日2022年後半や2023年の活動内容も公開する予定です。
QAエンジニアの方やQAチーム立ち上げを考えている方の参考になれば幸いです。

  • 1月〜3月(開発組織に溶け込む)
    • QAエンジニアという職種の紹介
    • 現状の分析、WebチームにおけるQAエンジニアの関わり方の決定
    • Node.jsメジャーバージョンアップ時のテストケース作成
    • 番外編:他職種の活動の紹介
  • 4月〜6月(QAの教育体制構築、E2Eの運用改善など)
    • テストスキル教育体制の構築
      • テストに関する体系的な知識の習得
      • テスト分析の具体的な方法の習得
      • 3ヶ月間のペアテスト分析の実施
    • モバイルチームでのテスト設計、テスト実施
    • E2Eテストの運用負荷軽減、E2Eテストの新規実装
    • バグバッシュの実施
    • ヒヤリハット事例の収集開始
  • おわりに
  • We are Hiring!
続きを読む

ドメイン駆動設計に触れてから2年経ったので、開発者の取り組み方について振り返ってみる

はじめに

こんにちは、コミューンの中でSuccessHubというプロダクトの開発者をしている中野です。

SuccessHubは正式にローンチされてから1年半弱経過しており、開発初期からドメイン駆動設計を基に開発を進めています。この経験を通じて、コードベースのアプローチ以外の部分でも、開発者としての取り組みに関する課題や成功体験が浮かび上がってきました。今回はその一部を振り返りつつお話しできればと思います。(少し抽象的な話になります)

続きを読む

ニアリアルタイムで投稿レコメンドをユーザーに届ける

こんにちは,コミューンで一人機械学習(ML)チームで機械学習エンジニアとして働いている柏木(@asteriam_fp)です.

今年ももうあと少しですね,やり残したことは今年のうちにしたいものですが,僕は最近やっとジムに入会して適度に運動を始めることにしました!運動はメンタルヘルスにも影響があり,心が落ち着いたり,前向きな気持ちになる効果があるそうで,まだそこまでの実感はないですが継続していきたいと思います!

はじめに

本ブログでは,前回のテックブログで紹介した投稿レコメンド機能の初回リリース時の課題であった新着投稿に対しても,ニアリアルタイムでレコメンドを提供できるようにした取り組みの紹介になります.

ただし,今回の取り組みは現状ではベストだと思いますが,理想的な状況ではないので,その辺りも最後に紹介したいと思います.


続きを読む

CTOのポエム新項「徳治主義」

エンジニアである前に人として素晴らしくあれ

わたしは社内のエンジニアメンバーに対して、技術者である前にひとりの人間として素晴らしくあってほしいと切に願っている。社内外問わずたとえスキルが高くても、人を傷つけたり、自己中心であったり、うまくいかないことを他人のせいにしたり、あるいは神経がすり減るようなコミュニケーションを常に要したり、そんな人間と一緒に働きたくないのである。「自分はできているから問題ない」と思うあなたにこそ最後まで読んでほしいのだ。

続きを読む