コンピュータ26ページ目の日記です

目次

前のページ
2015-09-23 任天堂の創業日(1889)
2015-09-28 シーモア・クレイ 誕生日(1925)
2015-10-01 デイブ・アーンソン 誕生日(1947)
2015-10-02 アンドリュー・グリーンバーグの誕生日(1957)
2015-10-08 ヘイリー兄弟の誕生日(1949)
2015-10-14 アショーナ・ヘイリーの命日(2011)
2015-10-15 プレイステーションを生み出した新聞記事
2015-10-23 古くて非力なマシンをLinuxBeanで再生してみた
2015-10-23 マイケル・クライトン 誕生日(1942)
2015-10-24 非力なマシンはやっぱり非力だった
2015-10-26 NuScratch
2015-10-29 DJBの誕生日(1971)
2015-10-30 クリフォード・ベリー 命日(1963)
2015-11-01 プリンタ買った
2015-11-03 レフ・テルミン 命日(1993)
2015-11-05 jsdeferred でアニメーション
2015-11-12 Edge でもドット絵拡大!
2015-11-13 DIGA DMR-BRW500
2015-11-15 追悼:ジーン・アムダール
2015-11-16 デイビッド・パターソン 誕生日(1947)
次のページ
任天堂の創業日(1889)  2015-09-23 10:41:27  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は任天堂の創業日。


会社が設立されたのは、1947年の11月20日です。

でも、会社組織化する前に、個人経営の山内房治郎商店で「任天堂」という屋号を使っていました。


#屋号とは、商売上の名前のこと。正式な名前とは別の通名。


その山内房治郎商店を創業したのが、1889年の今日。

テレビゲームで有名な会社としては、100年以上の歴史を持っている会社はそう多くないと思います。




安土桃山時代、トランプが日本に渡来します。

ポルトガル経由で渡来したため、ポルトガル語をそのまま使って「カルタ」と呼ばれます。


#トランプ、カルタ、という名前の由来も面白いのだけど、ここでは割愛。



ところがこのカルタ、賭博性が強くて、仕事もせずにカルタにのめり込む人がたびたび出た。

それでは困るので、何度も禁制品にされています。


「何度も」というのは、つまり禁止しても誰もやめないから。

禁止しても禁止しても、みんなカルタを遊び続けるのです。


ついには、カルタが禁止されれば似たような別の遊びを考えて禁制令をかいくぐる、という始末。


花札はこうしてできたもので、カルタの特徴として「数字が書いてある」という指定があったために、数字をなくしたものです。


でも、12か月を想像させる季節の絵柄を書き、各絵柄が4枚で構成されます。

つまり、現在の13枚*4種類のトランプと、ほぼ同じものなのです。


そして、江戸時代には花札も禁制品に加えられるようになります。




さて、任天堂こと山内房治郎商店を創業したのは、山内房治郎さん。

ファミコンを発売した時の任天堂社長、山内溥氏の曽祖父に当たります。


元々浮世絵などの版を作り印刷を行う、木版工芸家です。

江戸時代には珍しくない職業。


ただ、彼はこっそりと、禁制品の花札を作り続けていたようです。

いわゆる日陰者。でも、欲しがる人がいれば作る人も必要なのですね。



江戸時代、花札は禁制品とはいえ、需要がありました。

普通に流通しているし、幕府もそれに気づいているのだけど、お目こぼしがあった。


これ、裏には平和すぎた江戸時代ゆえの弊害があります。


当時、家は長男が継ぐものだった。…まぁ、継ぐほどの「家」があるのは、たいてい武家です。

でも、子供は多数います。次男、三男は普通にいる。


平和でない時代なら、武家は戦うのが仕事ですから、いつ長男が死ぬかわからない。

次男、三男であっても家をいつでも継げる覚悟でなくてはなりません。


ところが、江戸、特に末期は平和すぎた。

次男三男はやることがありません。主君を持てない浪人も多く、毎日を無為に過ごす状態。


将来家を継げないことがわかっているなら、何か仕事を始めたりできるとよいのですが…

身分社会でもあり「武士の子が商人になるなど家の恥」とされ、許されません。



結果、生活費は長男から十分に与えられ、将来のあてがあるわけでもなく、何かを始められるわけでもなく、ただ家の恥にならないように過ごしてくれ、という生殺し状態にされるのです。



で、こういう人が行きつくのは、賭博場。

生活費は十分にありますし、自分が苦労して稼いだものでもないので、どんどん賭博にお金をつぎ込みます。


さて、話を花札に戻すと、賭博場に花札はつきものでした。

これを本気で取り締まると、賭博場が存続できません。すると、武士の次男三男の欲求不満を解消する手立ても失われます。

もし彼らが、世の中への不満を募らせて暴徒となれば、江戸幕府にとっても危機となります。


…こんなわけで、賭場や花札は「必要悪」で、存在は明らかでありながらも、お目こぼしがあったのです。



花札が欲しければ、天狗のお面を看板としているお店に行けば入手できました。

天狗の「鼻」で、「花札」を意味しているのです。


任天堂の名前の由来は、賭博の結果を「天に任せる」という意味でもありますが、天狗の天でもあるようです。




明治維新が起こり、江戸時代の制度が見直される中で、カルタやトランプに対する禁制も 1886年に解除されます。


花札職人は日陰者ではなく、堂々と花札を売ることができるようになりました。

その3年後の今日、山内房治郎商店が創業されます。



詳細、および創業後の歴史は、「任天堂の会社設立日」に書いています。

そちらも併せてお読みください。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

アーカイブとはなにか【日記 16/12/17】

別年同日の日記

13年 FireFox 初公開日(2002)


申し訳ありませんが、現在意見投稿をできない状態にしています

シーモア・クレイ 誕生日(1925)  2015-09-28 10:01:46  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、シーモア・クレイの誕生日。


スーパーコンピューター、という名前を広めた、CRAY-1 (1975)の設計者です。


彼の業績については、命日に書いているので、そちらを参照してください。




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

11年 Location ヘッダと 302 ステータス

13年 パソコン記念日

13年 小さな冒険

18年 夏の家族旅行、まとめました


申し訳ありませんが、現在意見投稿をできない状態にしています

デイブ・アーンソン 誕生日(1947)  2015-10-01 14:22:11  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

今日はデイブ・アーンソンの誕生日(1947)。


ロール・プレイング・ゲーム…いわゆる「RPG」を考案した人です。

RPG、いろいろと形は変わっていますが、今でも人気のゲームジャンルの一つです。




アーンソンが考案したのは、ダンジョンズ・アンド・ドラゴンズ、いわゆる「D&D」というゲームです。

発売されたのは 1974年。


RPGは1980年代前半のアメリカでは人気のゲームで、1982年の大ヒット映画「ET」の冒頭でも、子供たちが遊んでいます。

この時代ですので、コンピューターゲームではない。よく「ボードゲーム」とされるのですが、いわゆるボードゲームとも違う。


愛好者からは、テーブルトーク、と呼ばれています。

テーブルの周辺に集まって、お話をするゲーム。



お話をすることの何がゲームなのか、知らない人には理解されにくいのだけど、ちゃんとルールがあり、ゲームとして成立しています。


まず、遊ぶ人は、プレイヤーとマスターに分かれます。

マスターは一人で、それ以外がプレイヤー。プレイヤーが2~4人くらいいると楽しいです。


マスターは、プレイヤーに状況を説明します。

「シナリオ」として販売されているものもあるけど、基本的にはマスターが自由にお話を考えていい。



 薄暗い森を進んでいくと、そこに一軒の小屋がたっていた。

 小屋の隣に炭焼き釜があり、その前には薪が散らかっている。

 小屋にはかぎが掛かっており、人のいる気配がない。


さて、こんな状況が説明されて、プレイヤーは自分がどのように行動するかをマスターに伝えることになります。


窯を調べてみてもかまいませんし、小屋のカギを開けられないか試すこともできます。

小屋の主が帰ってこないか、夕暮れまで待ってみてもよいでしょう。


いずれにしても、マスターはプレイヤーの選択の結果を伝えます。

ただお話を読んでいるのではなく、プレイヤーは自由な行動をとれますし、マスターもそれに対応して、臨機応変に受け答えます。


おそらく、マスターは大きな話の流れを準備しているでしょうが、細かな部分は決めていません。

その場のアドリブで決まっていきます。それがゆえに、どんな突拍子もない行動に対しても対応できるのです。




でも、これだけだと想像でお話を作って「ごっこ遊び」しているだけで、ゲームではありません。


プレイヤーは自由に行動できる、と書きましたが、実際には制約が付きます。

その制約は、役を演じること。あらかじめ、プレイヤーは、その世界の中でどのような人物を演じるのかを詳細に決めてあり、その人物ならそこで何を行うか…という観点で動かなくてはなりません。


人物の「詳細」は、すべて点数化されています。筋力の強さ、頭の良さ、すばしこさ、器用さ、魅力、運の良さ…などなど。

頭が悪い人物を演じるのであれば、プレイヤー本人が罠に気づいたとしても、あえて気づかずに罠にかかる、というような行動も必要です。


「役を演じる」という、プレイヤーとマスターとの間の了解により、マスターはあらかじめ「あの人物ならここでこういう行動をとるだろう」と予測してシナリオを準備することができます。

全員の協調作業によって、マスターが用意したお話を楽しむ、というのがテーブルトークの一番重要な点です。


「役」は英語で「ROLE」(ロール)、役を演じるは「ROLE PLAYING」(ロール・プレイング)。

それを目的としたゲームなので、ロール・プレイング・ゲームなのです。




ところで、行動をする際に、役を演じる以外の制約がまだあります。


先の状況説明で、プレイヤーの一人が「カギを開けてみる」と宣言したとします。

じゃぁ、開いたかどうかを、その人の器用さで確かめてみましょう。


先に「器用さ」などが数値化されている、と言いました。大きい数字ほど「器用」だということです。

プレイヤーがさいころを転がして、器用さの数字よりも小さければ、カギ開けに成功することにします。


器用な人物ほど、カギを開けやすいわけです。



でも、さいころで決まるなら、ダメもとで試してみても…


プレイヤーがそんな考えを持っていたら、マスターは失敗した際に「不器用にカギをいじったから、カギが壊れて絶対に開かなくなってしまった」など、制裁措置を返すことだってできます。


不慣れなプレイヤーは「役を演じる」ことの意味が分からないかもしれません。

しかし、上手なマスターが、このような形で適切にプレイヤーに「余計なことはしないほうが良い」ことを教えていけば、そのプレイヤーも本来の楽しみ方をできるようになります。




これが、テーブルトークの楽しみ方。

はっきり言って、マスターの技量がゲームの面白さを大きく左右します。


僕は高校生の頃に友達と遊んでいて、マスターは最初は持ち回りでやっていたのだけど、僕は良いマスターではなかった(笑)

とても上手にシナリオを作り、マスターをやる奴がいたので、最終的にはそいつがマスターをやる、という形に落ち着きました。



非常に細かなルールがあるのだけど、それらはマスターだけが知っていれば、とりあえず大丈夫。

マスターはこの世界の「神」なので、あえてルールを逸脱することだってかまいません。


大切なのは、みんなでお話を楽しむこと。ただの「ごっこ遊び」に終わらせないために、そのほかのルールがあるのです。




話をデイブ・アーンソンに戻しましょう。


D&Dよりも前、1960年代には、ウォーシミュレーションと呼ばれるゲームが流行していました。

六角形のマス目に地形を設定して、そのマス目の上を駒を動かして戦うゲーム。


誤解を恐れずに言えば、将棋を複雑にして、できるだけ現実に近づけたものです。

ここでも、戦闘の際にはさいころを転がして勝敗を決定したりします。


同じころ、ファンタジー小説の「指輪物語」も流行しています。(シリーズの発刊は1941~1950年代半ば)

イギリスの作家トールキンによる作品で、ヨーロッパ各地に残る伝承などをまとめ、体系化し、あいまいな部分を規定し、架空の国の物語として、空想的でありながらリアルにまとめ上げたお話です。


たとえば、「オーク」といえば、恐ろしい小鬼、という程度の伝承しかありませんでした。

指輪物語の中では豚の顔をしていて背の高さは人間と同じくらい、軍隊を組織して戦うが、知能はそれほど高くない…というように、細かな設定がなされています。



この細かな設定は、ゲームの格好のネタでした。

アーンソンの友人、ゲイリー・ガイギャックスは、ファンタジー世界で、大軍勢を率いて戦うウォーシミュレーション、というゲームを試作します。


しかし、アーンソンはウォーシミュレーションに問題を感じ…つまりは、飽き始めていました。

両軍を動かし、そこかしこで起こる小さな戦闘をひとつづつサイコロを振って処理し、特殊状況でのルールを間違いなく適用し…

ウォーシミュレーションは、1回遊ぶのに2~3日かかるような場合も多く、気軽に遊べるものではありませんでした。


アーンソンは、大軍勢を動かすのではなく、プレイヤー1人が、ゲーム内の1人の人物のみを受け持つ、というゲームを提案し、ガイギャックスとともにルールセットを作り上げます。


2つの軍が戦うと、不公平がないように厳密にルールを適用しないといけません。

でも、プレイヤーはみな仲間で、共同で危機を乗り越えるような形式であれば…



当初は「戦闘」のみを楽しむ形だったルールが、お話の中で戦闘がおこる形に代わって行き、やがてはお話が重要となっていきます。


こうして出来上がったのが、D&Dでした。


D&Dは、特殊なさいころを多数使います。4面、6面、8面、10面、12面、20面のサイコロが必要。

ルールブックと、これらのサイコロ、キャラクターの詳細数値などを記入する紙、マスターの手元(シナリオが置いてあるでしょう)を隠すためのついたて…など、いくつかのアイテムが箱に入れられていました。


はっきり言えば、さいころもキャラクターシートもついたても、そこら辺のもので何とかなる。

ルールブックは必要だけど、大体覚えてしまえば何とかなる。


D&Dって、買わないでも遊べたわけです。でも、買うとかなり高かった。当時1万円近かったのではなかったっけ。


それほど売れるわけではないので、扱っているおもちゃ屋さんまで、電車に乗っていったりしました。


#僕は買わなかったけど、友人が買うのにつきあった


基本セットを購入しても、シナリオを作る、というのは能力が必要で、誰もができるわけではありません。

これらは、別売りの追加セットとして発売されています。


マスターの能力が面白さを大きく左右するゲームですが、初心者マスターでも最初は市販のシナリオを使いながら学べるのです。

これがまた、高いんだけどね。



#今では、D&Dも一部が無料配布されています

 プレイヤー向けの簡易ルールブックとか、試しに遊んでみたい人向けの初心者向けルールとかだけど。




D&Dの大ヒットで、類似ゲームもたくさん出ました。


高校時代には、T&Tもよく使いました。トンネルズ・アンド・トロールズ。


D&Dが「竜と地下迷宮」なら、こちらは「鬼と坑道」ですね。


先に書いた通り、D&Dは高かった。

でも、T&Tは、普通の本屋で流通できる「ルールブック」一冊あれば始められます。


あとは、普通の6面さいころがいくつかと、キャラクターの数値を記入するメモ用紙があればいい。


MSX の HALNOTE でキャラクターシート作って、感熱プリンタで印刷して、コンビニでコピーして使ってましたけどね。




僕は「混沌の渦」のルールブックもってます。これもRPG。

T&Tと同じように、書籍扱いで売ってたので安かった。


内容はかなり変わっていて、16世紀イギリスが舞台です。

いちおう「剣と魔法の世界」でもあるのだけど、16世紀イギリスなので、魔法を使っているのがばれると魔女狩りにあったりする。


だから、派手な魔法は使えない。

盗賊がカギを開けるときに成功確率を上げる、とか、戦士の次の一太刀で相手に致命傷を負わせる、とか、確率操作が中心になる。


ダメージシステムも変わっていて、かすり傷がたくさんでも、深い傷が一つでも、同じように「痛い」のだけど、治りが違う。

翌日になるとかすり傷は全部治ってるけど、深い傷は正しく手当てしていないと悪化する。


職業も派手な「剣士」とかは少なめで、肉屋とか薬草師とか、そういうのが多い。

というのも、16世紀イギリスでは自由に旅をすることが禁じられていたから。


職人や商人は、必要性があるから旅が許可されていて、シナリオの都合上そういう職業の人々が中心になる。

ルールブックには、16世紀の知識による(現代的には間違っている)薬草の一覧などが載っていて面白い。


ファンタジーだから何でもあり、というのではなくて、すごく泥臭く、16世紀の人々の暮らしを追体験する感じ。

友達の間でこのルールでプレイしてみたら、不評でした。

想像の世界の中くらい好き勝手したいのに、させてもらえないんだよね。


でも、個人的には好き。




RPG幻想辞典には、巻末付録で簡単なRPGのルールがついていました。


この本は、ヨーロッパの神話、アーサー王伝説、指輪物語など、RPGのネタにされることが多いお話や、RPGに登場することの多いモンスター、武器、道具、魔法などを説明したもの。


特にテーブルトークでマスターをやる人には「必携」だった本ですが、単にファンタジーの解説本としても秀逸。

