ソースコード・リテラシーのススメ

第1回 ソースコードを読む理由(わけ)

この記事を読むのに必要な時間:およそ 2 分

はじめまして,Plamo Linux というマイナーな Linux ディストリビューションの取りまとめ役をやっているこじまと申します。これからしばらく「ソースコード・リテラシーのススメ」というタイトルで,オープンソースソフトウェア(OSS)のさまざまなドキュメントやソースコードの読み方について紹介していこうと思っています。

OSSとソースコード・リテラシー

「ソースコード・リテラシー」とは,「メディア・リテラシー」「コンピュータ・リテラシー」に習った造語で,あからじめ用意されたバイナリパッケージをインストールして使うだけではなく,ソースコードや付属している各種のドキュメントを読んで,それぞれのソフトウェアをより深く理解していく能力を意味しているつもりです。

最近ではLinuxに関するさまざまな情報が雑誌やインターネット上に溢れ,Google等で検索すれば数千,数万ページがヒットすることも稀ではありません。このようなめぐまれた環境は,筆者がUNIXを勉強し始めたころにくらべると隔世の感があります。その一方で,最近Linuxに触れたユーザは豊富すぎる情報を消化しきれず,個別の場面に応じた know how(こういう場合はこうする)的な知識の蓄積に留まっているように感じます。

断片的なknow how的知識を体系的なknow why(なぜそうなるのか)的な知識に変えるには,システムの中身を理解することが必要となります。ソースコードが公開されているOSSはそのための優れた教材です。しかしながら,最近ではrpm等のバイナリパッケージが広く普及して,ソースコードそのものは一般のユーザからはやや縁遠いものになりつつあることも事実です。そこで本連載では,Plamo Linuxのメンテナンスを通じてさまざまなソースコードに触れてきた筆者の経験を元に,初心者から一歩踏み出したい人向けに,ソースコードやソースコードに付属している各種ドキュメントの読み方について解説していこうと思っています。

パッケージとソースコード,ドキュメント

まず最初にソースコードやドキュメントがどこにあるのかを簡単に説明しておきます。たいていのLinuxでは,バイナリパッケージをインストールすることでソフトウェアが使えるようになります。バイナリパッケージとは,ディストリビューションの作成者が自分のマシンでソースコードをコンパイルして生成したバイナリファイル(コマンド)と,そのコマンドの動作に必要な設定ファイルを,あらかじめ決められた形式(rpmやdeb)に従ってまとめたものです。

Gentoo Linuxのように,バイナリパッケージという概念が存在せず,インストールするソフトウェアはすべてそのマシン上でコンパイルするという方針を取るディストリビューションもあります。

そのため,たいていの場合,バイナリパッケージをインストールしただけでは,そのソフトウェアのソースコードはインストールされません。

通常,ソースコードはバイナリパッケージとは別に,ソースパッケージ(src.rpm等)としてまとめられます。また,ライブラリ等のパッケージでは,そのライブラリを使うソフトウェアをコンパイルするためにヘッダファイル等の最低限必要なソースコードのみをまとめた開発用パッケージ(-dev パッケージ)が提供される場合もあります。

一方,ソースコードのなかでも,そのソフトウェアについて解説したドキュメント(ドキュメントファイル)は,たいていのバイナリパッケージに含まれており,コマンドや設定ファイルと共にインストールされるようになっています。通常,これらドキュメントファイルは /usr/share/doc ディレクトリ以下の,バイナリパッケージの名称を付けたディレクトリに展開されます。

 # ls /usr/share/doc           
 Canna-3.7p3              findutils-4.1.20                 libxml2-devel-2.6.16         pyorbit-2.0.1
 ElectricFence-2.2.2      flex-2.5.4a                      libxml2-python-2.6.16        python-2.3.4
 GConf2-2.8.1             fontconfig-2.2.3                 libxslt-1.1.11               python-elementtree-1.2.6
 HTML                     freetype-2.1.9                   libxslt-devel-1.1.11         python-ldap-2.0.1
 ImageMagick-6.0.7.1      gamin-0.1.1                      lksctp-tools-1.0.2           python-sqlite-1.1.6
 ...

これらドキュメント用のディレクトリには,ソースコードに付属のREADMEやNEWSといったファイルが収められています。/usr/share/doc 以下のディレクトリはインストールしたパッケージに応じて異なりますが,まずはこのディレクトリにあるファイルを眺めてみることから始めましょう。

ドキュメントファイルの種類

個別のドキュメントファイルの読み方については次回以降で紹介することとして,今回は代表的なドキュメントファイルの種類について説明します。

README:文字通り「読んでね」と名付けられたファイルで,そのソフトウェアの作者がユーザにぜひ伝えたい情報が書かれています。あるソフトウェアに興味を持った時,最初に読むべきドキュメントがこのファイルです。

INSTALL:そのソフトウェアのインストール方法を解説したファイルです。最近のソフトウェアの多くはAutoconfに対応し,configureスクリプトを実行するだけで,コンパイルやインストールに必要な設定が行なわれることが多いですが,ソースコードからソフトウェアをインストールする際には目を通しておいた方がいいファイルです。

NEWS, CHANGES:そのソフトウェアに新しく追加されたり変更された機能について解説したファイルです。基本的に旧バージョンのユーザに対する注意事項で,前のバージョンと動作が違うように感じた時に参照する程度でいいファイルです。

ChangeLog:開発者が記録しているソフトウェアの変更履歴です。開発者の苦労を知ることができますが,一般ユーザが見る必要はほとんどないでしょう。

COPYING, LICENSES:そのソフトウェアに適用されるライセンス(使用条件)が記載されています。最近では多くのソフトウェアがGNU GPLかそれに準じたライセンスの元に配布されているので,一般ユーザが私的に利用する場合は特に気にする必要はありませんが,商用利用の際などには条件を確認する必要があります。

以上,代表的なドキュメントの種類をあげてみました。ただし,どのようなドキュメントを添付するかについての決まりはないので,これらのファイルが付属しないソフトウェアやこれら以外のファイルが添付されているソフトウェアも多数あります。ここに上げていない種類のファイルも,ファイル名からその内容が推測できるように配慮されているので,いろいろなソフトウェアでどのようなファイルが含まれているかを調べてみてください。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたのが,いつの間にかミイラ取りがミイラになってOSSを仕事にするようになってしまいました。最近はスペシャリスト養成を目的とした専門職大学院で教壇に立ったりもしています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入