カテゴリー

最新の記事

最近のコメント

最近のトラックバック

月別アーカイブ

ブログ検索

RSSフィード

ブロとも申請フォーム

この人とブロともになる

スポンサーサイト

スポンサー広告
--.--.--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ベンチャーブログのランキングに参加しています。
下のバナーをクリックして応援していただけると嬉しいです。
にほんブログ村 ベンチャーブログへ

私のプログラミング遍歴

ブランディング試論
2008.11.11
たぶんこれから、プログラミングについてエントリーを書くことが多くなると思います。そしてその内容には、けっこう見当違いなものも出てくるような気がします。そこで今回は、私自身のプログラミング経験が、どのように作られたのか、簡単な自己紹介をしておきたいと思います。「何であいつはこんな(変な)ことを書いているんだろう」と思われた時に、何らかの参考になるかもしれないので。


1.趣味の時代(1980~1987年頃)

私の最初のプログラミング経験は、ちょっと変わっているかもしれません。モトローラ6802の機械語だったんです。アセンブリ言語ではなくて機械語です。プロセッサーとかメモリーとかペリフェラルLSIとかユニバーサル基盤(56ピンスロットに挿入できるヤツ)とかを秋葉原で買ってきて、何百ものリード線を半田付けしてマイクロコンピュータを作って、その上で動くモニタープログラムを作る所から始めたのです。

これがその自作のマイコンです。ちょっとぼけていますが、雰囲気はわかるとおもいます。ちなみにこれはプロセッサボードで、他にメモリーボード、I/Oボード、ビデオボードなどがあります。

自作のプロセッサボード

時代は1980年頃。当時「RAM」というマイコン雑誌があって、そこに乗っていた回路を自分なりに(ちょっとだけ)アレンジして作成しました。最初のプログラムコードの入力は、トグルスイッチをビット毎に並べて2キロバイトメモリーに直接書き込むというもので、プログラムを書き込み終わったら、CPUのクロックをスタートするという、実に原始的なものです。その後、電卓キーボードの入力、7セグメントLEDの出力、ビデオ出力、カセットテープへのデータ記録装置(サッポロシティスタンダード!)を付けて、これらを制御するための原始的なプログラムを、機械語で直接書いていました。

しかしこんなマイコンでは、ろくなことはできません。そこで1983年にパソコンを購入しました。富士通のFM-7です。当時はNECやシャープなど、数多くの電機メーカーがパソコンを発売していましたが、私は「プロセッサがモトローラ6809だ」という理由だけでFM-7を選んだんです。だって8ビットプロセッサとして初めて掛け算命令(確かニーモニックは「MUL」だったと思う)が実装されたプロセッサだったんですよ!その1~2年前に「月刊 ASCII」が「6809特集」をやったときには興奮しましたね。あこがれのプロセッサだったんです。余談ですが、このプロセッサにはなんと「SEX命令」もありました。ウソのようですがホントの話ですよ。

でもFM-7で最初に使っていたのはBASICです。その後「プログラミング言語K」という、Pascal系のような言語を中心に使うようになりました。まあ、たいしたことはやっていませんけどね。画面上にたくさんの人魂がふわふわ動いているのとか、ワープロもどきとか、レイトレーシングのCGもどきとか。それからOS-9 Level1もFM-7に突っ込んだ記憶があります。この頃、5インチフロッピーが10万円前後で買えるようになったんじゃあないかな。私にとって当時の最大のテーマは「リロケータブル」で「リエントラント」なプログラムを書くことでした。懐かしいですね。

これと並行して、大学の研究室ではHP-BASICを使っていました。建築系の研究室なのですが、私は建築振動を研究テーマにしていて、FFT(高速フーリエ変換)やらモード解析やらをHPのワークステーションでやっていたのです。それからアルバイト先では、UNIXでFORTRANプログラムのデバッグとか、光ファイバーの断線箇所を後方散乱光の時系列変化から自動的に判別するHP-BASICプログラムの開発とか(ああややこしい)をやっていました。まだHPのワークステーションが、HP-BASICとUNIXの選択ブートだった時代です。1880年代半ば過ぎですね。

このアルバイト先にはNTTやNECのUNIXマシンもあって、NECのUNIXマシン(確かEWS4800の初期モデル)は1日に何回かクラッシュして、そのたびにNECのエンジニアの方が来ていました。当然ながらUNIXを仕事で使うのはまだ実験的な段階で、この会社もメインのプロジェクトはメインフレームやVAXで動いていたはずです。私はUNIXを希望したので、毎日クラッシュするいくつかのUNIXマシンで、実験的な仕事の一端に参加することになりました。自宅でOS-9を使っていると、やっぱりUNIXがあこがれのOSになるんですよ。


