気まぐれな備忘録(仮)

いちようSEしてるので、プログラミングの備忘録的なものを書いてます

ER図作成ツール ERD Designer は VSCode 拡張機能に対応しています

最近ブロクの更新を怠っていたが、 ERD Designer の改善はこつこつ続けている。実は昨年末 2025年12月に ERD Designer を VSCode 拡張機能に対応させ、VSCode の Marketplace よりインストールすれば、VSCode でも利用できるようになっている。

marketplace.visualstudio.com

ERD Designer とは、ブラウザだけで利用できる ERMaster 代替を目指した ER 図作成ツールであり、詳細は以下のエントリを参照してもらいたい。

kajitiluna.hatenablog.com

VSCode 拡張機能の場合は、はじめに .erd 拡張子の空ファイルを作成し、VSCode で開くことで ERD Designer が起動し、ブラウザと同様の操作感で利用できるようになっている。ファイルを直接操作できることで git 管理しやすく、利用状況によってはこちらの方が扱いやすいかもしれない。

当初は VSCode 拡張機能への対応は想定していなかった。生成 AI の活用を想定した場合、MCP Server への対応は必要だろうと考え (2025年秋ごろ)、ブラウザだと MCP Server の対応が技術的制約により困難だったため、VSCode で MCP Server を起動することで対応した。 VSCode 拡張機能をインストールした際の初期設定では MCP Server は立ち上がらないようにしており、設定により VSCode 起動時に MCP Server が起動するようにしている。MCP Server 対応はまだ十分ではない状況ではあるが、しかしながら、GitHub Copilot に試させたところ、イマイチ活用できていない感がしている。最近の時流を踏まえると、このツールの場合は MCP Server よりAgent SKILLS の方が相性がよいかもしれない。

その他の機能追加

VSCode 拡張機能の対応以外としては、以下の機能追加、改善を行っている。

直近は Issue に起票されているテーブルやカラム単位の文字コードや COLLATE などのオプション指定の対応に取り組む予定。

ER図作成ツール ERD Designer の機能追加 | Perspective, カラムのドラッグ移動 (2025.11)

ブラウザだけで利用できる ERMaster 代替を目指した ER 図作成ツールを作っていることを投稿した (背景等は過去のエントリ参照)。

kajitiluna.hatenablog.com kajitiluna.hatenablog.com

ブログの更新はご無沙汰であったが、地味に機能追加は行っていたので、ここで前回からの追加分を紹介したい。とは言っても、すべて覚えているわけではないのだが。

  • Perspective 機能 (機能などに応じた表示のグルーピング機能)
  • カラムのドラッグ&ドロップによる同一テーブル内の位置移動
  • PostgreSQL の GENERATED ALWAYS AS IDENTITY 対応
  • Schema 定義

なお、GitHub のリポジトリ、Google Workspace で公開しているアプリのリンクはこちら

github.com workspace.google.com

機能追加について

Perspective 機能 (機能などに応じた表示のグルーピング機能)

Perspective は、ER 図内のテーブルとメモを機能別・目的別など応じて論理的にグループ化し、表示を切り替えることができる機能である。 テーブル数が多くなった場合などに、表示をグルーピングすることを意図したものである。 ツールによってはシートを分けて別表示にするものもあるが、あくまで全体の配置を意識できるよう、表示の ON/OFF の制御にすることにした。(これは ERMaster のカテゴリ機能と同様の表示である)

なお、機能名をどうするかは悩んだが、あくまで表示の制御のみを担い、どのように使うかは利用者に委ねることを意図して、視点的なニュアンスにとどまるよう、Perspective という名称にした。日本人的にはあまり馴染まないが。

Perspective 機能の設定方法

はじめに設定メニューの Perspective を選択し、Perspective 一覧を表示する。

設定 > Perspective

下記キャプチャは既に Perspective を作成済みだが、はじめての場合は Add perspective ボタンより追加する。一覧画面にて、Perspective に表示するテーブルやメモを選択する。

perspective 一覧

なお、Perspective を作成済みの場合は、下記キャプチャのようにテーブル/メモ選択時に eye アイコンが表示されるので、この eye アイコンよりテーブル/メモ 単位で Perspective で表示するか否かを設定できる。

Perspective 機能の表示方法

Perspective を作成したら、左メニューの Perspective のドロップダウンメニューが選択できるようになるので、これより Perspective の表示を切り替える。リレーションについては、関連する両方のテーブルが Perspective に含まれている場合に限り描画されるようにしているが、Show half-bounded line を ON にすることで、リレーションの関連テーブルの一方が Perspective に含まれていない場合でも表示できる。

