NCDC テックブログのフィード
https://zenn.dev/p/ncdc
NCDC株式会社( https://ncdc.co.jp/ )のテックブログです。 主にエンジニアチームのメンバーが投稿します。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( https://github.com/ncdcdev/recruitm
フィード

react-markdown + remark-cjk-friendlyで日本語を太字変換
NCDC テックブログのフィード
要点日本語で書かれたMarkdownは、太字(**)と記号が連続したとき、react-markdownで太字変換されない場合があるremark-cjk-friendlyをプラグイン追加することで、意図通り太字変換されるようになる 事象と要因react-markdownを含むMarkdown変換ライブラリでは、日本語を含む「分かち書きのない言語」の太字がうまく変換されない場合があります。 変換できるケースMarkdownにおいて、太字は次のような記法となっています。前**太字**後**で囲まれた範囲が太字となります。この場合は問題なく太字に変換されます。...
1日前

Agent Skillsを業務プロダクトに導入してはいけない
117
NCDC テックブログのフィード
タイトルについて記事を書く上で今回の壁打ち相手のGPTくんに「この話は必要以上に強いタイトルにするべきだ」と強く言われたので、強いタイトルにしました。この記事で言いたいことは「Agent Skillsの業務プロダクトへの安易な導入はセキュリティ的に推奨しない」ということなのですが、本音としては「プロダクトに導入したいから安全に使えるケースを教えてくれ」です。この記事で挙げるような問題点を掻い潜って業務プロダクトでAgent Skillsを有効活用できる案があれば教えてください。 何故Agent Skillsをプロダクトに導入してはいけないのか最近Agent Skillsが流...
5日前

my dotfiles やってよかったこと振り返り(2025年)
NCDC テックブログのフィード
はじめにドットファイルとは、多くの場合ドット(.)で始まるファイル名を持つ設定ファイルのことを指します。例えば、シェルの設定ファイル(.bashrcや.zshrcなど)、エディタの設定ファイル(.vimrcなど)、その他のアプリケーションの設定ファイルなどが含まれます。ご自身のホームディレクトリ(~)をご覧ください。おそらく多くの方が何かしらのドットファイルを見つけることができるでしょう。私はドットファイルをGit管理して運用しています。仕事柄、新しいマシン入れ替えすることがよくあったのですが、そんなときに思いついたのがドットファイルの管理でした。調べてみると同様のニーズを持...
7日前

人前で話すことが苦手なエンジニアが登壇して学んだこと
NCDC テックブログのフィード
何が苦手だったのか元々、オフライン・オンラインを問わず人前で話すことが得意ではなかったので、そういう機会は避ける傾向にありました。理由は、上手に話すことができないんじゃないか、間違ったことを話してしまわないかという恐怖心です。話している途中で言葉に詰まったり、場の空気が止まってしまったりして、「微妙な空気になること」や「何とも言えない沈黙」が嫌で、人前で話すことを意識的に避けてしまっていました。 何を経験したか 弊社開催のLT会イベントでLT発表1年半前に弊社に入社した後、初めての登壇の機会でした。イベント(録画などはありません)https://ncdc-dev....
11日前

APIをそのままMCPサーバーにするな
NCDC テックブログのフィード
散々言われていることだと思いますが、何度でも言いたいことなので、改めて記事にすることにしました。APIをそのままMCPサーバーにするのは止めてください 何故ダメか何故ダメかの説明として、よく「APIとMCPはレイヤーが違うから〜」とか説明されているのを見ますが、個人的にはそんなことはどうでも良くて、普通に実害があるからダメです。主に以下の2点が問題です。AIのコストが高くなるAIの応答精度が悪くなる特に1はめちゃくちゃ困ります。逆に言うと、これらの問題が発生しないように考慮されていれば、私的にはAPIをMCPサーバーにしてもOKです。では何故、深く考えずにAPIをそ...
12日前

DB区分値カラムの制約パターン
NCDC テックブログのフィード
はじめにDBで区分値を扱いたい場合、カラムの制約としていくつかのパターンが存在します。この記事では4つのパターンのメリット・デメリットについて取り上げます。なお、DBはPostgreSQLを前提に記載します。 制約なし区分値は文字列として保持し、値を保証する制約を付けません。区分値自体はソースコード内に定義したり、汎用区分値テーブルにデータとして持ちます。区分値として正しい値が設定されているか否かは、APIパラメータのバリデーションで判定します。CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARC...
20日前

MCPのOAuth認証で仕様通りに作るのが難しいこと3選
NCDC テックブログのフィード
Qiita Advent Calendar 2025「Model Context Protocol(MCP) Advent Calendar 2025」16日目の記事です。https://qiita.com/advent-calendar/2025/mcp はじめにMCPは2024年の年末に公開されて、2025年に一気に広がった2025年を代表する技術といえます。MCPサーバーを使うことで、生成AIは外部のデータソースやツールに安全かつ標準化された方法でアクセスできるようになりました。2025年の短期間の間に、MCPサーバーはエンジニアを中心とした生成AI活用に積極的な層に一...
22日前

AWS DevOpsAgentのワークショップに参加してみて
NCDC テックブログのフィード
【AWS re:Invent 2025】 AWS DevOps Agentのワークショップに参加してみた先週、AWS re:Invent 2025に参加させてもらいました。今回のre:Inventでは「AI Agent」が大きなキーワードになっていましたが、その中でも開発・運用にフォーカスした 「AWS DevOps Agent」 のワークショップに参加してきました。また、ワークショップで隣だった方と話ながらできたのが良い経験だったので、そこで得た気づき等も書きたいと思います。 AWS DevOps Agentとは?DevOps Agentは、re:Invent 2025...
24日前

ホームルーターを新しくしたらwsl2のネットワークが遅くなった?
NCDC テックブログのフィード
はじめに10年ぶりぐらいにホームルーターを新しくしました。これでやっとWiFi6だぜ!と意気揚々としていたのですが、なぜか逆にWSL2のネットワークは遅くなってしまいました。普段からwsl2は快適に使っていました。しかし新しいルーターに変えたくらいから、Windows側のネットワークは問題ないのに、wsl2だけが遅くなりました。例えばapt upadateやその他のパッケージマネージャのインストールが全然進まないのです。こりゃいかんと思い調査してなんとか解決しました。 環境Windows 11 Pro 25H2WSL2 (Ubuntu 22.04) 「Large...
25日前

【Figma】グラデーション生成Figmaプラグイン「Aurora – Interactive Blur Gradient」を公開しました
NCDC テックブログのフィード
こんにちは。NCDC株式会社でデザイナーをしている、ふくだです。Figmaでのデザイン作業中、グラデーションの表現で悩むことが度々あります。Figmaの標準機能(LinearやRadial)だけでは、色が複雑に混ざり合うような表現を作るのは難しく、レイヤーを何枚も重ねてBlurをかけるなど、意外と手間がかかります。かといって、素材サイトで画像を探しても「色はいいけど形が違う」「ブランドカラーと微妙に合わない」など、理想通りの素材はなかなか見つからないのが現実です。そんな悩みを解決するために、直感的な操作でグラデーションを生成できるFigmaプラグイン 「Aurora – Int...
1ヶ月前

偶然の出会いが変えた育児UX 〜「必要ない」と思っていたロボット掃除機がデジタルネイティブな息子にもたらしたもの
NCDC テックブログのフィード
1. イントロダクション:諦めていた家事の効率化子育て中の家庭において、家事の負担軽減は永遠のテーマです。私たちNCDCでも、クライアント企業の事業を通じて、いかにユーザーの日常的なペインポイントを解消し、より良い体験(UX)を提供できるかを常に考えています。我が家も例に漏れず、共働きで4歳の息子と1歳の娘がいます。ロボット掃除機の導入は検討はしていましたが、「床に置いているものが多いから、ロボット掃除機を導入したとしてもどうせ掃除機使うことになるからいらない」という結論に達していました。これが、長らく我が家の持っていたインサイトでしたが、しかし、ひょんなことから無料でロ...
1ヶ月前

Azure ML パイプラインを公開して、実行してみた
NCDC テックブログのフィード
はじめに本記事では、Azure Machine Learning(Azure ML)で作成したパイプラインを公開し、ローカルから実行させてみたので、その手順を紹介します。Azure ML のパイプラインを REST API 経由で実行できるようにすることで、以下のようなメリットがあります。CI/CD パイプラインからの自動実行外部システムとの連携スケジュール実行や条件付き実行の実装チーム間でのパイプライン共有 前提条件以下の前提で話を進めます。Azure サブスクリプションを持っていることAzure ML ワークスペース、パイプラインが作成済みであること...
1ヶ月前

Azure Blob Storage にあるファイルを一括ダウンロードしたい
NCDC テックブログのフィード
とあるプロジェクトで、Azure Blob Storageを使っています。複数ファイルを一気にダウンロードしたいのですが、現状Azureポータル上からはできないため、一つずつ選択してダウンロードするのはあまりにも面倒です.....代わりに Azure Storage Explorer というのを使うと、複数ファイルを一括でダウンロードすることができたので、本記事ではインストールからダウンロードまでのやり方をご紹介します(Macを使ってやっていきます)。 インストール以下リンクから、Azure Storage Explorerをダウンロードするhttps://azure.mic...
1ヶ月前

Azure Table Storage を使ってみた
NCDC テックブログのフィード
はじめに私が参画しているとあるプロジェクトで、Blob Storage に CSV ファイルを置いてデータを管理していましたが、1 件のデータ取得や更新でもファイル全体を読み書きする必要があり、メタデータやタグを使って頑張っていましたが、機能数が増えるにつれ非効率さが問題になってきたので、別の方法を模索していました。そこで、Azure Table Storage を試してみたので、本記事では、実際に使ってみてわかったことをまとめます。Azure Table Storage の基本的な使い方RDB や Cosmos DB との違い実際に使ってわかった向き不向き Azu...
1ヶ月前

【Android】KotlinネイティブアプリからUnityアプリを呼び出してみた
NCDC テックブログのフィード
Kotlin のネイティブアプリから Unity アプリを呼び出してみた内容を記載します。※ 備忘録 & とりあえずの動作検証であったため、細かい部分の解説はありません。かなり "えいやっっ!" で動作させてみた内容です。【検証環境】Unity 6.2(6000.2.9f1)Android Studio Narwhal Feature Drop | 2025.1.2Kotlin:: 2.0.2Android, Unity Export: build.gradlecompileSdk: 36minSdk: 31targetSdk: 36【目次...
1ヶ月前

[TS TIP] 実用的な型定義を理解する 14選(後編)
NCDC テックブログのフィード
最初に前編では型レベル関数、Conditional Types、infer、satisfies など、「型を操作する基礎」 を扱いました。後編では 8~14 を扱います。前編は以下です。https://zenn.dev/ncdc/articles/022a1500718a71では、始めます。 8. Template Literal Types で文字列パターンを型にするTypeScript 4.1 以降、文字列型を 文字列の組み合わせパターンで定義できます。API の URL を型で保証したい場合type ApiVersion = "v1" | "v2";ty...
1ヶ月前

[TS TIP] 実用的な型定義を理解する 14選(前編)
NCDC テックブログのフィード
最初に普段TypeScriptを使用して実装している身として、型定義は非常に重要であることを理解しているつもりです。しかし、普段の業務では深い型定義の知識がなくても、調べればそれなりに実装できてしまう一方で、見ただけでパッと理解できていない自分がいることに焦りを感じました。そこで今回は、TypeScriptの型を基礎から実務で使うであろう機能を厳選し、記事に残しておこうと思います。本記事は 前編 と 後編 で分けていこうと思います。前編では 1〜7 を扱います。!本記事は、基本的なTSの型定義の使い方を理解している前提となるため、TS初学者や見直したい(リテラル...
1ヶ月前

[TIP] inversifyを使用してDIを本格化する(前回の続き)
NCDC テックブログのフィード
最初に前回の記事はこちらです。https://zenn.dev/ncdc/articles/0be30eb5e3f2a0前回の記事では、簡易的にコンストラクタで部品を渡すだけの DI を体験しました。今回は、DI ライブラリ inversify を使って、より本格的な依存性注入を実装してみます。inversify は TypeScript 向けの DI ライブラリで、Decorator で依存関係を明示Container で管理複数の実装を簡単に切り替え可能といった特徴があります。では始めます。 インストールnpm install inversify r...
1ヶ月前

[TIP] 改めてDI + DDDを理解する
NCDC テックブログのフィード
最初に今更ながら、DIについて曖昧な理解を断ち切りたいと思いました。そのために、今回は「hono + DI + DDD」を使用して、備忘録として残しておきます。では始めます。!本記事では、DI + DDDの理解を深めることが目的のため、「inversify」等のライブラリは使用せず、簡単な実装例を記載しています。実務ではあまり有効的な実装ではないことが前提です。 DI(依存性注入)とは?巷では、「依存性注入」という小難しい言葉を使用して説明されることが多いですが、要するに、「部品同士が直接くっつくのではなく、必要な部品は外から渡してあげる仕組み」のことです。...
1ヶ月前

[ORM] drizzleとは?基本的なクエリまで
NCDC テックブログのフィード
最初に最近プロジェクトでdrizzleを使用する機会があったので、備忘録として残しておきます。内容としては基本的な操作になります。では始めます。 他のORMとの違いは? CLI依存が少ない例えば、prismaでは基本的に以下の流れで開発を進めると思います。① スキーマを定義するschema.prismamodel User { id Int @id @default(autoincrement()) name String email String @unique}② CLIを実行する※ これやらないと、tsの補完がされないか...
1ヶ月前