2.仕事の時代(1988~1996年頃)

学校を出た後は日本IBMに入るのですが、入社の動機は「コンピューターメーカーの中で(たぶん)最も初任給が高かったこと」と「UNIXビジネスに本腰を入れ始めていたこと」です。当然ながらAIX(IBMのUNIXシステム)部門に配属を希望し、その通りの配属となりました。当時のIBMにはUNIXを知っている人がものすごく少なかったため、希望が通ったのだと思います。

やっていた仕事は、ソフトウェア会社さんのポーティング支援、マシン貸し出し制度の構築、導入先で発生した技術的トラブルの解決、マーケティング関係など多岐にわたっていましたが、基本的には「プログラミングが仕事」という環境ではありませんでした。でも1度だけ、仕事としてプログラミングに専念したことがあります。それは3次元CADで使うライブラリーのパフォーマンス比較のためのテストプログラム作成です。

当時ある自動車メーカーさんが、次世代CADとしてgraPHIGSというライブラリを使ったワイヤーフレーム3D CADを制作していたのですが、なかなか思ったようなパフォーマンスが出ませんでした。そこで当時AIX上で動いていたもうひとつのグラフィックライブラリであるGLと比較して、米国のgraPHIGS開発部隊に「パフォーマンスアップのプレッシャーをかけよう」ということになったんですね。こういう話になったのは、このプロジェクトの担当営業やgraPHIGSの日本側の担当者とたまたま雑談したときに、私が「GLなら10倍くらいのスピードになりますよ」と言ったのがきっかけだったと思います。でも社内でGLとC言語の経験がある人がほとんどいなかったので「じゃあおまえが作れ」ということになったわけです。

graPHIGSを使うのは初めてだったんですが、ワイヤーフレームモデルの表示、要素のピック、ピックした要素の編集、といった基本オペレーション機能を、約5000行のテストプログラムで再現しました。それからGLでも同じ機能のものを作成し、合計で約1万行のC言語プログラムをドキュメント付きで2週間で完成させました。それほど大きなプログラムではありませんが、とても勉強になりました。実際、GLで作成したプログラムはgraPHIGSで作成したものに比べて10倍速く動くことも実証されましたし、このデータがプレッシャーになったのか、graPHIGSのパフォーマンスも改善されたと聞いています。この時の経験は、IBMから独立した後、別の某自動車メーカーにgraPHIGSの使い方をお教えする、という仕事で役立ちました。

独立してから1年後には、某都市銀行のトレーディングシステムの開発に関わるようになりました。といっても開発者としてではなく、開発支援のコンサルタントとしてです。開発用の環境を整備したり、その運用管理を行ったり、開発中に発生するトラブルをつぶす、というのが主な役割でした。この仕事をしていた時には、C言語やK Shellを使った細かいプログラムをけっこう作っていた記憶があります。またトラブルシューティングのために、X-Windows/Motifを使ったウィジェットプログラミングもやりました。でもあまり「プログラミングでメシを食っている」という感じではありませんでしたね。

Linuxの0.99が秋葉原で買えるようになったのは1993~4年頃でしたでしょうか。私もLinux 0.99のCD-ROMを購入して、自宅(というかオフィス)で、Linuxを動かすようになりました。この頃からawkにはまって、シェルの代わりにawkを使うことが多くなったような気がします。

ちょうど同じようなタイミングで、ある会社の次世代システムプロジェクトの担当者から「AIXで構築したシステムのパフォーマンスが十分に出ない」という話がもちかけられたました。そこでパフォーマンス分析の仕事を請け負ったのですが、この時は「プログラミングが仕事になった」という実感がありました。C言語で作成したパフォーマンスデータ収集プログラムをすべてのAIXマシンに仕込んでもらって、ある期間のパフォーマンスデータを収集し、それをawkで解析したのです。Linux上で動くawkスクリプトとMacintosh上で動くExcelマクロを連携させて、自動的に分析レポートを作成できるようにしたので、短時間でレポートを作成できました。分析レポート1枚あたりいくら、という契約だったので、私がこれまでに関わった仕事の中で、投入時間に対する報酬が最も大きい案件になりました。

でもプログラミングが仕事とそれなりに密接な関係にあった時代は、1990年代半ばに終わってしまいました。この頃から私のメインの仕事が、コピーライター業へと徐々にシフトしていったからです。


3.再び趣味の時代(1996~2007年頃)

