DTダイナミクス テックブログ
https://techblog.dt-dynamics.com/
DTダイナミクス テックブログ
フィード

BackstopJSで手軽にUI変更の差分を確認してみる
DTダイナミクス テックブログ
DTダイナミクスで板金・溶接Webの開発をしている田門です。 主に板金・板金溶接サービスのフロントエンドを担当しています。 今日は、Visual Regression Test(以下VRT)ができるBackstopJSを使って、開発中画面の変更点を一目で把握できるか試してみました。 VRTを試した経緯 BackstopJSで修正前後の差分を確認してみる 導入の手順 テストの実行 結果 おわりに VRTを試した経緯 meviyを使用して、部品が実際にユーザーの元へ届くまでのおおまかなフローは下記になります。 CADファイルをアップロードしプロジェクトを作成する プロジェクトを3DViewer画面…
4日前

GitHub Actions ワークフロー実装の小技7選
DTダイナミクス テックブログ
meviy形状処理チームの佐藤智哉です。 形状認識アルゴリズムを自動テストするCI構築を担当しています。 その過程で得たGitHub Actionsのtipsの紹介です。 1. まずworkflow_dispatchから実装する 2. コンテキストを利用して適切なrun-name:をつける 3. continue-on-error:とif:キーを用いてステップの中断・継続を柔軟に制御する 4. データ共有にaction/upload-artifactを利用する 5. テストレポートはさくっとSummaryに出力しよう 6. $GITHUB_ENVを使うか$GITHUB_OUTPUTを使うか 7…
10日前

対立を生まない、チームを成長させる「こだわり」とは
DTダイナミクス テックブログ
はじめまして 技術じゃないタイトルを開いてくださり、ありがとうございます! はじめましての方は、はじめまして。ご存じの方は、こんにちは。 DTダイナミクスでマネジメントを担当している渡邉です。 もともとエンジニアとして働いていましたが、すっかり組織開発に魅了され、 現在はマネジメントや組織開発にどっぷり浸かっています。 そんな私が、テックブログでも組織開発やマネジメントに関する話題を お届けしようと思います。どうぞよろしくお願いいたします。 エンジニアとこだわり ところで、エンジニアの皆さんは、「こだわり」という言葉にどんなイメージを持っていますか? 自分の技術やプロダクトに対する情熱、あるい…
1ヶ月前

勉強会:『GopherのためのCLIツール開発』最新事情 LTに参加してきました
DTダイナミクス テックブログ
こんにちはid:bikun_bikunです。 最近はGoからちょっと遠ざかっていたのですが、面白そうな勉強会を発見し参加してきました。 勉強会: https://findy.connpass.com/event/362163/findy.connpass.com LT会で1つの発表は5分程度でしたが、CLIに特化したお話でなかなか楽しい勉強会でした。 発表のアーカイブ、資料については上記イベントページからリンクを辿れるためそちらをご参照いただければと思います。 下記それぞれの発表で思ったことなどをまとめていきたいと思います。 それCLIフレームワークがなくてもできるよ 発表者:kuniwakさ…
2ヶ月前

