Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++RAD Studio事例

受賞歴のあるFileOptimizerの開発にC++Builderを選択

smartmockups lcu0539t

この記事は、C++開発者のJavier Gutiérrez Chamorro氏の投稿です。彼は、複数の賞を受賞しているFileOptimizerというC++アプリケーションの開発者で、永年にわたってC++Builderを利用しています。記事では、C++のIDEとしてC++Builderを選び続けている理由と、開発成功の裏話を語っています。

Javier Gutiérrez ChamorroとFileOptimizer

C++ Builder Is The Choice For The Award-Winning FileOptimizer - the GPL screen for FileOptimizer

私、Javier Gutiérrez Chamorroは、受賞歴のあるFileOptimizerというツールを作り、メインの開発者を務めています。このプロジェクトは、「Project of the Week」や「Project of the Month」といった賞で何度も表彰いただいているSourceForge、「Building Good with C++ Builder Contest 2021」で評価いただいたエンバカデロなど、サードパーティによってもサポートされています。

まずはじめに、経緯を説明しましょう。私はほぼ25年前から技術関係の仕事をしてきましたが、そのうちの10年ぐらいは、DelphiやC++Builderには関わっていません。私は、JavaScript、HTML、PHP、さまざまなライブラリやフレームワーク、そしてツール チェーンに関わってきました。業務中に、WebサイトやiOSアプリに読み込まれる画像を、簡単に最適化してサイズを縮小し、ロードやレンダリングの速度を向上させることができるプログラムが必要になることがよくあります。

FileOptimizerは基本的に、ファイルの可逆圧縮という難しい仕事を実行する、強力ではあるが使いにくいコマンドラインツールのGUIフロントエンドです。PNG画像、MP4ビデオ、PDFリーフレット、Word文書のいずれを参照していても、FileOptimizerはそれを認識し、最適化のために適切なプラグインにアクションを渡します。そのポイントは、元のファイルとまったく同じように見え、まったく同じ形式を使用し、同じ元のツールで開くことができるファイルが得られますが、サイズが小さくなることです。

FileOptimizerの背後にある開発プロセス

メモリやディスク容量に大きな制限があった1980年代では、ファイルの小ささは重要なポイントでした。数ギガバイトのRAMと数テラバイトのディスクを使用する現在、それは昔話のように聞こえるかもしれませんが、そうではありません。多くのデバイス (スマートフォン、タブレットなど) では、ハードウェア機能に制限があり、それらの多くが同じ制約を抱えています。また、帯域幅が制約となる場合もあります。帯域幅は貴重なので、Webサイトでは、1000Kの大きさの画像ではなく、100Kの同じ画像を配置することが好まれます。最新のフォーマットを使用すると、既存のフォーマットと比較して、ファイルサイズが小さくなります。動画の場合はH265、画像の場合はWebPがよい例です。残念ながら、これらの新しいフォーマットには新しいツールも必要です。それらを編集または変換するための新しいプログラム、それらを表示するための新しいアプリなど。それゆえ、ファイルのサイズを縮小する必要性に加えて、元の形式の維持も重要になります。

使用しているOS

私は常にWindowsプラットフォームをベースにしてきました。DOSやTurbo Pascal、Turbo C++など、古き良き時代が終わりを遂げてからのことです。ネイティブアプリケーション、コンパクトバイナリ、高速な実行スピードのメリットは十分理解しています。それは、プレーンなマシンを最大限に活かそうとする伝統校の哲学のようなものです。

2012年、私がFileOptimizerの開発を始めたとき、選択肢はそれほど多くありませんでした。つまり、DelphiかC++Builderが主な選択肢だったのです。個人的には、常にObject PascalよりもC++の方が快適だと感じていました。というのは、必要に応じてより強力な低レベルのコーディングが可能で、ランタイムパフォーマンスを強化できること、特にハードウェアに近いコーディングとVCLによるカプセル化による高レベルでの開発の両立ができる点が優れていたからです。

いつもC++Builderを使っている理由

実際、C++Builderのファーストバージョンがリリースされてから、趣味でも業務でも、常にC++Builderを使っています。私は、C++Builderの「C++のパワーを備えた真のRAD環境」というアプローチがとても気に入っています。これは、かつてPower++/Optima++が成しえず、Visual C++も未だに達成できていないことです。私の選択は明らかで、それゆえC++Builderを選んだのです。

