adbコマンド覚えられなくても気にしない。自作MCPサーバーでAIにお任せ!

本記事では、Android開発初心者の筆者が、AIにadbコマンドの実行を任せるためにMCPサーバーを自作した取り組みを紹介しています。 MCPサーバーはAIに外部機能を提供する仕組みで、今回はGo製ライブラリ「mark3labs/mcp-go」を用いて、adbコマンドを実行する…

GitLab CIで動くAIエージェント『CI-Agent』を爆速開発!Claude Codeで実現する非同期オペレーションの未来

本記事では、OPTiM社内ハッカソンで開発された「CI-Agent」について紹介しています。CI-AgentはGitLab CI上で動作するCoding Agentで、issue対応やコード修正、MR作成などを自動化する仕組みを備えています。Claude CodeとAWS Bedrockを活用し、社内GitLab環…

常に画面がONになって欲しい瞬間のあるWebアプリへ贈る Screen Wake Lock API

Webアプリケーションにおいて、画面のロックやスリープを抑制するための Screen Wake Lock API について、バッテリーや省電力モードなどの状況も踏まえた動作確認を行った内容を記事にまとめました

フロントエンド推進室の運営メンバーが選ぶフロントエンド小ネタ集

本記事は OPTiM TECH BLOG Advent Calendar 2025 Day 20 のエントリーで、2025年10月に発足した「フロントエンド推進室」の活動と、運営メンバーによるフロントエンド技術の小ネタを紹介しています。フロントエンド推進室は、社内横断的にフロントエンド技術…

remark/rehypeでMarkdownがHTMLになるまで:構文木の旅

本記事では、MarkdownをHTMLに変換する際に利用される remark/rehype の内部処理を深掘りしています。remarkはMarkdownとmdast(Markdown構文木)、rehypeはHTMLとhast(HTML構文木)の相互変換を担い、両者はunifiedパッケージ群に属します。 Markdown → md…

【Kotlin/Spring Boot】LLM×外部ツール連携をSpring AIで実現!MCP実装のガイド

本記事では、Anthropicが提唱する MCP(Model Context Protocol) を Kotlin で実装する方法を紹介しています。MCPはLLMアプリケーションと外部ツール・データソースを接続するための標準プロトコルで、JSON-RPCを用いた通信を特徴とします。記事では Spring…

MarkdownとAIで実現する、効率的なマニュアル作成術

本記事では、病院向け製品「OPTiM AIホスピタル」のマニュアル作成における課題と、その解決策としてMarkdownとAIを組み合わせた方法を紹介しています。従来のWordやNotionでの作成では、画像配置やフォーマット統一、バージョン管理など多くの手動修正が必…

開発環境の再現性100%へ!Nixで実現する失敗しないオンボーディング

本記事では、開発環境の再現性を高めるためのパッケージマネージャー「Nix」について、UbuntuとmacOSでの導入・活用方法を紹介します。Nixの特徴である宣言的・再現性・信頼性を軸に、home-managerやnix-darwinを使ったホームディレクトリやOS設定の管理、de…

AIがSlackをRedmineチケットに変換!モダンなIaCとクリーンアーキテクチャで構築した開発効率化ツール

本記事では、Slackでの議論を簡単にRedmineチケット化する仕組みを紹介します。特定のスタンプを押すだけで、Slack投稿をAWS Step Functions経由で処理し、AWS Bedrockで要約・整形した後、Redmine APIを使って自動的にチケットを作成します。構成にはSlack…

VLMでどこまで画像解析ができる?

本記事では、2025年に急速に進化した Vision Language Model (VLM) の動向を紹介します。画像をテキストとして理解するだけでなく、物体検出やOCR、セグメンテーションなど、従来は専用モデルが必要だったタスクが Qwen2.5-VL、Gemini 2.5/3.0、Qwen3-VL な…

Electron ForgeでビルドしたAppXファイルにハードウェアトークンによるコード署名を行う方法

本記事では、Electron ForgeでビルドしたAppX形式のファイルに対して、ハードウェアトークンを用いたコード署名を行う方法を解説します。Electron Forgeは標準で.pfx証明書による署名を前提としており、ハードウェアトークン署名はサポートされていません。…

AI駆動で学びながら、iOSアプリとGo製BFFを初めて開発した話

この記事では、24卒エンジニアが個人開発でiOSアプリとGo製BFFをゼロから構築した経験を紹介しています。テーマは「AI駆動開発」。AIを単なるコード生成ツールではなく、開発パートナーとして活用し、SwiftによるiOSアプリ開発、Goによるバックエンド構築、T…

今更ながらPOMLでプロンプト管理を試してみる

本記事では、LLMアプリケーション開発におけるプロンプト管理のための構造化言語「POML」について調査しました。 POMLは、テンプレートエンジンによる柔軟な記述、画像入力対応、Tool呼び出しなど強力な機能を備えています。しかし、Structured Outputsのサ…

LLMバッチ処理の安定稼働を実現!AWS Lambdaにおける最適なリトライ戦略とアーキテクチャ比較

本記事では、AWS LambdaでLLMのバッチ処理を安定運用するためのリトライ戦略について解説しています。 まず、レート制限エラー(429)、Lambdaの実行時間制限、状態管理の複雑さ、コスト効率といった典型的な課題を整理し、その解決策として指数バックオフ+…

OpenAPIの思想を応用!YAMLとGo言語でテスト仕様書をGit管理し、開発効率を劇的に向上させる方法

本記事では、OPTiM Collaboration Portalの開発チームが、従来Excelで管理していたテスト仕様書をYAML形式で管理する仕組みに移行した取り組みを紹介しています。OpenAPIの構造を参考に、機能ごとにYAMLファイルを分割し、$refでインクルードする設計を採用…