そして、ファンタジーから興味をもって、テーブルトークを遊んでみたくなったら、簡単なルールもついている、というよくできた構成。


他にも、こうした本はあったと思いますし、雑誌などでもオリジナルのルールを掲載することはありました。




D&Dを遊んだ様子を掲載する…という手法で書かれた小説(?)「ロードス島戦記」では、雑誌掲載時はD&Dを使用していたのですが、単行本発行時に、D&Dのルールをそのまま利用する許可が得られませんでした。


#詳細は知らないけど、ルールを知ることができる「書籍」を発売してしまうのは、D&Dの基本セットと競合するためかな?


そこで、「ロードス島RPG」という、オリジナルのルールが作られます。

単行本は、このルールに従って書き直したものになっています。


#ロードス島は、「誌上リプレイ」から始まって、小説、アニメなど、多角展開した。

 これも、最初に掲載された「D&Dのリプレイ」がよくできていたためだが、書き換えに伴って少し変わった部分などもあり、最初のものは当時の雑誌でしか読むことはできない。



後に、同じ作者による別のルール「ソードワールドRPG」と統合したそうです。


#統合前に、ソードワールドでは何度か遊んだ覚えがある。



…などなど。ほかにももっとたくさんあると思います。




混沌の渦のルールはそのままに、時代設定だけを「日本の江戸時代」に移した、時代劇の渦、なんて言うのもあった。


#混沌の渦を持っていることを前提に、違いだけを記す形で雑誌掲載された。

 僕は雑誌は持ってないので、詳細知りません。




さて、D&Dを元に、コンピューターで遊べるようにしたのが Wizardry


サイコロ転がしたり、計算したり…という面倒な部分をコンピューターがやってくれるので、ある意味テーブルトークより遊びやすくなった。


ただ、人間がマスターをやるような、柔軟な対応は無理。

迷宮を探索し、敵と戦闘する緊張感を中心としたゲームになりました。


戦闘は、本当に緊張するものです。ランダム性が高すぎるから。

たとえば、6面さいころ2個のダメージ…となっていたら、2~12と、最大値と最小値で6倍も差があります。

予測不能な部分があって、弱い敵との戦闘でも、必ず勝てるとは言い難い。


コンピューターRPGでは、「役割を演じる」という意味合いは薄れて、ゲーム中に主人公たちが成長するゲーム、という意味合いに変わったように思います。



ファミコンのドラゴンクエストでは、全然違う方法で戦闘などを計算していました。

詳細な方法は知らないけど、ランダムの影響が少なくなっていたので、戦闘で勝てる敵かどうかを判断しやすい。


そして、Wizardry ではカットされた「シナリオ」を、選択肢が非常に少ないものではありながら、実現しました。

(ドラクエが、ではなく、ウルティマがすでにやっていたのだけど、もっと上手にやった。)


日本では、RPGは「シナリオを楽しませる」ものに変化して、戦闘の緊張感などはどんどん無くす方向になったのですね。

戦闘で勝てなくても、同じところで粘っていればいつか主人公が強くなるので、時間さえあればだれでも先に進める。


これが、アクションゲームなどが苦手でもゲームは遊びたい層に訴求し、一時期は家庭用に発売されるゲームがRPGだらけになりました。


最近はこうしたRPGの「シナリオ」が大きくなりすぎて、遊ばないといけない時間が長くなりすぎたためにファンが減る傾向にあるようですが…



今でも、RPGはゲームの主要ジャンルの一つです。



#翌日追記

翌日はWizardryの話書きました。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

今日は何の日

関連ページ

アンドリュー・グリーンバーグの誕生日(1957)【日記 15/10/02】

別年同日の日記

04年 挨拶

09年 爪

13年 KDDI発足日(2000)

18年 台風24号


申し訳ありませんが、現在意見投稿をできない状態にしています

あきよし】 リプレイに関しては、すぐ後に「リプレイ」って言葉を出してしまっていますが、一般的ではない言葉なので「小説(?)」と表記しました。誤解を招きやすいかもしれないけど、リプレイの説明から入ると話の腰を折ってしまうので… (2015-10-02 17:28:25)

あきよし】 ROLE の綴り間違い、指摘ありがとうございます。修正しました。ROLLはさいころを振るほうですね。 (2015-10-02 17:27:27)

【m.ukai】 「ロードス島戦記」連載されていたのは「リプレイ」ですね。小説はリプレイとは別に(リプレイを下敷きにして)あります。 (2015-10-02 11:50:23)

【m.ukai】 ×roll ○role。 (2015-10-02 11:39:15)

アンドリュー・グリーンバーグの誕生日(1957)  2015-10-02 17:21:18  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はアンドリュー・グリーンバーグの誕生日(1957)。

Wizardry の作者の一人です。


昨日、RPGの発明者、デイブ・アーンソンの話を書きました。

彼の考えたD&Dは大ヒットし、多くの人が遊びました。




コンピューターの昔話から始めます。

まだ、パソコンが生み出されるずっと前の 1952年、アメリカのイリノイ大学で、ILLIAC I というコンピューターが作り出されました。


コンピューターの研究目的で作り出されたもので、高性能化の工夫が多数入っていました。

当時としては、非常に高性能のマシンです。



1960年、イリノイ大学は ILLIAC I を使い、大学内の教育用コンピューターシステム、PLATO を作り上げます。

当時のコンピューターは、パンチカードなどで入力を行い、タイプライタで結果出力するのが普通でした。


しかし、PLATO では学生が親しみやすいように、ブラウン管に文字を表示し、キーボードから操作することが可能です。



PLATO は段階的にバージョンアップされ、1972年には PLATO IV が作られます。


#IV はローマ数字の「4」。4番目のバージョンです。


これまでの機能アップで、文字だけでなく簡単な画像も表示できるようになり、複数人数が同時に使えるようになっています。

そして、簡易言語によってプログラムをすることが可能でした。


さらに、1970年代半ばには端末側がバージョンアップされ、Intel 8080 が搭載されます。

これにより、中央のコンピューターを使わず、端末だけでも簡単なプログラムが実行可能になります。



#PLATO もいつかちゃんと調べたいマシンの一つ。

 今のところ、通り一遍の知識しかないので、あまり偉そうに語れません。間違えてたらゴメン。




PLATO でプログラムを組める理由は、「教育ソフトを製作するため」です。

しかし、学生たちは競ってゲームを作り、楽しみました。


大学側はこうしたゲームを見つけると削除していたのですが、学生達はすぐにゲームを復活させてしまいます。



本当に数多くのゲームがあったようなのですが、「地下牢」(Oubliette)はアンドリューのお気に入りでした。

D&Dのルールを使ったコンピューターゲームで、3Dで描かれる迷宮をさまよい、モンスターと戦います。


ただ、「地下牢」では、探検する主人公は1人だけでした。

「役を演じる」ゲームであるRPGでは、一長一短ある仲間たちが、助け合う形で冒険するのも楽しみの一つです。


また、「地下牢」は大学でしか遊べませんでしたし、先に書いたように、時々大学側に消されてしまいました。

すぐに復活するとは言っても、復活したファイルを探し出すまでは遊べなくなります。


アンドリューは、「地下牢」を参考にしながら、もっと本物のD&Dに近い、奥深いゲームを、家でも遊べるように作ろうと考えます。



1980年、アンドリューがシステムを考え、友人であるロバート・ウッドヘッドが Apple II にプログラムをする形で、Wizardry が作られます。

大学の友人にも遊んでもらい、意見を反映し、速度を上げるために別の言語で書き直し…


1981年9月、完成度を高めたものが発売されると、このゲームは伝説級の大ヒットを記録しました。




D&Dは、主人公たちの視点…3Dで迷宮の中をさまよい、目的を達成するゲームです。

戦士、魔術師、僧侶、盗賊などでグループを作り、それぞれの能力を活かして助け合わなくてはなりません。


Wizardry は、常に「死」の恐怖と戦い続けるゲームです。

死んでしまうと、それまで育て上げたキャラクターは、無情にも消え去ってしまいます。


リセットすればやり直せる、というような甘さはありません。


道に迷うことも死につながるため、歩くだけでも気を抜けません。

戦闘でも、たとえ弱い相手でも、いい加減な戦い方はできません。



おそらく、このゲームが今発売されたら「クソゲー」と片付けられるでしょう。

遊ぶ人に対して、とことん不親切です。しかし、不親切だからこそ、世界を探検し、乗り越える楽しみがありました。

ゲームといっても、気軽に遊ぶゲームではなく、真剣勝負としてのゲームなのです。



後にシリーズ化されましたが、最初の Wizardry には「狂王の試練場」というサブタイトルがつけられています。


君主トレボーは、その圧倒的な強さから「狂王」と呼ばれ周辺各国から恐れられていた。

ところが、ある日トレボーの力の秘密であった、「アミュレット」(お守り)が盗まれてしまう。


盗んだのは、魔術師ワードナ。

ワードナは地下迷宮を作り上げ、その一番深い階層に姿を隠し、地下迷宮に魔物を解き放して守りを固めます。


トレボーは、アミュレットを取り戻したものに莫大な褒美を約束した。

この褒美を目当てに、各国から腕に自信のあるものが集まってくる。


プレイヤーもその一人として冒険を行う。


…主人公、金目当てに集まった冒険者で、伝説の勇者とかじゃない。

冒険者がたくさんいるから、そういう人を相手にする商売人も多い。非常にリアリティのある設定です。




ところで、トレボー(Trebor)は、プログラマのロバート(Robert)を逆に書いたものです。

そして、ワードナ(Werdna)も、システムを考えたアンドリュー(Andrew)を逆に書いたもの。


今では、ワードナって「大魔術師の名前」として時折使われます。

Wizardry がそれだけ影響力の大きなゲームだった、ということ。



その Wizardry 自体、冗談がたくさん入れられているゲームですけどね。

上に書いた名前もその一つだけど。


中世の世界観なのに、「サムライ」とか「ニンジャ」とか出てくる。

サムライが強くなると、「ミフネ」になる。(アンドリューは日本映画が好きで、三船敏郎のファンだった)


カシナートの剣(なんでもよく切れる、という宣伝のミキサーの名前から)とか、ボーパルバニー(殺人ウサギ。モンティパイソンのコメディから)とか、最初のシナリオでは出てこないけど、「聖なる手投弾」なんてのもある(これも、モンティパイソンネタ)。


状態異常や、死んだ時に最後の望みで復活を試みられる寺院の名前、「カント寺院」というのだけど、これだって冗談。

cant って、「偽善」の意味ね。人の弱みに付け込んで、高額を要求する寺院。



日本では、英語の冗談は理解されずに、そのまま訳されました。

冗談がわからないから、すぐ死んでしまう難しいゲームだということも相まって、すべてがシリアスな設定だと捉えられた。




Wizardry の一番の楽しみは…

というか、人それぞれに違う楽しみ方ができるゲームなのだけど、「アイテム探し」をした人も多いでしょう。


基本アイテムだけでも数多いのだけど、時々ランダムに「魔法がかかっている」ものが落ちるのね。

この魔法は、ランダムに +1 とか +2 とか、数字がつく。


D&Dと同じように、Wizardry では内部でさいころを振っています。

敵に与えるダメージも、6面さいころ2個、とかの数字。


するとどうなるか。6面2個なら、期待値は 7 です。これが +2 になっただけで、期待値が 9 になってしまう。3割近い性能アップです。


アイテムには出現確率があって、ただでさえ手に入りにくいものもある。

そこに持ってきて、魔法がかかっているというのはとんでもないお宝なのです。


ランダムだからこそ、終わりがなくていつまでも探し求めてしまう。

もう、余裕でワードナを倒せるようになっても、いつまでも遊び続けられるのです。



今でもこういうゲームありますけどね。

というか、Wizardry よりも昔からありますけど、すごく上手にゲームに組み込んでいた。




今でも、いろいろなところで Wizardry の影響を見ることができるように思います。


でも、初期のシリーズは権利が不明確で、再販とかリメイクとかできないらしいのね…



シナリオを作ったアンドリューは、その後弁護士になり、知的所有権が専門だそうです。

(IEEE知的所有権委員会の元会長でもあります)


その専門知識で、権利関係をなんとか解決してもらいたいものです。


#そんなに簡単にいかないから、今でも不明確なままなのだろうけど (^^;


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

デイブ・アーンソン 誕生日(1947)【日記 15/10/01】

別年同日の日記

02年 サーバー不調

02年 Write Once ...?

13年 ENIACの運用が終了した日(1955)

14年 レイ・トムリンソンの誕生日(1941)

17年 中二病


申し訳ありませんが、現在意見投稿をできない状態にしています

ヘイリー兄弟の誕生日(1949)  2015-10-08 13:21:01  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、ショーン・ヘイリー、キム・ヘイリーの誕生日(1949)

双子で、HSPICE の開発者。…という説明で、わかる人はわかってくれるはず。


でも、多くの人はわからない。僕もわかってない(笑)

ちなみに、AMDで世界初の、セカンドソースではない「互換マイクロプロセッサ」を設計した人達でもあります。


とはいえ、あまりなじみのない人です。僕も今調べていて、すごい人だと知りました。




シノプシス、という会社があります。


僕はプログラマーなので、回路設計にはあまり詳しくないのですが、半導体の設計などの支援ツールを製作・販売している会社です。

半導体の設計支援ツールは、大手3社の寡占状態にある業界で、その最大手。


HSPICE はその会社が扱う製品の一つ。

半導体回路の構造を特別なプログラムの形で入力すると、回路のアナログ動作をシミュレーションできます。


…これ、すごいことですよ。

デジタル回路って、クロックに合わせて状態が変わっていくから、全体としてシミュレーションすることもそれほど難しくない。

でも、アナログだと、各所の電圧が複雑に絡み合いながら変化していきます。


時間に従って電圧などが刻々と変化するというのは、数学的に見れば微分・積分です。

でも、コンピューターはこれを「微小時間に区切って」扱うことしかできない。微分積分ではなく、差分・積算しかできないのです。


#連続・非連続か、の違いです。このわずかな違いが、大きな計算誤差を生む。


…昔、回路設計できる人に聞いたら、こういうプログラムはやっぱ完全なシミュレーションは無理なのだそうです。

でも、実際の回路を作る前にある程度シミュレーションできる、というだけでも設計効率が非常によくなる。



HSPICEでは、様々なテクニックで、実際の回路とのずれがあまりないように、シミュレーションする。

それも、正確性を求めすぎて遅くては使い物にならない。速度と精度の両立を行っています。


このため、回路シミュレーションの定番ソフトとなっているようです。




HSPICE は、 SPICE の実装の一つです。

先に書いた通り、特別なプログラムの形で回路図を記述し、動作をシミュレーションできます。


SPICE はカリフォルニア大学バークレイ校 …BSD UNIX が作られた大学… で1973年に開発されたもので、フリーウェアとして公開されました。


当初は FORTRAN で書かれていましたがバージョンアップの過程でC言語に書き直され、様々な派生バージョンを生み出します。

今でもオープンソースで無料で入手可能なものもあります。


HSPICE は、その中の一つ。

無料で使えるオープンソース版もあるのに、なぜわざわざ商用の高価なものを使うのかといえば、やっぱりシミュレーションの出来が良いから。




ショーンとキムは、テキサス州で双子として生まれました。

仲が良く、一緒にボーイスカウト活動を楽しみ、一緒にテキサス工科大学に入学しています。


卒業後はこれも二人そろって軍需企業であるマーチン・マリエッタに入社し、弾道弾迎撃ミサイル(スプリント 1972年完成)の発射システムを設計しています。


スプリントは、飛んでくるミサイルを狙って撃ち落とす、というとんでもないミサイル。

湾岸戦争で「パトリオット」が使われて有名になりましたが、最初に迎撃ミサイルを完成させたものです。


迎撃ミサイルにヒントを得た、「ミサイルコマンド」というゲームもありました。

