FileBlog Ver.4.0 はサーバサイドのプログラムの完全64ビット化を実現しました。
その理由とメリット・デメリットなどについて説明します

64ビット化の理由

FileBlogが64ビット化した理由は下記の通りです

  1. 現時点でほとんどのPCは64ビットCPUを搭載しており、その性能をフルに引き出すには64ビットアプリケーションとして開発する必要があるから
  2. 将来のWindows OSのバージョンアップによって既存の32ビットアプリは動かなくなってしまうリスクがあるから

CPU進化の必然

CPUの進化によって一度に扱うデータ量は増え続け、2019年現在のPC向けマイクロプロセッサの主力は64ビットCPUとなっています。

  • 1970年ごろ、4ビットプロセッサ搭載のマイコンが生まれました
  • 1980年代のパソコンは、Z-80に代表される 8ビットPCが中心でした。
  • MS-DOSの時代、1990年ごろのパソコンは、インテル8086系(80286など)に代表される16ビットCPUを搭載したものが中心でした
  • Windows95の時代、1990年台後半から32ビットCPU(Pentiumなど)がPC市場でも普及しました。
  • 2010年ごろから以降、ほとんどのPCは64ビットプロセッサを搭載しています

32ビットアプリケーションに永遠の将来は無い

Windows OSが新しくなると、次第に古いアプリは動かなくなっていきます

  • たとえば、Windows 7には16ビットアプリを動作させる「XPモード」がありましたが、Windows10ではXPモードのサポートが無くなり、16ビットアプリはもはや動きません。
  • 2019年現在、64ビットWindows OSには、WOW64というエミュレータが用意されていて、32ビットアプリケーションを動作させるための仮想環境を提供していますが、将来のWindows OSのバージョンアップによって、WOW64のサポートはいつか打ち切られることでしょう。
  • 長期にわたって使い続けるシステムをこれから導入するならば、64ビットアプリケーションを選ぶべきなのです

64ビット化のメリット

64ビットアプリケーションは、64ビットOS上で、64ビットCPUを搭載したPCの性能をフルに引き出すことが可能です。特に32ビットアプリケーションと比較して大きなアドバンテージは下記の通りです。

(数百倍~数千倍の)広いメモリ空間を利用できる

広いメモリ空間こそは、64ビットアプリの最大のメリットであり、他のメリットの多くもそこから派生しています。

32ビットアプリで利用可能なメモリ空間は2GBに限定されます。OSが予約するメモリ空間を差し引くと、ひとつのアプリケーションプロセスで利用できるメモリは1GB強しかありません。多くのメモリを消費するアプリケーションでは、メモリリソースが不足して動作不能に陥ってしまう恐れがありました。

一方で64ビットアプリケーションでは、ハードウェアに搭載されたメモリを事実上無制限に利用できます。昨今のPCサーバ向けマザーボードの多くは、数テラバイト程度の物理メモリを搭載できるように設計されています。例えば1TBのメモリを搭載したマシンでは、64ビットアプリから1TBのメモリが利用できますが、これは32ビットアプリで利用可能な1GBの1000倍に相当します。

同時並列処理の多重度を引き上げられる

サーバアプリケーションでは、一般に一台のサーバで複数のユーザからのサービス要求に応える必要があります。一つのアプリケーションプロセスの内部で複数の処理を並列して行うためには、処理の多重度に比例的にメモリ空間を消費します。

現代のマルチコアCPUは、1つのCPU内に多数のCPUコアを持って、同時多重処理を行うことができますが、32ビットアプリケーションの場合には狭いメモリ空間の制約が災いして、処理の多重度には限界がありました。

64ビットアプリケーションを十分なメモリを搭載した環境で稼働させれば、処理の多重度を大きく引き上げることが可能になります。

なぜ今まで64ビット化しなかったのか?

ここまで64ビット化のメリットを説明してきましたが、これを知った皆さんは

「そんなにメリットがあるなら、なぜ、もっと早く完全64ビット化をしなかったのか?」と思われることでしょう。

