Rust WordPress 自動化
wp-config.php 解析 CLI の構築
はじめに:なぜ今、WordPress運用をRustで自動化するのか
WordPressのバックアップやメンテナンスは、一般的にPHPやWP-CLI、あるいはプラグインで行われます。しかし、より高速で、より堅牢な運用を求めるなら「Rust」という選択肢があります。
本連載では、最終的にWordPressの全資産をGoogle Cloud Storage(GCS)へ自動転送する、自分専用のCLIツールの構築を目指します。第1回は、その心臓部である「wp-config.phpの設定抽出」と、開発基盤となるGitHub連携を解説します。
本記事で得られる成果(技術スタック)
この記事を読み終えると、以下の技術要素を組み合わせた開発の第一歩が完了します。
- Rust: 高速かつ安全なシステムプログラミング言語
- WSL2 / Ubuntu: Windows上のLinux開発環境
- GitHub: ED25519方式によるセキュアなコード管理
- Google Cloud Storage (GCS): 将来的なバックアップ先
Rust, WSL2, Ubuntu, GitHub, Google Cloud Storage
開発の思想:プラグインに頼らない「OSレイヤー」での高速運用
通常、WordPress内の処理はPHPが担います。しかし、大量の画像最適化や、クラウドへの並列アップロードにおいては、Rustの並行処理能力と低リソース消費が圧倒的なパフォーマンスを発揮します。
「プラグインを増やしてサイトを重くするのではなく、OSレイヤーで動作するシングルバイナリのツールで管理する」。これが本プロジェクトの設計思想です。
実装:wp-config.phpを解析するRust CLIの構築
最初のステップとして、WordPressの心臓部である wp-config.php からデータベース接続情報を動的に取得する機能を実装します。
1. 設計の意図:ハードコーディングの排除
DB名やユーザー情報をソースコードに直接書くのは避けるべきです。既存の設定ファイルを解析することで、どのWordPress環境でも動作する汎用的なCLIツールを目指します。
2. 最小構成のコード実装(main.rs)
Rustの std::fs::File と BufReader を使用し、高速かつメモリ効率の良いファイルスキャンを行います。
Rust
use std::fs::File;
use std::io::{self, BufRead};
fn main() {
let path = "wp-config.php";
// 【注記】これは構造を理解するための最小実装(Minimum Viable Product)です。
// 実運用では正規表現や字句解析ライブラリを用いた、より厳密なトークン解析を行います。
if let Ok(file) = File::open(path) {
let reader = io::BufReader::new(file);
for line in reader.lines() {
if let Ok(l) = line {
// 定数定義 'DB_NAME' を含む行を抽出
if l.contains("DB_NAME") {
println!("抽出成功: {}", l.trim());
}
}
}
} else {
eprintln!("エラー: {} が見つかりません。WordPressのルートディレクトリで実行してください。", path);
}
}
3. 将来的なデータ構造(設計図)
抽出した情報は、将来的に以下のような構造体(Struct)へ格納し、バックアップ処理やGoogle Cloudの認証へ引き渡す設計としています。
Rust
struct WordPressConfig {
db_name: String,
db_user: String,
db_password: String,
db_host: String,
}
運用の基盤:GitHubへのセキュアな公開とトラブル解決
コードを資産として管理するため、GitHubと連携させます。ここで多くの開発者が遭遇する「ブランチ名」のトラブルとその解決策を共有します。
「master / main」問題の再現と解決手順
Gitの初期化時に、ローカルのブランチ名が master になり、GitHub側の main と衝突することがあります。
- 発生する症状:
git push実行時にerror: src refspec main does not match anyと表示される。 - 原因: ローカルに
mainという名前のブランチが存在しないため。 - 解決策: 以下のコマンドでブランチ名を名称変更し、GitHubに統合します。
Bash
git branch -M main
git push -u origin main
FAQ:よくある疑問
A1. 実行速度の向上と、依存関係のない「シングルバイナリ」として配布できるためです。
サーバーにPHP以外のランタイムを入れずに、高速なバックアップ処理が可能になります。
A1. 本ツールはOS権限を適切に管理した上でローカル実行することを前提としています。
むしろDB情報を別途環境変数に持つ手間を省き、設定の一貫性を保てるメリットがあります。
まとめと次回予告:Google Cloud連携への布石
第1回では、RustによるWordPress解析の基本と、公開のための基盤を整えました。これで、自分の書いたコードが世界へつながる準備が完了しました。
次回予告:第2回「Google Cloud サービスアカウント設計とRustからの認証」 いよいよGoogle Cloud Storage(GCS)への接続を開始します。最小権限の原則(PoLP)に基づいたIAM設計と、非同期ランタイム tokio の導入により、実戦的なバックアップ基盤を構築します。
RustでWordPress運用を自動化する

コメントを残す