RAD(Rapid Application Development)のマジックは、初期のプロトタイプをわずか数日で作成することを可能にしました。もちろん多くの時間が経過して、FileOptimizerが50回以上のバージョンアップを繰り返した結果、非常に多くの機能が追加されています。しかし重要なことは、最小限の実行可能な製品を、記録的なスピードでリリースできたという点です。

学びを求める者には、常に経験が何かを教えてくれます。私が学んだことは、依存関係を最小限に抑えることの重要性です。それ以前の開発(例えばXPlorerなど)では、多くのサードパーティ製コンポーネントを使用していました。これは、車輪の再発明を回避するためには明白なメリットになりますが、新しいOSのサポートやC++Builderのアップグレードの際に問題となることもありました。FileOptimizerが、純粋にVCLコンポーネントとWindows APIのみに依存しているのは、これが理由です。

C++Builder選択の結果

FileOptimizerは、C++Builder XE2で開発を始めました。その当時の変更ログを見ると、それが適切な決定であったことが確認できます。現在はC++Builder 11.2で開発され、時期リリースのベータ―バージョン「Malawi」でテストも行っています。ソフトウェアの歴史における10年間では、時代遅れになってしまったり、役に立たなくなったり、他の製品に取って代わられたりするのは日常茶判事です。C++Builderのバージョンごと、またWindowsのバージョンごとにFileOptimizerをアップデートし、いくつかの新機能を追加してくことができました。Windows VistaのTaskDialog、Linux上のWine互換性など、これらはすべて、動的ライブラリロードのおかげで、後方互換性を維持しながら提供することができたのです。

FileOptimizerの開発にC++を使用する理由

C++は有能なプログラミング言語ですが、C++ Builderはさらに生産的な環境です。統合デバッガーによる容易なデバッグ、CodeInsightによる高速コーディング、強力なエディター、コードをまったく書くことなく複雑なUIレイアウトを作成できる素晴らしいビジュアルデザイナーが搭載されています。

こうした効率的な環境があるものの、新機能の追加によりコードベースは指数関数的に増加し、その複雑性も増しています。コード量は約10,000ステップあり、400を超えるファイル拡張子がサポートされており、それぞれについて100を超えるコマンドラインプラグインの処理が、それぞれ独自構文で対応しています。

現在では、すべてがスマートに処理されるようになり、FileOptimizerでもファイルの内容を分析することで、ファイル拡張子に依存することなくその種類を検出できるようになっています。ユーザーからすれば、GIF画像が、例えばMyimage.fileという名前で保存されていても、FileOptimizerのロジックが自動的にGIFファイルであると判断してくれるのです。コーディング内容について触れると、その検出エンジンでは、ほとんどの一般的なファイルヘッダーで、マジックバイトを使用してファイルの種類を判断しています。これには、C++のバイト/メモリブロック処理機能を活用しました。実際、C/C++で設計することで、この重要な設計方針が実現できました。

FileOptimizerの成功から学んだこと

FileOptimizerが成功し、永く利用され続けているこの成果は、C++Builderなしでは実現できなかったでしょう。まず第一に、C++言語とEmbarcadero C++Builderの継続的な進化が大きな要素に違いありません。もし、FileOptimizerが、「クラシックな」Visual Basic 6で作成されていたと想像してみてください。これは、もう何年も前から実際のサポートも互換性も提供されていないツールです。

2番目の要素は成熟度です。C++Builder は、すばやく簡単に習得でき、よく知られた文書化されたパラダイムを備えた、安定したソリューションであるといえます。

最後に、最近ではあまり一般的なことではないかもしれませんが、互換性とパフォーマンスがあります。256MBのメモリを搭載したWindows XPマシンでも機能するツールですが、64GBのメモリを搭載した最新のWindows 11マシンのすべての機能を引き出すこともできるのです。

FileOptimizerは、SourceForgeで入手できます。

https://nikkhokkho.sourceforge.io/static.php?page=FileOptimizer

この記事は、Enterprise Article Showcaseへ投稿されたものです。RAD Studio、Delphi、C++Builderと関連技術を用いて構築した開発プロジェクトの成功事例をお持ちの方は、ぜひご連絡ください。詳細はこちらをご覧ください。


Delphi Enter the Digital Fan Art and AI Art Contest
Delphi Fan Art Contest

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

コメント

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES