pbschema-lens を作った

こんにちは。涼しくなってきましたね。

Protocol Buffers スキーマのドキュメントツールは幾つもありますが、以下を満たすものがなかったので作りました。 pbschema-lens です。できたてほやほやですがお試しいただければ幸い。

github.com

  • 無償で使える
  • カスタムオプションがきれいに表示される
  • 導入の手間が少ない
  • 大規模スキーマ向けに相互リンクや検索ができる

既存のドキュメンテーションツールやサービスとしては、Buf Schema Registry (BSR) や protoc-gen-doc, Protobuffet などがあります。詳しいことは DMM さんが過去に記事にまとめているのでそちらをお読みください。

developersblog.dmm.com

その記事にも書いてあるのですが BSR は最も出来が良いものの、非公開の利用においてはタイプ数(≒メッセージ数)に比例した料金体系というのに加え、BSR 上で閲覧者を管理する手間が大きくかかります。 Protobuffet は一瞬使ったのですが、カスタムオプションが表示できないのと、Docusaurus ベースで使い勝手が悪かったです。なお、公開スキーマなら断然 BSR でよいと思います!

続きを読む

Virtual monorepo のすゝめ

TL;DR プロダクトの構成要素が多数の Git リポジトリに分かれているが、モノリポ化するのは大変。でもコーディングエージェントにはモノリポのほうが文脈与えやすくて、どうしよう。そんなあなたに virtual monorepo パターンと実際の使い方を指南します。

Claude Code をはじめとするコーディングエージェントを一切使わないというのは、今や難しいご時世かと思います。 私も多用していますが、その話はまた後日に。今回は身の回りでそれなりに流行している virtual monorepo というパターンを紹介します。

続きを読む

AIエージェント自作のための基礎知識

世は大 AI 時代ということで、調べ事や開発に様々な AI を利用するようになりました。 AI 失業だの SaaS is dead だのと騒がしいですが、そういうのは今日は置いておきます。

AI を使うのも良いですけど、せっかくソフトウェアエンジニアをやっているのですから、自分で作ってみるのもいいですよね。 結論から先に書いておくと、AIエージェントも今どきは簡単に自作できるようになっています。

この記事では Google 製の Agent Development Kit (ADK) を使いますが、何を使うにせよ、そもそも AI エージェントがどう動いているか理解しておかないと効率が悪いです。 それだって AI に聞けば出てくる、、わけですが、まあ人間が要点をまとめた記事にもまだ五円くらいは価値があるかなってことでまとめてみました。 ... お察しの通り、AI に指示して書かせたわけですけど、まあ ymmt 監修ということで。


AI エージェント開発の基本概念と、Go で Google Agent Development Kit (ADK) を使ってエージェントを構築する方法を解説します。 LLM ベースのエージェント開発が初めての Go 開発者を対象としています。

目次

  1. AI エージェントとは
  2. エージェントとフロントエンドの通信
  3. スレッド、ブランチ、セッション、ラン
  4. フロントエンドの要件
  5. ADK と genai SDK
  6. Gemini モデル: Google AI Studio と Vertex AI
  7. LLM エージェントの構造
  8. インストラクション
  9. グラウンディング
  10. ツールの使い方
  11. サブエージェント
  12. 全体像
続きを読む

U-NEXTが良い

はじめにお断り。私は U-NEXT の株主で、優待で U-NEXT を利用しています。 この記事は銘柄を推奨するものではありません。投資は自己責任でお願いします。

我が家は夫婦揃ってインドア派で、インドアで楽しめる動画サブスクは重宝しています。 契約中のサービスは Amazon Prime Video, Netflix, Hulu。Disney+ は過去契約してました。 最近ここに U-NEXT が加わったのですが、比較して満足度が高いのでちょろっと紹介。

動画ビューワーの出来が良い

続きを読む

docker buildx bake で高速並列ビルド

Docker ビルド職人の朝は早いーー

毎日コンテナイメージを山ほどビルドしては捨てている皆様、おはようございます。 ビルドの速度はそのまま CI にかかる時間だったりするので、短縮には余念のないことと思います。

レイヤのキャッシュやマルチステージビルドといった基本テクニックについて、ご存じない方は以下の記事がお勧めです。

future-architect.github.io

この記事では、良い Dockerfile をさらに活用できる、かもしれない docker buildx bake について紹介します。

続きを読む

やんないほうがいいかも、GitHub Actions の setup-xxx での依存キャッシュ保存

GitHub Actions で CI している皆様、こんにちは。
GitHub Actions 便利ですよね。使わない日がないというくらい毎日お世話になっています。

さて、CI といえば良く問題になるのが実行時間。 長い待ち時間は開発効率を下げますし、プライベートリポジトリだと Runner の費用も嵩んでしまいます。 時間を短縮する方法は色々ありますが、一手目によく行われるのが依存パッケージのキャッシュじゃないかなと思います。

例えば Go で開発していると、依存パッケージは ~/go/pkg/mod にダウンロードして保存されます。 これを CI 実行のたびにダウンロードしてコンパイルするのは時間とお金の無駄というものです。

幸い、GitHub Actions には CI の実行間でこういった依存パッケージを保存して再利用できるキャッシュ機能があります。 詳しくは以下のドキュメントをご覧ください。

Caching dependencies to speed up workflows - GitHub Docs

とか書いてますが、面倒くさがりな私はこれまでまともにこのキャッシュ機能を調べたことはありませんでした。 なぜって GitHub はとても親切なので、以下のようにするだけでキャッシュ機能で依存関係を保存して再利用できるようにしてくれているからです。

jobs:
  test:
    name: Run tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-go@v5
      with:
        cache: true

注目は cache: true です。こうするだけで Go の依存パッケージをキャッシュしてくれます。 しかもデフォルトが true なので、実は書かなくても大丈夫。えらい!楽!以上!

・・・そうは問屋が卸さなかったのが今回の話です。

続きを読む

AlloyDB で初期ユーザーとさよならする話

AlloyDB, 正式には AlloyDB for PostgreSQL は名前が示す通り PostgreSQL 互換の Google Cloud 上で利用できるマネージドデータベースです。 AWS だと Aurora が類似のサービスで、ストレージとコンピュートのノードが分離したアーキテクチャになっていてスケーラビリティや可用性に優れます。

諸事情で最近 AlloyDB を使っているんですが、通常の PostgreSQL とはちょっと違う点があります。 たぶん最たるものがユーザーと role 周りでしょう。

PostgreSQL の通常のユーザー認証はユーザー名とパスワードで行われます。 AlloyDB のクラスタを作成するときも、postgres という初期ユーザーが平文で指定したパスワードで作られます。

他のマネージドサービスの認証は通常このようなユーザー名パスワード方式ではなく、IAM のユーザーないしサービスアカウントで行われます。 内部的には短期間で expire する認証トークンを発行して OAuth しているのでしょうが、クライアントライブラリ等が自動で処理するのが通常であるため、利用者観点では認証が自動で行われて快適かつセキュアです。 AlloyDB は通常のユーザーに加えて IAM ユーザーで認証して利用することもできます。

さて、そうなると当然平文パスワードで作成した初期ユーザーは捨てて IAM ユーザーだけにしたくなります。 結論から言えばできます。

続きを読む