目次
11-08 ビル・ジョイの誕生日(1954)
11-08 パピクリタイムアタック 挑戦者募集!
今日はビル・ジョイの誕生日(1954)。
漢字では美流上位、と書くそうです。ハッカーは漢字文化好きね。甘酢苦瓜の話とかね。
…彼が何者であるかを書く前に答えを出してしまいましたが、高名なハッカーの一人です。
ハッカーって、犯罪者の意味ではなく、プログラムの天才の意味ね。
ビル・ジョイは大学院生の時に、ほとんど一人で BSD を開発し、世界初のスクリーンエディタである vi を作り、高機能シェルである csh を作り、TCP/IP の実装を作り上げました。
卒業後はサン・マイクロシステムズの16人目の社員になりますが、16人目であるにもかかわらず「共同設立者」という待遇で、NFS を作り、SPARC の設計に関与します。
…コンピューターマニアなら、これだけで大天才だとわかると思いますが、ひとつづつ説明した方がよいでしょうね。
まず、BSD というのは、UNIX の方言の一つです。
UNIX という OS は、AT&T のケン・トンプソンが趣味で作ったものです。
AT&T は当時はアメリカの特別な会社で、法律で定められた事業しかできませんでした。
そのため、UNIX は商売にはなりません。ケン・トンプソンは UNIX のソースコードを教育機関向けに無償公開、カリフォルニア大学バークレー校にケン自身が出向き、UNIX の使用方法などの講義を行います。
ソースコードが公開されましたので、バークレー校ではこれをもとに OS の仕組みなどの研究を行います。
そして、独自に「あったら便利な機能」を次々と追加し始めました。
ちょうどその頃、ビル・ジョイはバークレー校の大学院に入学します。
そして、各々勝手に機能追加していたものをまとめ上げ、ビル自身も改良を加え、元の UNIX とはかなり違うものを作り上げます。
この UNIX は、AT&T の UNIX の使用が許諾されている教育機関に配布されます。
この配布の際、バークレー校が手を加えたことを示すため、Berkeley Software Distribution (バークレイによるソフト配布)と明記されました。この頭文字が BSD 。
当初は BSD UNIX と呼ばれていましたが、後に AT&T が分割され、法律による規制が解除された際に、AT&T が UNIX の配布を始めたため、UNIX の商標が使えなくなりました。
このため、現在では単に BSD と呼ばれます。
いまでは UNIX として有名なのは Linux です。
しかし、Linux のコマンドのほとんどは、BSD から持ってこられたものです。
そのため、UNIX の(見た目上の)方言としては BSD に似通っています。
UNIX の頃は、まだコンピューターをテレタイプ端末で使うのが普通でした。
PDP-1 にはすでにディスプレイが付いていたのに、PDP-11 になってもこれはまだ「特別な」デバイスだったのです。
UNIX は PDP-7 で開発され、その後 PDP-11 に移植され、BSD は PDP-11 版をもとに改良されました。
でも、まだプログラムはテレタイプだったのです。
テレタイプを使うと、キーボードで入力した文字を、紙テープに2進数でパンチできます。
これでプログラムを記述します。もし打ち間違えがあった場合は、文字単位で「消去」することも可能ですが、間違えた行を紙テープ上から消し去ってしまったほうが簡単です。
方法は簡単。間違えたところで紙テープに印をつけて置いて、気にせず入力を続けます。
あとで印を探して、その行をハサミで切り取り、セロテープで貼り着ければ編集完了。ちゃんと読み込めます。
テレタイプは、直接コンピューターに文字を送ることもできましたし、上に書いたように紙テープに長い文章を入れておき、まとめて送ることもできました。
ビルジョイは、プログラムを cat コマンドで書いていた、と言う逸話があります。
cat > prog.c
ですね。この後に「1文字も間違えずに」入力を行えば、プログラムファイルを作ることができます。
大天才だからそれができた、と言う文脈で語られるのですが、おそらくは紙テープから送り込んでいたのでしょう。種明かしをすれば「なーんだ」と言う話。
UNIX では、コンピューター上でファイルを編集する方法も用意されていました。
テレタイプを使って、「エディタ」にファイルを読み込むように指示をしたうえで、何行目の何文字目を編集するか指示します。
するとその行がタイプライターで印字されます。編集する文字を入れると、再度編集後の行が表示されます。
間違いがなければ確定します。
行ごと削除したり、行を挿入したりすることもできました。
あまり大きな変更の場合、一度ファイルを紙テープに出力し、紙テープ上で編集した方が速いかもしれません。
しかし、簡単な手直しをコンピューター上で行える、と言うのは便利でした。
ビルジョイはこのエディタを改良し、PDP-11 に接続されていたディスプレイ端末で編集を行えるようにします。
ディスプレイ端末とは、テレタイプを模倣し、紙に印刷をする代わりにテレビ画面に文字を出力する端末のことです。
テレタイプでは1文字毎に文字が送られましたが、ディスプレイ端末では改行時に1行分の文字が送られるため、改行するまでは端末上で文字の編集が可能でした。
ビルジョイは、このディスプレイ端末の特性を活かし、エディタを改良します。改良エディタなので、 EX エディタと名付けられました。1976年には開発されていたようです。
これは、従来のテレタイプ端末での使用も考慮した、1行単位の編集を行うエディタです。
ただ、ディスプレイ端末で使用した際に使うと便利な「ビジュアルモード」というおまけがつきました。
ビジュアルモードでは、指定した行を表示・編集するだけでなく、前後の数行を表示できます。
これにより、目的の行を探すのが容易になりました。カーソルを上下に動かし、そのまま編集を始めることができます。
EXエディタは、BSD の最初の配布で広まります。1978年3月のことでした。
この1年後、1979年3月の BSD 配布では、ビジュアルモードを中心としたエディタにつくりかえられています。
これが世界初のスクリーンエディタ、vi でした。(vi は VIsual モードから取られています)
いまでは、エディタと言えばスクリーンエディタのことです。しかし、すべては vi から始まっています。
現在では、vi とほぼ同等の機能を持ち、さらに拡張した vim エディタが有名です。
#この記事を公開後、vi は世界初のスクリーンエディタではないのではないか、という指摘がありました。
なかなか興味深いものでしたので、調査して別記事に書きました。
…功績はいっぱいあるのに、2つ紹介したところで予定行数に近づいているな。
後はペースを速めましょう。
csh 。
シェルと言うのは、UNIX でユーザーが作業をするためのプログラムです。
Windows でいえば Explorer (ファイル管理を行い、アプリケーションを起動するプログラム)に当たります。
UNIX は、当初 sh と呼ばれるプログラムが使われていましたが、csh は根本から作り直し、C 言語風のプログラムを解釈できるようにしたものです。
さらに、過去に使った「コマンド」を簡単に呼び出せたり、文字列の一部を正規表現で変更できたり、いろいろと便利な機能が付いています。これらは sh にはない機能でした。
その一方で、csh は大きなプログラムを作るのには適しません。せっかく C言語風の構文を備えているのに、関数を作ることができないためです。
BSD 系のシステムでは、昔は csh や、その拡張である tcsh が標準になっているものが数多くありました。
しかし、現在は sh の拡張である bash などがよく使われています。
ただね、csh / tcsh は、コマンドラインで数行のちょっとしたプログラムを組む時には、bash よりも便利なことが多い。
ディレクトリの中の全てのファイルを一定の決まりに従ってリネーム、とか、その程度の処理ならね。
だから僕は、普段は bash で作業をしていますが、時々 tcsh に切り替えたりします。
TCP/IP。
現在のインターネットの根幹を支える技術です。
元々、UNIX にはネット機能はありませんでした。BSD でネット機能が追加され、その研究の中で TCP/IP というプロトコルが策定されます。
TCP/IP を扱うプログラムは、非常にややこしい上に信頼性が求められたため、外部業者に作成が委託されたそうです。
しかし、出来上がってきたものは、確かに動くし信頼性もありそうなのだけど、動作の遅いものでした。
TCP/IP は根幹部分なので、この部分の動作が遅いとネット―ワークすべてが遅くなってしまいます。
そこで、満足できないビル・ジョイは、大幅に書きなおして性能を上げてしまったそうです。
NFS。
ネットワークファイルシステムです。ネットワークに接続された別のマシンのハードディスクを、自分のマシンのハードディスクのように使える技術。
Windows や Mac でも、他のマシンのハードディスクを使える技術はあります。でも、最初のアイディアは NFS。これがあまりにも便利で、UNIX では広まったので、Windows や Mac でも取り入れられたの。
一時期は一世を風靡した CPU です。RISC の初期のもので、非常に高速でした。
ビル・ジョイが「高速な CPU が欲しい」というので設計が始まったらしいのですが、実際の設計は別の人。
ビルはソフト屋ですから、回路設計は出来なかったのではないかな。
多分、ビルのここでの仕事は、ソフト屋として必要な命令セットを決めたりする作業でしょう。
サンの話もしようと思っていたけど、長くなりすぎるからここでおしまい。
ビル・ジョイが作ったプログラムのうち、有名なものに限った説明だけでこんなに長くなるとは…
まぁ、そんだけすごい人だと言うことです。
同じテーマの日記(最近の一覧)
関連ページ
チキンラーメンの誕生日(1958)【日記 14/08/25】
A Dark Room , Candy box! , Cookie Clicker.【日記 15/07/01】
デイビッド・パターソン 誕生日(1947)【日記 15/11/16】
マーシャル・カーク・マキュージック 誕生日(1954)【日記 16/01/19】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
もう2週間ほど前の話 10月21日に「パピコンクリッカー」という WEBブラウザゲームが発表されました。
海外WEBブラウザゲーム、Cookie Clickerのパロディですね。
まぁ、パロディとしての一発ネタに近く、一瞬人気が出てすぐしぼんだわけですが、僕はしつこく遊んでいました。
カンストを目指していたの。…ソースを読んだらカンストがあることは判ったのだけど、作者さん曰く「カンストを目指すゲームではありません」。
でも、そういわれたらやりたくなるじゃん。ざっと計算して、2週間くらい放置すればいくなー、と思ったのでやっていて、実際2週間くらいで終わったわけです。
これ、パソコン作業の裏でやっていただけだから2週間もかかりましたが、パピコンクリッカー(以下パピクリ)専用にパソコンを付けっぱなしにすれば、1週間かからずに終わると思う。
それはさておき、2週間放置してカンストしたわけですが、そんな時間がかかる遊びに手を出す前にやっておけばよかった、と後悔した遊び方がありました。
長く苦しい戦いだった…… pic.twitter.com/mUzBeB1e66
— wizforest (@wizforest) November 7, 2013
元ネタのクッキークリッカーは基本的にインフレを楽しむゲームで、何時までやっても終わりはありません。
でも、パピコンクリッカーは「ひとまず終わり」が1時間もせずに来るように設定されています。
ゲームの説明は上のリンクを読んでもらうことにして、ひとまず終わると「ソフト50本リリース」という日数を記録として残してくれます。
先に書いたように2週間も遊べば、「全マシン台数カンスト」と「総売り上げカンスト」も記録されるのですが、不毛だからこんなものは目指さない方がよろしい。作者さんもそういってましたし、経験者である僕もそう思います(笑)
日数が記録されると言うことは…この日数を縮めるゲームなのだな、と了解したわけですよ。ゲーム好きとしては。
でも、この日数が、非常に縮めにくい…というか、システムの都合で縮まない作りになっているんですね。
タイムアタックしやすいようにして、と作者さんに要望を出したところ「その遊び方は全く考えていなかった」との答え。
えー。スコア表示があったらそこで競うのがゲーマーってものでしょ。
スコア表示するなら、その部分で作り込みしなくちゃ。
作者さんに聞いたら、以下の返事をもらいました。
@wizforest 1本のソフトを開発してから次のソフトまで、6日のインターバルがあるので、50本で300日くらいはかかってしまいます…すみません。あ、ソフトを開発した瞬間にオプションを購入するとカウンタがキャンセルされます(オプションのインターバルはあるので意味ないかも…?)
— TINY野郎 (@tiny_yarou) October 22, 2013
メッセージの表示は、上手いタイミングで操作を行えば消すことができる、とのこと。
なるほど。それを駆使して遊んでみるか。
…と、返事をもらってからタイムアタックに挑みたかったのですが、迂闊にカンストを目指してしまったので2週間もの長期にわたって、遊びたくても遊べない状態だったのです。
カンストした今、やっと遊べる!
ところで、ルールは先ほどのリンクを読んでもらうことにして、ゲームの「仕様」の説明。
ソフト(全部で50本)を開発すると、そのソフトの説明が表示されます。
この説明が6秒間あり、説明中は条件を満たしても次のソフトは開発されません。
作者さんの言う「300日くらいはかかる」とはこのこと。
ゲーム中は、1秒を1日と表示しています。
50本のソフトで各6秒の説明があるので、 50*6 = 300 で、300秒は絶対にかかってしまうのです。
ところが、作者さんが示唆したように、ソフト開発の説明は、オプション機材を購入することで表示される説明によって消すことができます。かわりに機材の説明が表示されますが、こちらは5秒間。
周辺機器(全14台)は購入時に、パソコン(全7台)は1台目購入時に説明が出ます。
6秒間の説明が出た瞬間に5秒間の説明を被せることで、理論上はソフト開発時間を1秒短縮できます。
ただし、機材の説明5秒の間も次のソフトは開発されないため、操作を誤るとかえって時間を遅くしてしまう結果となります。
(ソフト開発の説明が出て1秒以内に機材を買わないといけない。それ以降のタイミングで買うと時間的に損となる)
ゲームは、最初に PC-6001 を購入することでスタートします。
この説明の5秒間は、ソフト開発はできません。
もっとも、その5秒以内に開発条件をそろえるのも難しいでしょう。
その後から開発が始まったとして、連続して50本全部の開発が行われれば、説明の表示が終わるのは 305秒目。
でも、実際には50本目の開発は、説明表示の始まった瞬間です。なので、299日目が50本リリースの記録です。
さらに、先に書いたように説明時間を1秒づつ縮めることができます。
機材は全部で21種類ありますが、そのうち1つは最初に購入する PC-6001なので除外。
つまり、20秒縮めることができて、理論上は 279日が最短日数。
…とはいえ、完璧に説明をかぶせて1秒短縮なんてできるわけもありませんし、最初のPC6001の購入説明が終わるまでに1本目のソフトをリリースすることもできません。
あとは、いかに初動を速くするか、表示中に次のソフトを開発するか、と言う勝負になります。
ソフト開発の条件は、基本的にはパソコンの購入台数。
最初は 10台目、後は 50の倍数(最後だけ255)で開発されます。
6001 では 3/25台目でも開発されます。
これを使って、最初の開発を早めましょう。とにかく最初の一本を開発し、その表示時間中に次を開発する、というサイクルをつなげることが重要です。
6001mkII と 6601 では 5/25/75/125台目でも開発が行われますし、6001mkII では 175台目でも開発されます。25台おきに開発されることになるので、うまく使って開発を繋げましょう。
ただ、ここに罠があって、6001 の 100台目のソフトがないと、6001mkII の 5台目は開発されません。
最初の頃は6001mkII は高いのですが、一気に10台まで集める必要があります。
その後は 6001 を 100台まで集めれば、2本のソフトが一気に開発されるので時間の余裕が生まれます。
他にも、このような開発順序はあるのですが、初動で引っかかることはなさそうです。
最後の1本は、すべての機材を購入した時に開発されます。
(7台目のパソコンでは、台数に応じたソフト開発はありません。ただし、すべての機材購入のために、255台購入しなくては最後の1本は開発されません。)
しかし、終盤ではおそらくは表示の方がずっと遅く、ハラハラしながら記録が更新できるのか見守ることになるでしょう。
現在297秒。300秒を目安に遊んでいたので、ひとまず満足。
まだ改良すれば速くなると思うけど、あえて余地がある状態で挑戦者を待ちたいと思います。
プログラム改造(チート)はダメだけど、それ以外の手段は何でもあり、と考えています。
僕は、この記録を出すのにクリック連打リングを使用しています。
ファミコンの連射ジョイスティックみたいなもんで、それを使うことでかえってゲームが面白くなるものだから。(タイムアタックに関しては)
カーソルを正確に移動させる時間が一番のロスタイムなのだけど、画面縮小ができるブラウザで、ある程度縮小してしまうといいかも。距離が短くなるからね。
上の記録を出したときにはこのことに気づいてませんでした。これが「もっと縮む」と考えている理由の一つ。
タッチパネル環境で、押しっぱなしで連打が効くようにして遊ぶと正確で迅速なクリックができそうですが、これは試していないので可能かどうかわかりません。
究極は TAS になるのかな…とおもいつつ、現状 Windows でマウスカーソル対応の TAS ソフトがないようなので、当面は手動で勝負です。
#TAS で理想的な秒数を叩きだす勝負、というのも興味はある。
この場合は、理想パターンを編み出すパズルゲームになりますね。
5分程度で終わるゲームですから、どなたかチャレンジしませんか?
挑戦者求む!
#こんなソフトでの勝負を受けてくれる人がいるのか疑問だが (^^;
同じテーマの日記(最近の一覧)
関連ページ
チキンラーメンの誕生日(1958)【日記 14/08/25】
A Dark Room , Candy box! , Cookie Clicker.【日記 15/07/01】
デイビッド・パターソン 誕生日(1947)【日記 15/11/16】
マーシャル・カーク・マキュージック 誕生日(1954)【日記 16/01/19】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |