»プレビュー表示は軽くなった今は、Ubuntu向けのWebカメラレコーダーを開発中で、今日は、昨日書いてたプレビュー表示を軽くした。後は、アイコンの図柄を考えて、適用すれば、見かけ上は完成するのだが、まだ、エラー関連処理は実装していないので、少しは実装しておく必要がある。昨日は、車輪の再発明の話を書いたのだが、世の中的には、基本的には、車輪の再発明は良くない事だ、という認識になっている。これは何故なのか、というと、同じ事を何度もやるのは時間の無駄でしかないからなのだが、実際の所としては、作者は車輪を発明した事はないし、今現在の世界人口である筈の70億超の人類の中でも、車輪を発明した事がある人は皆無の筈だ。誰だって、個人レベルで見れば、同じ発明を二回やろうとする事は無い筈なのだが、人類全体で見れば、そういった行為が至極当たり前の様に行われてきている訳だ。車輪の再発明はするな、という格言みたいな文言が生まれたのかもしれないのだが、実際の所としては、昨日書いたように、少なくとも資本主義社会では、発明には価値があるので、その詳細は秘密にされる場合が多いし、そうでない場合にも、無償で使える事は殆どないので、似たようなモノを再発明した方が望ましくなる場合も多い訳だ。コンピュータソフト関連では、車輪の再発明はするな、みたいな文言は、普通、自分でコードを書く前に、オープンソースソフトを検索すれば、既にコードが存在している事が殆どだから、それを使え、みたいな意味で使われる事が多い。オープンソースソフトは無償で使えるから、余計な人件費が発生する車輪の再発明なんかせずに、オープンソースソフトを使え、という事になる訳なのだが、実際問題としては、オープンソースソフトは無償という訳ではない。ライセンスがGPLの場合、そのオープンソースソフトの一部のコードでも使ってしまうと、自らのソフトウェアのコードのライセンスもGPLにする必要が生じるからだ。ライセンスをGPLにしたとしても、直接的には、金銭的な被害は出ないケースも多いかもしれないのだが、ソースコードを公開する、という事は、自らが労力をかけて開発した技術を、無償で、第三者に提供しなければならない事を意味する訳だ。技術開発に要した人件費は回収できなくなるので、少なくとも、営利目的で運営されている企業的には、間接的には、大いに、金銭的な被害が出る事になる。最近の企業は、GPLで提供される事が多いオープンソースソフトは使わないし、そのメインテナンスなんかに携わった人物も、GPLのコードを自社製のソフトに紛れ込ませるか、そう疑われる可能性が高いために、開発プロジェクトには近づかせない様に警戒する様になった訳だ。言うことで、皮肉な話になるのだが、コンピュータソフト関連では、オープンソースソフトが、一般企業での、車輪の再発明を必須化した訳だ。上記の通りなので、最近は、新規に提供されるオープンソースの多くで、ライセンスとしてGPLは使わず、ソースコードの公開義務等がないMITライセンスが使用される事が増えた。一般企業的にも使いやすくはなった筈なのだが、それでも、オープンソースソフトを使ってしまうと、色々とネガティブな要素は出てくるかもしれない。具体的には、例えば、作者は許可していないのだが、巷のフリーソフトの多くは、配布パッケージの改変等を行わなければ、再頒布を許可する旨のライセンスで公開されていたりする。いったソフトを集めて、ソフトウェアのダウンロードサイトを運営し、そこに掲載する広告からの収入を得ている個人や企業も色々とあるのだが、そういった個人や企業は、フリーソフトの開発者に対して何らかのメリットになる様な行為を行わないと、フリーライドしている、という事で糾弾されたりもする訳だ。ライセンス的には何ら問題ない事でも、礼儀に欠ける、という事でバッシングされたりもする訳なのだが、作者的には、そんな事を言うのであれば、ちゃんとライセンスに書いておくべきで、ただ乗りされるのが嫌なら、有料で販売しておけば良いはずだ、と、思う訳だ。言うことなので、作者製ソフトは勝手に再頒布する事は禁止し、作者自らが、ちゃんと、メリットを得られる形で公開しているし、それなりの開発規模になっているモノについては、シェアウェアとして有料販売している訳だ。大学だとか政府機関なんかが開発したソフトウェアならともかく、ソフトウェアの開発には労力がかかる訳なので、その成果物を公開する人というのは、例え、それを無償で公開している場合にも、何らかの見返りを期待するのが普通な訳だ。ライセンス的に問題ないから、という事で、利用するだけ利用して、その開発者が期待している見返りを与えないと、フリーライドだとバッシングされるリスクを鑑みれば、GPL以外のフリーソフトについても、ある意味、完全な無償では、使えないと考える必要がある。言うことで、作者的にも、オープンソースソフトのコードは一切使っていないのだが、冒頭に書いたように、プレビュー表示は軽くできたのだが、そもそも、何故、プレビュー表示が重いと判断していたのか、というと、UbuntuにプレインストールされているCheeseと比べて、プレビュー表示時のCPU負荷が高くなっていたからだ。作者的には、基本的には、オープンソースコードを使わないだけではなくて、似たようなコードを使ってしまわないように、そのコードを見ない様にもしているので、Cheeseのプレビュー表示が、何故、作者製ソフトのプレビュー表示よりも軽いのかについては、自分で考える必要があった。前に書いたように、作者的には、解決できる見込みがない問題については、問題がある、なんて事は普通は言わない訳なので、実際の所としては、昨日の時点で、この問題については、解決できる見込みがあった。今日は、実際に、その問題を解決しただけの話になるのだが、大した話ではないので、何をやったのかを書いておくと、まず、元々は、Webカメラ映像も、普通に、メインダイアログにCairoを使って描画していたのだが、新たに、DrawingAreaクラスを作成し、そこにOpenGL描画する様にした。これだけでは効果は半分程度で、描画負荷をCheeseレベルにするためには、もう一つ、やるべき事があった。それは何なのか、というと、OpenGL描画はメインスレッドで行わせなければならないので、最初は、メインダイアログをinvalidにして、on_drawイベント処理の中で、DrawingAreaの描画も行わせていたのだが、これだと、その他のダイアログ部品の再描画も必要になり、そのために、CPU負荷が発生する感じだった。DrawingAreaの描画はタイマールーチン内で行わせる様にし、その描画に付随してその他部品の再描画が行われない様にした。判ってしまえば、当たり前の話でしかないのだが、作者はCheeseの開発者ではないので、そういう事は判っていなかった訳だ。作者はUbuntu版AGMPlayerとAG-ムービーカッターの開発者ではあるので、既に、DrawingAreaを使ったOpenGL描画用のコードは開発済みだったので、これを適用するのには、大して手間はかからなかった。Adsense)サービスを利用しています。使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。パートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。