/ «2003-11-02 (Sun) ^ 2003-11-04 (Tue)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2003-11-03 (Mon)

[Writing] Linux から目覚めるぼくらのゲームボーイ

目覚めよ、ゲームボーイ

渡辺編集長からは 11/4 日頃と伺っていたのだが、本日 google しているとなんと Amazon.co.jpSBP において、11/1 日から「Linux から目覚めるぼくらのゲームボーイ・書籍版」の宣伝が始まっているではないか!

そうなんです、実は本編である GCCプログラミング工房を差し置いて、特別編が一足先にデビューすることに相成りました。書籍版は全編110ページ弱であり、基本的には特別編に若干手を加えた内容に、USB 版ブートケーブルが添付されたものになる予定。価格も予価 7600 円とかなり高額であるため、果たして本書が売れるのかどうか、私としてはハラハラドキドキ心臓に悪い・・というのが、正直なところ。

そもそも、「Linux から目覚めるぼくらのゲームボーイ」の企画は、「クロス開発を学ぶために最適のプラットフォームは何だろうか?」という自問から始まった。

PC-UNIX 上の GNU 開発ツールは世界最強の開発環境と言っても過言ではないが、私はかねがね「その真価はクロス開発において初めて発揮される」と考えていた。なぜなら、プログラマーが単一の CPU だけを扱うことができれば良い時代は既に終わりを告げたのであり、これからは複数のアーキテクチャを自在に操る能力が求められると直感したからだ。

従来の Windows プログラマーは、CPU 毎に高額な開発処理系を購入せざるを得なかった。想像してみてほしい。SH や H8 をターゲットに据えるのであれば開発ツールは日立製、IA32 であれば Microsoft 社製、Power PC であれば Metroworks 社製。3つの CPU に対して、全く操作方法が異なる3つの開発環境。これを「悪夢」と言わずして、なんと言おうか。

しかし、PC-UNIX 上であれば話は違う。私達は、無料で最新版の GNU ソースツリーを入手しビルドすることができるし、場合によってはツールをカスタマイズすることさえ可能である。さらに、標的 CPU 毎に専用のツールをビルドすることで、ネイティブ開発はもとより、クロス開発まで「seamless」に対応することが可能になるのである。

ところが、多くの DOS/Windows ユーザーにとって、PC-UNIX の敷居は極めて高く、GNU 開発ツールに関する優れた解説書も存在しなかったために、世界中の多くのプログラマーは GNU 開発ツールの恩恵に預かることができていない。これは、実に残念なことだ。

私自身、DOS と UNIX の狭間で、とてつもない疎外感と絶望感を数年以上にわたって味わった経験があるだけに、飛び込みたいが飛び込めない、彼らの気持ちは痛いほどによく分かる。

GCCプログラミング工房は、DOS/UNIX の間の垣根を、傷だらけになりながらくぐり抜ける過程で、手にした知識を書き留めたものである。20回近い連載を通じて、GNU 開発ツール活用のための、基礎知識および基本テクニックについては、読者に伝えることができたように思う。しかし、知識というものはいくら読んだところで、所詮は身に付かないものだ。実践し、失敗し、痛い思いを通じて、初めて身に付くのである。

書道に「目習い・手習い」という言葉がある。私は、プログラミングもまさに書道と同じではないかと思う。いくら名筆を眺めたところで、王義之になれる訳もない。運筆と筆遣いを数え切れぬほど繰り返し、失敗と成功を大脳に刻み込んで、初めて書を我が物にできるのではないだろうか?

そのためには、「GCCプログラミング工房」を通じて学んだ GNU 開発ツールの知識を、何らかの形で実践する必要がある。クロス開発の醍醐味、素晴らしさを読者に実体験して頂く必要がある。それでは、具体的に CPU ボードとして何を採用すれば良いだろう?私は世界中のボードを買い求めて、旅を続けた。これまで購入した CPU ボードの数は10枚どころの騒ぎではないが、結局最後に行き着いたものは、Gameboy Advance (GBA) だった。

ARM という教育上の観点から見ても優れた CPU、十二分なメモリー資源、表現力豊かな液晶、PCM に対応した高度なサウンド機能、割り込み・DMA など OS を設計する上で必須になるハードウェア機能が提供されている点、プログラミングの上で必要になるハードウェア情報がネット上で公開されている点、学生でも十分購入可能な価格、世界中で入手可能であること、などなど、その優位性は枚挙にいとまがない。

白状すると、「Linux から目覚めるぼくらのゲームボーイ」の連載が始まる1ヵ月前の時点では、ブートケーブルを使ったプログラム転送が Linux 上で完成していただけであった。サンプルプログラムはひとつも用意できていなかったのである・・(滝汗)。

連載を通じて、最も楽しませてもらったのは、実は私自身かもしれない。特別編連載の4ヶ月間は、かなりの強行軍ではあったけれども、20年ぶりにプログラミングの楽しさを実感することが出来た。

ハードウェアを自分のコードで自在に操作するのは、本当に楽しい。理屈抜きでワクワクする。「Linux から目覚めるぼくらのゲームボーイ」には、このワクワク感を精一杯の思い入れを込めて、書き留めたつもりだ。

日本のどこかで誰かがこの書を手に取り、深夜遅く「ドットが出たよ〜〜!」と感激の雄叫びを上げてくれれば、筆者としては望外の喜びである。願わくば、GBA が皆さんの Knowledge navigator をつとめてくれますように・・。