[ Home on 246net ]
好むと好まざるとに関わらず、C++言語を使った開発をすることになったときに調べたことの蓄積。
クラス・関数などの論理エンティティに対して、ファイル・ディレクトリなどの実装エンティティに関するデザインのこと。例えば、ヘッダファイル(*.h)とインプリメンテーションファイル(*.cpp)の構成法、記述法や、ファイルのディレクトリへの配置法、ライブラリの構成法など。
ソースコードのコメントから、HTMLやLaTeXなどの形式で、APIリファレンス文書(関数仕様書)を生成するツール。
プログラム中にメッセージ文字列を埋め込んでしまうと、メッセージ文字列を変更するのにソースコードの変更が必要になります。そこで、メッセージ文字列を外部リソース化することで、プログラムを再コンパイルせずにメッセージ文字列だけ入れ替えることを可能にします。
GNUの国際化機能です。char*の文字列をキーにメッセージを定義したファイルを用意しておき、プログラム実行時にgettest関数でキー文字列を指定し、リソースのメッセージ文字列を取得します。なので、大抵は原文(英語)メッセージ文字列をキーに、リソースの翻訳されたメッセージ文字列を取り出すように使用することが多いです。
X/Openで標準化されている国際化機能です。gettextと似ていますが、キーが数値である点が違います。数値がキーなので、直感的でないのがいまいちです。
Xにはリソースという仕組みがあるので、Xアプリケーションならば外部ファイルから文字列を取得することができます。ただし、Xでないと使えないので、移植性の観点からは少々制限があります。
準標準C++ライブラリとも言われる。様々な便利なライブラリを集めたもの。ライブラリはテンプレート中心であり、一部のパッケージを除いてヘッダーファイルだけで機能を提供する。
主な機能は、文字列処理、スマートポインタ、日付と時刻、ファイルシステムユーティリティ、マルチスレッドと排他、非同期入出力とソケット通信、シリアライズ、数学ライブラリ、データ構造と反復子、関数型プログラミング、メタプログラミング、ユーティリティ、シグナル、グラフ、Physonとの連携など。
プラットフォーム非依存なネットワーク・プログラムを開発するためのクラスライブラリ&フレームワーク。ソケット、メモリアロケート、メモリマップドファイル、メッセージキュー、スレッド、同期、といったOSのシステムコールをラッピング・ファサードで包んでいる。
ロギングライブラリの選択は悩ましいものがあります。
Java言語用のオープンソース・ロギングライブラリ log4j のC++言語移植版。
X Window SystemのC言語用APIがXlibで、ウィンドウを生成することと、文字・図形・画像を描画する基本機能で構成されています。
元はX Window System上のGUIツールキット。Linux上でQtと二分している。最近ではWindowsや他のOSへも移植されており、クロスプラットフォームなGUIツールキットとなりつつある。ただし、C言語APIなので、C++から使うとストレスが大きい(インピーダンスミスマッチ)。gtkmmやIntiといった2,3のC++ラッパーライブラリがあるにはある。
Solarisでは、バージョン9から標準でGNOMEデスクトップが搭載されるようになっている。
Linux上でGTK+と二分しているX Window System上のGUIツールキット。C++言語APIだが、シグナル・スロットの処理等に独自拡張の記法を取り入れており、mocと呼ばれるツールでC++ソースコードに変換する。
プラットフォーム非依存な3次元グラフィックス・ライブラリ。C言語用API。
CORBA2.6相当の実装に加えて、Realtime CORBA、QoS、マルチキャスト、フォールトトレーラントといった拡張が加えられている。適用実績も豊富。内部的にはACEを基盤にして構築されている。
フリーなCORBA実装系御三家の一つ。
GPU(Graphics Processing Unit)等の演算器を多数持つプロセッサに演算を並列実行させるためのフレームワークの共通仕様。GPU等演算用プロセッサ側で並列実行するためにC言語を拡張したOpenCL C言語と、それを制御するCPU側で使用するAPIで構成される。2010年中ごろ時点で、MacOS/Windows/Linux上で、GPUはNVIDIA製/ATI製で利用可能。
SWIG:Simplified Wrapper and Interface Generator。C/C++言語のライブラリをスクリプト言語から簡単に呼び出すための変換を行うツール。
文字列で表現された整数値を、組み込み型のintなどのインスタンスに変換したり、逆にint型などのインスタンスを文字列に変換したりとした処理をC++で記述するのは意外と面倒です。使用するライブラリによって書き方がいくつかありますが、基数(16進数等)を伴う場合は制約があります。