第25回:最終回
プログラミングの極意 〜 C言語編
このメールマガジンは、趣味でプログラミングしている方から、プロでプロ グラミングしている方まで、プログラミングのポイントを、理論的背景から 実践的手順まで慎重かつ厳格に伝授するメールマガジンである...。


  極意其の二十五(終)  『オープンソースを体験して活かせ』  
 


オープンソースを利用しよう
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

Linux は、多くの優秀な開発者が集まって開発された、 オペレーティングシステム(OS)だ。Windows のライバルとして、 注目され続けている。 オープンソースといえば、Linux という時もあったが、ブラウザNetscape から派生した Mozzilaや、 オフィスソフト OpenOffice など、Windows向けのプログラムも オープンソースのものもある。オープンソースには、様々な定義が 存在があるが、ソースさえ公開していれば、そう言ってもいいだろう。 私も開発したプログラムはオープンソースにしている。

オープンソースにすると、詳細な設計情報を誰でも入手することが できるようになる。技術を参考にできるだけでなく、細かいレベルで カスタマイズすることもできる。インターネットから今すぐにでも ダウンロードすることができる。

今回は、JPEGのエンコードやデコードを行うオープンソースの プログラムを触ってみたいと思う。


まずはダウンロードから
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

JPEGのプログラムは、オープンソースになっているが、 もし、そのことを知らない状態で、自分が作成するプログラムで JPEG を扱いたかったらどうするだろう。

書籍やインターネットを調べて、JPEGの技術資料を 参考に1から作るだろうか。 それも1つの手だが、 もしかしてオープンソースで存在するかもしれないと 考えるのもいいかもしれない。 オープンソースが 注目された時は、それを扱うサイトが注目され、 非常に多くのプログラムがオープンソースに なっていることに気づかされたものだ。 そのサイトの検索機能を使って探せばいいのかも しれないが、そういったサイトは英語であることが 多いため、キーワードも英語で入力しなければ ならない。 そもそも、最近のインターネット検索は 非常に精度が高くなっており、一般的な検索サイト でも、「オープンソース JPEG」と入力すれば見つかる。

すると、オープンソースの JPEG のコンパイルの仕方 を説明するサイトが見つかるだろう。 そこから、 以下のページへのリンクを見つけることができる。 早速、以下のページからダウンロードしてみよう。

    The Independent JPEG Group's JPEG
      http://www.ijg.org/files/jpegsrc.v6b.tar.gz

上記URLは、圧縮ファイルへのダイレクトリンクだ。 ダウンロードしたファイルは、 .tar.gz 形式の圧縮ファイル なので、その形式に対応した解凍ソフトが必要だ。


ダウンロードしたソースは何から見るのか。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

解凍すると、何やらソースらしきファイルが大量にできる。 さて、どうしたらいいのだろうか。

ソースを入手したら、とりあえずどういったことができるか 試してみたくなるだろう。多くの場合、サンプルデータや サンプルプログラムが付いてくる。 それが何で、どうしたら 使うことができるかについて、どうしたら知ることができるの だろうか。

