開発ツール・Tips

AI使った並列開発で頻発するコンフリクトを自動解消する仕組みを作った

CI/CDシリーズの4本目。1本目はデプロイパイプラインの土台、2本目はPRごとのプレビュー環境、前回はDB操作のワークフロー化について書いた。今回はAIエージェント(Devin、Claude)による並列開発で発生するコンフリクトの自動解消について。 背景: AIエー…

GitHub ActionsとECS Run TaskでDB操作を自動化する

CI/CDシリーズ: 1本目: Next.js + NestJSのモノレポでGitHub Actionsのデプロイパイプラインを構築した 2本目: Pull Requestごとにバックエンドも含めたプレビュー環境を自動構築する仕組みを作った 3本目: GitHub ActionsとECS Run TaskでDB操作を自動化す…

はてなブログ用のMCPサーバーを作った。更新にも対応

最近、はてなブログ用のMCPサーバーを作った。hatena-blog-mcp という名前で、更新系のAPIまで対応している。リポジトリは Keisuke69/hatena-blog-mcp に置いてある。経緯と使い方を軽くまとめておく。 github.com なぜ作ったか このブログ、何気に200記事を…

Next.js + Vercelのエラー監視ツールを今さら比較・検討|結局Sentryで落ち着いた話

本リリースも近いということでフロントエンドにエラー監視をちゃんと入れようと思い立った。これまでもSentryは別のプロジェクトで一応使ってきていて、使いこなしているとまでは言えないが、普通に回してはいる。なので今回もSentryでいいかな、とは思って…

はてなブログで個別記事をnoindex化するなら、記事本文じゃなくてブログ詳細設定に書こう

はじめに ぶっちゃけ、僕は自分のこのブログのSEOとかPVには、これまでほとんど興味がなかったんですよね。個人のブログだし、書きたいときに書きたいことを書いて、読みたい人が読めばいいやくらいのスタンス。一応Google AnalyticsとかGoogle Search Conso…

Claudeのカスタムコネクタで使えないBearer認証のMCPサーバーのためにOAuthプロキシを作って、モバイルからも使えるようにした

Twilog MCPというリモートMCPサーバーがある。自分の過去ツイートを検索したりできるやつで、Togetterが提供している。これをClaudeで使いたかったんだが上手く行かなかった。 TwilogのMCPを久しぶりに使おうと思ったらMCPサーバーに接続できないって言われ…

Pull Requestごとにバックエンドも含めたプレビュー環境を自動構築する仕組みを作った

CI/CDシリーズ: 1本目: Next.js + NestJSのモノレポでGitHub Actionsのデプロイパイプラインを構築した 2本目: Pull Requestごとにバックエンドも含めたプレビュー環境を自動構築する仕組みを作った(この記事) 3本目: GitHub ActionsとECS Run TaskでDB操…

Next.js + NestJSのモノレポでGitHub Actionsのデプロイパイプラインを構築した

CI/CDシリーズ: 1本目: Next.js + NestJSのモノレポでGitHub Actionsのデプロイパイプラインを構築した(この記事) 2本目: Pull Requestごとにバックエンドも含めたプレビュー環境を自動構築する仕組みを作った 3本目: GitHub ActionsとECS Run TaskでDB操…

昨今のSupply Chain Attackから守るためにTakumi Guardを入れてみた

背景 つい先日、LiteLLMに続き、axiosがやられて大騒ぎになった(なっている)のは記憶に新しい。 おいおい、axiosもか!axiosはやばいでしょ使われてるところめっちゃあるはず! https://t.co/eJMuLbxuPl— Keisuke Nishitani (@Keisuke69) 2026年3月31日 ax…

Claude Code in Slackをスマホで使ったレビュー|セットアップとできないこと

ちょっと前にClaude CodeとSlackがインテグレーションされて、Slackから直接Claude Codeを呼び出せるようになったというニュースを見た。 実は僕はずっとこれを待ち望んでいた。 Devinでの体験 というのも、以前はDevinを使っていて、僕的にはDevinに対する…

【XQuartz】PlaywrightのためにX WindowをApple SiliconとDev Containersで動かす

Playwrightを使ってアプリを開発しているときにデバッグ起動したりUIモードで起動したりする場合、コンテナ上で起動するGUIをホストOS上に表示する必要があるため、X Window Systemが必要(Playwrightをコマンドラインのみで利用する場合いらない)。 Dev Co…

Macのメニューバーに表示されるアイコンの表示・非表示を切り替えられるBartenderの代替ツール、『Ice』が良さげ

小ネタです。 はじめに 長年Macでメニューバーの表示をカスタマイズするのにBartenderというユーティリティソフトを利用していた。 これはメニューに多くのアイコンが表示されるのが鬱陶しく感じる人はもちろん、メニューバー上のアイコンが忌まわしきノッチ…

Dev Containersでuvを扱う

最近久しぶりにPythonを使った新しいプロジェクトを始めるにあたり、パッケージ管理にuvっていうのがあるというのを恥ずかしながら初めて知った。 GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust. · GitHub…

Blueskyへの投稿をXにも反映する方法

今日から仕事でまたブラジルに行くのだけど数日前からブラジルではXの利用が禁止されてしまった。 https://www.jiji.com/jc/article?k=2024083100172&g=intwww.jiji.com VPNとかで回避すればいいかと思ったものの、VPN等での回避は約130万円の罰金が課される…

【SQL】月別で集計するときに値がない月は0と表示したい