また、「迎撃」が成功したことで、後にSDI構想が持ち上がります。(こちらもゲームになった




話を二人に戻しましょう。


マーチン・マリエッタでは、ミサイルに搭載するために 16bit CPU を開発していました。

…詳細はわかりませんが、いわゆる「マイクロプロセッサ」ではなく、4bit 演算の LSI を複数組み合わせ、16bit 演算できるようにしたものだったようです。


軍事用なので、非常に広い温度範囲で動くように工夫していましたし、信頼性を上げるために欠陥の少ない回路製造技術も開発していました。

しかし、マーチン・マリエッタでは、スプリントの開発が終わった後に、これらの技術を「転用」して何かを作ろうとはしませんでした。

それどころか「知的所有権」の主張さえしなかったのです。



1972年、インテルが 8008 を発売します。

マーチンマリエッタが作っていた 16bit CPU と比べて、わずか4分の1の速度しかでません。


2人は、これを好機だと捉えました。

8008 互換でもっと速度の速い CPU を作らないか、とゼロックスに持ち込みます。


…しかし、ゼロックスは興味を示しませんでした。

その後、いくつかの会社を周り、最終的にAMDが興味を持ちます。



そこで、彼はAMDに入社し、1973年には同社の最初の CPU を開発しています。

すでに 8080 が発売されていました。AMD が発売したのは、その互換品 Am9080 。


さらに、AMDで最初の「不揮発性メモリ」である Am2072 も設計しています。2048bit の EPROM でした。



#AMDの互換品に対し、インテルはこの後訴訟を起こしています。

 しかし、ヘイリー兄弟はインテルの回路は全く参考にしておらず、「動作」だけを解析し、同じ動作になるように作っていました。

 その後も、AMDはインテル互換 CPU を作り続け、現在はAMDが作った AMD64 の「互換品」をインテルが作る状況になっています。




1976年ごろ、電子回路の業界はどんどん発展していきました。

回路規模は大きくなり、試行錯誤で作る従来のやり方では、とても間に合わなくなっていきます。


彼らは、バークレイ校で作られた「SPICE」を見つけ出し、使用してみます。

…しかし、精度も悪く、速度も遅く、バグも多く、実際の開発に使うにはいろいろと問題がありました。


ちょうどそのころ、コンピューターの時間貸し会社がCRAY-1(1976)を導入したことを知ります。

しかし、まだ CRAY-1 用のプログラムは少なく、誰も使っていませんでした。


2人は、これを好機だと捉えました。

SPICE のソースコードを元に、CRAY-1 の「ベクター演算」機能を使って高速化します。

バグも取り、シミュレーション結果の精度を上げました。


こうして作られた HSPICE は、従来のものより6~10倍も高速でした。

そのうえ、バグも無くなっており、「使い物になる」ツールとなっていたのです!



1978年、二人で新たな会社「メタソフトウェア」を興します。

(当初は「ヘイリーカンパニー」という名前だったそうですが)


HSPICE を販売する会社でした。

といっても、当時はコンピューターの時間貸しが普通なので、CRAY-1 上で HSPICE を使う時間を売る、ということですが、


その後、18年間毎年 25~30% の成長率で会社が大きくなったそうです。

こんな高成長を、それほど長い期間続けられるのは、すごいこと。


1995年、メタソフトウェアは、十分な「成功企業」でした。

2人は、3つの銀行に、会社の評定額を出してほしいと依頼します。


その額は…二人が「衝撃的だった」という高価なものでした。

これで、二人は会社の売却を考え始めます。


売却先は、同業ライバル社のアバンティ。

アバンティは、さらに後にシノプシスに合併します。


そんなわけで、現在 HSPICE はシノプシスの製品になっています。


そして、彼らは莫大な資産を入手しました!




ショーン(Shawn)は、その後性転換手術を受け、女性になっています。

女性としての名前は、アショーナ (Ashawna)。


性転換、というのは微妙な話題なようで、いつ手術を受けたのか、調べてもよくわかりません。

彼らが会社売却直後の1997年末にインタビューを受けた際にはまだ男性で、二人とも結婚して配偶者もいます。



アショーナは、資産を元に、政治活動を開始します。


麻薬問題、食糧問題、女性の地位向上、人種問題、熱帯雨林の保護…

彼女が資金援助した団体を見たところだと、ここら辺の問題に興味があったようです。


彼女は、2011年 10月 14日に亡くなっています。

その後、遺言に従い、1千万ドル…日本円にして10億円を超える遺産が、これらの問題を扱う諸団体に寄付されています。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

アショーナ・ヘイリーの命日(2011)【日記 15/10/14】

別年同日の日記

06年 お月様

13年 デジタルミレニアム著作権法成立の日

14年 鎌倉オクトーバーフェスト 2014


申し訳ありませんが、現在意見投稿をできない状態にしています

アショーナ・ヘイリーの命日(2011)  2015-10-14 21:24:12  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日はアショーナ・ヘイリーの命日(2011)。


誕生日は1949年の 10月 8日。

先日誕生日記事を書いたばかりなので、詳細はそちらを読んでください。



彼は、男として生まれ、ミサイル開発・CPU 開発・半導体開発支援ソフトの作成など、非常に男らしい仕事をしました。


その後、性転換手術を受けた彼女は、女性の地位向上、人種差別撤廃、熱帯雨林保護など、愛にあふれた女性らしい仕事をしました。



すごい人生だと思います。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

02年 ねずみあんか

13年 ブノワ・マンデルブロの命日(2010)

14年 google DNS


申し訳ありませんが、現在意見投稿をできない状態にしています

プレイステーションを生み出した新聞記事  2015-10-15 17:42:26  コンピュータ

▲目次へ ⇒この記事のURL

プレイステーションを生み出した新聞記事

もう1年も前に、セガサターン関連の記事として、ライバルでもあるプレステとの「次世代ゲーム機戦争」の話を書きました。


これ書いたときに、すごく強い疑問が残ったのね。

プレステは、任天堂の裏切りによって誕生した、というのは有名な話。


でも、史実を確認すると、実際には任天堂は裏切ってなんかいない。

ソニーが一方的に「任天堂が裏切った」と言っているだけ。


一体、真実はどこにあるのか。


ありがたいことに、この記事を書いてから反響があり、関連情報が寄せられています。

どうも、日経新聞の記事が「誤報」というのは違うようで、これはこれで正しかった。


裏にいろいろ複雑な事情が見えてきた感じですが、まとめるのに少し時間がかかりそうです。

まとまり次第、この記事からリンクいたします。




簡単に状況を説明しましょう。


ソニーとフィリップスは、一緒にCDの規格を制定した仲間であり、その「次の規格」を争うライバルです。


フィリップスはCDを応用してゲーム機を作るという。

でも、当時のゲーム界の覇者は任天堂。


ソニーはスーファミ用の音源チップなどを任天堂に提供していて、当時任天堂と仲が良かった。

じゃぁ、フィリップスに対抗して、任天堂と一緒にCDをゲームに応用しようとします。


細かなことが決まり、1991年に、やっとアメリカで行われる家電品のショーで発表にこぎつけました。

ところが、翌日の新聞では、「任天堂がフィリップスと提携し、CDゲームを開発する」と書かれているのです。



これが、ソニーの言う「裏切り」です。

確かに、任天堂はこのショーの時に、フィリップスと提携を発表しています。


その提携内容は、フィリップスとゲームソフトを共同開発するよ、というもの。

ソフトです。ソニーと提携しているような、ハードではありません。

だから、裏切りというほどではない。



ここに疑問がありました。




1年前に調査していた時、思ったのは、ソニーが早合点しただけじゃないのかな、ということ。

フィリップスとゲーム「ソフト」を開発するのは事実だし、ソニーとゲーム「ハード」を開発するのも事実。


でも、フィリップスはソニーのライバルだから、頭に血が上って細かな部分を読み落としたんじゃないかということ。



もう一つの可能性として、この新聞って、日経じゃないのかということ。

「ただし、ソースは日経」という言葉がよく使われるのですが、日経は誤報が多いです。


せめて日経の記事かどうかくらいは確かめたい、と思いつつ、確認できないまま記事を公開しました。

家の近所には、日経の縮刷版を置いてある図書館がなかったから。




今日、急に時間が空いたので、思い立って少し離れた図書館まで行ってきました。

そこなら日経の縮刷版があるとわかっていた。



そして調べると…該当記事を見つけました。

詳細は次世代ゲーム機戦争の記事を更新して、そちらに記しています。



まぁ、日経の大誤報でした。

ソニーが「スーファミ用のCDドライブ作るよ」って発表したのと、フィリップスが「任天堂と一緒にゲーム作るよ」と発表したのを、混ぜて1つの記事にしちゃった。


フィリップスと一緒にCDドライブ作る、となってます。

これは、ソニーの人は裏切りだと怒るわけだ。



というわけで、プレステは日経の誤報によって生み出された、ということが確認できました。




1991年5月・6月の新聞を調べていたのだけど、ほかにいろいろと面白かったことを書いときます。


まず、同じショーで、NECは PC-Engine duo を発表しているのね。

「CD-ROM ドライブ一体型の初めてのゲーム機」とされている。


確かにそうだね。周辺機器だったのをくっつけただけで、やっぱり扱いとしては周辺機器なのだけど。


同じく、セガは MEGA-CD を発表しています。


NECとセガの記事は、詳細に書かれていて何もおかしくないのね。

なぜ任天堂だけ大誤報になったのか。日経だから、としか言いようがないけど。




当時、雲仙普賢岳の噴火が連日新聞に載っていました。

5月には「危険なので避難」なのだけど、いったん活動が収まったとして6月頭に避難命令が解除され、そのとたんに火砕流が起きて死者が出ている。


痛ましい事故でした。世界的な火山学者が、研究のためにかなり近くまで寄っていて、「学者が近づくのだから安全なのだろう」と報道陣も近寄っていたところに火砕流が流れたんだよね。


学者だって万能じゃない。わからないことはある。

このとき多くの人がそういっていたわけですが、その後も自然災害のたびに「学者は何やってんだ」と叩く人たちがいます。


こんな事件があったころに、ソニーがプレステ作り始めていたのだな。

後から新聞読むと、全然別のラインとして記憶していた歴史がつながり始めて面白い。



東アジア経済圏構想、という記事もありました。

このころ、バブル経済もあって日本を中心とした東アジアがかなり力を持ち始めていた。


でも、個々の国ではアメリカにかなわない。

そこで、東アジアの国が、日本を中心に束になってアメリカと肩を並べよう、という構想が出始めた。


…日本、このころはまだずいぶんと信頼されてますな。

もちろん、この頃だって日本に侵略されたことのある国々は警戒心を解いてはいないのだけど、アメリカに勝てるなら協力しよう、という雰囲気になっていた。



でも、その後肝心の日本が急に力を失って、話がまとまらなくなった。

そのうえ、対抗しようとしていたアメリカが「そんな話があるなら混ぜろ」と割り込んできて、環太平洋戦略的経済連携協定…ここしばらく世間を騒がしている、TPPに発展したわけです。


もう四半世紀も前から準備始めてたのねー。



他にも、「イリジウム」携帯電話のための運用会社設立とか、新電々(この言葉も死語だな)各社の決算状況が記事になっていたり、今見ると懐かしい記事も多い。


時代が全然変わっちゃったね。




話を元に戻して。


本来、日経の記事を使用するには、厳密な規定があるようです。

たとえ個人ページでも、著作物なので使ってはダメ。


なので、いろいろ面白い記事もあったけど、無駄に掲示するのはやめておきます。


一方で、次世代ゲーム機戦争の話の中では、核心の記事のみ、画像として掲示させてもらいました。

日経新聞の著作物であることは理解しているので、引用元が日経であるとわかるようにしています。



日経にお金を払えば、日経のサーバー上に PDF で記事を用意してくれて、引用できるそうです。

これはお金を払って期間契約なので、期間が過ぎると消えます。


今回、ニュース配信したいわけではなく、歴史を残したいので、この契約だととても使えません。

日経としては「文章テキストとしての著作物性」を気にしているように見えるため、画像としての提示のみで、本文書きおこしなどはしません。



著作物には著作権の除外規定があり、その一つに「事実の報道」があります。

誰が見ても同じ事実であるならば、そこに著作物性はない、という考え方。

写真なども、「芸術性のある写真」か「事実を切り取っただけの写真」かで判断が分かれます。



画像としての提示は、「このような誤報があったという事実の報道」をしたい、というのが主眼であり、記事内容を配信したいわけではありません。



…と、言い訳したところで、本来グレーゾーンな行為です。

日経新聞から直接警告が来た際は、画像を消去するつもりでいます。


その場合も、縮刷版の何月何日の何面に載っている、という出典掲示によって、客観性は保てます。

ただ、記事内容を読みたい人が、いちいち大きな図書館に行かなくてはならなくなるため、利便性は損ないます。



▲目次へ ⇒この記事のURL

関連ページ

太陽暦採用記念日【日記 15/11/09】

別年同日の日記

04年 大きく育て

04年 最終確認

13年 富一成さんの誕生日(1960)

14年 「計算機言語」が生まれた日(1956)

14年 変数名の話

18年 UPS切り替え

18年 オーシャンハンター


申し訳ありませんが、現在意見投稿をできない状態にしています

【@azip77】 「久夛良木が面白かったからやってただけ」 プレイステーションの立役者に訊くその誕生秘話【丸山茂雄×川上量生】 http://news.denfaminicogamer.jp/interview/ps_history/2 (2017-01-28 11:05:25)

【@azip77】 参考まで、2件リンクを置いておきます。 http://anago.2ch.net/test/read.cgi/ghard/1361301546/19-23n (2017-01-28 11:04:24)

【@azip77】 朝からテレビを見てたんですが、任天堂の話とネット上のデマの話を追ってるうちに、なぜかこの日記のことを思い出しました;^^ ソニー側は信用できる立場の方の証言はいくつか見つかりますが、任天堂側、特に荒川氏への取材などが全くでてこないので、なんともまとめにくい感じですねえ。。 (2017-01-28 11:03:34)

古くて非力なマシンをLinuxBeanで再生してみた  2015-10-23 12:15:37  コンピュータ 家族

▲目次へ ⇒この記事のURL

古くて非力なマシンをLinuxBeanで再生してみた

長男がScratchを楽しむようになってきたので、パソコンを与えようと思った。


今は親のノートパソコンを使っている。

このノートはメインマシンではないので貸しても大丈夫な一方、子供が遊びたいときでも親が使っていたら使えない。


幸い、家には古いノートパソコンがいくつかある。非力だけど。WinXP だけど。

これを与えようかな、と思ったのだけど、サポート切れの WinXP を使わせるのも危険なので、何とかして再生したいと考えた。



古くて余っているマシンは、NEC のLavie。型番でいうと LJ700/EE


CPUがPentiumM で、1.2G 駆動。

メモリは 512M 。


購入時から性能低めだった。いわゆるネットブックだと思っていい。

でも、決して性能の悪い安物ではなく、「軽くて長時間使えるノートパソコン」を実現するためにわざと低い性能にしているのだ。


購入当時はまだ長男も生まれたばかり。妻が子供が寝たすきに、そばを離れないで少しパソコンできるように…

と、軽くて取り回しの良いマシンを買ったのだった。


でも、子供が寝たらメインマシン使ったほうが良かったし、子供が起きていたらパソコンなんてできない。

そんなわけで、あまり使わないままに古くなり、使われなくなった。




えーと、紆余曲折あるけど長いので詳しくは書かない。


上記マシンは、USB メモリでのブートができない。

USB CD / FD 起動は可能。でも、使おうとしたら我が家の USB DVD は調子が悪くなっており、使えなかった。


まず、Chromium OS を入れてみようとしたのだけど、PentiumM では動かなかった。

PAE 機能がないと動かない、らしい。


PentiumM には PAE が「ある」のだけど、CPU に機能を問い合わせた際に「ない」と答える。

i486SX みたいに、回路的には作りこまれているのだけど、販売戦略的にないことにして安くしたのだね。


オープンソースなので、PentiumM で動くように改造したバイナリを配布している人もいるが、子供に使わせるマシンにややこしいことはしない、という方針なのであきらめた。



Chromium OS を試しに動かしたり、インストールするには、USB メモリからの起動が必要だ。

USB メモリ起動できないマシンでは、Plop Boot Managerが役立つ。


FD から起動して、内臓 HDD の MBR に書き込んでしまえ。

次回起動で MBR から起動したソフトが、USB メモリからのブートに対応してくれる。




Chromium OS をあきらめ、軽量 Linux を使うことにした。

軽量 Linux は多いが、2つの方向性がある。


一つは、小さなメディアに入るように調整したもの。CD 1枚にすべての環境が入っていて、そのままブートして使えたりする。

興味があるけど普段使いのマシンの HDD にインストールするのは怖い、という人向け。


もう一つは、非力なマシンで動くように調整したもの。

小さなメモリ、遅い CPU で満足いく動作をするように調整してある。

古いマシンを捨てずに活用したい、という人向け。


今回求めているのは、後者だ。



いろいろ調べ、Linux Bean を使うことにした。


Ubuntu をベースにしている。日本人の作で、古いマシンにインストールして日本語で使うことを想定している。

主にクライアント用途として使うように考えられていて、サーバー類は基本的に入らない。

つまり、バックグラウンドで動くものが少なく、動作が軽い。



独自ディストリビューションではあるが、Ubuntu のパッケージインストーラがそのまま使える。

なので、「非力マシン向け」ではあるが、覚悟さえあれば非常に重いソフトでも入れることができる。


Linux Bean はさらに2種類(現状で)あり、Ubuntu の 12 ベースと 14 ベースになっている。


12 ベースは、Pentium 以前の古い CPU と、小さなメモリでも動く。真に非力マシン向け。


14 ベースは、PAE 必須。「なし」と答える PentiumM でも構わない。メモリも 12 より必要。

今後も 2019 年までサポートされる。(12 は 2017年まで)

4G より多いメモリを積んでいる機種では、こちらを使わないとメモリを全部使うことができない。



「古い機種」といっても様々だから、1G のメモリと、1.4GHz 程度の CPU があれば 14 ベースが良いのではないかと思う。


今回は、本当に非力なマシンなので、12 ベースのほうを選んだ。




LinuxBean は、インストール CD を焼いて、そこから起動して使い勝手を確認してから、使おうと思ったら内蔵 HDD にインストールする、という形になっている。


先に書いたが、家の USB DVD ドライブが壊れていたようだ。使えない。

そこで、UNetbootinを使った。CD イメージを USB メモリに入れて USB メモリブートすると、最初にブートしたソフトが CDドライブをエミュレートし、CD イメージから起動してくれる、というソフト。


先に書いたが、入れようとしているマシンは USB メモリブートができず、HDD の MBR に入れたソフトで USB メモリブートを実現している。

つまり、起動すると BIOS が HDD の MBR を読み込んでブートローダを起動するが、この際 MBR に仕込んだソフトが BIOS をエミュレートして USB メモリからのブートを行い、USB メモリに仕込んだ CD エミュレータが動き出し、CD エミュレータが CD イメージからのブートを行う…


という、奇怪至極な方法で起動した。



試しに使った LinuxBean は少し動作に疑問の残るものだったが、タッチパッドも動くしWiFiも接続できる。

調整はどうにかなるだろう、と考えて、HDD にインストール。


Windows を残したままインストールできる設定だったので、残しておいた。使うつもりはあまりないのだけど。




さて、HDD から起動できたら、ざっと設定する。

我が家の Lavie に特化した話を書いてもあまり役立たないだろうから、一般的な話から。


WiFi 接続は標準状態で可能になっている。というより、最初は何の設定もなくてネット接続できないはずだが、接続がないと「設定してくれ」と設定ツールが起動する仕組みになっている。


初心者でもわかりやすいだろう。



ネットに接続できたら、デスクトップに置いてある「LinuxBean 設定ウィザード」を起動するといい。

ここで、自分の欲しいソフトや環境をチェックしてから OK ボタンを押すと、環境を勝手に整えてくれる。



これが非常に便利。Linux の不便さ・不親切さをこれほど見事に解消しているのをはじめて見た。


Linux って、ソフトが非常に多いから、「やりたいこと」から「ソフト名」を自力で調べ、そのソフトのパッケージを探し出してインストール、というのが普通の流れなのだけど、初心者にはハードルが高すぎる。



設定ウィザードを使うと、やりたい事別に、必要なソフトを「セット」でまとめて入れてくれる。


ノートパソコンを使うなら、「モバイルセット」を入れたほうがいい。

それでないと、蓋を閉じたときにサスペンドをする、という一見当たり前のこともできない。


子供に使わせるのに Chrome が欲しいので、Google Chrome も入れる。

各パッケージには、参考としてシステムに対する負荷が書かれている。

Chrome は「強」だけど、使いたいので何を言われてもひるまずに入れる。



#標準では Opera が入っている。メモリはあまり食わないが、速度は遅いし今時主流ではないのでネットを見ていると不具合に遭遇することもしばしば。


Scratch は Flash で作られているので、Flash も必要だろう…と入れたら、Chrome が Flash を内蔵していた。

(Windows 版では内蔵しているのを知っていたが、わざわざ Flash があるのだから、Linux 版は違うのかと思った)


NAS とファイル共有したかったので、Windows ファイル共有のセットを入れた。

しかし、これは Samba サーバーだった。NAS にアクセスするだけなら標準環境でできたので不要。


こうした不要なものを入れてしまった場合は、再度設定ウィザードを起動して、チェックを外せばアンインストールされる。


これも簡単で便利。不要だったら消せる、というのは、気軽にいろいろ試してみる気になる。



設定ウィザードとは別に、Ubuntu としてのアップデートもできるようになっているので、アップデートしておいたほうが良いだろう。




さて、いいことづくめではない。

LinuxBean は、標準の Ubuntu の重い部分を取り去ったものだけど、その「重さ」には、ユーザーが便利に使えるように、という細やかな心配りも含まれている。


標準 Ubuntu では、タッチパッドの動作を細かくカスタマイズできる。

でも、LinuxBean では、カスタマイズのためのソフトがない。自分で設定ファイルを書かなくてはならない。


標準動作では、タッチパッドを「タップ」すると、クリックと同じ扱いになっていたのね。

これが誤認識してイライラさせる。この動作を失くしたい。


マウスやキーボードは X11 が扱っているので、その設定ファイルを直接書けばよい。

Ubuntu では、X11 の実装として Xorg86 を使っているのだけど、設定ファイルの位置は変えられている。


/usr/share/X11/xorg.conf.d/50-synaptics.conf


が、標準のドライバ用の設定ファイルだ。

(動作が納得いかないとしても、動作している場合ね。動作していないのなら、標準ドライバでは認識できない機種なのだろうから、このファイルに何を書こうとも動かない)


タップしてもクリック扱いにならないように、というのは、このファイルの中に


Option "TapButton1" "0"


と書けばいい。


現在の設定は


synclient -l


で見られるし、


synclient TapButton1=0


で、設定ファイルに書くのと同じ内容を設定できる。


ちなみに、設定の中には「2本指でタップした場合」なんてのもあるけど、そもそも2本指検知に対応していないといけない。

対応しているかどうかを調べるのは xinput というコマンドを使えばよい。



設定項目は非常に多くて深淵だし、設定ファイルの書式なども知らないといけないのだけど、全部説明すると長いので書かない。

キーワードは十分に示したので、知りたい人は自分で調べよう。




設定が納得いってきたので、子供用のアカウントを作る。

管理者権限のない、一般アカウントにしておく。


このアカウントで自動ログインするようにしておこう。


…とおもったら、自動ログインの設定はシステム全体に影響を及ぼすので、管理アカウントでないと設定できないようだ。


また設定ファイルを書き換えなくてはならない。



まずは、管理者アカウントで、左下のボタン(Windows XP での「スタート」に当たる)を押して、「設定」から「ログイン画面の設定」を選んでみよう。


これで、管理者アカウントでは自動ログインするようになる。


次に、以下のファイルを書き換える。


/etc/lxdm/default.conf


autologin 、というキーワードの入った行があるはずだ。後ろに、先ほど自動ログイン設定したアカウント名が入っている。

(コメント行にサンプル設定もあるので間違えないように)


そこのアカウント部分を書き換えてしまえば良い。

これで自動ログインが可能になる。




自動ログイン以前に、そもそも起動時に「どの設定で起動するか」を聞いてくる画面がある。

これも、子供に使わせるには間違いの元だから消してしまおう。


やはり「設定」の中に Grub Customizer がある。


「Boot Default entry after」で、起動画面の表示秒数を変えられる。

0 にしてしまえば、表示なしに起動する。




こんな感じで設定終了。


当たり前に「設定ファイルを書き換える」とか書いてある場所、管理者権限必要だからね。

どうやったら管理者権限使えるかわからない、という人は、ここに書いてあることだけ真似ても、環境を壊してしまう可能性があるからやめといたほうがいい。


理解できる人だけが、自己責任でやること。



でも、設定ファイルを直接編集する必要があったのは、タッチパッドの設定を変えたところだけ。

気に食わないなら、USB マウスつなげばいいだけの話。


自動ログインは、管理者権限を与えておけば編集の必要はなかったし、別になければないで構わない。


Ubuntu は初心者向けによくできている、と思っているのだけど、LinuxBean はさらにハードルを下げている。

使い始めて慣れてしまったら、その時は Ubuntu のように使うこともできるしね。


タコは財産、という Linux 界の標語を久しぶりに思い出しました。




最後に、「どのくらい軽くなったか」を書いておこう。

時間計測は、すべてストップウォッチによる目測。厳密なものではない。


そもそも、Windows はしばらく使っていたので、それなりに常駐ソフトなども入っている。

フェアな比較にはなっていない、と断っておく。

常駐ソフトは主に動作の遅さなどを軽減するためのもので、重くなるようなものは入れていないのだけど。



Windows は起動中にユーザー選択が挟まる。手で操作して、一番起動項目の少ない子供用アカウントを選択しているが、1~2秒のタイムロスがあると考えていい。



Grub での OS 選択から、デスクトップが現れて操作可能になるまでの時間

(Windows は、そのあとも各種ソフトが起動していくが、その時間は含めていない)


Windows: 75s

LinuxBean: 35s


タスクマネージャ(使用メモリ量を見るためのアプリ)を起動した際の使用メモリ

(Windows は使用メモリ量=コミットチャージ)


Windows: 177MB

LinuxBean: 68MB


Chrome を初回起動するのにかかった時間


Windows: 12s

LinuxBean: 18s


Chrome を起動した際の使用メモリ


Windows: 223MB

LinuxBean: 138MB



全体に LinuxBean のほうが軽いのだけど、Chrome の初回起動だけ遅い。

(どちらの OS でも、キャッシュがあるので2回目以降の起動は速くなる)


これは思い当たる節があって、Windows は定期的にデフラグをやって、「よく使うソフト」などは HDD で高速アクセス可能な外周に寄せていた。


今回、LinuxBean は Windows があまり使っていない「内周側」に入れられたし、Linux ではデフラグによる最適化もされていない

HDD の速度として、ずっと不利な条件かもしれない。


逆に考えれば、それでも起動が半分程度の時間、というのはすごく軽いことになるのだけど。




実は、計測しようとしている最中に、Windows がどうしようもなく重たくなった。

ずっと使わずにおいていたので、Windows Update と、アンチウィルスソフトの更新が重なり、メモリを 512M 以上使ってしまい、SWAP しながら動き出したのが原因だった。



LinuxBean は、何とも不親切なことに、自動的に Update なんてしてくれない。

セキュリティ意識をもって使い、定期的に忘れず Update しなくてはならない。

さもなくば、セキュリティが甘くて問題が出る、という不幸に見舞われる。


反面、裏で勝手にダウンロードを始めて重くなる、という不幸には見舞われない。

一長一短だけど、非力なマシンを使うならどちらにしても覚悟が必要だということだ。



今回は子供に使わせるものなので、「裏で勝手に何か起きる」というの余計な混乱を起こすだけ。


LinuxBean の方針がありがたい。

Update は子供が使っていないときに僕がやることにしよう。



後日談


非力なマシンはやっぱり非力でした。


でも、今まで使えてなかったのを、少し活用できそう。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

別年同日の日記

03年 当たりました

17年 P10 に乗り換え


申し訳ありませんが、現在意見投稿をできない状態にしています

マイケル・クライトン 誕生日(1942)  2015-10-23 15:54:35  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、ジュラシックパークやアンドロメダ生命体でお馴染みの(?)マイケル・クライトンの誕生日(1942)。


以前、命日に記事を書いているので、詳しくはそちらを参照してください。



ジュラシックパークのシリーズは今でも人気で、現在シリーズ4作目となる「ジュラシックワールド」を公開していますね。

最初の2話しか原作書いてなくて、あとは別人がシナリオ書いているだけみたいですけど。




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

03年 当たりました

17年 P10 に乗り換え


申し訳ありませんが、現在意見投稿をできない状態にしています

非力なマシンはやっぱり非力だった  2015-10-24 11:42:04  コンピュータ

▲目次へ ⇒この記事のURL

昨日「非力なマシンに LinuxBeanを入れてみた」と書いたばかりなのですが、やっぱダメだった報告。


一応、子供の主な目的は Scratch だとわかっていました。

だから、ちゃんと Scratch が使えることは確認していた。


簡単なプログラムも組んで、多少遅いけど動作に問題ないことも確認した。



でも、子供はすでにいろいろなプログラムを作っていた。

これが想像以上に大規模なプログラムで、読み込ませたら非常に重い。


ついには、Flash がクラッシュして停止した。

うーむ、使い物にならなかったか。



Hello World 程度の簡単なプログラムが動いたからと言って、実用にはならなかった、という話。




Scratch には 1.4 と 2.0 の2系統がある。


長男が普段使っていたのは、2.0 。WEB サイトにアクセスすることで、WEB ブラウザ上で動作する。

Flash 上で動いている。


これとは別に、ローカルマシンにインストールして使用する 1.4 がある。

こちらは、Squeak (Smalltalk のフリー実装)上で動作する。



番号が上だから 2.0 のほうが高機能、というわけではない。

うちもそうだけど、子供が自分のマシンを持っていることは少なくて、親のマシンを借りていると「ソフトをインストール」はできないことがある。


そこで WEB ブラウザ上で動くようにした、というのが 2.0 なのだけど、WEB ブラウザの制限によって一部機能を諦めている。

とはいっても、機能劣化版ではなく、2.0 でないと使えない機能もある。似て非なるものだ。



1.4 でないと使えない機能の筆頭は、ポート入出力。

RaspberryPi に Scratch1.4 を組み合わせ、自作の自動車を制御する、なんて遊びが子供の間で流行している。


こういう、制御系に使う場合にはポート入出力が必須。


センサーで状況を確認して、モーターを動かす、というようなことが基本なので、車でなくてもかまわない。

現実世界をプログラムでコントロールできる、という夢のような機能は、1.4 でしか使えない。




2.0 でないと使えない機能の筆頭は、「ブロック」(手続き、関数に相当)の作成と、インスタンスの生成。

この二つ、プログラムへの理解が進まないと混乱するだけの機能なので、1.4 では入れられなかったのだと思う。


でも、使い慣れるとこれなしにはプログラムが作れなくなるほど強力。

特に、ゲームなどで必要な「たくさんの敵」の表現は、2.0 のインスタンス生成なしには考えられない。



さて、LinuxBean に 1.4 をインストールしてみたら、2.0 よりも軽快に動く。

それはそうだろう。1.4 は RaspberryPi でもよく使われるが、いくら非力とはいっても Lavie は RaspberryPi よりは高性能だ。


#初代 RasPi との比較。最近の RasPi は高性能化しているので負けるかも。



長男はとりあえず「ちょっと画面構成などが異なる」 1.4 に興味をもって少し使っていた。

でも、やっぱり Scratch は 2.0 でやりたいようだ。



#この件、高速化のための情報をいただいたので後日書きました

 RaspberryPi では、通常の Scratch よりも3~10倍程度早く動くものが使われているそうです。




話は変わる。


最近長男は将棋にも興味を持っているのだけど、周囲がみな弱いので、ゲームにならない。

駒を動かすのがやっとの長女を相手にして、勝ったと喜んでいる。全然自慢にならない。


そこで、Linux 上で動く将棋ソフト、GNU Shogi (と、グラフィカルに表示するフロントエンドである Xshogi)を入れてあった。


これは興味をもって遊んでいた。

でも、強すぎる。本来、このソフトは非常に弱い部類なのだけどね。




コンピューターに将棋を打たせるのも難しい、という時代に「森田和郎の将棋」が作られ、そこで使われたアルゴリズムなどはすべて公開された。


その後、森田将棋を参考に多くの将棋が作られ、GNU Shogi もそうしたものの一つだったはず。

初期の世代のアルゴリズムなので、それほど強くない。



Bonanza は、森田将棋以来のアルゴリズムを大きく変えたソフトだ。


将棋ソフトの思考の基本は、数手先に最善になる可能性が高い手を読む、ということだ。

ここで、「最善」とは何かが問題になる。


森田将棋のアルゴリズムでは、この「最善」をどう考えるかがプログラマの腕の見せ所だった。職人芸ともいえた。


Bonanza では、この「最善」を求める職人芸の部分を、機械学習に置き換えた。

膨大な棋譜を読み込ませ、それぞれの勝敗を元に、どこの手が良かったのか、悪かったのか、膨大な棋譜すべてに共通できる考え方を、自ら編み出していく。



そして、森田将棋がアルゴリズムを公開したように、Bonanza もソースコードを公開した。

それ以降、将棋ソフトはどんどん強くなっている。今も発展の途上だ。



…と歴史話を書いてみたけど、つまりは GNU Shogi は非常に弱い。

長男は将棋に興味を持っているけど、GNU Shogi にちっとも勝てない。


もちろん僕も勝てない。将棋に関しては僕もかなり弱いから。




このマシン、Windows より起動も終了も速くて、気楽に使えるのは事実。

当面気楽な WEB 端末として使ってみるのもいいかもしれない。



長男は将棋は気に入ったようで、将棋だけ遊ぶのにこちらのマシンを使っている。


他にも、いくつか子供が興味を持つようなゲームを入れてみてもいいかもしれない。



▲目次へ ⇒この記事のURL

関連ページ

古くて非力なマシンをLinuxBeanで再生してみた【日記 15/10/23】

NuScratch【日記 15/10/26】

別年同日の日記

07年 無理難題

13年 ジョン・マッカーシーの命日

17年 さん付け運動実施中


申し訳ありませんが、現在意見投稿をできない状態にしています

NuScratch  2015-10-26 10:32:29  コンピュータ

▲目次へ ⇒この記事のURL

非力なマシンでは Scratch が重くて落ちた、と書いたところ、日本での Scratch 普及の第1人者でもある、阿部 和広さんから直接情報をいただきました。



というわけで、NuScratch をキーワードに検索してみるけど、RaspberryPi 関連のページしか見当たらない。

探すうちにだんだん理解できて来たので、以下僕による補足。


この世界はそれほど詳しくないので、間違えていたらごめんなさい。




Smalltalk は当初の設計より「仮想CPU」(Virtual Machine : VM と呼ばれます)上で動作しています。


リンク先に書いてあるのだけど、当時 ARPANET の構築が始まっていて、まだ実際に接続に必要なソフトは PDP-11 用しかありませんでした。


Xerox の技術者は、ARPANET に参加したかったのだけど、Xerox は「シグマ7」という PDP-11 の対抗機種を作っている。

会社に PDP-11 を買ってくれ、とは言えない。


そこで、Alto を作ります。Alto は CPU の命令を「マイクロコード」で実際の演算回路に変換する仕組みだったのですが、このマイクロコードを可変にしたのが特徴でした。


PDP-11 互換、とは会社には言っていないのですが、PDP-11 互換に「することも」できます。



Alto 上ではいくつかの OS が作られ、OS ごとに都合のよい命令を作るようにマイクロコードを設計しました。

つまり、Alto 上の OS はどれも、「仮想的な CPU」である、 VM 上で動く設計なのです。


Smalltalk も Smalltalk 用の VM の上で動きました。



そして、この構造は Smalltalk が別のハードウェアに移植されたときにも変わりませんでした。

Smalltalk が必要とする VM をそのハードウェア上に移植すれば、Smalltalk の移植は完了。


仮想 CPU を挟むので多少動作は遅くなりますが、移植性の非常に優れた OS でした。




Squeak も Smalltalk の実装の一つなので VM を使うのです。

この VM は命令を逐次解釈(インタープリタ)実行します。


たとえば、2つの変数(レジスタ)、αとβを足し合わせ、結果をαに残す、という命令を実行してみましょう。


1. VM はメモリから命令データを取り出します。

2. 命令データを調べ、「2つの変数を足す命令」だと認識し、3 以下のプログラムを呼び出します。

3. αに相当するメモリのデータを取り出し、実際の CPU のレジスタ EAX に入れます

4. βに相当するメモリのデータを取り出し、実際の CPU のレジスタ EBX に入れます

5. 実際の CPU で、ADD %EAX,%EBX 命令を実行します。

6. EAX の内容をαに相当するメモリに格納します。

7. 1 に戻ります。


これで終わり、5 は実際に計算している部分で、それ以外は「仮想 CPU」と、「本物の CPU」の間で、すり合わせをやっている作業。


実際にやりたいことから見ると、無駄が非常に多く、遅いです。



商用の Smalltalk を作成している会社は、もっと高速に実行できる JIT (Just-In-Time: 即時)コンパイル VM を使います。

仮想 CPU の命令を、実行する瞬間に解釈して本物の CPU の命令に変換し、その後は同じ場所を実行する際には常に本物の命令を使う、という方法です。


先に書いたのと同じ例でいえば、「αは EAX 、βは EBX」のように、ある程度現実の CPU と VM のレジスタを一致させてしまい、加算命令を ADD %EAX,%EBX という命令に変換します。

そして、周囲の命令も含めて、連続して「変換した」内容をメモリにおいて、そのメモリ内容を実行します。


初回のみ解釈が必要ですが、以降は解釈なしで実行できるため高速です。

しかし、本物の CPU に変換した命令を覚えておくためのメモリを必要としますし、技術的に高度になるためバグも混入しやすくなります。



2010年に、商用 Smalltalk を作成している会社が、VM 部分を無償公開したそうです。(Cog VM と呼びます)


より厳密にいえば、JIT VM を作っていた人が商用 Smalltalk の会社に売り込みをかけたが、さらにフリーウェアとして公開することを承諾してもらった、ということなのかな。

いずれにせよ、他社に対するアドバンテージを入手したのに、それを公開するというのは英断です。感謝。



そして、この VM は Squeak でも使用することができます。

最初に書いた通り、Smalltalk は最初に設計されたマイクロコード上で動作するようになっていて、複数ある Smalltalk 処理系で共通になっているためです。


とはいえ、細かな部分…例えば、動作のタイミングなどまで厳密に同じか、といえば異なります。

「速くなっている」というのは、つまり「全く同じ」ではないのだから。


だから、Squeak で使用するのは保証外。




Cog VM はまだ開発途上で、2010 年に最初のリリースが行われた後、2014年にも大きな機能追加があり、大幅に高速化したようです。


さらに高速化のアイディアを現在実装中で、2015年中にはリリースしたい、とのこと。

速度は条件により異なるが、平均して5倍速になるだろうと目標を立てています。



そして、現状の Cog VM 上で動作するように調整した Scratch が NuScratch のようです。

保証外だけどうまく動いているし、非力な RaspberryPi では速度を稼げるほうがずっと大切です。


#Nu は New の意味。よくあるスラングです。




…というわけで、すでに Scratch が動く環境なら Squeak の VM 部分を Cog VM に交換すれば「NuScratch 相当」になるはず。

挑んでみましたが、「簡単ではない」ことがわかり、成功はしていません。



まず、日本語版Squeakは、Squeak を日本語対応にして再パッケージしたものですが、Cog と公式 VM の両方が使えるようになっています。


Scratch は Squeak 上で作られて、VM の命令レベルのバイナリで配布されているもの。

なので、理論的には VM を取り換えれば話は済むはずです。


でも、VM とバイナリには、それぞれ「命令のバージョン」が入れられていて、バージョンが違うとエラーになって動作しません。


日本語 Squeak の VM のバージョンは 6505。Ubuntu 12 で入れられる Squeak のバイナリのバージョンは 6502 です。

バージョン違いで動きません。



Squeak は、Smalltalk の(つまりは Squeak の)ソースコードでも配布されています。

でも、僕が Smalltalk に詳しくないので、このソースコードを読み込ませ、バイナリにコンパイルする方法がわかりません。


多分、Cog で動く Squeak の上で Scratch のソースコード読ませて、バイナリで保存すればよいのだと思うのだけど…


最初に情報頂いた阿部和広さんの解説記事にScratch の改造方法があります。


ここでは、ソースを用意して改造しているのだけど、「ソース入りのバイナリ」を使っているのね。

バイナリを使うとバイナリバージョンに依存してしまうので、純粋なテキストソースから読み込まないといけないと思うのだけど…


#Squeak のプログラムは、「VM 上のメモリイメージのスナップショット」として配布されることが多い。

 Smalltalkには「ファイル」という概念がないので、プログラムのバイナリファイルを配布、というわけにいかないのね。


 そして、スナップショットなので、メモリにソースを読み込んだ状態で配布すれば、ソースを見られる。上記ではそれを使っている。

 純粋なソースも配布されているようなのだけど、VM 上にどうやって読み込ませるのか知りません。

 (先に書いたように、ファイルという概念がないので、ソース「ファイル」を読み込ませる方法もない)




というところで昨日は時間切れ。


あと少し作業すればできそうな気もするし、まだ先があるかもしれません。


興味のある方もいるかな?


でも、再コンパイルしたものの再配布は禁じられているようなので、完成したとしても再配布はできません。

成功したら、「やり方」を示すだけでも意義は大きいとは思うのだけど、先行き不透明です。



▲目次へ ⇒この記事のURL

関連ページ

非力なマシンはやっぱり非力だった【日記 15/10/24】

別年同日の日記

01年 10/26

01年 10/25

03年 カバン買った

06年 三代目

13年 襟川陽一さんの誕生日


申し訳ありませんが、現在意見投稿をできない状態にしています

DJBの誕生日(1971)  2015-10-29 11:41:36  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、ダニエル・ジュリアス・バーンスタインの誕生日(1971)

本名よりも、略称である DJB のほうが有名です。


…って、誕生日 1971年? 僕より年下だとは知らなかった!


10年くらい前に DJB の存在を知った時点で大学教授だったから、もっと年配だと思っていたよ。

どんだけ天才なんだ…




と、興奮気味に書き出してみましたが、UNIX で有名なソフト群を作った人です。

ただし、彼自身は暗号の専門家であり、ソフトウェアは専門ではありません。


でも、コンピューターがわかるから大学でコンピューターネットワークの管理をやらないといけなかった。

良くある話です。


そうしたら、四六時中ソフトウェアの脆弱性が見つかったり、新機能が追加されたりでアップデート作業が必要になった。

自分の研究時間を奪われることになった。


じゃぁ、俺がアップデートの必要なんてないソフトを作ってやる! と作ったのが、一連のソフト群。

UNIX のソフトで過去に見つかった「脆弱性」をよく研究し、脆弱性が出やすいポイントを「回避する」ように作られています。



作ったのは、メールサーバーDNS サーバーが中心。

WEB/FTP サーバーも作ったけど、これは非常に低機能なので誰も使ってないと思います。


メールも DNS も、ネットワークの必須機能。

しかも、すでに枯れた技術で、これから大きな新機能が追加されることもなさそうです。


これらを、脆弱性がないようにきっちり作り込んだ。

決して高機能ではありません。むしろ低機能。

ただし、高性能です。


枯れた技術なので、機能追加アップデートは不要です。

十分高性能なので、性能を上げるアップデートはありません。

そして、脆弱性はおそらく出ないので、セキュリティアップデートも不要です。


これで、アップデートのない、サーバー管理が実現できます。




DJB のソフト群は、非常に独特の構成をとっています。

一般的なソフトとは違いすぎて、管理概念になれるのが少し大変。

だから、DJB のソフトは嫌い、という人も多いです。


でも、この独特な構成は、セキュリティを高めるためです。


まず、「メールサーバー」と書きましたが、これだけで大きく分けて2つのソフトになっている。

メールを「受信する」のと「送信する」ので、別のソフトになっているのです。


そして、それぞれはさらに細かなソフトに分かれています。

プログラムが複雑化するとバグが出やすく、脆弱性の元になるため、動作を最小単位にまで分割しているのです。


これらの小さなソフトは協調して動きますが、決してお互いを信頼しません。

自分の任された仕事はきっちりやるけど、ほかのソフトが正しく仕事をしているとは信じないのです。


これにより、どこかに脆弱性が発生しても、全体として致命的な事態にならないようになっています。


そして、「他を信用しない」ために、それぞれのソフトが別の権限を持つようになっています。

UNIX では、権限は「ユーザーアカウント」で表現されるため、メールサーバーを入れるだけで6つのユーザーアカウントの登録が必要となります。


さらに、設定ファイルも細かく分割されます。

これは、分割されたソフトごとに別々の設定が必要、ということもあるのですが、「構文解析」、特に「文字列処理」という脆弱性の元となりやすい部分を無くすためでもあります。


構文解析というのは、「文章を読む」ということ。

普通設定ファイルには、いくつもの設定項目が書き込まれます。この文章を読み取る必要があるのですが、文章を読むという処理は結構複雑で、脆弱性を持ちやすいのです。


DJB のソフトでは、設定ファイルは「ファイル名」が設定項目で、中身が設定の値です。

そのため、構文解析の必要がなく、こうした脆弱性が入り込む余地がありません。



また、また、人間のミスによる「脆弱性」をなくす目的もあるようです。


一般的に、設定ファイルは1つであることが多いのですが、そのために、うっかり書き間違えると関係のない機能にまで影響が及ぶことがあります。

こうした「うっかり」をなくすために、設定1つごとに1ファイルなのです。



でも、この方法だと小さなファイルをたくさん作る必要があります。


もう、何から何まで分割したがる。

アカウントを6つも使い、設定ファイルだけで十個以上。



ここまでややこしい設定を要求しておきながら、できることは「UNIX のローカルアカウントへの配信」だけです。

普通のメールサーバーよりも低機能。


別マシンへ配送するための POP3 サーバーなどは、別途入れる必要があります。


さらに、このメールソフトは、動作ログを「標準出力」に吐き出します。

ファイルに残したいなら、標準出力をファイルに残すためのソフトを、別途入れる必要があります。


ソフトの動作を最低限の機能に絞って脆弱性を失くす、という方針なので、何をやるにしても「それは別のソフトで」となる。




DNS も同じ調子。


DNS って、「世界中の情報を調査する」ための機能と「自分の情報を提供する」機能の、2つに分かれている。

ところが、最初に DNS を実装した BIND では、この2つの機能をごちゃまぜに考えてしまって(最初はこれが別機能だという認識もなく)、同じポートで提供している。


#ネットワークの仕組みで、1つの「アドレス」に、受付窓口である「ポート」が複数あります。

 ポートはサービスごとに異なっていて、メールなら 25、WEB なら 80 、というような番号で指定されます。

 DNS は 53 番なのですが、この1つだけで「情報調査」と「情報提供」の両方を兼ねているのです。



DJB の作った DNS では、別の機能は別のソフトです。

でも、1つのアドレスで同じポートを使う2つのサービスは提供できない。だから、別の IP アドレスを使う必要があります。


なんと! サーバー1つ入れるために、1つのマシンに2つの IP アドレスが必要となってしまう。

これで困ってしまう人も多くて、DJB の DNS サーバーは、メールサーバーよりさらに不人気。


ここではインストール方法を書きたいわけではないので、詳細は書きません。

でも、ちゃんとおかしなことをしないで設定できる。設定できないと思うなら、管理者としての知識が浅いだけ。


世の中の「インストール方法」を書いたページにも、間違っているものが多数見受けられます。

一見動いているように見えるけど、外部 DNS サーバーを参照しているだけで、インストールした意味がないとかね。




ハッカー文化を表現する言葉に KISS というものがあります。


Keep It Simply, Stupid


「簡単で馬鹿なままにしておけ」、または「そのままにしとけ、馬鹿め」の意味とされます。


これ、結局は理系文化です。


シンプルで応用が利くものが良いのであって、「この機能を追加したら便利だろう」とか考えるのは浅はか。

大抵の「便利なもの」は、よく使う機能に特化したもので、応用は利きにくいのです。



その意味で考えると、UNIX でよく使われるメールサーバの Sendmail や、DNS サーバの BIND は、高機能になりすぎている。

肥大化して、シンプルではありません。


DJB は、KISS の精神で機能をバラバラに分解した。

Sendmail が1本のソフトでやっていることを、6本に分割した。

しかも、この6本を動かしてもまだ低機能で、ログを残すこともできない。



もちろん、「組み合わせられる」ことが KISS の良さですから、DJB のソフトも組み合わせて応用がききます。

ログを残すことはもちろん可能だし、POP3 対応にもできる。


別のソフトと組み合わせて、メールが来た時だけサーバーが起動するようにしてメモリを節約したり、万が一にもサーバーが停止した場合には自動再起動、なんてこともできます。


DJB 自身の手による「メーリングリストサーバ」もあって、もちろん簡単に組み合わせられます。




と書くと DJB のほうが優れているように見えますが、実態はそうでもないでしょう。

上に書いたように「組み合わせれば」いろいろできる、というのは、使う人に高度なプログラム能力を求めているのと一緒です。

組み合わせるって、「プログラムする」ってことですからね。



実際、各ソフトがどういう役割で動いているのか、副作用として何が起こるのか、ちゃんと理解しないと設定ができません。

先に書いたように、DNS ソフトの設定では、失敗している例が多数「設定例」として公開されている。



万人が使えるソフトではありません。

だけど、一度理解して設定してしまえば、非常に信頼性が高い。

アップデートなどの面倒を見る必要はないし、停止することもまずありません。


便利だけど使うには高度なスキルを必要とする、という、非常に癖の強いソフト群なのです。




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

CentOS 7 上の ndjbdns の落とし穴【日記 16/10/10】

別年同日の日記

03年 良書。

04年 ロードサービス

07年 コーヒー豆

09年 忙しくて

13年 メガドライブ発売日(1988)

13年 メガドラ25周年記念?

18年 イグニス・一か月点検


申し訳ありませんが、現在意見投稿をできない状態にしています

クリフォード・ベリー 命日(1963)  2015-10-30 11:24:57  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、クリフォード・ベリーの命日(1963)。


ジョン・アタナソフとともに、アタナソフ・ベリー・コンピューター(ABC)を作成しました(1939)。


ENIAC よりも古いです。

ENIAC は 10進数で計算するのですが、ABCは2進数で計算します。


このため、ABCが「最初のコンピューター」だと主張されることがあります。

僕はそうは思わないのですが、まぁ、その程度に有名な機械です。


ABCマシンの詳細を知りたい方は、「ジョン・アタナソフ誕生日」のほうもご覧ください。




クリフォード・ベリー、名前は残っているのですがどのような方だったのか、詳細がよくわかりません。

調べてわかったことを簡単にまとめておきましょう。


ネット情報なので、誰でも簡単に調べられるし、まとめるほどのものでもないのですが。



クリフォード・エドワード・ベリー(Clifford Edward Berry)は、1918年4月19日にアイオワ州グラドブルックの電気店での長男として生まれました。4人の兄弟がいました。


1920年。ペンシルバニア州ピッツバーグで世界で最初のラジオ放送が始まります。

しばらくして、彼の父はラジオ受信機を作り始めました。


このとき、クリフォードも父を手伝い、父は電気技術をクリフォードに教えています。


グラドブルックの町で最初のラジオだった、ということなので、アイオワ州ではまだラジオ放送はなかったのでしょう。

そして、遠方の電波をとらえるため、非常に大きな…おそらくはアンテナのことだと思いますが…大きなラジオが完成します。


ラジオがまだ珍しかった時代。この機械を見ようと電気店を訪れる人は増えました。

その後もクリフォードは電気技術に興味を持ち続け、電気工作を続けるようになります。


11歳の時には自分でアマチュア無線機を組み立てています。




クリフォードは学校の勉強でも非常に成績がよく、1年生の終わりには、2年生を「飛び級」して3年生に上がることを提案されました。

両親はこれに反対します。理由はわかりませんが、無暗な飛び級よりも、基礎をしっかり学ぶこと、級友と共にいることを優先させたかったのではないでしょうか。


しかし、校長は毎年のように飛び級を進めます。

ついに、3年の終わりに飛び級を受け入れ、4年生を飛ばして5年生になっています。




11歳の時、父が電力会社のマネージャーの職を得ます。

この関係で、事務所があったアイオワ州の小さな町、マレンゴに引っ越します。


そして、クリフォードが高校2年生の時、事件が起きます。

父が解雇した社員から逆恨みを買い、射殺されるのです。


クリフォードは長男として、家族を守らなくてはならなくなりました。



しかし、彼の母はクリフォードの大学進学を希望します。

クリフォードは電気工学を学べるアイオワ州立大学に進学し、家族は大学のあるアイオワ州エイムズに引っ越します。


1939年、彼は電気工学の学士号を取得します。このときの指導教官はハロルド・アンダーソン。


ハロルドの非常に仲の良い友人に、ジョン・アタナソフがいました。


アタナソフは、電気式の計算機を作ろうとしていましたが、理論的には完成していても、実際に一人で回路を作成するのは大変でした。

そこで、友人のハロルドに「電気工学に詳しい学生を一人紹介してくれないか」と頼みます。


ハロルドはすぐに、クリフォードを紹介します。

そして、ふたりはABCマシンの作成を始めます。


1939年の年末には、非常に簡単なプロトタイプが完成し、デモを行っています。

これにより研究を続けることが認められ、大学から助成金も出ています。




ABCの作成中に、秘書として働いていた女性、マーサ・ジーン・リードと知り合い、1942年5月30日に結婚しています。

その後、子供も二人できています。


結婚の直後、クリフォードは国防企業に職を得ます。この関係で、カリフォルニア州に引っ越さなくてはならなくなりました。


ABCマシンは「戦争の影響で研究が続けられなくなり、未完成で中断した」ことになっています。

おそらくは、設計の中心人物であったクリフォードがいなくなったことで、続けられなくなったのでしょう。


クリフォードは大学を去りましたが、大学と特別な取り決めをしていました。

このため、カリフォルニアの会社に在籍しながらも研究を続け、1948年に物理学の博士号を取得しています。


1949年には会社でもチーフ物理学者の地位に昇格しています。




その後の彼に何があったのか、正確な記録がありません。


しかし、1960年ごろに、鬱状態となってしまったようです。


仕事での待遇にも満足がいかない、酒におぼれ、家庭生活も崩壊しかかっていました。

追い打ちをかけるように、立て続けに2回の交通事故にあっています。


精神科のカウンセラーの元にも通っていましたが、鬱を抜け出すことは難しかったようです。


このころ、アタナソフは「古い友人」であるクリフォードに会うために、はるばるカリフォルニアまでやってきています。

そして、昔の天才がすっかり落ちぶれている姿を見ています。


その後、1963年にクリフォードはニューヨークの電気技術会社の開発マネージャーの職を得ています。

「職に満足していない」とこぼしていた彼が、もっと自分を評価してくれる仕事を見つけ出したかのように思えます。



彼は、1963年の10月に、家族を置いてニューヨークに単身赴任しました。

そして、10月30日、引っ越したばかりの自宅アパートで死んでいるところが発見されたのです。


ビニール袋をかぶって、窒息死。

周囲にはおびただしい量の酒瓶が転がり、検死の結果も、彼がアルコール中毒であったことが裏付けました。


警察の見解は、自殺、です。

実際、不審な点は何もありません。


天才の悲しい最期でした。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

PCエンジンの発売日【日記 13/10/30】

ジョン・アタナソフ誕生日(1903)【日記 13/10/04】

別年同日の日記

01年 10/29

06年 腰痛

13年 PCエンジンの発売日

17年 コンビニ強盗


申し訳ありませんが、現在意見投稿をできない状態にしています

プリンタ買った  2015-11-01 10:32:19  コンピュータ

▲目次へ ⇒この記事のURL

プリンタが壊れたので新しいのを買った。


壊れたプリンタは…あれ、日記に書いてなかった。

ツイッターでは購入した時に書いた記録があったけど、それで満足して日記に書き忘れたかな。



幸い、壊れたプリンタがどこの会社か書いていなかったので、思い切り悪口を言える(笑)


購入して1年以内に一度故障しました

こちらも日記には書いておらず、ツイッターの記録だけど。


1年だと保証期間内で、初期不良なので新品交換、と言われました。

でも、新品に交換したことで保証は終わりになります、と。


え、新品ということは、また初期不良の可能性もあるのだよね。保証打ち切りってどういうこと?

と思ったら、案の定また1年以内に故障。


ノズルが激しく目詰まりしたようで、黒がほとんど出ない。

よりによって黒。書類印刷もできない。




保証もないし、自分でメンテナンスできないか調べてみる。


激しくインクを減らす「メンテナンスモード」を使っても治らなければ、修理に出すしかないらしい。

いや、それはもちろんメーカーはそういうだろうさ。でも、大抵は自分でできることがあるはずだ。


しかし、ネットで修理法を調べても、該当機種は「修理はあきらめたほうが良い」という状態。

安く作るためにメンテナンス性を一切考慮しておらず、できることはほとんどないらしい。



2度、3度とメンテナンスモードを繰り返しても状況は改善せず、インクが激しくなくなっていくのがわかる。

この会社のインク、すごく高いんだよね。


一応、目詰まりしたインクを「溶かす」ための、溶剤のカートリッジを売っている業者があった。

それなりの値段だけど、当たり前だが確実に治る保証はない。


しかも、これで治った場合も最初はインクに溶剤が混ざってしまうので、「メンテナンスモード」を2~3回繰り返して…となっている。


ということは、溶剤を買った上に、新品のインクも買い足す必要があるというわけだ。

これで1万円くらい行ってしまう。新品の安いプリンタが買える。



とはいえ、安い機種がメンテナンス性が悪い、というのは今知った通り。

メンテナンス性が良い機種があって安ければ考えてみよう、と探してみる。




そして見つけたのがブラザーの機種。


今回壊れた機種の前は、HP のプリンタを使っていた。これが結構頑丈で、なかなか壊れなかった。

その HP プリンタを探していたころにはブラザーの機種も調べたことがあったが、主に業務用で、家庭のことはあまり考えていない、という印象だった。


今回調べ直したら、結構評判が良い。

といっても、やはり家庭用としてはマイナーメーカー。評判の良さは、いろいろな「前提付き」だった。



元々業務用で強かったので、写真印刷などは苦手で、白黒文書の印刷などには強い、そうだ。

特に、ランニングコスト重視の人にお勧め。業界でも一番安い部類になる。



文書よりも写真印刷が多い、綺麗であれば高くてもよい、というような人は買わないほうがいい。

ネットの評判でも、安いからと購入して「写真印刷がきれいでない」と怒っている人もいた。


我が家は写真はほとんど印刷せず、白黒文書ばかりだ。

この機種の想定顧客層に適合する。




いろいろ考慮して、購入したのはブラザープリビオ DCP-J557N で、実売6千円程度。


夏には、キャンペーンで実売3千円程度だったらしい。

安かろう悪かろう、ということもないようで、ランニングコストとしては一番安い部類だし、メンテナンス性も考慮されている。


接続は USB か WiFi になる。


AOSS などに対応しているので、WiFi 接続はそれほど難しくない。


我が家では AOSS などに対応していない(笑)

でも、タッチパネルでキーボードを使ってパスワードなどを設定できるので、非常に簡単だった。


#以前の機種は、画面表示されたキーボード上を十字キーと決定ボタンで選んで…というやり方で、イライラした。



まだ1か月程度しか使っていないが、使い勝手についても書いておこう。



インク節約モードというのがあって、レイアウト確認とかに使うものなのだけど、「べた塗りを白抜きにする」というすごい印刷方法を使ってくれる。


ベクター画像であれば、塗りを省略した線だけになる。

ピクセル画像であっても、同じ色が連続した場所は認識して「白抜き」にしてしまう。

(完全に抜けるわけではなく、まだらになる。インク節約が目的ならこれで十分)


元々インクは安いのだけど、さらに安くできる。




ところで、この機種はインクカートリッジをプリントヘッドに載せない。


最近の機種は、プリントヘッドにインクカートリッジを直接搭載するものが多いのね。


古くは、目詰まりしてもノズルごと交換できるようにするため、だった。

インクカートリッジに、インクを噴出するノズルがついているのね。


でも、ノズル部品は結構高いので、最近は「ノズル一体型カートリッジ」というのは見なくなった。

ヘッド側にノズルがあり、昔からの名残でその上にカートリッジを搭載する形。


これだと、ヘッドが重くなって、精密に駆動するのにパワーのあるモーターが必要になり、値段を上げる要因となる。



一方で、購入機種はインクカートリッジはヘッドとは別の場所に固定してあり、ヘッドまでパイプでつながっている。


ヘッドが軽く、駆動にパワーがいらなくなる。

とはいっても、インクを送るのに別のポンプが必要となり、値段を上げる要因となる。


…一長一短ということだな。

仕組みとしては後者のほうが複雑になるので、メンテナンスの必要が増す。



そのため、購入機種は基本的に「電源を完全に切ってはならない」。

インクが乾いて目詰まりするのを防ぐため、時々少し噴霧して乾燥を防ぐ。


電源スイッチをオフにしていても、プラグが抜かれない限りこの作業を自動で行う。

それを知らずに、「勝手に動くので電気代が無駄」とプラグから抜いてしまうと、故障の原因となるそうだ。


#ネットで評判を調べていたところ、使わないときはプラグを抜いていたら壊れた、という記事があり、コメント欄で上記の仕組みを解説している人がいた。

 もっとも、ヘッド直接搭載でも「乾燥を防ぐ」噴霧は時々やっているはずなのだけど。



ちなみに、カートリッジがヘッドに載っていないので、「大容量インクタンク」を使うこともできる。


カートリッジがプリンタの前面にはみ出す形になって、そのはみ出した部分に「インク注ぎ口」があるので、インクが無くなっても補充できる。


純正品でないので故障などについては自己責任となるけど、いわゆる「詰め替えインク」って、詰め替えを考慮していない純正カートリッジに、無理やりインクを注入するものが多いんだよね。

うまくいかないとインクが漏れて周辺を汚したりする。


上に書いたインクタンクは、詰め替えしやすいようにカートリッジから作り直してしまったものなので、簡単に扱えるのがうれしい。



#実は、HP のプリンタでも同じような形式の非純正大容量タンクが使えるものが存在していて、以前に知人が使っているのをうらやましく思ったことがある。

 ただ、その HP プリンタは業務用で本体が高かった。

 今回は本体も安いのに、非常にランニングコストの安いインクが使える。




また別の話。


用紙をカートリッジ内に入れてセットする方式なので、用紙を変えたいときには、いちいちカートリッジを抜かないといけない。


うちでは主に「裏紙」を印刷に使っていて、重要な書類だけきれいな紙を使うのね。


以前使ってたプリンタは、前からロードするだけだったから、上に新しい紙を追加すればそれで大丈夫だった。

ここはちょっと面倒くさくなった点。


とはいえ、抜き差しは簡単にできるし、慣れてしまえば気にならないレベルだと思う。




最後に、壊れたプリンタに話を戻す。


この会社のプリンタは昔から結構有名だったのだけど、僕は長いこと使ってなかった。

以前には所有していたのだけど…20年以上も前だ。X68k で使っていた。

当時すごく評判が良くて、プリンタ買うならみんなこれを選んでいる、という感じだった。



今回、久しぶりに買ってみたら「新品から1年以内に壊れ、修理も不可能」というのを2回連続で繰り返したことになる。

20年もたつと、同じ会社だからと言って信用はできないのだなぁ。


もう、当分の間この会社のプリンタは買わないと思う。



▲目次へ ⇒この記事のURL

関連ページ

プリンタの不調【日記 16/08/18】

別年同日の日記

01年 10/31

10年 遠足

13年 ミッチ・ケイパーの誕生日(1950)

13年 セガ初期の歴史を調べてまとめてみた

14年 続・男と女とLGBT

17年 千客万来

18年 イグニス1か月&ハスラー試乗?レポート


申し訳ありませんが、現在意見投稿をできない状態にしています

レフ・テルミン 命日(1993)  2015-11-03 13:48:29  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

今日は、レフ・テルミンの命日(1993)


楽器「テルミン」の考案者です。

詳細は、誕生日の記事をご覧ください。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

今日は何の日

別年同日の日記

01年 11/3

02年 システム改変

03年 素人治療

10年 平方根

13年 フィル・カッツの誕生日(1962)

13年 地球博物館

16年 デザイン変えた


申し訳ありませんが、現在意見投稿をできない状態にしています

jsdeferred でアニメーション  2015-11-05 17:29:41  コンピュータ

▲目次へ ⇒この記事のURL

お手伝いしているゲーム作成での話。


いわゆるソーシャルゲームで、スマホ端末を使って Javascript で画面などを動かしている。

ゲームエンジン自体はサーバー側で持っていて、端末側は結果をそれらしく見せるだけ。


Javascript 側では、「それらしく見せる」ために、jsdeferred を使っている。

最近の流行というか、普通に使われる書き方ね。



next(function(){
 処理 A
 return wait(1.0)
}).
next(function(){
 処理 B
 return wait(1.0)
}).
next(function(){
 処理 C
 return wait(1.0)
});


とか書くと、処理 A の 1 秒後に処理 B を、さらに1秒後に処理 C を行ってくれる。


なんでこんな書き方するのか、については言及しない。

上のような処理を Javascript で普通に書いていると、非常に面倒くさいことになるのだ、とだけ言っておこう。




僕ではない誰かが作ったアニメのファイルを改造してほしい、と頼まれた。

特定の状況で、今までにはない別のアニメを割り込ませる。


上に書いたように、next で処理をつなぐ書き方なら、割り込みは難しくなさそう、に思える。



でも、実際にはそうではない。

かなりややこしい呼出し手順…古い言い方なら「スパゲティプログラム」になっていた。



function 処理A {
 ~~~
 処理B();
}

function 処理B {
 ~~~
 処理C();
}

function 処理C {
 ~~~
 処理D();
}


まず、概略としてはこんな感じになっている。

~~~で示してある部分は、いろんな処理が入っていると思って。もちろん next をつないである。

そして、最後の next の中で、次の処理を呼び出している。



なんでひとつながりの next にしないで、ある程度のまとまりで関数化してあるかというと、アニメは「タップで飛ばす」ことができるからだ。

処理 A の最中にタップされると、処理 A の部分のアニメの残り部分は飛ばされて、処理 B の部分から始まる。


その処理のために、別の関数が用意してある。



function タップ {
 switch(シーン番号){
 case 0:
  処理A の終了処理
  処理B();
  break;
 case 1:
  処理B の終了処理
  処理C();
  break;
 case 2:
  処理C の終了処理
  処理D();
  break;
 }
}


あぁ、なるほどなるほど。タップしたらスキップするのだから、そういうことになるわな。


…でも、このプログラムは実はおかしい。


ここで「終了処理」と書いてあるのは、アニメの最後の状態に持っていく、というだけ。

処理 A の終了処理であれば、強制的に処理 A のアニメの最後の状態にする。


でも、処理 A のプログラムは動き続ける。next を使っていると、一定時間後には次の部分が動いてしまうから。


一応、元のプログラムを作った人も考えたようで、 wait で指定した「待ち時間」をキャンセルする処理を入れていた。

これ、すぐに次の next に移る、というだけで、プログラムはやっぱり止まらない。


だから、プログラム中にすごい数の…しつこいくらいに、現在のシーン番号を確認して、致命的な処理をしないためのプログラムが入っていた。

致命的でなければ…つまりは、アニメがおかしくならなければ、無駄な処理をしてもかまわない、という書き方。

本当に無駄なだけなら構わないけど、やっぱりいつバグが出るかわからない、恐ろしいプログラム。




さて、本当に恐ろしいのはここから。


上の例はなんとなく「流れ」を読んでほしかったので、処理は A B C D …と進むように書いてある。


でも、本当はそうではない。状況によって間が飛ばされる。

次への呼び出しはこんな感じ。



function 処理A {
 ~~~
 if(フラグ1){
  処理B();
 }else if(フラグ2){
  処理C();
 }else{
  処理D();
 }
}


「フラグ」と簡単に書いたところは、複合条件のこともある。


そして、類似した内容が処理ごとの最後に繰り返し書かれているし、タップした際のスキップ処理ごとにも入っている。


条件で「間を飛ばす」だけではなく、排他的に呼び出したりもする。

とにかく、多数のややこしい処理の条件分岐を、多数の場所に同じように書いてあって、でも少しづつ記述が違う。

そして、それらが全部同じように動くことが期待されている。



スパゲティプログラム、っていうのは、goto 文が当たり前だった時代の、混乱した流れを持つプログラムの蔑称だ。


でも、goto 文があるからスパゲティプログラムができるんじゃない。

現代にだってスパゲティを生み出すプログラマは存在する。



1つ弁護しておくと、このプログラムは一人の手によるものではない。

最初は素直な流れだったのだけど、ソーシャルゲームでは毎週のように「新機能」が追加されるので、拡張を繰り返すうちにおかしなことになったのだ。


そして、今手伝っている仕事では、「困った事態」になると僕が呼び出される。

もう、誰の手にも負えない状態になったプログラムに、さらに新しい機能を突っ込む必要が出て、何とかならないかと相談されたのだった。




さて、換骨奪胎。

プログラムの一番「中心となる部分」…つまり、処理を呼び出す流れの部分を総入れ替えして、周辺の部分はそのまま使いまわそう。


処理の流れを整えるための関数を、一つ用意する。

各シーンの最後は、「次のシーンへ」飛ぶ代わりに、この関数を呼び出すようにする。


また、画面タップで処理を飛ばす際も、引数付きでこの関数を呼び出す。



var sceneNum=0;
nextScene(){
 switch(sceneNum)
  // シーンの終了処理(スキップした時用)
 }

 sceneNum++;

 //条件によりシーンを飛ばす処理
 if(sceneNum==1 && フラグ1)sceneNum++;

 switch(sceneNum){
  // シーンの呼び出し処理
 }
}


これで、複雑怪奇なスパゲティ部分をなくすことができる。



next の中で使われる wait に関しては、sWait という関数を使って置き換える。

sWait の中身は後で書くことにして、先に呼び出し側を示そう。



function 処理A {
 next(function(){
  処理
  return wait(1.0)
 });
}


というプログラムなら、次のように変える



function 処理A {
 var scene = sceneNum;
 next(function(){
  waitHandle = sWait(1.0,scene)
  処理 A
  return waitHandle;
 });
}


変わった点は2つ。

現在の sceneNum を処理の冒頭でコピーしておき、sWait に渡すこと。

そして、return で直接 wait を書くのではなく、処理の前に wait の値を得る処理を行い、最後にその値を return すること。


なんでそんな風にするのかは、 sWait の中身を示せばわかる。



function sWait(sec,scene){
 if(scene!=sceneNum)throw "force end";
 return wait(sec);
}


scene にコピーされた値が、sceneNum と変わった場合…つまり、タップされてシーンが変わったら、throw 命令で例外を発生する。

そうでなければ、通常の wait と同じように振る舞う。


throw で例外が起きると、jsdeferred は next でつながれた処理を、全部打ち切ってしまう。

だから、シーンが変わったらこれですべての処理を打ち切ることができる。


また、処理の「前」に sWait 呼び出しを書くのは、前回の wait で示した時間待っている間にタップされ、シーンが変わった際には、「処理」を行ってはならないからだ。



これで、「シーンが変わったのに、前のシーンの処理が実行されておかしくなる」ことは無くなる。

そうした事態に備えて入れられていた、小さな条件分岐は全部なくしてしまって構わない。

ごちゃごちゃとしたプログラムが、すっきりとしたものになる。



処理をまとめた関数の冒頭で scene を定義する。

wait を全部書き換える。

最後の「次の呼び出し処理」を全部書き換える。

シーン番号を確認する条件分岐を全部消す…


というのは、結構な作業量ではある。でも、機械的な作業だから難しくはない。


そして、これによりスパゲティとおさらばすれば、新たなシーンの追加も難しくなくなる。




「処理」と「処理の流れ」は別物なのだけど、これをしっかり分離して考えるのは、プログラムにかなり慣れた人だけだと思う。


ゲームなんか作っている人は理解しているかもしれない。

ゲームって、条件分岐の塊だから、その分岐をうまく分離しておかないと無用な混乱を引き起こす。



jsdeferred は、javascript が苦手とする「小さな流れ」を作り出すためのツールで、結構有用だ。

でも、それはあくまでも小さな流れ。条件分岐を必要としない流れのみ。


条件分岐を必要とする大きな流れは、別の個所でまとめて処理して、流れを「整流」してやる必要がある。

小さな流れの中に条件分岐をごちゃごちゃと書き込むと、バグの元だ。




