mutex Tech Blogのフィード
https://zenn.dev/p/mutex_inc
東京大学発のスタートアップ 株式会社mutex の Tech Blogです!
フィード

Flutter_Pluginのspeech_to_textを弄り倒した時の知見について
1

mutex Tech Blogのフィード
この記事を書くに至ったとあるトラブルFlutterのプラグインspeech_to_textを使用しているコードでとあるバグが発生しました。そのコードでは発話が途切れたことを検知して取得した音声のデータを違和感のない内容に直すREST APIを呼び出すという内容で、その考えは至って正常のように思われたのですが、iOSでごく稀に途切れの検知ができないことがありました。そこで、プロジェクト用にプラグインを改良した際にFlutterとSwiftの両方のコードなどを見て得た知見を共有しようと思います。「発話が途切れたこと」は、発話中に喋らず数秒が空いている状態やその開始時点という意味で使用...
7日前

distroless + gRPCサーバーで、コンテナの HEALTHCHECK を通す
mutex Tech Blogのフィード
はじめに 何の話かコンテナで何かしらのサーバーが立っているときに、うまく動作しているかの確認のヘルスチェックでは、よく以下のような方法が取られます。コンテナ外部からコンテナに対してリクエストを送るex.) ALB + ECS Fargateの構成において、ALBのヘルスチェック機能を用いるパターンコンテナ内部からリクエストを送るex.) Dockerfileの HEALTHCHECK を用いるパターン, ECSサービスのヘルスチェックを用いるパターンこの記事では、2の方法についての話をします。2の方法では、コンテナ内部からリクエストを送るため、コンテ...
1ヶ月前

テストのためにDockerでDBを立てるときのTips
mutex Tech Blogのフィード
はじめにCIなどでDBを使用したテストを行う際に、Dockerを使ってDBを立てることが多いと思います。今回は、DBを立ててテストを実行するCLIを叩く際の簡単なTipsを紹介します。 問題以下のようなcompose.yamlを用意して、DBを立てます。compose.yamlname: db-for-testservices: postgres: image: postgres:17 ports: - 127.0.0.1:3000:5432 environment: POSTGRES_HOST_AUTH_MET...
1ヶ月前

Push通知を含むiOSアプリのCD構築
mutex Tech Blogのフィード
はじめに 背景最近では、iOSアプリのCI/CDをGitHub Actionsで構築する記事が多く見られるようになりました。特にCD(継続的デリバリー)においては、TestFlightへの自動アップロードや証明書の自動管理など、有用な情報が数多く出回っています。しかし、実際に私が構築してみると、「Push通知(APNs)を含んだビルド」に関する情報がほとんど見当たらないという問題につまずいたので、本記事を投稿しました。 直面した課題GitHub ActionsでCDを構築し、TestFlightのアップロードまではできましたが、App Store Connectから以...
2ヶ月前

プロジェクトにインストールしたコマンドのシェル補完問題
mutex Tech Blogのフィード
はじめにこの記事はシェルにzshを利用している読者を想定しています。mise+CLI補完の問題について説明していますが、他のプロジェクト・パッケージ管理ツールに関しても同じ問題を同様の方法で解決できます。miseでプロジェクトにコマンドをインストールしたとき、普通の方法で.zshrcを編集して補完を有効化すると後述の問題が発生します。今回の記事では、miseでインストールしたコマンドのシェル補完を利用するときの個人的ベストプラクティスを紹介します。以降、補完を利用したいmiseでインストールするコマンドの一つとして、Pythonのプロジェクト・パッケージ管理ツールuvを例に...
2ヶ月前

ネイティブアプリで考えるアクセシビリティに配慮したデザイン
mutex Tech Blogのフィード
はじめにネイティブアプリのアクセシビリティ対応について調べる機会があったので、学んだことを備忘録的にここにまとめます。 前提筆者はデザイナーなので、UI観点での話が多いです。 そもそもアクセシビリティとはアクセシビリティは、英語では“Accessibility”で、「近づきやすさ」、「利用のしやすさ」、「便利であること」などと訳されます。つまり、身体や障がいの有無や年齢など個人の性質・特性怪我をしている、又明るいところ、暗いところにいるなど、特定の状況によらず利用できるかどうかという観点のことを指します。 ウェブアクセシビリティ上記のアクセシビリテ...
3ヶ月前