大規模Ruby on Rails開発における、10万ケース単体テストの高速化とAI活用

本記事では、15年の歴史を持つモノリシックな Ruby on Rails サービス「OPTiM Biz」における 10万超の単体テスト運用の工夫を紹介しています。 テスト総実行時間は約17時間に及び、全テストを毎回実行するのは非現実的。そのため、以下の取り組みを実施: 50…

LiveKitのAgent Builder は10分あれば音声AIエージェントを構築できる

本記事では、LiveKit DevDay 2025で発表された「Agent Builder」について紹介しています。Agent Builderは、ブラウザ上でコード不要で音声AIエージェントを構築できるツールで、システムプロンプトやモデル選択を行うだけで数分でエージェントを作成可能です…

Go の JSON 処理が変わる!encoding/json/v2 のテストコードから学ぶ 15 の新常識

本記事では、Go 1.25で実験的に追加され、1.26で正式導入が期待されるencoding/json/v2の変更点を解説しています。公式テストコードv2_diff_test.goを参考に、v1との違いを15項目にわたり紹介。主な変更点は以下の通りです: JSONタグの大文字小文字の扱い:…

プロダクト不具合がOSS貢献に繋がるまで:Fiberとスレッドローカル変数の落とし穴を乗り越えた技術奮闘記

本記事では、OPTiM BizのRailsバージョンアップ作業中に発覚した「英語環境でCSVインポートが失敗する」という不具合の原因究明から、OSSへのコントリビュートに至るまでの過程を紹介しています。調査の結果、問題はCSV gemではなく、i18n gemのスレッドロー…

TanStack Start ことはじめ

本記事では、React + Vite構成のSPAで利用しているTanStack Routerを基盤とした新しいフルスタックフレームワーク TanStack Start を紹介しています。TanStack Startは型安全で開発者体験を重視し、クライアントサイドファーストの設計思想を持つ点が特徴で…

ピンポイントタイム散布(PTS)業務効率化に向けたWebアプリ・バックエンド開発インターン記録

はじめに こんにちは。私は神戸大学2年の山田と申します。 本記事は、OPTiM TECH BLOG Advent Calendar 2025 Day 3 の記事です! 今回はKOBEインターンシップ・就業体験プログラム(ジョブ型就業体験)に参加し、インターン生として働いた様子を紹介します。 …

入社3ヶ月で開発全工程に挑戦!新卒エンジニアがAIを「教師」にして駆け抜けた話

本記事では、OPTiM Contract、OPTiM 電子帳簿保存、OPTiM 文書管理の開発を担当する新卒エンジニアが、機能開発の全工程でAIをどのように活用したかを紹介します。要件定義・設計・実装の3つの事例を通じて、AIを「任せっきりにせず、自分の成長につながる使…

レイアウト構築の基本を理解しよう ~ 横スクロールが起きない!? Flex脱却編 ~

本記事では、フロントエンド開発でよくある「横スクロールができない」「コンテンツが親要素を突き抜ける」問題を、Flexbox特有の仕様(min-width: auto)を原因として解説します。 実際の事例として、MUIのStackコンポーネントを使ったFAQページ実装で発生…

OPTiM TECH BLOG Advent Calendar 2025

OPTiM TECH BLOG Advent Calendar 2025の扉記事です。 12月1日から12月25日まで期間、様々な技術分野の記事をお届けしていきます。AI・IoT・クラウド・モバイル開発・インフラ・データサイエンスなど、オプティムの幅広い技術領域から、エンジニアたちの知見…

『~エンジニア視点で議論する~ 次世代デザインシステムへの現在地』登壇レポート

こんにちは プロモーション・デザインユニット(以下プロモ・デザインU)の清水です。 前回はデザインシステムのライティングについて書きましたが、今回は2025年10月24日(金)、株式会社Helpfeel 東京本社にて、「~エンジニア視点で議論する~ 次世代デザイン…

インターン生が農業DXサービスの改善に挑戦した話: 地図xAIの可能性

農学を専攻する大学生の佐々木さんが、OPTiMサマーインターンシップ2025に参加し、社長室・R&Dユニットで2週間の実務を経験した報告です。 担当したのは、農薬散布サービス「ピンポイントタイム散布」で使用する社内向け地図マッチングツールの改善です。顧…

丸投げは失敗のもと? 屏風の虎とAIに学んだプロジェクト効率化のコツ

はじめに こんにちは!プロモーション・デザイン・ユニットのプロモーションチームです。 普段はオプティムのWebサイト全体の管理・運用を担当しており、コンテンツの企画からページ制作まで幅広く手がけています。 さて、突然ですが「屏風の虎」という一休…

iOSDC Japan 2025に参加してきました

こんにちは! OPTiM Biz開発チームの山田、北川、片岡、福原です。 今回はiOSDC Japan 2025に参加してまいりましたので、会場の雰囲気や内容をレポートします! iOSDCについて iOSDC Japan はiOS関連技術をコアのテーマとした技術者のためのカンファレンスで…

Go Conference 2025 参加レポート

こんにちは、オプティムの今枝、岡留、澤、只野、田中です! 今回Go Conference 2025に、当社はGoldスポンサーとして参加しました。 この記事では、私たちがそれぞれ参加したセッションやワークショップの中から特に印象に残ったものをピックアップし共有し…

Kaigi on Rails 2025 に参加してきました

はじめに こんにちは!OPTiM Biz 開発チームの石原、河合、Optimal Remote 開発チームの市川、OPTiM ID 開発チームの吉村です。今回はオプティムから 4 名で Kaigi on Rails 2025 に参加してまいりましたので、会場の雰囲気や内容をレポートします! Kaigi o…