まずは、ダウンロードしたホームページを開いて、FAQが 無いか探してみるといいと考えるだろう。 今回の場合、 先ほどダウロードしたURL のホスト部分(http://www.ijg.org/) を開くと、JPEG オープンソースに関するホームページが表示され、 FAQ などがあることがわかる。しかし、UNIX系オープンソース の場合、ホームページには書かれていないことが多い。 ではどこに書かれているのだろうか。

一般的な慣習として、readme というファイルの中に、まず 読むベき内容が書かかれている。しかし、外くの場合、 概要だけだ。ダウンロードしたファイルがどういうものか ということが書かれている。しかし、概要を知らずに ダウンロードする人がいるだろうか。ホームページが 発明される前は、ファイル名だけを頼りにダウンロードしてきた。 そんなとき、このような readme は役に立っただろう。 しかし、今はその存在価値がなくなってきている。

では、まずどのファイルを見ればいいのだろうか。 それは、.doc ファイルである。Windows では、ワード プログラムが起動してしまうが、内容はプレーンテキスト 形式である。その中のどれかが、トップページに 相当するのだろうが、どのファイル名がそうなのかは 一般的な慣習は無い。最近は、まれに.html形式で ドキュメントがかかれることもあるが、少数派だ。 .html 形式の場合、index.html がトップページに 相当する慣習があるため、そのファイルを探そう。

今回のJPEGの場合、.doc形式でドキュメントが作られて いるようだ。解凍したファイルを種類ごとに整列してみよう。 すると、多くのファイルの中から、ドキュメントが集められる。 その中から、サンプルを試すための情報が欲しいのだが、 どのファイルを読めばいいだろうか。

coderules.doc   filelist.doc    install.doc     jconfig.doc     libjpeg.doc
structure.doc   usage.doc       wizard.doc

この中からこれだと思うファイルから内容を見ていこう。 usage.doc に、プログラム cjpeg や djpeg をコマンドライン からどのように入力すればいいかについて書かれている。 おそらく、このプログラムを使えば、JPEGオープンソースを 試すことができるだろう。 install.doc に、プログラムのコンパイルの仕方について 書かれている。しかし、多くの場合、UNIX系の仕方について 主に書かれているため、Windows用に使う方法を見つける のは少し苦労するが、オープンソースの世界では、Windows はマイナーなので仕方がない。ファイルの後ろの方に書かれて いることが見つけられ、さて読もうとするが、非常に難解だ。 いきなり細かい設定について書かれている。具体的な 操作方法については見つからない。

標準的なコンパイラが既にインストールされていて、 何でもコマンドラインからの入カで済んでしまうUNIX系では、 コンパイラを使うための準備が不要で、コマンドラインに入力 するコマンドを示すだけで使い方の説明が済む。 Windowsの場合、コマンドだけでは済まない。 マイクロソフトの開発ツールにもー発でコンポーネントを インストールできる機能があるが、使いこなすにはしきいが 高いため、それに対応したオープンソースは皆無だ。 そうなると、マウスを使った操作がメインのOSでの説明は、 画面を写した図を使わなければならない。 相変わらずテキストだけのドキュメントしか作れない 開発者には、それはつらい話だ。 今回の場合、図は不要なのだが、それでもよく分からない。


いきなり make してみるのも手。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

そうなると、使う側としてはむしろ、自力で使い方を見つけた方が速い。 UNIX系がベースとなっているので、makefile(*.mak) や config の ファイルに注意して、メイクを通せばいい。まず、いきなり make(nmake) コマンドを実行してみよう。ここからは、Borland C++ Free Compiler を使ってみたいと思う。

まず、このメルマガの第2回で説明した、コンパイルのできるコマンド プロンプトを開く。そして、C:\a\jpeg-6b にJPEGオープンソースを 解凍し、cd コマンドでそのディレクトリに移動する。 Borland C++の場合は、ここで make コマンドを入力してみる。 パラメータは無しでよい。このように、 いきなり make するのも1つの手だ。なぜなら、エラーメッセージから 何かわかることが多いからだ。さて、make を実行すると、 次のようになる。

C:\a\jpeg-6b>make
MAKE Version 5.2  Copyright (c) 1987, 2000 Borland

C:\a\jpeg-6b>

何も起きなかった。明らかにおかしな動きなのに何も表示されない のは、良くない慣例ながらコマンドラインではよくあることだ。 多くの場合、パラメータの指定またはファイルの指定に問題がある。 makeは、メイクファイルを使うので、その指定に問題があるのだろう。 そして、コマンドラインの説明は、make /? で表示される。 多くの場合、/h, /help, -h, -? を付ければ、表示される。 それで、次のように入力すればいいだろう。

D:\a\jpeg-6b>make -f makefile.bcc
MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
        echo You must prepare a system-dependent jconfig.h file.
You must prepare a system-dependent jconfig.h file.
        echo Please read the installation directions in install.doc.
Please read the installation directions in install.doc.
        exit 1

** error 1 ** deleting jconfig.h

D:\a\jpeg-6b>

すると、上記のようにエラーメッセージが表示された。 ドキュメントは分かりにくいが、プログラマのホームである make コマンドを使うと、適切な情報が得られるのも、 オープンソースの傾向だろう。 You must prepare a system-dependent jconfig.h file. と表示されたように、jconfig.h を用意しないといけないらしい。 ファイルを一覧すると、jconfig.* という名前のファイルが いくつかあることに気づく。

jconfig.bcc    jconfig.cfg    jconfig.dj     jconfig.doc    jconfig.mac
jconfig.manx   jconfig.mc6    jconfig.sas    jconfig.st     jconfig.vc
jconfig.vms    jconfig.wat

このうち、jconfig.bcc が Borland C++ 用だろう。 内容をエディタで見ると、ヘッダファイルであることが分かった。 つまり、このファイルを jconfig.h に改名すればよさそうだ。

そうやってトライ&エラーをしていくと、tasm プログラムが必要なことが 分かり、Borland C++ Free Compiler(フリー版) では、付いていないので、 途中で断念した。製品版のBorland C++ではできるだろう。 私は、Visual C++ しか持っていないので、その操作方法だけ示す。

cd C:\a\jpeg-6b
ren jconfig.vc jconfig.h
nmake -f makefile.vc


サンプルを試してみよう。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

コンパイルが正常に終了すれば、usage.doc ファイルに書かれている cjpeg.exe や djpeg.exe ができる。早速試してみよう。

cjpeg.exe は、別の形式の画像からJPEGファイルを作成するプログラムだ。 次のように入力すればよい。

cjpeg a.bmp a.jpg

djpeg.exe は、JPEGファイルから別の形式の画像を作成するプログラムだ。 Windows の BMP ファイルを作成するには、次のように入力すればよい。

djpeg -bmp a.jpg a.bmp

これで、JPEGオープンソースが動くことが確認できた。 ただプログラムが動いたのではない。ソースを修正できる プログラムであり、自分のプログラムに組み込むこともできるのだ。

ー般にオープンソースでは自由に流用できることが多いのだが、 商用の場合、ソースが開示されても特許やライセンスの関係で 流用できないことが多い。つまり、自ら営業活動をしてまでも 金は欲しくないけど、所有権は主張したいというわけだ。 JPEGオープンソースは、著作権表示をすれば、商用に 使うこともできるライセンスになっている。


これからのオープンソース。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

日本では、 なぜか、 オープンソースのサイトが直接見つかることは少ない。 なぜなら、多くのオープンソフトは外国で開発されているからだ。 確かに、すでにあるものを改めて日本語で作り直すことに 意味はないだろう。 日本語化パッチはよく開発されるが、 それでは、、技術立国日本と言うには程遠く、いまだに 猿真似レベルと言われてしまいそうだ。 最近は、アメリカでもドットコムバブルがはじけ、 利益確保が重視されたり、Linux が特許で訴えられたりと、 オープンソースの弱点が露呈されてきて、オープンソースの熱が 冷めたようにも見える。 日本のオンラインソフトは、 ソースを公開しているものは少ない。 これも残念なことだ。

オープンソースは、最先端の技術には適用されない。 競争相手に取られてしまうためだ。 しかし、協力者であれば、内部的にオープンにした方がいい。 オープンにする効果は、仲間を得ること、注目を集めること、 そして市場または独占を破壊することだ。 そのどれかに利益の確保か不利益の回避が見いだせなければ、 オープンにする意味は無い。

オープンにすることとしないことの どちらがいいかは、状況による。よく状況を見ることだ。


  極意其の二十五(終)  『オープンソースを体験して活かせ』  
 


突然ですが、プログラミングの極意は、今回で休刊となります。 自ら開発したシェアウェアもオープンソースにするなど、 「古い技術はオープンにすべし」という心念の元に このメルマガを続けてきたわけですが、現在のメルマガという 方法が適切かどうか再考した結果、形式を直したいと 考えるようになりました。成果が表れる日が来ることに 期待して頂けると幸いです。今まで難しい内容につきあっていただき、 ありがとうございました。バックナンバーは、ホームページ Sage Plaisir 21 に残ります。 姉妹メルマガ「IT ニュース&コラム」は続きますので、 これからも、よろしくお願いします。



このメールマガジンの図は、 SVGCats を使って作成しました。
表示するには、 Adboe の SVG のページ からプラグインをダウンロードしてください。
メールソフトのセキュリティの設定によっては、図が表示されませんが、
図の直下にあるリンクをクリックすれば表示できます。


______________________________
▼ Sage Plaisir 21 commercial message       www.sage-p.com
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
SVG Cats 2.20 公開!
  マイクロソフトの新製品 OneNote と同じ機能をお安く入手できます!
  インストーラが付いて、簡単に高速起動できるようになりました。
  ダウンロードページ http://www.sage-p.com/svgcats.htm
______________________________



□∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞□
 最後までお読みいただきありがとうございます。
 バックナンバーの参照または購読の解除は、こちらへ。
 広告掲載をご希望の方はこちらへどうぞ。

 All Text composed by T's-Neko 2003
         ご意見、ご要望は neko@manbow.com まで。
     ソフトウェア・デザイン館 Sage Plaisir 21
         http://www.sage-p.com/
□∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞□