C++ソフト開発ツールのセオライザー

製品紹介

  • HOME »
  • 製品紹介

次世代シリアライザ Theolizer®(セオライザ)   【特許技術】

 

1.クラスを簡単に保存/回復したくはないですか?

C++のプログラミングで、構造体やクラスの取り扱いに困っていませんか? 私もC++プログラムの開発で「この構造体をこのまま保存できたらいいのに」、「このクラスをこのまま送信できたら楽なのに」と思っていました。
C言語やC++では構造体やクラスを直接バイナリ形式で保存/回復でできますが余分なメンバも保存されますし、エンディアン変換ができないので異なるコンピュータ間でのデータ交換に使えません。
 

2.シリアライザはそれを自動化します

そこで「シリアライザ」を検討した方もいると思います。C++用のシリアライザとして有名なものは、boost::serializationcerialがあります。これらを使えば、必要なメンバだけをxmlやJson等の形式で、コードをほとんど書かずに保存/回復できますので本当にありがたいです。

しかし、問題点が2点あります。

  1. 自動化可能なのに、プログラマが手で書かなくてはいけない保存/回復処理が残っています。
  2. バージョン変更時、回復処理の修正に非常に苦労します。(ver.4~5くらいから嫌になります。)
     
2-1.プログラマが書く保存/回復処理が結構残っています

C#のようにリフレクションを用いてクラスのメンバ変数リストを我々のプログラムが使えるようになっていれば、その情報を使って自動的に保存/回復する処理を書けることは分かっているのですが、残念ながらC++はその情報を提供してくれません。
ですので、メンバ変数を追加/削除/変更した時、それに対応した保存/回復用のメンバ変数リストをプログラマが手でメンテナンスする必要があるのです。
例えば、メンバ変数を追加した時シリアライズ関数も修正が必要なため、余分な作業に注意力を食われて辛いです。
 

2-2.バージョン変更時、保存/回復処理の修正に非常に苦労します

また、これらの内部データ構造はプログラムのバージョン・アップに伴い変わっていきます。その変更に対応できないとたいへん辛いです。例えば、ver.3のプログラムはver.1とver.2のデータも回復したいケースがほとんどと思います。すると、ver.2までに書いていた回復処理をver.3のデータを読めるように改造するだけでなくver.1, ver.2のデータを回復し、ver.3の形式へ変換できないといけません。
そして、ver.4にアップデートした場合、ver.4のデータだけでなく、ver.1, ver.2, ver.3のデータを回復してver.4の形式へ変換する処理を全て書き直すことになります。
そして、デバッグとテストのことを考えると憂鬱です。

 

3.Theolizer®はこれらの問題を解決します
3-1.メンバ変数リストを自動生成し、保存/回復処理の記述を自動化します

C++でもC#のように自動的に処理される方法はないか考えました。そしてClang/LLVMのlibToolingと言う構文解析ライブラリに辿り着きました。

  1. ソース・コードを解析しクラスのメンバ変数リストを自動生成するTheolizerドライバ
  2. そのメンバ変数リストを使って、保存/回復処理を行うTheolizerライブラリ

この2つにより保存/回復処理の開発が自動化されるため、皆さんはロジック開発に集中できます。
 

3-2.バージョン・アップ処理をカスケードに行います

旧来のシリアライザの場合、新たにver.4へバージョンアップした時、ver.1, ver.2, ver.3の各データをver.4データへ変換する処理を書く必要があります。
しかし、Theolizerは各バージョンの時に自動生成したメンバ変数リストを保持しますので、
ver.1→ver.2→ver.3→ver.4とカスケードにバージョンアップ処理します。
つまり、ver.4へバージョンアップした時、ver.3データをver.4データへ変換する処理を記述すれば良いのです。

[特許出願中です]
もし、この発明にご興味をお持ちの方がいらっしゃいましたらご連絡下さい。
ご相談に応じさせて頂きます。

 

4.Theolizer®があれば

ちょっと想像してみてください。クラスにメンバ変数を追加した時、保存/回復・通信コードを修正する必要がありません。従ってその修正に煩わされずにアプリケーション機能の開発に注力できるのです。
きっとあなたも、私のように「えっ? これで終わり?」と感じることでしょう。そして、Theolizer®を使えば、プロジェクトは余裕を持って締め切りに間に合うようになり、プログラムの開発コストを大きく削減できるようになるのです。
 

5.GitHubで公開してます

現在、GitHubにて公開しています。是非、Theolizer®に触れてみて下さい。

GitHubの公開リボジトリ(yossi-tahara/Theolizer)にて配布しています。
また、ドキュメントをdoc.theolizer.comにて公開しています。

6.対応環境

マルチ・プラットフォームでC++11規格コンパイラに対応できるよう設計しています。
現時点でテストできている環境は以下の通りです。

OS C++コンパイラ
Windows 10 Professional 64bit Visual Studio C++ 2017 Community
MinGW 7.1.0 32bit posix dwarf
MinGW 7.1.0 64bit posix seh
ubuntu 16.04 LTS 64bit gcc 5.4.0(Ubuntu 5.4.0-6ubuntu1~16.04.2)

将来的にはマッキントッシュOS Xにも対応する予定です。

  • Facebook
  • Hatena
  • twitter
  • Google+
  • twitter
PAGETOP
Copyright © Theoride Technology Co.,Ltd. All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.