仕事ではプログラムを作らなくなりましたが、趣味の世界ではチョロチョロとプログラミングを楽しんでいます。でもその目的は機械制御が中心でした。H8マイコンのコードをアセンブリ言語で書いたり、USB経由でサーボモーターを動かすためのドライバをC言語で書いたり。PLA(Programmable Logic Array)にも手を出しています。ロボットを作るために、組み込みLinuxからマルチチャンネルでサーボをコントロールする回路なんかを作りました。例えばこんな感じです。

PLAの制御回路

これはその回路にSH2マイコン(といっても32ビットでLinuxが動くすごいやつ)を載せたものです。裏側にXilinxのPLAが乗っています。下の2枚のプリント基板は自作です。

この手の自作がとても好きなのですが、最大の問題は「なかなかモノにならないこと」です。趣味なので仕事が忙しくなると中断せざるを得ないのですが、いざ再開しようと思ってもドキュメンテーションがいい加減なので、前回何をどこまでやったのか、なかなか思い出せないのです。また回路設計やプリント基板の制作、PLAへのロジック組み込み、さらにPLAを制御するためのプログラムの作成など、多岐にわたる知識が必要で、時間が経つと技術も進歩するため、知識が陳腐化するという問題もあります。そのため途中で放り出しちゃうケースが多いんです。

実際、上の写真の回路も、今の私には動かすことができないと思います。作った時には「大傑作!」だと思ったんですけどね。


4.仕事の時代をいまいちど...(2008年~)

それでもプログラミングは好きです。なんとかしてプログラミングを仕事にできないかと、今も考えています。今年の春からは、PHPを使ったWebプログラミングに着手しています。新しいサービスを公開して、何らかの形でオカネをいただけないかと、まあそんな甘いことを考えているわけです。もちろん今後も、メインの仕事はコピーライティングであり続けると思いますが...。

PHPは構文がC言語に似ているため、私にとっては馴染みやすいものでした。でも最近、他の言語のことがものすごく気になっています。JavaScriptはAjaxの実装で使わざるを得ないのでスタディを開始していますが、他にもRubyとかPythonとかLispあたりも、勉強しようかなと思っています。

実はLispに関しては20年前にもスタディしたことがあるのですが、当時は個人で入手しやすいLisp実装系があまりなかったことと、括弧の羅列がちょっと気持ち悪かったこと、関数型言語というものが理解できなかったことから、結局はC言語メインになってしまいました。でも今は関数型言語の生産性や自己拡張性に惹かれつつあります。

それからオブジェクト指向も好きになりました。最近までオブジェクト指向の価値があまりよくわからなかったのですが、今年9月にPHPのフレームワークもどきを作った時に、オブジェクト指向の強みが理解できたような気がします。

もし何らかのサービスを公開するのであれば、どれだけ低いコストで提供できるのか、そして新たなアイディアの盛り込みや改良をどれだけ短期間で行えるのかが、重要な鍵になると思います。よほど大規模なユーザー数を想定するのでない限り、コストというのは結局のところ人月ですから、少ない人数でも十分なパワーを発揮できる言語が必要です。またコードの読みやすさ、改変のしやすさも重要です。これらの要件を満たす言語はどれなのか。いまはそれを探っているところです。

「さっさと作って公開すればいいじゃん」という意見もあると思います。でもプログラミング言語のようなベーステクノロジーの選択というのは、店を開くときにどのような立地を選ぶのかに、とても似ていると思うんです。店の内装やメニューは後から簡単に変えられますが、立地条件を変えるにはかなりのコストがかかります。プログラミング言語も、いったん選択して大きなコードを書いてしまうと、なかなか他の言語に移ることは難しいと思います。

それ以上に怖いのは、使用する言語によって開発者の思考パターンが支配される可能性もあるということです。実際、BASICとC言語では、プログラミングの発想がまったく変わってしまいます。PHPでも、オブジェクト指向を使うか使わないかで、問題解決のアプローチはまったく異なります。それは単にコーディングスタイルが変わるというレベルではなく、大げさにいえば「世界観が変わる」といった感じなのです。

ということで、今、勉強のまっ最中です。なんだか10年間のブランクの後、必死にキャッチアップしているような気分です。遅れてきたプログラマー、といった感じですね。あるいは四十の手習いか。まあどんなことでも、始めるのに遅すぎるということはないでしょう。

それにしても、今はプログラマーにとって、とてもいい時代ですね。自分が作成したプログラム(というかサービス)を、インターネットで簡単に公開できるんですから。こんな時代にプログラミングしないなんで、ホントにもったいない。そう思います。
スポンサーサイト

ベンチャーブログのランキングに参加しています。
下のバナーをクリックして応援していただけると嬉しいです。
にほんブログ村 ベンチャーブログへ

FC2Ad

相続 会社設立

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。