【ゲーム理論】ポケポケ「幻のいる島」環境における最適戦略は何だったか、解析してみた
mutex Tech Blogのフィード
はじめにポケポケ、楽しいです。最近では対戦の方はご無沙汰ですがログインは毎日ちゃんとしています。筆者はこういうゲームが与えられると何とかしてハックできないかと考えてしまうタイプです。偶然にもコンピュータが多少触れるので、それを活かせるとなお良しです。まあ対戦 AI を組むとかは大変なので、今回はメタゲームの観点からアプローチしてみます。メタゲームとは、その環境でどういうデッキがよく使用されているかを読み、その上でなるべく勝率が高そうなデッキを使用するという、各対戦より一段階上のレイヤーでの意思決定をゲームと捉えたものです。本記事には特にポケポケのゲームシステムに依存する話はな...
3ヶ月前

1PasswordでのSSH認証情報の管理とコミット署名
mutex Tech Blogのフィード
はじめに1PasswordのSSHキー管理やGitコミット署名などの機能の簡単な紹介です。基本的にMac向けの記事ですが、ドキュメントを参考にすればWindowsでも同様のことが実現できます。最近の1Password Developerのドキュメントは結構しっかり書かれているので、詳しくはドキュメントを参考にしてください。https://developer.1password.com/docs/ssh 準備1Passwordのインストールを行ってください。brew install --cask 1password執筆時点での筆者の1Passwordのバージョンは、8...
4ヶ月前

数オリの問題でOpenAI o1 vs DeepSeek(R1)
mutex Tech Blogのフィード
はじめに本記事では、現在話題沸騰中のDeepSeek(R1)について、OpenAI o1との精度比較を行います。今回の検証には、個人的な思い入れのある数学オリンピック2016年度の問題を使用しました。検証前は全12問を使って検証する予定でしたが、想像より両方とも正解率が低かったため、最初の4問のみで検証を終了しました。 検証検証のプロンプトは以下です。プロンプト以下は日本語で書かれた数学の問題です。ただし、文中に数式がある場合は、KATEX形式の数式を$記号一つ、または$記号二つで囲んだ形式で書かれています。問題を解いてください。{問題文}早速、検証結...
4ヶ月前