カラムのドラッグ&ドロップによる同一テーブル内の位置移動

従来 などのボタンを押さないと移動できなかったので、ドラッグ&ドロップで移動できるようにした。これはカラムに限らずインデクスの順序も同様に操作できるようにした。

PostgreSQL の GENERATED ALWAYS AS IDENTITY 対応

Feature Request: Generated Columnへの対応 · Issue #104 · kajitiluna/erd-designer · GitHub にて要望をいただいたもの (hizumiyazaki さん提案ありがとうございます!)。 PostgreSQL でも SERIAL ではなくて IDENTITY が設定できるようになったの知らなかった。MySQL の AUTO INCREMENT や MS SQL Server の IDENTITY と同じ感覚で PostgreSQL でも GENERATED ALWAYS AS IDENTITY を設定できるようにした。

PostgreSQL の GENERATED ALWAYS AS IDENTITY

その他

PostgreSQL, MS SQL Server の場合に schema を定義できるようにし、テーブル定義にて作成した schema を選択できるようにした。

今後の機能追加について

昨今の AI エージェントの登場により、ER 図を手動で作成する機会が減ったり、DDL 出力を AI エージェントに任せる、という傾向は増えてきているのではないかと思っている。つまり ER 図の作成は AI エージェントに任せるのが楽で、手動で作成するのは手間だということである。一方で、プロダクトを持続維持するためには AI エージェントの単独機能では半ば心もとなく感じている (細かい調整を AI エージェントに依頼するのは手間であり、これは手動でサクッと済ませたい)。

この傾向を踏まえ、本ツールも MCP Server 対応を現在実装中である。ただ、MCP Server となるとブラウザ機能では対応できないため、VSCode の拡張機能での対応にはなるが。 こちらも対応ができ次第、改めて紹介したい。

余談

なお、本ツールの名称である ERD Designer は公開当時は名称が被らないようエゴサしていたのだが、最近(2025年11月くらい)、MariaDB にて同じ名称の類似機能が Enterprise Manager の機能のひとつとして公開された模様である。

うーん。有名どころと名称が被っちゃうとググラビリティが悪くなるんだよなぁ。。

ER図作成ツール ERD Designer の機能追加 (2025.07)

ブラウザだけで利用できる ERMaster 代替を目指した ER 図作成ツールを作っていることを投稿した (背景等は過去のエントリ参照)。

kajitiluna.hatenablog.com kajitiluna.hatenablog.com

今回は下記機能追加について紹介したい。

  • DDL ファイルの読み込み
  • 関連線のスタイル追加

なお、GitHub のリポジトリ、Google Workspace で公開しているアプリのリンクはこちら

github.com workspace.google.com

DDL ファイルの読み込み

Experimental な機能として、DDL を読み込んで 既に構築済みのデータベースがある場合、その DDL を読み込むことで ERD Designer にて管理できるようになる。

DDL の解析は node-sql-parser を利用している。 DDL のパターンについて、大して検証できているわけではないので、うまく読み込みができないパターンがあるかもしれない。 その場合は GItHub Issue に起票してほしい。

DDL の読み込み方法

DDL を読み込む場合、左上のタイトル横に配置している設定アイコンの Import from DDL より行う。

ダイアログが表示されるので、テキストエリアにインポートする DLL を入力する。

なお、Comment Separator は他ツールからの以降を想定したもので、ツールによってはコメントに論理名に加え、セパレータ文字列の後に補足説明を追加できる。Comment Separator にそのセパレータ文字列を入力することで、インポートした際に logical name と description に取り込むことができる。

CHECK DDL ボタンを押せば、DDL の1文ごとに取り込みできるかのチェック結果を確認できる。

なお、現時点では ERD Designer ではテーブル制約でユニーク制約を定義できない。このため、DDL にテーブル制約でユニーク制約を定義している場合、代替処置として、ユニークインデクス定義として取り込むようにしている。

関連線のスタイル追加

関連線の表示についても、いくつかの機能を追加した。

  • 関連線の色変更
  • 関連線の太さ変更
  • 関連線の描画方式の変更

特に、これまでは直線の描画のみだったが、他のER図描画ツールではよくある水平線/垂直線の描画オプションを追加した。 この水平線/垂直線の描画は、中々奥が深く、どこまでこだわるかによって、実装難易度が変わってくる。

ERD Designer の方針として、できるかぎり直感的な操作を目指しているので、自然に描画できることを心がけた。

無料の ER図作成ツールでここまで直感的に関連線を引けるものはないと自負している。

今後の機能追加について

ER図の設計として必要な機能はある程度提供できるようになったとは思っている。 今後は、操作上の改善やデータモデル設計の補助ツールとして改善していこうと考えている。

今、ぼんやりと考えている機能は以下の通り

(赤文字は 2026/04/27 追記)

  • カラムの順序変更が以外に手間がかかるので、このあたりの操作性の改善 -> 実はテーブル編集ダイアログ (Edit Table) にて、カラムをドラッグ & ドロップにより順序を変更できるようになっています。
  • 現状リレーショナルデータベースのみの管理だが、他のデータストレージを同時に管理できる機能

もし、他にも機能追加の要望や不具合等ありましたら、コメントいただけるとありがたいです。

ERD Designer にカラムグループ機能とカラム名個別定義を追加

前回、ブラウザだけで利用できる ERMaster 代替を目指したツールを作っていることを投稿した (背景等は前回のエントリ参照)。

kajitiluna.hatenablog.com

その後も軽微な改善を行っており、今回、下記機能を追加したので紹介したい。

  • カラムのグループ管理
  • カラムごとの物理名 / 論理名の定義

なお、GitHub のリポジトリ、Google Workspace で公開しているアプリのリンクはこちら

github.com

workspace.google.com

カラムのグループ管理

カラムグループとは、いくつかのカラム定義をまとめて、複数のテーブルで共有して利用できるもの。例えば、全てのテーブル定義に作成日時と更新日時を定義する場合、カラムグループ定義にて、作成日時と更新日時を定義したカラムグループを用意することで、各テーブルに個別に定義することなく、該当のカラムグループを利用できる。

もし、(こんなケースはほぼないと思うが) 後で全てのテーブルに作成日時と更新日時と合わせて削除日時を追加することになった場合、このカラムグループに削除日時のカラムを追加すれば、該当カラムグループを利用しているテーブルに削除日時が自動的に追加されることになる。

常にセットで利用するカラムがあるのであれば、カラムグループを利用することで、設計作業は効率的になると考えている。

カラムグループの利用方法

カラムグループの利用するには、下記2ステップの手順をとる。

  1. カラムグループの定義追加
  2. 各テーブル定義でカラムグループの利用

カラムグループの定義追加

カラムグループの定義は左上のタイトル横に配置している設定アイコンより行う。

上記メニューより、Column Groups ダイアログが表示されるので、ここでカラムグループの追加や更新を行う。

上記画像は、作成日時と更新日時のカラムを定義したものである。カラム追加はテーブル定義と同じ要領でできる。

ここのダイアログでカラムグループを設定すれば、各テーブル定義で利用する準備はできた。

各テーブル定義でカラムグループの利用

カラムグループの利用はシンプルで、テーブル定義にて「Add column group」を選択すればよい。カラムグループの選択画面が表示されるので、追加したいグループを指定する。カラムグループは編集画面上は1行で表示されるが、ER図上ではグループが展開され定義したカラムが表示されるようになっている。

カラムごとの物理名 / 論理名の定義

カラム定義は共有して利用するようになっている。これは、複数テーブルにて共通のカラムの定義がある場合、都度カラム定義を作成する必要はなく、一度作成したカラム定義を他テーブルで共通して利用することができる。これにより、例えばユーザIDの型や物理名などの変更が必要な場合、カラム定義を一つ修正するだけで、それを利用している他のテーブルにも自動的に反映されるメリットがある。

一方で、カラム名を共有しているために、別のカラム名を付けたい場合は別のカラム定義を行う必要があった。 例えば、 TODO タスクを扱うテーブル定義にて、作成者と担当者を管理する場合、作成者のユーザIDと担当者のユーザIDのカラムを定義する必要がある。ユーザIDの型は同一ではあるが、カラム名を別に定義するために、個別のカラム定義を行うことになる。もし、ユーザIDの型を変更する場合、この作成者や担当者のユーザIDは、ユーザIDのカラム定義とは別定義のため、個別に変更が必要になる。

これでは手間がかかるので、カラム定義は共通のものを利用しつつ、必要に応じてカラム名をテーブルごとに個別に定義できる機能を追加した。