上に書かれている程度なら、ここに書いたようなややこしい手法を使わないでも、力技でも乗り切れる。

でも、力技で乗り切っていれば、いつかバグが出る。


実際に任されたプログラムは、他の理由による処理の混乱も混ざっていて、本当に「ちょっといじればバグが出る」状況になっていた。



ここでは jsdeferred の話として書いたけど、こういう仕事は昔から時々やっている。

自分のプログラムが拡張に従ってややこしくなって…という時もあるけど、大抵は他人のプログラムの整理だな。



その時々で、どう書き直せばスマートになるかは違うので、一概に方法を示すことはできないのだけど、とにかく「処理」と「処理の流れ」を分離することが重要。


この考え方は、いつだって役に立つ。



▲目次へ ⇒この記事のURL

関連ページ

ServiceWorker と indexedDB【日記 19/05/03】

Programming Tips

別年同日の日記

08年 忙中閑有

12年 区民祭り

13年 Burn ALL GIFs day

18年 モーターアシスト


申し訳ありませんが、現在意見投稿をできない状態にしています

Edge でもドット絵拡大!  2015-11-12 20:46:18  コンピュータ

▲目次へ ⇒この記事のURL

2年前に、ドット絵拡大についてのページを書きました。


GIF とか PNG とかでドット絵書いて、見やすいように拡大する設定で WEB ブラウザで表示しようとすると、「スムーズに」拡大されてしまい、ドット絵らしくなくなる、という問題があるのね。


