いろいろ御心配をおかけしました。すっかり直って…と言いたいところですが、あまりすっきりしていません。薬を変えたりとか検査をしたりとかが当分続きそうです。それに、食べると調子が悪くなるので、流動系の食物をちょっとずつ食べるという感じで、体も少し痩せたかなというところです。とりあえず、1日の大部分はコンピュータに向かって作業できるまでにはなっていますが、何とか、しばらくは無理をしないで回復を待つしかないみたいです。
今日は、倉橋さんの飯食っていますに加えて、MDOnline読者様限定の大津さんのUNIXの記事もお届けします。同じく、MDOnline読者様限定の倉橋さんのWebObjects Practiceも今月分はすでにサーバにはアップしてありますが、メールは明日に配信することにします。すぐに見たい方はWebサイトを御覧ください。
ところで、来年の3月にMacworldが東京ビッグサイトでありますけど、宿はどうしようなとど思って調べたら、会場の前にワシントンホテルがあります。で、さすがにまだ部屋はあいているだろうと思ったら、会期中のシングルルームの安い方はすべてすでに押さえられているじゃないですか。ちょっと手際良すぎる方々がいらっしゃるようで。新木場からの地下鉄が天王洲アイルまで延長していますが、もうちょっとで大崎まで開通するみたいだし、その後に埼京線がその地下鉄まで乗り入れるとか。そうなると、うちは非常に助かるのですが、何年後かのことでしょうね。やっぱり今回も宿泊場所を探さないといけないようです。
(新居雅行 msyk@mdonline.jp)
あのテロから2週間が過ぎました。
あの夜、バラエティ番組を見ながらだらしなく笑い崩れていたところに、臨時ニュースが飛び込んできました。繰り返しテレビに映し出される圧倒的な暴力に打ちのめされたのは私だけではないでしょう。アメリカはもう昨日までのアメリカでは居られないだろうな、ということを強く感じます。
ご存知のように、私はWebObjectsのおかげで日々の糧を得ています。言うまでもなく、WebObjectsはアメリカ生まれの技術です。そのアメリカが大きな被害を被った今、何か少しでも恩返しができればと思います。圧倒的な暴力の前には微力かもしれないけど、無力ではないつもりです。
いろいろ考えたのですが、yahoo.comかamazon.comを通じてアメリカ赤十字もしくは消防士救済募金に寄付をされた方に、弊社の"Homework 1.2 for Java/WebScript"(WebObjects 4.5対応の自習用キット)を差し上げます。yahoo.com/amazon.comで寄付をすると確認のメールが送られてきますが、そのメールのヘッダ部分のみをkura51@techpit.co.jpまでお送りください。折り返し、ダウンロード先URLをお知らせします。ダウンロードしたアーカイブには、PDF版の教科書とWebObjects 4.5対応のサンプルアプリケーションファイルが入っています。
Homework 1.2については、こちらをご参照ください。
http://www.techpit.co.jp/WO/wo-hw0-v12.html
インストールなどの方法については、ダウンロードページをご参照ください。なお、今回ご提供させていただくHomework 1.2は販売終了品でサポート対象外です。技術的なお問い合わせに関しては一切お答えできませんので、予めご了承ください。ただし、WebObjectsメーリングリストなどで質問していただければ、他のhomeworkユーザの方が教えてくれるかもしれません。
それとは別に、Homeworkユーザ全員の承諾のもと、売上の一部をアメリカ赤十字に救援金として寄付しました。この場をお借りして、Homeworkユーザ会の皆さんにお礼申し上げます。
先日、宗谷岬の「大韓航空機撃墜事件慰霊塔」を訪れました。塔は最果ての地で冷たい風を受けながら静かに墜落地点を指し示しています。塔のわきには、「世界人類が平和でありますように」の柱がひっそりと立っていました。それは、あちこちで見慣れたメッセージですが、今とても重く感じられます。
犠牲者の方々のご冥福をお祈りします。
[倉橋浩一/テクニカル・ピット]
関連リンク:WebObjectsのページ
カテゴリ:倉橋浩一、じつはWebObjectsで飯食っています
――――前回のまとめと今回の方針
前回は、UNIX用オープンソースソフトエアをMac OS X上でコンパイルしてインストールする手順について説明しました。もう一度その流れを確認しておきましょう。
1. ソースのアーカイブであるtarボールを取得
2. 「tar -xvzf ファイル名」で展開
3. 「./configure オプション」でMakefileを作成
4. 「make」でコンパイル
5. 「make install」でインストール
tarボールを展開してみて、configureスクリプトがあれば、「configure; make; make install」という手順でインストールできる確率が高いというわけでしたね。
さてインストールしたアプリケーションはオープンソースソフトウエアですから、再配布は自由です。自分で使ってみてみて便利だったら、友人に教えてあげたいものです。でもTerminalでの操作が初めての方に「自分でコンパイルしたら」なんていうのはちょっと冷たいかもしれません。やはり簡単にインストール可能なバイナリーパッケージが便利でしょう。ホームページ上で公開しても喜ばれるかもしれません。そんなわけで今回はMac OS X用のバイナリーパッケージの作り方を説明します。
さてUNIX用ソフトウエアの圧縮形式としてはこれまではgzip形式(拡張子が「.gz」)が広く使用されてきましたが、最近ではより圧縮率の高い(だけど遅い)bzip2形式(拡張子が「.bz2」)が普及してきています。だがしかし、Mac OS Xにはbzip2形式の圧縮・解凍を行うbzip2コマンドはありません(StuffIt Expanderで解凍することはできます)。ということで、今回はbzip2のパッケージを作ってみましょう。なお、後で説明しますが、bzip2のソースにはconfigureスクリプトは含まれていません。それではどうしたらいいの? その疑問はごもっとも。そのようなケースでの対処方法についても簡単に説明します。
――――Mac OS X用ソフトウエアの配布形式
実際のパッケージ作成の前にMac OS Xソフトウエアの配布形態について簡単にまとめておきます。標準的なものにはディスクイメージ形式とパッケージ形式の2種類があります。前者はOmniWebやFetchなど多くのアプリケーションで使用される、拡張子が「.dmg」のイメージファイルです。
イメージファイルをダブルクリックするとDisk Copyアプリケーションが起動しデスクトップ上にボリュームとしてマウントされます。後は必要なフォルダをApplicationsフォルダなどにドラッグ&ドロップすればインストールは完了です。
もう一方のパッケージ形式は拡張子が「.pkg」のファイルです(あとで説明するように実際にはディレクトリなのですがFinder上からはファイルに見えます)。Developer ToolsやAtokなど主にシステムディレクトリに変更を加えるソフトウエアで使用されます。
ダブルクリックするとInstallerアプリケーションが立ち上がるので、その指示にしたがってインストールを行います。
なお、これらの配布形式以外にもMacのインストーラとしてはおなじみのMindVision software(http://mindvison.com)のVISEを使用しているソフトウエアや、独自のインストーラを使用しているものもあります。
今回作成するのはパッケージ形式です。
◇MindVision software
http://mindvison.com/
(続く)
[大津真]
関連リンク:http://www.o2-m.com/
カテゴリ:開発情報, 大津真=XはUNIXでサーバで
――――bzip2のコンパイルまで
次にbzip2のソースをコンパイルする手順について説明します。あらかじめ以下のオフィシャルほーむページから最新版bzip2のtarボール「bzip2-1.0.1.tar.gz」をダウンロードしておきます。
◇The bzip2 and libbzip2 official home page
http://sources.redhat.com/bzip2/
これを適当なディレクトリにコピーした後にTerminal上でtarコマンドを実行して展開します。
% tar xvzf bzip2-1.0.1.tar.gz <return>
bzip2-1.0.1/blocksort.c
bzip2-1.0.1/huffman.c
bzip2-1.0.1/crctable.c
bzip2-1.0.1/randtable.c
bzip2-1.0.1/compress.c
(以下略)
% cd bzip2-1.0.1<return>
% ls<return>
CHANGES bzip2recover.c makefile.msc sample2.ref
LICENSE bzlib.c manual.ps sample3.bz2
Makefile bzlib.h manual.texi sample3.ref
Makefile-libbz2_so bzlib_private.h manual_1.html spewG.c
README compress.c manual_2.html unzcrash.c
README.COMPILATION.PROBLEMS crctable.c manual_3.html words0
Y2K_INFO decompress.c manual_4.html words1
blocksort.c dlltest.c manual_toc.html words2
bzip2.1 dlltest.dsp randtable.c words3
bzip2.1.preformatted huffman.c sample1.bz2
bzip2.c libbz2.def sample1.ref
bzip2.txt libbz2.dsp sample2.bz2
% make<return>
If compilation produces errors, or a large number of warnings,
please read README.COMPILATION.PROBLEMS -- you might be able to
adjust the flags in this Makefile to improve matters.
gcc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c blocksort.c
make: gcc: Command not found
make: *** [blocksort.o] Error 127
% make <return>
If compilation produces errors, or a large number of warnings,
please read README.COMPILATION.PROBLEMS -- you might be able to
adjust the flags in this Makefile to improve matters.
cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c blocksort.c
cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c huffman.c
cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c crctable.c
cc -Wall -Winline -O2 -fomit-frame-pointer -fno-strength-reduce -D_FILE_OFFSET_BITS=64 -c randtable.c
(以下略)
関連リンク:http://www.o2-m.com/
カテゴリ:開発情報, 大津真=XはUNIXでサーバで
――――ダミーのディレクトリにインストール
通常のインストール手順ではコンパイル後に「make install」を実行するという流れですが、パッケージを作成する場合には、ダミーのディレクトリにインストールしておく必要があります。
ちょっと詳しく説明しましょう。自分でコンパイルしたUNIXコマンドは/usr/localディレクトリ以下に置くのが一般的です(システムを一人だけで使う場合にはホームディレクトリの下に置くというのもアリですが)。そのため、単に「make install」とするとたいていのコマンドは/usr/localディレクトリにインストールされます。通常の流れではそれでかまいませんが、パッケージ作成では仮のディレクトリにインストールして置いてパッケージを作成します。パッケージができあがったらInstallerアプリケーションを使用して/usr/localディレクトリにインストールさせるわけです。
この仮のディレクトリはどこでもかまいませんが、ホームディレクトリの下に「tmpLocal」といったディレクトリを作成するといいでしょう。
% mkdir ~/tmpLocal <return>
次に、作成した「~/tmpLocal」にbzip2をインストールします。このインストール先の指定方法はソフトによって異なります。bzip2のREADMEファイルを呼んでみるとわかりますが、bzip2の場合には「make install PREFIX=/xxx/yyy」とすることでディレクトリを指定できます。したがって、ホームディレクトリの下のtmpLocalにインストールするにはホームディレクトリを表す環境変数「$HOME」を使って、「PREFIX=$HOME/tmpLocal」と指定すればいいわけです。
まずは、「-n」オプションでインストールするふりをして動作を確認します。
% make -n install PREFIX=$HOME/tmpLocal <return>
if ( test ! -d /Users/o2/tmpLocal/bin ) ; then mkdir /Users/o2/tmpLocal/bin ; fi
if ( test ! -d /Users/o2/tmpLocal/lib ) ; then mkdir /Users/o2/tmpLocal/lib ; fi
if ( test ! -d /Users/o2/tmpLocal/man ) ; then mkdir /Users/o2/tmpLocal/man ; fi
if ( test ! -d /Users/o2/tmpLocal/man/man1 ) ; then mkdir /Users/o2/tmpLocal/man/man1 ; fi
if ( test ! -d /Users/o2/tmpLocal/include ) ; then mkdir /Users/o2/tmpLocal/include ; fi
cp -f bzip2 /Users/o2/tmpLocal/bin/bzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bunzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bzcat
cp -f bzip2recover /Users/o2/tmpLocal/bin/bzip2recover
chmod a+x /Users/o2/tmpLocal/bin/bzip2
chmod a+x /Users/o2/tmpLocal/bin/bunzip2
chmod a+x /Users/o2/tmpLocal/bin/bzcat
chmod a+x /Users/o2/tmpLocal/bin/bzip2recover
cp -f bzip2.1 /Users/o2/tmpLocal/man/man1
chmod a+r /Users/o2/tmpLocal/man/man1/bzip2.1
cp -f bzlib.h /Users/o2/tmpLocal/include
chmod a+r /Users/o2/tmpLocal/include/bzlib.h
cp -f libbz2.a /Users/o2/tmpLocal/lib
chmod a+r /Users/o2/tmpLocal/lib/libbz2.a
% make install PREFIX=$HOME/tmpLocal <return>
if ( test ! -d /Users/o2/tmpLocal/bin ) ; then mkdir /Users/o2/tmpLocal/bin ; fi
if ( test ! -d /Users/o2/tmpLocal/lib ) ; then mkdir /Users/o2/tmpLocal/lib ; fi
if ( test ! -d /Users/o2/tmpLocal/man ) ; then mkdir /Users/o2/tmpLocal/man ; fi
if ( test ! -d /Users/o2/tmpLocal/man/man1 ) ; then mkdir /Users/o2/tmpLocal/man/man1 ; fi
if ( test ! -d /Users/o2/tmpLocal/include ) ; then mkdir /Users/o2/tmpLocal/include ; fi
cp -f bzip2 /Users/o2/tmpLocal/bin/bzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bunzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bzcat
cp -f bzip2recover /Users/o2/tmpLocal/bin/bzip2recover
chmod a+x /Users/o2/tmpLocal/bin/bzip2
chmod a+x /Users/o2/tmpLocal/bin/bunzip2
chmod a+x /Users/o2/tmpLocal/bin/bzcat
chmod a+x /Users/o2/tmpLocal/bin/bzip2recover
cp -f bzip2.1 /Users/o2/tmpLocal/man/man1
chmod a+r /Users/o2/tmpLocal/man/man1/bzip2.1
cp -f bzlib.h /Users/o2/tmpLocal/include
chmod a+r /Users/o2/tmpLocal/include/bzlib.h
cp -f libbz2.a /Users/o2/tmpLocal/lib
chmod a+r /Users/o2/tmpLocal/lib/libbz2.a
% ls ~/tmpLocal <return>
bin include lib man
% ls ~/tmpLocal/bin <return>
bunzip2 bzcat bzip2 bzip2recover
関連リンク:http://www.o2-m.com/
カテゴリ:開発情報, 大津真=XはUNIXでサーバで
――――Package Makerでパッケージを作成
ダミーのディレクトリへのインストールが完了したところで、いよいよパッケージの作成に移りましょう。パッケージの作成は、Terminal上でpackageコマンドで行うことも可能ですがオプションの指定が面倒なので、ここではPackage MakerというGUIツールを使用する方法を説明します。Package Makerを利用するにはDeveloper ToolsをMac OS Xにインストールしておく必要があります。
Package Makerは、Finder上ではDeveloperフォルダ下のApplicationフォルダに置かれていますので、ダブルクリックして立ち上げます。
次の図を参考に各項目を設定します。
詳しくはオンラインマニュアルを参照していただくことにして、ここでは重要な項目について説明しましょう。なお、パッケージ自体は国際化に対応していますが、Package Makerは対応していないため、タイトルや説明に日本語を入力しないでください。
% ls -l bzip2-1.0.1.pkg <return>
total 0
drwxr-xr-x 4 o2 staff 92 Sep 20 22:02 Contents
% ls -l bzip2-1.0.1.pkg/Contents/Resources/ <return>
total 360
drwxr-xr-x 3 o2 staff 264 Sep 20 22:02 English.lproj
-r--r--r-- 1 o2 staff 35652 Sep 20 22:03 bzip2-1.0.1.bom
-r--r--r-- 1 o2 staff 142667 Sep 20 22:02 bzip2-1.0.1.pax.gz
-r--r--r-- 1 o2 staff 49 Sep 20 22:02 bzip2-1.0.1.sizes
% ls -l bzip2-1.0.1.pkg/Contents/Resources/English.lproj/ <return>
total 8
-r--r--r-- 1 o2 staff 305 Sep 20 22:02 bzip2-1.0.1.info
% lsbom bzip2-1.0.1.pkg/Contents/Resources/bzip2-1.0.1.bom <return>
. 40755 501/20
./bin 40755 501/20
./bin/bunzip2 100755 501/20 92152 120929931
./bin/bzcat 100755 501/20 92152 120929931
./bin/bzip2 100755 501/20 92152 120929931
./bin/bzip2recover 100755 501/20 14576 2719264553
./include 40755 501/20
./include/bzlib.h 100644 501/20 7800 270631979
./lib 40755 501/20
./lib/libbz2.a 100644 501/20 72240 4020666249
./man 40755 501/20
./man/man1 40755 501/20
./man/man1/bzip2.1 100644 501/20 15391 1268110083
関連リンク:http://www.o2-m.com/
カテゴリ:開発情報, 大津真=XはUNIXでサーバで
――――付録〈UNIX基礎知識〉#1 - bzip2の使い方
ファイルを圧縮するには
bzip2 ファイル名
とする。これでファイルが圧縮され、元のファイルの代わりに「ファイル名.bz2」の圧縮ファイルが生成される。
解凍するには
bzip2 -d 圧縮ファイル名
もしくは
bunzip2 圧縮ファイル名
とする。なお、bzip2にはアーカイバの機能はないのでディレクトリごと圧縮したい場合などはtarコマンドなどと組み合わせて使用する。
――――付録〈UNIX基礎知識〉#2 - シンボリックリンクとハードリンク
UNIXの異なるパス名で同じファイルやディレクトリにアクセスする仕組みにはシンボリックリンクとハードリンクがある。シンボリックリンクの方はリンク元のパスを記憶し、ハードリンクのほうは同じ実体を別の名前を参照するものだ。通常はシンボリックリンクを使用すればいいだろう。シンボリックリンクを張るにはlnコマンドに-sオプションを付けて実行する。
ln -s リンク元のパス 別名となるパス
引数の順番が間違えやすいが、cpコマンドと同じく、元のパスを最初に記述する。
――――付録〈UNIX基礎知識〉#3 - シェルの履歴機能
シェルにはTerminal上で以前に実行したコマンドを覚えておく機能がある。ひとつ前のコマンドを呼び出すにはControl+Pキー(もしくは↑キー)、ひとつ後のコマンドを呼び出すにはControl+Nキー(もしくは↓キー)を押す。なお、コマンド履歴は~/.tcsh_historyに格納される。
――――付録〈UNIX基礎知識〉#4 - rehashコマンド
コマンドの検索を高速化すためのハッシュテーブルを作り直す。通常、シェル(tcsh)は、環境変数PATHで設定されたディレクトリに置かれたコマンドを検索し実行する。ただし、新しいコマンドを追加した段階では、ハッシュテーブルは更新されないため、コマンドは見つからないというエラーになる。その場合、rehashを実行すればいい。なお、新規のTerminalウィンドウを開いた場合には、reashを実行する必要はない。
関連リンク:http://www.o2-m.com/
カテゴリ:開発情報, 大津真=XはUNIXでサーバで
REALbasicの次期バージョン、Ver.4のアルファ版リリースが開始された。新しいバージョンのREALbasic 4a1では、リストボックスのコンポーネントを一新して改良した他、RbScriptのPowerPCコードへのコンパイル、エディットフィールドの一新によりMac OSでの32k超のテキスト利用やMac OS XでのCore Graphicsによる描画などとなっている。アルファ版であり、完全に機能するものばかりではなく、また、今後の機能の追加も考えられる。しかしながら、REALbasic 4a1を見る限りは従来のREALbasic 3.5からの大きな変化はとりあえずは見られず、現状の形態のアプリケーションの完成度を高めるアップデートとなると思われる。
関連リンク:REALbasic 4a1 Release Notes
カテゴリ:REALbasic
REALbasic 3.5の日本語版が2001年9月26日(水)より公開され、ダウンロードできるようになることが明らかにされた。公開されるのは暫定版ではなく正式版である。公開されるバージョンは、Ver.3.5.1である。CD-ROMやマニュアルがセットになったライセンスパックは、2001年11月初旬に発売される予定である。執筆時点では、販売サイトでは、Ver.3.0のライセンスが販売されているが、公開と同時にVer.3.5のライセンス販売が開始されるものと思われる。
関連リンク:REALbasic日本語版
カテゴリ:REALbasic
Mac OS XとMac OS 9が同じボリュームにあるときには、Mac OS Xのデスクトップに「Desktop (Mac OS 9)」という名前のエイリアスが作成される。起動ボリュームのルートにあるデスクトップフォルダは見えないため、このエイリアスがないと、Mac OS 9側のデスクトップにアクセスできなくなってしまう。このエイリアスを削除してしまった場合に再度作る方法がKnowledge Baseに掲載されている。Terminalでコマンドを入力して、シンボリックリンクを作成する。実際に作成する場合には、この文書にあるコマンドをコピー&ペーストして利用すればよいだろう。
関連リンク:Mac OS X 10.0: How to Replace the Alias "Desktop (Mac OS 9)"
カテゴリ:ユーザインタフェース, Knowledge Base(旧TIL), Mac OS X
Knowledge Baseに、Mac OS XでDockのアプリケーションアイコンがフォルダになってしまった場合の対処が公開された。Mac OS Xを再インストールしたときに、ユーザのホームフォルダが存在しないなど、意図した結果になっていない場合にこのような現象が発生するとしている。解説では、関係のないホームフォルダを削除して、自分でフォームフォルダを作成する手順が記載されている。たとえば、ログインパネルで名前としてconsoleを入力するとコマンドラインモードでMac OS Xが起動することや、あるいはホームフォルダのアクセス権の設定についての情報が得られることになる。
ただ、この方法だと、必要なホームフォルダを削除しかねないので、注意が必要だと思われる。また、このたんにユーザのホームフォルダを作るだけだと、Documentsフォルダなどは自分で作らないといけなくなると考えられる。この文書に書かれている操作手順を行うにはいずれにしても、慎重に検討してから行うべきだろう。
関連リンク:Mac OS X: Folders Replace Applications in Dock
カテゴリ:Knowledge Base(旧TIL), ユーザインタフェース