MNTSQ Techブログ
https://tech.mntsq.co.jp/
リーガルテック・カンパニー「MNTSQ(モンテスキュー)」のTechブログです。
フィード

財布を気にしたくないのでローカルLLM(Gemma3)にコードを書かせてみた
MNTSQ Techブログ
SREチームマネージャーの藤原です。 LM Studio + Gemma 3 + Cline + VSCodeの環境を自由研究的に試用したので、その報告エントリです。 モチベーション プライベートでコードを書く際も最近はClineなどを使ってLLMを使ってコーディングをすることが徐々に増えてきました。 VSCodeとClineを組み合わせて外部サービスをつかってコードの変更作業を実施する場合、 何かコードの変更を依頼するたびに、財布の中身から少しずつお金が溢(こぼ)れていく感覚があるでしょう。 1回1回の額は少額とはいえ、多数回繰り返すとなかなかの金額になってきます。 会社では予算の範囲内であ…
10日前

MinIOからS3へのデータ移行方法について
MNTSQ Techブログ
はじめに MinIOについて データ移行の要件 データ移行手順 帯域制御の方法 おわりに はじめに MNTSQでSREチームに所属している中岡です。 昨今ではコンテナ技術を使用してアプリケーションを稼働させることが一般的になっています。 コンテナが稼働する環境であれば、理論上はAWSなどのクラウド上でも、オンプレでも、自分の端末でも同じように動作するはずです。 そのため、開発者が自身の端末内に開発環境を構築し、そこで開発を進めた上でAWS上の環境にデプロイするというケースも多いかと思います。 その際、アプリケーションで使用するデータ保持のため、RDBやオブジェクトストレージが必要になります。 …
18日前

GitHub ActionsでECSの夜間停止の仕組みを作ってみた
MNTSQ Techブログ
はじめに 要件の整理 構成 実装例 Stop Env (GitHub Actions) Control ECS (GitHub Actions) Update ECS Clusters (Lambda) おわりに はじめに 弊社MNTSQではAWS上にMNTSQ CLMをはじめとする複数のサービスを展開していますが、サービス運用が軌道に乗るにつれて、社内利用の環境(AWSアカウント)が開発環境、QA環境、ステージング環境と用途によって増えていき、コストの増加が無視できない問題となってきました。そこで、GitHub Actionsを使用して、ECSサービスを夜間停止する仕組みを導入することにより…
24日前

SREチーム内勉強会で入門 継続的デリバリーの読書会を完走しました
MNTSQ Techブログ
こんにちは!! SREチームマネージャーの藤原です。 2024年6月末から2025年2月頭にかけて、入門 継続的デリバリーの読書会を実施し、完走したのでその報告エントリです。 www.oreilly.co.jp 勉強会の進め方 基本的な進め方としては、過去エントリにて解説した通りの進め方に則る形としました。 tech.mntsq.co.jp つまり、 事前に対象とする章を定める 参加者は対象の章を読む 参加者は気になった部分などを引用しながら所感をなどをGoogle Docsに記載する 当日はそれぞれ読んだ内容についてDocs記載内容について説明しながらディスカッションする の形で進めました。…
1ヶ月前

AWS DMSを使ってMySQLの移行をする際に気をつけたいこと7選!
MNTSQ Techブログ
はじめに DMSを使ってMySQLの移行をする際に気をつけたいこと7選! その1. DMSのログを出力するには決まった名前のIAMロールが必要である その2. CDCを有効にするにはソースDBでバイナリログを出す必要がある その3. GENERATEDカラムは移行対象から除外せよ その4. LOB型のカラムがある場合はターゲットDBでNOT NULL制約を一時解除せよ その5. 完全LOBモードの設定が必要か確認せよ その6. AUTO_INCREMENTは手動で移行する必要がある その7. 移行後の検証の設計は慎重に おわりに はじめに データベース移行というのは非常にセンシティブな作業であ…
2ヶ月前