カラム名を個別に定義するには、上記画像のように Override Names に物理名もしくは論理名を設定することで、カラム定義の物理名 / 論理名ではなく、こちらの個別の設定が利用されるようになる。物理名 / 論理名以外はカラム定義を利用することになるので、この図の場合、ユーザIDの型を変更すると、こちらにも自動的に反映されることになる。

その他

なお、今回の更新に合わせて、リレーション周りの操作に不具合がありリレーションを定義できない状態になっていたので、合わせて修正した。リレーション周りは親テーブルのPK更新にて子テーブルの更新を行っているため、このあたりの処理は複雑になっている。。

また、現状デフォルト値の定義ができないので、こちらも早期に対応したい。

もしよければ、試しに使ってみてフィードバックいただけると非常にありがたいです。不具合が見つかったり改善要望などありましたら GitHub Issue に起票いただけると助かります。

ブラウザで利用できる ERMaster の代替ツールをつくっている

背景 | ERMaster は非常に便利なのだが

ERMaster は非常に便利で、2025 年現在でもプロジェクトで利用している。しかしながら、本家は10年近く更新されておらず、使い込んでいると色々困ることが起こる。

  • ある程度テーブル数が増えると、不具合によりファイルサイズが肥大化する。
    • ファイルサイズが肥大化すると読み込みに時間がかかるようになるため、バグで出力された不要な行を削除するスクリプトを作ってしのいでいる。
  • 保存するたびに erm ファイル内の順序が変わるため、git 管理しづらい。
  • 2010 年頃以降のDBの更新が反映されていない。たとえば、PostgreSQL の json, jsonb 型が反映されておらず利用できない。

ERMaster の素晴らしいところは、視覚的に全体を俯瞰してテーブル設計ができ、これをインプットとしてテーブル定義仕様書や DDL を出力できることである。世の中の代替ツールを探そうとしても、これに合致するものは見つからない (有償版までは調べていない)。検索しても、以下のようなもので「テーブル設計を起点に実装を出力できること」を満たすツールが見つけられなかった。

  • よくヒットするのが、SchemaSpy など、データベースのテーブル定義から ER 図を作成するもの。確かに、ドキュメントがない案件だと重宝するツールだが、これだと、視覚的に全体を俯瞰するのが最後になってしまい、設計を起点にできない。
  • miro や draw.io のように作図はできるが、ここから仕様書や DDL を出力することができない。ER 図は単なるお絵描きで、DDL を自分で作成する手間がかかる。特にテーブル定義に至っては、作図ツールで記載した内容と類似するものを作成する事になり、手間だし二重管理になってしまう。

有志によって ERMaster をフォークして開発されていたりする。上記課題は解決できそうだが、元々が Eclipse プラグインであるため、フォークされたものも Eclipse プラグインなので、これらを利用するにはダウンロードしたりなど手間がかかる。

今の御時世、インストールする手間をかけることなく、ブラウザで完結させ、手軽にお試しできるツールがほしい。 海外のサイトにはそれっぽいものもあったが、サインアップする必要があったり、見た目が好みでなかったり ERMaster のような爽快な操作性ではなかった。

なので、ブラウザだけで利用できる ERMaster 代替を目指したツールを作った 元々は TypeScript + React の勉強が主目的だったが

ブラウザで動作する、ERMaster 代替を目指したツール ERD Designer について

ブラウザより kajitiluna.github.io/erd-designer にアクセスすれば利用できる。 単純なクライアントアプリケーションとして作成しており、バックエンドのサーバは用意していない。なので、作成したデータはローカルに保存され、外部サーバ等クラウドには一切保存しない。

GitHub のリポジトリはコチラ。 github.com

一人で開発しているので、ERMaster ほど潤沢に機能は揃っていない。現在、実装している機能は以下の通り。

  • RDBMS は PostgreSQL, MySQL に対応
  • テーブル定義にて、カラムの物理名、論理名の定義
  • PK, NotNull, Unique 制約の定義
  • インデクス定義
  • 共有カラムモデル機能により、一度定義したカラムを複数のテーブルで共有できる (ERMaster の辞書機能みたいなもの)
  • リレーションの定義にて、多重度の定義が可能
  • メモ機能。付箋のようなものを配置できる
  • DDL の出力
  • ER図の png 画像出力
  • テーブル定義書を Excel ファイルとして出力