それをどうやって回避すればいいのか。ドット絵らしく表示するための方法論でした。



最初は CSS でやっていたのだけど、主要ブラウザで Chrome だけが対応していなかったので、Chrome は Javascript で、という形でした。


念のため書いておくと、Chrome だけ対応していないというのは、対応が悪かったのではない。

CSS でやる方法が、草案段階で没になったので、いち早く対応して「機能を削除した」のでした。


むしろ、対応が素早いのが Chrome だけだった、という状況。




時々ツイッターで自分のページの URL とか検索してるのだけど、この「ドット絵拡大表示」のページを書いてくれている人がいた。


自分でもずっと見ていなかったページ。久しぶりに見てみるか…と思ったけど、「書いた当時の」最新情報だと断っている個所がいっぱいある。


その当時、CSS3 は策定中で、まだ決定していなかったのね。

Javascript で使っている機能も、やはり策定中の草案にすぎなかった。


2年もたっているし、当時とはブラウザを取り巻く状況も違う。

急に思い立ち、状況を調べ直してみた。



CSS の勧告は、いまだに行わていなかった。

それどころか、勧告前の「勧告候補」も2年前と変わっていない。


しかし、2年の間に「草案」ではドット絵拡大のための CSS が復活した。


でも、これはまだ草案だ。

にもかかわらず、Chrome が今年の1月に対応したらしい。


草案の時は、「独自実装扱い」で対応させる、というのがルールなのだけど、正式な扱いで対応している。

ルール違反で行儀が悪いのだけど、ともかく CSS だけでドット絵の拡大ができるようになった。


また、Opera が以前とは CSS の書き方が違った。

というより、Opera は Chrome のエンジンを使うようになったので、Chrome と同じ、ルール違反の書き方で対応できる。


さらに、Safari も以前と CSS の書き方が変わった。

ややこしいのだけど、「CSS 対応をやめる前の Chrome」と同じ書き方が、現在の Safari で使える。



…こんなに書き方がころころ変わる、というのは将来の保証がないということでもある。不安が残る。

とはいえ、これで Javascript がいらなくなる!




…と思いきや、マイクロソフトの新ブラウザ、Edge は CSS に対応していなかった。


「またマイクロソフトか」とか言い出す人がいそうだから書いておくが、まだ草案段階だからね。


草案よりも技術的妥当性のある「勧告候補」の文書では、CSS 対応しないのが「正しい」のだ。

Edge は、正しく仕様に従っているに過ぎない。


過去にもこんな話あったな



…とはいえ、Edge なんてまだ全然普及していないし、Edge のためだけに Javascript が必要になる、というのも微妙だ。


以前は Chrome のために使っていた Javascript をちょっと改造しただけなので、僕のページには置いたままにしてある。

でも、CSS のみで対応する、って人がたくさんいてもいいとは思う。




いろいろ調べたついで、ページ内容を細かく書き直した。

大筋では変わらないのだけど、最新情報になっている。


歴史的経緯については残したうえで、最新状況を追記してある



追記前の方法では、Edge には対応していなかった。

古い方法だけど Chrome はちゃんと動いていたし、事実上 Chrome になった Opera も、ちゃんと動いていた。


というわけで、Edge でもドット絵拡大に対応できた!



Chrome が CSS 対応になった、というほうが話としては重要な気もするけど。



▲目次へ ⇒この記事のURL

別年同日の日記

01年 11/11

04年 土地整備完了

12年 食育フェスタ

13年 ミヒャエル・エンデの誕生日(1929)


申し訳ありませんが、現在意見投稿をできない状態にしています

DIGA DMR-BRW500  2015-11-13 18:08:55  コンピュータ 住まい

▲目次へ ⇒この記事のURL

ハードディスクレコーダーを購入した。パナソニック DIGA DMR-BRW500。

すでに今年の新作が出ていて、1年前の製品だ。だから安かった。


チューナーの数とハードディスク容量の組み合わせでいえば、「一番の普及帯の、安いほう」。

2チューナーで、500GB HDD。


実は、5年ほど使っていたレコーダーと同じ基本性能だ。




ハードディスクレコーダーを買ったのは、今使っている機械に不満があるわけではない。

だから、同じ性能の機種を選んだ。


でも、今のレコーダーは、CATV 会社からの貸与品なのだ。

そして、CATV には不満がある。


CATV をやめようと思って、その第一歩としてレコーダーを買ったわけだな。



CATV には、もう10年ほど契約している。

今の家に入居した時、視聴難地域なので CATV に入らないとテレビが見られない、とハウスメーカーの人に言われたのだ。


これ、ハウスメーカーの人がいろいろ調べてアドバイスしてくれたことには感謝しているのだけど、情報が少し間違っていた。

町内会で共同アンテナがあって、町内会費に上乗せして管理利用料を払えば使えたらしい。


でも、せっかく CATV 入ったのだし、それなりに面白い番組もあったので使っていた。

特に、子供たちが小さいときには、アニメ番組が豊富にあることが非常に役立った。


その意味で、CATV に加入したことは間違ってはいなかった。



当初は、外部ハードディスクに録画可能なセットトップボックス、だった。

その後、DVD も使えるセットトップボックスの貸与が始まったので、5年ほど前に乗り換え。


貸与料金が少し高くなるのだけど、2チューナーになって便利だったし、問題はなかった。




でも、この5年間、CATV 業界には再編のあらしが吹き荒れている。

今のセットトップボックスの契約を結んだ会社は、その後別の会社と合併し、さらに別会社と合併した。


つまり、サービス会社の名前が2回変わったわけだが、古いプランはそのまま残された。

もちろん、新規契約は受け付けていないのだけど。


元の会社…最初の5年間は、生き残りのためにどんどんプラン内容が拡充されていった。

受信できるチャンネル数が増えたりしたのね。


でも、2番目の会社になった時に、値上げはあっても拡充はなかった。

3番目の会社は、お値段据え置きのままだけど、サービス内容も据え置きのまま。


…いや、チャンネル数は変わらないけど、周辺サービスは使えなくなったな。

元々ビデオオンデマンドサービスとか使ってなかったけど、廃止になった。

「選択肢が無くなる」ということは良いことではない。


そして、今まではそれほど変わらない額で「ちょっといいプラン」にも移行できたけど、今から移行できるプランはすべて、大幅値上げとなる。


まぁ、今のプランはそのまま使えるから、そのまま使っていればそれで構わないのだけど。


#ちなみに、安いプランなので全部 SD 画質です。

 以前は +500円くらいで HD に変えられたのだけど、今から帰ると +2000円ほどかかる。




そうこうするうちに、子供たちが CATV 番組よりも、「友達も見ている地上波番組」のほうに興味を持つようになった。

それで、ふと気づくとここ数か月、CATV チャンネルの番組を見ていない。


それじゃ、もう CATV の意味はないから解約するか、と思うようになった。


ちなみに、DVD 付きセットトップボックスの貸与も含め、月額は5千円弱だ。

ハードディスクレコーダーを買い直す、多少工事が必要となる、と考えても、2年もたてば元が取れる。


それで、DIGA を購入したわけだ。




DIGA 購入と同時に、CATV に問い合わせをした。


実は、数年前に(今の会社とは前の会社の時に)地デジ移行に伴って、町内会の共同アンテナ線に CATV 会社が接続した。


セットトップボックスがないと CATV のチャンネルは見られないが、地デジは見られるようだ。

そして、それまで町内会で徴収していた管理費は、CATV 会社に払うようになった。


これ、今から入るといくらいになりますか? という問い合わせだった。


前の会社がやった契約だから事実確認に時間がかかったらしく、返事が来るのに時間がかかった。

結果「現在もサービスはしているが、新規受け付けはしていない」とのことだった。




実は、今は地デジだけでなく、BSもそれなりに見ている。

CTAV の地デジサービスが使えたとしても、BSは見られなくなるな…と思っていた。


で、もう一つ候補として考えていたのが、NTTのフレッツテレビ。

光回線でテレビ放送波を送り、家の屋根裏でデコードしてテレビアンテナ線に繋げるサービス。


これが、月額 660円(税抜き)。

CATV が地デジのみ配信を受け付けたとしても、500円以上だったらこちらに乗り換えようと思っていた。


今現在、フレッツ光は使っているからね。


CATV の返事が来て 30分後には、NTT のサイトで申し込んでいた。

ついでに電話もフレッツ光電話にしてしまえ…と思ったけど、こちらはテレビ工事の後にすることにした。


なぜなら、フレッツ光にするには、電話番号乗り換えのために電話を一時休止しないといけなかったから。

フレッツテレビ申し込みで、連絡先に電話番号書いてしまったのだよね。



しばらくして、NTT より電話あり。

我が家の光回線、ずいぶん古いタイプだけど自分でも速度把握してなかった。


ごく初期の 100M タイプだったので、ついでに 1G に速度アップ。(+200円/月額)

光電話も一緒に申し込める、と言われたので申し込み。電話は直前まで使えるそうだ。


工事日は…混んでいるそうで、今月末になった。

まぁ、CATV 見られているし、いろいろ都合があってすぐには解約できないので、慌てません。



光テレビを導入しても、信号線は混合するので CATV もそのまま見続けられる、とのこと。

だから、CATV の解約は光テレビ導入後でよいらしい。




さて、CATV をすぐには解約できない理由を、解消しないといけない。


貸与されているセットトップボックス内に、大量に番組が溜まっているのだ。


「おいておきたい」けど「DVD に焼くの面倒くさい」から貯めているものも多数。

そもそも、見たくて録画したけど、見る暇がないものも多数。


どちらにせよ、いったん DVD に追い出す必要がある。


今後録画するのは、購入した DIGA 側に行うようにセットした。

(BSの放送はまだ CATV 側でしか見られないので、地上波のみだけど)


これで、CATV のセットトップボックスが空っぽになれば、いよいよ解約できる。

番組データを人質に取られているような状態だな。



ちなみに、CATV のセットトップボックスは、DIGA の CATV 対応版だ。

DIGA 同士なら「番組の移行」もできるはずだけど、これにはインターネット接続が必要。


CATV のセットトップボックスは、「CATV インターネット」に対応していて、テレビアンテナケーブルをそのまま使う。

というわけで、お互いを同じネットワークに繋げて番組移行、はできない。




購入した DIGA の性能とか書いてないけど、昨日セットアップしたばかりだからまだ全然使ってないのよ。


CATV 解約まではこの話題続ける予定なので、そのうちまた書きます。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

住まい

関連ページ

NTT工事延期【日記 15/11/27】

別年同日の日記

01年 11/12

02年 パパイヤ

06年 風邪惹いた

08年 CMS

09年 読んだ本

14年 キム・ポレーゼの誕生日(1961)

14年 全ての国民が…

17年 揚げ網

17年 スプラ2のフェス


申し訳ありませんが、現在意見投稿をできない状態にしています

追悼:ジーン・アムダール  2015-11-15 18:32:22  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

アムダール氏が11月10日に亡くなられていたらしい。


IBM System/360 の設計主任を務めた方。


IBM の機械は、科学計算用、事務処理用、などとラインナップが分かれていた。

これは当時のコンピューターとしてはごく自然なこと。


科学計算用なら速度が重視されるし、事務処理用なら正確さが重視された。


今でもコンピューターの計算は正確だ、と思っている人がいるけど、正確なんかじゃない。

科学計算なら、宇宙を表現するような大きな数値も扱えないといけない。その一方で、科学の世界には「有効桁数」という概念があり、ある程度の桁数が保証できれば、計算が正確である必要はない。


#むしろ、話は「正確とは何か」という哲学的領域になる。

 機械的にただ計算をすることを正確だとは、決して言わない。


正確さは不要で、速度だけが重視されるので、コンピューターが得意な2進数で計算を行う。



その一方で、事務処理用では国家予算を扱えるほどの大きな値も、1セント単位の細かな値も、どちらも正確に扱える必要がある。


