MNTSQ Techブログ

https://tech.mntsq.co.jp/

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

フィード

記事のアイキャッチ画像
もし「GitHub Copilot」を現役弁護士が使ったら?
MNTSQ Techブログ
こんにちは。GitHub Copilotを先日初めて触って、感銘を受けたMNTSQ代表の板谷です。MNTSQの代表をしておりますが、現役の弁護士でもあります。 なぜ私が、GitHub Copilotに感銘を受けたかというと、「プログラミングの LLM による進化」は、契約という言語をコーディングするためにもドンピシャで使えそうだと感じたからです。 例えば、GitHub Copilot では、自分の過去のコードを参照して、最適なコードをサジェストしてくれます。 これは、契約に関わるすべてのビジネスパーソンが求めていたものです!契約の 99.9%が過去のコードの使い回しであるにもかかわらず、毎回ゼ…
21日前
記事のアイキャッチ画像
MNTSQ従業員の相互理解を深める施策「Weekly Sync」の運用裏側をご紹介
MNTSQ Techブログ
MNTSQ従業員の相互理解を深める施策「Weekly Sync」の運用裏側をご紹介
4ヶ月前
記事のアイキャッチ画像
ヘルプデスク業務を楽にするためにSlackとGitHub Projectsを同期するヘルプデスクツールを自作した
MNTSQ Techブログ
ヘルプデスク業務を楽にするためのツールを作成した話。GitHub ProjectのItemとSlackを双方向同期したり、Azure OpenAI等を利用して効率化したりしてます。
6ヶ月前
記事のアイキャッチ画像
LUKEのEntitySpanClassificationによる固有表現抽出
MNTSQ Techブログ
はじめに こんにちは、MNTSQ(モンテスキュー)のアルゴリズムエンジニアの清水です。本記事では事前学習済み言語モデルの一つであるLUKEを用いた固有表現抽出の実装方法について紹介します。 LUKEとは LUKEは、LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attentionにおいて提案された言語モデルです。LUKEは、単語とエンティティの文脈付きベクトルを出力する知識拡張型(knowledge-enhanced)の言語モデルであることが大きな特徴です。単語とエンティティの双方を独立したトーク…
9ヶ月前
記事のアイキャッチ画像
もし「リーダブルコード」を弁護士が読んだら?
MNTSQ Techブログ
こんにちは。「リーダブルコード」を先月読破して、感銘を受けた弁護士の人です。 なにに感銘を受けたかというと、「エンジニアが高級言語を効率的にコーディングするための工夫」は、契約という言語をコーディングするために援用できることがとても多いということです。 例えば、リーダブルコードは「関数には空虚な名前(tmpとかretvalとか)でなく、エンティティの実体に即した名前をつけよう!」と提案しています。 これめっちゃわかります!!!なぜなら、契約言語では当事者というクラスの表現のために「甲」「乙」という定義を未だに使います。そして、甲と乙を逆に書いてしまったままReviewを通過することが実際によく…
1年前
記事のアイキャッチ画像
崩れたメールの扱いかた 〜エンタープライズ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機能を介して、ゴミの分別ルールからビジョンレベルの意思決定まで誰もが発議で…
2年前
記事のアイキャッチ画像
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 行為や責任の所在を明確にするた…
2年前
記事のアイキャッチ画像
ノイズが多いテキストを対象にした正規表現を書きやすくするPythonモジュール regex
MNTSQ Techブログ
MNTSQ(モンテスキュー)という契約書管理のSaaS製品を開発する会社で、 アルゴリズムエンジニアをしている坂本です。 契約書に書かれた情報を自動で抽出する仕組みを作っています。 概要 正規表現とはなにか 正規表現を書きにくい、中ボス的なテキストが存在する regexモジュールのFuzzy match機能を使って、楽に中ボスを倒す Fuzzy matchの使用例 裏話 実は、採用ブログも兼ねています この記事を書いた人 概要 私も非エンジニア出身であるため、Techブログではあるものの、 幅広い方に読んでいただきたいと思いました。 このブログの内容をざっくり図解すると、こんな内容を扱います。…
2年前
記事のアイキャッチ画像
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…
2年前
記事のアイキャッチ画像
突撃!隣の開発環境!! MNTSQ エディタ・ターミナルエミュレータ編
MNTSQ Techブログ
こんにちは、MNTSQ(モンテスキュー)でSREをやっている中原です。 前回(?)、 突撃!隣のPCデスク!! MNTSQ キーボード・マウス編というタイトルでブログを書かかせてもらいました。社内外から(特にエンターキーについて)大変反響をいただきうれしいなぁという気持ちでいっぱいです。 開発者がこだわるものというのは、そのこだわりの強さ故に争いを生むことがあります。時に「宗教戦争」とも称されるその争いのテーマとしては、前回取り上げたキーボードの他、ブラウザやOSなどもあげられようかと思います。 今回は、そんな「宗教戦争」になりがちなテーマの一つである「きのこたけのk*1エディタとターミナルエ…
2年前
記事のアイキャッチ画像
【実践】テックブログの締切をカッコよく先延ばしする方法
MNTSQ Techブログ
書き出し MNTSQ(モンテスキュー)株式会社でプロダクトマネージャーをしています、野中と申します。 この記事を読んでいる貴方様も、きっと同じIT業界の住人なのではないでしょうか。 さて、IT系の、しかも社員エンジニアの方々(いちおう私含む)が背負う宿命といえばーーそう、テックブログの執筆、ですね。 昨今、優秀なエンジニアを採用したい企業が芋洗い的にごった返しており、「なんとかウチの良さをアピールしなければ!情報を発信するんだよ!当番制でテックブログ書こうよ!」というムーヴもすっかり業界に定着したように思えます。 もちろん弊社もごった返す芋のひとつですので、この辺り手を抜くわけにはいきません。…
2年前
記事のアイキャッチ画像
差分指向テスト(DOT: Difference Oriented Testing)という考え方
MNTSQ Techブログ
はじめに MNTSQ(モンテスキュー)株式会社 フロントエンド担当の安積です。 入社して4ヶ月とちょっと。 コードに取り組もうと入社して、まさに日々格闘しております。 私の後ろの席にはこんなバズ記事書く人や、こんなイカつい記事書く人が座ってまして、そんなプレッシャー期待の中からお送りいたします。 tech.mntsq.co.jp tech.mntsq.co.jp 昨日はこんな記事も公開されています。 tech.mntsq.co.jp はじめに 現在のステータス またはMNTSQ考古学 リファクタリングやるぜっっ! 仕様書大事だよね 差分指向テストとは テスト環境の概要 テストデータ ブラウザ操…
2年前
記事のアイキャッチ画像
neuralcorefによる共参照解析
MNTSQ Techブログ
はじめに 次の文章をまずは眺めてみてください。 “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 the country since taking over from late co-founder Steve Jobs" Apple CEO in China m…
2年前
記事のアイキャッチ画像
MNTSQ CLMの認可の実装
MNTSQ Techブログ
認証認可とワンセットで語られることが多い印象だが、今回話すのは「認可(Authorization)」の話だ。「認証(Authentication)」の話は含まない。 (システムで言う)認可とは、大雑把に言うと「誰が」「何を」「どうすることが」「できる/できない」の要素に従って判定することだ。 どちらも略すと「Auth」になってしまってクラス名が衝突したりするので困ることがある。区別するために認証はAuthN、認可はAuthZと略されることがある。「WebAuthn」などは一例と言えるだろう。 弊社内ではまず話題になってこなかったため、実装の話が流れたとき、非エンジニアからは「認可?権限と何が違…
2年前
記事のアイキャッチ画像
Ubuntu を業務PCで使いつづけて3年が経ちました。 〜Web開発にmacOSじゃなくて大丈夫なのか気になる方へ〜
MNTSQ Techブログ
MNTSQ(モンテスキュー)株式会社 ソフトウェアエンジニアの沼井です。 普段はRailsでのバックエンド開発をしつつ、Elasticsearchによる全文検索処理やインデクシングまわりの開発にも取り組んでいます。 私は現在、 Thinkpad X1 Carbon (2021年版)にUbuntu 20.04をインストールして開発を行なっています。MNTSQ社以前の経験も含めると、業務でのUbuntu使用経験は3年以上あります。 テック系スタートアップの、とりわけWebサービス・スマホアプリの開発シーンでは、macOSユーザーが99%(※個人の感想です)ということもあり、macOS以外の環境を(…
2年前
記事のアイキャッチ画像
MNTSQのSlackに住まうbot - Hot Docs
MNTSQ Techブログ
新しい仲間 前回、MNTSQのSlackにいるいくつかのbotを紹介した。 tech.mntsq.co.jp 今日、そこに新しい仲間が加わったので紹介しよう。その名も "Hot Docs" だ。 Hot Docsとは Hot Docsとは、Google Driveのファイルを再帰的に探索し、短時間にたくさんコメントがついたDocsをSlackに通知するbotである。こんな感じだ。 なぜ作ったか MNTSQではGoogle Docsを使って非同期でコミュニケーションを取ることがある。誰かが提案やログをDocsで作り、他のメンバーがそこにコメントしまくる、というスタイルだ。 しかしこれでは議論がD…
2年前
記事のアイキャッチ画像
Ruby on Railsをかんたんスピードアップ
MNTSQ Techブログ
こんにちは、MNTSQでサーバーサイドエンジニアのようなものをやっている西村です。今回は比較的簡単にRuby on Railsのアプリを高速化する方法を書いてみようと思います。 内容的にはタイトルのとおり、平易なものが多いのですが、頻度高く見かけるものをまとめてみました。 preload/include/eager_loadを利用してN+1を回避する Railsでは紐づくレコードが芋づる式になりがちで、N+1問題がよく発生します。弊社ではgrapeというgemを利用してAPIを作成していますが、レスポンスを組み立てるタイミングでN+1問題がよく発生します。例えば、以下のようなActiveRec…
3年前
記事のアイキャッチ画像
突撃!隣のPCデスク!! MNTSQ キーボード・マウス編
MNTSQ Techブログ
こんにちは、MNTSQ(モンテスキュー)でSREをやっている中原です。しばらくコロナで帰省することができなかったのですが、つい最近久しぶりに帰るとともに、実家に放置してあった自分の車を関東に持ってきました。「これで夢のドライブライフだー!!」と思っていましたが、借りた駐車場が狭すぎて出し入れが大変しにくく、結局乗る機会は少なそうです。 ドライブや自動車競技をする場合、機能性の面からステアリングやシートを入れ替えたりしますが、やはり自分にあったものを選ぶと疲れにくかったりします。かつてレカロのシートを使っていたときは確かに身体は楽でした*1。 さて、ITシステムに関わる企業に所属するものとして、…
3年前
記事のアイキャッチ画像
Document Analysisのオープンデータについて
MNTSQ Techブログ
はじめに テキスト情報から自然言語処理の機械学習モデルを構築する際には文字列データのみが解析の対象になりますが、文書全体から情報を抽出するモデルを構築する際には、文書レイアウト情報が重要になります。 通常の自然言語処理とは異なり、文書レイアウト情報は画像も入力の対象として想定されるため、文字の位置を表すBounding Box等がアノテーションとして想定されます。 このように、文書に含まれる文字情報だけではなくレイアウトに関する情報も扱うタスクをDocument Analysisと呼んだりします。 本記事ではDocument Analysisタスクに関わるデータセットの作成について考える一助と…
3年前
記事のアイキャッチ画像
MNTSQのSlackに住まうbotたち
MNTSQ Techブログ
いろいろなbot 組織をスケールさせる上でコーポレートエンジニアリングは非常に重要である。MNTSQではissue-drivenで誰でも気軽にbotを作ることができる。現在MNTSQのSlackにいるいくつかのbotを紹介しよう。 施錠と消灯を催促するbot 観葉植物の水やりを催促するbot(ガイド付き) 社員8名ぶんのサラダを社長に取りに行かせるbot(実際には当番制) 詳細はこの記事で紹介している。 にゃーんと言うと何かを返すbot デイリーの共有会でグループ分けをするbot セキュリティチェックの案内を出すbot 以下では「デイリーの共有会でグループ分けをするbot」の仕組みを紹介する。…
3年前
記事のアイキャッチ画像
【MNTSQxUbie】Vertical AI Startup Meetup を開催しました
MNTSQ Techブログ
こんにちは。MNTSQの堅山です。 去る8/10に、Ubieさんと共同で「Vertical AI Startup Meetup」というイベントを開催しました。 connpass.com 弊社MNTSQはいわゆるリーガルテックという領域で、企業法務に携わる方々を相手にプロダクトを提供しています。 Ubieさんも主に医療従事者の方々を対象にプロダクトを提供されており、以下のような共通点があるなぁと勝手に親近感を持っておりました。 ubie.life ドメインの深い領域に取り組んでいる プロフェッショナルに対してプロダクトを通じてサービスを提供している ドメインのプロフェッショナルがエンジニアと協働…
3年前
記事のアイキャッチ画像
structlogを用いた構造化ログの導入
MNTSQ Techブログ
Webアプリケーションやバッチジョブを運用していくにあたって、エラーの影響範囲の調査のため、APIへのアクセスIDやバッチのジョブIDのついたログは欠かせないです。 このような類のIDをログとして残す場合には、そのIDの影響下にある全部の処理に対して該当のIDを渡したいです。 この類の処理をフルスクラッチで書こうとする場合、下記事項を考慮する必要があります。 ログのために既存のコードの引数を変えることはしたくないため、IDをロガー経由で渡す必要がある IDを渡されるロガーは処理の間はIDを保持してほしい、それ故ロガーはシングルトンインスタンスか、それに相当するモジュールになる asyncの入っ…
3年前
記事のアイキャッチ画像
Pythonで省メモリに大量の文字列を扱う工夫
MNTSQ Techブログ
たくさんの文字列(や離散的な符号列)をメモリに載せないといけないんだけど、いろんな制約があって通常のList[str]では載らない…ということありませんか?(まぁあんまりなさそうですね) たまたまそういうことがあったので、その際に検討した内容をまとめておきます TL;DR メモリをもっと増やしましょう 富豪的に解決できるならいつでもそれが最高です しかし、世の中それでなんとかならんこともたくさんあります 用途があうのであれば専用のデータ構造を採用する 例えばもし共通のprefixやsuffixが存在し、順序に興味がなければtrie treeなどが使えます 例えば、弊社であれば、法人名をメモリに…
3年前
記事のアイキャッチ画像
身近なデータで30時間クッキング:Slackのログを解析してみる編
MNTSQ Techブログ
入社して3ヶ月が経った。事業戦略・組織文化・プロダクトに対する解像度はだいぶ高まった実感があるが、実はまだメンバー1人1人のことを良く知らない。 そうだ、Slackのログを分析しよう。 当社では多くのコミュニケーションをSlackで行う。また、情報のopennessを重視しており、Slackのpublic channelの割合は高い水準を維持している。 private channelもそれなりにあるが、弊社のprivate channelの多くはメンバーのロールに対応するように作られており、実際にはほとんどのメンバーが参加しているため、opennessは保たれていると言って良い。 Public…
3年前
記事のアイキャッチ画像
公開されている日本の企業名辞書の紹介
MNTSQ Techブログ
特許・契約書・有価証券報告書・企業関連ニュースなど、実応用上の自然言語処理では、会社名を認識したいという場面に非常に多く出くわす。 会社名らしい文字列をテキストから抽出することは、形態素解析器の辞書を用いたり固有表現抽出モデルを学習することである程度実現される一方で、抽出した会社名をレコード化して分析などに用いる際には、いわゆる名寄せの問題が発生する。 自然言語処理における名寄せに似た問題は、エンティティリンキングや共参照解析といったアプローチで探求されており、実応用上は前者のアプローチが採られることが多い印象がある。*1 名寄せタスクをエンティティリンキング的に解くためには、帰着先の知識ベー…
3年前
記事のアイキャッチ画像
社員の健康を支える技術
MNTSQ Techブログ
この記事では、Googleスプレッドシートで当番表を作り、Google Apps Scriptで当番をSlack通知する機能を実装する。 この記事は以下の記事の続編である。 未読の方は先に読んでおくことをお勧めしたいところだが、実はあまり関係が無い。 note.com 西村、サラダ技術顧問に就任するってよ Googleスプレッドシートのサンプル Slack IDの取得方法 スクリプトを書く スクリプト エディタを開く Google Apps Scriptでスプレッドシートを読み込む Google Apps ScriptからSlackに通知する 「当番リスト」シートからSlack IDを取得する…
3年前
記事のアイキャッチ画像
NFSについて復習してみた
MNTSQ Techブログ
背景 久しぶりにNFSを触るかもしれないということで、ちょっと素振りをしてみました。NFSを最後に触ったのは10年くらい前、まだあの頃は学生だったと思います。そんなわけで、久々なのであらためて、手順を頭に入れなおしてみました。 今回試す条件は緩いものなので、プロダクトのなかで使う場合やより高い要求がある場合には、ここの手順だけでは圧倒的に足りませんが、大まかな流れをつかめればいいかなと思います。 NFSとは ここでは簡単にNFSについて説明します。 ネットワークをまたいでストレージをマウントさせるための技術 最新のプロトコルのバージョンは4 実質的な最初のバージョン、2が発表されたのは1984…
3年前