操作性の機能としては、以下に対応している。

  • PK, FK を視覚的に表示
  • インデクス定義されているカラムに * を付与 (ERMaster だと、詳細ダイアログを開かないとインデクス定義されているのかわからなかった)
  • テーブルをドラッグで移動
  • テーブルをダブルクリックで編集
  • 短径領域をドラッグすることで、複数のテーブルとメモを選択 (なぜか FireFox だとできない)。複数選択状態でドラッグすると、まとめて移動できる
  • リレーションの線分を、ドラッグ操作で折り曲げる。また頂点を両端を結ぶ線分上にドラッグすることで、線分の折り曲げを解除
  • 拡大と縮小表示
  • クリックやドラッグ操作できる箇所にマウスがホバーされた際に、マウスカーソルの表示を変更
  • アンドゥ (ctrl +z, cmd + z) とリドゥ (ctrl + y, cmd + shift + z, cmd + y) に対応。

また、作成内容を共有したり構成管理できるよう、ファイル出力も備えている(拡張子は .erd だが、中身は json ファイル)。 下記に記載する Google Drive App 機能を利用せずに他の人と共有する際は、この .erd ファイルを利用すれば良い。

なお、この .erd ファイルには作成したテーブルやカラムの定義以外にも、選択したデータベースのカラムの型定義も含まれている。 これは、はじめに「 json, jsonb 型が反映されておらず利用できない」と記載したが、この課題への対応を意図したものである。 新しい型が追加された際に本ツールが追随できなかったとしても、単なる型名の表記であれば .erd ファイルに新しい型定義を追加することで対応できるようにしている。 (具体的な追加方法は、別途マニュアル等に記載したい)

Google Drive App 機能について

なお、本アプリは Google Drive App にも対応しており、以下より Google Workspace にインストールすることで、Google Drive 上のファイルを操作できるようになる。 workspace.google.com

基本的な機能は上記のツールと同等だが、以下の点が異なる。

  • 編集するたびに自動的に Google Drive 上のファイルを上書き保存
  • テーブル定義書は Excel ファイルではなく、Google スプレッドシートとして同一ディレクトリに出力
    • 制約事項として、Excel ファイルだと ER図を添付できたが、Google スプレッドシートでは API が公開されていなかったため画像貼り付けできなかった
  • Google Drive 上のファイルを同時編集した場合は、先勝ちとなる。(同時照会はできるが、同時編集は未対応)

今後の機能追加について

あくまで個人的にほしいと思った機能を作ったので、ERMaster にあるが、こちらにはない機能も多数ある。 例えば以下の機能には対応していない。(とはいっても、追加したいがまだできていないものもあるので、現時点で想定しているものとそうでないものを分けて記載)

(赤文字は 2026/04/27 追記)

  • 今後追加したい
    • このツールのマニュアル! GitHub リポジトリの Wiki で公開したい -> GitHub Wiki に公開済み
    • カラムのグループ定義 -> 2025/06/07 時点で対応済み
    • テーブル検索機能
    • PostgreSQL のスキーマ定義やテータベースごとの定義 -> スキーマは定義できるように対応済み
    • PostgreSQL や MySQL 以外のデータベース -> MS SQL Server を追加済み
  • ERMaster にはあるが、多分追加しない (もし希望があれば、検討するかも。。。)
    • PostgreSQL のシーケンス定義
    • View の定義
    • トリガーの定義
    • 複合一意キーの定義 (これ、インデクスにUNIQUEつけるのでは駄目なの?) -> インデクス定義とは別に設定できるように対応済み
    • ERMaster のカテゴリ機能 (カテゴリごとにタブで表示を切り替えできるアレ) -> Perspective 機能として対応済み
    • ER図の表記法の変更
    • Java ソースコードの出力
    • 翻訳機能
    • 画像の挿入
    • テーブル定義書の HTML 出力
    • テーブル定義書のテンプレート

特にマニュアルがないのは非常によろしくない。余力があれば追加していきたい。

もしよければ、試しに使ってみてフィードバックいただけると非常にありがたいです。不具合が見つかったり改善要望などありましたら GitHub Issue に起票いただけると助かります。

Maven依存ライブラリの「ソースコード」を指定ディレクトリに出力する

ほんとーに備忘録。
pom.xmlで指定したライブラリを指定ディレクトリに出力するには下記コマンドを実行すれば良い。

mvn dependency:copy-dependencies -DoutputDirectory=path-to-output

同様にソースコード(を固めたjar)も出力したい!と思ってぐぐってみても、なかなかヒットしない。
最終的にmavenの本家サイトにたどり着く。
Apache Maven Dependency Plugin – dependency:copy-dependencies