FileBlogは2013年から検索エンジンを64ビット化済です

実は、完全64ビット化の6年前、2013年にリリースしたFileBlog Ver.3.3以来、FileBlogに組み込まれた全文検索エンジンApache Solrは、64ビットOS環境においては、64ビットアプリケーションとして動作しています。

これは、FileBlogを構成するいくつものプログラムの中で、最も大量のメモリリソースを必要とするのが全文検索エンジンであるためです。検索エンジンの64ビット化によって数千万文書を超えるような大量文書のインデクシングがすでに可能になっていました。

それ以外のプログラムは、相対的に少ないメモリでも十分稼働できるため、32ビットアプリケーションのままでも大きな問題になることはなかったのです。

64ビット化にはデメリットもあります

アプリケーションを64ビット化することで、広いメモリ空間が使えるというメリットを享受できますが、もともと大量のメモリを必要としないアプリケーションの場合には、あえて64ビット化しても、これといったメリットはありません。

  • 処理性能については、多少、速くなるかもしれませんが、大幅な向上は見込めません。
  • 実行環境が変わってしまうので、インストール・運用の仕方も変わります
    • 32ビットプログラムのインストールフォルダは、一般に C:\Program Files (x86) 以下にインストールされますが、64ビットプログラムは C:\Program Files 以下にインストールされます。
    • システム設定のレジストリの保存場所なども、64ビットアプリと32ビットアプリとではどうしても変化していまいます。
  • 消費メモリの量が、2割~3割ほど、増えてしまいます。

むしろ、既存のお客様が64ビット版FileBlogにアップグレードすると、メモリリソースの必要量が増えてしまうため、搭載メモリに余裕のない環境では、かえって性能が低下してしまう危険があります。

そしてもちろん、32ビットアプリケーションの64ビット化には、それなりの開発工数がかかりますので、多くのベンダーが64ビット化を躊躇するのです。

いま完全64ビット化に踏み切った理由

64ビット化はいつか避けては通れませんが、既存ユーザのメリットが大きくないことから先送りをしてきたというのが現実です。

それでも今回完全な64ビット化に踏み切ったのは、下記のような理由です。

  • お客様環境のほとんどで十分なメモリが利用可能になったため
    • メモリ価格の下落により、メモリ消費量増大のコストが無視できるようになりました。
    • FileBlogサーバに必要なメモリ量について、過去数年間、少し多めの推奨値を提示し続けてきたため、既存のお客様環境においてもメモリ不足の心配は少ないと考えられます。
  • 64ビットOSの完全な普及が進み、32ビットアプリのサポート打ち切りの可能性があること
    • Windows 2008 R2のリリース以来、WindowsサーバOSは完全64ビットOSとなりました。
    • Windows 2012 / Windows 2016 / Windows 2019 と3世代にわたって64ビットOSが出荷されました。
    • そろそろ、次のサーバOSで32ビットサポートが打ち切られても驚きではありません。
  • 大規模ユーザでの導入事例・引き合いが増えてきているため
    • 64ビット化の恩恵を最も享受できるのはユーザ数・文書数の多い大規模ユーザのケースです。従来こういった大規模案件においては、複数台のサーバによる分散構成で対応していましたが、64ビット化によって標準的なサーバ1台の構成で対応可能な案件規模を大きくすることで、より安価に、より簡単に大規模環境を構築できるようになります。
  • 32ビット版と64ビット版の両方を同時並行で開発・出荷・サポートするのは非合理なため
    • 既存ユーザには32ビット版のメンテナンスリリースを続けながら、新規ユーザに64ビット版を提供するという方法も考えられます。
    • しかし、二つのバージョンを並行して開発・テスト・サポートする負荷は馬鹿にならず、必ず製品品質やサポート品質の低下としてお客様にご迷惑をかけてしまいます。
    • サポートするべき最新版を一つに絞り込むなら、64ビット一本化しかありません。