MNTSQ Techブログ

リーガルテック・カンパニー「MNTSQ(モンテスキュー)」のTechブログです。

ChatGPTとPydanticでかんたん契約書解析

こんにちは、MNTSQでアルゴリズムエンジニアとチームマネージャーをやっている平田です。 MNTSQでは自然言語処理を使って契約書を解析したり検索したりする機能を開発しています。 契約書解析には、次のようなタスクがあります。 秘密保持契約等の契約類型に…

RubyKaigiに初めて参加する方へ届けたい、2回目参加者が送る Tips と心構え

こんにちは。 すべての合意をフェアにしたいMNTSQ(もんてすきゅー)のJessie (@Jessica_nao_) です。 仕事では、Ruby on Rails を"利用"させていただき、法務業務に利用されるSaaS Webアプリの開発を行っています。 RubyKaigi2024が間も無く開催されますね…

チーム内勉強会の進め方事例

おはようございます!こんにちは!場合によってはこんばんわ! SREチームマネージャーの藤原です。 今年の3月からSREチームの中で、勉強会を定期的に実施するようになりました。 本エントリでは勉強会を開催するにあたって考えたことと、実際の進め方についての…

もし「GitHub Copilot」を現役弁護士が使ったら?

こんにちは。GitHub Copilotを先日初めて触って、感銘を受けたMNTSQ代表の板谷です。MNTSQの代表をしておりますが、現役の弁護士でもあります。 なぜ私が、GitHub Copilotに感銘を受けたかというと、「プログラミングの LLM による進化」は、契約という言語…

MNTSQ従業員の相互理解を深める施策「Weekly Sync」の運用裏側をご紹介

MNTSQ従業員の相互理解を深める施策「Weekly Sync」の運用裏側をご紹介

ヘルプデスク業務を楽にするためにSlackとGitHub Projectsを同期するヘルプデスクツールを自作した

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

LUKEのEntitySpanClassificationによる固有表現抽出

はじめに こんにちは、MNTSQ(モンテスキュー)のアルゴリズムエンジニアの清水です。本記事では事前学習済み言語モデルの一つであるLUKEを用いた固有表現抽出の実装方法について紹介します。 LUKEとは LUKEは、LUKE: Deep Contextualized Entity Representa…

もし「リーダブルコード」を弁護士が読んだら?

こんにちは。「リーダブルコード」を先月読破して、感銘を受けた弁護士の人です。 なにに感銘を受けたかというと、「エンジニアが高級言語を効率的にコーディングするための工夫」は、契約という言語をコーディングするために援用できることがとても多いとい…

崩れたメールの扱いかた 〜エンタープライズSaaSの現場から

開発しているシステムの.NET バージョンを4.5にしたらメール件名が文字化けしたので、エンコードを2回するコードを書いた全世界100万のソフトウェアエンジニアの皆さん、こんにちは。 MNTSQ株式会社でバックエンドエンジニアをしている沼井です。 弊社が提供…

Refurbを使ったPythonの静的コードレビュー

はじめに Pythonを対象とした静的型チェックツールとしてmypyはよく知られています。静的型チェックを通じてプログラマーはより安全にコードを記述でき、安全にコードが記述できることで最終的にはソフトウェア開発の効率をより高めることができます。もちろ…

Ruby on RailsでNTLM over HTTPする

このブログ投稿は、Ruby on RailsでNTLM認証を実装する必要が出たので、その対応と追加調査の記録である。 NTLMにはv1とv2が存在するが、このブログで扱うのは主にv1である。 プログラマも歩けばNTLMにあたるとはよく言ったもので、この記事を見ているあなた…

組織IssueをGitHubで管理している弊社課題の見える化実験。或いは情報爆発問題への一考

組織の情報爆発 突然ですが組織で働くすべての皆さん、所属組織のルールや方針、意思決定やその背後の理由についてどの程度把握されているでしょうか?突然理由も知らされず組織ルールや方針が更新されたり、日々の仕事において必要な承認や確認の取得に時間…

MNTSQのSlackに住まうbot - Peer-to-Peerフィードバック

新しい仲間 前回はHot Docsというbotを紹介した。Hot Docsは組織拡大に伴う情報爆発において、情報にattentionをつける仕組みだ。 tech.mntsq.co.jp 今回紹介するのは、Peer-to-Peerフィードバックを促すbotだ。 Peer-to-Peerフィードバックとは Peer-to-Pee…

ノイズが多いテキストを対象にした正規表現を書きやすくするPythonモジュール regex

MNTSQ(モンテスキュー)という契約書管理のSaaS製品を開発する会社で、 アルゴリズムエンジニアをしている坂本です。 契約書に書かれた情報を自動で抽出する仕組みを作っています。 概要 正規表現とはなにか 正規表現を書きにくい、中ボス的なテキストが存在…

MNTSQの検索周りの構成の変遷

MNTSQ(モンテスキュー)株式会社で検索エンジニアをやっている溝口です。 MNTSQはMNTSQ CLM(ちょっと前までMNTSQ for Enterprise)という数十万件を超えるような契約書を管理するプロダクトを提供しており、以下のような検索機能を提供しています。 https://sp…

突撃!隣の開発環境!! MNTSQ エディタ・ターミナルエミュレータ編

