-オープンソースのSNSエンジン OpenPNEプロジェクト-

2系から3系へのDBコンバータ

08 / 20 木曜日 2009

 OpenPNE開発チームの深町です。主にOpenPNE3の開発をしています。

 今、大急ぎで開発を進めているものの1つに「DBコンバータ」があります。これは、既存のOpenPNE2で作られたSNSをOpenPNE3に移行させるため、2系のDBを3系仕様に一発変換するというステキかつ壮大なものです。

 このDBコンバータの完成を待って公式SNS(現状2系で運営)も3系に移行することになります。

 公式SNSのOpenPNE3化を心待ちにしている方もいるでしょうから、開発の進捗状況と今後の方針などを書いてみようと思います。

これまでの開発秘話

それって前々から作ってなかったっけ?

 実はDBコンバータの開発を始めたのは何ヶ月か前のことです。そのときも自分一人で開発を進めていました。

 独立したPHPスクリプトとして作り始めたDBコンバータ。一応の完成は見たのですが、実際に公式SNSの移行作業をするとうまくいかない。特に画像データの移行ができませんでした。

 そして僕は、

「この方法はダメだ。いくらPHPと言えど原始的すぎる」

と思い、もっといい方法はないものかと考え始めたのです。

 このせいで移行が遅れたという点ではお詫びします。

DBコンバータを作り直す

 独立したPHPスクリプトではSQL文を大量に処理しなければならず、見た目も保守性も悪いものです。僕が作ったんだからよくわかります。あれは確かにかっこわるい

「もっと抽象化して扱えればいいのだけど」

 海老原さんに相談した結果、symfonyのタスクとして実装してはどうかという案をもらいました。

 そしてその方針でDBコンバータを再び作り直しているわけです。

symfonyのタスクとしての実装

 理想としては以下のような呪文を叩くだけでDBが3系のものに置き換わるような実装です。

$ ./symfony openpne:upgrade-from-2

 とても簡単。かっこいい

 それにこういった実装だとOpenPNE3に組み込まれたDoctrineを使ってDBを抽象化できますしね。今までよりずっと良い方法であることは疑いようがないわけです。

今考えている仕様と動作制約

 当然ながら僕はこの呪文が多くのSNS管理者様に唱えてもらえることを望んでいます。なので、できれば管理者の方々に負担をかけたくありません。

 できるだけ皆が楽できるように、極力自動化することを目指します。

  • upgrade-from-2を唱えると今までのデータを引き継いだOpenPNE3のSNSがセットアップされる
  • 当然そのあとにプラグインのインストールなどの煩わしい作業はない
  • 2系のデータはすべて残す (3系未実装項目があるため)

 自動的にセットアップし、プラグインもインストールして、データも移行する。

 個人的には、DBだけでなく、サイトデザインもまるごと移行できればいいなとも思っているのですが、それはまだまだ夢の段階のようです。

OpenPNE3化で失うもの

 この移行はきっとすばらしいものではありますが、失うものもあります。

 OpenPNE2とOpenPNE3は、言ってしまえばまったく別ものなので、「2系にある機能」なのに「3系では未実装」、という機能がいくつかあります。

 機能の対応状況は下のページに詳しく書いてあります。「実装済み」になっていない機能は対応されていない可能性が高いです。

OpenPNE3機能一覧

 これらの機能はOpenPNE3化後は使えません(これは僕のせいではありませんよ)。今できることは開発チームをムチ打って大急ぎで実装させるか、実装される日のために黙って今までのデータを大事に取っておくことくらいです。

2系のデータはどうなる?

 こういった事情から、2系のデータはそのまま取っておかなければなりません。この扱いについては今一度憂慮するべきでしょう。将来的にはいろんな環境のSNSでも便利に使ってもらいたいと考えてはいます。

 ただ、とりあえずは動くものを作りたい。なので実装の手間を考えて、2系のデータはDBごと残し、3系はDBを新規作成してインストールするようにしています。つまりOpenPNE3化するためにはデータベースが2個必要です。

 レンタルサーバではDBが1個に限定されているところも多いので、どうしても後回しになってしまいますが、別に見捨てたつもりはないです。

開発の進捗状況

 まだ使える状態ではありませんが、開発は以下のブランチ上で進めています。

http://trac.openpne.jp/browser/OpenPNE3/branches/fukamachi/db-convert-from-2.x/

 DBコンバータ自体はopenpneUpgradeFrom2Task.class.phpです。

 先ほど、やっとDB変換のための初期処理まで完成したところです。芯の部分は明日からですね。

ツッコミと激励と

 このDBコンバータについては完全に深町が一人で開発をしているので、直接僕に聞こえるようにメールなりつぶやくなりしてくれればいいです。

E-Mail : fukamachi@tejimaya.net
Twitter : http://twitter.com/nitro_idiot
公式SNS : ID:6996

 自分もまた開発が進み次第、つぶやいたり記事書いたりします。

 ではごきげんよう。

コメント:2

ホームページ作成F 10-12-13 (月) 17:03

期待します!!
ぜひ頑張って成し遂げて欲しいです!!!!

3にしたいです!!

kiwa 10-12-23 (木) 0:02

ホームページ作成F さん>
OpenPNE3.4 から OpenPNE2→OpenPNE3 のコンバートができるようになってますよ!

ページの先頭に戻る