Optimizerの変遷 ~最急降下法からAdamWまで~
mutex Tech Blogのフィード
はじめに機械学習のコードを書いているエンジニアの方はoptimizerに何を選べばいいか迷ったことがあると思います。とりあえず有名なモデルでよく使われているAdamやAdamWをよく考えずに選んでいませんか。本記事ではそれぞれのoptimizerのパラメータ更新式の定性的な意味について、最急降下法からAdamWまでの変遷とともに説明したいと思います。 optimizerの発展の流れ 最急降下法まずは、最も基本的なパラメータ更新手法である、最急降下法について軽くおさらいする。 パラメータ更新式 \bm{G}_t = \nabla f(\bm{\theta}_{t-...
4ヶ月前

Warningの色について
mutex Tech Blogのフィード
はじめにセマンティックカラーの一つとしてデザインシステムに記載されることも多いWarning。弊社でもデザインする際はカラーパレットの一つとして登録しているのですが、コントラスト比の関係で見えづらくなりがちです。なのでWarningのデザインを行う際にアクセシビリティにどう対応するか考えてみました。白背景に黄字は見えづらい… そもそもセマンティックカラーって?デジタル庁によると、セマンティックカラーは、デザインスタイルやUIの種別を問わず特定のセマンティクス(意味や目的)が割り当てられたカラーです。これらのカラーは特定の情報や文脈で意味を伝えるために使用され、情...
5ヶ月前

最強の機械学習フレームワークを作りたい その 1 「何がしたいか、Lean 4 の基礎とともに」
mutex Tech Blogのフィード
はじめにPyTorch という機械学習フレームワークがあり、弊社でもよくお世話になっています。しかし、PyTorch で開発をしていると、以下のような事態に陥ることがあります:テンソル形状で不整合を起こすコードを書いてしまい、実行後、それも短くない時間経過ののちにエラーによってそのことに気づく常に詳細なドキュメンテーションを心がけることでこうした事態をある程度防ぐことはできますが、できればこういうのはシステマチックに検出したいものです。PyTorch の枠組みでそのような検出をすることは難しいです。なぜなら、テンソルは torch.Tensor という型を持っているのみ...
5ヶ月前

Figma Slides 超入門
mutex Tech Blogのフィード
はじめに存在は知りつつも、Figmaでよくないか?と思ってキャッチアップを避けてきたFigma Slides。調べてみると意外と大きな可能性を秘めていそうなので記事にまとめました。 この記事の対象読者完全初心者Figma Design触ってるけどFigma Slidesを触ってなかった人僕はこれ 前提区別のためにこの記事ではFigmaのことをFigma Designと呼ぶこの記事は、Figma Slidesをある程度使えるようになるために書いた記事なので、網羅的に全ての機能を紹介はしてない Figma Slidesの料金体系Figm...
5ヶ月前

Python標準ライブラリを使いこなす 初級編 ~二重でfor文書いたりしてませんか?~
mutex Tech Blogのフィード
概要Pythonは標準ライブラリで便利な機能を多数用意しています。しかし、きちんと使いこなせている人は少ないのではないでしょうか。可読性の高いコードを書くことができるように標準ライブラリを使った方法に書き直す問題を作りました。 問題 二重ループ 悪い例for i in range(100): for j in range(1000): # some process pass二重ループを上の例のように書くと実際の処理の部分のネストが深くなってしまいます。Pythonはネストを4文字分のスペースで表現するので、ネストが深くなっ...
6ヶ月前

【最新版】gRPC × Node.jsでのマイクロサービス開発のベストプラクティス
mutex Tech Blogのフィード
はじめに弊社では、ある程度の規模のあるバックエンドを開発する際、gRPCを使ってマイクロサービスを構築する設計を取ることがあります。今回は、Protobuf周辺のエコシステムであるBufのJavaScript版であるProtobuf-ESと、つい先日v2がリリースされた、gRPC互換のAPI構築に強いConnectを使って、簡単なアプリケーションを例にマイクロサービスでのgRPC × Node.jsのベストプラクティスを整理していきます。 想定読者gRPCに興味があるNode.js × TypeScriptで開発を行っているマイクロサービスアーキテクチャに興味が...
6ヶ月前

【Python】__repr__ と __str__ を深掘る
mutex Tech Blogのフィード
問題提起まず以下のコードをご覧ください。from datetime import datetime, timezoneepoch_start = datetime.datetime.fromtimestamp(0, tz=datetime.timezone.utc)print(epoch_start)print([epoch_start])出力は以下のようになります。1970-01-01 00:00:00+00:00[datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)]epoch_s...
6ヶ月前

【2024年版】Dockerfileのベストプラクティスを整理しながらNode.jsで実践する
mutex Tech Blogのフィード
はじめに最初はなんとなくで書いていたDockerfileなのですが、社内用にベストプラクティスを整理するタイミングがあったので、実際にNode.js + TypeScriptでアプリケーションを作成しながらまとめることにしました。この記事でフォーカスするのは、 Dockerfileのベストプラクティスそのものの詳細ではなく、それらを整理と「結局どう実装すんねん?」ってところです。主に以下の内容を参考にしています。!ちなみに、少し内容が古いのでおすすめしないですが、ドキュメントに関して日本語訳版もありました。Dockerfile を書くベストプラクティス - Doc...
6ヶ月前

AIにアイコン選ばせてみた ~CLIPとVoyagerを利用したアイコン検索~
mutex Tech Blogのフィード
概要今回、AIを用いてアイコンを検索するアプリケーションを作ってみました。アイコン名・タグなどは利用せずにアイコンの形状だけで検索しています。検索ワードは多言語対応です。日本語でも英語でも検索できます。試していないですが他の主要な言語でも検索できるはずです。多くの方に試していただきたいので、検索の実行はGPUが使えない環境でもできるようにしています。 対象読者アイコン選びで不便さ・大変さを感じているデザイナー技術の内容は読み飛ばしてもらって構いませんAIを用いた検索技術に興味がある人 利用した技術今回のアプリケーションは、以下のアルゴリズムで検索を実...
7ヶ月前

AIのUIについて その1 「なぜAIという括りでUI/UXを考える必要があるのか」
mutex Tech Blogのフィード
はじめに自社のプロダクトに AI 機能があるので、一回全体的に考えたいという経緯でこの記事を書き始めた構成としては、以下のような形式でシリーズ化していくなぜ AI という括りで UI/UX を考える必要があるのか(今回はこれ)AI 機能を大別し、それぞれの UI/UX について詳細に考える今後生まれるであろう AI による新しい UI/UX 概要理想的には、AI による機能であることはユーザーに意識させる必要はないユーザーがアプリケーションを通して目標を達成する際に、それが AI かどうかはどうでも良いからただ、現実的には、以下の理由からユーザーに ...
7ヶ月前

TypeScriptによるDB操作の決定版 Drizzle × Kysely
mutex Tech Blogのフィード
はじめにTypesScriptでDBを扱う際のライブラリ選定の基準には、次のようなものが挙げられます。クエリ書きやすさ型安全性エコシステムDSLの有無Migrationのしやすさこれらの観点から、クエリの書きやすさと型安全性に優れたKyselyと、エコシステムが充実しているDrizzleを組み合わせることで、快適な開発体験を得ることができました。弊社ではPrisma, TypeORMなどのORMも使っていた経緯がありますが、TypeORMは型安全性が低く、また、PrismaはSQLの書き方に慣れているエンジニアにとっては書きづらく、DSLのキャッ...
7ヶ月前