こんにちは、MNTSQ(モンテスキュー)でSREをやっている中原です。 前回(?)、 突撃!隣のPCデスク!! MNTSQ キーボード・マウス編というタイトルでブログを書かかせてもらいました。社内外から(特にエンターキーについて)大変反響をいただきうれしいな…

【実践】テックブログの締切をカッコよく先延ばしする方法

書き出し MNTSQ(モンテスキュー)株式会社でプロダクトマネージャーをしています、野中と申します。 この記事を読んでいる貴方様も、きっと同じIT業界の住人なのではないでしょうか。 さて、IT系の、しかも社員エンジニアの方々(いちおう私含む)が背負う…

差分指向テスト(DOT: Difference Oriented Testing)という考え方

はじめに MNTSQ(モンテスキュー)株式会社 フロントエンド担当の安積です。 入社して4ヶ月とちょっと。 コードに取り組もうと入社して、まさに日々格闘しております。 私の後ろの席にはこんなバズ記事書く人や、こんなイカつい記事書く人が座ってまして、そん…

neuralcorefによる共参照解析

はじめに 次の文章をまずは眺めてみてください。 “Chief Executive Tim Cook has jetted into China for talks with government officials as he seeks to clear up a pile of problems in the firm's biggest growth market. Cook is on his first trip to …

MNTSQ CLMの認可の実装

認証認可とワンセットで語られることが多い印象だが、今回話すのは「認可(Authorization)」の話だ。「認証(Authentication)」の話は含まない。 (システムで言う)認可とは、大雑把に言うと「誰が」「何を」「どうすることが」「できる/できない」の要素…

Ubuntu を業務PCで使いつづけて3年が経ちました。 〜Web開発にmacOSじゃなくて大丈夫なのか気になる方へ〜

MNTSQ(モンテスキュー)株式会社 ソフトウェアエンジニアの沼井です。 普段はRailsでのバックエンド開発をしつつ、Elasticsearchによる全文検索処理やインデクシングまわりの開発にも取り組んでいます。 私は現在、 Thinkpad X1 Carbon (2021年版)にUbuntu 20…

MNTSQのSlackに住まうbot - Hot Docs

新しい仲間 前回、MNTSQのSlackにいるいくつかのbotを紹介した。 tech.mntsq.co.jp 今日、そこに新しい仲間が加わったので紹介しよう。その名も "Hot Docs" だ。 Hot Docsとは Hot Docsとは、Google Driveのファイルを再帰的に探索し、短時間にたくさんコメ…

Ruby on Railsをかんたんスピードアップ

こんにちは、MNTSQでサーバーサイドエンジニアのようなものをやっている西村です。今回は比較的簡単にRuby on Railsのアプリを高速化する方法を書いてみようと思います。 内容的にはタイトルのとおり、平易なものが多いのですが、頻度高く見かけるものをまと…

突撃!隣のPCデスク!! MNTSQ キーボード・マウス編

こんにちは、MNTSQ(モンテスキュー)でSREをやっている中原です。しばらくコロナで帰省することができなかったのですが、つい最近久しぶりに帰るとともに、実家に放置してあった自分の車を関東に持ってきました。「これで夢のドライブライフだー!!」と思っ…

Document Analysisのオープンデータについて

はじめに テキスト情報から自然言語処理の機械学習モデルを構築する際には文字列データのみが解析の対象になりますが、文書全体から情報を抽出するモデルを構築する際には、文書レイアウト情報が重要になります。 通常の自然言語処理とは異なり、文書レイア…

MNTSQのSlackに住まうbotたち

いろいろなbot 組織をスケールさせる上でコーポレートエンジニアリングは非常に重要である。MNTSQではissue-drivenで誰でも気軽にbotを作ることができる。現在MNTSQのSlackにいるいくつかのbotを紹介しよう。 施錠と消灯を催促するbot 観葉植物の水やりを催…

【MNTSQxUbie】Vertical AI Startup Meetup を開催しました

こんにちは。MNTSQの堅山です。 去る8/10に、Ubieさんと共同で「Vertical AI Startup Meetup」というイベントを開催しました。 connpass.com 弊社MNTSQはいわゆるリーガルテックという領域で、企業法務に携わる方々を相手にプロダクトを提供しています。 Ubi…

structlogを用いた構造化ログの導入

Webアプリケーションやバッチジョブを運用していくにあたって、エラーの影響範囲の調査のため、APIへのアクセスIDやバッチのジョブIDのついたログは欠かせないです。 このような類のIDをログとして残す場合には、そのIDの影響下にある全部の処理に対して該当…

Pythonで省メモリに大量の文字列を扱う工夫

たくさんの文字列(や離散的な符号列)をメモリに載せないといけないんだけど、いろんな制約があって通常のList[str]では載らない…ということありませんか?(まぁあんまりなさそうですね) たまたまそういうことがあったので、その際に検討した内容をまとめ…

身近なデータで30時間クッキング:Slackのログを解析してみる編

入社して3ヶ月が経った。事業戦略・組織文化・プロダクトに対する解像度はだいぶ高まった実感があるが、実はまだメンバー1人1人のことを良く知らない。 そうだ、Slackのログを分析しよう。 当社では多くのコミュニケーションをSlackで行う。また、情報のopen…