畑です。
標題で結論を言ってしまいましたが、サイボウズ Office X の開発言語は C++ にすることにしました。今までのサイボウズ Office も C++ と独自のテンプレートエンジンで開発しており、その路線を踏襲することになります。
サイボウズ Office はCGIという仕組みで実装したWebアプリケーションですが、Webアプリケーションというと Perl, PHP, Python, Ruby といった軽量プログラミング言語で開発するものというイメージが強いかもしれません。実際、エンタープライズ向けにサイボウズが提供しているサイボウズ ガルーン 2 では開発言語として PHP を選択しました。では、なぜ Office X では C++ にしたかということです。
サイボウズ Office シリーズは今年で11年目になりますが、今度開発する Office X の開発フレームワークも10年ぐらいの寿命を持たせる必要があります。10年ぐらいのスパンで見ると PHP を選択した場合、何回かの言語自体のメジャーバージョンアップが予想され、PHP の旧バージョンのメンテナンス自体が保証されないというリスクも考慮する必要がでてきます。ソースコードが公開されているので自分達でメンテナンスするという方法も取れますが、その分コストがかかることになります。開発言語は開発する製品やサービスのソースコードの寿命を鑑みて選択すれば良い話なので、何も言語仕様が変更されることが悪いと言っているわけではありません。以上のような背景より、サイボウズ Office X の場合は後方互換性という点を重視して C++ を選択するという判断をしました。
また、C++ で開発する理由として高速化の観点もあります。パッケージソフトウェアの場合、ネット上のサービスと異なり、お客様のマシン環境で動作させることになります。高スペックのマシンで動作させる場合もあれば、そうでない場合もあります。つまり開発者側で選択することはできないので、低スペックのマシンでもなるべく動作するように開発する必要があります。インタプリタ言語で開発する場合、速度が求められる部分は後から C++ で実装して拡張モジュールとして呼び出そう、というようなアプローチが取られることもあるかと思います。しかし開発の現場として実際問題として後から C++ 化されずに、ずるずると高速化されないということが起こりうる可能性もあります。マネジメントの問題と言ってしまえばその通りなのですが、この「後から」問題を解決するべく「最初から」手法を導入するのも一案ではないでしょうか。
C++ にすることでメモリの確保に対するケアや、言語習得コストなど、それはそれで軽量プログラミング言語に対するデメリットも多々あります。しかしそれは結局のところ、どこにコストをかけて、どこのコストを削るかという割り切りの問題でしょう。どこのリスクを取って、どこのリスクを取らないか。いずれにせよ何かしらのリスクは取らなければならないのです。
あと、サイボウズ Office X では開発フレームワークから再設計するのですが、C++ で開発することにより、デバッグ済みの従来のサイボウズ Office シリーズのソースコードも活用できる部分がでてきます。
というわけで、今回の話をまとめると、開発言語として C++ を選択する理由は以下の通りです。
- 言語仕様の後方互換性
- 言語選択レベルでの高速化が不要
- 過去の資産の活用