國分 尚のコンピュータ遍歴

ソフトウェア編

OS | BASIC | Pascal | Modula-2 | Smalltalk | AppleScript | Perl | Ruby | Python | Objective-C | Objective Modula-2

統合ソフト | ワープロ | データベース | 表計算 | 統計ソフト | グラフィック | その他

ハードウェア編へ

OS

BASIC

(2002.1.5記)

なんといっても、1980年代のパソコンとこれとは切り離すことはできません。当時のパソコンにはOSと言えるようなものはなく、ROMに焼かれたBASICがOSであり、プログラム開発環境であり、プログラム実行環境だったわけです。

現在のVisualBasicのようなものはともかく、昔のBASICというとローカル変数がなかったのですね。サブルーチンはあっても、ローカル変数がなければ大規模なプログラムを作るときは大変な思いをします。いや、全く苦労させられました。

Pascal

(2002.1.5記)

PascalといえばTurbo Pascalという時代を生きてきました。FP-1100ではCP/M版を使い、PC-9801ではMS-DOS版でした。実際にCP/M版を手に入れたのはMS-DOS版の後だったのですが。

Pascalでは初めて構造化プログラミングの概念を覚えました。変数のスコープや型チェック、レコード型、ポインタ型などの事を覚えたのもPascalのおかげです。実際に実用になるプログラムを書くことはなかったのですが、プログラミングの勉強になりました。

時代は下って、Macintoshの黎明期です。PowerPCになるまでのMacintoshの母国語がPascalだったのです。MacintoshでTurbo Pascalのような普及率だったのがLightspeed Pascal(後にTHINK Pascalとなる)でした。これとマックプログラマーのバイブルとも言える技術解説書、Inside Macintoshでプログラムを書いたものです。とはいっても、実用的なプログラムは結局いくつかのデスクアクセサリを作るだけで終わってしまいました。

PowerPC対応の遅れが致命傷となり、THINK PascalはCodeWarriorに完全に取って変わられてしまいました。PowerPCではCが基本の言語に変わりましたが、CodeWarriorにはまだPascalコンパイラがあります。ただ、Modula-2に慣れてしまうとPascalのbegin〜endは非常に書きにくく感じてしまいます。私はもうPascalに戻ることはないでしょう。

Modula-2

(2002.1.5記)

私が最も慣れ親しんでいるプログラム言語がこのModula-2です。実用的と言う面ではこの言語で書いたプログラムの数が圧倒的です。今でも簡単なテキスト処理やフォーマット変換のプログラムはこれで書くのが一番早いです。とはいえ、実はマックの処理系ではなく、未だにMS-DOSのものをVirtual PCで動かしているのですが。マックにもMacMETHという、Modula-2の故郷から出ている処理系があるのですが、まだハードディスクの片隅に置かれたままになっています。

最初に手にしたModula-2の処理系はFTL Modula-2というMS-DOS版のものでした。その後、FST Modula-2を手に入れ、今でもこれを使っています。

Modula-2の特徴として、強力な型チェックと徹底したモジュールの隠ぺい性があります。コンパイル時にケアレスエラーの要因はほとんどなくなるので、ランタイムでは純粋にロジックのバグ取りに専念できます。また、モジュールを使うことで、コードの再利用がしやすいのも特徴です。今は大体どんな処理系でもクラスライブラリやアプリケーションの骨組みを持っているので、その必要もないのでしょうが、私は自分で書いたプログラムの骨組み(とはいっても、単なるテキストファイルのフィルタだったりするのですが)を利用して、ちょっとしたファイル変換プログラムなら数時間で作っています。

Smalltalk

(2002.4.13加筆)

私はこれでオブジェクト指向型プログラミングの何たるかを習いました。これは、私のコンピュータに関する経験の上で、何ものにも代えがたいと思っています。

使った処理系はMS-DOS版とMacintosh版のSmalltalk/Vです。卒論のテーマだった「映像による植物図鑑」をこのマック版で再現しました。これはMVC(モデル・ビュー・コントロール)モデルの勉強になりました。

Smalltalkは純粋なオブジェクト指向ですから、手続き型構造化プログラムとは違った趣があります。とくに、「1 + 2」と言う表現が、「1」という整数オブジェクトに「2」を引数にして「+」というメッセージを送ることだと言うのは、初めは馴染めませんでした。その他、inheritanceとかpolymorphismとか、いろいろと習いました。

Mac版のSmalltalk/Vは無くなって久しいのですが、最近、Squeakという処理系を導入しました。まだ数回しか触っていないのでなんとも言えませんが、またSmalltalkで遊べそうです。

AppleScript

[2002.1.5] これは、つい最近習いはじめました。2001.12.31に解説本を買い、正月はこれの修得に費やしました。なんとかテキスト処理をするスクリプトが書けるようになりましたが、まだわからないことがたくさんあります。OS Xでは本格的な開発環境(AppleScript Studio)が提供されるようなので、楽しみです。

[2002.12.28] この1年の間にAppleScriptがすっかりメインの言語になりました。ちょっとしたテキスト処理をするのにわざわざVirtualPCを立ち上げてModula-2で書くのも面倒になってきましたので。例えばDNAシーケンサーの出力を解析用のプログラムに入力したり、プログラム同士のデータ交換をするためのテキスト整形をやっています。少し動きがトロイのですが、まだPerlにまで手がついていませんので、とりあえずはこれで我慢します。また、4月から学部のメールサーバーの管理を任されているのですが、アカウントの管理にも欠かせないツールとなりました。こちらも後任の人のことを考えるとやはりPerlで書きたいものです。

Perl

[2002.1.5] CGIのほとんどがこれに依っている以上、いずれは知っておかねばならないものだと思います。今日(1/5/2002)、MacJPerlをダウンロードしたばかりなので、まだ何も書くことはありません。

[2004.2.18] 私にとって2002年がAppleScriptの年だとすると2003年はPerlの年でした。OS Xになり、ふと気がつくと標準でインストールされていました。これを使わない手はないと思い、去年1年でだいぶ使えるようになってきました。AppleScriptにくらべるとファイルの処理速度は圧倒的です。ただ、最近(恥ずかしながら)Rubyを知りましたので、今後はこちらを使うようになるのでしょう。

Ruby

[2004.2.18] 名前は以前から聞いたことがあったRubyですが、去年の暮れにこの言語の出自と概要を知り、いきなり惚れてしまいました。ピュアOOなスクリプト言語などという想像を絶するものがあったとは。しかもOS Xに標準でインストールされているではないですか(PerlもPythonもそうだけど)。解説本も買ったし、2004年はRubyの年になりそうです。早速、解説本に載っていたプログラムを実行して400の階乗を求め、「こりゃ速い」と喜んでいます(さすがにG4 1.2GHzです)。Smalltalk/Vで400 factorialをShow Itしたら数秒はかかったものでした。(Smalltalkの整数クラスは始めから階乗のメソッドを持っているのです。)ちなみに、今Squeak3.2で同じことをやったら0.5秒ぐらいでした。ともかく、今年はこれで楽しめそうです。Squeakもインストールしたまま放っておいたのですが、久しぶりに触ってみようと思います。

[2004.5.24] いやあ、やっぱりRubyはいいです。今年の情報処理はプログラミングを教えることになっているのですが、Rubyを使うことにしました。PDF版のテキストはこちら。たぶん、必要がなければもうPerlを使うことはないでしょう。極める前に終わってしまい、残念ですが。Modula-2のように型に厳格な言語も美しいけれど、SmalltalkやRubyのように型にこだわらない言語は楽しいですね。型にこだわらないと言うと正しくないのでしょうが、たとえば1つの配列に数値でも文字列でも別の配列でも何でも格納できるのはいいことです。

[2006.8.13] いよいよRuby on Railsに本腰を入れようと思っています。まずはこの夏休みに学内のコレクション管理プログラムを作りたいと思っていますが、どこまでできますか。

Python

[2004.12.26] もともとMacで開発されたとか、Rubyがライバルとか、オブジェクト指向とか聞いて、少し期待して眺めたところ、いきなりFROM xxx IMPORT yyy なんてもろModula-2な(いや、Adaか)文が出てきて、一瞬「これは!」と思いました。しかし、何故かあまり馴染めそうもありません。(やっぱりAdaなのか?インデントでブロックの範囲指定がいけないのだろうか。)本気で始めるとまた印象も変わるのでしょうが、今の所Rubyで用が足りてますのでしばらくは放置です。OS Xならいつでも使えるし。

Objective-C

[2005.1.30] MacOS Xでソフト開発といえば今ではこのObjective-C (Cocoa)環境が標準です。このページを読めば一目で分かるのですが、私はCには全く関わってきませんでした。多分、入門用のプログラミング言語はPascalかCかとか不毛な論議が盛んだった頃に刷り込まれてしまったのだと思います。Cは高級言語ではないとか、アセンブラに毛が生えたものだとか面白がって読んでいたので、すっかり食わず嫌いになっています。

それでも、OS Xで簡単なソフトの1つも作ってみたいとは思っていますので、解説書やウェブページを眺めているとなかなか面白そうではないですか。この言語はCをオブジェクト指向にしたものではなく、SmalltalkにCの皮をかぶせたものですね。一応Cらしい形はしていますが、[ ] の中は完全にSmalltalkの世界のようです。これなら私にも取っ付きやすいです。2005年はObjective-Cの年になるかも。

[2005.12.31] いや、なりませんでした。せめてHello Worldぐらいはしたいのですが。もしObjective Modula-2が登場したらこれは使わずに終わってしまうことでしょう。

Objective Modula-2

[2005.12.31] 私にとって理想的と言えそうな言語があることを最近知りました。簡単に言うとObjective-CのModula-2版で、OS X/OpenStepで開発中のようです。WikiPediaにエントリーがあります。ところが、今年の夏にニュースが流れただけでその後は全く話題にも上っていないようです。この手のプロジェクトが必ず動いているSourceForgeにも見当たりません。Vaporwareで終わってしまわないことを期待します。

統合ソフト

クラリスワークス

[2004.12.25] 初めて買った統合ソフトです。1996年の帰国時に日本語ワープロがなかったのと(さすがにWriteNowで日本語を扱う気にはなりませんでした)それまで使っていたフリーウェアの表計算ソフトの機能不足のため導入しました。それなりに使いましたが、今ひとつ印象の薄いプログラムでした。

MicrosoftWorks

[2004.12.25] アルゼンチンでスペイン語の文書を書く必要に迫られて買いました。が、Windows版です。支給されたPBG3 1998モデルでVirtualPCで動かしていましたが、あまりの遅さと、それに見合わない機能の低さにあきらめました。結局スペイン語版のWord98を買ってしまい、最初からそうしておけば良かったと後悔しました。そもそも何でWindows版を買ったりしたのか、今となっては思い出せません。

MicrosoftOffice

[2004.12.25] いわずと知れたデファクトスタンダードですが、導入したのは2000年にアルゼンチンから帰ってと比較的最近です。その時はOffice2000でした。それまではWord98とExcel98を単独で持っていました。その頃はあまりいいメールソフトがなかったので、Entourageにもお世話になりました。その後、2002年にOS XにしたのでOffice v.Xにアップグレードしてそのままです。NeoOffice/Jがいよいよ実用的になってきたのでOffice2004を買うことはまずないでしょう。Officeはいろいろなことはできるし、機能に不満はあまりないのですが(日本語版ではスペイン語の文法チェックができなかったりしますが)、よけいな機能がデフォルトでオンになっているのがとても気に障ります。しかも、ものによっては(Excelで@を含む文字列を勝手にハイパーリンクにするとか)オフにもできないとは...

OpenOffice.org

[2005.12.31] OpenOffice.orgはMicrosoft Officeにかわるオフィススイートとして注目を集めています。なんといっても、無料で使えるのは最大の魅力です。しかし、単なるOfficeのコピー製品ではなく、XMLを使ったファイルフォーマットや強力なスタイルシートなど先進性も備えています。事実、OpenOffice.orgが始めたファイルフォーマットがOpenDocumentとしてISOの規格にも採用されました。2003年に初めて使った頃は機能が足りなかったりもしましたが、今では通常の使い方で困ることはほとんどありません。2005年には2.0が正式リリースされ、利用者が徐々に増えているようです。[OpenOffice.org日本ユーザー会]

NeoOffice

[2005.12.31] OpenOffice.orgはOS XではX11で走りますが、Javaのグルーコードを使うことによってOS Xネイティブな環境で動かそうというプロジェクトです。ついこの間まではNeoOffice/Jと言っていて、CocoaネイティブなNeoOffice/Cと区別していたのですが、/Cのほうは開発が中止になったようで、区別する必要がなくなったために/Jが取れたようです。2004年頃から使い始めていましたが、2005年6月に1.1正式版が、11月23日には1.2 Alphaがリリースされるなど、順調に開発が進んでいます。来年にはOpenOffice.orgに追いついて2.0になって欲しいです。1.2 AlphaはOOoの1.1.5がベースです。[NeoOffice日本語ホーム]

[2006.8.13] 2.0αが5月?に出て、今は2.0βが有料でダウンロード可能になっています (early adopter program)。αはearly adopterとして料金を払っていち早く導入しましたが、今のところ機能に不満はないのでβは無料になるまで待つつもりです。OOo 2.0のインターフェースはよりMS Officeのものに近づいてしまい、1.xで慣れた者にはやや使いにくい感じがします。

ワープロ、エディタ

ワープロとエディタを一緒にしてしまうのもどうかと思うのですが、LightWayTextのようなソフトもありますので。

一太郎

[2004.12.25] 初めて使ったワープロでした。あれは1985年(げ、もう20年かよ)、PC-9801の頃で、まだ単漢字変換だったはずです。今となっては想像もつかないでしょうね。バージョンは忘れましたが、jxWORD太郎から名前が変わったばかりの頃だったと思います。「松」もありましたね。もしかすると、初めて触ったのは松のほうだったのかも。ともあれ、初めて使った時はあの罫線機能に驚きました。いかにも日本人による日本人のためのワープロです。いまでは罫線で囲まれた表は見たくもないのですが。

一時代を担ったプログラムですが、正直、役割は果たしたのかな、という感じです。Microsoftに負けてしまうのは日本人として遺憾なので、ジャストシステムさんにはOpenOffice.org周りの付加価値ビジネスなどで生き残って欲しい気もします。

その他

データベース

表計算

統計ソフト

グラフィック

(2002.1.5記、2002.4.13加筆)

ウェブブラウザ

その他

TNTlite

[2002.4.13] 最近よく使っているソフトの一つにGISのTNTliteがあります。これはTNTmipsという商用ソフトの試用版なのですが、機能には全く違いがなく、扱えるデータの数だけが制限され、出力がプリンタのみになっています。主に、論文やプレゼンでPetuniaの採集地の地図を描くのに使っています。

例 Petunia altiplanaの分布地図

[2006.8.13] OS Xで出力をファイルにする方法がわかりました。Macintoshプリンタではなく、TNTがもっているGeneric Postscriptプリンタを指定して、ファイルに出力し、それをGraphicConverterで読めば300dpiでも600dpiでも好きな解像度で好きな形式のファイルができます(結果としてラスターデータになってしまいますが)。OS Xではどうやっても300dpi以上の解像度にできなかったのですが、これであっさり回避できてしまいました。いよいよTNTview購入の気運が高まってきた感じです。TNTliteのラスターデータの制限(縦横どちらかが最大614 lines、全体で256kBまでだったような)は実用上ちょっとつらいです。

VirtualPC

[2004.5.24] カシミール3Dを動かすためにのみ存在するソフト。最近version 6を入手しました。OS X用のTNT Sim3Dが出たら要らなくなるのかな。ちょっと前まではModula-2シェルでもあったのですが、Rubyが使えるようになったのでこちらの用途はなくなりました。

[2004.10.16] ハードウェア編でも書いたように、Vaioノートを買ってしまったので、ハードディスクの肥やしになることが決まってしまいました。まあ、時には使うこともあるかも知れません。

[2005.12.31] 最近復活の兆しが見えています。TNTliteの出力をファイルに落とすにはPDFに印刷するしかないのですが、OS Xではこれはできず、Windowsに頼っています。しかし、その度にVaioノートを持ち出すのも面倒なので、なんとか1台で完結したいと思うようになり、VirtualPCの出番が久しぶりにやってきました。しかし、VPCで動かしたTNTからは共有フォルダのデータが読めないことがわかり、データ管理の面ではVaioの時と変わらず、OS X用とWindows用の2コピーの同期をとるのが頭痛のタネです。

[2006.8.13] OS Xでもファイルに印刷する方法がわかりましたので、またハードディスクの肥やしに戻ってしまいました。かわいそうに。


コンピュータ関係の目次に戻る | このページのトップへ | 近況および研究分野


2002年1月5日作成
2005年8月17日 R、Gimp、Shiiraを追加しました。
2005年9月3日 更新
2005年12月31日 Objective Modula-2とコメントいくつかを追加しました。
2006年8月13日 MySQLを追加、RubyとCamino、NeoOffice、TNTliteなどを更新しました。

國分 尚
hkokubun@faculty.chiba-u.jp