DynamoDBへの書き込みをLambdaを使わずにSlack通知したかった
MNTSQ Techブログ
......のですが、かなり苦戦しました。この記事に辿り着いた人はすでにハマっている、もしくはこれからハマる運命(さだめ)にある人も多いと思うので、そのような人の助けになればと思い、記事にして残しておきます。 結論からお伝えすると、Lambdaを使わずに通知を行うことは可能ですが、設定は少し複雑かなという印象でした。 しかし、一度設定出来てしまえば、同じようなことをしたい時の実装コストをグッと抑えられる、とても良い仕組みだと思います。 構成について この構成のメリット この構成のデメリット AWS Chatbotの認証を行う terraformでデプロイしてみる SNS -> Chatbot …
3ヶ月前

Autifyを用いたテスト自動化
MNTSQ Techブログ
こんにちは。MNTSQ(モンテスキュー)株式会社でQAエンジニアをしている坂本です。 今回はソフトウェアテスト Advent Calendar 2024の場をお借りして、 弊社の自動テスト構築過程をご紹介します。 QAメンバー4名だけでなく、PdMやSREにもご協力頂きながら進めており、 2025年1月からの稼働に向けた準備が大詰めの段階です。 品質と開発スピードの両立を目指したコラボレーションの様子が少しでも伝わればうれしいです。 テスト自動化の目的 MNTSQ社ではアジャイル開発を行っており、製品のリリースサイクルごとに新規開発機能のテストと、既存機能全体のリグレッションテストを実施してい…
3ヶ月前

Kaigi on Rails 2024 参加記
MNTSQ Techブログ
こんにちは、MNTSQ でバックエンドエンジニアをやっております河久保です。 先日 Kaigi on Rails 2024 に参加してきたので、参加記をしたためます。 Kaigi on Rails は昨年に続き2回目の参加となります。 MNTSQ もアプリケーションのバックエンドは Ruby on Rails で実装されており、昨年に続き今年もスポンサーとして手を挙げさせていただきました。 個人としてプロポーザルを出したことや、担当しているシステムのより深いところまで触れる機会が増えたことで、昨年より主体的にカンファレンスに関われたと実感しています。 スポンサーボード 今回は以下の講演を聴講し…
5ヶ月前

「Datadog Summit Tokyo 2024」参加レポート
MNTSQ Techブログ
みなさんこんにちは、SREチームメンバーの中岡です。 2024年10月16日に開催された「Datadog Summit Tokyo」に参加しましたので、そのレポートをお届けしたいと思います。 DatadogはSaaSで提供されている、クラウドアプリケーションのためのモニタリングとセキュリティプラットフォームです。 弊社サービスの監視にもDatadogを使用しており、SREチームで取り組んでいるモニタリング改善の参考になればと思い、参加しました。 イベントの内容 Datadog Summit Tokyo Datadog Summitが東京で開催されるのは2019年以来、5年ぶりの開催とのこと。 …
5ヶ月前

【AWS】IAMインラインポリシーのサイズ制限でハマった話
MNTSQ Techブログ
備忘録として残しておきます。 こんな感じで、IAMユーザーにStatement AとStatement Bを付与するインラインポリシーがあり、このインラインポリシーにStatement Cを追加しようとしました。 ところが、コードを変更してterraform applyをかけたところ、「LimitExceeded: Maximum policy size of 2048 bytes exceeded」と怒られてしまいました。 │ Error: putting IAM User (****) Policy (****): operation error IAM: PutUserPolicy, h…
6ヶ月前

生成AIの出力JSONをunpretty-printしてトークン節約する
MNTSQ Techブログ
こんにちは、MNTSQでエンジニアをやっている平田です。 ありがたいことに生成AI関連のイベントでLTする機会を何度かいただいており、その発表資料の小ネタについて嬉しいコメントをいただきましたので、記事にすることにしました。 トークン節約の方法考えてたら、ぴったりのもの見つけた。JSON を unpretty-print して、改行と空白を消す方法めちゃめちゃよい。https://t.co/hGCW8AT9eL— Yuto (@YutoY3629) September 4, 2024 はじめに プロダクトで生成AIを活用する際、トークン数(特に出力)の節約は重要です。 その理由は主に次のような…
6ヶ月前

S3のs3:ListBucketのプレフィックス指定で少し時間を溶かした話
MNTSQ Techブログ
こんにちは! SREチームマネージャーの藤原です。 今回はライトな話題として、s3:ListBucketのプレフィックス指定で時間を無駄にしたお話をしたいと思います。 よくあるs3リソースへのアクセス用ポリシー 特定のS3バケット内オブジェクトへの書き込み、読み込み、一覧表示としたい場合以下のようなIAMポリシーを作成することがよくあるでしょう。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ],…
7ヶ月前