SQLに関するメモ。前提としてPostgreSQLを使っています。 以下のようなTimestamp型で日時の情報を持つテーブルがあるとする。 id: integer timestamp: timestamp with time zone 1 2022-01-01 00:00:00+00 2 2022-02-01 00:00:00+00 3 2022-10-01 00:00:00+0…

MapboxのDirections APIを試してみる

Mapboxというのは地図情報のサービス。地図の点だけで言えばGoogle Mapとかと同じようなものと言えば同じようなものなのだけどカスタマイズ性の高さとビジュアライズ周りに強みがあると思っている。なので地図をベースにしたいろんな表現が可能になっている…

令和時代のページネーションを考える (REST API編)

今回はバックエンドAPIでページネーションをどうやるかについての話なので、よくある無限スクロールUIのようなフロントエンド側の実装に関する話はしない。あくまでもAPI、もっと言えばRESTfulなAPIのリクエスト・レスポンスにおけるページネーションの話。 …

脱Firestoreするために考えていること(追記あり)

FirebaseのFirestoreをやめることにしたので雑なメモを残しておく。なお、まだ走り始めたばかりなので、内容には間違いや考慮不足も多数含まれる可能性があるので読む人はその点注意を。あと、あくまでも雑なメモなので細かいところは書いていない。 なぜ脱F…

Ubuntuのコンテナにwatchmanを頑張って入れる

元はServerless Frameworkでserverless-appsync-simulatorとserverless-offlineを使おうと思ったら Error: spawn watchman ENOENTっていうエラーが出て起動できず、ぐぐったらwatchmanをインストールすればいいってことでその対応。 MacならHomebrewであっさ…

MacをMontereyにアップデートしたらFlaskが5000番ポートで起動できなくなった

Flaskではデフォルトでは5000番ポートで開発サーバが起動する。 自分はとあるアプリの開発で普段、Flaskで開発したとあるアプリをMac上で起動しているんだけどこれがある日うまく動かなくなった。アプリケーション的になにかをいじったわけではなく、ぱっと…

Remote ContainersのNode.js環境でGitの補完を設定する

知ってる人も多いと思いますが、GitにはGitのコマンドやブランチ名のタブ補完ができるような設定が同梱されてます。 それを自分が使ってるMacとかの開発マシンに設定するだけですぐに使えるようになって便利なので設定していきます。 ただ、MacやWinとかでの…

JavaScriptで正確な時を刻む

ちょっと大げさなタイトルだけど単にJavaScriptで時間を計測するような処理を実装しようとしたら上手く行かなかった話。 最初は普通に1秒おきにカウントしていけばいいだけなんじゃないの?と思って安直にこんな感じで書いてみた。 //ゼロ埋め const padding…

React Native製アプリをBitriseでビルドするとタイムアウトする場合

はじめに 最近、React Nativeで作ったアプリをBitriseでビルドするのを試しています。 ワークフロー自体はBitrise側が連携するリポジトリをスキャンして雛形を用意してくれるので導入自体は簡単です。 ところが、Bitriseのビルドはプランごとにビルド時間の…

BitriseでOutOfMemoryErrorが発生してビルドが失敗する場合

備忘録です。 最近、React Nativeで作ったアプリをBitriseでビルドするのを試しています。 Bitrise - Mobile Continuous Integration and Delivery このBitriseというプラットフォームはとても使いやすくて、ビルドのためのワークフローの定義も直感的にでき…

初心者向け! こんなときどうする⁉︎ GitのTips31選!

2021/03/01に数年ぶりに更新しつつ書き直しました!オリジナルはこのブログで7年前に書いたもので、途中からはQiitaで更新していたのですが今後はこちらを更新します。 Gitを使って開発してる場合によくあることを簡単にまとめました。 特に使い始めの頃とか…

Pythonで設定ファイルの処理にOmegaConfを使う

今回も小ネタです。 はじめに OmegaConfとは やってみる はじめに これまでPythonで設定ファイルっぽいものを扱うときにはyamlファイルを用意してそれを普通に読み込んで使ってました。 例えば以下のようなyamlをconfig.yamlとして用意した場合、 name: Scot…

VS CodeでPythonのLinterとしてPylintの代わりにflake8を導入するメモ

完全に自分用メモです。 VS CodeでPython書いてるんですがLinter、つまりコード規約のガイドラインにどの程度沿っているか静的解析をするツールとして標準でPylintが有効になってるんですがそれを使うのではなくflake8を入れるって話です。 なぜ、flake8を入…

辞書型のリストを特定の値で検索する

Pythonの話です。見る人が見たらどうってことない話なんでしょうがちょっと混乱したのでメモ。 以下のような構造のリストがあったとします。 [ { "key": 1, "name": "Foo Bar", "email": "foobar@example.com" }, { "key": 2, "name": "Scott Tiger", "email…

Poetryでプライベートリポジトリからインストールする3つの方法

Poetryでプライベートリポジトリからパッケージをインストールする必要がありいろいろ調べてみたのでそのメモ。あとAWS CodeArtifactも試してみたので。 はじめに まず、pipもpoetryも基本的には依存関係の解決、つまりパッケージのインストールにはPyPIとい…

Microsoft Edge Tools for VS Codeを試したらいい感じだったが消化不良に終わった

はじめに Microsoft Edge Tools for VS Code Microsoft Edge やってみる Pros / Cons Pros Cons まとめ はじめに React.jsとかVue.jsとか使ったアプリケーションの開発にはVS Codeを使っています。最近発表されたMicrosoft Edge Tools for VS Codeを試したら…

©Keisuke Nishitani, 2023   プライバシーポリシー