spComponent は,C言語で書かれたマルチプラットフォームGUIツールキットです. もともとは,音声信号処理用のライブラリとして開発されましたが, それ以外の用途に使用することもできます.このライブラリを使えば, ソースコードの変更なしに,WindowsやMac OS,UNIX,Androidなどで動作するプログラムを作成することができます. そのため,これらの環境で動作するプログラムを作る必要がある人には大変便利だと思います. また,それぞれの環境に応じたGUI用のAPIを直接使うよりは, 簡単にプログラミングできるようになっています.
我々は,Cによる信号処理用のライブラリを開発し,それを用いて研究やデモ の作成を行っていたのですが,そのライブラリにはGUI用の関数は用意されて いないので,GUIを作成するには,MotifやTcl/Tkなどを使っていました.しかし, Motifは比較的低レベルなツールキットであるため,デモを開発するには かなりの労力が必要でしたし,Tcl/Tkは,リアルタイム動作するようなデモに は速度が不足していましたし,いくつかの制限がありました.また,他にも GUIのツールキットは多数存在するのですが,評判が良いものは大抵C++による ものでした.というのも,音声信号処理の世界では,まだまだC++が使える人 は少数派だったからです.このような理由から,私は,Motifに対する高レベルな ライブラリの開発を始めました.このライブラリはとりあえず完成し,これを 用いることで,デモの開発時間はかなり短くなりました.しかし,このライブ ラリは,Motifの上に存在していたため,Motifがなければ動作しませんでした し,必要に応じてMotifの関数を用いなければいけませんでした.そのころ, PCの世界ではWindows95がすでに爆発的に普及していたため,Windows上でも プログラムが動作することが望ましいという状況にありました.そこで,これらの 要求をみたすような高レベルなライブラリの開発を新たにMotifの上で始めました. 並行して,Windows上でも動作するように移植を行いました.最初は, Windowsプログラミングは全く知らなかったため苦労しましたが,なんとか 動作するまでには至りました.現在は,Mac OSやAndroidにまで移植を行っています. このようないきさつで開発されたライブラリですから,次のような特徴があります.
ただし,簡単にプログラムを書けることや,様々な環境で動くことを意識して ますので,機能的に多少の制約はあります.また,使用するためには基礎となる ツールキットが必要です(Windows版ではWindows API,Mac版ではCarbonかCocoa,UNIX版ではMotifかGTK+).
ソースに付属しているサンプルのいくつかを実行したものです.
別配布の基本ライブラリ spBase を使用する必要があります. Unix版では,Motifか,GTK+が必要です.GTK+のバージョンは,2.0系と3.0系 をサポートしています(1.0系のコードも残してはあります). MotifクローンのLessTif(バージョン0.88で確認)を使用しても一応動作はします. また,Motifを使用する場合,XPMライブラリも必要になります.
なお,バージョン0.6.7から,WindowsではHTML Helpを使用するようになったため, htmlhelp.libが必要になります.以前は,Microsoftのサイトからダウンロードする 必要がありましたが,最近はVisual Studioに含まれています.
Windows版では,ライブラリのバイナリファイルが提供されています. 適当なフォルダにヘッダファイル群(`sp'フォルダ)とライブラリファイル (`lib'フォルダ)をコピーしてビルドの設定を行って下さい (詳細はチュートリアルで説明しています). Android版に関しては,Android版での注意点のページを見て下さい.
UNIXバージョンをコンパイルする場合は(LinuxやMac OS X,Cygwinを含みます), まずspComponentのディレクトリに移動し,spBase の`include'ディレクトリと `lib'ディレクトリにシンボリックリンクを張ります(例えば /usr/local/includeと/usr/local/lib).
% cd spComponent-X.X.X % ln -s /usr/local/include % ln -s /usr/local/lib
もし,コンパイル環境の設定が,spBaseの設定ファイルに記述されている場合 は,spComponentのソースディレクトリに移動し,
% cd spComponent % make
を実行するだけでライブラリをコンパイルすることができます. このライブラリを,システムにインストールする場合は(例えば/usr/localなど), ルートでログインして以下のように実行してください.
# make SPDESTROOT=/usr/local install # make SPDESTROOT=/usr/local install.hdr
spBaseのあるディレクトリにシンボリックリンクを張りたくない人は,make のオプションに,TOP=/usr/local (/usr/local は,spBaseのトップディレクトリを表します)を付け加えることでもインストールすることができます.
% cd spComponent-X.X.X % cd spComponent % make TOP=/usr/local % su # make TOP=/usr/local SPDESTROOT=/usr/local install # make TOP=/usr/local SPDESTROOT=/usr/local install.hdr
なお,Linux上では,GTKバージョンが強制的に選択されるため, Motifバージョンをコンパイルするためには,USE_MOTIF=y というオプションを makeのオプションに加えて下さい. UNIX環境において,MotifとGTK+の両方がインストールされている場合は, USE_GTK=yという記述を加えればGTK+がリンクされます. GTK+のバージョンを2もしくは3にする場合は,USE_GTK=y の代わりに,それぞれUSE_GTK2=yもしくはUSE_GTK3=yを追加します.
環境の判定ができずに(unknownと表示される)コンパイルに失敗する場合は, 例えばLinuxであれば,
% export HOSTTYPE=i486
などとした後にmakeするとうまくいくことが多いようです.
exampleに含まれるプログラムをコンパイルする場合も上記の手順と同様に, exampleのディレクトリに移動し,makeを実行します.
% cd example % make
また,GTK2/GTK3の環境において,コンパイルするには,makeコマンドに USE_GTK2=y オプション(GTK3の場合はUSE_GTK3=y)を指定して下さい.
% make USE_GTK2=y
また,最近はX11のインストール先が/usrになっていることもありますので,その場合 には,下記のように X11TOP=/usr を指定して下さい.さらに,以下は,Xmu.aなどが 見つからない場合のエラーに対処するためにMOTIF_STATIC=nを指定しています.
% make USE_MOTIF=y MOTIF_STATIC=n X11TOP=/usr
現在の所,Windows XP/Vista/7,Mac OS 10.4/10.6,Linux(Redhat, CentOS, Ubuntu 等)などでのコンパイル及び動作が確認されています.UNIXであれば,Makefileなどを 少し変更するだけで動作するようになると思います.
GTKバージョン・Motifバージョンを用いてコンパイルしたバイナリを,Cygwinや vmwareなどの仮想環境で動作させた場合,以下のように環境変数XLIB_SKIP_ARGB_VISUALSを 1にする必要があるかもしれません.
% export XLIB_SKIP_ARGB_VISUALS=1
Windows版,Motif版,GTK+版,Mac OS(Carbon)版はオープンソースで, いわゆるX11ライセンスになっています.ほとんど制限はありません. 商用に利用することもできます. なお,macOS Cocoa版,Android版は,現在の所,オープンソースにはしておらず,ライセンスも未定です.
Copyright (c) 1998-2016 Hideki Banno Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the copyright holder.