「生成AI Conf 第7回勉強会」の登壇レポート
MNTSQ Techブログ
こんにちは、MNTSQでエンジニアをやっている平田です。 先日、「生成AI時代のリーガルテック」という題目でお話させていただきました。 generative-ai-conf.connpass.com 合計240名の方にご参加いただいたとのことで、ご視聴いただいた方々、ありがとうございました。 本稿で簡単に内容を紹介させていただきます。 発表資料 speakerdeck.com パネルディスカッション テーマ1: リーガルを扱う上で難しいこと/それに対して工夫していること リーガルテック業界全体でいえば弁護士法72条との関係を取り上げられることが多いですが、MNTSQはサービスの性質上、弁護士法…
8ヶ月前

ChatGPTとPydanticでかんたん契約書解析
MNTSQ Techブログ
こんにちは、MNTSQでエンジニアをやっている平田です。 MNTSQでは自然言語処理を使って契約書を解析したり検索したりする機能を開発しています。 契約書解析には、次のようなタスクがあります。 秘密保持契約等の契約類型に分類 契約締結日や契約当事者等の基本情報を抽出 条項(第1条, 第2条, ...)単位で分解 本稿では、これらの契約書解析タスクをGPT-4oに解かせてどんな結果になるか見てみます。 ざっくりやり方 GPT-4oのAPIを呼び出すところ ここではAzure OpenAIのGPT-4oを使います。Microsoftのサンプルコードほぼそのままですが、一応貼り付けておきます。 fr…
10ヶ月前

RubyKaigiに初めて参加する方へ届けたい、2回目参加者が送る Tips と心構え
MNTSQ Techブログ
こんにちは。 すべての合意をフェアにしたいMNTSQ(もんてすきゅー)のJessie (@Jessica_nao_) です。 仕事では、Ruby on Rails を"利用"させていただき、法務業務に利用されるSaaS Webアプリの開発を行っています。 RubyKaigi2024が間も無く開催されますね! 土日から沖縄入りされている方の投稿がTwitterに流れてきており、既に私の気持ちもかなり高まってきています✈️ この記事では、「今回RubyKaigi に初めて参加するぞ!」という方に向けて、2023年に初めてRubyKaigiに参加した私が、知っておくと嬉しいと思うTipsやRubyK…
1年前

チーム内勉強会の進め方事例
MNTSQ Techブログ
おはようございます!こんにちは!場合によってはこんばんわ! SREチームマネージャーの藤原です。 今年の3月からSREチームの中で、勉強会を定期的に実施するようになりました。 本エントリでは勉強会を開催するにあたって考えたことと、実際の進め方についての事例解説です。 勉強会を通じて実現したいことの説明から、テーマ設定、効果最大化のための開催形態と頻度、現時点(2024/4・5時点)の結果について解説しています。 勉強会を通じて実現したいこと チーム内勉強会を通じて実現したいこととして、以下を設定していました。 チーム・個人としてのレベルアップ 積極的な議論への参加 相互理解 チームとしての目線…
1年前

もし「GitHub Copilot」を現役弁護士が使ったら?
MNTSQ Techブログ
こんにちは。GitHub Copilotを先日初めて触って、感銘を受けたMNTSQ代表の板谷です。MNTSQの代表をしておりますが、現役の弁護士でもあります。 なぜ私が、GitHub Copilotに感銘を受けたかというと、「プログラミングの LLM による進化」は、契約という言語をコーディングするためにもドンピシャで使えそうだと感じたからです。 例えば、GitHub Copilot では、自分の過去のコードを参照して、最適なコードをサジェストしてくれます。 これは、契約に関わるすべてのビジネスパーソンが求めていたものです!契約の 99.9%が過去のコードの使い回しであるにもかかわらず、毎回ゼ…
1年前

ヘルプデスク業務を楽にするためにSlackとGitHub Projectsを同期するヘルプデスクツールを自作した
MNTSQ Techブログ
ヘルプデスク業務を楽にするためのツールを作成した話。GitHub ProjectのItemとSlackを双方向同期したり、Azure OpenAI等を利用して効率化したりしてます。
1年前