話が複雑化するので詳細は省くが、コンピューターは「1セント」を正確に表現できない。

小数点以下を表現する「2進数」は、小数点以下を表現する「10進数」に正確に変換できないためだ。


#1セントは、0.01ドル。


そのため、事務処理機では、コンピューターが苦手な10進数で計算を行うように作ってある。

コンピューターは2進数で計算している、と現代では言われるが、そうではない時代もあったのだ。


とはいえ、コンピューターの苦手な方法で計算をしているので、当然速度は遅い。

でも、事務処理用では、小数点以下の10進数も正確に計算できることのほうが大切だった。




System/360 (1964) は、こうした「専用機」ではなく、汎用の計算機を目指して設計された。

浮動小数点演算も、BCD 演算も両方とも使えるように設計されていた。


それまでのコンピューターは、1バイトが 6bit のものも多かった。英語の文章を記述するには、これで十分だからだ。


しかし、System/360 は1バイトを 8bit とした。

System/360 自体は 32bit を1ワードとして動作し、最大4ワード(128bit)までを一度に計算できた。



System/360 は大ヒットし、それ以降のコンピューターを規定してしまった。

今の PC も、浮動小数点と BCD の演算を両方とも行えるように設計され、8bit を1バイトとしているものが多い。


その意味では、アムダール氏の考案したコンピューターの子孫だ。




どんな世界でも、新しい世界を切り拓くのには予想外の困難が待ち受ける。


この時代、まだコンピューターはハードウェアを直接プログラムして計算を行うものだった。

でも、「なんにでも使える」 System/360 は、非常に幅広い要求にこたえるため、システムを扱いやすくするためのソフトウェアを必要とした。


後の世にいう「OS」、オペレーティング・システムの誕生だ。


アムダール氏とは直接関係ないが、System/360 用の OS である、OS/360 の開発は困難を極めた。

これまでは、コンピューターとはハードウェアを作るものであり、ソフトはおまけのようなもの、簡単に作れるものだと考えられていた。


OS/360 の開発は従来考えられていたものよりも、はるかに困難だった。

ここで初めて、コンピューターにとって一番重要なものは、ハードウェアではなくソフトウェアだ、という認識が生まれる。


OS/360 の開発困難は、後に原因などが整理され、書籍「人月の神話」として刊行される。


これ、今でも役立つ話が多い。

プログラマ向けの話ではなくて、プロジェクトマネージャー向けの話だし、もっと言えばコンピューター業界に限らず、あらゆるプロジェクトにおいて参考になる。


一言でいえば、「知的生産活動は、工場で製品を作るような人月計算で見積もれるものではない」ということを解説している。


なんだ、そんなことわかっているよ、経験しているよ、という人も多いかもしれないけど、当時も「なんとなく肌で感じていた」という人が多くても、理論だってなぜそうなるのかを解説している本はなかった。

いや、今でも少ない。


そして、この本では「じゃぁ、どうやって見積もればよいか」ということもちゃんと解説している。

プロジェクトが見積もり通りに進まずにデスマーチ進行になった、という経験を持っている人は、この本を読むべきだ。


ちなみに、デスマーチプロジェクトから「自分の身を守る」方法を知りたい人は、「デスマーチ」も併せて読むこと。

「デスマーチ」は人月の神話を読んでいることを前提に書かれているのだけど、もう一歩話を踏み込んで、失敗しそうなプロジェクトを立て直す方法と、「巻き込まれて自分がひどい目に合わないように」するための方法を書いている。




さて、話を戻す。

アムダール氏は、System/360 を設計した後にさらに良いコンピューターの提言を IBM に対して行ったのだけど、この提案は却下された。


当時の IBM は、コンピューターを作りたかったわけではない。

IBM はビジネスに役立つサービスを提供する会社で、コンピューターはそのための道具に過ぎなかった。


この考え方は、非常に大切だ。今だって重要だと思うけど、多くのコンピューター会社はコンピューターそのものを目的としている。

それで何をするか、というのはユーザーの責任で、コンピューター会社は知ったこっちゃない。


ともかく、IBM では、コンピューターは道具に過ぎなかった。

コンピューターが安定していることを重視したし、そのためには新製品を矢継ぎ早に出す必要はなかった。



アムダールは IBM をやめ、アムダール社を作る(1970)。

そして、System/360 互換でもっと良いコンピューターを作り始める。互換機ビジネスだ。


そのころ、日本では国策として IBM 互換機を作ろうとしていた。

正確にいえば、コンピューターを作る技術を持った会社6社を、政府主導で3グループに分け、どのようなコンピューターを作るか政府が決めた。


1グループは、独自アーキテクチャのもの。

1グループは、IBM 互換機。

1グループは、IBM に対抗しうる会社の互換機。



IBM 互換機グループは、富士通と日立が割り振られた。

互換機とはいえ、IBM の回路を真似してしまうと IBM との訴訟になる可能性がある。


同じソフトが動くようにしつつ、独自設計をする必要があった。




富士通は、アムダール社と提携する。

アムダール氏は System/360 を設計し、回路が何を目的としているか熟知していた。


そこで、アムダール社では、IBM の回路とは違う形で、全く同じ目的を実現するように設計を行っていた。

そのアムダール社と提携するのであれば、IBM との訴訟問題はおこらない。


後にアムダール社は富士通の子会社になるが、そのずっと前に、アムダールは自ら興した会社を去っている。




アムダール氏は、「アムダールの法則」の提唱者としても知られている(1967年提唱)。


プロセッサの数を2倍に増やしても、性能は2倍にはならない、とする法則。

今なら誰もが当たり前に知っているが、昔は計算装置が増えれば、増えた分だけ性能は増加する、と考えられていた。


これを、論理的に「そうじゃない」と示したのがアムダールの功績。

一時期は過大に評価され、マルチプロセッサ化は全く無駄だ、という主張も聞かれていた。


後にジャック・デニスが超並列を研究し、マルチプロセッサ環境で速度を上げるための方法論を示している(1990年代)。


これを受け、最近ではマルチプロセッサが流行している。

もちろんアムダールの法則は今でも有効だが、性能を上げるための方法論がかなり進み、十分マルチプロセッサを有効活用できるようにはなったようだ。




なんかとりとめのない話になった。

アムダール氏は、名前は知っていても、それほど詳しいわけではないし、どうしても話が散漫としてしまう。


コンピューター業界にとって重要人物の一人ではあった、と認識している。


氏のご冥福をお祈りいたします。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

デイビッド・パターソン 誕生日(1947)【日記 15/11/16】

別年同日の日記

01年 11/14

12年 再度JAMSTECグッズ

13年 Intel 4004 の発売日(1971)

16年 新しい文盲


申し訳ありませんが、現在意見投稿をできない状態にしています

デイビッド・パターソン 誕生日(1947)  2015-11-16 12:29:41  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、デイビッド・パターソンの誕生日(1947)


RISC と RAID の生みの親、とされています。


一般に RISC のほうが功績とされるのですけど、僕はへそ曲がりなので(笑)RAID から説明しましょう。

というのも、RAID のほうが必要としている人多いと思うから。




ハードディスクは安いけど信頼性が低い。

信頼性が低いというのは「いつか壊れる」ということです。まぁ、当たり前。


当たり前なのですが、壊れると致命的で困ります。

ディスクが壊れてデータを失った、という経験、誰にでもあるのではないでしょうか。


これ、SSD の時代でも話は同じだと思ってね。

ハードディスクのように物理動作が無くなった分、壊れにくくはなっている。でも、いつか壊れます。



パターソン博士と、共同研究者は「壊れないハードディスク」を開発しました。


といっても、当たり前だけど機械は必ず壊れます。

開発したのは、壊れたとしてもデータを失わないで済む方法。


これが RAID です。論文発表は 1988年。



複数台のディスクを組み合わせ、「冗長性」を持たせてデータを記録します。

冗長性って、同じことを複数のディスクに書き込む、ということね。


どれか一台が壊れても、ほかのディスクにも同じ内容が書いてあります。

だから、壊れても復活できる。


2台が同時に壊れたりするとダメだけど、そこは確率問題だから。

1台壊れてすぐに「元の状態に復旧」していれば、2台が故障することは減らせる。



この冗長性の計算には、できるだけ容量を無駄遣いせず、でも信頼性を上げるために複雑な数学を使っています。

一番わかりやすいのが、数学を一切使わずに「同じ内容を2台に書き込む」ことですけどね。


2台に書き込んでいると、片方が壊れてももう片方から読みだせます。

その代わり、2台あるのに容量は1台分。容量としては最大の無駄遣い。


この「2台に同じ内容を書く」のが RAID 1 。



本当は、RAID の目的は「データ保全」だけではない。

物理的な動作のあるハードディスクを、高速に使用する、なんてことも考えられている。


目的によって RAID 6 まで考えられています。

速くてデータ保全もできる方法は費用もかかったり、費用を抑えて高速にするとデータ保全性が悪かったり。



データ保全性を考えた際には、RAID 1 を使うのが良い、とデータ復旧会社の人は言っています。

容量の半分無駄になるから、経済性は悪いのだけどね。


RAID って、複雑な数式を使うから、データとしては暗号化されたような状態。

RAID 1 は単純に2台に同じデータを書き込むだけだから、最悪状況からの復旧もやりやすいのだそうです。


「人間の目で見てわかるデータ」も冗長性として重要、ということか。




つづいて、RISC の話。

こちらは、パターソン博士以前にもう基礎的な考え方は始まっていて、博士の仕事は状況を整理し、その有用性を広めた部分になります。



黎明期のコンピューターは、非常に低機能でした。

計算機として作られたため、計算機能はそれなりにある。でも、決して使いやすくはありません。


以前に書いた記事ですが、Whirlwind のアセンブラや、FORTRAN の実行制御命令を見てみるとよくわかります。

条件分岐、はあっても、サブルーチン呼び出しはありません。


サブルーチン呼び出しするためには、呼び出す前に変数に「戻り先」を入れて置き、呼び出された側で最後のジャンプ先を自己書き換えして、呼び出し元に戻す、というような技法が必要だったのです。



名著「ハッカーズ」に、PDP-6 (1963) の制作話が出ています。

PDP-6 は DEC 社が作成したものですが、商業的には失敗でした。


ただ、この機械の設計段階で、MIT のハッカーたちに何度も意見を聞いています。

設計担当者が、MIT 出身の先輩だったのです。


結果として作り上げられたマシンは、当時のコンピューターとしては非常にプログラムしやすいものでした。


レジスタを16本も持ち、スタック構造を作り出すための命令があります。

レジスタ内の値をアドレスとしてアクセスを行う、というような命令もありました。


これらを使うと、サブルーチンを簡単に呼び出すことができましたし、以前なら何ページ分ものプログラムが必要だった「10進数プリントプログラム」を、ほんの数命令で作れるようになりました。



PDP-6 自体は失敗でしたが、こうした「アセンブラでのプログラムの作りやすさ」は、この後の PDP シリーズに受け継がれていきます。

最終的には PDP-11 (1970) で、究極の命令セットと言われるようになるのです。




PDP-11 の命令セットが「究極」とまで言われるのは、直交性が非常に高いためです。

この「直交性」自体が現在では死語ですが、命令とデータの使い方を、自由に選べることを言います。


これ、非常にプログラムが作りやすいんです。…アセンブラでは。


IBM も、System/360 (1964)では、直交性の高いシステムを作り上げています。

(スタック構造が入れられるのは、1970年の System/370 から)



しかし、1970年代の半ばに、System/370 で実際に使われているアプリケーションを詳細に調べたところ、意外なことがわかります。

ほとんどがコンパイラが作り出したプログラムでしたが、直交性の高さはほとんど活かされておらず、ほんの一部の命令の組み合わせしか使っていないのです。


これはある意味、コンパイラの「癖」でした。

人間ならば、生成されるコードの速度よりも、記述しやすさを優先したくなることがよくあります。

そのため、直交性の高さが役立ちます。


しかし、コンパイラはたとえ複雑な記述になったとしても、速度やメモリ効率を優先します。

その結果、使いやすくても遅い命令はあえて使わない、一部の命令の組み合わせを好んで使う、などの偏りが現れたのです。


逆に考えれば、コンパイラが使わない命令を、苦労して回路にくみ上げる必要はありません。

一方、「よく使う」とわかっている命令は、できるだけ高速に実行できるようにしたほうが良いです。



IBM はこうした実験として、IBM 801 (1976) を作り上げています。

狙い通り、回路規模は小さいのに高速に動作するコンピューターとなりました。


ただし、これは実験プロジェクトであり、製品として世に出たわけではありません。


#のちの POWER 命令セットになります。XBOX 360 や Wii U などが使用している PowerPC もこの命令セットを採用したプロセッサの1つ。



IBM 以外でも同じような動きはあり、コンパイラが普通に使われる世の中で、直交性にこだわって設計を複雑にすることにどれだけの意味があるのか…設計者が懐疑的になり始めていました。




各社がまちまちの方法で「直交性よりも良い設計指針」を求めていた中で、これをまとめたのが今日紹介する、デイビッド・パターソン博士でした。


カリフォルニア大学バークレイ校で、バークレイ RISC プロジェクトを開始します(1980)。


このときに「RISC」という言葉を作り出しました。

Reduced Instruction Set Computer の略。「簡略化された命令を持つコンピューター」と訳しましょうか。


これに対し、パターソン博士は従来の CPU 命令を「CISC」と命名しました。

Complex Instruction Set Computer の略。「複雑な命令を持つコンピューター」です。



…この言葉、翻訳では表現できない恣意的な語彙選択をしています。

自分がこれから作ろうとするものを「素晴らしいもの」に見せるための言葉選びがうまい。


Complex って、単純に「複雑」というような意味なのですが、いわゆる「コンプレックス」や「嫌悪」のような負のイメージのある言葉です。

それに対し、Reduced というのは、小さくした、とか簡略化した、という意味合いなのだけど、「方程式を解く」とか「征服する」とか「ダイエットする」というような、物事を良い方向に導くイメージのある言葉。


CISC と RISC は、冒頭の部分以外同じ言葉になっています。

だから、この2者の比較は、「Complex と Reduced のどちらがいい?」と聞いているのと同じ。


そんなもの、誰だって Reduced って答えます。悪いイメージの言葉と良いイメージの言葉を並べているんだから。



かくして、RISC プロセッサの大ブームが起こります。


パターソン博士の定義では、RISC とは1クロック実行できる程度の簡略な命令だけを持ち、使い方の区別がない多数のレジスタを持ち、すべての命令が同じ長さで…というようなものでした。


これ、いわゆる「RISCプロセッサ」がみな取り入れた特徴。

こうすることで、CPU の設計が非常にすっきりとするので、回路も単純で実行速度を上げられるのです。


でも、RISC ブームによって、Intel の…CICS の代表みたいな CPU も、「RISCだ」と言い出した。

Pentium の時に、RISC の特徴を大幅に取り入れたのね。一番重要な部分は今まで通りだったのだけど、これによって「RISC」を名乗りだした。


今ではなし崩し的に…RISC か CISC か、って論争自体がどうでもよくなった感はあります。




ちなみに、パターソン博士が作った「バークレイRISC」は、その基本設計を元に SUN が SPARC プロセッサとして商用化しました(1985)。


SUN はその後無くなってしまいましたが、富士通と提携していました。

SPARC の後継である SPARC64 は、今でも富士通がスーパーコンピューターなどに使っています



その SUN は BSD を商用化することを目的に作られたベンチャー企業でした。

BSD とは、「Berkeley Software Distribution」の略。バークレイ校が改造して広めた UNIX の一種でした。


そして、CPU までバークレイ RISC の流れを汲むものにしたわけです。


SUN のワークステーションの信頼性はすごくて、何年も電源入れっぱなしで動いてる…とか、UNIX の信頼性を高める伝説を多数作っています。


#Linux の話として一時期語られることが多かったのだけど、SUN 由来。

 この話がよく使われたころの Linux はそんなに信頼性高くなかった。今ではずっと良くなったけど。



SPARC プロセッサ、「リングレジスタ」という非常に面白い特徴を持っていて、速度の遅いメモリへのアクセスを極力減らしています。


特に、C言語のような「関数呼び出しでスタックを多用する」言語では効果絶大。

というか、C言語の呼び出しを前提に考えられたような機構。


解説すると長いのでここには書きません。興味を持った人は調べてみてね。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

ビル・ジョイの誕生日(1954)【日記 13/11/08】

別年同日の日記

01年 11/16

01年 11/15

09年 食育フェスタ

11年 tcc

12年 こんにゃく

13年 宮本茂 誕生日(1952)

14年 雑誌の発行日

17年 ST-V 開発環境


申し訳ありませんが、現在意見投稿をできない状態にしています

【雷更新世】 ええと、それでいうとXBox360も旧世代機ですね。現世代機がXBoxOne(x86)で。 (2015-11-21 18:49:05)

あきよし】 おっと、勘違いしてました。Cell使ってたのは一世代前だった。…旧世代機種書いとくのも変な感じなので削除しました。 (2015-11-19 09:24:24)

【雷更新世】 PlayStation4はx86ですね。3の間違いでしょうか。 (2015-11-18 00:17:10)


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -