TwitterFacebookRSS Feed

Anti-Pattern Inc. Engineering Blog

Anti-Pattern Inc.(株式会社アンチパターン)のエンジニアブログです。

Next.js の moduleResolution を TypeScript 7.0 目線で見直す

はじめに 普段開発している Next.js プロジェクトを VS Code で確認していたところ、tsconfig.json の moduleResolution: "node" に関するエラーが表示されていました。 moduleResolution は、TypeScript が import の参照先をどのように解決するかを決める設定です。普段の開発ではあまり意識しない項目ですが、Node.js、Next.js、バンドラー、TypeScript のバージョンによって適切な値が変わります。 今回エラーになっていた moduleResolution: "node" は、現在の TypeScript では node10 相当の古い解決方式として扱われます。 TypeScript 7.0 では、TypeScript 6.0 で非推奨となった一部の設定がハードエラーとして扱われるため、事前に見直しておく必要があります。その中に moduleResolution: "node" の解決方式も含まれています。 この記事では、VS Code 上で表示された moduleResoluti
Akira Yasuzawa
Akira Yasuzawa
4 min read

Slackリストのステータス管理がいまいちだったのでワークフローで解決した話

こんばんは 最近、業務情報のSlack集約に勤しんでいます。Slackリストを活用して、タスクの管理をするとリマインドやワークフローに組み込めたりなどしてとても便利です。タスク管理や案件管理など、これまでスプレッドシートや別ツールでやっていたことをSlack内で完結できるので非常にありがたいです。Slackbotを活用する上でも情報をSlackに集約することは重要な活動になるのではないでしょうか。 ただ、実際に運用してみると「ここ、もうちょっとどうにかならないの? 」というポイントが出てきました。今回は、Slackリストのステータス管理における「二重管理問題」を、ワークフローを使ってサクッと解決したお話です。 Slackリストの罠 Slackリストでリマインドや未完了タスク等の通知を使うには、「タスク追跡フィールド」という項目をリストに含める必要があります。 「タスク追跡フィールド」は主に完了チェックと期限日を使うので、これらがリストに含まれることで、期限日やステータスを確認して通知するというようなことができます。(ワークフローで通知の設定をしたけどエラーが出るぞと悩んでいた
atom
atom
3 min read

NotebookLMにGASのコードを放り込んで「説明書」を作ってみたよ

Google Apps Script(GAS)使ってますか。最近はAIに頼めばコード自体はすぐ書けるので、以前より活用の幅が広がったという人も多いのではないでしょうか。 ただ、実際に運用を始めると、次のような地味に困る問題が出てきませんか? * 「とりあえず動く」けど、中身をちゃんと把握できていない不安。 * 他の人にツールを渡すとき、毎回同じ説明をするのが面倒。 * 数ヶ月ぶりにコードを触ると、自分の書いたコードなのに「これ何だっけ?」となる。 かといって、わざわざWordやドキュメントでマニュアルを自作するのは大変。そんな悩みを解決するために、「NotebookLM」にGASのコードを読み込ませておけば「いつでも質問できる説明書」にできるのではと思って試してみた次第です。 1. GASでよくある「地味に困る」シチュエーション GASを使ってツールを作ると、時間が経つにつれていくつか課題が出てきます。 内容を正確に理解しきれていない AIにコードを書いてもらった場合、動作は完璧でも「なぜこの行が必要なのか」を細かく理解しきれていないことがあります。そのまま運用を続ける
atom
atom
4 min read

gitleaksを使ってsecretの誤コミット対策してみた

こんにちは、いわむらです。 AI エージェントといっしょに作業することが増えてきました。速くて助かる一方で、ローカルの設定値や検証用トークンが、気づかないうちにコミットに紛れ込むリスクは前より意識するようになりました。 間違ってコミットに含まれてしまうのを避けるため、機密情報はコミット前に機械的に止めるやり方にチャレンジしてみた内容を共有できたらと思っています。今回は、gitleaks を lefthook から pre-commit で実行する構成にしています。 本記事で紹介するのは次の3点です。 * なぜ git-secrets ではなく gitleaks に寄せたのか * ローカルで止める最小構成 * ローカルで漏れた場合に GitHub Actions でどう拾うか 人の注意に頼る場所を減らして、フローの中で止める形にしてみてます。 gitleaks に寄せた理由 もともとは git-secrets を使っていました。AWS 系の検知が優秀なのですが、それ以外のサービスには標準では対応していません。今回は AWS 以外も最初から広めに見たかったので、gitle
Jun Iwamura
Jun Iwamura
3 min read
AI, docker

AIエージェントを安全に動かすサンドボックス環境の作成

Claude Code の Auto Mode や GitHub Copilot CLI の Autopilot など、AIエージェントを自律的に動かす機能があります。 これらは非常に便利な反面、ホスト環境で直接動かすのは少し不安です。依存パッケージが汚染されたり、意図しないファイルを書き換えられたりするリスクがあります。 そこで今回は、エージェントをコンテナ内に閉じ込めつつ、ホストのプロジェクトディレクトリをシームレスに扱えるサンドボックス環境を作成しました。 https://github.com/yutakahashi114/sandbox -------------------------------------------------------------------------------- 概要 このツールは1つのシェルスクリプト sandbox を実行するだけで、Docker コンテナ上の開発環境に入ることができます。 $ sandbox # 現在のディレクトリで新しいセッションを開く $ sandbox -- <cm
Yu Takahashi
Yu Takahashi
3 min read

いまさら理解する「メモリとは?」- Webアプリケーションエンジニアのための低レイヤー入門シリーズ その2

先日、とあるサービスで OOMKilled が発生しまして、メモリリミットに引っかかったんですが、「そもそもなんでこんなにメモリ使ってるんだ?」を調査するのに、メモリの基礎知識が改めて大事だなと思いました。 ということで、「低レイヤー入門シリーズ」の第二弾はメモリについて深掘りしていきます! 前回の「スタティックリンクとダイナミックリンク」 [https://tech.anti-pattern.co.jp/imasarali-jie-surusutateitukurinkutodainamitukurinkunituite/] では、プログラムがどのように実行ファイルになるかを学びました。今回は、その実行ファイルが動くときに欠かせないメモリの仕組み を、C言語を使って体感していきましょう。 -------------------------------------------------------------------------------- なぜWebエンジニアがメモリを理解すべきか? 普段、Ruby on RailsやNode.js、Goなどで開発していると、メモ
Akihiro YAGASAKI
Akihiro YAGASAKI
9 min read

雇用保険の適用拡大について学ぼう!

こんにちは! アンチパターン管理部の森口です。 今回は、2024年5月10日に成立した「雇用保険法等の一部を改正する法律」で最も影響が大きい、2028年10月1日施行の「雇用保険の適用拡大」について学びたいと思います。 前提 労働者を1人でも雇用する事業は、原則として雇用保険の「強制適用事業」となり、事業主は、正社員・パート・アルバイトといった雇用形態にかかわらず、加入要件を満たす労働者を雇用保険に加入させる義務があります。 参考:第2章 雇用保険の適用について|厚生労働省 [https://www.mhlw.go.jp/file/06-Seisakujouhou-11600000-Shokugyouanteikyoku/0000172758.pdf] 雇用保険の適用拡大で何が変わるの? * 雇用保険の加入要件の一部が変わる 週の所定労働時間に関する要件が「週20時間以上」から「週10時間以上」に拡大されます。 これにより、今まで雇用保険の加入対象外であった「週10時間以上〜20時間未満」の短時間労働者に関しても、雇用保険の強制加入対象となります。 * 被保険者期
Sumomo Moriguchi
Sumomo Moriguchi
4 min read

合宿を通じた取り組み

1. はじめに:期初に「全員」で集まる理由 私たちの会社では、半期に一度、新しい期のスタートに合わせて社員全員が参加する、1泊2日の全社合宿、名付けて「AP合宿」なるものを開催しています。 熱海や湯河原などの温泉地に足を運び、日常のオフィスや自宅から離れた環境で、心身ともにリフレッシュしながら議論を深める時間を大切にしています。 現在、私たちはフルリモートワークが可能な環境で業務を行っています。画面越しでも円滑に仕事が進む一方で、全員が同じ場所に集まり、直接顔を合わせる機会は決して多くありません。だからこそ、この合宿は私たちにとって、単なる会議の場としてだけではなく、対面でのコミュニケーションを通じて組織の連携を再確認する貴重な機会でもあるのです。 (なお、「旅」としてのワクワク感を楽しんでもらえるよう、人事として「合宿のしおり」を作成しており、部屋割りの発表なども含めた恒例行事として定着しています。) 本記事では、1日目、2日目とそれぞれの行程を追いながら、今回のAP合宿で具体的にどのような議論が行われ、それが組織にどのような変化をもたらしたのか、人事の視点からそのプロセスを
Hina Takahashi
Hina Takahashi
5 min read
SaaSus Platform, Postman

SaaSus API が Postman に登場!APIの実行が気軽に行えるようになりました

SaaS 開発の認証やマルチテナント管理を支える SaaSus Platform。 これまで API の仕様を確認するには、ドキュメントを読み込み、コードを書いて実行する必要がありました。 この度、SaaSus API が Postman パブリックワークスペースに登場しました! Postman [https://www.postman.com/anti-pattern-inc/saasus-platform?sideView=agentMode]1. Postman で公開されると何が嬉しいのか? Postman パブリックワークスペースを利用することで、従来の開発フローにおける「手間」が以下のように解消されます。 * 認証設定の共通化: API キーなどの認証ヘッダー設定がテンプレート化されているため、設定ミスを防げます。 * 最新仕様が常に手元に: 公式のワークスペースを Fork すれば、常に最新のエンドポイント定義を同期して利用できます。 2. 最短で API を実行 以下の手順で、すぐに SaaSus API を手元で試せます。 1. ワークスペースへアク
Hiroki Kooriyama
Hiroki Kooriyama
2 min read
Cisco, Cisco Packet Tracer, GNS3, Simulation, arp, ping

ネットワーク機器が恋しくて その2

前回でCiscoの機器をいじり放題になったので、 機器をいじりながらプロトコルの勉強をしていきたいと思います。 今回はARP(Address Resolution Protocol)です。 ARPとは、OSI参照モデルの2層目のデータリンク層の通信をする際に利用するプロトコルで、IPアドレスからMACアドレスを取得するために利用します。 通信相手の識別にIPアドレスを利用する事が多いと思います。 例)PC0(192.168.0.1)からPC1(192.168.0.2)への通信など ですが、実はIPアドレスだけではパケットを届けることはできません。同じネットワーク内にいる機器同士は「MACアドレス」を頼りに通信するからです。 そこで登場するのがARPです。 「このIPアドレスの人は、どのMACアドレスを持ってますかー!?」と聞き回る、ネットワーク界の聞き込み調査員のようなプロトコルです。 さっそく、実際の通信を見ていきましょう。ハブをおいて、PCが複数台つながっているネットワークを用意します。 Cisco Catalyst 2960には特に設定しません。 PCは以下のように設定
yuichi.kotani
yuichi.kotani
4 min read

Bedrock Prompt Routerによりどれくらいコスト削減ができるのかを検証してみた

こんにちは。APでエンジニアインターンをしている鈴木鴻太です。 今回は、AWS Bedrock の Prompt Router を実装し、実際に複数のLLM を最適に振り分ける仕組みがどれだけのコスト削減を実現できるのかを、ベンチマーク結果を通じて検証してみました。 Bedrock Prompt Router とは? 概要 Bedrock Prompt Router は、ユーザーのクエリに基づいて複数の LLM の応答品質を自動予測 し、最適なモデルを自動選択する仕組みです。これにより品質を維持しながらコストを削減できます。 AWS の公式ドキュメントはこちら: * AWS Bedrock Prompt Router API Reference [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetPromptRouter.html] * 詳細解説記事(AWS ブログ) [https://aws.amazon.com/jp/blogs/machine-learning/use-amazon
kou135
kou135
6 min read

AWS CloudShell × Claude Code × Amazon Bedrock でWebフロントエンド開発を体験する

ryudaiです!今回は初心にかえって、「はじめてWebフロントエンド開発をする」人のためのチュートリアルを考えていきます。 前提として * すべての作業はAWS上で完結すること * すべてのコードはClaude Codeに書いてもらうこと とし、実施のハードルをなるべく下げることを意識していきます。 ※以下、リージョンは「ap-northeast-1」を想定しています。 ①リポジトリを用意する: AWS CodeCommit まず開発を始めるにあたって、Gitは使っていきたいですよね。 最近CodeCommitがGAに復活した [https://aws.amazon.com/jp/blogs/news/aws-codecommit-returns-to-general-availability/] ということで、積極的に使っていきたいと思います。 リポジトリ名は「front-sample」としています。 ②AWS CloudShellを用意する 次に、メインの開発環境であるCloudShellを用意していきます。 CloudShellの画面を開き、「Open a
Ryudai Anada
Ryudai Anada
4 min read