LUKEのEntitySpanClassificationによる固有表現抽出
MNTSQ Techブログ
はじめに こんにちは、MNTSQ(モンテスキュー)のアルゴリズムエンジニアの清水です。本記事では事前学習済み言語モデルの一つであるLUKEを用いた固有表現抽出の実装方法について紹介します。 LUKEとは LUKEは、LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attentionにおいて提案された言語モデルです。LUKEは、単語とエンティティの文脈付きベクトルを出力する知識拡張型(knowledge-enhanced)の言語モデルであることが大きな特徴です。単語とエンティティの双方を独立したトーク…
2年前

もし「リーダブルコード」を弁護士が読んだら?
MNTSQ Techブログ
こんにちは。「リーダブルコード」を先月読破して、感銘を受けた弁護士の人です。 なにに感銘を受けたかというと、「エンジニアが高級言語を効率的にコーディングするための工夫」は、契約という言語をコーディングするために援用できることがとても多いということです。 例えば、リーダブルコードは「関数には空虚な名前(tmpとかretvalとか)でなく、エンティティの実体に即した名前をつけよう!」と提案しています。 これめっちゃわかります!!!なぜなら、契約言語では当事者というクラスの表現のために「甲」「乙」という定義を未だに使います。そして、甲と乙を逆に書いてしまったままReviewを通過することが実際によく…
2年前

崩れたメールの扱いかた 〜エンタープライズSaaSの現場から
MNTSQ Techブログ
開発しているシステムの.NET バージョンを4.5にしたらメール件名が文字化けしたので、エンコードを2回するコードを書いた全世界100万のソフトウェアエンジニアの皆さん、こんにちは。 MNTSQ株式会社でバックエンドエンジニアをしている沼井です。 弊社が提供しているSaaSである「MNTSQ CLM」は、多数のエンタープライズ企業へ導入されています。その結果、契約書はもちろん、それに付随する多くのドキュメントをデータとして扱う必要があります。 そのドキュメントにはメールも含まれており、メールは企業の(契約をはじめとする)業務ナレッジを含む重要な資産となります。 そのため、MNTSQではこれから…
2年前

