移行ツール aiseed-migration-kit

aiseed-migration-kit は、 組織のIT——公開Web・文書・メール・業務——を、 git・SQL・メール・OnlyOffice・静的公開という開いた土台へ移すためのツール一式です。 amig というコマンドが移行の各段階を支援します。ライセンスは AGPL-3.0。

現在の実装範囲は移行の入口にあたる公開Web(脱CMS: 静的化と Cloudflare Pages 配信)と 問い合わせ(申込様式+メール受付)です。業務システム・文書・メール側の設計は リポジトリの DESIGN.md に、実装例は seminar-kit にあります。

設計の考え方 — 三つの閉じた世界を、開かれた世界に

組織の情報環境は、三つの閉じた世界に分かれてきました。

それぞれが独自形式と契約で閉じているため、データは外に出しにくく、 世界の境界をまたぐたびに転記と受け渡しが生じます。業務の分断と属人化の正体です。 まず、それぞれの世界のどこが問題なのかを具体的に見ます。

三つの世界の、どこが問題か

Microsoft 365

認証の縛り

自動化の袋小路

組み込みAIのリスク

データの軽視

契約の構造

業務システム

CMS/スマートフォン

三つに共通するのは、データと業務の形を道具の側が決めてしまうこと。 そして、その世界の境界を埋めているのが人間の手作業だということです。

繋ぎ役の交代 — それが今

これまで、三つの世界を繋いできたのは人間でした——画面を見ながらの転記、 CSV の受け渡し、紙の帳票。繋ぐコードを書かせれば高額で、 書ける人も足りなかったからです。

それらを接続するコードを、AI が書けるようになった。それが今です。 AI は閉じた世界の独自形式を読み解き、開いた形式(Markdown / YAML / SQL)への 変換を書き、OSS の部品同士を繋ぐコードを書きます。三つの世界に欠けていた 「境界を越える力」が、初めて現実の道具になりました。 実例は既にあります——cf-publish は Python の世界と Cloudflare Pages を繋ぎ、CJKフレンドリー三部作 は 日本語と Markdown・組版・SVG 描画を繋ぐ。どれも AI と協働して書かれ、 実際の製品の中で毎日動いている「接続するコード」です。

こうして三つの世界は、一つの開いた土台(git・SQL・メール・OnlyOffice・静的公開)に 置き換わります——内容は Markdown+git で版管理・承認し、受付は様式(xlsx)を 唯一の定義とする機械可読な経路にし、必要な業務だけ認証・DBを備えたアプリにする。 AI が書いた接続は人が確認し、コードとして git に凍結するので、 日々の運用に AI は残りません(AI は道具として使い、成果物を残す)。 公開Web側から見れば「CMS移行キット」、文書・メール側から見れば 「Microsoft 365 移行キット」——同じ道具の、顔が違うだけです。

ただし全業務を無条件に移すのではなく、業務ごとに要否で水準を選びます。 単独・小規模のサイトなら「静的化まで」で十分な場合も多く、 その判断が移行のいちばん最初の仕事です。

閉じた世界をつくらない — 公開標準でつなぐ

移行の目的は、別の閉じた世界(自前スタックへの新しいロックイン)への 引っ越しではありません。部品は少数の公開標準で疎結合につなぎます。

自己記述で、AIが扱えて、多くの道具が読める形式だから、部品は差し替えられ、 データはツールより長生きし、この仕組み自体からも出られます。 檻から出ることと、出た先を檻にしないこと——その両方が「開放」です。

amig のパイプライン

移行は一発変換ではなく、人が確認・修正できる段階に分かれています。

amig new sites/mysite            # 1. サイトの雛形を作る(site.yaml を編集)
amig ingest sites/mysite ~/data  # 2. 元データ(CMSの書き出しHTML等)を取り込む
amig classify sites/mysite       # 3. 記事/一覧に分類 — 結果は人が直せる
amig convert sites/mysite        # 4. 記事を content/*.md へ機械変換(下書き)
amig build sites/mysite          # 5. dist/ に静的サイトを生成
amig publish sites/mysite        # 6. Cloudflare Pages へ配信(運用判断で実行)

要点は3つあります。

  1. 内容の正は content/ の Markdown+frontmatter — CMS のデータベースではなく、 git で版管理できるテキストがサイトの本体になります
  2. convert は既存の .md を上書きしない — 機械変換はあくまで下書きで、 人が仕上げた原稿を壊しません(--force を明示したときだけ上書き)
  3. publish は自動では走らない — 公開はいつも運用側の判断で実行します

配信は cf-publish、日本語Markdownの解釈は mdit-py-cjk-friendly と、同じ思想の小さな部品を組み合わせています。

問い合わせ設計 — 様式(xlsx)+メール受付

本キットは Webフォームを作りません。サーバー側に受付処理を持つと、 それ自体が保守と攻撃面になるからです。かわりに、昔ながらの「様式」を 機械可読にして使います。

amig forms sites/mysite            # 様式 xlsx を生成(公開サイトに載る)
amig mailin sites/mysite --once    # 受付メールを担当フォルダへ振り分け

なお、WordPressを当面使い続けながら問い合わせデータだけを先に引き取る緊急措置は FormRescue にまとめています。フォームは素のHTML+Turnstileになるため、 のちに本キットで静的化しても、データの引き取りは一日も途切れません。

共同編集と認証

どこまで移すかは選べる

運用形態が構成を決めます。公開Webの静的化だけなら、サーバーの常時運用は不要で Cloudflare Pages の無料枠に収まります。問い合わせを足すならメールの受け口、 業務アプリまで移すなら機関内サーバー——と、引き受けられる運用の水準に合わせて 段階的に選べる構成です。

動かす場所 — Linux の自宅サーバー

移行した道具を動かし続ける場所には、Linux の自宅サーバーという選択肢があります。 AI を使えば構築も運用ももう難しくなく、常時稼働のコストは 自宅サーバー < VPS・クラウド < 大手クラウド の順です。 「AIをどう使うか」から始まるこの話は、自宅AIサーバーのページ にまとめています。


他のパッケージとの関係は OSSパッケージ紹介 へ。

GitHub: aiseed-dev/aiseed-migration-kit