GitHub Actionsで利用するアクションのバージョンを指定する際に意識すべきこと
DTダイナミクス テックブログ
はじめに DTダイナミクスで板金Webの開発をしている森口です。 今回は少し前に話題となっていた脆弱性についての話を取り上げ、そこから得られる教訓をまとめていきたいと思います。 皆さんはGitHub Actionsで外部のアクションを利用する際、バージョンをどのように設定していますか? 私は、なんの疑いもなく以下のように設定していました。 uses: actions/checkout@v3 しかし、この設定はセキュリティ上のリスクを孕んでいます。 今回取り上げる脆弱性の内容を理解してからは以下のように設定することを心がけるようになりました。 uses: actions/checkout@{コミ…
2ヶ月前

SemanticDB を利用して、ソースコードから依存関係を可視化する
DTダイナミクス テックブログ
こんにちは、KAJIです。 本記事では、SemanticDBを利用してソースコードよりシステムの依存関係を把握する方法を紹介します。 背景 | それはどこにでもよくある、開発の現場での困りごと プロダクト開発では、機能追加しリリースした後はフィードバックを元に改善したりなど、今あるものをエンハンスしていくことが求められます。 チームのアウトプットを最大化するためにも、機能の目的や設計内容、およびその意図などをチームの皆と共有できるよう、 プロダクトの開発と合わせてドキュメンテーションが重要になります。 言わずもがなですが、ドキュメントがないシステムは理解が困難であり、 何がどう動いているのか把…
2ヶ月前

幾何計算って何?(内積編)
DTダイナミクス テックブログ
はじめに こんにちは、meviyのPMIチームで開発をしております、横田です。 前回はPMIチームの紹介記事を書かせていただきましたが、その中で、幾何計算を扱うのが特徴のチームという話をしました。 ただ「幾何計算ってなんだ?」という方が多いのでは、と思いましたので、実際に使われている処理を例示しつつ、どんな内容か紹介していければと思います。 今回は、その中で「内積」の活用例についてご紹介しようと思います。 内積とは? 2つのベクトルAとBに対して、そのなす角度がθの時、内積は下記のように定義されます。 この内積の計算結果の値(特に符号)は、「2つのベクトルがどれだけ同じ方向を向いているか」を測…
3ヶ月前

Playアプリのconf設定をシュッと上書きする方法
DTダイナミクス テックブログ
はじめに こんにちは、meviyの切削Webチームの小平です。 最近、Play Frameworkアプリの設定を切り替える方法について考える機会がありました。今回はその際に使ったちょっとした工夫をご紹介します。 背景 ある機能をサーバーAから、新設したサーバーBに切り出す構成変更を行いました。 サーバーAは多数の処理を抱えており、スペックや台数の調整が難しくなっていたため、特定機能をサーバーBに移すことでシステム構成を整理しました。 ロジック自体に変更はありませんでしたが、システム構成の切り替えをする際は万が一に備えて「切り戻し」の手段を用意しておくと安心です。 「問題があればすぐにコードを修…
4ヶ月前

Rustで「組み合わせ」をつくるのに使ってみたいメソッド
DTダイナミクス テックブログ
はじめに 形状処理チーム柳野です。 突然ですが、「任意の組み合わせのパターンで○する」のような処理は、形状処理に限らず多くの分野で必要になると思います。 例えば板金の形状認識の分野では、「面と面の組み合わせ」を条件と照らし合わせて、そのモデルが板部分(Wall)、曲げ部分(Bend)なのかを判定したりしています。 そこで今回は、形状処理チームではリモデルの開発言語として用いているRustで「組み合わせ」の処理を記述するのに役立ちそうなメソッドを学んだので紹介したいと思います。 板金の形状認識については以下ご覧ください。 techblog.dt-dynamics.com 形状処理分野でのRust…
4ヶ月前

Chrome拡張機能をバイブコーディングで作ってみたお話
DTダイナミクス テックブログ
はじめに バイブコーディングとはなんぞや? 作ったもの紹介 概要 技術スタック デモ 開発ステップ まとめ 最後に はじめに DTダイナミクスで板金・溶接Webの開発をしている森口です。 昨今話題となっているバイブコーディング。 長期休暇が始まり、まとまった時間が取れましたので、バイブコーディングを体験してみました。 社内の用語を検索するchrome拡張機能を作りたいと思っていたので、今回はこれを題材にバイブコーディングを体験していこうと思います! バイブコーディングとはなんぞや? バイブコーディングを一言で言うと、「コーディングの大部分をAIに任せちゃおう!」というものです。 AIとチャット…
5ヶ月前

ECSタスクをSQSのコンシューマとしてイベント駆動で起動させよう②
DTダイナミクス テックブログ
はじめに DTダイナミクスでSREセクションのテックリードをしている霜鳥です。 前回の記事ではSQSのメッセージをEventBridge Pipesを経由してECSタスクで処理するという話題を取り扱いました。 しかしそれと同時にタスクの異常終了の検知やリトライができないというこのアーキテクチャの課題があることも述べました。 今回はその解決編としてEventBridge PipesからStep Functions(SFn)を経由してECSタスクを起動する方法について書いていきます。 その他、霜鳥が書いた過去の記事はこちら。 Seekable OCIでECSのタスク起動速度をお手軽に改善しよう C…
5ヶ月前

ScalaのOptionってなんやねん
DTダイナミクス テックブログ
ごあいさつ こんにちは。meviyのGrowthチームで開発している林です。 もともとJava/Kotlinを利用して開発しているところからScalaを利用した開発に飛び込んでまずハマったOption型について話してみようかと思います。 Option型とは そもそもOption型ってなんなんでしょうか? Wikipediaによると以下のようなものです。 プログラミング言語と型理論において、Option型(英語: Option type)またはMaybe型(英語: Maybe type)は存在しない可能性のある値をカプセル化して表す多相型である。 結果が返ってくるかわからない、使うときに中身空か…
6ヶ月前

Scalaの.copyについて
DTダイナミクス テックブログ
ごあいさつ こんにちは。meviyのWebシステムを開発している谷平です。 Scalaの.copyはケースクラスにおいて便利な機能の1つです。 本記事では、.copyの便利な点やJavaとの比較、ユニットテストでの活用例を紹介します。 .copyの便利な点 .copyは、オブジェクトを新しく作成しながら、特定のフィールドだけを変更できる機能です。 ケースクラスを用いると、手軽に値の一部を変更した新しいインスタンスを生成できます。 使用例 case class User(name: String, age: Int) val user1 = User("Alice", 25) val user2…
6ヶ月前

【meviy 開発チーム紹介】板金・溶接Webチーム
DTダイナミクス テックブログ
はじめに こんにちは、meviyの板金・溶接Webチームの小平です。今回は私たちのチームについての取り組みや特徴をご紹介します。 板金・溶接Webチームとは まず、私たちのチーム名にもある「板金・溶接」について簡単に説明します。 「板金」とは簡単にいうと一枚の金属の板を切ったり、曲げたり、穴あけをして作成される部品を指します。例えば、装置の外装やカバーなどの多くは板金部品で設計されています。 また、これらの板金部品同士を溶接で組み合わせ、一体化させたものが「板金溶接」になります。1枚の板からは製作できないような、複雑な形状の部品も製作できます。例えば、L字に曲げられた箇所に対して支えになる板を…
6ヶ月前

meviy 2D業務システム開発チームのご紹介
DTダイナミクス テックブログ
皆さんはじめまして。 2025年 1月 1日より株式会社DTダイナミクス にJOINしました。 id:bikun_bikun といいます。 入社エントリーもまだ出していませんが、本記事では現在私が担当しているmeviy 2Dの業務システム開発チームについてご紹介します。 担当システムについて meviy 2D は2D図面のアップロードを行い、簡単な依頼内容を入力することで見積を取ることのできるサービスです。 見積完了したものは部品の型番が発行されるため、misumiのサイトで注文することができます。 私が担当しているのはmeviy 2Dで見積りをいただいた後の工程である検図などの業務を行いやす…
6ヶ月前

【meviy 開発チーム紹介】切削Webチーム
DTダイナミクス テックブログ
はじめに meviyの切削Webチームに所属しています。高橋と申します。テックリードをしています。 PMIチームと兼任という形になっており、私のチームメンバーの横田さんがPMIチーム紹介記事を書いております。ぜひ見ていただければと思います。 techblog.dt-dynamics.com 切削Webチームとは 切削Webチームと書きましたが、Milling&Turningを略してM&Tチームと呼ばれることが多いです。 Millingは切削加工のことで工作物を固定、工具を回転させて削っていく加工方法です。サイコロのような6面を持つ部品で角物とも呼ばれています。 Turningは旋盤加工のことで…
6ヶ月前

ECSタスクをSQSのコンシューマとしてイベント駆動で起動させよう①
DTダイナミクス テックブログ
はじめに DTダイナミクスでSREセクションのテックリードをしている霜鳥です。 今回はAmazon SQSのメッセージをLambdaよりも柔軟なワークロードに対応でき、 処理時間も長くとれるECSタスクで処理させよう!という話題で全2回を予定しております。 その他、霜鳥が書いた過去の記事はこちら。 Seekable OCIでECSのタスク起動速度をお手軽に改善しよう CodeBuild-hosted GitHub Actions runner使ってみた①〜紹介編〜 CodeBuild-hosted GitHub Actions runner使ってみた②〜実践編〜 入社エントリ〜SREしもとり〜…
6ヶ月前

Seekable OCIでECSのタスク起動速度をお手軽に改善しよう
DTダイナミクス テックブログ
はじめに DTダイナミクスでSREセクションのテックリードをしている霜鳥です。 今回はECSタスクの起動速度を改善するのにSeekable OCI(SOCI)が非常にお手軽で効果が抜群だったのでご紹介していきます! その他、霜鳥が書いた過去の記事はこちら。 CodeBuild-hosted GitHub Actions runner使ってみた①〜紹介編〜 CodeBuild-hosted GitHub Actions runner使ってみた②〜実践編〜 入社エントリ〜SREしもとり〜 Datadog Summit Tokyo 2024参加レポ Seekable OCIとは 詳細は下記ドキュメン…
6ヶ月前

CodeBuild-hosted GitHub Actions runner使ってみた②〜実践編〜
DTダイナミクス テックブログ
はじめに DTダイナミクスでSREセクションのテックリードをしている霜鳥です。 この記事はCodeBuild-hosted GitHub Actions runner使ってみた①〜紹介編〜の続編です。 今回は実際にCodeBuildをGitHub Actions(以下GHA)のself-hosted runnerとして設定してGHAから利用する方法をTerraformのコードを交えながらご紹介します。 その他、霜鳥が書いた過去の記事はこちら。 入社エントリ〜SREしもとり〜 Datadog Summit Tokyo 2024参加レポ はじめに 実装 前提 main.tf variables モ…
6ヶ月前

CodeBuild-hosted GitHub Actions runner使ってみた①〜紹介編〜
DTダイナミクス テックブログ
はじめに DTダイナミクスでSREセクションのテックリードをしている霜鳥です。 以前の記事はこちら↓ 入社エントリ〜SREしもとり〜 Datadog Summit Tokyo 2024参加レポ TL;DR 2024年4月24日にAWS CodeBuildがGitHub Actions(以下GHA)のランナーに対応したことを発表しました。 cf: AWS CodeBuild がマネージド型の GitHub Action ランナーのサポートを開始 CI/CDの選択肢を広げるこのサービスを使ってみたので今回と次回の2回を通して紹介します。 フルマネージドx従量課金という GitHub hosted …
6ヶ月前

meviy Finder開発チーム紹介
DTダイナミクス テックブログ
はじめに meviy Finder開発チームに所属する劉(リュウ)です。 主にバックエンドの開発を担当しています。今回は、meviy Finder開発チームについてご紹介します。 業務内容 meviy Finderは、AIを活用した2D図面データ検索プラットフォームです。 図面の寸法・材質などの情報を、AIが自動解析しデータを登録 AI解析で追加されたキーワードを元に蓄積された図面データを簡単に検索可能 AIによる類似図面検索で、過去の図面探しの作業時間を大幅に削減 これにより、従来手作業で行っていた図面管理の効率化を実現しています。 メンバー構成 プロジェクトマネージャー1名 テックリード1…
6ヶ月前

【meviy 開発チーム紹介】PMIチーム
DTダイナミクス テックブログ
はじめに こんにちは、meviyのPMIチームで開発をしております、横田です。今回は私の所属するPMIチームについて、チームの概要や業務内容について紹介します。 チーム概要 PMIチームは、meviyのPMI表示に関する機能を中心に、3D Viewerに関連する開発をしています。 PMIとは、製品製造情報(Product Manufacturing Information) の略称になります。 一般的に、加工部品寸法や公差の情報は、2D図面に下記のように記載されます。 PMIチームは、主にこれらの情報を3Dモデル上で表現するための機能を開発するチームです。 2025年3月現在、リーダー1名/メ…
6ヶ月前

【meviy 開発チーム紹介】SREチーム
DTダイナミクス テックブログ
はじめに こんにちは、SREチームの髙野です。 今回はmeviy開発に携わるチーム紹介というカテゴリーでSREチームについて紹介したいと思います。 メンバー構成 SREチームのメンバー構成は以下の通りです。 リーダー1名 テックリード1名 メンバー4名 メンバーそれぞれがmeviyやmeviy Marketplaceをはじめとするプロダクトのインフラ領域を担っています。 基本はテキストコミュニケーションですが、カジュアルにslackのハドルを使うなど柔軟にコミュニケーションをとっています。 プロフェッショナルでホスピタリティが高く、多趣味でユーモアな人材が集まっているため、質が高くコミュニケー…
6ヶ月前

【meviy 開発チーム紹介】FACommonチーム
DTダイナミクス テックブログ
はじめに こんにちは、共通基盤開発チーム、通称FACommonチームでテックリードを務めている眞神です。 今回はmeviy開発に携わるチーム紹介というカテゴリーでFACommonチームについて紹介したいと思います。 なお、先日入社していただいた張さんも現在FACommonチームに所属しています。 チーム紹介 meviyのWebシステム開発チームには、切削加工や板金加工などの加工方法固有の機能を担当するチームと、加工方法を横断した汎用的な共通機能を担当するチームがあります。その中で、FACommonチームはCommonと付いているように、共通機能の開発・保守運用を担当しています。なお、FAはFa…
7ヶ月前

【meviy 開発チーム紹介】形状処理チーム
DTダイナミクス テックブログ
はじめに meviyの形状処理チームで開発をしております、高橋と申します。 前職では主にバックエンドエンジニアをやっていて、インフラ周りや形状処理の開発もしていました。 今回は私が所属する形状処理チームについて紹介したいと思います。 業務内容 チーム名にもある「形状処理」とは、幾何学的な形状をコンピュータで扱う処理のことです。meviyにまつわる形状処理として、私たちは以下の機能を開発しています。 形状認識:幾何形状を解析して、製造上の意味付けを持った構造化データを抽出する機能 リモデル:製造上必要となる形状の修正を加えた新しいモデルを生成する 製造可否判定:与えられた形状を実際に作ることがで…
7ヶ月前

Scalaのパーサーコンビネーターで四則演算をやってみよう
DTダイナミクス テックブログ
はじめに こんにちは。meviyのWebシステムを開発している大崎です。 プログラミングをしていて、独自に定義した数式のようなものを読み込ませようとして、正規表現などを駆使して何とか実装した、といった経験はありませんか? 私がScalaの中で面白いと思うものの一つに、パーサーコンビネーターがあります。 パーサーコンビネーターは、簡単に言えば小さなパーサーを組み合わせてより複雑なパーサーを作成するためのライブラリです。これにより、複雑な文法解析をシンプルで直感的な方法で行うことができます。 今回は、Scalaのパーサーコンビネーターを使って、文字列で与えられた四則演算を行うプログラムを作成してみ…
7ヶ月前

Scalaのコレクションメソッド .containsと.existsについて
DTダイナミクス テックブログ
ごあいさつ こんにちは。meviyのWebシステムを開発している大崎です。 今回は、Scalaのコレクション内に要素の存在チェックに使われるメソッドについて触れたいと思います。 ごあいさつ 各メソッドの紹介 .contains メソッド .exists メソッド 実装例 .contains メソッドの実装例 .exists メソッドの実装例 数値リストの条件チェック 文字列内に特定の単語が存在するかのチェック 真偽値の確認 内部実装 Javaでの同等の実装 まとめ 終わりに Scalaでコレクションを操作するとき、「該当する要素が存在するか」「特定の条件を満たす要素が存在するか」を確認する場面…
8ヶ月前

ScalaのCollectionの.collectを使って要素をフィルタリング&変換する
DTダイナミクス テックブログ
ごあいさつ こんにちは。meviyのWebシステムを開発しています、大崎です。 今回は、Scalaでコードを書く中でよく使うことになるであろう、コレクションの.collectメソッドについて、その紹介と実装例、Javaとの比較について書いていきたいと思います。 ごあいさつ .collectメソッドのあらまし 実装例 .collectなしでの実装例 .collectを使った実装例 Sealedクラスとの組み合わせ例 Scalaでの実装 Javaでの実装 おまけ まとめ おわりに .collectメソッドのあらまし collectメソッドは、Scalaのコレクションにおいて、特定の条件に一致する要…
10ヶ月前

フロントエンドの基本的なテクニックを解説してみる 〜 ドラッグ&ドロップ
DTダイナミクス テックブログ
こんにちは、切削チームの石川です。 前回に引き続き、フォルダアップロードに絡んだフロントエンドのテクニックの解説を行います。 今回のテーマはドラッグ&ドロップです。 ドラッグ&ドロップの基本 ドラッグ&ドロップで出てくる用語 ドラッグイベント DataTransfer FileSystemEntry ドラッグ&ドロップでフォルダを扱うサンプルコード 実際に機能を作る場合の観点 まとめ ※前回の記事は以下です。 techblog.dt-dynamics.com ドラッグ&ドロップの基本 ブラウザにおけるドラッグやドロップに関する処理は、HTML Drag and Drop APIを使うことで実装…
10ヶ月前

イベントレポート 〜 社内勉強会
DTダイナミクス テックブログ
こんにちは、切削チームの石川です。 今回は先日行われた社内勉強会の様子をお届けします。 製造業の顧客やサプライヤに関する勉強会を行いました 3回目はプレゼン形式でのグループディスカッション 私のチームで行ったプレゼン 勉強会を通して勉強になったこと、苦労したこと(エンジニア視点) 勉強になったこと 苦労したこと まとめ 製造業の顧客やサプライヤに関する勉強会を行いました DTダイナミクスではmeviyを開発しており、自分たちが関わっているサービスの業界知識を学ぶための勉強会を先日行いました。 装置などで使われる部品を注文するにあたっては、以下の流れで設計や注文が行われます。 メーカーの設計者が…
1年前