Refurbを使ったPythonの静的コードレビュー
MNTSQ Techブログ
はじめに Pythonを対象とした静的型チェックツールとしてmypyはよく知られています。静的型チェックを通じてプログラマーはより安全にコードを記述でき、安全にコードが記述できることで最終的にはソフトウェア開発の効率をより高めることができます。もちろん初期的な導入工数とCIパイプライン等での追加の時間的コストは発生するものの、それ以上の複利的な効果が期待できます。 静的型チェックよりも更に込み入った構文上の改良点や、未使用変数などの抽出を行ってくれるツールとしてLinterがあります。pylint、flake8もLinterの一種としてカテゴライズされます。 mypyは静的解析の過程でAST(…
2年前

Ruby on RailsでNTLM over HTTPする
MNTSQ Techブログ
このブログ投稿は、Ruby on RailsでNTLM認証を実装する必要が出たので、その対応と追加調査の記録である。 NTLMにはv1とv2が存在するが、このブログで扱うのは主にv1である。 プログラマも歩けばNTLMにあたるとはよく言ったもので、この記事を見ているあなたもおそらくうっかりNTLM対応をすることになったITエンジニアの一人だろう。そんなあなたの一助になれば幸いである。 NTLMとは NTLM(NT LAN Manager)とは、チャレンジ/レスポンス方式を使う認証方式の1つである。前世代にLM(LAN Manager)認証という認証プロトコルがあり、その後継にあたる。SMBを介…
2年前

組織IssueをGitHubで管理している弊社課題の見える化実験。或いは情報爆発問題への一考
MNTSQ Techブログ
組織の情報爆発 突然ですが組織で働くすべての皆さん、所属組織のルールや方針、意思決定やその背後の理由についてどの程度把握されているでしょうか?突然理由も知らされず組織ルールや方針が更新されたり、日々の仕事において必要な承認や確認の取得に時間がかかっていないでしょうか。 MNTSQでは、 (センシティブな個人情報を除いて)組織の職位やロールによらず誰もがアクセスできるようにする そのためにドキュメント駆動で意思決定や相談記録を残し、誰もが非同期でそれらにキャッチアップしながら賛否や新案を提案できる GitHubのIssue機能を介して、ゴミの分別ルールからビジョンレベルの意思決定まで誰もが発議で…
3年前

MNTSQのSlackに住まうbot - Peer-to-Peerフィードバック
MNTSQ Techブログ
新しい仲間 前回はHot Docsというbotを紹介した。Hot Docsは組織拡大に伴う情報爆発において、情報にattentionをつける仕組みだ。 tech.mntsq.co.jp 今回紹介するのは、Peer-to-Peerフィードバックを促すbotだ。 Peer-to-Peerフィードバックとは Peer-to-Peerフィードバックは、個人成長やチーム開発を目的として個人から個人へ行うフィードバックである。Peer-to-Peerフィードバックの効果や方法についてはGitLabの360 Feedbackがより参考になる。 about.gitlab.com 行為や責任の所在を明確にするた…
3年前

ノイズが多いテキストを対象にした正規表現を書きやすくするPythonモジュール regex
MNTSQ Techブログ
MNTSQ(モンテスキュー)という契約書管理のSaaS製品を開発する会社で、 アルゴリズムエンジニアをしている坂本です。 契約書に書かれた情報を自動で抽出する仕組みを作っています。 概要 正規表現とはなにか 正規表現を書きにくい、中ボス的なテキストが存在する regexモジュールのFuzzy match機能を使って、楽に中ボスを倒す Fuzzy matchの使用例 裏話 実は、採用ブログも兼ねています この記事を書いた人 概要 私も非エンジニア出身であるため、Techブログではあるものの、 幅広い方に読んでいただきたいと思いました。 このブログの内容をざっくり図解すると、こんな内容を扱います。…
3年前

MNTSQの検索周りの構成の変遷
MNTSQ Techブログ
MNTSQ(モンテスキュー)株式会社で検索エンジニアをやっている溝口です。 MNTSQはMNTSQ CLM(ちょっと前までMNTSQ for Enterprise)という数十万件を超えるような契約書を管理するプロダクトを提供しており、以下のような検索機能を提供しています。 https://speakerdeck.com/mntsq/mntsq-careersdeck?slide=12 (公開時点) 今年の4月で入社してから2年が経ち、入社してからやってきたことの振り返りも兼ねて今回は検索処理周辺のコンポーネントの変遷をまとめてみました。 最初期(2020/08-2021/07) Index s…
3年前

突撃!隣の開発環境!! MNTSQ エディタ・ターミナルエミュレータ編
MNTSQ Techブログ
こんにちは、MNTSQ(モンテスキュー)でSREをやっている中原です。 前回(?)、 突撃!隣のPCデスク!! MNTSQ キーボード・マウス編というタイトルでブログを書かかせてもらいました。社内外から(特にエンターキーについて)大変反響をいただきうれしいなぁという気持ちでいっぱいです。 開発者がこだわるものというのは、そのこだわりの強さ故に争いを生むことがあります。時に「宗教戦争」とも称されるその争いのテーマとしては、前回取り上げたキーボードの他、ブラウザやOSなどもあげられようかと思います。 今回は、そんな「宗教戦争」になりがちなテーマの一つである「きのこたけのk*1エディタとターミナルエ…
3年前

【実践】テックブログの締切をカッコよく先延ばしする方法
MNTSQ Techブログ
書き出し MNTSQ(モンテスキュー)株式会社でプロダクトマネージャーをしています、野中と申します。 この記事を読んでいる貴方様も、きっと同じIT業界の住人なのではないでしょうか。 さて、IT系の、しかも社員エンジニアの方々(いちおう私含む)が背負う宿命といえばーーそう、テックブログの執筆、ですね。 昨今、優秀なエンジニアを採用したい企業が芋洗い的にごった返しており、「なんとかウチの良さをアピールしなければ!情報を発信するんだよ!当番制でテックブログ書こうよ!」というムーヴもすっかり業界に定着したように思えます。 もちろん弊社もごった返す芋のひとつですので、この辺り手を抜くわけにはいきません。…
3年前