mvn dependency:copy-dependencies -Dclassifier=sources -DoutputDirectory=path-to-output

classiferオプションを指定すれば良いみたい。

VagrantとDockerを使ってRedis, Elasticsearch, MySQLをセットアップする

前回に引き続きVagrantネタを。

Redis + Elasticsearchを利用した開発環境をローカルマシンに構築しようと思い、ググっていたところ以下の記事を見つけた。postd.cc

Redis + Elasticsearchでまさに求めていた内容!ということで試してみたが、docker imageのpullが失敗してうまくできない。。ということで、ちょっと修正してみた。
また、元記事ではUbuntuにてVMを起動しDBにPostgreSQLを利用してるが、CentOSで動かしたいのとDBはMySQLを使いたかったので、こちらも合わせて変更した。

ちなみに動作確認マシンはMacBookProです。

事前準備

まずは、Homebrew, VirtualBox, Vagrantは元記事と同様にインストール。

プロキシVMのVagrantfile

プロキシVMのVagrantfile(ファイル名はVagrantfile.proxy)は以下のように修正

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "hfm4/centos-with-docker"
  config.vm.provision "docker"
  config.vm.provision "shell", inline:
    "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"

  config.vm.network :forwarded_port, guest: 6379, host: 6379
  config.vm.network :forwarded_port, guest: 3306, host: 3306
  config.vm.network :forwarded_port, guest: 9200, host: 9200
end

プロキシVM用のイメージはhfm4/centos-with-dockerのCentOS6.5を使用している。このBoxを選んだ理由は、Discover Vagrant Boxes | Atlas by HashiCorpにて
CentOS+dockerのキーワードでヒットしたから。他のBoxでもいいのかも。
なお、Port ForwardingはPostgreSQLの5432をMySQLの3306に変更。

DockerコンテナのVagrantfile

次に、DockerコンテナのVagrantfile(ファイル名はVagrantfile)はコチラ。

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.define "redis" do |v|
    v.vm.provider "docker" do |d|
      d.image = "redis"
      d.volumes = ["/var/docker/redis:/data"]
      d.ports = ["6379:6379"]
      d.vagrant_vagrantfile = "./Vagrantfile.proxy"
    end
  end

  config.vm.define "elasticsearch" do |v|
    v.vm.provider "docker" do |d|
      d.image = "elasticsearch"
      d.ports = ["9200:9200"]
      d.vagrant_vagrantfile = "./Vagrantfile.proxy"
    end
  end

  config.vm.define "mysql" do |v|
    v.vm.provider "docker" do |d|
      d.image = "mysql"
      d.volumes = ["/var/docker/mysql:/data"]
      d.ports = ["3306:3306"]
      d.env = {
        MYSQL_DATABASE: "test_db",
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      }
      d.vagrant_vagrantfile = "./Vagrantfile.proxy"
    end
  end
end

元記事からの変更点としては、各コンテナのimageの値を変更。あとはPostgreSQLMySQLに変更。MySQL環境変数(MYSQL_DATABASEなど)はここmysql Repository | Docker Hub Registry - Repositories of Docker ImagesのEnvironment Variablesを参考に設定。上記の設定はパスワード未指定でログイン可能にしているので、流用時はよしなに設定を変更してください。

起動&停止

あとは、元記事と同じくvagrantを起動。

$ vagrant up --provider=docker

vagrant up」だけではプロキシVMが起動しないようなので、providerオプションは必要みたい。
初回実行時はプロキシVMとDockerコンテナのDLに時間がかかるのでしばし待つ。エラーが発生しなければ、下記コマンドで状態を確認できる。

$ vagrant status
Current machine states:

redis                     running (docker)
elasticsearch             running (docker)
mysql                     running (docker)

global-statusを指定するとプロキシVMも確認できる。

$ vagrant global-status

id       name          provider   state    directory
------------------------------------------------------------------------------------------------
29d4e38  default       virtualbox running  /Users/kajitiluna/_Work/vagrant
5c659c2  mysql         docker     running  /Users/kajitiluna/_Work/vagrant
7d841ac  redis         docker     running  /Users/kajitiluna/_Work/vagrant
4f5cab0  elasticsearch docker     running  /Users/kajitiluna/_Work/vagrant

なお、「vagrant halt」で停止するとプロキシVMだけは止まらないので、プロキシVMを止める場合は追加で「vagrant halt <id>」を実行する必要あり。